<?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>42087</bug_id>
          
          <creation_ts>2010-07-12 09:28:43 -0700</creation_ts>
          <short_desc>Don’t handle empty URL attributes specially in reflection, even in cases such as &lt;img src=&quot;&quot;&gt;</short_desc>
          <delta_ts>2011-01-24 07:41:40 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          <dependson>42040</dependson>
          <blocked>51249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ademar</cc>
    
    <cc>ap</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ian</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249879</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 09:28:43 -0700</bug_when>
    <thetext>Treat empty URL content attributes as invalid, as now-specified in HTML5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249880</commentid>
    <comment_count>1</comment_count>
      <attachid>61238</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 09:30:36 -0700</bug_when>
    <thetext>Created attachment 61238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249881</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 09:32:14 -0700</bug_when>
    <thetext>Some things I need to resolve before landing this:

The &lt;form action=&quot;&quot;&gt; change breaks dom/html/level2/html/button03.html and dom/xhtml/level2/html/button03.xhtml.

The &lt;img src=&quot;&quot;&gt; change breaks fast/images/load-img-with-empty-src.html.

The &lt;iframe src=&quot;&quot;&gt; may be the thing that breaks http/tests/security/xssAuditor/full-block-iframe-no-inherit.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249924</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-12 11:28:35 -0700</bug_when>
    <thetext>See also:

bug 30303 &lt;img src=&quot;&quot;&gt; requests main document resource unnecessarily

bug 42001 Update media element&apos;s handling of empty &apos;src&apos; attribute

bug 33337 fast/images/load-img-with-empty-src.html Timed out on Snow Leopard Release bot

Specifically, bug 30303 has a patch that takes care of several cases, not just img.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249926</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-12 11:34:11 -0700</bug_when>
    <thetext>-        readonly attribute long insertId
-            getter raises(DOMException);
+        readonly attribute long insertId getter raises(DOMException);

I find the former variant more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250104</commentid>
    <comment_count>5</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-07-12 15:49:59 -0700</bug_when>
    <thetext>Wait, hold on, what is this changing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250115</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 16:02:53 -0700</bug_when>
    <thetext>Before this change, if you had an element like this:

    &lt;img src=&quot;&quot;&gt;

In a document at http://host.com/index.html then:

    1) It would try to load the image from the URL &quot;http://host.com/index.html&quot;.

    2) If you did javascript:alert(document.getElementsByTagName(&quot;img&quot;)[0].src) you would get &quot;http://host.com/index.html&quot;.

After the change:

    1) It does not try to load an image.

    2) The result of javascript:alert(document.getElementsByTagName(&quot;img&quot;)[0].src) is an empty string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250141</commentid>
    <comment_count>7</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-07-12 16:42:10 -0700</bug_when>
    <thetext>Well for (1) that&apos;s good, the spec says to fire an &apos;error&apos; event in that case. But why (2)? I don&apos;t see anything making an exception for the empty string in the reflection rules.

The reason I looked at this bug is that the bug summary implies that authoring conformance criteria (the fact that src=&quot;&quot; with an empty string as its value is invalid) has some relevance when considering how something is handled by the user agent (how it is treated), which is most definitely not the case. For the purposes of writing a browser, you should ignore anything in the spec that talks about what&apos;s valid or allowed or conforming or required for authors and documents, and only look at user agent requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250192</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 17:42:24 -0700</bug_when>
    <thetext>Thanks. It seems I had some things wrong. I need to explore reflection of URL attributes more. It&apos;s strange that getting one of these attributes resolves the URL against the base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250194</commentid>
    <comment_count>9</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-07-12 17:45:34 -0700</bug_when>
    <thetext>It&apos;s only strange until you realise that it&apos;ll only affect authors who are already violating the spec, since it&apos;s invalid to have a document in that state in the first place. There are a lot of areas where the API starts acting a bit weird when you do something invalid; that&apos;s usually why it&apos;s invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250797</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-13 16:06:38 -0700</bug_when>
    <thetext>I’ll probably send some mail to WhatWG about this.

Before the empty URL change, there was something of an invariant where HTMLImageElement’s src IDL attribute would return the URL that will be loaded. Now it sometimes returns the URL that will be loaded, and sometimes returns a URL that will not be loaded. You could have two image elements that return the same value for the src IDL attribute but one will load the image and the other won’t.

I think that’s a bit inelegant so it might be worth changing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250836</commentid>
    <comment_count>11</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-07-13 17:09:34 -0700</bug_when>
    <thetext>If you&apos;re going to ask to change everything that&apos;s inelegant in the Web platform, we might be there a while. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250838</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-13 17:11:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; If you&apos;re going to ask to change everything that&apos;s inelegant in the Web platform, we might be there a while. :-)

That’s not fair.

This is a new, just-introduced inelegant thing created by changing things in one place and not another!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251509</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-14 16:31:52 -0700</bug_when>
    <thetext>We can use bug 30303 to track changing the actual loading behavior. Since Hixie clarified that IDL reflection is not supposed to have a special case for the empty string, I’ll repurpose this bug to roll back the changes related to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251563</commentid>
    <comment_count>14</comment_count>
      <attachid>61594</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-14 18:06:09 -0700</bug_when>
    <thetext>Created attachment 61594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251971</commentid>
    <comment_count>15</comment_count>
      <attachid>61594</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-15 10:22:52 -0700</bug_when>
    <thetext>Comment on attachment 61594
Patch

&gt;  
&gt;  Set &apos;poster&apos; to &apos;&apos;.
&gt;  EXPECTED (video.getAttribute(&apos;poster&apos;) == &apos;&apos;) OK
&gt; -EXPECTED (relativeURL(video.poster) == &apos;&apos;) OK
&gt; +EXPECTED (relativeURL(video.poster) == &apos;video-poster.html&apos;) OK
&gt;  
I understand that this is what the spec says  is &quot;correct&quot;, but it makes no sense at all. What user expects video.poster to be the document url?

&gt; -EVENT(error) from &lt;source id=&apos;empty-src&apos; src=&apos;&apos;&gt; OK
&gt; +EVENT(error) from &lt;source id=&apos;empty-src&apos; src=&apos;video-source-error-no-candidate.html&apos;&gt; OK
&gt;  EXPECTED (video.error == &apos;null&apos;) OK
Ditto.


&gt; Index: LayoutTests/media/video-src-none-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/media/video-src-none-expected.txt	(revision 63382)
&gt; +++ LayoutTests/media/video-src-none-expected.txt	(working copy)
&gt; @@ -8,7 +8,7 @@ EXPECTED (videos[0].src == &apos;&apos;) OK
&gt;  ** &lt;video&gt; with empty src attribute **
&gt;  EXPECTED (videos[1].error == &apos;null&apos;) OK
&gt;  EXPECTED (videos[1].networkState == &apos;0&apos;) OK
&gt; -EXPECTED (videos[1].src == &apos;&apos;) OK
&gt; +EXPECTED (videos[1].src == &apos;relativeURL(&apos;video-src-none.html&apos;)&apos;), OBSERVED &apos;file:///Volumes/Home/darin/Safari/OpenSource/LayoutTests/media/video-src-none.html&apos; FAIL
&gt;  
Probably not good to check in the result with a failure, or with a path to a file on your machine.


r=me with a fix for the failure above, although I strongly disagree with the spec&apos;s mandated behavior. We should get this changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251978</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-15 10:34:01 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; -EXPECTED (videos[1].src == &apos;&apos;) OK
&gt; &gt; +EXPECTED (videos[1].src == &apos;relativeURL(&apos;video-src-none.html&apos;)&apos;), OBSERVED &apos;file:///Volumes/Home/darin/Safari/OpenSource/LayoutTests/media/video-src-none.html&apos; FAIL
&gt; &gt;  
&gt; Probably not good to check in the result with a failure, or with a path to a file on your machine.

Oops! I should&apos;t have quoted relativeURL there. Will fix!

&gt; r=me with a fix for the failure above, although I strongly disagree with the spec&apos;s mandated behavior. We should get this changed.

Given your comments, I think I will leave the bindings support for “NonEmpty” in for now. In case we do get this changed, we can just add the attribute back and fix the test cases, without having to change the bindings generator yet again. We can always remove this later if we end up not changing the HTML specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256310</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-26 15:58:52 -0700</bug_when>
    <thetext>Committed r64085: &lt;http://trac.webkit.org/changeset/64085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339005</commentid>
    <comment_count>18</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-01-24 07:41:40 -0800</bug_when>
    <thetext>Revision r64085 cherry-picked into qtwebkit-2.2 with commit 6cc7b07 &lt;http://gitorious.org/webkit/qtwebkit/commit/6cc7b07&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61238</attachid>
            <date>2010-07-12 09:30:36 -0700</date>
            <delta_ts>2010-07-14 18:06:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42087-20100712093033.patch</filename>
            <type>text/plain</type>
            <size>24222</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMyArNDgsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkK
K3ZvaWQgU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoU2NyaXB0RWxlbWVudERh
dGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIGlmIChkYXRhLmNyZWF0
ZWRCeVBhcnNlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXNvdXJjZVVybC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgZGF0YS5yZXF1ZXN0U2NyaXB0KHNvdXJjZVVybCk7CisgICAgaWYg
KCFzb3VyY2VVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIGRhdGEucmVxdWVzdFNjcmlwdChzb3Vy
Y2VVUkwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MSwyMCArOTEsMjAgQEAgc3Rh
dGljIGlubGluZSBib29sIHVzZUhUTUw1UGFyc2VyKERvY3VtZQogICAgIHJldHVybiBzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+aHRtbDVQYXJzZXJFbmFibGVkKCk7CiB9CiAKLXZvaWQgU2NyaXB0RWxl
bWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVybCkKK3ZvaWQgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
IHsKICAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElmIHdlIGhhdmUg
bm8gc3JjIGFuZCBubyB0ZXh0LAogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGluZyBsYXRlci4K
LSAgICBpZiAoc291cmNlVXJsLmlzRW1wdHkoKSAmJiBkYXRhLnNjcmlwdENvbnRlbnQoKS5pc0Vt
cHR5KCkpCisgICAgaWYgKHNvdXJjZVVSTC5pc0VtcHR5KCkgJiYgZGF0YS5zY3JpcHRDb250ZW50
KCkuaXNFbXB0eSgpKQogICAgICAgICBkYXRhLnNldENyZWF0ZWRCeVBhcnNlcihmYWxzZSk7CiB9
CiAKLXZvaWQgU2NyaXB0RWxlbWVudDo6aGFuZGxlU291cmNlQXR0cmlidXRlKFNjcmlwdEVsZW1l
bnREYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKK3ZvaWQgU2NyaXB0RWxlbWVu
dDo6aGFuZGxlU291cmNlQXR0cmlidXRlKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBpZiAoZGF0YS5pZ25vcmVzTG9hZFJlcXVlc3QoKSB8
fCBzb3VyY2VVcmwuaXNFbXB0eSgpKQorICAgIGlmIChkYXRhLmlnbm9yZXNMb2FkUmVxdWVzdCgp
IHx8IHNvdXJjZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRhdGEucmVx
dWVzdFNjcmlwdChzb3VyY2VVcmwpOworICAgIGRhdGEucmVxdWVzdFNjcmlwdChzb3VyY2VVUkwp
OwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24KQEAgLTE1MCw3ICsxNTAsNyBAQCBTY3JpcHRFbGVt
ZW50RGF0YTo6flNjcmlwdEVsZW1lbnREYXRhKCkKICAgICBzdG9wTG9hZFJlcXVlc3QoKTsKIH0K
IAotdm9pZCBTY3JpcHRFbGVtZW50RGF0YTo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVybCkKK3ZvaWQgU2NyaXB0RWxlbWVudERhdGE6OnJlcXVlc3RTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9lbGVtZW50LT5k
b2N1bWVudCgpOwogCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCB2b2lkIFNjcmlwdEVsZW1lbnREYXRh
OjpyZXF1ZXN0U2NyaXB0KGNvCiAgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFtX2VsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNv
dXJjZVVybCkpCisgICAgaWYgKCFtX2VsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNv
dXJjZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jYWNoZWRTY3JpcHQp
OwotICAgIG1fY2FjaGVkU2NyaXB0ID0gZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2Ny
aXB0KHNvdXJjZVVybCwgc2NyaXB0Q2hhcnNldCgpKTsKKyAgICBtX2NhY2hlZFNjcmlwdCA9IGRv
Y3VtZW50LT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzb3VyY2VVUkwsIHNjcmlwdENoYXJz
ZXQoKSk7CiAgICAgbV9yZXF1ZXN0ZWQgPSB0cnVlOwogCiAgICAgLy8gbV9jcmVhdGVkQnlQYXJz
ZXIgaXMgbmV2ZXIgcmVzZXQgLSBhbHdheXMgcmVzaWVkIGF0IHRoZSBpbml0aWFsIHZhbHVlIHNl
dCB3aGlsZSBwYXJzaW5nLgpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gNjMwNTYpCisr
KyBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDExICs1
NywxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHVz
ZWQgYnkgb3VyIHBhcmVudCBjbGFzc2VzLgotICAgIHN0YXRpYyB2b2lkIGluc2VydGVkSW50b0Rv
Y3VtZW50KFNjcmlwdEVsZW1lbnREYXRhJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpOworICAg
IHN0YXRpYyB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KFNjcmlwdEVsZW1lbnREYXRhJiwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZWRGcm9tRG9jdW1l
bnQoU2NyaXB0RWxlbWVudERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
U2NyaXB0RWxlbWVudERhdGEmKTsKLSAgICBzdGF0aWMgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oU2NyaXB0RWxlbWVudERhdGEmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVybCk7Ci0gICAgc3Rh
dGljIHZvaWQgaGFuZGxlU291cmNlQXR0cmlidXRlKFNjcmlwdEVsZW1lbnREYXRhJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVcmwpOworICAgIHN0YXRpYyB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bihTY3JpcHRFbGVtZW50RGF0YSYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0
aWMgdm9pZCBoYW5kbGVTb3VyY2VBdHRyaWJ1dGUoU2NyaXB0RWxlbWVudERhdGEmLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCk7CiB9OwogCiAvLyBIVE1ML1NWR1NjcmlwdEVsZW1lbnQgaG9sZCB0
aGlzIHN0cnVjdCBhcyBtZW1iZXIgdmFyaWFibGUKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maXJlZExvYWQ7
IH0KICAgICB2b2lkIHNldEhhdmVGaXJlZExvYWRFdmVudChib29sIGZpcmVkTG9hZCkgeyBtX2Zp
cmVkTG9hZCA9IGZpcmVkTG9hZDsgfQogCi0gICAgdm9pZCByZXF1ZXN0U2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlVXJsKTsKKyAgICB2b2lkIHJlcXVlc3RTY3JpcHQoY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYpOwogICAgIHZvaWQgc3RvcExvYWRSZXF1ZXN0KCk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MQmFzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCwxMSBAQCB2b2lkIEhUTUxCYXNlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAorYm9vbCBIVE1MQmFzZUVsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBhdHRyaWJ1dGUt
Pm5hbWUoKSA9PSBocmVmQXR0cjsKK30KKwogdm9pZCBIVE1MQmFzZUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCkKIHsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgJKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90
YXJnZXQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCYXNl
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIwLDcgKzIwLDcgQEAKIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVy
ZmFjZSBIVE1MQmFzZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdF0gRE9NU3RyaW5nIGhyZWY7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxd
IERPTVN0cmluZyBocmVmOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB0
YXJnZXQ7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDQgKzQ1LDkgQEAgUGFzc1JlZlB0cjxIVE1MQmxv
Y2txdW90ZUVsZW1lbnQ+IEhUTUxCbAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJsb2Nr
cXVvdGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK2Jvb2wgSFRNTEJsb2NrcXVv
dGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gY2l0ZUF0dHI7Cit9CisKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmgJKHJldmlzaW9uIDYzMDU2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVx
dWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1
YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gNTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCShyZXZp
c2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRl
cmZhY2UgSFRNTEJsb2NrcXVvdGVFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBjaXRlOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3QsVVJMXSBET01TdHJpbmcgY2l0ZTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmlkbAkocmV2aXNpb24gNjMwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgIGF0dHJp
YnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiBub1ZhbGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3Q9YWNjZXB0X2NoYXJzZXRdIERPTVN0cmluZyBhY2NlcHRDaGFyc2V0OwotICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBhY3Rpb247Ci0gICAgICAgIGF0dHJpYnV0ZSBb
Q29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBlbmNvZGluZzsgIC8qIE5ldHNjYXBl
L0ZpcmVmb3ggbGVnYWN5IGF0dHJpYnV0ZS4gU2FtZSBhcyBlbmN0eXBlLiAqLworICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJpbmcgYWN0aW9uOworICAgICAgICBhdHRyaWJ1
dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZW5jb2Rpbmc7CiAgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBlbmN0eXBlOwog
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBtZXRob2Q7CiAgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHRhcmdldDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5pZGwJKHJldmlzaW9uIDYzMDU3KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgbmFtZTsKICAgICAgICAgYXR0
cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIG5vUmVzaXplOwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyBzY3JvbGxpbmc7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxV
UkxdIERPTVN0cmluZyBzcmM7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkwsTm9uRW1w
dHldIERPTVN0cmluZyBzcmM7CiAKICAgICAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwg
MjoKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDaGVja0ZyYW1lU2VjdXJpdHldIERvY3Vt
ZW50IGNvbnRlbnREb2N1bWVudDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1NiwxMSBAQCBib29sIEhUTUxIdG1sRWxlbWVudDo6Y2hlY2tEVEQo
Y29uc3QgTm9kCiAgICAgICAgICAgIG5ld0NoaWxkLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSB8
fCBuZXdDaGlsZC0+aGFzVGFnTmFtZShub2ZyYW1lc1RhZyk7CiB9CiAKK2Jvb2wgSFRNTEh0bWxF
bGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gbWFuaWZlc3RBdHRyOworfQorCiAjaWYgRU5B
QkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIHZvaWQgSFRNTEh0bWxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpCiB7CkBAIC03MiwxNCArNzcsMTEgQEAgdm9pZCBIVE1MSHRtbEVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDaGVj
ayB0aGUgbWFuaWZlc3QgYXR0cmlidXRlCi0gICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyB3aGVu
IHdlIGdldCBhIGNsYXJpZmljYXRpb24gZnJvbSB3aGF0d2cgb24gaG93IHRvIGhhbmRsZSBlbXB0
eQotICAgIC8vIG1hbmlmZXN0IGF0dHJpYnV0ZXMuIEFzIHNwZWMnZCwgYW5kIGNvZGVkIGhlcmUs
IHRoZSBzeXN0ZW0gd2lsbCBpbml0aWF0ZSBhbiB1cGRhdGUKLSAgICAvLyBwYXNzaW5nIGluIHRo
ZSBkb2N1bWVudCB1cmwgYXMgdGhlIG1hbmlmZXN0IHVybC4gVGhhdCdzIG5vdCBhIGdvb2QgdGhp
bmcuCi0gICAgQXRvbWljU3RyaW5nIG1hbmlmZXN0ID0gZ2V0QXR0cmlidXRlKG1hbmlmZXN0QXR0
cik7Ci0gICAgaWYgKG1hbmlmZXN0LmlzTnVsbCgpKQorICAgIEtVUkwgbWFuaWZlc3QgPSBnZXRO
b25FbXB0eVVSTEF0dHJpYnV0ZShtYW5pZmVzdEF0dHIpOworICAgIGlmIChtYW5pZmVzdC5pc0Vt
cHR5KCkpCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5z
ZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdCgpOwogICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKG1hbmlmZXN0KSk7CisgICAgICAgIGRvY3VtZW50TG9hZGVy
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5zZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChtYW5pZmVz
dCk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuaAkocmV2aXNpb24gNjMw
NTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFn
UmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZp
cnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTE7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOworICAgIHZpcnR1YWwgYm9vbCBp
c1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmlkbAkocmV2aXNpb24gNjMwNTYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEs
NyBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2UgSFRNTEh0bWxFbGVtZW50IDogSFRN
TEVsZW1lbnQgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB2ZXJzaW9u
OworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMLE5vbkVtcHR5XSBET01TdHJpbmcgbWFu
aWZlc3Q7CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3RdIERPTVN0cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyBzY3JvbGxpbmc7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNy
YzsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LFVSTCxOb25FbXB0eV0gRE9NU3RyaW5nIHNy
YzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2lkdGg7CiAKICAgICAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBIVE1MSW1hZ2VF
bGVtZW50OjpzZXRIZWlnaHQoaW50IHZhbAogCiBLVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0
ZShzcmNBdHRyKSk7CisgICAgcmV0dXJuIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIp
OwogfQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHZhbHVl
KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNpb24gNjMwNTcpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1
ICszMCwxNSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBsb25nIGhlaWdodDsK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBsb25nIGhzcGFjZTsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBib29sZWFuIGlzTWFwOwotICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Qs
VVJMXSBET01TdHJpbmcgbG9uZ0Rlc2M7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxd
IERPTVN0cmluZyBzcmM7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkwsTm9uRW1wdHld
IERPTVN0cmluZyBsb25nRGVzYzsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LFVSTCxOb25F
bXB0eV0gRE9NU3RyaW5nIHNyYzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgdXNlTWFwOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGxvbmcgdnNwYWNlOwogICAg
ICAgICBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKICAgICAgICAgCiAgICAgICAgIC8vIEV4dGVuc2lv
bnMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY29tcGxldGU7Ci0gICAgICAg
IGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBsb3dzcmM7CisgICAgICAgIGF0dHJp
YnV0ZSBbUmVmbGVjdCxVUkwsTm9uRW1wdHldIERPTVN0cmluZyBsb3dzcmM7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIG5hdHVyYWxIZWlnaHQ7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nIG5hdHVyYWxXaWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgeDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYzMDU2KQor
KysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDU1LDcgKzI0NTUsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUodW5zaWduZWQg
CiAKIEtVUkwgSFRNTElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKKyAgICByZXR1cm4g
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6c2V0QXV0b2ZpbGxlZChib29sIGIpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsCShyZXZpc2lvbiA2MzA1NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiBkaXNhYmxlZDsKICAgICAgICAgYXR0cmlidXRl
IFtSZWZsZWN0XSBib29sZWFuIGF1dG9mb2N1czsKICNpZiBkZWZpbmVkKEVOQUJMRV9EQVRBTElT
VCkgJiYgRU5BQkxFX0RBVEFMSVNUCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRWxl
bWVudCAgICAgbGlzdDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxFbGVtZW50IGxp
c3Q7CiAjZW5kaWYKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgbWF4Owog
ICAgICAgICBhdHRyaWJ1dGUgbG9uZyBtYXhMZW5ndGggc2V0dGVyIHJhaXNlcyhET01FeGNlcHRp
b24pOwpAQCAtNTEsNyArNTEsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGUgc3BlYyBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgbG9uZywgbm90IGFuIHVuc2lnbmVkIGxvbmcu
CiAgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNpemU7IC8vIENoYW5nZWQgc3RyaW5n
IC0+IGxvbmcgYXMgcGFydCBvZiBET00gbGV2ZWwgMgogI2VuZGlmCi0gICAgICAgIGF0dHJpYnV0
ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBzcmM7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVj
dCxVUkwsTm9uRW1wdHldIERPTVN0cmluZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVj
dF0gRE9NU3RyaW5nIHN0ZXA7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmcsIEpTQ0N1c3RvbUdldHRlcl0gRE9NU3RyaW5nIHR5cGU7IC8vIHJlYWRvbmx5IGRyb3Bw
ZWQgYXMgcGFydCBvZiBET00gbGV2ZWwgMgogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERP
TVN0cmluZyB1c2VNYXA7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24g
NjMwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDcgKzExOSw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnUKICAgICAgICAgdG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0ci0+dmFsdWUoKSwgbV9yZWxB
dHRyaWJ1dGUpOwogICAgICAgICBwcm9jZXNzKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gaHJlZkF0dHIpIHsKLSAgICAgICAgbV91cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+dmFsdWUoKSkpOworICAgICAgICBTdHJpbmcgdmFs
dWUgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIG1fdXJsID0g
dmFsdWUuaXNFbXB0eSgpID8gS1VSTCgpIDogZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodmFsdWUp
OwogICAgICAgICBwcm9jZXNzKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlw
ZUF0dHIpIHsKICAgICAgICAgbV90eXBlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTM3Niw3ICszNzcs
NyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0CiAKIEtVUkwgSFRN
TExpbmtFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7CisgICAgcmV0dXJuIGdldE5vbkVtcHR5
VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKIH0KIAogU3RyaW5nIEhUTUxMaW5rRWxlbWVudDo6cmVs
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCShyZXZpc2lvbiA2MzA1NykK
KysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw3ICsyMyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgSFRNTExpbmtFbGVtZW50
IDogSFRNTEVsZW1lbnQgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gZGlz
YWJsZWQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGNoYXJzZXQ7Ci0g
ICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBocmVmOworICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3QsVVJMLE5vbkVtcHR5XSBET01TdHJpbmcgaHJlZjsKICAgICAgICAg
YXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgaHJlZmxhbmc7CiAgICAgICAgIGF0dHJpYnV0
ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG1lZGlhOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyByZWw7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5jcHAJKHJldmlzaW9uIDYz
MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNCArMzksOSBAQCBQYXNzUmVmUHRyPEhUTUxNb2RFbGVtZW50PiBIVE1MTW9kRWxlbWVu
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTW9kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkpOwogfQogCitib29sIEhUTUxNb2RFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gY2l0
ZUF0dHI7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5oCShyZXZpc2lvbiA2MzA1NikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVx
dWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1
YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmlkbAkocmV2aXNpb24gNjMwNTYpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTE1vZEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBA
CiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2UgSFRNTE1vZEVsZW1lbnQgOiBIVE1MRWxl
bWVudCB7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGNpdGU7CisgICAg
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBjaXRlOwogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBkYXRlVGltZTsKICAgICB9OwogICAgIApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcg
QEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGRhdGFBdHRyKSB7CiAgICAgICAgIG1fdXJsID0gZGVwcmVjYXRl
ZFBhcnNlVVJMKHZhbCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgIG1fbmVl
ZFdpZGdldFVwZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBtX25lZWRXaWRnZXRVcGRhdGUgPSB0
cnVlOwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAg
ICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChu
ZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmlkbAkocmV2aXNpb24gNjMwNTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgYm9yZGVyOwogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyBjb2RlQmFzZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZs
ZWN0XSBET01TdHJpbmcgY29kZVR5cGU7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxd
IERPTVN0cmluZyBkYXRhOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMLE5vbkVtcHR5
XSBET01TdHJpbmcgZGF0YTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGRl
Y2xhcmU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGhlaWdodDsKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBsb25nIGhzcGFjZTsKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUKICAgICAgICAg
bV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwpOwogCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgS1VSTCBjb21wbGV0
ZWRVUkwgPSBmcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKG1fdXJsKTsKKyAgICAgICAgS1VS
TCBjb21wbGV0ZWRVUkwgPSBtX3VybC5pc0VtcHR5KCkgPyBLVVJMKCkgOiBmcmFtZS0+bG9hZGVy
KCktPmNvbXBsZXRlVVJMKG1fdXJsKTsKICAgICAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPm9iamVjdENvbnRlbnRUeXBlKGNvbXBsZXRlZFVSTCwgbV9zZXJ2aWNlVHlwZSkg
PT0gT2JqZWN0Q29udGVudEltYWdlOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxR
dW90ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gNjMwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDExIEBAIFBhc3NSZWZQdHI8SFRNTFF1
b3RlRWxlbWVudD4gSFRNTFF1b3RlRWwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxRdW90
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorYm9vbCBIVE1MUXVvdGVFbGVtZW50
Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gY2l0ZUF0dHI7Cit9CisKIHZvaWQgSFRNTFF1b3RlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIGRvY3VtZW50KCktPnNldFVzZXNC
ZWZvcmVBZnRlclJ1bGVzKHRydWUpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5oCShyZXZp
c2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
dHJpbmc7Ci0KIGNsYXNzIEhUTUxRdW90ZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxRdW90ZUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTM5LDcgKzM3LDcgQEAgcHJpdmF0
ZToKICAgICAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBj
b25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1YWwgaW50IHRhZ1By
aW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCisgICAgdmlydHVhbCBib29sIGlzVVJMQXR0
cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOwogfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmlkbAkocmV2aXNp
b24gNjMwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDYgKzIwLDYgQEAKIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFjZSBI
VE1MUXVvdGVFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3RdIERPTVN0cmluZyBjaXRlOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01T
dHJpbmcgY2l0ZTsKICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50
OjpzZXRUZXh0KGNvbnN0IFN0CiAKIEtVUkwgSFRNTFNjcmlwdEVsZW1lbnQ6OnNyYygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHNvdXJjZUF0dHJpYnV0ZVZh
bHVlKCkpOworICAgIHJldHVybiBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0K
IAogU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50OjpzY3JpcHRDaGFyc2V0KCkgY29uc3QKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTcgKzE0NSwxMiBAQCB2b2lk
IEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgaWYgKCFkb2N1bWVudC0+cmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQXRvbWljU3RyaW5nIGF0dHIgPSBtX2Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShtX2VsZW1lbnQtPmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
KTsKLQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ciA9IG1fZWxlbWVudC0+Z2V0QXR0cmli
dXRlKG1fZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOwogICAgIGlmIChhdHRy
ID09IG1fZmFpbGVkTG9hZFVSTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRG8gbm90IGxv
YWQgYW55IGltYWdlIGlmIHRoZSAnc3JjJyBhdHRyaWJ1dGUgaXMgbWlzc2luZyBvciBpZiBpdCBp
cwotICAgIC8vIGFuIGVtcHR5IHN0cmluZyByZWZlcnJpbmcgdG8gYSBsb2NhbCBmaWxlLiBUaGUg
bGF0dGVyIGNvbmRpdGlvbiBpcwotICAgIC8vIGEgcXVpcmsgdGhhdCBwcmVzZXJ2ZXMgb2xkIGJl
aGF2aW9yIHRoYXQgRGFzaGJvYXJkIHdpZGdldHMKLSAgICAvLyBuZWVkICg8cmRhcjovL3Byb2Js
ZW0vNTk5NDYyMT4pLgogICAgIENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDA7Ci0gICAgaWYgKCEo
YXR0ci5pc051bGwoKSB8fCAoYXR0ci5pc0VtcHR5KCkgJiYgZG9jdW1lbnQtPmJhc2VVUkkoKS5p
c0xvY2FsRmlsZSgpKSkpIHsKKyAgICBpZiAoIWF0dHIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlm
IChtX2xvYWRNYW51YWxseSkgewogICAgICAgICAgICAgYm9vbCBhdXRvTG9hZE90aGVySW1hZ2Vz
ID0gZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5hdXRvTG9hZEltYWdlcygpOwogICAgICAgICAgICAg
ZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhmYWxzZSk7CkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0
b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAkocmV2aXNpb24gNjMwNTYpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvU1FMUmVzdWx0U2V0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDEyIEBAIG1v
ZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNRTFJlc3VsdFNldFJv
d0xpc3Qgcm93czsKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX0NQUCkgfHwgIUxBTkdVQUdFX0NQ
UAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBpbnNlcnRJZAotICAgICAgICAgICAg
Z2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBpbnNlcnRJZCBnZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZWxzZQotICAgICAg
ICAvLyBFeHBsaWNpdGVseSBjaG9vc2UgJ2xvbmcgbG9uZycgaGVyZSB0byBhdm9pZCBhIDY0Yml0
LT4zMmJpdCBzaG9ydGVuaW5nIHdhcm5pbmcgZm9yIHVzLgotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBsb25nIGluc2VydElkCi0gICAgICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIC8vIEV4cGxpY2l0bHkgY2hvb3NlICdsb25nIGxvbmcnIGhlcmUg
dG8gYXZvaWQgYSA2NGJpdC0+MzJiaXQgc2hvcnRlbmluZyB3YXJuaW5nLgorICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBsb25nIGluc2VydElkIGdldHRlciByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICNlbmRpZgorCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHJvd3NBZmZl
Y3RlZDsKICAgICB9OwogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3Rz
L1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zY3JpcHQtdGVzdHMvVVJMLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLmpzCShyZXZpc2lv
biA2MzA1NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9VUkwtYXR0cmli
dXRlLXJlZmxlY3Rpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgc2hvdWxk
QmUoInRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAndmlkZQogCiAvLyBPdGhlciByZWZsZWN0ZWQg
VVJMIGF0dHJpYnV0ZXMuCiAKK3Nob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2Zy
YW1lJykiLCAiJ25vbi1lbXB0eSBVUkwnIik7CiBzaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rpb24o
J2xvbmdEZXNjJywgJ2ltZycpIiwgIidub24tZW1wdHkgVVJMJyIpOwogc2hvdWxkQmUoInRlc3RV
UkxSZWZsZWN0aW9uKCdsb3dzcmMnLCAnaW1nJykiLCAiJ25vbi1lbXB0eSBVUkwnIik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61594</attachid>
            <date>2010-07-14 18:06:09 -0700</date>
            <delta_ts>2010-07-15 10:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42087-20100714180608.patch</filename>
            <type>text/plain</type>
            <size>51067</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzM4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTAtMDctMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbuKA
mXQgaGFuZGxlIGVtcHR5IFVSTCBhdHRyaWJ1dGVzIHNwZWNpYWxseSBpbiByZWZsZWN0aW9uLCBl
dmVuIGluIGNhc2VzIHN1Y2ggYXMgPGltZyBzcmM9IiI+CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjA4NworCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtOiBSZW1vdmVkIHN1cHBvcnQgZm9yIE5vbkVtcHR5LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgUmVtb3ZlZCB0ZXN0IGNhc2VzIGZvciBOb25F
bXB0eS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IENoZWNrIGlm
IHRoZSBzcmMgYXR0cmlidXRlIGlzIGVtcHR5CisgICAgICAgIGJ5IGNhbGxpbmcgZ2V0QXR0cmli
dXRlIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgc3JjIGZ1bmN0aW9uLiBUaGlzIGtlZXBzIHRoZSBi
ZWhhdmlvcgorICAgICAgICBjb3JyZWN0IHdpdGggdGhlIHJlZmxlY3Rpb24gY2hhbmdlLCBhbmQg
aGFzIGEgc2lkZSBiZW5lZml0IG9mIGJlaW5nIG1vcmUgZWZmaWNpZW50IGFzCisgICAgICAgIHdl
bGwgc2luY2UgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHJlc29sdmUgdGhlIFVSTC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6IENhbGwgZ2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUgZGlyZWN0bHkgaGVyZQorICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIHRo
ZSBwb3N0ZXIgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpn
ZXRQbHVnaW5Qcm94eVBhcmFtcyk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6IFJlbW92ZWQgdGhlIHBvc3RlciB2aXJ0dWFsIGZ1bmN0aW9uLiBUaGUgY29kZSB0
aGF0IGdldHMgdGhlCisgICAgICAgIHBvc3RlciBhdHRyaWJ1dGUgaXMgYWxyZWFkeSB2aWRlby1z
cGVjaWZpYyBhbmQgdXNlcyBnZW5lcmljIGF0dHJpYnV0ZSBmZXRjaGluZyBjb2RlLCBzbworICAg
ICAgICB3ZSBubyBsb25nZXIgbmVlZCBhIHZpcnR1YWwgZnVuY3Rpb24uIFJlbW92ZWQgdGhlIHNy
YyBmdW5jdGlvbi4gU2luY2UgdGhpcyB3b3VsZCBnaXZlCisgICAgICAgIGEgZGlmZmVyZW50IHJl
c3VsdCBmcm9tIHRoZSBKYXZhU2NyaXB0IHJlZmxlY3RlZCBzcmMgYXR0cmlidXRlLCBpdCdzIHNh
ZmVyIG5vdCB0byBoYXZlCisgICAgICAgIGl0LCBhbmQgaXQgd2FzIGVhc3kgdG8gY29udmVydCBh
bGwgdGhlIGNhbGxlcnMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBS
ZW1vdmVkIHRoZSBOb25FbXB0eSBleHRlbmRlZCBhdHRyaWJ1dGUgZnJvbSB0aGUgc3JjCisgICAg
ICAgIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwOiBS
ZW1vdmVkIHRoZSBzcmMgZnVuY3Rpb24gZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKyAg
ICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50Lmg6IERpdHRvLgorCisgICAgICAgICogaHRt
bC9IVE1MU291cmNlRWxlbWVudC5pZGw6IFJlbW92ZWQgdGhlIE5vbkVtcHR5IGV4dGVuZGVkIGF0
dHJpYnV0ZSBmcm9tIHRoZSBzcmMKKyAgICAgICAgYXR0cmlidXRlLgorCisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogUmVtb3ZlZCBjb2RlIHRvIHVwZGF0ZSBtX3Bvc3Rl
clVSTCwKKyAgICAgICAgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZC4gQ2hhbmdlZCBjYWxsIHNp
dGUgdGhhdCB1c2VkIHRoZSBwb3N0ZXIoKSBmdW5jdGlvbiB0byBpbnN0ZWFkCisgICAgICAgIHVz
ZSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdlKTogQ2hlY2sgaWYgdGhlIHBvc3RlciBhdHRyaWJ1dGUg
aXMgZW1wdHkKKyAgICAgICAgYnkgY2FsbGluZyBnZXRBdHRyaWJ1dGUgaW5zdGVhZCBvZiBjYWxs
aW5nIHRoZSBwb3N0ZXIgZnVuY3Rpb24uIFRoaXMga2VlcHMgdGhlIGJlaGF2aW9yCisgICAgICAg
IGNvcnJlY3Qgd2l0aCB0aGUgcmVmbGVjdGlvbiBjaGFuZ2UsIGFuZCBoYXMgYSBzaWRlIGJlbmVm
aXQgb2YgYmVpbmcgbW9yZSBlZmZpY2llbnQgYXMKKyAgICAgICAgd2VsbCBzaW5jZSB0aGVyZSBp
cyBubyByZWFzb24gdG8gcmVzb2x2ZSB0aGUgVVJMLgorCisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50Lmg6IFJlbW92ZWQgdGhlIHBvc3RlciBmdW5jdGlvbiBmb3IgdGhlIHNhbWUgcmVh
c29uIHdlIHJlbW92ZWQKKyAgICAgICAgdGhlIHNyYyBmdW5jdGlvbiBhYm92ZS4gQWxzbyByZW1v
dmVkIG5vdy11bm5lZWRlZCBtX3Bvc3RlclVSTCBkYXRhIG1lbWJlci4KKworICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5pZGw6IFJlbW92ZWQgdGhlIE5vbkVtcHR5IGV4dGVuZGVkIGF0
dHJpYnV0ZSBmcm9tIHRoZSBwb3N0ZXIKKyAgICAgICAgYXR0cmlidXRlLgorCiAyMDEwLTA3LTE0
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJrIFJvd2UuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbQkocmV2aXNpb24gNjMzODIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtNDI1LDExICs0MjUsNyBAQCBzdWIgR2V0dGVy
RXhwcmVzc2lvblByZWZpeAogCiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAgICBpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVVJMIn0pIHsKLSAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vbkVtcHR5
In0pIHsKLSAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1
dGUiOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRV
UkxBdHRyaWJ1dGUiOwotICAgICAgICB9CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJM
QXR0cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEg
ImJvb2xlYW4iKSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaGFzQXR0cmlidXRlIjsKICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgImxvbmciKSB7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gNjMz
ODIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEwIEBAIG1vZHVsZSB0ZXN0IHsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBsb25nIHJlZmxlY3RlZEludGVncmFsQXR0cjsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBib29sZWFuIHJlZmxlY3RlZEJvb2xlYW5BdHRyOwogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJpbmcgcmVmbGVjdGVkVVJMQXR0cjsKLSAgICAgICAg
YXR0cmlidXRlIFtSZWZsZWN0LE5vbkVtcHR5LFVSTF0gRE9NU3RyaW5nIHJlZmxlY3RlZE5vbkVt
cHR5VVJMQXR0cjsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0PWN1c3RvbUNvbnRlbnRTdHJp
bmdBdHRyXSBET01TdHJpbmcgcmVmbGVjdGVkU3RyaW5nQXR0cjsKICAgICAgICAgYXR0cmlidXRl
IFtSZWZsZWN0PWN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJdIGxvbmcgcmVmbGVjdGVkQ3VzdG9t
SW50ZWdyYWxBdHRyOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Q9Y3VzdG9tQ29udGVudEJv
b2xlYW5BdHRyXSBib29sZWFuIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyOwogICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3Q9Y3VzdG9tQ29udGVudFVSTEF0dHIsVVJMXSBET01TdHJpbmcgcmVm
bGVjdGVkQ3VzdG9tVVJMQXR0cjsKLSAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0PWN1c3RvbUNv
bnRlbnROb25FbXB0eVVSTEF0dHIsTm9uRW1wdHksVVJMXSBET01TdHJpbmcgcmVmbGVjdGVkQ3Vz
dG9tTm9uRW1wdHlVUkxBdHRyOwogCiAgICAgICAgIC8vIE1ldGhvZHMKICAgICAgICAgdm9pZCAg
ICB2b2lkTWV0aG9kKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCShyZXZpc2lvbiA2MzM4MikKKysrIFdlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwLDIyICsyNDAsNiBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFJlZmxlY3RlZFVS
TEF0dHIoCiAgICAgaW1wbCgpLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWR1cmxhdHRyQXR0ciwgbmV3UmVmbGVjdGVkVVJMQXR0cik7CiB9CiAKLVdlYkRPTVN0cmlu
ZyBXZWJET01UZXN0T2JqOjpyZWZsZWN0ZWROb25FbXB0eVVSTEF0dHIoKSBjb25zdAotewotICAg
IGlmICghaW1wbCgpKQotICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7Ci0KLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6U3RyaW5nJj4oaW1wbCgpLT5nZXROb25FbXB0
eVVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZG5vbmVtcHR5dXJsYXR0
ckF0dHIpKTsKLX0KLQotdm9pZCBXZWJET01UZXN0T2JqOjpzZXRSZWZsZWN0ZWROb25FbXB0eVVS
TEF0dHIoY29uc3QgV2ViRE9NU3RyaW5nJiBuZXdSZWZsZWN0ZWROb25FbXB0eVVSTEF0dHIpCi17
Ci0gICAgaWYgKCFpbXBsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGltcGwoKS0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkbm9uZW1wdHl1cmxhdHRyQXR0ciwg
bmV3UmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyKTsKLX0KLQogV2ViRE9NU3RyaW5nIFdlYkRPTVRl
c3RPYmo6OnJlZmxlY3RlZFN0cmluZ0F0dHIoKSBjb25zdAogewogICAgIGlmICghaW1wbCgpKQpA
QCAtMzIwLDIyICszMDQsNiBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFJlZmxlY3RlZEN1c3Rv
bVVSCiAgICAgaW1wbCgpLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21D
b250ZW50VVJMQXR0ckF0dHIsIG5ld1JlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOwogfQogCi1XZWJE
T01TdHJpbmcgV2ViRE9NVGVzdE9iajo6cmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyKCkg
Y29uc3QKLXsKLSAgICBpZiAoIWltcGwoKSkKLSAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygp
OwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OlN0cmluZyY+KGltcGwo
KS0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50Tm9uRW1wdHlVUkxBdHRyQXR0cikpOwotfQotCi12b2lkIFdlYkRPTVRlc3RPYmo6OnNldFJl
ZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0cihjb25zdCBXZWJET01TdHJpbmcmIG5ld1JlZmxl
Y3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0cikKLXsKLSAgICBpZiAoIWltcGwoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaW1wbCgpLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpj
dXN0b21Db250ZW50Tm9uRW1wdHlVUkxBdHRyQXR0ciwgbmV3UmVmbGVjdGVkQ3VzdG9tTm9uRW1w
dHlVUkxBdHRyKTsKLX0KLQogaW50IFdlYkRPTVRlc3RPYmo6OmF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIWltcGwoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAkocmV2aXNpb24gNjMzODIp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlZmxl
Y3RlZEJvb2xlYW5BdHRyKGJvb2wpOwogICAgIFdlYkRPTVN0cmluZyByZWZsZWN0ZWRVUkxBdHRy
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZWZsZWN0ZWRVUkxBdHRyKGNvbnN0IFdlYkRPTVN0cmlu
ZyYpOwotICAgIFdlYkRPTVN0cmluZyByZWZsZWN0ZWROb25FbXB0eVVSTEF0dHIoKSBjb25zdDsK
LSAgICB2b2lkIHNldFJlZmxlY3RlZE5vbkVtcHR5VVJMQXR0cihjb25zdCBXZWJET01TdHJpbmcm
KTsKICAgICBXZWJET01TdHJpbmcgcmVmbGVjdGVkU3RyaW5nQXR0cigpIGNvbnN0OwogICAgIHZv
aWQgc2V0UmVmbGVjdGVkU3RyaW5nQXR0cihjb25zdCBXZWJET01TdHJpbmcmKTsKICAgICBpbnQg
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKCkgY29uc3Q7CkBAIC04MSw4ICs3OSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKGJvb2wpOwogICAg
IFdlYkRPTVN0cmluZyByZWZsZWN0ZWRDdXN0b21VUkxBdHRyKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKGNvbnN0IFdlYkRPTVN0cmluZyYpOwotICAgIFdlYkRP
TVN0cmluZyByZWZsZWN0ZWRDdXN0b21Ob25FbXB0eVVSTEF0dHIoKSBjb25zdDsKLSAgICB2b2lk
IHNldFJlZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0cihjb25zdCBXZWJET01TdHJpbmcmKTsK
ICAgICBpbnQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldEF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGludCk7CiAgICAgaW50IGF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAJKHJldmlzaW9uIDYzMzgyKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU2LDI3ICs1NTYsNiBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF9yZWZsZWN0ZWRfdXJsX2F0CiB9CiAKIGdjaGFyKiAKLXdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X3JlZmxlY3RlZF9ub25fZW1wdHlfdXJsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqICByZXMgPSBjb252ZXJ0VG9VVEY4U3Ry
aW5nKGl0ZW0tPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkbm9uZW1wdHl1cmxhdHRyQXR0cikpOwotICAgIHJldHVybiByZXM7Ci19Ci0KLXZvaWQK
LXdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9ub25fZW1wdHlfdXJsX2F0dHIoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgZ2NoYXIqICB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKLSAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpTdHJpbmcgY29udmVydGVkX3ZhbHVl
ID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmli
dXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkbm9uZW1wdHl1cmxhdHRyQXR0ciwgY29u
dmVydGVkX3ZhbHVlKTsKLX0KLQotZ2NoYXIqIAogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVm
bGVjdGVkX3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNjU2LDI3ICs2MzUsNiBAQCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tCiAgICAgaXRlbS0+c2V0QXR0cmli
dXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBjb252ZXJ0
ZWRfdmFsdWUpOwogfQogCi1nY2hhciogCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0
ZWRfY3VzdG9tX25vbl9lbXB0eV91cmxfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChzZWxmLCAwKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogIHJlcyA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRl
bS0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50Tm9uRW1wdHlVUkxBdHRyQXR0cikpOwotICAgIHJldHVybiByZXM7Ci19Ci0KLXZvaWQKLXdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21fbm9uX2VtcHR5X3VybF9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdjaGFyKiAgdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7
Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIGNvbnZlcnRlZF92
YWx1ZSA9IFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnROb25FbXB0eVVSTEF0dHJB
dHRyLCBjb252ZXJ0ZWRfdmFsdWUpOwotfQotCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vy
cm9yICoqZXJyb3IpCiB7CkBAIC05MzYsMTIgKzg5NCwxMCBAQCBlbnVtIHsKICAgICBQUk9QX1JF
RkxFQ1RFRF9JTlRFR1JBTF9BVFRSLAogICAgIFBST1BfUkVGTEVDVEVEX0JPT0xFQU5fQVRUUiwK
ICAgICBQUk9QX1JFRkxFQ1RFRF9VUkxfQVRUUiwKLSAgICBQUk9QX1JFRkxFQ1RFRF9OT05fRU1Q
VFlfVVJMX0FUVFIsCiAgICAgUFJPUF9SRUZMRUNURURfU1RSSU5HX0FUVFIsCiAgICAgUFJPUF9S
RUZMRUNURURfQ1VTVE9NX0lOVEVHUkFMX0FUVFIsCiAgICAgUFJPUF9SRUZMRUNURURfQ1VTVE9N
X0JPT0xFQU5fQVRUUiwKICAgICBQUk9QX1JFRkxFQ1RFRF9DVVNUT01fVVJMX0FUVFIsCi0gICAg
UFJPUF9SRUZMRUNURURfQ1VTVE9NX05PTl9FTVBUWV9VUkxfQVRUUiwKICAgICBQUk9QX0FUVFJf
V0lUSF9HRVRURVJfRVhDRVBUSU9OLAogICAgIFBST1BfQVRUUl9XSVRIX1NFVFRFUl9FWENFUFRJ
T04sCiAgICAgUFJPUF9TVFJJTkdfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJT04sCkBAIC0xMDIw
LDExICs5NzYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wCiAg
ICAgICAgIGNvcmVTZWxmLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWR1cmxhdHRyQXR0ciwgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfUkVGTEVD
VEVEX05PTl9FTVBUWV9VUkxfQVRUUjoKLSAgICB7Ci0gICAgICAgIGNvcmVTZWxmLT5zZXRBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRub25lbXB0eXVybGF0dHJBdHRyLCBX
ZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgUFJPUF9SRUZMRUNURURfU1RSSU5HX0FUVFI6
CiAgICAgewogICAgICAgICBjb3JlU2VsZi0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyLCBXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4
KGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpKTsKQEAgLTEwNDUsMTEgKzk5Niw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3AKICAgICAgICAgY29yZVNlbGYtPnNl
dEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciwg
V2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBST1BfUkVGTEVDVEVEX0NVU1RPTV9OT05f
RU1QVFlfVVJMX0FUVFI6Ci0gICAgewotICAgICAgICBjb3JlU2VsZi0+c2V0QXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudE5vbkVtcHR5VVJMQXR0ckF0dHIsIFdlYkNv
cmU6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSkpOwotICAgICAg
ICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBQUk9QX0FUVFJfV0lUSF9HRVRURVJfRVhDRVBUSU9O
OgogICAgIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0xMTc1
LDExICsxMTIxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcAog
ICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNv
cmVTZWxmLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxh
dHRyQXR0cikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9SRUZMRUNU
RURfTk9OX0VNUFRZX1VSTF9BVFRSOgotICAgIHsKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmlu
Zyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+Z2V0Tm9uRW1wdHlVUkxBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRub25lbXB0eXVybGF0dHJBdHRyKSkp
OwotICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBQUk9QX1JFRkxFQ1RFRF9TVFJJTkdf
QVRUUjoKICAgICB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRU
b1VURjhTdHJpbmcoY29yZVNlbGYtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1
c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpKTsKQEAgLTEyMDAsMTEgKzExNDEsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wCiAgICAgICAgIGdfdmFsdWVfdGFr
ZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPmdldFVSTEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUFJPUF9SRUZMRUNURURfQ1VTVE9NX05PTl9F
TVBUWV9VUkxfQVRUUjoKLSAgICB7Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUs
IGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudE5vbkVtcHR5VVJMQXR0ckF0dHIpKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIFBST1BfQVRUUl9XSVRIX0dFVFRFUl9FWENF
UFRJT046CiAgICAgewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAg
LTEzODUsMTMgKzEzMjEsNiBAQCBHX01BWExPTkcsIC8qIG1heCAqLwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVmYXVs
dCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX1JFRkxFQ1RFRF9OT05fRU1QVFlfVVJMX0FUVFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJyZWZsZWN0ZWQtbm9u
LWVtcHR5LXVybC1hdHRyIiwgLyogbmFtZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfcmVmbGVjdGVkLW5vbi1l
bXB0eS11cmwtYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBn
Y2hhciogIFRlc3RPYmoucmVmbGVjdGVkLW5vbi1lbXB0eS11cmwtYXR0ciIsIC8qIGxvbmdlciAt
IGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVm
YXVsdCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0gICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX1JFRkxFQ1RFRF9TVFJJTkdfQVRUUiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInJlZmxlY3RlZC1zdHJpbmct
YXR0ciIsIC8qIG5hbWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3JlZmxlY3RlZC1zdHJpbmctYXR0ciIsIC8q
IHNob3J0IGRlc2NyaXB0aW9uICovCkBAIC0xNDIyLDEzICsxMzUxLDYgQEAgR19NQVhMT05HLCAv
KiBtYXggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9SRUZMRUNURURfQ1VTVE9NX05P
Tl9FTVBUWV9VUkxfQVRUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoInJlZmxlY3RlZC1jdXN0b20tbm9uLWVtcHR5LXVybC1hdHRyIiwg
LyogbmFtZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidGVzdF9vYmpfcmVmbGVjdGVkLWN1c3RvbS1ub24tZW1wdHktdXJsLWF0
dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgZ2NoYXIqICBUZXN0
T2JqLnJlZmxlY3RlZC1jdXN0b20tbm9uLWVtcHR5LXVybC1hdHRyIiwgLyogbG9uZ2VyIC0gY291
bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0
ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLSAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJT04sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygiYXR0ci13aXRoLWdldHRlci1l
eGNlcHRpb24iLCAvKiBuYW1lICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9hdHRyLXdpdGgtZ2V0dGVyLWV4Y2Vw
dGlvbiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAkocmV2
aXNpb24gNjMzODIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDEyICsxODgsNiBAQCBXRUJL
SVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF91cmxfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnY2hhciogIHZhbHVlKTsKIAogV0VCS0lUX0FQSSBnY2hh
ciogCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfbm9uX2VtcHR5X3VybF9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9ub25fZW1wdHlfdXJsX2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgZ2NoYXIqICB2YWx1ZSk7Ci0KLVdFQktJVF9BUEkgZ2NoYXIqIAogd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpOwogCiBXRUJLSVRfQVBJIHZvaWQKQEAgLTIxNywxMiArMjExLDYgQEAgd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfcmVmbGVjdGVkX2N1c3RvbQogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tX3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdjaGFyKiAgdmFsdWUpOwogCi1XRUJLSVRfQVBJIGdjaGFyKiAKLXdlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9jdXN0b21fbm9uX2VtcHR5X3VybF9hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3JlZmxlY3RlZF9jdXN0b21fbm9uX2VtcHR5X3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdjaGFyKiAgdmFsdWUpOwotCiBXRUJLSVRfQVBJIGdsb25nCiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBHRXJyb3IgKiplcnJvcik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gNjMzODIpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw3ICs0OSw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0T2JqKTsKICNkZWZp
bmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikKICNlbmRpZgogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbMzJdID0KK3N0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1szMF0gPQogewogICAgIHsgInJlYWRPbmx5
SW50QXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seUludEF0dHIpLCAoaW50
cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJyZWFkT25seVN0cmluZ0F0dHIi
LCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKSwgKGludHB0cl90
KTAgVEhVTktfR0VORVJBVE9SKDApIH0sCkBAIC02MywxMiArNjMsMTAgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYgogICAgIHsgInJlZmxlY3RlZEludGVncmFsQXR0
ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKSwgKGludHB0cl90KXNldEpT
VGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7
ICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0
dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIgVEhVTktfR0VO
RVJBVE9SKDApIH0sCiAgICAgeyAicmVmbGVjdGVkVVJMQXR0ciIsIERvbnREZWxldGUsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVm
bGVjdGVkVVJMQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyIFRI
VU5LX0dFTkVSQVRPUigwKSB9LAotICAgIHsgInJlZmxlY3RlZE5vbkVtcHR5VVJMQXR0ciIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqUmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyKSwgKGludHB0cl90KXNldEpTVGVz
dE9ialJlZmxlY3RlZE5vbkVtcHR5VVJMQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRy
KSwgKGludHB0cl90KXNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIgVEhVTktfR0VORVJB
VE9SKDApIH0sCiAgICAgeyAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIiwgRG9udERlbGV0
ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsg
InJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29s
ZWFuQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKSwgKGludHB0cl90KXNl
dEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCi0g
ICAgeyAicmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21Ob25FbXB0eVVSTEF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgImF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiBUSFVO
S19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIERvbnRE
ZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2Jq
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24gVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAic3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKSwgKGludHB0cl90KXNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIFRIVU5LX0dFTkVSQVRPUigwKSB9LApAQCAtMzU1LDE1ICszNTMsNiBAQCBK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWROb25FbXB0eVVSTEF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKLXsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChz
bG90QmFzZSkpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRub25lbXB0eXVybGF0dHJBdHRyKSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQogSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKQEAgLTQwMCwxNSArMzg5LDYgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21VUkxBdHRyKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCi17Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9i
aio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhl
eGVjLCBpbXAtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudE5vbkVtcHR5VVJMQXR0ckF0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
CiBKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKQEAgLTU5NSwxMyArNTc1LDYgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRy
KEV4ZWNTdAogICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkdXJsYXR0ckF0dHIsIHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSk7
CiB9CiAKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7
Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7Ci0gICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRub25lbXB0eXVybGF0dHJBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2
YWx1ZSkpOwotfQotCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0
KTsKQEAgLTYzMCwxMyArNjAzLDYgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21V
UkxBdHRyKAogICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9t
Q29udGVudFVSTEF0dHJBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1
ZSkpOwogfQogCi12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQot
ewotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRo
aXNPYmplY3QpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwotICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudE5vbkVtcHR5VVJMQXR0ckF0dHIsIHZhbHVlVG9TdHJpbmdXaXRoTnVs
bENoZWNrKGV4ZWMsIHZhbHVlKSk7Ci19Ci0KIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPih0aGlzT2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZpc2lvbiA2MzM4MikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksOCArMTM5
LDYgQEAgSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdAogdm9pZCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
Owogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqUmVmbGVj
dGVkTm9uRW1wdHlVUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKLXZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkTm9uRW1wdHlVUkxB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6
OkpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CiB2b2lkIHNldEpTVGVzdE9ialJl
ZmxlY3RlZFN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
OwpAQCAtMTQ5LDggKzE0Nyw2IEBAIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21Cb28KIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFs
dWUpOwotSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
Ci12b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpz
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAko
cmV2aXNpb24gNjMzODIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsNiBAQCBlbnVtIHsKIC0gKHZv
aWQpc2V0UmVmbGVjdGVkQm9vbGVhbkF0dHI6KEJPT0wpbmV3UmVmbGVjdGVkQm9vbGVhbkF0dHI7
CiAtIChOU1N0cmluZyAqKXJlZmxlY3RlZFVSTEF0dHI7CiAtICh2b2lkKXNldFJlZmxlY3RlZFVS
TEF0dHI6KE5TU3RyaW5nICopbmV3UmVmbGVjdGVkVVJMQXR0cjsKLS0gKE5TU3RyaW5nICopcmVm
bGVjdGVkTm9uRW1wdHlVUkxBdHRyOwotLSAodm9pZClzZXRSZWZsZWN0ZWROb25FbXB0eVVSTEF0
dHI6KE5TU3RyaW5nICopbmV3UmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyOwogLSAoTlNTdHJpbmcg
KilyZWZsZWN0ZWRTdHJpbmdBdHRyOwogLSAodm9pZClzZXRSZWZsZWN0ZWRTdHJpbmdBdHRyOihO
U1N0cmluZyAqKW5ld1JlZmxlY3RlZFN0cmluZ0F0dHI7CiAtIChpbnQpcmVmbGVjdGVkQ3VzdG9t
SW50ZWdyYWxBdHRyOwpAQCAtNzQsOCArNzIsNiBAQCBlbnVtIHsKIC0gKHZvaWQpc2V0UmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHI6KEJPT0wpbmV3UmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHI7
CiAtIChOU1N0cmluZyAqKXJlZmxlY3RlZEN1c3RvbVVSTEF0dHI7CiAtICh2b2lkKXNldFJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHI6KE5TU3RyaW5nICopbmV3UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cjsK
LS0gKE5TU3RyaW5nICopcmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyOwotLSAodm9pZClz
ZXRSZWZsZWN0ZWRDdXN0b21Ob25FbXB0eVVSTEF0dHI6KE5TU3RyaW5nICopbmV3UmVmbGVjdGVk
Q3VzdG9tTm9uRW1wdHlVUkxBdHRyOwogLSAoaW50KWF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uOwog
LSAodm9pZClzZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbjooaW50KW5ld0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uOwogLSAoaW50KWF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQkocmV2aXNp
b24gNjMzODIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmoubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMiwxOCArMjAyLDYgQEAgLSAodm9pZClzZXRSZWZs
ZWN0ZWRVUkxBdHRyOihOU1N0cmluZyAqKQogICAgIElNUEwtPnNldEF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyLCBuZXdSZWZsZWN0ZWRVUkxBdHRyKTsK
IH0KIAotLSAoTlNTdHJpbmcgKilyZWZsZWN0ZWROb25FbXB0eVVSTEF0dHIKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkbm9uZW1wdHl1
cmxhdHRyQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0UmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyOihO
U1N0cmluZyAqKW5ld1JlZmxlY3RlZE5vbkVtcHR5VVJMQXR0cgotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRub25lbXB0eXVybGF0dHJBdHRyLCBuZXdSZWZsZWN0ZWRO
b25FbXB0eVVSTEF0dHIpOwotfQotCiAtIChOU1N0cmluZyAqKXJlZmxlY3RlZFN0cmluZ0F0dHIK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0yNjIsMTgg
KzI1MCw2IEBAIC0gKHZvaWQpc2V0UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cjooTlNTdHIKICAgICBJ
TVBMLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0
ckF0dHIsIG5ld1JlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOwogfQogCi0tIChOU1N0cmluZyAqKXJl
ZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Tm9uRW1wdHlVUkxBdHRyQXR0cik7
Ci19Ci0KLS0gKHZvaWQpc2V0UmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyOihOU1N0cmlu
ZyAqKW5ld1JlZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0cgotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Tm9uRW1wdHlVUkxBdHRyQXR0ciwgbmV3UmVmbGVj
dGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyKTsKLX0KLQogLSAoaW50KWF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCShy
ZXZpc2lvbiA2MzM4MikKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOCwyMiArMjE4LDYgQEAgc3RhdGljIHZvaWQg
cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXIodgogICAgIHJldHVybjsKIH0KIAotc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWROb25FbXB0eVVSTEF0dHJBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQot
ewotICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyLl9n
ZXQiKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkbm9uZW1wdHl1cmxhdHRyQXR0cikpOwotfQotCi1z
dGF0aWMgdm9pZCByZWZsZWN0ZWROb25FbXB0eVVSTEF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3Rl
ZE5vbkVtcHR5VVJMQXR0ci5fc2V0Iik7Ci0gICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBWOFBhcmFtZXRlcjxXaXRoTnVsbENoZWNrPiB2
ID0gdmFsdWU7Ci0gICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWRub25lbXB0eXVybGF0dHJBdHRyLCB2KTsKLSAgICByZXR1cm47Ci19Ci0KIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRyLl9nZXQiKTsKQEAg
LTI5OCwyMiArMjgyLDYgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJT
ZQogICAgIHJldHVybjsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0
ZWRDdXN0b21Ob25FbXB0eVVSTEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQotewotICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoucmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyLl9nZXQiKTsKLSAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVy
biB2OFN0cmluZyhpbXAtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudE5vbkVtcHR5VVJMQXR0ckF0dHIpKTsKLX0KLQotc3RhdGljIHZvaWQg
cmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRDdXN0
b21Ob25FbXB0eVVSTEF0dHIuX3NldCIpOwotICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVjhQYXJhbWV0ZXI8V2l0aE51bGxDaGVjaz4g
diA9IHZhbHVlOwotICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudE5vbkVtcHR5VVJMQXR0ckF0dHIsIHYpOwotICAgIHJldHVybjsKLX0KLQogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5hdHRyV2l0aEdldHRlckV4Y2VwdGlv
bi5fZ2V0Iik7CkBAIC05NDYsOCArOTE0LDYgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUgVGVzdE9iakF0dAogICAgIHsicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBUZXN0T2JqSW50ZXJu
YWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpyZWZs
ZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJp
YnV0ZSAncmVmbGVjdGVkVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwg
UmVmbGVjdCcpCiAgICAgeyJyZWZsZWN0ZWRVUkxBdHRyIiwgVGVzdE9iakludGVybmFsOjpyZWZs
ZWN0ZWRVUkxBdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRy
QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCi0gICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRO
b25FbXB0eVVSTEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVVJMIE5vbkVtcHR5
IFJlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyIiwgVGVzdE9iakludGVy
bmFsOjpyZWZsZWN0ZWROb25FbXB0eVVSTEF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6
OnJlZmxlY3RlZE5vbkVtcHR5VVJMQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdSZWZsZWN0JykKICAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqSW50
ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OnJl
ZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3JlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdSZWZsZWN0JykKQEAgLTk1Niw4ICs5MjIsNiBAQCBzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBUZXN0T2JqQXR0CiAgICAgeyJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIs
IFRlc3RPYmpJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyLCBU
ZXN0T2JqSW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21VUkxBdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1VSTCBSZWZsZWN0JykKICAgICB7InJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHIiLCBUZXN0T2JqSW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJB
dHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKLSAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEN1c3RvbU5v
bkVtcHR5VVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwgTm9uRW1wdHkg
UmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRDdXN0b21Ob25FbXB0eVVSTEF0dHIiLCBUZXN0T2Jq
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbU5vbkVtcHR5VVJMQXR0ckF0dHJHZXR0ZXIsIFRlc3RP
YmpJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyQXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0aEdldHRlckV4Y2VwdGlvbicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiYXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iLCBUZXN0T2JqSW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ciwgVGVzdE9iakludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24n
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYzMzgyKQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNyArMjk2LDcgQEAgUmVuZGVyT2JqZWN0KiBI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVSZQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50
KCk7Ci0gICAgaWYgKCFzcmMoKS5pc0VtcHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09S
S19FTVBUWSkKKyAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgbV9u
ZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CiB9
CiAKQEAgLTQyMiwxMSArNDIyLDYgQEAgUGFzc1JlZlB0cjxNZWRpYUVycm9yPiBIVE1MTWVkaWFF
bGVtZW50OgogICAgIHJldHVybiBtX2Vycm9yOwogfQogCi1LVVJMIEhUTUxNZWRpYUVsZW1lbnQ6
OnNyYygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0
dHIpOwotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBzZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdXJsKTsKQEAgLTY1NCw5ICs2NDksOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zCiAgICAgbV9wbGF5ZXIt
PmxvYWQobV9jdXJyZW50U3JjLCBjb250ZW50VHlwZSk7CiAKICAgICBpZiAoaXNWaWRlbygpICYm
IG1fcGxheWVyLT5jYW5Mb2FkUG9zdGVyKCkpIHsKLSAgICAgICAgS1VSTCBwb3N0ZXJVcmwgPSBw
b3N0ZXIoKTsKLSAgICAgICAgaWYgKCFwb3N0ZXJVcmwuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9wbGF5ZXItPnNldFBvc3Rlcihwb3N0ZXJVcmwpOworICAgICAgICBLVVJMIHBvc3RlclVSTCA9
IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgICAgICBpZiAoIXBvc3Rl
clVSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX3BsYXllci0+c2V0UG9zdGVyKHBvc3RlclVS
TCk7CiAgICAgfQogCiAgICAgaWYgKHJlbmRlcmVyKCkpCkBAIC0xOTU1LDEzICsxOTUwLDEwIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXIKICAgICBGcmFtZUxvYWRl
ciogbG9hZGVyID0gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkgOiAwOwogCiAgICAgaWYgKGlzVmlk
ZW8oKSkgewotICAgICAgICBTdHJpbmcgcG9zdGVyID0gcG9zdGVyKCk7Ci0gICAgICAgIGlmICgh
cG9zdGVyLmlzRW1wdHkoKSAmJiBsb2FkZXIpIHsKLSAgICAgICAgICAgIEtVUkwgcG9zdGVyVVJM
ID0gbG9hZGVyLT5jb21wbGV0ZVVSTChwb3N0ZXIpOwotICAgICAgICAgICAgaWYgKHBvc3RlclVS
TC5pc1ZhbGlkKCkgJiYgbG9hZGVyLT53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwp
KSB7Ci0gICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKCJfbWVkaWFfZWxlbWVudF9wb3N0ZXJf
Iik7Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5nKCkpOwot
ICAgICAgICAgICAgfQorICAgICAgICBLVVJMIHBvc3RlclVSTCA9IGdldE5vbkVtcHR5VVJMQXR0
cmlidXRlKHBvc3RlckF0dHIpOworICAgICAgICBpZiAoIXBvc3RlclVSTC5pc0VtcHR5KCkgJiYg
bG9hZGVyICYmIGxvYWRlci0+d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwocG9zdGVyVVJMKSkgewor
ICAgICAgICAgICAgbmFtZXMuYXBwZW5kKCJfbWVkaWFfZWxlbWVudF9wb3N0ZXJfIik7CisgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKHBvc3RlclVSTC5zdHJpbmcoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gNjMzODIpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw2IEBAIHB1YmxpYzoKIAogICAgIC8vIEV2ZW50dWFsbHkgb3ZlcmxvYWRlZCBpbiBIVE1MVmlk
ZW9FbGVtZW50CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgY29uc3QgS1VSTCBwb3N0ZXIoKSBjb25zdCB7
IHJldHVybiBLVVJMKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NhdmUoKSBjb25z
dDsKICAgICAKQEAgLTg0LDcgKzgzLDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8TWVkaWFF
cnJvcj4gZXJyb3IoKSBjb25zdDsKIAogLy8gbmV0d29yayBzdGF0ZQotICAgIEtVUkwgc3JjKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRTcmMoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1cnJl
bnRTcmMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkocmV2aXNp
b24gNjMzODIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1WSURFT10gSFRN
TE1lZGlhRQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYUVycm9yIGVycm9yOwogCiAgICAg
Ly8gbmV0d29yayBzdGF0ZQotICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxOb25FbXB0eSxVUkxdIERP
TVN0cmluZyBzcmM7CisgICAgYXR0cmlidXRlIFtSZWZsZWN0LFVSTF0gRE9NU3RyaW5nIHNyYzsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGN1cnJlbnRTcmM7CiAgICAgCiAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19FTVBUWSA9IDA7CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYzMzgyKQorKysgV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTEgKzYyLDYgQEAgdm9pZCBI
VE1MU291cmNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdQogICAgIH0KIH0KIAotS1VSTCBIVE1M
U291cmNlRWxlbWVudDo6c3JjKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoc3JjQXR0cik7Ci19Ci0KIHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnNldFNyYyhj
b25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBzZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdXJsKTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCShyZXZpc2lvbiA2MzM4MikKKysrIFdlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBA
IGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50IDogcHVibGljIEhUTUxFbGUKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgS1VSTCBzcmMoKSBjb25zdDsKICAgICBTdHJpbmcg
bWVkaWEoKSBjb25zdDsKICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3Jj
KGNvbnN0IFN0cmluZyYpOyAgICAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbAko
cmV2aXNpb24gNjMzODIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBodG1sIHsKIGludGVyZmFj
ZSBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxTb3VyY2VFbGVtZW50IDogSFRNTEVsZW1lbnQgewot
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxOb25FbXB0eSxVUkxdIERPTVN0cmluZyBzcmM7CisgICAg
YXR0cmlidXRlIFtSZWZsZWN0LFVSTF0gRE9NU3RyaW5nIHNyYzsKICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHR5cGU7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYTsKIH07CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MzM4MikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKIAogICAgIGlmIChhdHRyTmFtZSA9
PSBwb3N0ZXJBdHRyKSB7Ci0gICAgICAgIG1fcG9zdGVyVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRy
aWJ1dGUocG9zdGVyQXR0cik7CiAgICAgICAgIHVwZGF0ZVBvc3RlckltYWdlKCk7CiAgICAgICAg
IGlmIChtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSkgewogI2lmICFFTkFCTEUoUExVR0lOX1BS
T1hZX0ZPUl9WSURFTykKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9t
RWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogI2Vsc2UKICAgICAgICAgICAgIGlmIChw
bGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBwbGF5ZXIoKS0+c2V0UG9zdGVyKHBvc3RlcigpKTsK
KyAgICAgICAgICAgICAgICBwbGF5ZXIoKS0+c2V0UG9zdGVyKGdldE5vbkVtcHR5VVJMQXR0cmli
dXRlKHBvc3RlckF0dHIpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRy
TmFtZSA9PSB3aWR0aEF0dHIpCkBAIC0xNzksNyArMTc4LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVt
ZW50Ojp1cGRhdGVQb3N0ZXJJbWFnZQogICAgIGJvb2wgb2xkU2hvdWxkU2hvd1Bvc3RlckltYWdl
ID0gbV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2U7CiAjZW5kaWYKIAotICAgIG1fc2hvdWxkRGlz
cGxheVBvc3RlckltYWdlID0gIXBvc3RlcigpLmlzRW1wdHkoKSAmJiAhaGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSgpOworICAgIG1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlID0gIWdldEF0dHJpYnV0
ZShwb3N0ZXJBdHRyKS5pc0VtcHR5KCkgJiYgIWhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBpZiAocmVuZGVyZXIoKSAm
JiBvbGRTaG91bGRTaG93UG9zdGVySW1hZ2UgIT0gbV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2Up
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHJldmlzaW9uIDYzMzgyKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsNiBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVk
IHZpZGVvSGVpZ2h0KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBLVVJMIHBvc3Rl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zdGVyVVJMOyB9Ci0KICAgICAvLyBGdWxsc2NyZWVuCiAg
ICAgdm9pZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oYm9vbCBpc1VzZXJHZXN0dXJlLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOwpAQCAtODQsNyArODIs
NiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwogCiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKLSAgICBL
VVJMIG1fcG9zdGVyVVJMOwogICAgIGJvb2wgbV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2U7CiB9
OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCShyZXZpc2lvbiA2MzM4MikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gdW5z
aWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHZpZGVvV2lkdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IHZpZGVvSGVpZ2h0OwotICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsTm9uRW1wdHksVVJMXSBE
T01TdHJpbmcgcG9zdGVyOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJp
bmcgcG9zdGVyOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFN1
cHBvcnRzRnVsbHNjcmVlbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Vi
a2l0RGlzcGxheWluZ0Z1bGxzY3JlZW47CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzM4NCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEw
LTA3LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb27igJl0IGhhbmRsZSBlbXB0eSBVUkwg
YXR0cmlidXRlcyBzcGVjaWFsbHkgaW4gcmVmbGVjdGlvbiwgZXZlbiBpbiBjYXNlcyBzdWNoIGFz
IDxpbWcgc3JjPSIiPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDIwODcKKworICAgICAgICAqIGZhc3QvZG9tL1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlv
bi1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3Rz
L1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi5qczogVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBz
byB0aGF0IGV2ZW4KKyAgICAgICAgZm9yIFVSTHMgd2hlcmUgIiIgaXMgaW52YWxpZCwgd2UgcmVm
bGVjdCB0aGUgZW1wdHkgc3RyaW5nIHJlc29sdmVkIHRvIHRoZSBiYXNlIFVSTC4KKworICAgICAg
ICAqIG1lZGlhL3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICog
bWVkaWEvdmlkZW8tcG9zdGVyLmh0bWw6IFVwZGF0ZWQgdG8gZXhwZWN0IHBvc3Rlcj0iIiB0byBy
ZWZsZWN0IGFzIHRoZSBiYXNlIFVSTC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtZXJy
b3Itbm8tY2FuZGlkYXRlLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1zcmMtbm9uZS1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogbWVkaWEvdmlk
ZW8tc3JjLW5vbmUuaHRtbDogVXBkYXRlZCB0byBleHBlY3Qgc3JjPSIiIHRvIHJlZmxlY3QgYXMg
dGhlIGJhc2UgVVJMLgorCiAyMDEwLTA3LTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIFRoZSBzYW1lIG9sZCBkaXJlY3RvcnkgbmFtZSB3YXMgcHJlc2Vu
dCBpbiBtYWMtdGlnZXIgc2tpcHBlZCBsaXN0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
VVJMLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9VUkwtYXR0cmlidXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MzM4MikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1VSTC1hdHRyaWJ1dGUtcmVm
bGVjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDI2ICsxMCwyNiBAQCBG
QUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdjaXRlJywgJ2Jsb2NrcXVvCiBGQUlMIHRlc3RVUkxSZWZs
ZWN0aW9uKCdjaXRlJywgJ2RlbCcpIHNob3VsZCBiZSBVUkwuIFdhcyBub24tVVJMLgogRkFJTCB0
ZXN0VVJMUmVmbGVjdGlvbignY2l0ZScsICdpbnMnKSBzaG91bGQgYmUgVVJMLiBXYXMgbm9uLVVS
TC4KIEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ2NpdGUnLCAncScpIHNob3VsZCBiZSBVUkwuIFdh
cyBub24tVVJMLgotRkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignZGF0YScsICdvYmplY3QnKSBzaG91
bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2FzIFVSTC4KK1BBU1MgdGVzdFVSTFJlZmxlY3Rpb24oJ2Rh
dGEnLCAnb2JqZWN0JykgaXMgJ1VSTCcKIEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ2Zvcm1hY3Rp
b24nLCAnYnV0dG9uJykgc2hvdWxkIGJlIFVSTC4gV2FzIG5vbmUuCiBGQUlMIHRlc3RVUkxSZWZs
ZWN0aW9uKCdmb3JtYWN0aW9uJywgJ2lucHV0Jykgc2hvdWxkIGJlIFVSTC4gV2FzIG5vbmUuCiBQ
QVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdocmVmJywgJ2EnKSBpcyAnVVJMJwogUEFTUyB0ZXN0VVJM
UmVmbGVjdGlvbignaHJlZicsICdhcmVhJykgaXMgJ1VSTCcKLUZBSUwgdGVzdFVSTFJlZmxlY3Rp
b24oJ2hyZWYnLCAnbGluaycpIHNob3VsZCBiZSBub24tZW1wdHkgVVJMLiBXYXMgVVJMLgorUEFT
UyB0ZXN0VVJMUmVmbGVjdGlvbignaHJlZicsICdsaW5rJykgaXMgJ1VSTCcKIEZBSUwgdGVzdFVS
TFJlZmxlY3Rpb24oJ2hyZWYnLCAnYmFzZScpIHNob3VsZCBiZSBVUkwuIFdhcyBub24tVVJMLgot
RkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignaWNvbicsICdjb21tYW5kJykgc2hvdWxkIGJlIG5vbi1l
bXB0eSBVUkwuIFdhcyBub25lLgotRkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignbWFuaWZlc3QnLCAn
aHRtbCcpIHNob3VsZCBiZSBub24tZW1wdHkgVVJMLiBXYXMgbm9uZS4KLVBBU1MgdGVzdFVSTFJl
ZmxlY3Rpb24oJ3Bvc3RlcicsICd2aWRlbycpIGlzICdub24tZW1wdHkgVVJMJwotUEFTUyB0ZXN0
VVJMUmVmbGVjdGlvbignc3JjJywgJ2F1ZGlvJykgaXMgJ25vbi1lbXB0eSBVUkwnCi1GQUlMIHRl
c3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnZW1iZWQnKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4g
V2FzIG5vbi1VUkwuCi1GQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnaWZyYW1lJykgc2hv
dWxkIGJlIG5vbi1lbXB0eSBVUkwuIFdhcyBub24tVVJMLgotRkFJTCB0ZXN0VVJMUmVmbGVjdGlv
bignc3JjJywgJ2ltZycpIHNob3VsZCBiZSBub24tZW1wdHkgVVJMLiBXYXMgVVJMLgotRkFJTCB0
ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2lucHV0Jykgc2hvdWxkIGJlIG5vbi1lbXB0eSBVUkwu
IFdhcyBVUkwuCi1GQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnc2NyaXB0Jykgc2hvdWxk
IGJlIG5vbi1lbXB0eSBVUkwuIFdhcyBVUkwuCi1QQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMn
LCAnc291cmNlJykgaXMgJ25vbi1lbXB0eSBVUkwnCi1QQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdz
cmMnLCAndmlkZW8nKSBpcyAnbm9uLWVtcHR5IFVSTCcKLUZBSUwgdGVzdFVSTFJlZmxlY3Rpb24o
J2xvbmdEZXNjJywgJ2ltZycpIHNob3VsZCBiZSBub24tZW1wdHkgVVJMLiBXYXMgVVJMLgotRkFJ
TCB0ZXN0VVJMUmVmbGVjdGlvbignbG93c3JjJywgJ2ltZycpIHNob3VsZCBiZSBub24tZW1wdHkg
VVJMLiBXYXMgVVJMLgorRkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignaWNvbicsICdjb21tYW5kJykg
c2hvdWxkIGJlIFVSTC4gV2FzIG5vbmUuCitGQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdtYW5pZmVz
dCcsICdodG1sJykgc2hvdWxkIGJlIFVSTC4gV2FzIG5vbmUuCitQQVNTIHRlc3RVUkxSZWZsZWN0
aW9uKCdwb3N0ZXInLCAndmlkZW8nKSBpcyAnVVJMJworUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbign
c3JjJywgJ2F1ZGlvJykgaXMgJ1VSTCcKK0ZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdl
bWJlZCcpIHNob3VsZCBiZSBVUkwuIFdhcyBub24tVVJMLgorRkFJTCB0ZXN0VVJMUmVmbGVjdGlv
bignc3JjJywgJ2lmcmFtZScpIHNob3VsZCBiZSBVUkwuIFdhcyBub24tVVJMLgorUEFTUyB0ZXN0
VVJMUmVmbGVjdGlvbignc3JjJywgJ2ltZycpIGlzICdVUkwnCitQQVNTIHRlc3RVUkxSZWZsZWN0
aW9uKCdzcmMnLCAnaW5wdXQnKSBpcyAnVVJMJworUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignc3Jj
JywgJ3NjcmlwdCcpIGlzICdVUkwnCitQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnc291
cmNlJykgaXMgJ1VSTCcKK1BBU1MgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICd2aWRlbycpIGlz
ICdVUkwnCitQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdsb25nRGVzYycsICdpbWcnKSBpcyAnVVJM
JworUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignbG93c3JjJywgJ2ltZycpIGlzICdVUkwnCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9VUkwtYXR0cmlidXRlLXJlZmxlY3Rpb24uanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL1VSTC1hdHRy
aWJ1dGUtcmVmbGVjdGlvbi5qcwkocmV2aXNpb24gNjMzODIpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zY3JpcHQtdGVzdHMvVVJMLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwzNSArMzYsMzUgQEAgc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdhdHRy
aWJ1dGUnLAogc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdpZCcsICdlbGVtZW50JykiLCAi
J25vbi1VUkwnIik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgbGlzdCBjb21lcyBmcm9tIHRoZSBIVE1M
NSBkb2N1bWVudOKAmXMgYXR0cmlidXRlcyBpbmRleC4KLS8vIFRoZSBleHBlY3RlZCByZXN1bHRz
IGFyZSBiYXNlZCBvbiB3aGF0IHRoZSB0YWJsZSB0aGVyZSBzYXlzLgorLy8gVGhlc2UgYXJlIHRo
ZSBVUkwgYXR0cmlidXRlcyBmcm9tIHRoYXQgbGlzdC4KIAogc2hvdWxkQmUoInRlc3RVUkxSZWZs
ZWN0aW9uKCdhY3Rpb24nLCAnZm9ybScpIiwgIidVUkwnIik7CiBzaG91bGRCZSgidGVzdFVSTFJl
ZmxlY3Rpb24oJ2NpdGUnLCAnYmxvY2txdW90ZScpIiwgIidVUkwnIik7CiBzaG91bGRCZSgidGVz
dFVSTFJlZmxlY3Rpb24oJ2NpdGUnLCAnZGVsJykiLCAiJ1VSTCciKTsKIHNob3VsZEJlKCJ0ZXN0
VVJMUmVmbGVjdGlvbignY2l0ZScsICdpbnMnKSIsICInVVJMJyIpOwogc2hvdWxkQmUoInRlc3RV
UkxSZWZsZWN0aW9uKCdjaXRlJywgJ3EnKSIsICInVVJMJyIpOwotc2hvdWxkQmUoInRlc3RVUkxS
ZWZsZWN0aW9uKCdkYXRhJywgJ29iamVjdCcpIiwgIidub24tZW1wdHkgVVJMJyIpOworc2hvdWxk
QmUoInRlc3RVUkxSZWZsZWN0aW9uKCdkYXRhJywgJ29iamVjdCcpIiwgIidVUkwnIik7CiBzaG91
bGRCZSgidGVzdFVSTFJlZmxlY3Rpb24oJ2Zvcm1hY3Rpb24nLCAnYnV0dG9uJykiLCAiJ1VSTCci
KTsKIHNob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbignZm9ybWFjdGlvbicsICdpbnB1dCcpIiwg
IidVUkwnIik7CiBzaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rpb24oJ2hyZWYnLCAnYScpIiwgIidV
UkwnIik7CiBzaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rpb24oJ2hyZWYnLCAnYXJlYScpIiwgIidV
UkwnIik7Ci1zaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rpb24oJ2hyZWYnLCAnbGluaycpIiwgIidu
b24tZW1wdHkgVVJMJyIpOworc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdocmVmJywgJ2xp
bmsnKSIsICInVVJMJyIpOwogc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdocmVmJywgJ2Jh
c2UnKSIsICInVVJMJyIpOwotc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdpY29uJywgJ2Nv
bW1hbmQnKSIsICInbm9uLWVtcHR5IFVSTCciKTsKLXNob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlv
bignbWFuaWZlc3QnLCAnaHRtbCcpIiwgIidub24tZW1wdHkgVVJMJyIpOwotc2hvdWxkQmUoInRl
c3RVUkxSZWZsZWN0aW9uKCdwb3N0ZXInLCAndmlkZW8nKSIsICInbm9uLWVtcHR5IFVSTCciKTsK
LXNob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2F1ZGlvJykiLCAiJ25vbi1lbXB0
eSBVUkwnIik7Ci1zaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdlbWJlZCcpIiwg
Iidub24tZW1wdHkgVVJMJyIpOwotc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAn
aWZyYW1lJykiLCAiJ25vbi1lbXB0eSBVUkwnIik7Ci1zaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rp
b24oJ3NyYycsICdpbWcnKSIsICInbm9uLWVtcHR5IFVSTCciKTsKLXNob3VsZEJlKCJ0ZXN0VVJM
UmVmbGVjdGlvbignc3JjJywgJ2lucHV0JykiLCAiJ25vbi1lbXB0eSBVUkwnIik7Ci1zaG91bGRC
ZSgidGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdzY3JpcHQnKSIsICInbm9uLWVtcHR5IFVSTCci
KTsKLXNob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ3NvdXJjZScpIiwgIidub24t
ZW1wdHkgVVJMJyIpOwotc2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAndmlkZW8n
KSIsICInbm9uLWVtcHR5IFVSTCciKTsKK3Nob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbignaWNv
bicsICdjb21tYW5kJykiLCAiJ1VSTCciKTsKK3Nob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbign
bWFuaWZlc3QnLCAnaHRtbCcpIiwgIidVUkwnIik7CitzaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rp
b24oJ3Bvc3RlcicsICd2aWRlbycpIiwgIidVUkwnIik7CitzaG91bGRCZSgidGVzdFVSTFJlZmxl
Y3Rpb24oJ3NyYycsICdhdWRpbycpIiwgIidVUkwnIik7CitzaG91bGRCZSgidGVzdFVSTFJlZmxl
Y3Rpb24oJ3NyYycsICdlbWJlZCcpIiwgIidVUkwnIik7CitzaG91bGRCZSgidGVzdFVSTFJlZmxl
Y3Rpb24oJ3NyYycsICdpZnJhbWUnKSIsICInVVJMJyIpOworc2hvdWxkQmUoInRlc3RVUkxSZWZs
ZWN0aW9uKCdzcmMnLCAnaW1nJykiLCAiJ1VSTCciKTsKK3Nob3VsZEJlKCJ0ZXN0VVJMUmVmbGVj
dGlvbignc3JjJywgJ2lucHV0JykiLCAiJ1VSTCciKTsKK3Nob3VsZEJlKCJ0ZXN0VVJMUmVmbGVj
dGlvbignc3JjJywgJ3NjcmlwdCcpIiwgIidVUkwnIik7CitzaG91bGRCZSgidGVzdFVSTFJlZmxl
Y3Rpb24oJ3NyYycsICdzb3VyY2UnKSIsICInVVJMJyIpOworc2hvdWxkQmUoInRlc3RVUkxSZWZs
ZWN0aW9uKCdzcmMnLCAndmlkZW8nKSIsICInVVJMJyIpOwogCiAvLyBPdGhlciByZWZsZWN0ZWQg
VVJMIGF0dHJpYnV0ZXMuCiAKLXNob3VsZEJlKCJ0ZXN0VVJMUmVmbGVjdGlvbignbG9uZ0Rlc2Mn
LCAnaW1nJykiLCAiJ25vbi1lbXB0eSBVUkwnIik7Ci1zaG91bGRCZSgidGVzdFVSTFJlZmxlY3Rp
b24oJ2xvd3NyYycsICdpbWcnKSIsICInbm9uLWVtcHR5IFVSTCciKTsKK3Nob3VsZEJlKCJ0ZXN0
VVJMUmVmbGVjdGlvbignbG9uZ0Rlc2MnLCAnaW1nJykiLCAiJ1VSTCciKTsKK3Nob3VsZEJlKCJ0
ZXN0VVJMUmVmbGVjdGlvbignbG93c3JjJywgJ2ltZycpIiwgIidVUkwnIik7CiAKIHZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9z
dGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1w
b3N0ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzM4MikKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBA
IEVYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5wb3N0ZXIpID09ICcKIAogU2V0ICdwb3N0ZXIn
IHRvICcnLgogRVhQRUNURUQgKHZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykgPT0gJycpIE9L
Ci1FWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8ucG9zdGVyKSA9PSAnJykgT0sKK0VYUEVDVEVE
IChyZWxhdGl2ZVVSTCh2aWRlby5wb3N0ZXIpID09ICd2aWRlby1wb3N0ZXIuaHRtbCcpIE9LCiAK
IFNldCAncG9zdGVyJyB0byAnY29udGVudC9hYmUucG5nJy4KIEVYUEVDVEVEICh2aWRlby5nZXRB
dHRyaWJ1dGUoJ3Bvc3RlcicpID09ICdjb250ZW50L2FiZS5wbmcnKSBPSwpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwJKHJldmlzaW9uIDYzMzgyKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDggQEAK
IAogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPlNldCAncG9zdGVyJyB0byAn
Jy48IiArICIvaT4iKTsKICAgICAgICAgICAgICAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3Bvc3Rl
cicsICcnKTsKLSAgICAgICAgICAgICAgICB0ZXN0UG9zdGVyKCcnKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykiLCAnJyk7CisgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5wb3N0ZXIpIiwgJ3Zp
ZGVvLXBvc3Rlci5odG1sJyk7CiAKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48
aT5TZXQgJ3Bvc3RlcicgdG8gJ2NvbnRlbnQvYWJlLnBuZycuPCIgKyAiL2k+Iik7CiAgICAgICAg
ICAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdwb3N0ZXInLCAnY29udGVudC9hYmUucG5nJyk7
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtZXJyb3Itbm8tY2FuZGlkYXRl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3Vy
Y2UtZXJyb3Itbm8tY2FuZGlkYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjMzODIpCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtZXJyb3Itbm8tY2FuZGlkYXRlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQCBFWFBFQ1RFRCAodmlkZW8uZXJy
b3IgPT0gJ251bGwnKSBPSwogRVZFTlQoZXJyb3IpIGZyb20gPHNvdXJjZSBpZD0ndW5zdXBwb3J0
ZWQtbWVkaWEtcXVlcnknIHNyYz0nY29udGVudC90ZXN0Lm1wNCc+IE9LCiBFWFBFQ1RFRCAodmlk
ZW8uZXJyb3IgPT0gJ251bGwnKSBPSwogCi1FVkVOVChlcnJvcikgZnJvbSA8c291cmNlIGlkPSdl
bXB0eS1zcmMnIHNyYz0nJz4gT0sKK0VWRU5UKGVycm9yKSBmcm9tIDxzb3VyY2UgaWQ9J2VtcHR5
LXNyYycgc3JjPSd2aWRlby1zb3VyY2UtZXJyb3Itbm8tY2FuZGlkYXRlLmh0bWwnPiBPSwogRVhQ
RUNURUQgKHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKIAogRU5EIE9GIFRFU1QKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1ub25lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtbm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDYzMzgyKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLW5vbmUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBFWFBFQ1RFRCAodmlkZW9zWzBdLnNyYyA9
PSAnJykgT0sKICoqIDx2aWRlbz4gd2l0aCBlbXB0eSBzcmMgYXR0cmlidXRlICoqCiBFWFBFQ1RF
RCAodmlkZW9zWzFdLmVycm9yID09ICdudWxsJykgT0sKIEVYUEVDVEVEICh2aWRlb3NbMV0ubmV0
d29ya1N0YXRlID09ICcwJykgT0sKLUVYUEVDVEVEICh2aWRlb3NbMV0uc3JjID09ICcnKSBPSwor
RVhQRUNURUQgKHZpZGVvc1sxXS5zcmMgPT0gJ3JlbGF0aXZlVVJMKCd2aWRlby1zcmMtbm9uZS5o
dG1sJyknKSwgT0JTRVJWRUQgJ2ZpbGU6Ly8vVm9sdW1lcy9Ib21lL2RhcmluL1NhZmFyaS9PcGVu
U291cmNlL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1ub25lLmh0bWwnIEZBSUwKIAogQ2Fs
bGluZyBsb2FkKCkgd2l0aCBlbXB0eSAnc3JjJyBzaG91bGQgZmlyZSAnZXJyb3InIGV2ZW50LCBz
ZXQgbmV0d29yayBzdGF0ZSB0byBORVRXT1JLX05PX1NPVVJDRSwgYW5kIHNldCBlcnJvciB0byBN
RURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQuCiAnZXJyb3InIGV2ZW50OgpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc3JjLW5vbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1zcmMtbm9uZS5odG1sCShyZXZpc2lvbiA2MzM4MikKKysrIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXNyYy1ub25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqICZsdDt2aWRlbyZndDsgd2l0
aCBlbXB0eSBzcmMgYXR0cmlidXRlICoqIik7CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlb3NbMV0uZXJyb3IiLCBudWxsKTsKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvc1sxXS5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkp
OwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW9zWzFdLnNyYyIsICIiKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvc1sxXS5zcmMiLCAicmVsYXRpdmVVUkwo
J3ZpZGVvLXNyYy1ub25lLmh0bWwnKSIpOwogCiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCI8YnI+PCIgKyAiaT5DYWxsaW5nIGxvYWQoKSB3aXRoIGVtcHR5ICdzcmMnIHNob3VsZCBmaXJl
ICdlcnJvcicgZXZlbnQsIHNldCBuZXR3b3JrIHN0YXRlIHRvIE5FVFdPUktfTk9fU09VUkNFLCBh
bmQgc2V0IGVycm9yIHRvIE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRC48IiArICIvaT4iKTsK
ICAgICAgICAgICAgICAgICBzdGF0ZSA9ICJsb2FkKCkgd2l0aCBlbXB0eSAnc3JjJyI7Cg==
</data>
<flag name="review"
          id="49648"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>