<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>49838</bug_id>
          
          <creation_ts>2010-11-19 15:17:24 -0800</creation_ts>
          <short_desc>Image Subresource Loads Should Not Prevent Page Cache Entry</short_desc>
          <delta_ts>2011-02-01 17:41:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311717</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-19 15:17:24 -0800</bug_when>
    <thetext>I have been seeing some pages not enter the Page Cache because of a &quot;Main Document Error&quot;.
Investigating this, it turns out that some of these &quot;Main Document Errors&quot; are because there
was a subresource load triggered at the same time the navigation was attempted.

Examples of this would be websites using different images for default, :hover, and :active
states for navigational menu. Navigating using this menu could spawn a subresource load,
only to be immediately stopped and prevent the page from entering the cache. I&apos;ve
seen this happen mostly with image loads, and those types of resources do not seem
particularly important. The request is going to be cancelled anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311724</commentid>
    <comment_count>1</comment_count>
      <attachid>74432</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-19 15:25:50 -0800</bug_when>
    <thetext>Created attachment 74432
[PATCH] Proposed Change

Some notes to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311728</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-19 15:31:19 -0800</bug_when>
    <thetext>• New PageCache logging output for the manual test would look like:

&gt; --------
&gt;  Determining if page can be cached:
&gt;     +---
&gt;      Determining if frame can be cached navigating from (.../main-document-error-subresource-image-loading.html) to (.../resources/main-document-error-subresource-image-loading-next.html):
&gt;        -Main document has an error
&gt;         -BUT it was a cancellation and all loaders during the cancel were page cache acceptable (loading images).
&gt;      Frame CAN be cached
&gt;     +---
&gt;  Page CAN be cached
&gt; --------
&gt; Finished creating CachedFrame for main frame url &apos;.../main-document-error-subresource-image-loading.html&apos; and DocumentLoader 0x107a98c00

• One concern with this patch. When returning back to page now in the page cache, the &lt;img&gt;
will still look like the 1st image, but the DOM element&apos;s src attribute will have the value of the
2nd image. The DOM is out of sync. It might be more appropriate to refetch the image after
returning to the page, but this behavior seems the same as an image taking a long time to timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311743</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-19 16:15:12 -0800</bug_when>
    <thetext>NOTE: I didn&apos;t make an automated test because of this comment in mac/DumpRenderTree.mm:

    // The back/forward cache is causing problems due to layouts during transition from one page to another.
    // So, turn it off for now, but we might want to turn it back on some day.
    [preferences setUsesPageCache:NO];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314568</commentid>
    <comment_count>4</comment_count>
      <attachid>74432</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-29 12:43:36 -0800</bug_when>
    <thetext>Comment on attachment 74432
[PATCH] Proposed Change

View in context: https://bugs.webkit.org/attachment.cgi?id=74432&amp;action=review

&gt; WebCore/history/PageCache.cpp:259
&gt; +        &amp;&amp; (documentLoader-&gt;mainDocumentError().isNull() || (documentLoader-&gt;mainDocumentError().isCancellation() &amp;&amp; documentLoader-&gt;subresourceLoadersArePageCacheAcceptable()))

What tells us that cancellation is specifically due to the subresource issue? It seems like any cancellation would return true here, not just the one you mention in the comment. Are cancellations solely due to leaving the page before subresources finish loading, or are there other causes of cancellation?

&gt; WebCore/loader/DocumentLoader.cpp:79
&gt; +    const ResourceLoaderSet copy = loaders;

We normally don’t use const for local variables like this one.

Rather than copying the set it would be more efficient to instead use a local vector and the copyToVector function.

&gt; WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:388
&gt; +        // Save the target type, because that information may be checked later on.

Is there anything else besides the target type that needs to be preserved? Maybe we should make a function that puts a new NSURLRequest in and preserves everything else.

&gt; WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:389
&gt; +        ResourceRequestBase::TargetType type = request.targetType();

This can be ResourceRequest::TargetType. The use of ResourceRequestBase is an internal implementation detail that we normally should ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314573</commentid>
    <comment_count>5</comment_count>
      <attachid>74432</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-29 12:51:14 -0800</bug_when>
    <thetext>Comment on attachment 74432
[PATCH] Proposed Change

ResourceRequest::targetType() is evil - it&apos;s only used for layering violations in Chromium. It&apos;s also not preserved after Objective C API delegate calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314575</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-29 12:53:22 -0800</bug_when>
    <thetext>I&apos;ve previously filed bug 48483 about targetType evilness, and there was some discussion in bug 48476.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314683</commentid>
    <comment_count>7</comment_count>
      <attachid>74432</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-11-29 15:16:35 -0800</bug_when>
    <thetext>Comment on attachment 74432
[PATCH] Proposed Change

View in context: https://bugs.webkit.org/attachment.cgi?id=74432&amp;action=review

&gt;&gt; WebCore/history/PageCache.cpp:259
&gt;&gt; +        &amp;&amp; (documentLoader-&gt;mainDocumentError().isNull() || (documentLoader-&gt;mainDocumentError().isCancellation() &amp;&amp; documentLoader-&gt;subresourceLoadersArePageCacheAcceptable()))
&gt; 
&gt; What tells us that cancellation is specifically due to the subresource issue? It seems like any cancellation would return true here, not just the one you mention in the comment. Are cancellations solely due to leaving the page before subresources finish loading, or are there other causes of cancellation?

subresourceLoadersArePageCacheAcceptable only accesses a boolean set when there was a cancellation through stopLoading, and is later checked if the page can enter the page cache. I briefly looked around for other causes of cancellations, but I didn&apos;t make any conclusions. I guess another possibility would be the user explicitly stopping a load. In that case, should back/forward cause the user to go back to the partial load or not? However that only seems possible in a situation where the main resource hasn&apos;t completed loading yet, and this case I tried to only deal with subresource loads after the page has completed loading. I&apos;ll investigate this some more.

&gt;&gt; WebCore/loader/DocumentLoader.cpp:79
&gt;&gt; +    const ResourceLoaderSet copy = loaders;
&gt; 
&gt; We normally don’t use const for local variables like this one.
&gt; 
&gt; Rather than copying the set it would be more efficient to instead use a local vector and the copyToVector function.

Sounds good. This copied the form of the two static functions above it (cancelAll and setAllDefersLoading). I&apos;ll change those as well.

&gt;&gt; WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:389
&gt;&gt; +        ResourceRequestBase::TargetType type = request.targetType();
&gt; 
&gt; This can be ResourceRequest::TargetType. The use of ResourceRequestBase is an internal implementation detail that we normally should ignore.

I&apos;ll look for an alternative to targetType. As Alexey mentioned offline, the choice of &quot;image loads only&quot; seems arbitrary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316474</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-02 15:50:48 -0800</bug_when>
    <thetext>This patch raises a question about what back behavior is intended to be:

  (1) Takes you back to a stale page, closely representing what you last saw
        that page to be. Potentially broken.

  (2) Take you back to a working page, no matter if the cost is a reload.

It looks like so far, WebKit strongly favors (2).

In this patch, I sided with (1) in cases where the page was unlikely to break
in serious ways; hence the choice to allow this to happen only for image
subresource loads. Given that this is a change in behavior, is this a change
that we want to put into WebKit? Maybe it be hidden behind an ENABLE flag,
such as BACK_IGNORES_LOADERS or HISTORY_IS_LAST_SEEN. The idea here
is to improve back performance in cases where reloading the page would be
costly (slow network, small cache).

I chatted with Alexey about some ideas for this. He had a couple ideas points:

  • &quot;I think that we shouldn&apos;t allow more brokenness than IE and Firefox&quot;
  • https://bugs.webkit.org/show_bug.cgi?id=10199
  • it might be appropriate to add target type to ResourceLoader

Maybe there is also a more generic issue with subresources. So, instead of
just image loads, it may make sense to ignore any subresource loads triggered
by the user action. For example this test case was a user click triggers an
image load and navigation that immediately cancels the load. Probably any
load type that happened as a result of that user action can be ignored, since
it won&apos;t have a chance of succeeding.

I feel like I need to do more testing on this, to come up with some concrete
examples and numbers to see if this is really a worthwhile improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316622</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-02 19:35:56 -0800</bug_when>
    <thetext>&gt; I feel like I need to do more testing on this, to come up with some concrete
&gt; examples and numbers to see if this is really a worthwhile improvement.

Yah, I see this all over the place with Desktop Safari. Many links on apple.com, 
tons of links on nytimes.com, any header link on engadget.com. I&apos;ll improve my
logging to see exactly which images are loading to get a better picture, but
in all cases where there was a main document error, it was because there was
a cancellation and image loaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316883</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-03 10:36:18 -0800</bug_when>
    <thetext>Most of the time this appears to be metrics gathering. An image load is triggered for statistics purposes. It is my understanding, that they would get cancelled. DocumentLoader cancels all subresource loaders, which triggers ResourceLoader::cancel, ::didCancel, and then ResourceHandle::cancel to stop the network connection.

In any case, I do think that this is a worthwhile change to make. Or maybe we should allow these image loads to complete? If WebKit is truly preventing these metrics gathering requests.

I&apos;ll attach some files for some basic logs doing some very basic browsing, so you can get an idea of what these image loads looks like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316888</commentid>
    <comment_count>11</comment_count>
      <attachid>75508</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-03 10:40:31 -0800</bug_when>
    <thetext>Created attachment 75508
[LOGGING] Patch that goes on top of previous patch

Not for review. This is how I enabled my logging. It would check if a page would not have been
cached due to a MainResourceError, and if that was a cancellation with only image loads.
This also naively prints out the loaders (up until the first non-image loader) when the page
was cancelled. I typically grep the syslog / stderr from run-safari for &quot;&gt;&gt;&gt;&quot; to get my output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316891</commentid>
    <comment_count>12</comment_count>
      <attachid>75511</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-03 10:42:40 -0800</bug_when>
    <thetext>Created attachment 75511
[LOGS] After no more than 5 minutes of browsing popular sites

Some simple browsing of popular sites. I see a lot of &quot;metrics&quot; loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316943</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-03 11:56:12 -0800</bug_when>
    <thetext>&gt; Most of the time this appears to be metrics gathering.

Metrics gathering is supposed to be intercepted by PingLoader in ToT. It doesn&apos;t catch all cases, but given your empirical data, it seems that improving PingLoader could be a better approach - that would both make statistics work, and improve b/f cache behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316947</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-03 12:00:19 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Most of the time this appears to be metrics gathering.
&gt; 
&gt; Metrics gathering is supposed to be intercepted by PingLoader in ToT. It doesn&apos;t
&gt; catch all cases, but given your empirical data, it seems that improving PingLoader
&gt; could be a better approach - that would both make statistics work, and improve
&gt; b/f cache behavior.

That sounds like an excellent idea. I&apos;ll look into that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317194</commentid>
    <comment_count>15</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-03 17:50:09 -0800</bug_when>
    <thetext>So the challenge here is identifying which subresource loads here we should &quot;convert&quot;
to PingLoader loads. I can&apos;t come up with a way to logically identify them. My first
thought was to mark the last &quot;user action&quot; but where does this action start and end.
Take a mouse click for example, there can be loads triggered anywhere in all kinds
of events (onmousedown, onclick, onmouseup) of which WebCore / WebKit only gets
sparse notifications at the WebHTMLView layer. Only on mouseup do we actually
detect a WebCore::handleLinkClick and navigate.

Considering there are already existing solutions for this (&lt;a ping&gt; and performing
the request in pagehide/unload events) I wonder how important it is to detect and
allow these image loads to complete.

Anyone have thoughts on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317234</commentid>
    <comment_count>16</comment_count>
      <attachid>75599</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-03 21:58:24 -0800</bug_when>
    <thetext>Created attachment 75599
[PATCH] Addressed Some Comments

 • Addressed Darin&apos;s style review comments.
 • To not use TargetType I look up the CacheResource and check if it is a CacheImage (isImage)
    - this means I have to move my code a little earlier in stopLoading because the resource could be evicted

&gt; What tells us that cancellation is specifically due to the subresource issue? It seems like any
&gt; cancellation would return true here, not just the one you mention in the comment. Are
&gt; cancellations solely due to leaving the page before subresources finish loading, or are there
&gt; other causes of cancellation?

I looked at a lot of code that could cause cancellations. Lots of the code doesn&apos;t deal with history
navigation at all, much of it deals with provisional document loaders. It is a bit unfortunate in
those cases that this makes a loop through the resource loaders, but it breaks early. I haven&apos;t
found a better place for this code either, which is why it remains in DocumentLoader::stopLoading.

As far as I can tell, its okay for this code to run on any cancellation, even the main document via
the user canceling the load. This could just be my opinion, but if I stopped a page from loading
and it had a missing image, I still wouldn&apos;t mind if I clicked a link and came back to the page
and it had the same missing image. But maybe this kind of behavior should be opt-in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319081</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-08 15:27:55 -0800</bug_when>
    <thetext>I like the idea. It makes sense to allow pages with only images missing in the back-forward cache as makes bf cache usable in many more cases without much danger of breaking anything.

This patch should also check the pending resources in the documents CachedResourceLoader. The subresource list in the DocumentLoader is not reliable (In case multiple documents load the same resource in parallel, only one of the subresource lists has the resource. On the other hand some resource tpes are loaded using SubresourceLoaders directly and don&apos;t show up in the CachedResourceLoader. Yeah, it is a mess.) 

Shouldn&apos;t you somehow trigger loads for missing images after you restore the page from the cache?

This is significant browser behavior change so maybe it should be a setting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319115</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-08 16:32:55 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; This patch should also check the pending resources in the documents
&gt; CachedResourceLoader. The subresource list in the DocumentLoader is not
&gt; reliable (In case multiple documents load the same resource in parallel, only
&gt; one of the subresource lists has the resource. On the other hand some resource
&gt; types are loaded using SubresourceLoaders directly and don&apos;t show up in the
&gt; CachedResourceLoader. Yeah, it is a mess.) 

That is very good to know! However, in those cases (where the loaders do not
show up in m_subresourceLoaders) the page is not prevented from entering
the page cache. It was the check in DocumentLoader, which sets the main
document error to a cancellation as a result of m_subresourceLoaders not
being empty, that I saw prevent the page from being cached. Maybe that is
indicative of a separate problem that some subresource loads are ignored?


&gt; Shouldn&apos;t you somehow trigger loads for missing images after you restore
&gt; the page from the cache?

If the object is to return the user back to the state they were in, no. If the
object is to return the user back to a working page no matter the change,
then yes. This still feels like a policy decision. For back/forward loads we
already have what used to be called &quot;AllowStale&quot; policy. That didn&apos;t make
sense for the PageCache, because pages in incomplete states would never
have been cached.


&gt; This is significant browser behavior change so maybe it should be a setting?

Good point. I had mentioned a compile flag in comment #8, but a setting makes
a lot of sense.

Thanks for the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319320</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 01:09:41 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; That is very good to know! However, in those cases (where the loaders do not
&gt; show up in m_subresourceLoaders) the page is not prevented from entering
&gt; the page cache. It was the check in DocumentLoader, which sets the main

But perhaps there are resources pending that _should_ stop this page from going to the cache that are not showing up in m_subresourceLoaders?

&gt; &gt; Shouldn&apos;t you somehow trigger loads for missing images after you restore
&gt; &gt; the page from the cache?
&gt; 
&gt; If the object is to return the user back to the state they were in, no. If the
&gt; object is to return the user back to a working page no matter the change,
&gt; then yes. This still feels like a policy decision. For back/forward loads we
&gt; already have what used to be called &quot;AllowStale&quot; policy. That didn&apos;t make
&gt; sense for the PageCache, because pages in incomplete states would never
&gt; have been cached.

Without restarting the image loads you will get inconsistent behavior. In some cases hitting back will load the complete document (in case the page was not in the cache), in others the user will need to manually get the images by reloading. User doesn&apos;t know about the b/f cache so she won&apos;t know why this is.

Restarting the image loads shouldn&apos;t slow down the cache restore at all, but it would avoid the need to manually reload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343715</commentid>
    <comment_count>20</comment_count>
      <attachid>75599</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-01 17:41:44 -0800</bug_when>
    <thetext>Comment on attachment 75599
[PATCH] Addressed Some Comments

Clearing r? flag, as there was some discussion about this not being the best solution for open source at this time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74432</attachid>
            <date>2010-11-19 15:25:50 -0800</date>
            <delta_ts>2010-12-03 21:58:24 -0800</delta_ts>
            <desc>[PATCH] Proposed Change</desc>
            <filename>take.patch</filename>
            <type>text/plain</type>
            <size>28759</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzZjMzJjMS4uMTI0ZjdhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0xMS0xOSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltYWdlIFN1YnJlc291cmNlIExvYWRzIFNob3VsZCBOb3QgUHJl
dmVudCBQYWdlIENhY2hlIEVudHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTgzOAorCisgICAgICAgIFByZXZpb3VzbHkgd2hlbiBjb21taXR0aW5n
IHRvIGEgbmF2aWdhdGlvbiBmcm9tIHBhZ2UgQSB0byBwYWdlIEIgaWYgcGFnZSBBCisgICAgICAg
IGhhZCBhbnkgc3VicmVzb3VyY2UgbG9hZGVycyBpdHMgbWFpbiBkb2N1bWVudCB3b3VsZCBiZSBt
YXJrZWQgYXMgY2FuY2VsbGVkCisgICAgICAgIGFuZCBpdCB3b3VsZCBub3QgYmUgYWRkZWQgdG8g
dGhlIFBhZ2VDYWNoZS4gVGhpcyBjaGFuZ2UgYWxsb3dzIHBhZ2UgQSB0bworICAgICAgICBlbnRl
ciB0aGUgUGFnZUNhY2hlIGlmIHRoZSBzdWJyZXNvdXJjZSBsb2FkZXJzIGF0IHRoZSB0aW1lIG9m
IG5hdmlnYXRpb24KKyAgICAgICAgd2VyZSBqdXN0IGxvYWRpbmcgaW1hZ2VzLgorCisgICAgICAg
IEEgY29tbW9uIHNjZW5hcmlvIHRoaXMgaW1wcm92ZXMgaXMgY2xpY2tpbmcgb24gYW4gaW1hZ2Ug
bGluaywgc3VjaCBhcyBhCisgICAgICAgICJ0YWIiIGluIGEgbmF2aWdhdGlvbiBtZW51LCB0cmln
Z2VycyBhIG5ldyBpbWFnZSB0byBsb2FkIHJpZ2h0IGJlZm9yZSB0aGUKKyAgICAgICAgbmF2aWdh
dGlvbi4KKworICAgICAgICBNYW51YWwgVGVzdDogbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvbWFp
bi1kb2N1bWVudC1lcnJvci1zdWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5nLmh0bWwKKworICAgICAg
ICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hl
RnJhbWVEZWNpc2lvbik6IHVwZGF0ZSBsb2dnaW5nIHRvIGV4cGxhaW4gd2h5IGEgIm1haW4gZG9j
dW1lbnQgd2l0aCBlcnJvcnMiIG1heSBzdGlsbCBiZSBjYWNoZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUpOiBhbGxvdyBhICJt
YWluIGRvY3VtZW50IHdpdGggZXJyb3JzIiB0byBiZSBjYWNoZWQgdW5kZXIgdGhlIGNpcmN1bXN0
YW5jZXMgbWVudGlvbmVkIGFib3ZlLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJsZSk6
IHJldHVybnMgdHJ1ZSBvbmx5IGlmIGFsbCBsb2FkZXJzIGFyZSBwYWdlIGNhY2hlIGFjY2VwdGFi
bGUuIEN1cnJlbnRseSBpZiBhbGwgYXJlIGxvYWRpbmcgaW1hZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6IHdoZW4gdGhlIHBhZ2UgaXMgY29tcGxldGUgYW5k
IHRoZXJlIHdlcmUgc3VicmVzb3VyY2UgbG9hZGVycywgYXVkaXQgdGhlIGxvYWRlcnMgZm9yIHBh
Z2UgY2FjaGFiaWxpdHkuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNh
Y2hlQWNjZXB0YWJsZSk6CisgICAgICAgICogbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvbWFpbi1k
b2N1bWVudC1lcnJvci1zdWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5nLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9ibGFjay5wbmc6IEFkZGVk
LgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9tYWluLWRvY3Vt
ZW50LWVycm9yLXN1YnJlc291cmNlLWltYWdlLWxvYWRpbmctbmV4dC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvcGFnZS1jYWNoZS9yZXNvdXJjZXMvcmVkLnBuZzogQWRkZWQu
CisKIDIwMTAtMTEtMTggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwIGIvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXgg
NzM3NWE5Yy4uN2IwZTk5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAKKysrIGIvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTEwNSw3ICsxMDUsMTAg
QEAgc3RhdGljIGJvb2wgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50
IGluZGVudExldmVsKQogICAgICAgICB9CiAgICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAg
ICAgICBQQ0xPRygiICAgLU1haW4gZG9jdW1lbnQgaGFzIGFuIGVycm9yIik7Ci0gICAgICAgICAg
ICBjYW5ub3RDYWNoZSA9IHRydWU7CisgICAgICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCkgJiYg
ZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQ
YWdlQ2FjaGVBY2NlcHRhYmxlKCkpCisgICAgICAgICAgICAgICAgUENMT0coIiAgICAtQlVUIGl0
IHdhcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIGxvYWRlcnMgZHVyaW5nIHRoZSBjYW5jZWwgd2Vy
ZSBwYWdlIGNhY2hlIGFjY2VwdGFibGUgKGxvYWRpbmcgaW1hZ2VzKS4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVn
aW5zKCkpIHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgY29udGFpbnMgcGx1Z2lucyIp
OwpAQCAtMjQ5LDkgKzI1MiwxMSBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFp
bmluZ1RoaXNGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIGlmICghY2FuQ2FjaGVQYWdlQ29u
dGFpbmluZ1RoaXNGcmFtZShjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkKLSAg
ICAgICAgJiYgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluRG9jdW1lbnRF
cnJvcigpLmlzTnVsbCgpCisKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CisKKyAgICByZXR1cm4gZG9jdW1lbnRM
b2FkZXIKKyAgICAgICAgJiYgKGRvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpLmlz
TnVsbCgpIHx8IChkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc0NhbmNlbGxh
dGlvbigpICYmIGRvY3VtZW50TG9hZGVyLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVB
Y2NlcHRhYmxlKCkpKQogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBjaGFuZ2UgdGhpcyBz
byB0aGF0IGZyYW1lcyB3aXRoIHBsdWctaW5zIHdpbGwgYmUgY2FjaGVkLAogICAgICAgICAvLyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGZyYW1lcyB0aGF0IGhhdmUg
b3V0c3RhbmRpbmcgTlBPYmplY3RzCiAgICAgICAgIC8vIChvYmplY3RzIGNyZWF0ZWQgYnkgdGhl
IHBsdWctaW4pLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcGF1c2UvcmVzdW1lIGEgTmV0c2Nh
cGUgcGx1Zy1pbiwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjYzQ2MTEzLi5lNjk5
MWQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIApAQCAtNzIsNiArNzQsMjQg
QEAgc3RhdGljIHZvaWQgc2V0QWxsRGVmZXJzTG9hZGluZyhjb25zdCBSZXNvdXJjZUxvYWRlclNl
dCYgbG9hZGVycywgYm9vbCBkZWZlcnMpCiAgICAgICAgICgqaXQpLT5zZXREZWZlcnNMb2FkaW5n
KGRlZmVycyk7CiB9CiAKK3N0YXRpYyBib29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRh
YmxlKGNvbnN0IFJlc291cmNlTG9hZGVyU2V0JiBsb2FkZXJzKQoreworICAgIGNvbnN0IFJlc291
cmNlTG9hZGVyU2V0IGNvcHkgPSBsb2FkZXJzOworICAgIFJlc291cmNlTG9hZGVyU2V0Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBjb3B5LmVuZCgpOworICAgIGZvciAoUmVzb3VyY2VMb2FkZXJTZXQ6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9ICgqaXQpLT5oYW5kbGUoKTsKKyAgICAgICAg
aWYgKCFoYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gQWxs
IG5vbi1pbWFnZSBsb2FkcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgZnJvbSBlbnRlcmluZyB0aGUg
UGFnZUNhY2hlLgorICAgICAgICBSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRUeXBlIHR5cGUg
PSBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnRhcmdldFR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUg
IT0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0SXNJbWFnZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRG9jdW1lbnRMb2FkZXI6
OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQodHJ1ZSkKICAgICAsIG1fZnJhbWUoMCkKQEAgLTg5LDYgKzEwOSw3IEBAIERvY3VtZW50TG9h
ZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSwgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmCiAgICAgLCBtX3N0b3BSZWNvcmRpbmdSZXNwb25zZXMoZmFsc2UpCiAgICAg
LCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIodGhpcywgJkRvY3VtZW50TG9hZGVy
OjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2RpZENyZWF0
ZUdsb2JhbEhpc3RvcnlFbnRyeShmYWxzZSkKKyAgICAsIG1fc3VicmVzb3VyY2VMb2FkZXJzQXJl
UGFnZUNhY2hlQWNjZXB0YWJsZShmYWxzZSkKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChhZG9wdFB0cihuZXcgQXBwbGlj
YXRpb25DYWNoZUhvc3QodGhpcykpKQogI2VuZGlmCkBAIC0yMzYsMTcgKzI1NywyMiBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyhEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGlj
eSkKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFt
ZUxvYWRlcigpOwogICAgIAotICAgIGlmIChtX21haW5SZXNvdXJjZUxvYWRlcikKKyAgICBpZiAo
bV9tYWluUmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgLy8gU3RvcCB0aGUgbWFpbiByZXNvdXJj
ZSBsb2FkZXIgYW5kIGxldCBpdCBzZW5kIHRoZSBjYW5jZWxsZWQgbWVzc2FnZS4KICAgICAgICAg
bV9tYWluUmVzb3VyY2VMb2FkZXItPmNhbmNlbCgpOwotICAgIGVsc2UgaWYgKCFtX3N1YnJlc291
cmNlTG9hZGVycy5pc0VtcHR5KCkpCisgICAgfSBlbHNlIGlmICghbV9zdWJyZXNvdXJjZUxvYWRl
cnMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIGFsbCB0aGUgc3VicmVzb3VyY2UgbG9hZGVy
cyBpbnRlbmQgdG8gbG9hZCBpbWFnZXMsIHRoZW4gd2Ugc2hvdWxkIG5vdCBwcmV2ZW50CisgICAg
ICAgIC8vIHRoaXMgZG9jdW1lbnQgZnJvbSBnb2luZyBpbnRvIHRoZSBQYWdlQ2FjaGUuCisgICAg
ICAgIG1fc3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNjZXB0YWJsZSA9IGFyZUFsbExv
YWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKG1fc3VicmVzb3VyY2VMb2FkZXJzKTsKKwogICAgICAg
ICAvLyBUaGUgbWFpbiByZXNvdXJjZSBsb2FkZXIgYWxyZWFkeSBmaW5pc2hlZCBsb2FkaW5nLiBT
ZXQgdGhlIGNhbmNlbGxlZCBlcnJvciBvbiB0aGUgCiAgICAgICAgIC8vIGRvY3VtZW50IGFuZCBs
ZXQgdGhlIHN1YnJlc291cmNlTG9hZGVycyBzZW5kIGluZGl2aWR1YWwgY2FuY2VsbGVkIG1lc3Nh
Z2VzIGJlbG93LgogICAgICAgICBzZXRNYWluRG9jdW1lbnRFcnJvcihmcmFtZUxvYWRlci0+Y2Fu
Y2VsbGVkRXJyb3IobV9yZXF1ZXN0KSk7Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIElmIHRoZXJlIGFyZSBubyByZXNvdXJjZSBsb2FkZXJzLCB3ZSBuZWVkIHRvIG1hbnVmYWN0
dXJlIGEgY2FuY2VsbGVkIG1lc3NhZ2UuCiAgICAgICAgIC8vIChBIGJhY2svZm9yd2FyZCBuYXZp
Z2F0aW9uIGhhcyBubyByZXNvdXJjZSBsb2FkZXJzIGJlY2F1c2UgaXRzIHJlc291cmNlcyBhcmUg
Y2FjaGVkLikKICAgICAgICAgbWFpblJlY2VpdmVkRXJyb3IoZnJhbWVMb2FkZXItPmNhbmNlbGxl
ZEVycm9yKG1fcmVxdWVzdCksIHRydWUpOworICAgIH0KICAgICAKICAgICBzdG9wTG9hZGluZ1N1
YnJlc291cmNlcygpOwogICAgIHN0b3BMb2FkaW5nUGx1Z0lucygpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKaW5kZXggZTFmNzVlZC4uMjE3NmI4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBA
IC0xNzQsNyArMTc0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgZGlk
Q3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9i
YWxIaXN0b3J5RW50cnk7IH0KICAgICAgICAgdm9pZCBzZXREaWRDcmVhdGVHbG9iYWxIaXN0b3J5
RW50cnkoYm9vbCBkaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkpIHsgbV9kaWRDcmVhdGVHbG9i
YWxIaXN0b3J5RW50cnkgPSBkaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnk7IH0KLSAgICAgICAg
CisKKyAgICAgICAgYm9vbCBzdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRh
YmxlOyB9CisKICAgICAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogCiAgICAgICAg
IGJvb2wgc3RhcnRMb2FkaW5nTWFpblJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7
CkBAIC0zMDgsNiArMzEwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcg
bV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgICAgIGJvb2wgbV9kaWRDcmVh
dGVHbG9iYWxIaXN0b3J5RW50cnk7CiAKKyAgICAgICAgYm9vbCBtX3N1YnJlc291cmNlTG9hZGVy
c0FyZVBhZ2VDYWNoZUFjY2VwdGFibGU7CisKICAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nIG1f
ZG9jdW1lbnRMb2FkVGltaW5nOwogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvbWFpbi1kb2N1
bWVudC1lcnJvci1zdWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5nLmh0bWwgYi9XZWJDb3JlL21hbnVh
bC10ZXN0cy9wYWdlLWNhY2hlL21haW4tZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2Ut
bG9hZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MjJiYzMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL21haW4t
ZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy5odG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzxoMT5QYWdlIE9uZTwvaDE+Cis8cD4KKyAgICBDbGljayB0aGUgaW1hZ2UuIEl0IHdp
bGwgdHJ5IHRvIGNoYW5nZSBmcm9tIGJsYWNrIHRvIHJlZCwKKyAgICBidXQgd2Ugd2lsbCBpbW1l
ZGlhdGVseSBuYXZpZ2F0ZS4gV2hlbiB3ZSBjb21lIGJhY2ssIHRoZQorICAgIGltYWdlIHNob3Vs
ZCBzdGlsbCBiZSBibGFjay4KKzwvcD4KKzxwPgorICAgIE9uZSB3YXkgdG8gdmVyaWZ5IGlmIHRo
aXMgcGFnZSBlbnRlcmVkIHRoZSBQYWdlQ2FjaGUgaXMgdG8KKyAgICBlbmFibGUgUGFnZUNhY2hl
IGxvZ2dpbmcuIFRoaXMgY2FuIGJlIGRvbmUgb24gYSBtYWMgbGlrZQorICAgIHNvOiAoVGhlIG1h
Z2ljIHZhbHVlIGlzIGluIFdlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHApCis8L3A+Cis8cHJl
IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4KKyAgICBzaGVsbD4gZGVmYXVsdHMgd3JpdGUgY29t
LmFwcGxlLnNhZmFyaSBXZWJDb3JlTG9nTGV2ZWwgMHgwMDAwODAwMAorPC9wcmU+Cis8cD5DbGlj
ayBtZTo8L3A+Cis8YSBocmVmPSJyZXNvdXJjZXMvbWFpbi1kb2N1bWVudC1lcnJvci1zdWJyZXNv
dXJjZS1pbWFnZS1sb2FkaW5nLW5leHQuaHRtbCI+CisgICAgPGltZyBpZD0ieCIgc3JjPSJyZXNv
dXJjZXMvYmxhY2sucG5nIiBvbmNsaWNrPSJjaGFuZ2VJbWFnZSgpIj4KKzwvYT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBjaGFuZ2VJbWFnZSgpIHsKKyAgICB2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3gnKTsKKyAgICBpbWcuc3JjID0gJ3Jlc291cmNlcy9yZWQucG5nJzsgLy8gVGhp
cyB3aWxsIHRyaWdnZXIgYSBzdWJyZXNvdXJjZSBpbWFnZSBsb2FkLgorCisgICAgLy8gUmV0dXJu
aW5nIGZyb20gdGhpcyBoYW5kbGVyIHdpbGwgYWxsb3cgdGhlIG5hdmlnYXRpb24gdG8gaGFwcGVu
LgorICAgIC8vIFRoZSBtYWluIGRvY3VtZW50IHdpbGwgaGF2ZSBhIHN1YnJlc291cmNlIGxvYWRp
bmcsIGFuZCB3aWxsIG1hcmsKKyAgICAvLyBpdHNlbGYgYXMgY2FuY2VsbGVkLiBUaGlzIHRlc3Qg
ZW5zdXJlcyB3ZSBzdGlsbCBhbGxvdyB0aGUgcGFnZQorICAgIC8vIHRvIGVudGVyIHRoZSBwYWdl
IGNhY2hlLCBhbmQgdGhlIHVzZXIgd2lsbCByZXR1cm4gdG8gc2VlCisgICAgLy8gdGhlIGJsYWNr
IGltYWdlLgorfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10ZXN0cy9w
YWdlLWNhY2hlL3Jlc291cmNlcy9ibGFjay5wbmcgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9wYWdl
LWNhY2hlL3Jlc291cmNlcy9ibGFjay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdkYzljODU1Nzk4ODAxNWNk
ZTljMjZiMDIxODhjZGMxYTBmYjg1MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjUzNAp6Y21l
STApbjV9MXB2NmFiKkNeQGtQI1VDVEZ6RjVqMVZwLTlxIzR+STlpbzdzQWwpJC1qblgoa1ZBOT1l
ITB6dzwKejMtfGR4b085bUohfSl4bFBORl9vbFoyM2c1Qzh5PlhsdG4leytHR2BER3dqX0tma3I5
JjskVHohezRjQD5UOWQyCnp2Zy1TSUk9eXB5M2poUlJFU05oUlF8bVJLdFZ9azZyZSRgRXE3ZztE
OGpmUSFKanhhTEIzaVdNJGB1Zjc5RF9gSgp6RW95U2swJipIPF5fTVRqVVNvR3UrQ0tKJVBDcWBh
RFllWk02eDd0Y2U7P0JJeHZUYVdBYihaKyVeUEtXZW42Q0oKejEkI1pvJmttO0lxS0B4TDA2WldE
R2RiPWM9TH0zIzJtfkBaV0JGNXEyU0NhTW5MWDVlTHd+dkhCaHdFSikocFZ9CnpTUFR3NXYmfD9P
NWNQLWBpRT1ocXFYcn5rbUA2X2UoJT9FY1ZrR2FnfDBOaV9kdzZ3KFZobHROS2tHWjY3aCQkfgp6
JnVzMlk0YEJNSjIwNm90Mz9zXypnJDV4OTFNc2x7cUxPVTNQaSVsJHVMMU01eGlrYjBBV04+RWdP
LVUyTnd3UT0KejQlXjsxeF9lXmUmWDlqdjw7KH59Wio4RClwMTI8RFpQMmpxdGlPTlI2ezlEdHkh
MGl6WlRsRVYhZ3lrXjNxQjNMCnpRb09VZ1cjMkQrNzxpLUg3al4/V1ZZWVheKU9Aen0jXlczaHJN
NzI8OShaSDBpakVVPE41aSVze1UqX2BQcWxqYgp6MHgtMmtsKWBUJkJHaTdpdGckZkJKNT03e2pp
T2QkOXxtbUtKM3N0V2Rfcm5gS3MqXn1lQXU3P3g/VGo1X0VZYSsKeiohMUswTUpuTkF0Z2B+c3xD
UntEbGQje2c7LTRfNVQlPC1uNT00U3NtVmU9WXU8UFIkN1A9JDRxVExvSkprS1dJCnomZGtXbk1h
biMmS1I/MWxgKj1fVCRmYzRmcHdrbXEoaDwlfThlN2wzbHxEeGdKJUZEPWoxb0hhIWBQaCkyNVNZ
egp6cDI5WGdHc1dlZlg5djRqQnhqTTc+a0VeU1NaQTFRdGZZPlNuRUUoe1hGN35uTTZaZDhBe28h
SEJoRC19Qmg5XnQKenREPWEjRDUpYlVeK3tfN1dNJT12KFJGMStTNWVBZE03bUtIVU0ldnM2UiZD
OXFMfE1KIXMxIStpNzQxQzZYPl5NCno/JGB7cGExRXA4KiVWO1pPPnNyNmZpT0Q0an1fJCh2KSs1
MCNASVFrRSYzZXV4SGo+KTxwZUlJQT11d3VHUn10WAp6Rj04Z052aEktfDtiWCpic3R9YU5pWWhP
JmxYOFNuWSRnUCQkK0Q5ZiNDPWg8UmBGeFVyTn5NXkNBPU54d3g9VVYKek1gKz00TipPWUpqaFI9
cldHJjg2Z3lCMDxpWmZiMz5RITQ9TCg/NSNVOWgoWis2d2B+PW44ZjNAP25Fb1VlIz5vCnphVm5a
cjloSEEmO3wzJk8hMU1TQSFtYzxpKGE0WTc2KVVxOUU7SyhXUnc8NT9RcWBUeUspPGZ7TlV3TzJp
WGsrUQp6MWtuU2N1ZCY0LUstRlhfWmFgTSMqbnFMVXI1SU1lJXB9cElGbTJNPzVzM1o1Y1VwN0c3
bGZaYURuJDNoXmR1SUsKekhyVig1Zz9TZkEoLSRkRCk2KyRQaEh8ekZ5JmxfeDtTNDhvXmZkSEox
JXc0UzEjfk0wTzxfJSFqdFkodmomK1YzCno9a3Iwei0zO3JyRVJuQ0VkN0Q7ZW0zS1VNV0MjUjg5
eDt3RU1MWiQrNU57RD91K2NGeVNSYlZlSzA3dlpsbUpeewp6eEBObDtrWDQ+TmpGbURHUSUkY3pM
SlgzeD5CZFApbTZ1QDA+JXp5JG82T3RJbzV7enxFNmNhVHgyflVRYUFEK1gKeiZ9bEdZbHh0e1BT
eVQ/TVY2VVZzYCg0ZyV6LTNeZlomTVNaKWRKRTMzRil+akd3VCtzdUJqO35fa2czVERhdzlUCnpv
PnlxcyRZQElGVVBqU3NQa2AhRjU0QSYhWnNkPTdrTktKNyEwRlFvIWpVSk9ZaX5RPmJ1eCFBZ3Zm
LTFCQmhhcAp6TkpacFpUK1YxZkc9KGE7c15YQUk5M0pyb2FEfjFGKmhBazh2O3l3WkRAcHRpZTx2
TytAbThXbWU5YWotRzZ9NjgKeldyQTc1O0x3TGA5NFB5c0ooUDA3NUdwPzIxbDFYPjlYfVc9b0M/
WUQmbWJBIzkoMDxAP0dIJEdocSZoek4zVFVICnpCdEhfUEx7WVNPU249R04wOEtHWHJCUGZTcCZI
cDVDMTxmK3ozQzxFRHtEKEBXJFUtcjlNKkRoSCtVVFU3clheTgp6MmoyK0I0bjdMezliXzM/YTxM
Vmg2QkhobDZkV0hFY3FlXjdkNiM8cns4SCM1PnM7VSpielp1fHZXKnNHPF45Vz0KeiZOc3tUVF5Q
cGMhVStedjdROW5TO0hfZSM3Qj1TYmRqO2dFPVZhb3c9OTNxUUJGfl5acn18MT5LJXQoJXBNWHA8
CnpnLWo9d0wkamVPIXcxOTlBWExMRyF3JG9ycGt8eXZQRj0zd29TbUhPU3tLQH5BWD1TTj9XZ3Ey
Smk8Jl9rISRscAp6amE3NDV5LXJQSlBqVyhYamMpOXVmPDtBcnVVbkhfK21XMSVmc0FKZGUrTiNt
V3c2QSg/bWdSbUlGNVFPZWteUykKemlNcGJDQWhhMW1tYX5eRm5CJFdAbEpqZVBiJG8yUlhXWSgm
K1BLMkZwfDt6RSMqRDwrLU94c2ZHWUUjN3k7bHtQCno1MVE5PFpFPkFBdXMlM0JjeiFVITBCN0oj
a3hraHg+QEt0fHllQG9pSWNTTXRuZkcodTFAdW5TQ0Q3JT1xUU5paQp6ZEhQeFAxQk59UEwtNjZS
eV9ObChMIXRmNEo9QjVKO1ZCVHQkTyQ5e1IqPmlzNk9waG17OXBgYmMrUE1QNmt5PEMKek5Yc1lK
YjwtVyFFQk9TOypUfSFnWFBabygwdjlOVj9Namh9b2kraHpIRTMlRE9EcVgzPEUrLWQ1MUx6OG53
YS1BCno8K2R0MURMQVJWX1p8S2B3ditYKCl4RyFGTDV7NzxySGRfOEMpNW4zZnRuJWhCdm1KIU5Y
PC01T3c5cmRmfWctXgp6KThAe2h5Q0ooYWJQOVF0Y193RFRPVDxmZkBpPTZvJXEzbjktYjZsIWF3
QD93ZXV6VDMpd099MXZHNm9VPHl3eTgKejVNWGY4XzQ0YHJ4JV9kKmUpWWJ8UU9vQUg5VURaP1BV
VmdmcVdQcTVDdi1lOz0rI2k7eXl0fTdYZGZKSDZaeigpCnpmQil7d3IyZUZqYyo+Ozgtdi0pVy1+
SyZobFZ0bkkjIT0yeD9wXk50cnM1NiNufjY+U098REhqM1R9JCk0MUw1Vgp6PzFXY1ZkYU05SzNz
SSEjcHsjc25MfitUcnNDWitePFpyRDdwRXQ7O3c5czdJeTUxSnlFVGZkQ2ljOXJvMFYlWCoKemUj
dFRhZ3Z9TXFOeTJyPlVCbEQoOENXRyp3UGwyNWJYdWlkTzthNSVmOHkyNlE+PnVDXiN+PTFya2JM
c3JsKzdNCnpsUTVCfUxufVhTcWk2aGItNCtZI1N5cFVVK0Z0MXQzbzNOdlo1UX47bmFRPlotbT1j
e2MqQCRiXzA8QjUkUExmUgp6XmVleFlDdkBgbT9tX3ZRamYkYngmPW57UENeY0kqZHB5VXFiZmgj
QHZCJW9VYXhweWFSQ2wxRCRFV1dDTVlCcnQKeiYzUj9vc3JiPSktJGNmKStHND9RJH5MP1NYX2ZM
fU82OGxmeUwwaE5ufCt6ZGoocCQ3PXw4MGBVMWZnZEtUNHtmCno5M1AqYz19OGtMaXpGTj1rZHpj
WEhAKjkqZ3FeKmU2aWBFK2xnT2QlaTNmJH1TTkZGcjNjKXptaU08entRJDVFNgp6Q1J1Zj1PVzYl
QUtRRyUja0lSbD5DbyFeVjBWalU8e3o4RnJ7eGRkR3leOGFkdDg/Q31UTyZ+MGxYWnc5dmlCaCgK
ej5fWjU4VkN3RXU3dUZqcnRMV1puaytAVzFnPVlhd3k7QW5pI1Q4dHxXZ3xmNyNrMmd5PHRndSRe
TDJ1cCNLWDI2CnprM2M8cy0ybXt8RH1RKUstPDtTdChLVlMkPXtiY3VgOUJoWUUpNUBTOVV7JmVQ
UyZoJGxUWTs0clRVYV5gJWVaMgp6UmhReD9oLWBAdCkxc2RCU1M0RkxKVzJsfUt4KkZAKXooeWwr
KDc7X0Z7TGZTMCluXlNfOE4yKitKY3wlVnQxM0sKekAtanFqUDNQPD0+fmIyczg9Zn56KVpjcFNj
fjE1UTFvdzIoeDg4PmZJRDg2MDlXajxtOWVZMEMwM1M9QSlifU9ACnoxKWVHSFZxTH4zdkhWamNK
Kz9kJTRrdnVOZGkxQGErWXVxTCVqciFHX3F9VnFRM3hSR0dIVnMtLW5iaz5qQWxqdQp6amdBJkkj
TklhKGoqTDBRWEpHLVgrcj9hQl44ajMmRzVYMEtyYyp3PT47RWNJR3xUYllqcUZeLWoyeF5MZiZk
dmEKeiVGPENLdyt1M35aO3dpMyUjbk1rUVJDIWg3RDdyMnFjeElFaT5IZyReVm13bl4xYz4hI1F1
eyM2bHh0a0krZjtZCno9amB8dkpRJj0zJndwPSk8QUkrX0k3S0x1QWVoKllARDFYcil0JlJlZFRv
UXQxeGx+WGF5SSNFSyY/K3tOXjMtNgp6TXgoQDglVXYpMFd1UzVGOH0jZWM9Yj9IfmpwbzwxMXRy
bHR3fDRpZCFKcS1oYWxoSTZxMyZONXQ0KSkmJWdBaUsKejRFSilJa0tyWSV0cXp+KHltdllDcT9a
emdLNilyPiVDR2ZrVj81Z3w4U05KREFxcEUwZDtpR3JYb1YkPDwldnkjCnp5K0skJllKK2JAd3Zr
a29sJHIxJWZlcCQlT3ZCPXkkXnRmKlpfU0RVSkx5cDk8aCtgYl9lbDIkN35+JWtwNCgqRQp6Njxq
KFI7I3U+N2A+YjhTRk05fjEyJm9fITswM3pkSmJCKFZWYiRVe2UwakNBYSk7TFJoV18yMS04LSh3
I2hwYF4KemomI19FKkNIWCR0NnJFJlVCM3txTWxQJFlAQ1RfXlB3bXhDSitCRjlCVFdPQkhia0RK
QThzbGJOWkUmTUJlemdnCnpvfVduX05sS258TzJnJkU8dkskUzUyZH1NUF8wSypQdWJoZD0+NUJi
JCg2eTUtfWlIWU52QWFNblRZZiFRRSM+Iwp6MTZhazNMbVNWe3RFdD9wNUB5Uj55Tm9ibHF7PG9C
MkxGPTQmR1F9cUlGaURwPmB3QCpXcH42KW52fnRUJEVrZUMKeihyeGQ5PmFiP0MmQ01FRkRZeFFN
TD9YKWRKTyV3e3tyMHttP3ktdWM2XnxWYz8+a3ozME4pckJSZjtRPCVDRGhtCnpVO2lVWVN7JHl+
Rzx2NmZLYH1eVCYhYUImUiUoSWRmVEI9KWI9MHFNVXJEU1l8NFYqPmd8dkNfdmY0NkAlJWx1Zgp6
eUo3cFFPVWE5WDN6RzkhX197PlhfKWBRazEzeWt2bSNnbWJocmM3cjx8RDVuQyhEaz87QUliYnY5
ezE+KSE9X0cKemEtMEA/PEhye3VeVWFjKCZudGdvd3lnUVBgQ25nV1UjcFdXbE8pRVdHXnxGRnhW
Snd1Sk5mVjYmfSEjeW55eFBqCnp6Z1RQPzMwUz8rQSpEPFcxNVp2PDMqK2I2RUx7KTFnNzJqMnd4
Xn1YRFI9fmZnVnhTVlppRH0jVjVmO18hflcqfQp6ZWBQcztjaUhPNzg7MkN0VVM+IWRKcDYpKVk1
WnZMOT87QyV4fT5hNHdFPWYkTlMxXzJ7cXNLMVN2QCMheHdAdWUKenE7SGg0THBOdSVsc3EwRlQm
Rk1MSW88eXI9eGBXZ3lLM35JIzlTKVh3S2FNWkBhZFNgOGV7NkJaKHJUJjc7MWElCnpFO350c1F5
O3I4YThTc0VxejttbGxwKCFXcE9veEF5SFU4OV53PS0lZ2V7O2ZeK1ZNKHQpMT03RUNZQTB2bFE7
Nwp6en1MQXFJayNwVF4oLSFvT3UjfUdUYjZ0OEJvQUZqWXV+fUFmV01DOCNePVJ4YHxBYUEmMXQp
KXlLTl5ZYTh3WmIKekdUTXt1bVg0SVJkPSRwPnJEbCg3UXNQS0ZCS0FPTGolWW5FdiN6JUJZTj53
Rk1rPnJNLWpteXtjek9EUihNQFp9CnpGMSlNckhpdHo9YXAmbEJJT0xKKEQpd3NPPGtOWkp3TChH
bzZVIXVDT3kzaWtzdXBXJk1sfjteQndZeGpGT2dMbwp6NW5GUz1LIXpgK2VvV3g3Mj9TQEhwd3sz
WnFSQDYjdkN8Zio4MjRzYDtJcXVtdUF0SmdeaCUxZno0VCFfY2VfK2oKek13c0EzMSpVNyVoKVRl
cXJyTHdyKDZJZTU2e2pKV003Mio8bEgpWE41b1ZMIVNMTFB0IXsjZmYhPlN0OGE7ZXw3CnpOXj9F
SWE5IUE5YEVNMFJ3eENseGdhWC0lSjAxNX4hKndLK285Vk9Lb0k8blNyRnhSfmdrcyVgTCk9ZlVm
OTMpQAp6WmJxMz9XI2dvU3JUPXNSSjhQTH1lWWZSUjRwVnVgNzFCJWFNWElEJEB3U3QkaG1hMUt2
bWR7KHMpXiExUThjbEgKemtmJGI9QnxEfjJya1g7OzU/V0Y/bWBNX3EzY2E/PlpTNUAjLUY/RCE5
OSZnYlc0RTkwfEtvdjNfKDtzNXdJP0N0CnpxX1g9Myt1ODM2b2J3eFAkXyYxa0kwbFdeLWd6YjN5
K2lDSG4oOEhMIyVEfmVyOShUS25oJV89KXV5NlhUUkl6ZQp6NlkxSXl7c31Xa049eEJOYVlAbHgq
WT5+eyNiOyVNfDlTaXdUITZrJEl3b1EhbFJOZEYzWUBYLW9BWDdEbjRmQkcKej0lZkVtbTRFeSh1
dUAoI15vSWwwI3ljV0Mhb0B4QkBkQDBpZCV1eGJ0Zi1oSldoSEItX35GSV8rOVBvYlZ4ZCtOCnpH
PjMmfXcqK2xAdVZ6KSU1UC1hQXdzTlVWNE5GVkkzfnJodFN7QGg5UiojVXNNfEtXSHRvR2FzckhW
WUVmcypTaAp6SiFFTTh5WXRuUCQ1KjkmcTkwNWljYVJGK2pqbnlAKGROPTheaTsrfUc2NF89YTZw
Z297UyF0JUxLYX0rNG1rN2QKekthWFl2Zlk8QDg8QThGNFFEUDZRJGspVEA2YyUhOC0lS29xZSF7
enRsS09afmU/X2UpWTZoPHpzZWt+WXpzemMrCnoxVFNVMVoxUmEwVWFIT3R2PiMrZUE5ZlJ+Rj5W
bzEjJUY3V3V6fUw0VXw4QWd7Rm49blJTaSh0JkBZPWs3OWZAYAp6bi1mN3AhYDY+MVg7TiM+bE5h
PFg3S0FJNXdwZXpXc1ReYitjQVJAdXZJITV2OylMdV8wdG5XKStJVj1hcXBQSTkKekZiVU5aaiVE
endtQEhqcSt0b2h0QihXSlYxIXlOO0Vwe29zVk5ZT1I/YWJeKl5tZjwyYlhSKWRFMzlMe1dXYXB7
Cno+KWh7Qjw0cFVee2sjbzdoS1FkKVM7YzdaRSZGPGZWYTNMOTlRMmpXdmJHUFhIPlo9JmhJZ0J6
aihlMiMpOzBwWAp6UyFpRWlTbUBJWiQqVm5OKHxuSFMmeSZKWXNBIyNsSXdwSkh4cUg9bD9NIVMr
KGckP1YrdFpicThsRSV9KUQ9b0kKemhubnlIa3o3Z3I8MVM2a1I5JHBidn41I3M5WiVaR1Q8JkdZ
KzdYSGZ4ZTR3JC0jcXVmNVYtMjIoanNtbVhkdCshCnpjNEF5LTk7NDQ7ZXcxMDFJeCo7MDl9S0Ro
fEpIfHE0fHRpe0ckaUlGPGVKbyktdXZlSmYtYz8+TDZZKnBDVkJYSQp6MG9uVHs3R0R6VDlsdFBx
KSY2MjZiR3RvdzJoRyR0Yl4xM2tGWjlXYnlXdkk0dUQ/YmclZ0xgKG4kdyFUVkExeUgKejR+fjlM
WmhqU2tPXjR1Ny1CSWhBd1FeSzVuSDFnMVVrNSlZYnU8KHZQPCp8cV9qb0tQMlJAWXckbSRnaEta
Rk45CnpfKCFsdCs/VWRSJEd+N0VgV2VZSnh2RGw7cT1Nc3V3ZiExcmhYfX1PMGl6XzBCYG05KCNk
MEFWaCFAcGxRbiE5Tgp6JCMjPXJ1VnY9PSVtO1crIWooaipabGxxbzNAV2V1KWRRM3FwKWB0SjhM
NCQzYFl6KGwtXzghRkV1Z1QjRGp7WWAKej9nSz82YmJzdUIzMWJjOGlsZWtNWGc4OXRtZTsqYzkj
My0zbDh3WEZIcXNUcUZFelVISktlaGtzP2w9O0FNO2BQCnpnI3woZGVjeXs1U3skKzVtWDtyN2Z9
fjQpYSghaWQ9NnEpXjUkQTx4b0EofTx5TSlYNU9AeklhdTVANUpaKm0kYwp6UmZySXpQMXtqUjdO
bzZKU3ljLTI4PmJ6TW92OyQlPCEkMEMmc3BhYXNoZ3w9R2NnITI4bkRkZXt8YytSKTxJPG4KemdW
UiopZSlYQDQhb1NTNnVPV0soOClRO3FeUShKdnk4SjhqViU8eUVBWHYwRlUzST4jNmFHc305JlZi
R2E0UExRCnpnXzAxMXAhZkh+JFgyOH5IYTwySWAjSDh9SmJ6NGU+XyFyRyhzKko3VTh1QU56cGNX
aVdyZDRqSUhCamt7ZFV4VAp6byYtVnkpcUtfTHh0b3N3Qk0jfF4+R3EybGd2OXVaZz90czhPKHw+
PXp0dylwXypTZXloZn1JYCVXJn4mUXBDV2YKemNmKWRKQ3M2TVAqMyRqWXUxY09oc1ZeSFlrKUI/
aktAbVVTMiktU0JZantzT2FoMH5SYTk8RUFeLU5PNFNlUkNjCnomc3ckentfdD0hYXI/ZkFHNH5U
c0R7M1BteXokfER4dSgydl87ZWFJZytCZzMlbkF0VUN2Y3xKPV9sWEchJkRhVQp6TXV+aStfPlNF
PnUkfncxX0QxbXdAajxMOXhwV05tQVZvJSRpYHBjfE8/czQ7Nn5meVEmaiQ7ZD0lWXFjP2xlcDcK
ekxnWXQqV1EpVnZqXy0pVzVwNlYjNGt6PkZiPjIpS2o7ZzBtOF56bWxoUzkrNEBQa3dZLXhUa3U2
dmVLalB+XmA1CnpEfUdsTlI8JX4hZWtMZiNgM2QhX0BaLTJUeGU2dXptI21YYXE8Y1BESDBkQz9T
PGg1ST1sMW1vYXdOeDtDO2l4Zwp6LUNeMT5iS1pYR2JEXzloX3dTWT5vJXt9U3d+PWVHbXB4dT5V
IyQlfkdXPyElaSZMbU5yaXlKRHo0VWVsIys9MiYKejJqbTspX1pCZCFEPko/Xj90OFhzcjBKXmY+
ZjxgKiFndnRXUGY+NCh7eVlIVWkyNHpnODJeczZYaDdLViRqYU58CnphUVNaTnsqVk1rcVVwcUF2
QDRtJSppWl8wT3BFRGlPTWZBTS13cDIoMnJvZjstLVk1ejt6Wnl0NXw1R0Q1U1Mmdgp6KCEhfFI4
NnwpYGZtYzNKZHB+d0sjfUwhVFEkTjRAPHglfTlfLWN7N0F8JXQ8TDNZX2c2YVkhM3Q8KWd8YHt1
VWYKejlHVkg1akY/RXdgel58cFlGZk1XPkBDMzd0YDJfWjxZbyZqbiNIYkNGb1NIdW0rQ3lMWmdK
THMoaT0xR0ZoYld1CnpvLTJCRmg0SCh0eHwrSXsrPz9kMENkaGJMe0ZPWXlFWUFmIXgkZjJiWW9V
ZTF4S0chc2l7R1ReMC1IQUMhfkd0cgp6RjRkOFl4Nmg4cjtJR2h7Tlo1Ryl6JjF+REJndEdFMm9I
fTE4Xy1YU0AhYy1TPiNYUEc/YHQlWndWT1B+WXR9dWYKeig8ZFcoUmgqWEBuRCNXWXQkeysxKURM
TWxjSjNZfmJOVmc1TyNsN1MxWVRNZXo1b0NiKSZCfHVQKj87NjA1QlcxCnopcyY1Y0ZwaHNLbEt8
TXJ1P015dD5wenNIbXdrTCV6fFlzTFMpNHFZcCRAWUNgezd8MXtMdTteTlM9eExuIy1hJQp6M2l7
RnpQfHNPc15jfD4wN0A2YmZQZV9aVWpxeUZSOXowO3IkX0ZzYlQ7TVkmPUVVak9YX0NjQmBkOUBw
KkVYJHIKc0V0WENWNUV3aDQ3UjNHa2xLPGMyfEh1aGJrMT1MdylebDljZT4/LVUpeGx+RkR6QnNk
MlJ4aWZOZE4hPAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9t
YW51YWwtdGVzdHMvcGFnZS1jYWNoZS9yZXNvdXJjZXMvbWFpbi1kb2N1bWVudC1lcnJvci1zdWJy
ZXNvdXJjZS1pbWFnZS1sb2FkaW5nLW5leHQuaHRtbCBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL3Bh
Z2UtY2FjaGUvcmVzb3VyY2VzL21haW4tZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2Ut
bG9hZGluZy1uZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3
ZmU3MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUv
cmVzb3VyY2VzL21haW4tZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy1u
ZXh0Lmh0bWwKQEAgLTAsMCArMSwzIEBACis8aDE+UGFnZSBUd288L2gxPgorPHA+Q2hlY2sgaWYg
dGhlIGxhc3QgcGFnZSBlbnRlcmVkIHRoZSBwYWdlIGNhY2hlLjwvcD4KKzxhIGhyZWY9Ii4uL21h
aW4tZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy5odG1sIj5QcmV2aW91
cyBwYWdlLjwvYT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUv
cmVzb3VyY2VzL3JlZC5wbmcgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291
cmNlcy9yZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNzFlM2JmNGM1MGJmMzIwMTdmNjQ4YTc2MWQyMjBl
ZGFiOTEyNzEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDYzNzkKemNtZUkwUmFYPWFwdWB2SFpk
a2ZRVDByVGdiNzdAQkJtX2pkVGNsWjl4PzI8dzZyPypBbVBUbkBLd3pjMlN6Xz0xCnpldkV0MGVm
WjVoJkM4czVuZ21ebEl4enR+MFJSOVgqMz9rWnxJZjRrN3JiWnhYX05oU0dYT3ZuX0QpJEBTNXNN
Owp6Um9DMFlAdHh+aTAzWi0hLXFndkVOfmhefmQ3PT9LQ0FDdStnKUg8QGF+UEg0UTdwJDMpfVNG
JUVRZXhZPndVdTAKenBkI2JVQmNvUFNSWnd7RzJDS2NvYG1yWnU+aFduK3pJOGU7dWUkZEFgezIm
Y29pKXNXKyFhaypUU1l1Uksle2F4CnpkbVp1NWNFK05AX1YwLVJUcCRKJDhPe0xiRythYXczXnE3
cmBCUk14S3VIQ2ZKWEMpfWY0U31AKWVRKyE0fUp6UAp6OHlJQV5QQX4ya2FnUCZAYlRVPDswPm9w
T2YqMlU2YXFKeTFsSj9tRDt0JCtEeWdzflYydFdAcF9ueXJPR2ctVzYKekdJZ1FARm4mfmxvPz1J
WTVAITNyMCNPNzBjdnRgdGFXP0JHSG8lTiR6dj0zMURpUnh6QXlkYWUhXm51RC0wM3JnCnpaPj1C
Ukp+NDJvJVJhNGVyaVk/OCpVe0tkVG5+MHVYIXYqNS1Aan4lKEJsQEt5NWUyZHo0WE1QSmtlTnIx
cH1gXgp6eDhedE9kLSlJand1LSU+KldoQyZKRXNlRT0xcDdvR3UoVFhUPz0lLXQ9PFljUj9yTyUt
K0pfJkspKlRCPTxmQUAKenJaRnJaYzBDQGheMFJyQmdefHZfO3MkciplcCZqVi0rSGElISN+Z3lP
Nj4ja05sKSM9SXlLUGNKYjxLK1k4UygqCno1OEYzRjl1SCVVNmAxejdTT300Yld5XnxwJSM/aGQ2
N2A1NTBkWmRYaDQ7YXhtc2QjZW1oaDVoT08pVSZsV2dsIwp6YGxvRF4pQzJuU0JPO2BpPWV7NGNT
UjRzLWVCdyR4IzgjbFRfU2p3U2IjVGBLX3t2NGdxZjxWTi1ZUXxSbVNnUDcKelpQNzgyVTtKVS0t
QHpuNGppNllZcE5QT2JlYTZPMDt0PXNuN2QhdHtpdmc0SDRQanZmIXpvdHlza3dURHNWN2xvCnpC
I3xjdFJSbzFETmxtfWgzX3ZLVnd2X05QUXFoeDhKSlFVUE1IWGxMNFlnfHwoPHkjdjk0ajZuSWgl
UHItRGRQSAp6bzFPLWFlJmlnUjlHdDIjd3ZhVWRQRH04eXl2JTthWW5SZ3lEQChhcW10empjRGh7
VSUtPGMjQj56ZXxAT3ZvPDcKenZqa1N3VTl2K3dqQSV8SntJVkRrI1Uqd1VqIV5RQV8mXm5EYzJk
M0FGVXBvbXpVKDtVOFMoZT1aLT08O1h6fG1LCno4YVNMMWBpeChyPU0+RlppXyRAR0pPPkk8MX5Y
YCNhdG11bm5teFB8e3VXN2QmUUIwa3VJZzFicSp1ZU1vWElwcwp6TnU4cGxec2pWR2tONjhANHNU
emAxLW0mNF5edj1MZDhYVyVgWH43Y2BCN3F1cyM3V1cqVlFoYEJgKnBUTyNPJS0KeilpM2V9Pmpm
MDNvSjdlRCRjUHkySD8lVzxmdGYyY0t7ejJxbGxYUVJZQiZGIyMrMmR9TEJVNzRzUDU/UWdyYnBw
Cnp5V1lRV3VSPSs+TGVMWilaNnRVd1ljdD5UdWBMS2VlPUl7c08oJm02a2NYV3x5UjZxMytJWm4w
PU9FQCM+IyUrewp6N3BUfXB6ZWQ5bkBmdyExVlIyZTwlWDNTTEw/VUk4VkBQQTw2WUBGb0V6JCUm
R0hMP3ZyRXRiJCQ2fGApWFVrN2gKelpfQHk+JUNkKkRRWTFXNihKMj51MG5Kcis8c19sWmlNUWMo
ZSRMNjgjTXtPRD17WDstXnotZktZcjNFRyZKQTRqCnpJYG9ET3ZofVNpM2Q8MVg+PWhLSHpzdVA1
eGIlIzR0KlYxSG4hITM/S14tP21DaGEyU1JUVmtLWmIoIVdkRmlpOwp6dnZTUjlEUm5YSmklMSZI
YWQ1NWpmbzRlSXdkQGheNWckYDVCeUIyUURCX3JOXj0tJHk0eUl1R1Y1IzVgbHE4QSgKejF3eV5X
O2Z3LUFrdD5yYWc5ZVJhYWYjTX0lWEgxYVpuYEYqMSNwSz5VaEllSEpKQkdxd18/cXJ0NF5ybDMw
VTAtCnpCaXNePmZJVmJsIWBLSnhVPS11fUZ3d0NfbkFTK20qIzJuI1dOPztXSSZuWXVmYTdGI3BN
USFRKUdlbmRZQmZTRwp6PjU9R088ZW1sPkdtY3Z3cCNETiNlZ3Vhe3V2KXJXLXMjMVQmZVdwaXJL
UCMwcVVCcGw0b2V3P0Q8VCYwMyg8XzIKek1YVSM1MXN3K2Q0bTF4Y0tIbSg9M0plUU80MmxhM3hS
dHp7eEpAfkdjX0RiN2FtSWdrZV4jPjF2Vnw2NDxeOVc9CnpfSSFyeHlBWWh5bkctMHlCeWcofCZz
KWh4QzFsOXNgeD9rbSRIflpSYENPSmlrfVJGfWpQZmc0OT1VMmZVcHkrJgp6NyY/X3UyRnJ2ZzRl
YnZ4TG4oKXZod08oNlU/IVlFUEhuRT1vRUBCTjh0MG5RVT5kQ3kmOE1fYUlSdX1pZ3xBSFcKeilt
QldVYnZvMmgtQVZDRCkhSCE9YSVTYXFKKzYoZXQlb3ZGZFF1K2tlQ15tbD0wUmUyK0lNVnNWYzRv
TWNyaTNGCnojSHR8RzA5WF4wRzsyM2dBaj47KklQMkhnJUdsXndfbjNfbG0wYEpJZU5DNFV3RiRB
SW80JURpWENWQjM9MXk2Nwp6RV50bzZyUCpiQy0qVyRXfEs8S1RKJVhNeVN2cStxemJvSDV8MEA1
emBHN2Z3ZEN0IUBYWWYwOT1LJHZxM3dwbWEKej1qZGlzX3Z2Plg0PEhBPmM5LXxFNGd+aXVjSktF
azRvLWtAMjJMT211JCkramg+KTB0e3MlKTR7WSZ+SUFVezExCnplUUdZNXd5WEEtUEhfUD1TMXRF
Q211KF94NXxTdFBWbj40WCNZclE4TXZiT2dweEIoaUpsMTBFYCsldkx4c2hwaQp6VnxFTTNRTzs1
TXowYzYrKGR+P0hFcDl6V19BK2RwJllmJV9TfEtMKVlXTEc1OVZEdEc8MCtwfjU+aGZDMCsxKWoK
ej5YZk5kJFdISyU2fEd6ak1VSWg0Jj8zPHlaWDdvMDJ2ZjFBeSUoWVBmczlnNnZAYkdXV0BXWCVk
byhRN0w5dkc4CnpDPlIpMmMocnNrY1A0dyh6RWB6cGJsQU17WlFCYWp5PE0/d2ZOVk9oLTN9UUc3
PEBoMEZ5fUZER3QhR2RUU2VGXgp6YDFTMjVCPSNrSyM4bzZ3e01PKDA9SH5BS24+Z0Q/SGpYbUpH
T3NjcCtqM2h2K3dsIyk0WHpDdGEmR2RnYlkwe0kKentGcWwtYXhAUTAwfGsrSFEmY2I7a1k4e3Vm
VWVDTXtWWCpRYjkoNiZYNmxRWlM2amxJcjQrSzF1XzwwR1Y3Wm8wCnpVJFJVS3UoKk9haU1jTWd0
OWNxZTExclRWSHdgY2lQQVdDNHNIPyhjazNHQTFpc2E8RDklMS1WbCNfSCtibVZsVAp6Vm4kLU1Y
dk4xWl50NWxiPnExQH4lZCspeT51YXFkMGxEXl50dm53WTZYe2xnOGBmemE0YH5+PS1XcUBibmZf
XzEKelpwSFZxX3p2RWxVRCkjYGdDZHdFWSNHSl5QUloySDlMcTg7ODdAZnliejNAYEZORFJPWCFx
eEpkLXRCLVE/RjJlCnpiNlRFcUVQQXh1R21eNVlHTW0/KnY8Xz1UU3ROZyRSUWpncT0yV0Mkd0k/
O3ZwNms7dl57MGZUdigmZmpNeyg3WQp6IXtaWXlFcGVROWZ0VnYxbncrZlRzJmg5UHpyRE1pNDZl
Xns2aDUjJWJ8PzR2Pmh7KUlFKHFIKXEzNjZ+dmlxcHQKekQ1RisrRnwpcTs9UzZHRFFSeHg8STlm
V0B8SmU3PVBjVDVuWmB3K3QyUSppKUdWNyhoSVNqS3RVVzA7QUpyQ2liCnpBQS1eU2xlWXoobjZ7
Vn1ROVYoQHVfOzd5JT5JbCQ1X1RefDx5PUlpIUA9bDwpNyp1bk53NE8hSFQ8bEVnVnJxZgp6MDNB
TVVmNV8tLUtTWC0oPzJCKEF0NU93YHZ2UmV2ZjVaWnU+cHhpQWhvOUNUdVVnekI5cVgofl52ZDcj
OXJxNj8KekZVRX0lU2AhfG1NbHlGPkIkKyl0TiZkcX1YPGklRFI5QXNyIUc2PXhDQ3gobzB5cDF3
PiRULXRnUHZ8PGJgbUZaCnoodUhxflhLbCFCdmcqQytVKUdQOy1NSF8xTyFXOCViJDhJVSs9Y1Bt
N1g7clFHTCVVaWRBd1lROTchSjZeJnwhYwp6b1B1XlJGWDlxZXsoKHIyJSNWZV8yJWF0PGVYZVBA
Z142dmxkUSFyQ1pkPFA5ezdFfWFUNzxqU0Y5d2sjOEJ1P3UKenFEMXR1X0RxQiNxRUdOeFNPOUFf
KEhCQGUwQjB3UktHS0omPFBZIXF6S1J2amFKK0ZQSnlTOXZnSj1YSiFHO1hkCnp3M0pFQjE1RTUm
QlZ5XlpXUyVOaSp4OEAqcH5kLThZRHZhTFEteTBlWXtmNWZ6VUheYntGNlFxWSNCS2BrJG0zOQp6
KzVSblBBZ0prJUA2SDAtOVdSQW9sMFowS0FmWjB+OGBNTGlFOS0mdiRfakBJb0t9KEhXYnt7JE58
KFp6Iyg+O30KelRBczZweUg0bSFmNVlmRSp3QEw9Z0xVOSleez1WKEAqPW1jWkVsd1hmJkM2K3pC
NkAkVUJBaiM4WWdPJlA/PFhFCnpaZT47PCEtfHojPl81K1g/UXJIdUYyKWFqYk8pKSt1NkFvO0Zt
RHUoYmN1RW9oS19+NGYyNG8zej84PUh6I18oNAp6QyYoa1EhbX1WPFBwbk0qNiNwdW80YVBsMCZF
bDVBMHhefHMkJXV3SFlMUlBZeWBHaElQam1NbDsyUlgwLUMpQGYKelNVZW8kU0BsTUV1YnZ8PXgo
T2wpRDUyKyZkREAjQ1M+OUQ0PHMjZVhJVztwZjJiT2dEZXE5fTErYiV+JTlnYE9oCnp2eyhtTSFv
ZT5xVWx+aFd5JU0lV0VoI1BZMSolcH0/JCU3Y3RvQ211TnJqWnVNO3hhZVl7PTxKKmFkSClIdCM3
dAp6Szlle1E3YytOQUI0azhtSSlWPWxCKXVaPFRNakZxR1BqdH1kJClOTCVMRERkP2A4dU1QcEE+
bztifjdJVVRvV1gKekBiWVE8Ui1XdEVsaThRV095PTEoPjdoYT5yQmtrVHpENTQpbSltfV4jUUJT
djF4U2t9SHteQXlndzJ9IWlFUXhWCnpQMHhlIWtiMEVXXih0dXpIKXRfRDtvanZlOFUxSk49Ql8q
VHY2N18pbW1MQFBKNmczTCYreXJPMzY0fD5wUElUfAp6LUglOH5RR3xOcSRnU28lYDJldlVrRStD
NWlGeDlFQF9meWU1I05TQWA0e0U2VXZsJXpCdSNec1JGPGZ2Q1pzVWkKel54SXh2aEBiblA2UTh9
dCg8WXE0bzVZeyl8OGJKQ1JDJHtfXmNgNmA3allSZVFGPlU0RDFGZTB2NCR+TUxIQG5VCnphLTg+
eDg9SHNESEhtK0VTQEg4KF5ReGIjLV89Iy1sYDhRUGFZRjM5biNGSjtfdHN9N041NUBzOHFNcXQ8
Rnk1JAp6UnxfcX17d3ZwN0Jvcnkza2NsWk9BLW8pYCNqQztCaTB1Xlp3JCF2KElya3QpO09iZk5Q
MC0oYV8oPWo8enB0dDkKelV1bzlnOWskeENoQ3pedUxifHgjISFQSXl3SUI2ZntwdU47N1pmIXFS
KjxmQUAjMFg0ZV9zMXFFQmp+N21zZ1l3CnpiUFp4UT0lKTFNOz5VZlklaFV4VHRMeHRiRWpCfDtY
U0ZWamgpYiFlcmRucWxGJV9MJVpBZXg0P1c9MW9lTkIoZQp6TUYmWXglNDYzI19CfD4tdjdJPE1j
fkl3ZGZ4T0xVUzhge2dabzdyOyhEezNGLTRHUlpPRDgpTV5NTEtFNDdvY0EKeiRXYGByKXtWKH05
Zzh5cUJRVCVFbiZyK2IoT3VpWShyNGh3fEY2VEM7YU80YS1kZGhhUXxnWktQVjRiODt5d180Cno1
Iz5SOExyWCRhSFVqN1FRb1lNSEEkQk1sOTx3aHNPU3FRdnNrV3ghYTxPaX5OK1ElSSZWJD52WGxk
JCQhRjVhVQp6NHgrUTtDV31RMncwLXpGNEVvNDs4Rk0qKlR5UGR9QzZeY1cjND4+IS1UT3FVdGlq
cm5VZDc4R1A4LWJOTHVlNjgKeiRreD15cFlCN1U4eXpyWTFqUWMxdWhIOE4mJG5JeWJ5JVo3djlg
bmJwUVd+VTFtdT9fbXk7IyFCb0VyUythdjxoCnpMakBrbnBTZVUxRUJPem90MzBSLTQlclArYV9W
ITVSZTR0P0khd1ZBOzh2TnZtN2MwVXRpRlFWRXZtckg3ckxEKgp6KUt9eTVTTllCNnw1bVcyXkV4
engkeCVIeFE/Wn1iVCF1ZSFHayNXP20yMSt1UCkqYnYyaTNraHokdEx+R3dhYGUKeko7SWJDOVY7
MG1gS0pAdVFOdXsldm44dV5raXRfWW1zWDQ/VHEmYEZ5T25xfmhfWmgrXllJSS1pVXs1bGNfVHxP
CnpTeFExX2wwen5AaVpTIz5kfi00ZjZMRXJrelVRVz93VmojMW58R0wmeV5IY24lK3x9amU+X2t6
Wj9SZGw8XiooJQp6TTB6aThFQXhHeFEqTUoqc29vYk9ocnFGI1RoOWNXY2dRX3RXMVUjXyp0RF53
V0pyNXMpNHQ9QyU0RjBeYjRTQlkKejAmVXk9S091VD9OZUxWWUUodSE4bnJfNWA9IXxzR0tsZVdh
XlJWfWNNfSRuSUdBRGtNMG4/VmZ2cClDM3JZOVFmCnp5NkNAP1dnbWFeRlBCdmh7XjdXOTxzRnRC
PUhpfW5GTXhEdC0+b01VZmp9NyY3U2JsNTU3K0xuWm19Q00zemZXcAp6RExnRSpJZEljIUM4TSQk
QU03PX5uTjRZfFVzNGpQY2lrQT97NVhIUWEpfG1weW5QXlN2Rm55RVFSbzIrNU1OdkYKekNQbk1z
b347fXx6QW90JWBDIzw4amdzP2ZhT3AqbEc/aEd8Qyh8RjJAUFhLWGVMOVRxMXNIdXVYQEhSJTtN
QWs8CnpFUSRkRFcoVHk0MG18QDRofTx6Ri1WQzlXUzsjRFhLNEhATDUhYCtoKlRyQEdEYEdpYkoj
Z2hmMj9QLVNXbHx4Kgp6U0NJQyEkfGFndFBAZHMkK3N9d1A9cHNeSyp1PHhaJVR5MCQxRSoyS0Yq
RGl1cDNPczcpV0ReS3pwUXB5ZlNCNUIKempgO1FVbj9FdW5OaH4+IVUodkNjNWlDPCFXNz8+dmFG
QkE/YVBDcXskM0Z+LTYwcFBZcF9wU1RWX2BLOEY1LVNkCnojRlVmUj0wUGhqcS1pQF5GWllOaGgp
alVWS3BXQWo3WjstSWNLQ0t4UER+RGpaK0dsVWJ8bX0xIXJTfGVgclU+eAp6JndNWWBQQmw7NiZS
WCVKM0hrNjlsPyg+bnZhZ2x2bSMrYFMhZGAxRlg/bFp1dk8xbnlAb3NVe2Eqd2R5U2NnTTQKel42
bTJVXlMjQGtJVy00dD5Nd0VxYyM9OHRMRk9BUHF0YlVCSkNffC1QRElBVXkrQ2BOVTJVbiFwJFFg
YVpOWEdpCnpuQ1o/UkAjVTAxWmp4ay1SZlVJelRVSXJlYVU9filXdTdMaT9JRm5FPiE5d2xqV2ZT
PHs+eHJVNFdkVDtkaSo7bwp6TX17P35RTXhScU4ydnZnVzQkaWJmeHZSZVooUyY0cE8+KiFPPjlt
fnJjdEh3eS0lKFdgMX5DcUclKilxbCFLUyEKenBTZjNUXzllY347UzJwJiVgWE8wSChMWEB1dXAw
eWp7bkJ6MVBlXks+dDhrUl9eQWMzOVJFNkBLQj97djVAfnorCno7TmFgJT5SVFNyY21Oc0U5PGlL
V0V4VF9ibTdyYnpZd3pvKmlpV31ZaT5AfHc5Kjw7WEFTViszODlnRmwyWig/Tgp6emlgJkB5QXFv
MzcjT1VDS08/diVSI1hOR205VSpMeDg3aUg2OVFTeTsxbVFnMWZ7aHpuOWlqQWFVJHhCcytJfjkK
ell9ZV5fOFlUfFItb1FJenUwI1M9RTQ2TSNhOVBFI1psTCV1Zythe25hRSgzVGNWUkVTSGcqSX05
PVJFMkYlZTVyCnpGRX44RD50bWsrb0hkanltY21BXyV8TnpGUntKaCNFWVQlSEl1PUxNSyR7PTAj
TmdXWldjTEU3TGRPayElIVRMWAp6PUx6UVplbE42ZGNFRUk5VHpacldscX5rbl9MMV9RXl9qanZw
NT5veitfXyl1NUc+Jn02NyoyRyZfWmF2JGZ6bG0KenBAUHM+TyRRQld1JTw+dVdlTURPakFrQHUr
PThFJXhBQSNkKjRsSTcrS0V+U0JmVERqOT9OWCp1aDdhWHRAe2lpCnpOVUV+VXVmNyEjI0Z2QDJS
Yjxhenk7TzJjWmRGZktyKGR+Rmo5YlluNnFEdzx2KH4zJis7NEh3LUJvPThMOCtNfAp6Un4pUHRg
MktEUClxLS12IW94eWd5fk9mfTxCUDZ9U3g9LSY5N19uTjRVdSVgdnpGVTFGTCV9dEJrPFYyK2x0
KUYKejVrcmRJSChmUyk/QnBVTCRPQnA7K1B5LTAhNTRmKmY8Qi1vVnspczZaIzdAaXpaSj5SVndZ
JiMoNFFBZjI8dXQoCnp0ZVk9eTJrODkzVClnfClTOzVtUUBuempQIW8kLWVGI007anp9dGJoYGdi
SmJtI05HMWNYPVRhJTtMZ15MTnhOdgp6RXYzNT00LWVQbEh9NEE+dkl9QHg/JF5WXjhYbkc7cz4+
Uk5QTndjQihNS1BNU09MTChfKVpqQmVQcjc/JmxFK3cKej91OT4rZjUrPFNVKDFQZXdGUH00K0so
fE5sWj5Wc0FXeDVVUistP3FQSyhzQUt6Y2RnZFNrKjh5ajdebjlBfkpVCnozNE9eP1lfWFZJYXFZ
MyNBYFNYY1ZXZDkxUDgmJT5rIyUmYkJlPEpSYUI2cmhVWjllSVpQQmgkVmEjJGVkRzBpQAp6e0M3
b3VXbE5SeVhaJGtrcEReRVlVeWpTOyVNaFl9Tm1AeVMrR2k3bTZaUWZkYiZQZWh1M3J6S2hjYipn
bDheMEoKej9aKWxYWEtmZVc9Yil8SGU+ZGM1V1ZnP0Q4bl5+fSp5Qnw4UjlhIWZMKz8yXklSJmV0
RTdfTE5pKktqbE9jXn1TCnpmelFZSXkhWmBqT0FXNkxkem5gWilMbkY0eWpAMH04VEpHRiRte2dj
cFptY2Frdn0zNjtAKilJXzZ3T0dUNm1jcQp6RVpxKj85VDQ5V3QyXj0tPzE8K3UpUiFPfVFsbVJ0
KF9ZRW1ic0BVPiEtYFF9dzs/IzwqeGA1IU01Q2x1XyRLbDIKeilLRSR7MX5ES3t6QD5OTz92SEtH
UVJJfjI8aj0zWkloMjMkek0zVTEzcmNtZ2xVe1RhYGFAR19EenBlN0tIMUcjCnoyUE9oVyEkeDly
ejYoKyU+WHkja3lZdWtYJWwrUzMqX3IkY0NOVjRJT2trXzkjYWZUYjh8PH44YmNQSnU0NndEfQp6
bW10czFQKEdJeDdoeyo9PipKakphWigtQEtZOTAxXkRfWXR0fj1HZjhkJn1pJmVQUyghWiEpcGZY
NE4+RnlEdkQKejNzbkB1NGY3RXg7eCQ/dzF0MDZ7LXtMODFBZjhQSDxLblZsMHMzZSN6U3soUG9e
fkpxZVM+RFNiZHwrOyFANFZSCnpAPz0xI2pJRUlWJSNNMWRCfHp8ej5MSztvIz85U21SPTMlUUB4
TVBCLSY0Y1AyTEs/WHs5aUJ0YEdyNkw7MkQqcwp6aWxTajQjP2g9SUZAVGs5TmE2MXx0PCZ2fFFy
YSZFVH5Eez1wbE4zNzx2dT1ebFdQeCFmZH4wQy1HUSE7dkp1bzsKenhle3IoLTw5dyRhTHhoN3l0
Wm8hJXpYcjA2QVctbikzV0Z3JXBkQE5yaWNlQz42O2plWkRKJXctVCNPRlBaaENFCmEyYFhzREN9
d0RZd2Y7OTZmVGspJHJDI1l4PG9eS0IzP3JvZwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBjODNjNDVkLi44ODdkNDM1IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTExLTE5ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1hZ2UgU3VicmVzb3VyY2UgTG9hZHMgU2hvdWxk
IE5vdCBQcmV2ZW50IFBhZ2UgQ2FjaGUgRW50cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODM4CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6IG1haW50YWluIHRoZSBSZXNvdXJjZVJlcXVlc3QgdGFy
Z2V0IHR5cGUgYWZ0ZXIgY29udmVydGluZyB0byBhIG5hdGl2ZSBOU1VSTFJlcXVlc3QuCisKIDIw
MTAtMTEtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MjI4OC4KZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDU5NjgwODQuLmNk
MmQ2YTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQpAQCAtMTEwLDYgKzExMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
SGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3RCYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CkBAIC0zODMsOCArMzg0LDEyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAg
aWYgKHJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkRv
Y3VtZW50TG9hZGVyTWFjKj4obG9hZGVyKS0+aW5jcmVhc2VMb2FkQ291bnQoaWRlbnRpZmllcik7
CiAKLSAgICBpZiAoaW1wbGVtZW50YXRpb25zLT53aWxsU2VuZFJlcXVlc3RGdW5jKQorICAgIGlm
IChpbXBsZW1lbnRhdGlvbnMtPndpbGxTZW5kUmVxdWVzdEZ1bmMpIHsKKyAgICAgICAgLy8gU2F2
ZSB0aGUgdGFyZ2V0IHR5cGUsIGJlY2F1c2UgdGhhdCBpbmZvcm1hdGlvbiBtYXkgYmUgY2hlY2tl
ZCBsYXRlciBvbi4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0VHlwZSB0eXBl
ID0gcmVxdWVzdC50YXJnZXRUeXBlKCk7CiAgICAgICAgIHJlcXVlc3QgPSAoTlNVUkxSZXF1ZXN0
ICopQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+d2lsbFNlbmRSZXF1
ZXN0RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1
ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSwgW3dlYlZpZXcgX29iamVjdEZv
cklkZW50aWZpZXI6aWRlbnRpZmllcl0sIHJlcXVlc3QubnNVUkxSZXF1ZXN0KCksIHJlZGlyZWN0
UmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBkYXRhU291cmNlKGxvYWRlcikpOworICAgICAgICBy
ZXF1ZXN0LnNldFRhcmdldFR5cGUodHlwZSk7CisgICAgfQogfQogCiBib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciogbG9h
ZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCg==
</data>
<flag name="review"
          id="65034"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75508</attachid>
            <date>2010-12-03 10:40:31 -0800</date>
            <delta_ts>2010-12-03 10:40:31 -0800</delta_ts>
            <desc>[LOGGING] Patch that goes on top of previous patch</desc>
            <filename>patch-for-loggin.patch</filename>
            <type>text/plain</type>
            <size>2885</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggN2IwZTk5ZS4uZTFmYTYyMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAKQEAgLTI1NSw4ICsyNTUsMjIgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUqIGZyYW1lKQogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwogCisjaWYg
MQorICAgIC8vIEpPRTogRGVidWcgY29kZSBvbmx5LCB0byBwcmludCBvdXQgd2FybmluZ3Mgd2hl
biB0aGVzZSB0eXBlcyBvZiBwcm9ibGVtcyB3b3VsZCBoYXZlIGhhcHBlbmVkLgorICAgIERvY3Vt
ZW50TG9hZGVyKiBkbCA9IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBp
ZiAoZGwpIHsgCisgICAgICAgIGlmICghZGwtPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkp
IHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPj4+IE1BSU4gRE9DVU1FTlQgRVJST1Ig
KCVzKVxuIiwgZnJhbWUtPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGlmIChkbC0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc0NhbmNlbGxhdGlvbigp
ICYmIGRsLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKCkpCisgICAg
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI+Pj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIFdB
UyBDQU5DRUxMQVRJT04gV0lUSCBJTUFHRSBMT0FEUyAoJXMpXG4iLCBmcmFtZS0+bG9hZGVyKCkt
PnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPj4+Pj4gVU5LTk9XTiBSRUFTT05cbiIpOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIKLSAgICAg
ICAgJiYgKGRvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpIHx8IChk
b2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpICYmIGRv
Y3VtZW50TG9hZGVyLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKCkp
KQorICAgICAgICAmJiBkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwo
KQogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBjaGFuZ2UgdGhpcyBzbyB0aGF0IGZyYW1l
cyB3aXRoIHBsdWctaW5zIHdpbGwgYmUgY2FjaGVkLAogICAgICAgICAvLyB3ZSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGZyYW1lcyB0aGF0IGhhdmUgb3V0c3RhbmRpbmcg
TlBPYmplY3RzCiAgICAgICAgIC8vIChvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIHBsdWctaW4pLiBT
aW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcGF1c2UvcmVzdW1lIGEgTmV0c2NhcGUgcGx1Zy1pbiwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkYjhmYWFiLi44YjI5N2VkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC03OCwxNSArNzgsMjEgQEAgc3RhdGljIHZvaWQgc2V0
QWxsRGVmZXJzTG9hZGluZyhjb25zdCBSZXNvdXJjZUxvYWRlclNldCYgbG9hZGVycywgYm9vbCBk
ZWZlcnMpCiAKIHN0YXRpYyBib29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKGNv
bnN0IFJlc291cmNlTG9hZGVyU2V0JiBsb2FkZXJzKQogewotICAgIGNvbnN0IFJlc291cmNlTG9h
ZGVyU2V0IGNvcHkgPSBsb2FkZXJzOwotICAgIFJlc291cmNlTG9hZGVyU2V0Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBjb3B5LmVuZCgpOwotICAgIGZvciAoUmVzb3VyY2VMb2FkZXJTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9ICgqaXQpLT5oYW5kbGUoKTsKKyAgICBWZWN0b3I8UmVm
UHRyPFJlc291cmNlTG9hZGVyPiA+IGxvYWRlcnNDb3B5OworICAgIGNvcHlUb1ZlY3Rvcihsb2Fk
ZXJzLCBsb2FkZXJzQ29weSk7CisgICAgc2l6ZV90IHNpemUgPSBsb2FkZXJzQ29weS5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSA9IGxvYWRlcnNDb3B5W2ldLT5oYW5kbGUoKTsKICAgICAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAxCisgICAgICAgIC8v
IEpPRTogRGVidWcKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI9PT0+Pj4gKCVzKVxuIiwgaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRp
ZgorCiAgICAgICAgIC8vIEFsbCBub24taW1hZ2UgbG9hZHMgd2lsbCBwcmV2ZW50IHRoZSBwYWdl
IGZyb20gZW50ZXJpbmcgdGhlIFBhZ2VDYWNoZS4KICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6VGFyZ2V0VHlwZSB0eXBlID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS50YXJnZXRUeXBlKCk7
CiAgICAgICAgIGlmICh0eXBlICE9IFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzSW1hZ2Up
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75511</attachid>
            <date>2010-12-03 10:42:40 -0800</date>
            <delta_ts>2010-12-03 10:42:40 -0800</delta_ts>
            <desc>[LOGS] After no more than 5 minutes of browsing popular sites</desc>
            <filename>main-resource-error-logs.txt</filename>
            <type>text/plain</type>
            <size>9414</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">V2l0aCBsb2dnaW5nLgoKPT09Pj4+IChodHRwOi8vYi5lbmdhZGdldC5jb20vY2xpY2s/dHM9MTI5
MTM5NzMzOTE5NCZoPXd3dy5lbmdhZGdldC5jb20mdj05JnQ9RW5nYWRnZXQmcj0mbD01MzIyJm1z
PTgwMzAmYWg9aHR0cCUzQSUyRiUyRm1vYmlsZS5lbmdhZGdldC5jb20lMkYmYXQ9TW9iaWxlJmN4
PTUwOCZjeT0xNzYmaWQ9c2VjcmV0LWhhdC1ob2xkZXImYk5fb21uaT0xJmRMX2NoPXVzLmVuZ2Fk
Z2V0JmRMX2RwdD13ZWclMjAlM0ElMjBFbmdhZGdldCZkTF9zRHB0PXdlZyUyMCUzQSUyMCZrYj0y
MTkmKQo+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiAoaHR0cDovL3d3dy5lbmdhZGdldC5jb20vKQo+
Pj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIFdBUyBDQU5DRUxMQVRJT04gV0lUSCBJTUFHRSBMT0FE
UyAoaHR0cDovL3d3dy5lbmdhZGdldC5jb20vKQoKCj09PT4+PiAoaHR0cDovL2IuZW5nYWRnZXQu
Y29tL2NsaWNrP3RzPTEyOTEzOTczNTU3NDImaD1tb2JpbGUuZW5nYWRnZXQuY29tJnY9OSZ0PUdh
bGxlcmllcyUyMC0tJTIwRW5nYWRnZXQlMjBNb2JpbGUmcj1odHRwJTNBJTJGJTJGbW9iaWxlLmVu
Z2FkZ2V0LmNvbSUyRiZsPTc1NSZtcz0yMzg4JmFoPWh0dHAlM0ElMkYlMkZtb2JpbGUuZW5nYWRn
ZXQuY29tJTJGJmF0PU5ld3MmY3g9MjkyJmN5PTI0NyZkTF9jaD11cy5lbmdhZGdldG1iJmRMX2Rw
dD1FbmdhZGdldCZkTF9zRHB0PWdhbGxlcnktbGFuZGluZyZrYj00NiYpCj4+PiBNQUlOIERPQ1VN
RU5UIEVSUk9SIChodHRwOi8vbW9iaWxlLmVuZ2FkZ2V0LmNvbS9nYWxsZXJpZXMvKQo+Pj4+PiBN
QUlOIERPQ1VNRU5UIEVSUk9SIFdBUyBDQU5DRUxMQVRJT04gV0lUSCBJTUFHRSBMT0FEUyAoaHR0
cDovL21vYmlsZS5lbmdhZGdldC5jb20vZ2FsbGVyaWVzLykKCgo9PT0+Pj4gKGh0dHA6Ly93dC5v
Lm55dGltZXMuY29tL2Rjc2E1cGdmcTEwMDAwYzl6dXlzcWswbG1fNmk4eS9kY3MuZ2lmPyZkY3Nk
YXQ9MTI5MTM5NzM2NzU5NiZkY3NzaXA9d3d3Lm55dGltZXMuY29tJmRjc3VyaT0vMjAxMC8xMi8w
NC9idXNpbmVzcy9nbG9iYWwvMDR5dWFuLmh0bWwmZGNzcXJ5PT9ocCZXVC5jb19mPTIxZDBmMDE3
MTBmYjg5NTE4YTgxMjY3NDg4NzI1MjM1JldULnZ0X3NpZD0yMWQwZjAxNzEwZmI4OTUxOGE4MTI2
NzQ4ODcyNTIzNS4xMjkxMzk3MzE1NDU4JldULnR6PS04JldULmJoPTkmV1QudWw9ZW4tdXMmV1Qu
Y2Q9MjQmV1Quc3I9MTkyMHgxMjAwJldULmpvPVllcyZXVC50aT1MaW5rOkNoaW5hJTIwdG8lMjBU
aWdodGVuJTIwTW9uZXRhcnklMjBQb2xpY3klMjBOZXh0JTIwWWVhciZXVC5qcz1ZZXMmV1QuanY9
MS41JldULmN0PXVua25vd24mV1QuYnM9MTQ3OHgxMTAyJldULmZpPU5vJldULnR2PTEuMC43JldU
LmRsPTIwJldULmVzPXd3dy5ueXRpbWVzLmNvbS8mV1Quel9mYmM9MCZXVC5jZ19uPUhvbWVwYWdl
JldULnpfZ3B0PUhvbWVwYWdlJldULnpfbnl0cz0wTVdBNFBDWnNlN0ZMRFhybXZ4QURlSHlSdGUz
cHVlSTNsZGVGejlKY2hpQUpZT1ZMSUtvY2pnc1YuWW54NHJrRkkmV1Quel9ueXRkPSZXVC56X3Jt
aWQ9MDgyYTM4ZDcwMjZmNGI4YzJkYTNlZDE4JldULnJ2PTAmV1QubWNfZXY9JldULnZ0X2ZfdGx2
PSZXVC52dF9mX3RsaD0xMjkxMzk3MzY2JldULnZ0X2ZfZD0mV1QudnRfZl9zPSZXVC52dF9mX2E9
JldULnZ0X2Y9JldULmFkPSZXVC5uYXY9bWFpbikKPj4+IE1BSU4gRE9DVU1FTlQgRVJST1IgKGh0
dHA6Ly93d3cubnl0aW1lcy5jb20vKQo+Pj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIFdBUyBDQU5D
RUxMQVRJT04gV0lUSCBJTUFHRSBMT0FEUyAoaHR0cDovL3d3dy5ueXRpbWVzLmNvbS8pCgoKPT09
Pj4+IChodHRwOi8vd3Quby5ueXRpbWVzLmNvbS9kY3NhNXBnZnExMDAwMGM5enV5c3FrMGxtXzZp
OHkvZGNzLmdpZj8mZGNzZGF0PTEyOTEzOTczODEzNjcmZGNzc2lwPXd3dy5ueXRpbWVzLmNvbSZk
Y3N1cmk9L3BhZ2VzL3RvZGF5c3BhcGVyL2luZGV4Lmh0bWwmZGNzcXJ5PT9zcmM9aHAxLTAtUCZX
VC5jb19mPTIxZDBmMDE3MTBmYjg5NTE4YTgxMjY3NDg4NzI1MjM1JldULnZ0X3NpZD0yMWQwZjAx
NzEwZmI4OTUxOGE4MTI2NzQ4ODcyNTIzNS4xMjkxMzk3MzE1NDU4JldULnR6PS04JldULmJoPTkm
V1QudWw9ZW4tdXMmV1QuY2Q9MjQmV1Quc3I9MTkyMHgxMjAwJldULmpvPVllcyZXVC50aT1MaW5r
OlRPREFZJ1MlMjBQQVBFUiZXVC5qcz1ZZXMmV1QuanY9MS41JldULmN0PXVua25vd24mV1QuYnM9
MTQ3OHgxMTAyJldULmZpPU5vJldULnR2PTEuMC43JldULmRsPTIwJldULmVzPXd3dy5ueXRpbWVz
LmNvbS8mV1Quel9mYmM9MCZXVC5jZ19uPUhvbWVwYWdlJldULnpfZ3B0PUhvbWVwYWdlJldULnpf
bnl0cz0wTXJiUjdQZ0xJZFBMRFhybXZ4QURlSHk2TDR5ZU4zbTNGZGVGejlKY2hpQUt1YUtrZGwv
NmxvSVYuWW54NHJrRkkmV1Quel9ueXRkPSZXVC56X3JtaWQ9MDgyYTM4ZDcwMjZmNGI4YzJkYTNl
ZDE4JldULnJ2PTAmV1QubWNfZXY9JldULnZ0X2ZfdGx2PSZXVC52dF9mX3RsaD0xMjkxMzk3Mzgw
JldULnZ0X2ZfZD0mV1QudnRfZl9zPSZXVC52dF9mX2E9JldULnZ0X2Y9JldULmFkPSZXVC5uYXY9
c2hlbGwpCj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIChodHRwOi8vd3d3Lm55dGltZXMuY29tLykK
Pj4+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiBXQVMgQ0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9B
RFMgKGh0dHA6Ly93d3cubnl0aW1lcy5jb20vKQoKCj09PT4+PiAoaHR0cDovL21ldHJpY3MuYXBw
bGUuY29tL2Ivc3MvYXBwbGVnbG9iYWwsYXBwbGVob21lLzEvSC4yMi4xL3MzMzM3NzIwMzEwNTQ4
Mz9BUUI9MSZuZGg9MSZ0PTMlMkYxMSUyRjIwMTAlMjA5JTNBMjklM0E0OCUyMDUlMjA0ODAmcGFn
ZU5hbWU9YXBwbGUlMjAtJTIwaW5kZXglMjAodXMpJmc9aHR0cCUzQSUyRiUyRnd3dy5hcHBsZS5j
b20lMkYmY2M9VVNEJmMyPTEmYzM9cCU0MHByb21vX2lvc180XzJfMjAxMDExMTYuanBnJTIwLSUy
MGFwcGxlJTIwLSUyMGluZGV4JnM9MTkyMHgxMjAwJmM9MjQmaj0xLjYmdj1ZJms9WSZidz0xNDc4
JmJoPTExMDImcGU9bG5rX28mcGV2MT1odHRwJTNBJTJGJTJGd3d3LmFwcGxlLmNvbSUyRmlvcyUy
RiZwZXYyPXAlNDBwcm9tb19pb3NfNF8yXzIwMTAxMTE2LmpwZyUyMC0lMjBhcHBsZSUyMC0lMjBp
bmRleCZwaWQ9YXBwbGUlMjAtJTIwaW5kZXglMjAodXMpJnBpZHQ9MSZvaWQ9aHR0cCUzQSUyRiUy
Rnd3dy5hcHBsZS5jb20lMkZpb3MlMkYmb3Q9QSZBUUU9MSkKPj4+IE1BSU4gRE9DVU1FTlQgRVJS
T1IgKGh0dHA6Ly93d3cuYXBwbGUuY29tLykKPj4+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiBXQVMg
Q0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6Ly93d3cuYXBwbGUuY29tLykKCgo9
PT0+Pj4gKGh0dHA6Ly9tZXRyaWNzLmFwcGxlLmNvbS9iL3NzL2FwcGxlZ2xvYmFsLGFwcGxlc3Rv
cmV3dyxhcHBsZXN0b3JldXMsYXBwbGVzdG9yZXVzY29uc3VtLzEvSC4yMC4zL3MzNTMwMzUwMjg1
MTE2NT9BUUI9MSZuZGg9MSZ0PTMvMTEvMjAxMCUyMDklM0EzMCUzQTExJTIwNSUyMDQ4MCZjZT1V
VEYtOCZwYWdlTmFtZT1BT1MlM0ElMjBob21lJTIwLSUyMEZpcnN0Jmc9aHR0cCUzQS8vc3RvcmUu
YXBwbGUuY29tL3VzJmNjPVVTRCZzPTE5MjB4MTIwMCZjPTI0Jmo9MS42JnY9WSZrPVkmYnc9MTQ3
OCZiaD0xMTAyJnBlPWxua19lJnBldjE9aHR0cCUzQS8vd3d3LmFwcGxlLmNvbS9tYWMmcGlkPUFP
UyUzQSUyMGhvbWUlMjAtJTIwRmlyc3QmcGlkdD0xJm9pZD1odHRwJTNBLy93d3cuYXBwbGUuY29t
L21hYyZvdD1BJkFRRT0xKQo+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiAoaHR0cDovL3N0b3JlLmFw
cGxlLmNvbS91cykKPj4+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiBXQVMgQ0FOQ0VMTEFUSU9OIFdJ
VEggSU1BR0UgTE9BRFMgKGh0dHA6Ly9zdG9yZS5hcHBsZS5jb20vdXMpCgoKPT09Pj4+IChodHRw
Oi8vbWV0cmljcy5hcHBsZS5jb20vYi9zcy9hcHBsZWdsb2JhbCxhcHBsZXN0b3Jld3csYXBwbGVz
dG9yZXVzLGFwcGxlc3RvcmV1c2NvbnN1bS8xL0guMjAuMy9zMzc1MTM1NzYyMTA0Nz9BUUI9MSZu
ZGg9MSZ0PTMvMTEvMjAxMCUyMDklM0EzMCUzQTM3JTIwNSUyMDQ4MCZjZT1VVEYtOCZwYWdlTmFt
ZT1BT1MlM0ElMjBob21lL3Nob3BfaXBob25lL2ZhbWlseS9pcGhvbmUmZz1odHRwJTNBLy9zdG9y
ZS5hcHBsZS5jb20vdXMvYnJvd3NlL2hvbWUvc2hvcF9pcGhvbmUvZmFtaWx5L2lwaG9uZSUzRm1j
byUzRE9UWTJPREEyT1EmY2M9VVNEJnM9MTkyMHgxMjAwJmM9MjQmaj0xLjYmdj1ZJms9WSZidz0x
NDc4JmJoPTExMDImcGU9bG5rX2UmcGV2MT1odHRwJTNBLy93d3cuYXBwbGUuY29tL2l0dW5lcyZw
aWQ9QU9TJTNBJTIwaG9tZS9zaG9wX2lwaG9uZS9mYW1pbHkvaXBob25lJnBpZHQ9MSZvaWQ9aHR0
cCUzQS8vd3d3LmFwcGxlLmNvbS9pdHVuZXMmb3Q9QSZBUUU9MSkKPj4+IE1BSU4gRE9DVU1FTlQg
RVJST1IgKGh0dHA6Ly9zdG9yZS5hcHBsZS5jb20vdXMvYnJvd3NlL2hvbWUvc2hvcF9pcGhvbmUv
ZmFtaWx5L2lwaG9uZT9tY289T1RZMk9EQTJPUSkKPj4+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiBX
QVMgQ0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6Ly9zdG9yZS5hcHBsZS5jb20v
dXMvYnJvd3NlL2hvbWUvc2hvcF9pcGhvbmUvZmFtaWx5L2lwaG9uZT9tY289T1RZMk9EQTJPUSkK
Cgo9PT0+Pj4gKGh0dHA6Ly93d3cuaW1kYi5jb20vcmcvbm93cGxheWluZy9uYXZiYXIvaW1hZ2Vz
L2IuZ2lmP2xpbms9JTJGbm93cGxheWluZyUyRikKPj4+IE1BSU4gRE9DVU1FTlQgRVJST1IgKGh0
dHA6Ly93d3cuaW1kYi5jb20vZmVhdHVyZXMvaG9saWRheW1vdmllZ3VpZGUvMjAxMC9tb3ZpZXMv
YmxhY2tzd2FuKQo+Pj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIFdBUyBDQU5DRUxMQVRJT04gV0lU
SCBJTUFHRSBMT0FEUyAoaHR0cDovL3d3dy5pbWRiLmNvbS9mZWF0dXJlcy9ob2xpZGF5bW92aWVn
dWlkZS8yMDEwL21vdmllcy9ibGFja3N3YW4pCgoKPT09Pj4+IChodHRwOi8vZGlzcXVzLmNvbS9m
b3J1bXMvdGltZXIuaHRtbD9ub25jZT0tJTNBMjAxMC0xMi0wM1QxMiUzQTMzJTNBMTguMDg4MjE2
JnRocmVhZF9pZD11bmRlZmluZWQmZm9ydW1faWQ9dW5kZWZpbmVkKQo9PT0+Pj4gKGh0dHA6Ly9w
aW5nLmNoYXJ0YmVhdC5uZXQvcGluZz9oPXRlY2hjcnVuY2guY29tJnA9JTJGdGFnJTJGYXBwbGUl
MkYmdT1kemJzcHR2Y3VlYWtneWw3JmQ9dGVjaGNydW5jaC5jb20mZz0yOTA1Jm49MCZjPTAmeD0w
Jnk9ODkxOSZ3PTExMDImaj00NSZSPTAmVz0wJkk9MSZ2PWh0dHAlM0ElMkYlMkZ0ZWNoY3J1bmNo
LmNvbSUyRjIwMTAlMkYxMiUyRjAzJTJGc3VydmV5LXNheXMtNjMtb2YteW91LWlnbm9yZS10aGUt
YWRzLW9uLXRoaXMtdmVyeS1wYWdlJTJGJmI9MTA1MTImdD1nNnNiemtnaWk1Z3dmOWZ6Jmk9QXBw
bGUmXykKPj4+IE1BSU4gRE9DVU1FTlQgRVJST1IgKGh0dHA6Ly90ZWNoY3J1bmNoLmNvbS90YWcv
YXBwbGUvKQo+Pj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIFdBUyBDQU5DRUxMQVRJT04gV0lUSCBJ
TUFHRSBMT0FEUyAoaHR0cDovL3RlY2hjcnVuY2guY29tL3RhZy9hcHBsZS8pCgoKPT09Pj4+ICho
dHRwOi8vd3d3Lmdvb2dsZS5jb20vZ2VuXzIwND9hdHlwPWkmY3Q9MSZjYWQ9MSZzcWk9MiZlaT1w
U3I1VE1iUE1vMjJzQVBpaGZ6ZEFRJnE9Jnp4PTEyOTEzOTc4MDAyODcpCj4+PiBNQUlOIERPQ1VN
RU5UIEVSUk9SIChodHRwOi8vd3d3Lmdvb2dsZS5jb20vd2ViaHA/aGw9ZW4pCj4+Pj4+IE1BSU4g
RE9DVU1FTlQgRVJST1IgV0FTIENBTkNFTExBVElPTiBXSVRIIElNQUdFIExPQURTIChodHRwOi8v
d3d3Lmdvb2dsZS5jb20vd2ViaHA/aGw9ZW4pCgo9PT0+Pj4gKGh0dHA6Ly93d3cuZ29vZ2xlLmNv
bS9nZW5fMjA0P2F0eXA9aSZjdD0xJmNhZD0xJnNxaT0yJmVpPXJTcjVUTFdRR0l5V3BRU2UzTDNv
QkEmcT0meng9MTI5MTM5NzgwNjcwMCkKPj4+IE1BSU4gRE9DVU1FTlQgRVJST1IgKGh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS93ZWJocD9obD1lbikKPj4+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiBXQVMg
Q0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS93ZWJo
cD9obD1lbikKCgo9PT0+Pj4gKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvbG9nb19zbS5n
aWYpCj09PT4+PiAoaHR0cDovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9tb2R1bGVzL2J1dHRvbnMv
Zy1idXR0b24tY2hvY29iby0xLmdpZikKPT09Pj4+IChodHRwOi8vd3d3Lmdvb2dsZS5jb20vaW1h
Z2VzL21vZHVsZXMvYnV0dG9ucy9nLWJ1dHRvbi1jaG9jb2JvLTIuZ2lmKQo9PT0+Pj4gKGh0dHA6
Ly93d3cuZ29vZ2xlLmNvbS9pbnRsL2VuL2Fkcy9pbWFnZXMvYWRzZW5zZV9pbWcuZ2lmKQo9PT0+
Pj4gKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9pbnRsL2VuL2Fkcy9pbWFnZXMvYWR3b3Jkc19pbWcu
Z2lmKQo9PT0+Pj4gKGh0dHA6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vX191dG0uZ2lmP3V0
bXd2PTQuOC42JnV0bW49MTI0ODEwMDQzJnV0bWhuPXd3dy5nb29nbGUuY29tJnV0bWNzPVVURi04
JnV0bXNyPTE5MjB4MTIwMCZ1dG1zYz0yNC1iaXQmdXRtdWw9ZW4tdXMmdXRtamU9MSZ1dG1mbD0t
JnV0bWR0PVdlbGNvbWUlMjB0byUyMEdvb2dsZSUyMEFkdmVydGlzaW5nJTIwUHJvZ3JhbXMmdXRt
aGlkPTE0MDUxMjk0OTYmdXRtcj1odHRwJTNBJTJGJTJGd3d3Lmdvb2dsZS5jb20lMkZpbWdocCUz
RmhsJTNEZW4lMjZ0YWIlM0R3aSZ1dG1wPSUyRjQxMDkxNTYzOTUlMkZ0ZXN0JnV0bWFjPVVBLTEy
Nzg1MzkxLTEmdXRtY2M9X191dG1hJTNEMTczMjcyMzczLjE4ODE1MTE1NTkuMTI5MTM5NzgxMi4x
MjkxMzk3ODEyLjEyOTEzOTc4MTIuMSUzQiUyQl9fdXRteiUzRDE3MzI3MjM3My4xMjkxMzk3ODEy
LjEuMS51dG1jc3IlM0Rnb29nbGUuY29tJTdDdXRtY2NuJTNEKHJlZmVycmFsKSU3Q3V0bWNtZCUz
RHJlZmVycmFsJTdDdXRtY2N0JTNEJTJGaW1naHAlM0IlMkJfX3V0bXglM0QxNzMyNzIzNzMuMDAw
MTI0MTQwMzQxMDkxNTYzOTUlM0EyJTNBMSUzQiZ1dG11PV9LKQo9PT0+Pj4gKGh0dHA6Ly93d3cu
Z29vZ2xlLmNvbS91cmw/c2E9VCZzb3VyY2U9d2ViJmNkPTEmdmVkPTBDQ0lRRmpBQSZ1cmw9aHR0
cCUzQSUyRiUyRnd3dy5wY21hZy5jb20lMkZ0b3Atd2ViLXNpdGVzLTIwMTAlMkYmZWk9d1NyNVRO
NmpNb1gwdGdQVzZPeVVBdykKPj4+IE1BSU4gRE9DVU1FTlQgRVJST1IgKGh0dHA6Ly93d3cuZ29v
Z2xlLmNvbS9zZWFyY2g/Y2xpZW50PXNhZmFyaSZybHM9ZW4mcT10b3Ard2Vic2l0ZXMmaWU9VVRG
LTgmb2U9VVRGLTgpCj4+Pj4+IE1BSU4gRE9DVU1FTlQgRVJST1IgV0FTIENBTkNFTExBVElPTiBX
SVRIIElNQUdFIExPQURTIChodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP2NsaWVudD1zYWZh
cmkmcmxzPWVuJnE9dG9wK3dlYnNpdGVzJmllPVVURi04Jm9lPVVURi04KQoKCj09PT4+PiAoaHR0
cDovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9mb3VuZGF0aW9uLzAvMDAvTGlsYUFw
cGVhbC1oZWFkc2hvdC5qcGcpCj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIChodHRwOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpBYm91dCkKPj4+Pj4gTUFJTiBET0NVTUVOVCBFUlJP
UiBXQVMgQ0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvV2lraXBlZGlhOkFib3V0KQoKCj09PT4+PiAoaHR0cDovL3d3dy5iaW5nLmNvbS9m
ZC9scy9HTGlua1BpbmcuYXNweD9JRz05ZTJlMzVhYWU2MDA0NWQxODFjMmVmNTMxNzZjNjk3NyZD
SUQ9MzkzMTMyMEU5OTE4NDM0NUFDQzg1QzMwQTFFMjRFRUMmUE09WSZJRD1TRVJQLDMxLjEpCj4+
PiBNQUlOIERPQ1VNRU5UIEVSUk9SIChodHRwOi8vd3d3LmJpbmcuY29tLykKPj4+Pj4gTUFJTiBE
T0NVTUVOVCBFUlJPUiBXQVMgQ0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6Ly93
d3cuYmluZy5jb20vKQoKCj09PT4+PiAoaHR0cDovL3d3dy5iaW5nLmNvbS9mZC9scy9HTGlua1Bp
bmcuYXNweD9JRz1kMWE1NDZjMzk2Mzc0NjExOWEyZTZjNmU3MjBiMjUwYyZJRD1TRVJQLDMxLjEp
Cj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIChodHRwOi8vd3d3LmJpbmcuY29tLykKPj4+Pj4gTUFJ
TiBET0NVTUVOVCBFUlJPUiBXQVMgQ0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6
Ly93d3cuYmluZy5jb20vKQoKCj09PT4+PiAoaHR0cDovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNv
bS9fX3V0bS5naWY/dXRtd3Y9NC44LjYmdXRtbj0xNDc0MzU5NTA1JnV0bWhuPXR3aXR0ZXIuY29t
JnV0bWU9OCgyIXJlc3VsdF90eXBlKTkoMiFyZWNlbnQpJnV0bWNzPVVURi04JnV0bXNyPTE5MjB4
MTIwMCZ1dG1zYz0yNC1iaXQmdXRtdWw9ZW4tdXMmdXRtamU9MSZ1dG1mbD0tJnV0bWR0PWFzZGYl
MjAtJTIwVHdpdHRlciUyMFNlYXJjaCZ1dG1oaWQ9MTYxNDE3NjA1MCZ1dG1yPS0mdXRtcD0lMkZl
eGl0JTJGdG8lMkZ3ZWxvb2tpbmZvcnlvdSZ1dG1hYz1VQS0zMDc3NS02JnV0bWNjPV9fdXRtYSUz
RDQzODM4MzY4LjY2NTU1MTA1Mi4xMjY4ODc3MjUzLjEyOTAxMDY1ODUuMTI5MTM5Nzk5OC41NiUz
QiUyQl9fdXRteiUzRDQzODM4MzY4LjEyOTAxMDY1ODUuNTUuMTcudXRtY3NyJTNEd2luZG93c3Rl
YW1ibG9nLmNvbSU3Q3V0bWNjbiUzRChyZWZlcnJhbCklN0N1dG1jbWQlM0RyZWZlcnJhbCU3Q3V0
bWNjdCUzRCUyRmllJTJGYiUyRmllJTJGYXJjaGl2ZSUyRjIwMTAlMkYxMSUyRjE3JTJGbWVldC10
aGUtY2hha3JhLXRlYW0tbGl2ZS1vbi10d2l0dGVyLmFzcHglM0IlMkJfX3V0bXYlM0Q0MzgzODM2
OC5sYW5nJTI1M0ElMjUyMGVuJTNCJnV0bXU9SFJBUSkKPj4+IE1BSU4gRE9DVU1FTlQgRVJST1Ig
KGh0dHA6Ly90d2l0dGVyLmNvbS8jc2VhcmNoP3E9YXNkZikKPj4+Pj4gTUFJTiBET0NVTUVOVCBF
UlJPUiBXQVMgQ0FOQ0VMTEFUSU9OIFdJVEggSU1BR0UgTE9BRFMgKGh0dHA6Ly90d2l0dGVyLmNv
bS8jc2VhcmNoP3E9YXNkZikKCgo9PT0+Pj4gKGh0dHA6Ly9hMS50d2ltZy5jb20vcHJvZmlsZV9p
bWFnZXMvMTIyMDg5Njg5L2xvZ29zcWxhcmdlX25vcm1hbC5naWYpCj09PT4+PiAoaHR0cDovL2Ew
LnR3aW1nLmNvbS9wcm9maWxlX2ltYWdlcy8yMjU0MjgwMDAvZHJ3ZWlsX2hlYWRzaG90X25vcm1h
bC5naWYpCj09PT4+PiAoaHR0cDovL2EzLnR3aW1nLmNvbS9wcm9maWxlX2ltYWdlcy83NTA3ODc2
Ny9BUl83M3g3M19ub3JtYWwuanBnKQo+Pj4gTUFJTiBET0NVTUVOVCBFUlJPUiAoaHR0cDovL3R3
aXR0ZXIuY29tLyNzZWFyY2g/cT1hc2RmKQo+Pj4+PiBNQUlOIERPQ1VNRU5UIEVSUk9SIFdBUyBD
QU5DRUxMQVRJT04gV0lUSCBJTUFHRSBMT0FEUyAoaHR0cDovL3R3aXR0ZXIuY29tLyNzZWFyY2g/
cT1hc2RmKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75599</attachid>
            <date>2010-12-03 21:58:24 -0800</date>
            <delta_ts>2011-02-01 17:41:44 -0800</delta_ts>
            <desc>[PATCH] Addressed Some Comments</desc>
            <filename>take2.patch</filename>
            <type>text/plain</type>
            <size>17031</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGMwN2QwN2ZlYmZjMjYxYTNjOGU1Yzc5ZTE1YmUzZDE0ZjNhNTJmODYKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPGpvZXBlY2tAd2Via2l0Lm9yZz4KRGF0ZTogICBGcmkgTm92IDE5IDE2
OjE0OjAwIDIwMTAgLTA4MDAKCiAgICAyMDEwLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxqb2Vw
ZWNrQHdlYmtpdC5vcmc+CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCiAgICAKICAgICAgICAgICAgSW1hZ2UgU3VicmVzb3VyY2UgTG9hZHMgU2hvdWxkIE5vdCBQ
cmV2ZW50IFBhZ2UgQ2FjaGUgRW50cnkKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ5ODM4CiAgICAKICAgICAgICAgICAgUHJldmlvdXNseSB3aGVu
IGNvbW1pdHRpbmcgdG8gYSBuYXZpZ2F0aW9uIGZyb20gcGFnZSBBIHRvIHBhZ2UgQiBpZiBwYWdl
IEEKICAgICAgICAgICAgaGFkIGFueSBzdWJyZXNvdXJjZSBsb2FkZXJzIGl0cyBtYWluIGRvY3Vt
ZW50IHdvdWxkIGJlIG1hcmtlZCBhcyBjYW5jZWxsZWQKICAgICAgICAgICAgYW5kIGl0IHdvdWxk
IG5vdCBiZSBhZGRlZCB0byB0aGUgUGFnZUNhY2hlLiBUaGlzIGNoYW5nZSBhbGxvd3MgcGFnZSBB
IHRvCiAgICAgICAgICAgIGVudGVyIHRoZSBQYWdlQ2FjaGUgaWYgdGhlIHN1YnJlc291cmNlIGxv
YWRlcnMgYXQgdGhlIHRpbWUgb2YgbmF2aWdhdGlvbgogICAgICAgICAgICB3ZXJlIGp1c3QgbG9h
ZGluZyBpbWFnZXMuCiAgICAKICAgICAgICAgICAgQSBjb21tb24gc2NlbmFyaW8gdGhpcyBpbXBy
b3ZlcyBpcyBjbGlja2luZyBvbiBhbiBpbWFnZSBsaW5rLCBzdWNoIGFzIGEKICAgICAgICAgICAg
InRhYiIgaW4gYSBuYXZpZ2F0aW9uIG1lbnUsIHRyaWdnZXJzIGEgbmV3IGltYWdlIHRvIGxvYWQg
cmlnaHQgYmVmb3JlIHRoZQogICAgICAgICAgICBuYXZpZ2F0aW9uLiBBbHNvIHBhZ2VzIHdpdGgg
c2l0ZSBtZXRyaWNzIHRoYXQgYXR0ZW1wdCB0byBsb2FkIGFuIGltYWdlCiAgICAgICAgICAgIGJh
c2VkIG9uIHdoYXQgbGlua3MgeW91IGNsaWNrZWQgb24gdGhlIHBhZ2UuCiAgICAKICAgICAgICAg
ICAgTWFudWFsIFRlc3Q6IG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL21haW4tZG9jdW1lbnQtZXJy
b3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy5odG1sCiAgICAKICAgICAgICAgICAgKiBoaXN0
b3J5L1BhZ2VDYWNoZS5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1l
RGVjaXNpb24pOiB1cGRhdGUgbG9nZ2luZyB0byBleHBsYWluIHdoeSBhICJtYWluIGRvY3VtZW50
IHdpdGggZXJyb3JzIiBtYXkgc3RpbGwgYmUgY2FjaGVkLgogICAgICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKTogYWxsb3cgYSAibWFp
biBkb2N1bWVudCB3aXRoIGVycm9ycyIgdG8gYmUgY2FjaGVkIHVuZGVyIHRoZSBjaXJjdW1zdGFu
Y2VzIG1lbnRpb25lZCBhYm92ZS4KICAgICAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6YXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFi
bGUpOiByZXR1cm5zIHRydWUgb25seSBpZiBhbGwgbG9hZGVycyBhcmUgcGFnZSBjYWNoZSBhY2Nl
cHRhYmxlLiBDdXJyZW50bHkgaWYgYWxsIGFyZSBsb2FkaW5nIGltYWdlcy4KICAgICAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcpOiB3aGVuIHRoZSBwYWdlIGlzIGNv
bXBsZXRlIGFuZCB0aGVyZSB3ZXJlIHN1YnJlc291cmNlIGxvYWRlcnMsIGF1ZGl0IHRoZSBsb2Fk
ZXJzIGZvciBwYWdlIGNhY2hhYmlsaXR5LgogICAgICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExv
YWRlci5oOgogICAgICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNl
TG9hZGVyc0FyZVBhZ2VDYWNoZUFjY2VwdGFibGUpOgogICAgICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CiAgICAgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6IGZvbGRlZCBz
ZXRNYWluRG9jdW1lbnRFcnJvciBpbXBsZW1lbnRhdGlvbiBpbnRvIERvY3VtZW50TG9hZGVyJ3Mu
CiAgICAgICAgICAgICogbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvbWFpbi1kb2N1bWVudC1lcnJv
ci1zdWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5nLmh0bWw6IEFkZGVkLgogICAgICAgICAgICAqIG1h
bnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9ibGFjay5wbmc6IEFkZGVkLgogICAgICAg
ICAgICAqIG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9tYWluLWRvY3VtZW50LWVy
cm9yLXN1YnJlc291cmNlLWltYWdlLWxvYWRpbmctbmV4dC5odG1sOiBBZGRlZC4KICAgICAgICAg
ICAgKiBtYW51YWwtdGVzdHMvcGFnZS1jYWNoZS9yZXNvdXJjZXMvcmVkLnBuZzogQWRkZWQuCgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGIyYjk5Li40YTcyZmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEwLTEyLTAzICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1hZ2UgU3VicmVzb3VyY2UgTG9hZHMgU2hvdWxkIE5vdCBQcmV2
ZW50IFBhZ2UgQ2FjaGUgRW50cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ5ODM4CisKKyAgICAgICAgUHJldmlvdXNseSB3aGVuIGNvbW1pdHRpbmcg
dG8gYSBuYXZpZ2F0aW9uIGZyb20gcGFnZSBBIHRvIHBhZ2UgQiBpZiBwYWdlIEEKKyAgICAgICAg
aGFkIGFueSBzdWJyZXNvdXJjZSBsb2FkZXJzIGl0cyBtYWluIGRvY3VtZW50IHdvdWxkIGJlIG1h
cmtlZCBhcyBjYW5jZWxsZWQKKyAgICAgICAgYW5kIGl0IHdvdWxkIG5vdCBiZSBhZGRlZCB0byB0
aGUgUGFnZUNhY2hlLiBUaGlzIGNoYW5nZSBhbGxvd3MgcGFnZSBBIHRvCisgICAgICAgIGVudGVy
IHRoZSBQYWdlQ2FjaGUgaWYgdGhlIHN1YnJlc291cmNlIGxvYWRlcnMgYXQgdGhlIHRpbWUgb2Yg
bmF2aWdhdGlvbgorICAgICAgICB3ZXJlIGp1c3QgbG9hZGluZyBpbWFnZXMuCisKKyAgICAgICAg
QSBjb21tb24gc2NlbmFyaW8gdGhpcyBpbXByb3ZlcyBpcyBjbGlja2luZyBvbiBhbiBpbWFnZSBs
aW5rLCBzdWNoIGFzIGEKKyAgICAgICAgInRhYiIgaW4gYSBuYXZpZ2F0aW9uIG1lbnUsIHRyaWdn
ZXJzIGEgbmV3IGltYWdlIHRvIGxvYWQgcmlnaHQgYmVmb3JlIHRoZQorICAgICAgICBuYXZpZ2F0
aW9uLiBBbHNvIHBhZ2VzIHdpdGggc2l0ZSBtZXRyaWNzIHRoYXQgYXR0ZW1wdCB0byBsb2FkIGFu
IGltYWdlCisgICAgICAgIGJhc2VkIG9uIHdoYXQgbGlua3MgeW91IGNsaWNrZWQgb24gdGhlIHBh
Z2UuCisKKyAgICAgICAgTWFudWFsIFRlc3Q6IG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL21haW4t
ZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy5odG1sCisKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZy
YW1lRGVjaXNpb24pOiB1cGRhdGUgbG9nZ2luZyB0byBleHBsYWluIHdoeSBhICJtYWluIGRvY3Vt
ZW50IHdpdGggZXJyb3JzIiBtYXkgc3RpbGwgYmUgY2FjaGVkLgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKTogYWxsb3cgYSAibWFp
biBkb2N1bWVudCB3aXRoIGVycm9ycyIgdG8gYmUgY2FjaGVkIHVuZGVyIHRoZSBjaXJjdW1zdGFu
Y2VzIG1lbnRpb25lZCBhYm92ZS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFibGUpOiBy
ZXR1cm5zIHRydWUgb25seSBpZiBhbGwgbG9hZGVycyBhcmUgcGFnZSBjYWNoZSBhY2NlcHRhYmxl
LiBDdXJyZW50bHkgaWYgYWxsIGFyZSBsb2FkaW5nIGltYWdlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c3RvcExvYWRpbmcpOiB3aGVuIHRoZSBwYWdlIGlzIGNvbXBsZXRlIGFuZCB0
aGVyZSB3ZXJlIHN1YnJlc291cmNlIGxvYWRlcnMsIGF1ZGl0IHRoZSBsb2FkZXJzIGZvciBwYWdl
IGNhY2hhYmlsaXR5LgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlTG9hZGVyc0FyZVBhZ2VDYWNo
ZUFjY2VwdGFibGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6IGZvbGRlZCBzZXRNYWluRG9jdW1lbnRFcnJvciBpbXBs
ZW1lbnRhdGlvbiBpbnRvIERvY3VtZW50TG9hZGVyJ3MuCisgICAgICAgICogbWFudWFsLXRlc3Rz
L3BhZ2UtY2FjaGUvbWFpbi1kb2N1bWVudC1lcnJvci1zdWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNl
cy9ibGFjay5wbmc6IEFkZGVkLgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jl
c291cmNlcy9tYWluLWRvY3VtZW50LWVycm9yLXN1YnJlc291cmNlLWltYWdlLWxvYWRpbmctbmV4
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYW51YWwtdGVzdHMvcGFnZS1jYWNoZS9yZXNvdXJj
ZXMvcmVkLnBuZzogQWRkZWQuCisKIDIwMTAtMTItMDIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcAppbmRleCA3Mzc1YTljLi43YjBlOTllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAorKysgYi9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtMTA1
LDcgKzEwNSwxMCBAQCBzdGF0aWMgYm9vbCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUq
IGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkp
IHsKICAgICAgICAgICAgIFBDTE9HKCIgICAtTWFpbiBkb2N1bWVudCBoYXMgYW4gZXJyb3IiKTsK
LSAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVudEVycm9yKCkuaXNDYW5jZWxs
YXRpb24oKSAmJiBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnJlc291cmNl
TG9hZGVyc0FyZVBhZ2VDYWNoZUFjY2VwdGFibGUoKSkKKyAgICAgICAgICAgICAgICBQQ0xPRygi
ICAgIC1CVVQgaXQgd2FzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgbG9hZGVycyBkdXJpbmcgdGhl
IGNhbmNlbCB3ZXJlIHBhZ2UgY2FjaGUgYWNjZXB0YWJsZSAobG9hZGluZyBpbWFnZXMpLiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5j
b250YWluc1BsdWdpbnMoKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBjb250YWlu
cyBwbHVnaW5zIik7CkBAIC0yNDksOSArMjUyLDExIEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNo
ZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgaWYgKCFjYW5D
YWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKGNoaWxkKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKQotICAgICAgICAmJiBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1h
aW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkKKworICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKKworICAgIHJldHVy
biBkb2N1bWVudExvYWRlcgorICAgICAgICAmJiAoZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVu
dEVycm9yKCkuaXNOdWxsKCkgfHwgKGRvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigp
LmlzQ2FuY2VsbGF0aW9uKCkgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnJlc291cmNlTG9hZGVyc0Fy
ZVBhZ2VDYWNoZUFjY2VwdGFibGUoKSkpCiAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGNo
YW5nZSB0aGlzIHNvIHRoYXQgZnJhbWVzIHdpdGggcGx1Zy1pbnMgd2lsbCBiZSBjYWNoZWQsCiAg
ICAgICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgZnJhbWVz
IHRoYXQgaGF2ZSBvdXRzdGFuZGluZyBOUE9iamVjdHMKICAgICAgICAgLy8gKG9iamVjdHMgY3Jl
YXRlZCBieSB0aGUgcGx1Zy1pbikuIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBwYXVzZS9yZXN1
bWUgYSBOZXRzY2FwZSBwbHVnLWluLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDJm
MjEwNjYuLjgyYjc5YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBcmNoaXZlRmFjdG9yeS5oIgog
I2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJDYWNoZWRQ
YWdlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCkBAIC00NSw4ICs0NiwxMCBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCkBAIC03NCw2ICs3NywyOSBAQCBzdGF0aWMg
dm9pZCBzZXRBbGxEZWZlcnNMb2FkaW5nKGNvbnN0IFJlc291cmNlTG9hZGVyU2V0JiBsb2FkZXJz
LCBib29sIGRlZmVycykKICAgICAgICAgbG9hZGVyc0NvcHlbaV0tPnNldERlZmVyc0xvYWRpbmco
ZGVmZXJzKTsKIH0KIAorc3RhdGljIGJvb2wgYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFi
bGUoY29uc3QgUmVzb3VyY2VMb2FkZXJTZXQmIGxvYWRlcnMpCit7CisgICAgVmVjdG9yPFJlZlB0
cjxSZXNvdXJjZUxvYWRlcj4gPiBsb2FkZXJzQ29weTsKKyAgICBjb3B5VG9WZWN0b3IobG9hZGVy
cywgbG9hZGVyc0NvcHkpOworICAgIHNpemVfdCBzaXplID0gbG9hZGVyc0NvcHkuc2l6ZSgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUgPSBsb2FkZXJzQ29weVtpXS0+aGFuZGxlKCk7CisgICAgICAgIGlmICgh
aGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGNhY2hlKCktPnJlc291cmNlRm9yVVJMKGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOworICAgICAgICBBU1NFUlQoY2FjaGVkUmVzb3Vy
Y2UpOworICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIC8vIEFsbCBub24taW1hZ2UgbG9hZHMgd2lsbCBwcmV2ZW50IHRoZSBw
YWdlIGZyb20gZW50ZXJpbmcgdGhlIFBhZ2VDYWNoZS4KKyAgICAgICAgaWYgKCFjYWNoZWRSZXNv
dXJjZS0+aXNJbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCiBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0
YSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV9mcmFt
ZSgwKQpAQCAtOTEsNiArMTE3LDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYKICAgICAsIG1f
c3RvcFJlY29yZGluZ1Jlc3BvbnNlcyhmYWxzZSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lcih0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURl
bGl2ZXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KGZh
bHNlKQorICAgICwgbV9zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKGZh
bHNlKQogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgLCBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0KGFkb3B0UHRyKG5ldyBBcHBsaWNhdGlvbkNhY2hlSG9zdCh0aGlzKSkp
CiAjZW5kaWYKQEAgLTE3Nyw3ICsyMDQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxKQogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgbV9t
YWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKLSAgICBmcmFtZUxvYWRlcigpLT5zZXRNYWlu
RG9jdW1lbnRFcnJvcih0aGlzLCBlcnJvcik7CisgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkt
PnNldE1haW5Eb2N1bWVudEVycm9yKHRoaXMsIGVycm9yKTsKICB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNsZWFyRXJyb3JzKCkKQEAgLTIwMCw3ICsyMjcsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgYm9vbCBp
c0NvbXBsZQogICAgICAgICBmcmFtZUxvYWRlcigpLT5tYWluUmVjZWl2ZWRDb21wbGV0ZUVycm9y
KHRoaXMsIGVycm9yKTsKIH0KIAotLy8gQ2FuY2VscyB0aGUgZGF0YSBzb3VyY2UncyBwZW5kaW5n
IGxvYWRzLiAgQ29uY2VwdHVhbGx5LCBhIGRhdGEgc291cmNlIG9ubHkgbG9hZHMKKy8vIENhbmNl
bHMgdGhlIGRhdGEgc291cmNlJ3MgcGVuZGluZyBsb2Fkcy4gQ29uY2VwdHVhbGx5LCBhIGRhdGEg
c291cmNlIG9ubHkgbG9hZHMKIC8vIG9uZSBkb2N1bWVudCBhdCBhIHRpbWUsIGJ1dCBvbmUgZG9j
dW1lbnQgbWF5IGhhdmUgbWFueSByZWxhdGVkIHJlc291cmNlcy4gCiAvLyBzdG9wTG9hZGluZyB3
aWxsIHN0b3AgYWxsIGxvYWRzIGluaXRpYXRlZCBieSB0aGUgZGF0YSBzb3VyY2UsIAogLy8gYnV0
IG5vdCBsb2FkcyBpbml0aWF0ZWQgYnkgY2hpbGQgZnJhbWVzJyBkYXRhIHNvdXJjZXMgLS0gdGhh
dCdzIHRoZSBXZWJGcmFtZSdzIGpvYi4KQEAgLTIxMCw3ICsyMzcsMTQgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RvcExvYWRpbmcoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kpCiAgICAg
Ly8gKFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZXJlJ3MgYSBzaW5nbGUgWE1MSHR0cFJlcXVlc3Qg
Y3VycmVudGx5IGxvYWRpbmcgYW5kIHN0b3BMb2FkaW5nIGNhdXNlcyBpdAogICAgIC8vIHRvIHN0
b3AgbG9hZGluZy4gQmVjYXVzZSBvZiB0aGlzLCB3ZSBuZWVkIHRvIHNhdmUgaXQgc28gd2UgZG9u
J3QgcmV0dXJuIGVhcmx5LgogICAgIGJvb2wgbG9hZGluZyA9IG1fbG9hZGluZzsKLSAgICAKKwor
ICAgIC8vIFdlIG1heSB3YW50IHRvIGF1ZGl0IHRoZSBleGlzdGluZyBzdWJyZXNvdXJjZSBsb2Fk
ZXJzIHdoZW4gd2UgYXJlIG9uIGEgcGFnZSB3aGljaCBoYXMgY29tcGxldGVkCisgICAgLy8gbG9h
ZGluZyBidXQgdGhlcmUgYXJlIHN1YnJlc291cmNlIGxvYWRzIGR1cmluZyBjYW5jZWxsYXRpb24u
IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUKKyAgICAvLyBmcmFtZS0+c3RvcExvYWRpbmco
KSBjYWxsLCB3aGljaCBtYXkgZXZpY3QgdGhlIENhY2hlZFJlc291cmNlcywgd2hpY2ggd2UgcmVs
eSBvbiB0byBjaGVjaworICAgIC8vIHRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZSBsb2Fkcy4KKyAg
ICBpZiAobG9hZGluZyAmJiBtX2NvbW1pdHRlZCAmJiAhbV9tYWluUmVzb3VyY2VMb2FkZXIgJiYg
IW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxv
YWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlID0gYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2Vw
dGFibGUobV9zdWJyZXNvdXJjZUxvYWRlcnMpOworCiAgICAgaWYgKG1fY29tbWl0dGVkKSB7CiAg
ICAgICAgIC8vIEF0dGVtcHQgdG8gc3RvcCB0aGUgZnJhbWUgaWYgdGhlIGRvY3VtZW50IGxvYWRl
ciBpcyBsb2FkaW5nLCBvciBpZiBpdCBpcyBkb25lIGxvYWRpbmcgYnV0CiAgICAgICAgIC8vIHN0
aWxsICBwYXJzaW5nLiBGYWlsdXJlIHRvIGRvIHNvIGNhbiBjYXVzZSBhIHdvcmxkIGxlYWsuCkBA
IC0yMzgsMTcgKzI3MiwxOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyhEYXRh
YmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSkKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
ciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpOwogICAgIAotICAgIGlmIChtX21haW5S
ZXNvdXJjZUxvYWRlcikKKyAgICBpZiAobV9tYWluUmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAg
Ly8gU3RvcCB0aGUgbWFpbiByZXNvdXJjZSBsb2FkZXIgYW5kIGxldCBpdCBzZW5kIHRoZSBjYW5j
ZWxsZWQgbWVzc2FnZS4KICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmNhbmNlbCgpOwot
ICAgIGVsc2UgaWYgKCFtX3N1YnJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpCisgICAgfSBlbHNl
IGlmICghbV9zdWJyZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBt
YWluIHJlc291cmNlIGxvYWRlciBhbHJlYWR5IGZpbmlzaGVkIGxvYWRpbmcuIFNldCB0aGUgY2Fu
Y2VsbGVkIGVycm9yIG9uIHRoZSAKICAgICAgICAgLy8gZG9jdW1lbnQgYW5kIGxldCB0aGUgc3Vi
cmVzb3VyY2VMb2FkZXJzIHNlbmQgaW5kaXZpZHVhbCBjYW5jZWxsZWQgbWVzc2FnZXMgYmVsb3cu
CiAgICAgICAgIHNldE1haW5Eb2N1bWVudEVycm9yKGZyYW1lTG9hZGVyLT5jYW5jZWxsZWRFcnJv
cihtX3JlcXVlc3QpKTsKLSAgICBlbHNlCisgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgdGhl
cmUgYXJlIG5vIHJlc291cmNlIGxvYWRlcnMsIHdlIG5lZWQgdG8gbWFudWZhY3R1cmUgYSBjYW5j
ZWxsZWQgbWVzc2FnZS4KICAgICAgICAgLy8gKEEgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gaGFz
IG5vIHJlc291cmNlIGxvYWRlcnMgYmVjYXVzZSBpdHMgcmVzb3VyY2VzIGFyZSBjYWNoZWQuKQog
ICAgICAgICBtYWluUmVjZWl2ZWRFcnJvcihmcmFtZUxvYWRlci0+Y2FuY2VsbGVkRXJyb3IobV9y
ZXF1ZXN0KSwgdHJ1ZSk7CisgICAgfQogICAgIAogICAgIHN0b3BMb2FkaW5nU3VicmVzb3VyY2Vz
KCk7CiAgICAgc3RvcExvYWRpbmdQbHVnSW5zKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRl
eCBlMWY3NWVkLi4yMTc2YjhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTE3NCw3ICsx
NzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBkaWRDcmVhdGVHbG9i
YWxIaXN0b3J5RW50cnkoKSBjb25zdCB7IHJldHVybiBtX2RpZENyZWF0ZUdsb2JhbEhpc3RvcnlF
bnRyeTsgfQogICAgICAgICB2b2lkIHNldERpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeShib29s
IGRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSkgeyBtX2RpZENyZWF0ZUdsb2JhbEhpc3RvcnlF
bnRyeSA9IGRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeTsgfQotICAgICAgICAKKworICAgICAg
ICBib29sIHN1YnJlc291cmNlTG9hZGVyc0FyZVBhZ2VDYWNoZUFjY2VwdGFibGUoKSBjb25zdCB7
IHJldHVybiBtX3N1YnJlc291cmNlTG9hZGVyc0FyZVBhZ2VDYWNoZUFjY2VwdGFibGU7IH0KKwog
ICAgICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICAgICAgYm9vbCBzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKQEAgLTMwOCw2
ICszMTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX2NsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICAgICAgYm9vbCBtX2RpZENyZWF0ZUdsb2JhbEhp
c3RvcnlFbnRyeTsKIAorICAgICAgICBib29sIG1fc3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNh
Y2hlQWNjZXB0YWJsZTsKKwogICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcgbV9kb2N1bWVudExv
YWRUaW1pbmc7CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDM1YTQ5MmIuLjkwYTRlNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTMyNTcsMTEgKzMyNTcsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSXRlbShIaXN0
b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSkKICAgICAgICAgbmF2aWdhdGVU
b0RpZmZlcmVudERvY3VtZW50KGl0ZW0sIGxvYWRUeXBlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
cjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgbV9jbGllbnQtPnNldE1haW5Eb2N1bWVudEVycm9y
KGxvYWRlciwgZXJyb3IpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjptYWluUmVjZWl2ZWRDb21w
bGV0ZUVycm9yKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQog
ewogICAgIGxvYWRlci0+c2V0UHJpbWFyeUxvYWRDb21wbGV0ZSh0cnVlKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IDc2YWQ5NzcuLmRjNmYxMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMTgzLDcg
KzE4Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVwbGFjaW5nKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRSZXBsYWNpbmcoKTsKICAgICB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWwoRG9jdW1lbnRM
b2FkZXIqKTsKLSAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbWFpblJlY2VpdmVkQ29tcGxldGVFcnJv
cihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBib29sIHN1YmZy
YW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRM
b2FkZXIqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvbWFp
bi1kb2N1bWVudC1lcnJvci1zdWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5nLmh0bWwgYi9XZWJDb3Jl
L21hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL21haW4tZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2Ut
aW1hZ2UtbG9hZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4
MjJiYzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9wYWdlLWNhY2hl
L21haW4tZG9jdW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy5odG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzxoMT5QYWdlIE9uZTwvaDE+Cis8cD4KKyAgICBDbGljayB0aGUgaW1hZ2Uu
IEl0IHdpbGwgdHJ5IHRvIGNoYW5nZSBmcm9tIGJsYWNrIHRvIHJlZCwKKyAgICBidXQgd2Ugd2ls
bCBpbW1lZGlhdGVseSBuYXZpZ2F0ZS4gV2hlbiB3ZSBjb21lIGJhY2ssIHRoZQorICAgIGltYWdl
IHNob3VsZCBzdGlsbCBiZSBibGFjay4KKzwvcD4KKzxwPgorICAgIE9uZSB3YXkgdG8gdmVyaWZ5
IGlmIHRoaXMgcGFnZSBlbnRlcmVkIHRoZSBQYWdlQ2FjaGUgaXMgdG8KKyAgICBlbmFibGUgUGFn
ZUNhY2hlIGxvZ2dpbmcuIFRoaXMgY2FuIGJlIGRvbmUgb24gYSBtYWMgbGlrZQorICAgIHNvOiAo
VGhlIG1hZ2ljIHZhbHVlIGlzIGluIFdlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHApCis8L3A+
Cis8cHJlIHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4KKyAgICBzaGVsbD4gZGVmYXVsdHMgd3Jp
dGUgY29tLmFwcGxlLnNhZmFyaSBXZWJDb3JlTG9nTGV2ZWwgMHgwMDAwODAwMAorPC9wcmU+Cis8
cD5DbGljayBtZTo8L3A+Cis8YSBocmVmPSJyZXNvdXJjZXMvbWFpbi1kb2N1bWVudC1lcnJvci1z
dWJyZXNvdXJjZS1pbWFnZS1sb2FkaW5nLW5leHQuaHRtbCI+CisgICAgPGltZyBpZD0ieCIgc3Jj
PSJyZXNvdXJjZXMvYmxhY2sucG5nIiBvbmNsaWNrPSJjaGFuZ2VJbWFnZSgpIj4KKzwvYT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBjaGFuZ2VJbWFnZSgpIHsKKyAgICB2YXIgaW1nID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3gnKTsKKyAgICBpbWcuc3JjID0gJ3Jlc291cmNlcy9yZWQucG5nJzsg
Ly8gVGhpcyB3aWxsIHRyaWdnZXIgYSBzdWJyZXNvdXJjZSBpbWFnZSBsb2FkLgorCisgICAgLy8g
UmV0dXJuaW5nIGZyb20gdGhpcyBoYW5kbGVyIHdpbGwgYWxsb3cgdGhlIG5hdmlnYXRpb24gdG8g
aGFwcGVuLgorICAgIC8vIFRoZSBtYWluIGRvY3VtZW50IHdpbGwgaGF2ZSBhIHN1YnJlc291cmNl
IGxvYWRpbmcsIGFuZCB3aWxsIG1hcmsKKyAgICAvLyBpdHNlbGYgYXMgY2FuY2VsbGVkLiBUaGlz
IHRlc3QgZW5zdXJlcyB3ZSBzdGlsbCBhbGxvdyB0aGUgcGFnZQorICAgIC8vIHRvIGVudGVyIHRo
ZSBwYWdlIGNhY2hlLCBhbmQgdGhlIHVzZXIgd2lsbCByZXR1cm4gdG8gc2VlCisgICAgLy8gdGhl
IGJsYWNrIGltYWdlLgorfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10
ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9ibGFjay5wbmcgYi9XZWJDb3JlL21hbnVhbC10ZXN0
cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9ibGFjay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDdkYzljOApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1dlYkNvcmUv
bWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvcmVzb3VyY2VzL2JsYWNrLnBuZyBkaWZmZXIKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL3BhZ2UtY2FjaGUvcmVzb3VyY2VzL21haW4tZG9j
dW1lbnQtZXJyb3Itc3VicmVzb3VyY2UtaW1hZ2UtbG9hZGluZy1uZXh0Lmh0bWwgYi9XZWJDb3Jl
L21hbnVhbC10ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9tYWluLWRvY3VtZW50LWVycm9yLXN1
YnJlc291cmNlLWltYWdlLWxvYWRpbmctbmV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhhN2ZlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10
ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9tYWluLWRvY3VtZW50LWVycm9yLXN1YnJlc291cmNl
LWltYWdlLWxvYWRpbmctbmV4dC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGgxPlBhZ2UgVHdvPC9o
MT4KKzxwPkNoZWNrIGlmIHRoZSBsYXN0IHBhZ2UgZW50ZXJlZCB0aGUgcGFnZSBjYWNoZS48L3A+
Cis8YSBocmVmPSIuLi9tYWluLWRvY3VtZW50LWVycm9yLXN1YnJlc291cmNlLWltYWdlLWxvYWRp
bmcuaHRtbCI+UHJldmlvdXMgcGFnZS48L2E+CmRpZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10
ZXN0cy9wYWdlLWNhY2hlL3Jlc291cmNlcy9yZWQucG5nIGIvV2ViQ29yZS9tYW51YWwtdGVzdHMv
cGFnZS1jYWNoZS9yZXNvdXJjZXMvcmVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYjcxZTNiCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvV2ViQ29yZS9tYW51
YWwtdGVzdHMvcGFnZS1jYWNoZS9yZXNvdXJjZXMvcmVkLnBuZyBkaWZmZXIK
</data>

          </attachment>
      

    </bug>

</bugzilla>