<?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>88239</bug_id>
          
          <creation_ts>2012-06-04 10:04:53 -0700</creation_ts>
          <short_desc>Move setAutofilled from LayoutTestController to window.internals()</short_desc>
          <delta_ts>2017-12-14 12:30:29 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>110521</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87284</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesus Sanchez-Palencia">jesus</reporter>
          <assigned_to name="Jesus Sanchez-Palencia">jesus</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>640648</commentid>
    <comment_count>0</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-06-04 10:04:53 -0700</bug_when>
    <thetext>Implement setAutofilled in window.internals, avoiding duplicated code in WebKitTestRunner and DumpRenderTree. This will also unskip tests for WKTR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640844</commentid>
    <comment_count>1</comment_count>
      <attachid>145628</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-06-04 14:33:08 -0700</bug_when>
    <thetext>Created attachment 145628
WIP patch for ews testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640845</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 14:35:17 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640851</commentid>
    <comment_count>3</comment_count>
      <attachid>145628</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-04 14:41:04 -0700</bug_when>
    <thetext>Comment on attachment 145628
WIP patch for ews testing

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

Moving the test hook to window.internals seems like a good thing, but Chromium at least will need to continue exposing this functionality via public API.  I expect this to be true for other ports as well.

&gt; Source/WebKit/chromium/public/WebInputElement.h:92
&gt; +        // FIXME: This can be removed if there are no Chromium-internal calls to it.
&gt; +        // See http://webkit.org/b/88239.
&gt;          WEBKIT_EXPORT void setAutofilled(bool);

This is incorrect - we call setAutofilled() via the public API and we will continue doing so.  It&apos;s a generally useful thing to know about for any embedder who implements autofill to set.

Also, some spurious newlines here.  Please remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640878</commentid>
    <comment_count>4</comment_count>
      <attachid>145628</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-04 15:08:40 -0700</bug_when>
    <thetext>Comment on attachment 145628
WIP patch for ews testing

Attachment 145628 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12906089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640926</commentid>
    <comment_count>5</comment_count>
      <attachid>145628</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-04 15:52:00 -0700</bug_when>
    <thetext>Comment on attachment 145628
WIP patch for ews testing

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

&gt; Source/WebKit/mac/DOM/WebDOMOperationsPrivate.h:44
&gt; +// FIXME: This can be removed if there are no Apple-internal calls to it.
&gt; +// See http://webkit.org/b/88239.
&gt;  - (void)_setAutofilled:(BOOL)autofilled;

This is in use, and can not be removed. I&apos;d like the API layer to continue being tested, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641475</commentid>
    <comment_count>6</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-06-05 06:08:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
Hi!

&gt; (From update of attachment 145628 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145628&amp;action=review
&gt; 
&gt; Moving the test hook to window.internals seems like a good thing, but Chromium at least will need to continue exposing this functionality via public API.  I expect this to be true for other ports as well.

I&apos;m not removing any private nor public APIs from any port, so I guess we are fine about this. I will remove the FIXMEs now that I know that these functions are actually used.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebInputElement.h:92
&gt; &gt; +        // FIXME: This can be removed if there are no Chromium-internal calls to it.
&gt; &gt; +        // See http://webkit.org/b/88239.
&gt; &gt;          WEBKIT_EXPORT void setAutofilled(bool);
&gt; 
&gt; This is incorrect - we call setAutofilled() via the public API and we will continue doing so.  It&apos;s a generally useful thing to know about for any embedder who implements autofill to set.
&gt; 
&gt; Also, some spurious newlines here.  Please remove before landing.

Will do, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641480</commentid>
    <comment_count>7</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-06-05 06:13:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
Hi!

&gt; (From update of attachment 145628 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145628&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/DOM/WebDOMOperationsPrivate.h:44
&gt; &gt; +// FIXME: This can be removed if there are no Apple-internal calls to it.
&gt; &gt; +// See http://webkit.org/b/88239.
&gt; &gt;  - (void)_setAutofilled:(BOOL)autofilled;
&gt; 
&gt; This is in use, and can not be removed. I&apos;d like the API layer to continue being tested, too.

I will remove the FIXMEs here as well, thanks.
I don&apos;t really get why using DRT to test public API seems reasonable, but of course no API layer should be left untested. I can see that most of these &quot;move from LTC to window.internals&quot; will be blocked by this issue, so the way here will be writing API tests for Mac and Win?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641528</commentid>
    <comment_count>8</comment_count>
      <attachid>145790</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-06-05 07:34:52 -0700</bug_when>
    <thetext>Created attachment 145790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653450</commentid>
    <comment_count>9</comment_count>
      <attachid>145790</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-20 07:30:03 -0700</bug_when>
    <thetext>Comment on attachment 145790
Patch

LGTM.  I look forward to more awesome patches like this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653451</commentid>
    <comment_count>10</comment_count>
      <attachid>145790</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 07:34:46 -0700</bug_when>
    <thetext>Comment on attachment 145790
Patch

Rejecting attachment 145790 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
g file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/forms/input-autofilled.html
patching file LayoutTests/fast/forms/reset-autofilled.html
patching file LayoutTests/platform/wk2/Skipped
Hunk #1 succeeded at 1001 (offset 2 lines).
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13003205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653553</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-20 09:37:17 -0700</bug_when>
    <thetext>I thought the consensus was not to move this one since it&apos;s testing important WebKit API on multiple ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655373</commentid>
    <comment_count>12</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-06-22 05:25:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 145790 [details])
&gt; LGTM.  I look forward to more awesome patches like this!
:D
Thanks for the review and feedback!


(In reply to comment #11)
&gt; I thought the consensus was not to move this one since it&apos;s testing important WebKit API on multiple ports.

I&apos;m not that sure we&apos;ve ever reached a consensus here, but I&apos;m looking forward to it.


Patch-wise, I will fix it on Monday because I was/am out of the office this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381749</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-12-14 12:30:29 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 110521 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145628</attachid>
            <date>2012-06-04 14:33:08 -0700</date>
            <delta_ts>2012-06-05 07:34:44 -0700</delta_ts>
            <desc>WIP patch for ews testing</desc>
            <filename>0001-setautofilled.patch</filename>
            <type>text/plain</type>
            <size>24655</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">RnJvbSAxMDA5MjYxMWI0NTkxYjJlMTIzMjU4OWFiZjZiZDFlMDBlNmZhMGE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhIDxqZXN1cy5wYWxlbmNp
YUBvcGVuYm9zc2Eub3JnPgpEYXRlOiBNb24sIDQgSnVuIDIwMTIgMTE6NTA6MzIgLTAzMDAKU3Vi
amVjdDogW1BBVENIXSBzZXRhdXRvZmlsbGVkCgotLS0KIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtYXV0b2ZpbGxlZC5odG1sICAgICAgIHwgICAgOCArKysrLS0tLQogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwgICAgICAgfCAgICA0ICsrLS0KIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICAgICAgIHwgICAxMCArKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAg
ICAgICAgfCAgICAyICsrCiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEVs
ZW1lbnQuaCAgICB8ICAgIDQgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHAgICAgfCAgIDEzIC0tLS0tLS0tLS0tLQogLi4uL2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCAgfCAgICAxIC0KIC4uLi9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwICAgIHwgICAxMyAtLS0tLS0tLS0tLS0K
IC4uLi9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggIHwgICAg
MSAtCiBTb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaCAgICB8
ICAgIDIgKysKIC4uLi9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHAgIHwgICAxMiAtLS0tLS0tLS0tLQogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmggICAgfCAgICAxIC0KIFNvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFz
c2VzLmggICAgICAgICAgICAgICAgIHwgICAgMiArKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwICAgICAgfCAgIDEyIC0tLS0tLS0tLS0tCiBUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oICAgICAgICB8ICAgIDEgLQogLi4uL2Js
YWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcCAgfCAgIDEzIC0tLS0t
LS0tLS0tLQogLi4uL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgICAgICAg
ICAgfCAgIDE4IC0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCB8ICAgIDQgLS0tLQogLi4uL0R1bXBSZW5kZXJUcmVlL2Vm
bC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAgfCAgICA1IC0tLS0tCiAuLi4vRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCB8ICAgIDUgLS0tLS0KIC4uLi9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gIHwgICAgOSAtLS0t
LS0tLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
IHwgICAgNSAtLS0tLQogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oICAgfCAgICAxIC0KIC4uLi9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwIHwgICAyMSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogVG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgfCAgICA1IC0tLS0tCiAyNiBmaWxl
cyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAppbmRleCA2MWFlMzYwLi4zYjJj
NThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbApA
QCAtMTIsOCArMTIsOCBAQAogICAgICAgICB2YXIgb3JpZ2luYWxGb3JlZ3JvdW5kID0gY29tcHV0
ZWRTdHlsZS5jb2xvcjsKICAgICAgICAgdmFyIG9yaWdpbmFsQmFja2dyb3VuZCA9IGNvbXB1dGVk
U3R5bGUuYmFja2dyb3VuZENvbG9yOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxs
ZWQodGYsIHRydWUpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldEF1dG9maWxsZWQodGYsIHRydWUpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gQm90aCB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgc2hvdWxkIGNo
YW5nZS4KQEAgLTI5LDggKzI5LDggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIGZhbHNlKTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRBdXRvZmls
bGVkKHRmLCBmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDb2xvcnMgc2hvdWxkIGJl
IHJlc3RvcmVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNldC1hdXRv
ZmlsbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRt
bAppbmRleCBkM2ZiZTdmLi40OWY4MzU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jl
c2V0LWF1dG9maWxsZWQuaHRtbApAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICB9CiAKICAgICAg
ICAgdmFyIGZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkJyk7Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQoZmllbGQsIHRydWUpOworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldEF1dG9maWxsZWQoZmll
bGQsIHRydWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhp
cyB0ZXN0IHJlcXVpcmVzIGEgTGF5b3V0VGVzdENvbnRyb2xsZXIuJyk7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjRhZDNmNi4uNmZk
YjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA5Miw0ICsxMDky
LDE0IEBAIHZvaWQgSW50ZXJuYWxzOjp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlCiAgICAgZG9jdW1lbnQtPndlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKIH0KICNlbmRpZgorCit2b2lkIEludGVy
bmFsczo6c2V0QXV0b2ZpbGxlZChFbGVtZW50KiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFlbGVtZW50ICYmICFlbGVtZW50LT50b0lu
cHV0RWxlbWVudCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKS0+c2V0QXV0
b2ZpbGxlZChpc0F1dG9maWxsZWQpOworfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggNmZhNGE0NS4uM2U5ODllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChEb2N1bWVudCosIEVsZW1lbnQqKTsKICAgICB2b2lkIHdlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChEb2N1bWVudCosIEVsZW1lbnQqKTsKICNlbmRpZgorICAg
IHZvaWQgc2V0QXV0b2ZpbGxlZChFbGVtZW50KiwgYm9vbCBpc0F1dG9maWxsZWQsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhYTEwODU4Li41ZjA3Y2Y2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTcsNiArMTU3LDggQEAgbW9k
dWxlIHdpbmRvdyB7CiAgICAgICAgIHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gRWxlbWVudCBlbGVtZW50KTsKICAgICAgICAg
dm9pZCB3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1l
bnQsIGluIEVsZW1lbnQgZWxlbWVudCk7CiAjZW5kaWYKKworICAgICAgICB2b2lkIHNldEF1dG9m
aWxsZWQoaW4gRWxlbWVudCBlbGVtZW50LCBpbiBib29sZWFuIGlzQXV0b2ZpbGxlZCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgKaW5kZXggZmJjMzUwMC4uZWYyYjY2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgKQEAgLTg1
LDggKzg1LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyBzdWdnZXN0ZWRWYWx1ZSgpIGNvbnN0OwogICAgICAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UGxhY2Vob2xkZXIoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIHBsYWNlaG9sZGVyKCkgY29uc3Q7CisKICAgICAgICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzQXV0b2ZpbGxlZCgpIGNvbnN0OworICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4g
YmUgcmVtb3ZlZCBpZiB0aGVyZSBhcmUgbm8gQ2hyb21pdW0taW50ZXJuYWwgY2FsbHMgdG8gaXQu
CisgICAgICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg4MjM5LgogICAgICAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0QXV0b2ZpbGxlZChib29sKTsKKwogICAgICAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW50LCBpbnQpOwogICAgICAgICBXRUJLSVRfRVhQ
T1JUIGludCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogICAgICAgICBXRUJLSVRfRVhQT1JUIGlu
dCBzZWxlY3Rpb25FbmQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IGI0
NWFlZjEuLjk0NTYxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMzM1LDE5ICsz
MzUsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0VmFsdWVGb3JVc2VyKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmCiAgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1
ZUZvclVzZXIodmFsdWUpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBi
b29sIGF1dG9maWxsZWQpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRl
eHQpOwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBXZWJDb3JlOjp0b0VsZW1lbnQo
dG9KUyhleGVjLCBub2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1
cm47Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVu
dC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQot
CiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RGVmZXJzTG9hZGluZyhFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpCiB7CiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9
IEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAppbmRl
eCAyYWUzNDMxLi5iZmQzZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtNjksNyArNjks
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc2VsZWN0aW9uUmVjdGFu
Z2xlKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyBzdWl0
YWJsZURSVEZyYW1lTmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRp
YyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVj
dCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IGRlZmVycyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdl
TG9hZGluZ1NldHRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgbG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAKaW5kZXggM2RkNmI0ZC4uNjc5MmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBA
IC03MTksMTkgKzcxOSw2IEBAIENTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjphY2Nl
c3NpYmlsaXR5SGVscFRleHQoQXRrT2JqZWN0KiBheE9iamVjdCkKICAgICByZXR1cm4gY29yZU9i
amVjdC0+aGVscFRleHQoKS51dGY4KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVP
YmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY29udGV4dCk7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4ZWMs
IG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgp
OwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dEVs
ZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCAzNGY3
YmRlLi4yZjBhYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtNzYsNyArNzYsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50
KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2li
bGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUo
V2ViS2l0V2ViRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZiwgYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2Vy
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZENsb3NlKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudERv
ZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKFdlYktpdFdlYkZyYW1lKiwgSlNTdHJpbmdS
ZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUu
aAppbmRleCBkM2JmNjhjLi5lNGVmN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
V2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaApAQCAtMzksNiArMzksOCBAQAogQGVuZAogCiBAaW50
ZXJmYWNlIERPTUhUTUxJbnB1dEVsZW1lbnQgKFdlYkRPTUhUTUxJbnB1dEVsZW1lbnRPcGVyYXRp
b25zUHJpdmF0ZSkKKy8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1vdmVkIGlmIHRoZXJlIGFyZSBu
byBBcHBsZS1pbnRlcm5hbCBjYWxscyB0byBpdC4KKy8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
Lzg4MjM5LgogLSAodm9pZClfc2V0QXV0b2ZpbGxlZDooQk9PTClhdXRvZmlsbGVkOwogLSAodm9p
ZClfc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKXZhbHVlOwogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcAppbmRleCBlNzBiZjAwLi5iYjNiYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApA
QCAtMjg5LDE4ICsyODksNiBAQCBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpoYXNEb2N1
bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gUVdlYkZyYW1lUHJpdmF0
ZTo6Y29yZShmcmFtZSktPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogfQogCi12b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50
JiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICBXZWJDb3JlOjpFbGVtZW50KiB3
ZWJFbGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7Ci0gICAgaWYgKCF3ZWJFbGVtZW50KQotICAg
ICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gd2ViRWxl
bWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRBdXRvZmlsbGVkKGlzQXV0b2ZpbGxlZCk7
Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFZhbHVlRm9yVXNlcihjb25z
dCBRV2ViRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUVN0cmluZyYgdmFsdWUpCiB7CiAgICAgV2Vi
Q29yZTo6RWxlbWVudCogd2ViRWxlbWVudCA9IGVsZW1lbnQubV9lbGVtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oCmluZGV4IDQxODAwZmEuLmRkNjMwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTEy
NCw3ICsxMjQsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnYXJiYWdlQ29sbGVjdG9y
Q29sbGVjdCgpOwogICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRl
cm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRBdXRv
ZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50JiwgYm9vbCBlbmFibGVkKTsKICAgICBzdGF0aWMgdm9p
ZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgUVdlYkVsZW1lbnQmLCBjb25zdCBRU3RyaW5nJiB2YWx1
ZSk7CiAgICAgc3RhdGljIGludCBqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CiAgICAgc3RhdGlj
IHZvaWQgY2xlYXJTY3JpcHRXb3JsZHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUhUTUxDbGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5oCmlu
ZGV4IDM0Yzc5NTEuLjk2ZDkyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhU
TUxDbGFzc2VzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuaApAQCAt
MjAxNSw2ICsyMDE1LDggQEAgcHVibGljOgogICAgICAgICAvKiBbb3V0XSAqLyBpbnQgKnN0YXJ0
LAogICAgICAgICAvKiBbb3V0XSAqLyBpbnQgKmVuZCk7CiAgICAgCisgICAgLy8gRklYTUU6IFRo
aXMgY2FuIGJlIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIEFwcGxlLWludGVybmFsIGNhbGxzIHRv
IGl0LgorICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg4MjM5LgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdXRvZmlsbGVkKCAKICAgICAgICAgLyogW2lu
XSAqLyBCT09MIGZpbGxlZCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAppbmRleCAyZmE4MGNmLi45ZDE0OGUwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMTUyLDE3ICsxMTUyLDYgQEAg
c3RhdGljIEpTVmFsdWVSZWYgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlMKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dG9maWxsZWRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0g
MiB8fCAhYXJndW1lbnRzWzBdKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Ci0KLSAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRBdXRvZmlsbGVkKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMV0pKTsKLQotICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYg
c2V0Q2FjaGVNb2RlbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICAvLyBIYXMgTWFjIGltcGxlbWVudGF0aW9uLgpAQCAtMjM3NSw3ICsyMzY0LDYgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAg
ICAgIHsgInNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQiLCBzZXRBdXRoZW50aWNhdGlvblBhc3N3
b3JkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25Vc2VybmFt
ZSIsIHNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCIsIHNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAic2V0QXV0b2ZpbGxlZCIsIHNldEF1
dG9maWxsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWNoZU1vZGVsIiwgc2V0
Q2FjaGVNb2RlbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbGxDbG9zZU9uV2Vi
Vmlld3MiLCBzZXRDYWxsQ2xvc2VPbldlYlZpZXdzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0Q2FuT3BlbldpbmRvd3MiLCBzZXRDYW5PcGVuV2luZG93c0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA2NDBk
MWMxLi45MmQ1YTAzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTk0LDcgKzk0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhp
bXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBz
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldEF1dG9maWxs
ZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCk7
CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7CiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lE
ZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpOwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVy
cnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJv
bGxlckJsYWNrQmVycnkuY3BwCmluZGV4IDRmMDQzZDkuLjY0MzI2M2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RD
b250cm9sbGVyQmxhY2tCZXJyeS5jcHAKQEAgLTczNywxOSArNzM3LDYgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3Qs
IGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29u
dGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4
ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lu
cHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6Om51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKEJsYWNrQmVycnk6OldlYktpdDo6
RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGM3MzkxNDMuLjUxZjg2ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE4NSw3ICsxODUsNiBAQCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVs
bCkKICAgICBiaW5kTWV0aG9kKCJzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
THMpOwogICAgIGJpbmRNZXRob2QoInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMpOwogICAgIGJpbmRNZXRob2QoInNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
dXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk7Ci0gICAgYmluZE1ldGhvZCgic2V0QXV0b2ZpbGxl
ZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk7CiAgICAgYmluZE1ldGhv
ZCgic2V0Q2FuT3BlbldpbmRvd3MiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENhbk9wZW5X
aW5kb3dzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29t
cGxldGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKTsKQEAgLTIwMjAs
MjMgKzIwMTksNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQogICAgIG1fc2hlbGwtPndlYlZp
ZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoYXJndW1lbnRzWzBdLnRv
RG91YmxlKCkpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17
Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8
fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJFbGVt
ZW50IGVsZW1lbnQ7Ci0gICAgaWYgKCFXZWJCaW5kaW5nczo6Z2V0RWxlbWVudChhcmd1bWVudHNb
MF0udmFsdWUub2JqZWN0VmFsdWUsICZlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
V2ViSW5wdXRFbGVtZW50KiBpbnB1dCA9IHRvV2ViSW5wdXRFbGVtZW50KCZlbGVtZW50KTsKLSAg
ICBpZiAoIWlucHV0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dC0+c2V0QXV0b2ZpbGxl
ZChhcmd1bWVudHNbMV0udmFsdWUuYm9vbFZhbHVlKTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApp
bmRleCAzNzk3ODY1Li44OGRlZDRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM4NiwxMCArMzg2LDYgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBFeHBlY3RzIHRoZSBmaXJzdCBhcmd1bWVu
dCB0byBiZSBhbiBpbnB1dCBlbGVtZW50IGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEg
Ym9vbGVhbi4KLSAgICAvLyBGb3J3YXJkcyB0aGUgc2V0QXV0b2ZpbGxlZCgpIGNhbGwgdG8gdGhl
IGVsZW1lbnQuCi0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKLQogICAgIC8vIEV4cGVjdHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJl
IGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgYSBzdHJpbmcg
dmFsdWUuCiAgICAgLy8gRm9yd2FyZHMgdGhlIHNldFZhbHVlRm9yVXNlcigpIGNhbGwgdG8gdGhl
IGVsZW1lbnQuCiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xh
eW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlv
dXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5kZXggMGU4YTY2ZS4uYzc3ZGU0YSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3Bw
CkBAIC0zNjQsMTEgKzM2NCw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJyb3dzZXItPm1haW5WaWV3KCks
IGZsYWcpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxl
ZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dG9maWxsZWQoY29udGV4
dCwgbm9kZU9iamVjdCwgYXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoKQogewogICAgIGV3a192aWV3X3NldHRpbmdfYXV0b19s
b2FkX2ltYWdlc19zZXQoYnJvd3Nlci0+bWFpblZpZXcoKSwgRUlOQV9GQUxTRSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApp
bmRleCAyNzVjMmUwLi4yODg2YWQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTQ1MywxMSArNDUzLDYgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9v
bCBmbGFnKQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b2RlT2JqZWN0LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVkKTsK
LX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZygpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgdGVzdGluZyBmaXggZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzg5NgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDcyYzBjZWEuLjU2
ZWE0NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KQEAgLTQ1NywxNSArNDU3LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIFtbW21h
aW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWQ6ZmxhZ107CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmls
bGVkKQotewotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVu
dEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKLSAgICBpZiAoIWVsZW1l
bnQgfHwgIVtlbGVtZW50IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVu
dCBfc2V0QXV0b2ZpbGxlZDphdXRvZmlsbGVkXTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJt
aXNzaXZlKQogewogICAgIGlmIChzZXREZWxlZ2F0ZSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA5YmJmNDM5Li4xYWJl
YTExIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcApAQCAtNDcyLDExICs0NzIsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBt
X2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZVF1b3RhKHF1b3RhKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2Zp
bGxlZChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0g
ICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRvZmlsbGVkKGVsZW1lbnQs
IGlzQXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVl
Rm9yVXNlcihjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFZhbHVlRm9yVXNlcihlbGVtZW50
LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmgKaW5kZXggZWY2OGIzNi4uOGVjODcxZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMTU4LDcgKzE1OCw2IEBAIHB1
YmxpYyBzbG90czoKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhi
b29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSk7Ci0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50
JiwgYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVt
ZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1Np
emUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoYm9vbCBlbmFibGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMTIzOTQ0OS4uNmY1NjgxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCkBAIC0zNzQsMjcgKzM3NCw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBwcmVmc1ByaXZhdGUtPnNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGZsYWcpOwogfQogCi12b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBDT01QdHI8SVdlYlZpZXc+IHdl
YlZpZXc7Ci0gICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3UHJpdmF0ZShR
dWVyeSwgd2ViVmlldyk7Ci0gICAgaWYgKCF3ZWJWaWV3UHJpdmF0ZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQ09NUHRyPElET01FbGVtZW50PiBlbGVtZW50OwotICAgIGlmIChGQUlMRUQod2Vi
Vmlld1ByaXZhdGUtPmVsZW1lbnRGcm9tSlMoY29udGV4dCwgbm9kZU9iamVjdCwgJmVsZW1lbnQp
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElGb3Jtc0F1dG9GaWxsVHJhbnNpdGlv
bj4gYXV0b2ZpbGxFbGVtZW50KFF1ZXJ5LCBlbGVtZW50KTsKLSAgICBpZiAoIWF1dG9maWxsRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0b2ZpbGxFbGVtZW50LT5zZXRBdXRvZmls
bGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7CiAg
ICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCAwOGQyODMyLi4zZjlhNzJiIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcApAQCAtMjAzLDExICsyMDMsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
dXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgLy8gRklYTUU6IGltcGxl
bWVudAogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBv
cHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9wdXBCbG9ja2luZ0VuYWJsZWQpCiB7CiAgICAgLy8g
RklYTUU6IGltcGxlbWVudAotLSAKMS43LjEwLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145790</attachid>
            <date>2012-06-05 07:34:52 -0700</date>
            <delta_ts>2012-06-20 07:34:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88239-20120605113409.patch</filename>
            <type>text/plain</type>
            <size>31490</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRlMjUzMjg2ODlhMmFh
MDlkZTExZDliOWY0MjdmYWJkMjg1ZTIyYy4uYjBiMDcyZDA1NjhhMWU2Y2EyY2ExNDQ1NWYwYTQw
MmE5NmJkYjRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTA1ICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byB3aW5k
b3cuaW50ZXJuYWxzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHNldEF1dG9maWxsZWQoKSB0byB3aW5kb3cuaW50ZXJuYWxzLiBObyBuZXcgdGVz
dHMgd2VyZSBhZGRlZCBidXQgdGhpcworICAgICAgICBjaGFuZ2Ugd2lsbCBhbGxvdyBtb3JlIHRl
c3RzIHRvIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIGFuZCBEUlQgZm9yIHBvcnRzIHRoYXQgd2Vy
ZW4ndAorICAgICAgICBpbXBsZW1lbnRpbmcgdGhpcyBmdW5jdGlvbiBiZWZvcmUuCisKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b2ZpbGxlZCk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorCiAyMDEyLTA2LTA1ICBEb25nd29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgQWRkICdpc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQnIGFuZCAndW5yZWdp
c3RlclByb3RvY29sSGFuZGxlcicuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggN2U2Nzk2NmM5MTM2NThi
NzkxYWY1MDQzNjcxZTkxN2ZkMWZmZTRmNS4uZDBmM2I1ZDExNDkwNTQxZDUzMTU0MTIyY2I3MTM3
MWUyZDdjZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTA1
ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0
byB3aW5kb3cuaW50ZXJuYWxzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgor
CiAyMDEyLTA2LTA1ICBEb25nd29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
QWRkICdpc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQnIGFuZCAndW5yZWdpc3RlclByb3RvY29s
SGFuZGxlcicuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTJlYjFlNDI2ODVhNDU1ZmQ0YTRjOGI3M2Rm
M2QzZGI0YzU3NzZlMi4uZjdhZjQwYjkxODVkZmNmZWU4MWQ5YjgwMTNkN2RmYzNmMzg0MTFmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTA1ICBKZXN1cyBTYW5j
aGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBN
b3ZlIHNldEF1dG9maWxsZWQgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byB3aW5kb3cuaW50
ZXJuYWxzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMi0wNi0wNCAgU3VkYXJzYW5hIE5hZ2luZW5p
ICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbR1RLXSBN
ZW1vcnkgbGVhayBpbiBXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDA3ZjlhNGRiOTM0
ZGIxM2E3M2U2NTUyYjQ2ZGVhZTk2M2UxY2JhOTYuLmY5MTI1ZTM0YWQ2MTk1MTE0ODE3NmNlNDQz
Njk0YTZmNjMyOWZkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYt
MDUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIExheW91dFRlc3RDb250cm9sbGVy
IHRvIHdpbmRvdy5pbnRlcm5hbHMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODgyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgor
CiAyMDEyLTA2LTA0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE5Mzg0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDM4YWQ1NTU1MmZhNTJkY2FjODI5NDU1YTdhOWFmOTRjMTQxOGFlMTUuLmM5Y2YwMGIyM2IwZjY3
YmU3NjQ0OTk5ODUzNTA5MzAzMzg0MzFiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0wNSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZyb20gTGF5b3V0VGVzdENv
bnRyb2xsZXIgdG8gd2luZG93LmludGVybmFscygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOiBBZGRpbmcgbmVlZGVkIHN5
bWJvbHMuCisKIDIwMTItMDYtMDUgIERvbmd3b28gSW0gIDxkdy5pbUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBBZGQgJ2lzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCcgYW5kICd1bnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyJy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBm
NGFkM2Y2OGI1N2NjMDkxMDkwYzg0OTAzMzBjNTMyZmI3OGZjMjkwLi42ZmRiMjVjYmYxYjU3NDY2
MGZhM2UyMDc1YWZhMTRhMzA3ZTVmNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC0xMDkyLDQgKzEwOTIsMTQgQEAgdm9pZCBJbnRlcm5hbHM6OndlYmtpdERpZEV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGUKICAgICBk
b2N1bWVudC0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwogfQog
I2VuZGlmCisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvZmlsbGVkKEVsZW1lbnQqIGVsZW1lbnQs
IGJvb2wgaXNBdXRvZmlsbGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWVsZW1l
bnQgJiYgIWVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbGVtZW50LT50b0lu
cHV0RWxlbWVudCgpLT5zZXRBdXRvZmlsbGVkKGlzQXV0b2ZpbGxlZCk7Cit9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA2ZmE0YTQ1YzY3MjlkMWNhYjVkYzA3NGQxMzI4YjUz
MTJmNWMxNGU0Li4zZTk4OWViMTI5OTY4YTFmOTZmN2ZkNTE2NWVjNjJjN2FlYjUwMmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE4Miw2ICsxODIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KERvY3VtZW50KiwgRWxl
bWVudCopOwogICAgIHZvaWQgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KERvY3Vt
ZW50KiwgRWxlbWVudCopOwogI2VuZGlmCisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEVsZW1lbnQq
LCBib29sIGlzQXV0b2ZpbGxlZCwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCmluZGV4IGFhMTA4NThiYjNkNjY2YWY0ZmMwNWRiZWU4YTQ0MDc2YWRmODYwNDAuLjVmMDdj
ZjYxYjJmMzI3YzljNTY2NTAxN2I1N2U2MTljNTg4MDMwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKQEAgLTE1Nyw2ICsxNTcsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAg
ICAgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGluIERvY3VtZW50IGRv
Y3VtZW50LCBpbiBFbGVtZW50IGVsZW1lbnQpOwogICAgICAgICB2b2lkIHdlYmtpdERpZEV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gRWxlbWVudCBlbGVt
ZW50KTsKICNlbmRpZgorCisgICAgICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChpbiBFbGVtZW50IGVs
ZW1lbnQsIGluIGJvb2xlYW4gaXNBdXRvZmlsbGVkKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAg
ICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggYjQ1YWVmMTEzMDQyMThm
ZmVhOWE2MDFlMWUwYzU3YjZkMmZlMjFiNS4uOTQ1NjE5OWM5NzAzY2I0ZTVkNzNhNTgyN2Q2ZWE1
Yjg4ZjhjMTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0zMzUsMTkgKzMzNSw2
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYKICAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9y
VXNlcih2YWx1ZSk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRBdXRv
ZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wg
YXV0b2ZpbGxlZCkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7
Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IFdlYkNvcmU6OnRvRWxlbWVudCh0b0pT
KGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsK
LSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50
b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBib29sIGRlZmVycykKIHsKICAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gRVdL
UHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCmluZGV4IDJh
ZTM0MzExNjNlMTU0Y2I3N2VkNzMwMzg4NzZiYTdlNjAwN2Y3NjAuLmJmZDNlOWQzYWRiOWMyYTA2
NzJkYTdlOWY2Mzc5ZWM1MTIwZjliM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCkBAIC02OSw3
ICs2OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25S
ZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5n
IHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAg
c3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2Rl
T2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRBdXRvZmls
bGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQp
OwogICAgIHN0YXRpYyB2b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGJvb2wgZGVmZXJzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5n
SW1hZ2VMb2FkaW5nU2V0dGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBsb2Fkc1NpdGVJ
Y29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZXMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcAppbmRleCAzZGQ2YjRkMDU2NmYwMjhjMGVjOTAzYzJlYjFlZmY0MjdjMGIzYmYwLi42
NzkyYzk0MDNkNWU5NWYxNmE3NGVkNzFjMmRiMWE4NTkxNDk5MDA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKQEAgLTcxOSwxOSArNzE5LDYgQEAgQ1N0cmluZyBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmFjY2Vzc2liaWxpdHlIZWxwVGV4dChBdGtPYmplY3QqIGF4T2JqZWN0KQogICAg
IHJldHVybiBjb3JlT2JqZWN0LT5oZWxwVGV4dCgpLnV0ZjgoKTsKIH0KIAotdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVt
ZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRv
SW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKLX0KLQogdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKICAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oCmluZGV4IDM0ZjdiZGVlZDdjNmNkMmE0NWUxZTBkNzBlYzY1NmZlZmU4YmYxZTkuLjJmMGFi
Mjg2OTlhNzc3MDk4MmU3OTgzZmVlMWUwMDk1MjU4MzE1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oCkBAIC03Niw3ICs3Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRG
b2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRr
T2JqZWN0KiBnZXRSb290QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBz
dGF0aWMgdm9pZCBsYXlvdXRGcmFtZShXZWJLaXRXZWJGcmFtZSopOwotICAgIHN0YXRpYyB2b2lk
IHNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBib29sKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmlu
Z1JlZik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ2xvc2UoV2ViS2l0V2ViRnJhbWUqKTsKICAg
ICBzdGF0aWMgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoV2Vi
S2l0V2ViRnJhbWUqLCBKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGU3
MGJmMDA0YTQ5MTI2ZjQ0YmQxNDc1ZGQ0ODJjYTgyNzI1ZGRmZWUuLmJiM2JhODY3ZTQ4OTU3Yjk1
YWIzYjYzM2NlZGMxMjJjZTE0ZjRlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0yODks
MTggKzI4OSw2IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omhhc0RvY3VtZW50RWxl
bWVudChRV2ViRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBRV2ViRnJhbWVQcml2YXRlOjpjb3Jl
KGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CiB9CiAKLXZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1l
bnQsIGJvb2wgaXNBdXRvZmlsbGVkKQotewotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1l
bnQgPSBlbGVtZW50Lm1fZWxlbWVudDsKLSAgICBpZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB3ZWJFbGVtZW50LT50
b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoaXNBdXRvZmlsbGVkKTsKLX0KLQog
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBXZWJDb3JlOjpF
bGVtZW50KiB3ZWJFbGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgK
aW5kZXggNDE4MDBmYWJkNzdiNDg2N2MwMzA1NjE2ZDYwYmM0ZGU2YTZkNDAzOC4uZGQ2MzA3NjQ0
OTlkMTJlYjcwMzdhMTcxZjcxY2M2NGE4NTcwZTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAt
MTI0LDcgKzEyNCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0
b3JDb2xsZWN0KCk7CiAgICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFs
dGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1
dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHN0YXRpYyB2
b2lkIHNldFZhbHVlRm9yVXNlcihjb25zdCBRV2ViRWxlbWVudCYsIGNvbnN0IFFTdHJpbmcmIHZh
bHVlKTsKICAgICBzdGF0aWMgaW50IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKICAgICBzdGF0
aWMgdm9pZCBjbGVhclNjcmlwdFdvcmxkcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDBi
YWY2NGFkOTk2ODBkMjc2Nzc4Zjg4ZWMwOTFiZTZkMWYxMTc4M2IuLjJmMzMxN2RjZDRhODg1OWM0
Y2FmZWIwYmNmYzZjNjQ2NGE5YzQ5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIyMyw2
ICsyMjMsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxz
QFNjcm9sbGFibGVBcmVhQFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBaCiAgICAgICAgID9z
ZXRTZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BX
VEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTdGFuZGFyZEZvbnRGYW1pbHlAU2V0
dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBa
CisgICAgICAgID9zZXRBdXRvZmlsbGVkQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWF9O
QFoKICAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBA
UUFFWEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXRFZGl0aW5nVmFsdWVASFRNTElucHV0
RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3NldHRpbmdz
QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlNldHRpbmdzQDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCmluZGV4IGM1OTAyODBhODEyNjIzMGM1YzQzNDhiOTA4OGYzN2Y3MjcxMjM3ZDAuLjliMWYw
ZjBiZmUyNzc5ZTFhMWQwNzA5ZmM4NDI1ZTAyYWFlYTkwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgpAQCAtNTgsNiArNTgsNyBAQCBfWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xOWFic29s
dXRlQ2FyZXRCb3VuZHNFdjsKIF9aTjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4
ZWNTdGF0ZUVpOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZh
bHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTVzZXRF
ZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1l
bnQxM3NldEF1dG9maWxsZWRFYjsKIF9aTjdXZWJDb3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pT
QzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0ltcGxFTlMwXzRXZWFrSU5T
MF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJUzZfRUVOUzNfMTBIYXNoVHJhaXRzSVM2X0VFTlND
X0lTOV9FRUVFUzZfOwogX1pON1dlYkNvcmUxNnNjcmlwdE5hbWVUb0NvZGVFUktOM1dURjZTdHJp
bmdFOwogX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0U7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmFjYjFmYjA4MjAxN2VlYjNjNmMz
ZWVlOTk0NmMwMjdlZjQ5NjY1NC4uYzQzMjE2NDU2MjNlZmE0MzczZDcxY2ViYjJlNzdmNTVkZWU4
OTE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEyLTA2LTA1ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVz
dXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQg
ZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byB3aW5kb3cuaW50ZXJuYWxzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBwbGF0Zm9y
bS1kZXBlbmRlbnQgaW1wbGVtZW50YXRpb24gb2Ygc2V0QXV0b2ZpbGxlZCgpLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250
cm9sbGVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5j
cHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisKIDIwMTItMDYtMDUgIERv
bmd3b28gSW0gIDxkdy5pbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBBZGQgJ2lzUHJvdG9jb2xI
YW5kbGVyUmVnaXN0ZXJlZCcgYW5kICd1bnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyJy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAyZmE4MGNm
NjcyZWUwMDQzOTE3OTllZGI2ZWIxZTRlYmNlNjEwMjkyLi45ZDE0OGUwZmJlZGUzZjY2ODNiZTA2
MDIwN2U1NTI3ZDBkZjdjODNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCkBAIC0xMTUyLDE3ICsxMTUyLDYgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlMKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0
YXRpYyBKU1ZhbHVlUmVmIHNldEF1dG9maWxsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMiB8fCAhYXJndW1lbnRzWzBd
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBM
YXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RD
b250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9s
bGVyLT5zZXRBdXRvZmlsbGVkKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgSlNWYWx1ZVRvQm9vbGVh
bihjb250ZXh0LCBhcmd1bWVudHNbMV0pKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgc2V0Q2FjaGVNb2RlbENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgTWFjIGltcGxl
bWVudGF0aW9uLgpAQCAtMjM3NSw3ICsyMzY0LDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldEF1dGhlbnRp
Y2F0aW9uUGFzc3dvcmQiLCBzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSIsIHNldEF1dGhlbnRpY2F0
aW9uVXNlcm5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBdXRob3JBbmRVc2Vy
U3R5bGVzRW5hYmxlZCIsIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKLSAgICAgICAgeyAic2V0QXV0b2ZpbGxlZCIsIHNldEF1dG9maWxsZWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWNoZU1vZGVsIiwgc2V0Q2FjaGVNb2RlbENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbGxDbG9zZU9uV2ViVmlld3MiLCBzZXRDYWxsQ2xv
c2VPbldlYlZpZXdzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2FuT3BlbldpbmRv
d3MiLCBzZXRDYW5PcGVuV2luZG93c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA2NDBkMWMxZDQxMTUwYjgwMTdiMTZj
ZmFjZjcwYzhiMzZkNTRlZmUyLi45MmQ1YTAzMTFkMzk2NGYwOTcyNjcxZWM3YzY2YjUxOGE2NDYy
ZWQ1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAg
LTk0LDcgKzk0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1
bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldEF1dG9maWxsZWQoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCk7CiAgICAgdm9p
ZCBzZXRDYWNoZU1vZGVsKGludCk7CiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShi
b29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VR
dW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNr
QmVycnkuY3BwCmluZGV4IDRmMDQzZDk2MmJkY2RmNGM4ZWUyOWViN2I2YTRhZjA2NzdkZGVjMDQu
LjY0MzI2M2ZiMTg3MmI3ZTI5NjAxNWNlOWYwNzdmN2MzOWJhNmYxNzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RD
b250cm9sbGVyQmxhY2tCZXJyeS5jcHAKQEAgLTczNywxOSArNzM3LDYgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3Qs
IGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29u
dGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4
ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lu
cHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6Om51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKEJsYWNrQmVycnk6OldlYktpdDo6
RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGM3MzkxNDNlMDYwNTExZmUxMzdhOGFhOTRmNmNiZTJmM2UzZTdiMjUuLjUxZjg2ZmJkYzQ1
ODFkZmYzOWNjMjAxMWEzODdiMTE5MDg4YjI3NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE4NSw3ICsx
ODUsNiBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNo
ZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMpOwogICAgIGJpbmRNZXRob2QoInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMpOwogICAgIGJpbmRN
ZXRob2QoInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk7Ci0gICAgYmluZE1ldGhvZCgic2V0
QXV0b2ZpbGxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk7CiAgICAg
YmluZE1ldGhvZCgic2V0Q2FuT3BlbldpbmRvd3MiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dENhbk9wZW5XaW5kb3dzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRv
d3NXaGVuQ29tcGxldGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENsb3NlUmVtYWluaW5n
V2luZG93c1doZW5Db21wbGV0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3VzdG9tUG9saWN5RGVs
ZWdhdGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKTsK
QEAgLTIwMjAsMjMgKzIwMTksNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQogICAgIG1fc2hl
bGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoYXJndW1l
bnRzWzBdLnRvRG91YmxlKCkpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
dXRvZmlsbGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCi17Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgIT0gMiB8fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBXZWJFbGVtZW50IGVsZW1lbnQ7Ci0gICAgaWYgKCFXZWJCaW5kaW5nczo6Z2V0RWxlbWVudChh
cmd1bWVudHNbMF0udmFsdWUub2JqZWN0VmFsdWUsICZlbGVtZW50KSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgV2ViSW5wdXRFbGVtZW50KiBpbnB1dCA9IHRvV2ViSW5wdXRFbGVtZW50KCZlbGVt
ZW50KTsKLSAgICBpZiAoIWlucHV0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dC0+c2V0
QXV0b2ZpbGxlZChhcmd1bWVudHNbMV0udmFsdWUuYm9vbFZhbHVlKTsKLX0KLQogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAppbmRleCAzNzk3ODY1N2UzYjFmZjM3YjlkNDM4YTU0NTY4YjQyY2M4NDRlZGEyLi44
OGRlZDRlMTc0ZWRiNzcwNWZiYTA5MTZhYjIyZGRiOGJkZWM5NjQwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM4
NiwxMCArMzg2LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBFeHBlY3Rz
IHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBpbnB1dCBlbGVtZW50IGFuZCB0aGUgc2Vjb25k
IGFyZ3VtZW50IHRvIGJlIGEgYm9vbGVhbi4KLSAgICAvLyBGb3J3YXJkcyB0aGUgc2V0QXV0b2Zp
bGxlZCgpIGNhbGwgdG8gdGhlIGVsZW1lbnQuCi0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIC8vIEV4cGVjdHMgdGhlIGZp
cnN0IGFyZ3VtZW50IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgYXJndW1l
bnQgdG8gYmUgYSBzdHJpbmcgdmFsdWUuCiAgICAgLy8gRm9yd2FyZHMgdGhlIHNldFZhbHVlRm9y
VXNlcigpIGNhbGwgdG8gdGhlIGVsZW1lbnQuCiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5kZXggMGU4YTY2ZTJl
NTAxN2MwNTVhNTc0YzcxOGNiOWQ2ZWFlMTkwMmQzYi4uYzc3ZGU0YTczNjAzMjczOGNjYjY5NjU4
NGY4NjNkMjYzMWZjZWU0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xh
eW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
TGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0zNjQsMTEgKzM2NCw2IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxh
ZykKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKGJyb3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQogCi12b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgYXV0b2ZpbGxlZCk7Ci19
Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoKQogewog
ICAgIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19zZXQoYnJvd3Nlci0+bWFpblZp
ZXcoKSwgRUlOQV9GQUxTRSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAyNzVjMmUwMjk2YmNmMGU3ZmM3M2Y0ODU1
YzczMWI1MTcwMDNmNWYyLi4yODg2YWQxMmE5YmY4Y2RmMmYwMDcwMDhjMWEzZDM1NmZlNWQ5Mzlm
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKQEAgLTQ1MywxMSArNDUzLDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxl
ZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGlzQXV0
b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1dG9maWxsZWQo
Y29udGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZygpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgdGVzdGluZyBmaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzg5NgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDcyYzBjZWE0NzJjNDU3MWQ3ZTczNDBhMDI2NTVmZjlh
YWQ1YjA4NWMuLjU2ZWE0NjU4MmRlZjYzNjUxNGRlN2ExNjlmMDAyZWVjMmE1ZWFkYzcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTQ1NywxNSArNDU3LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIFtbW21haW5GcmFtZSB3ZWJW
aWV3XSBwcmVmZXJlbmNlc10gc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ6ZmxhZ107CiB9
CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAg
IERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRl
eHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIVtlbGVt
ZW50IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBfc2V0QXV0b2Zp
bGxlZDphdXRvZmlsbGVkXTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKQogewog
ICAgIGlmIChzZXREZWxlZ2F0ZSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA5YmJmNDM5YmMyMWVmNDJlMTM5MWI1YjU2
MDc0N2FkZTRmYjdkYWY4Li4xYWJlYTExODhmMzYzMzI4NTVmZmU5OWI5MjNmNWY4MDgzMDU1NTBi
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcApAQCAtNDcyLDExICs0NzIsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBtX2Ry
dC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhKHF1b3RhKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxl
ZChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAg
cmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRvZmlsbGVkKGVsZW1lbnQsIGlz
QXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9y
VXNlcihjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUVN0cmluZyYgdmFsdWUpCiB7
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFZhbHVlRm9yVXNlcihlbGVtZW50LCB2
YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgKaW5kZXggZWY2OGIzNmU5YzM0MTI4NTlkMTk0ZTc1NTI3NjRmOWVjOTBhZDliZS4uOGVj
ODcxZDRlZDJkM2UxOTViNzkxNDk5YWY0NDM3NjRjOTliNzhkYiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMTU4LDcgKzE1OCw2
IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMcyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2ln
bmVkIGxvbmcgbG9uZyBxdW90YSk7Ci0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJF
bGVtZW50JiwgYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFX
ZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250
ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIHNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMTIzOTQ0OTI5ZTJhZTk2MTMy
NTE2NDU1YTA3YmI3ZmM0MTFmN2FlNi4uNmY1NjgxOTRlMWQ2ZDc3MmM2NGFlOTEzMjI3ZjZmNjVj
NWRhMmFkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCkBAIC0zNzQsMjcgKzM3NCw2IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBw
cmVmc1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGZsYWcpOwogfQogCi12
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBDT01Q
dHI8SVdlYlZpZXc+IHdlYlZpZXc7Ci0gICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2Vi
VmlldykpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3
ZWJWaWV3UHJpdmF0ZShRdWVyeSwgd2ViVmlldyk7Ci0gICAgaWYgKCF3ZWJWaWV3UHJpdmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElET01FbGVtZW50PiBlbGVtZW50OwotICAg
IGlmIChGQUlMRUQod2ViVmlld1ByaXZhdGUtPmVsZW1lbnRGcm9tSlMoY29udGV4dCwgbm9kZU9i
amVjdCwgJmVsZW1lbnQpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElGb3Jtc0F1
dG9GaWxsVHJhbnNpdGlvbj4gYXV0b2ZpbGxFbGVtZW50KFF1ZXJ5LCBlbGVtZW50KTsKLSAgICBp
ZiAoIWF1dG9maWxsRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0b2ZpbGxFbGVt
ZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBl
cm1pc3NpdmUpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCAwOGQy
ODMyYWNmMzQxNzhiYzU4Zjk2MjA1ZWJiMmFkYTczZjEyN2ZhLi4zZjlhNzJiNmI3YzcwNmQwNjcy
Yzg5MTM1NWM3MGI3N2I2NGFkNTE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMjAzLDExICsyMDMsNiBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZs
YWcpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCi12b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBib29s
IGlzQXV0b2ZpbGxlZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9wdXBCbG9j
a2luZ0VuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1ZWJmYjdm
ZTczNWVhZGRmZDc1NWEzZTFkNTEyZDJhYzE3ZDJmNTMuLjcyZDg4ODg4Njg3MDBjYmI2NTRkMWM3
YzVlMjk2ODRjZmJlNzBmZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNSAgSmVz
dXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZyb20gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gd2lu
ZG93LmludGVybmFscygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6CisgICAgICAgICogZmFz
dC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2syL1Nr
aXBwZWQ6CisKIDIwMTItMDYtMDUgIFJvYiBCdWlzICA8cndsYnVpc0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIEhpdCBBU1NFUlQgd2hlbiBlZGl0aW5nIGF0dHJpYnV0ZSB2YWx1ZSBpbiBFbGVtZW50
IGluIFNWRyBEb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1hdXRvZmlsbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxs
ZWQuaHRtbAppbmRleCA2MWFlMzYwMjBhYTA4ZTcwZGQ0ZGU1MGI2ODE1M2FhZmNiNGJjMTRiLi4z
YjJjNThlZDExNDRkZjRjYjg0NmM1YTdmZTdlMDM2NTExYmE1ZTI5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbApAQCAtMTIsOCArMTIsOCBAQAogICAg
ICAgICB2YXIgb3JpZ2luYWxGb3JlZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5jb2xvcjsKICAgICAg
ICAgdmFyIG9yaWdpbmFsQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9y
OwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIHRydWUpOworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldEF1dG9m
aWxsZWQodGYsIHRydWUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQm90aCB0aGUgZm9yZWdy
b3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgc2hvdWxkIGNoYW5nZS4KQEAgLTI5LDggKzI5LDgg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldEF1dG9maWxsZWQodGYsIGZhbHNlKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRBdXRvZmlsbGVkKHRmLCBmYWxzZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBDb2xvcnMgc2hvdWxkIGJlIHJlc3RvcmVkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbAppbmRleCBkM2ZiZTdmMmE5MDM5
YTY3MDljOWE3N2IyN2E4MTIwMDRiOWFiODcyLi40OWY4MzU0OWVkZTk0NmQzMzQ5YjgwMTljOGE0
MzljNTFiODRhYTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1
dG9maWxsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxs
ZWQuaHRtbApAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgdmFyIGZpZWxk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkJyk7Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldEF1dG9maWxsZWQoZmllbGQsIHRydWUpOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldEF1dG9maWxsZWQoZmllbGQsIHRydWUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVp
cmVzIGEgTGF5b3V0VGVzdENvbnRyb2xsZXIuJyk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IGY0MGUyMjM5ZGM4NDIzNzBhZmE3MjkyNWNiYTIxYjJl
MGMxNWMyMTAuLjY1NWFjYjAwM2ZkMzM4MmY3MDZjMWNiYWQxMmMxMTc0OTkzNTNmYzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC05OTksMTAgKzk5OSw2IEBAIHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTUtZGVsZXRl
LW9uZS5odG1sCiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2Vy
L3N0b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS5odG1sCiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxz
dG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci03LXVzYWdlLmh0bWwKIAotIyBX
ZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQK
LWZhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCi1mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9m
aWxsZWQuaHRtbAotCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYSBtb3JlLWNvbXBsZXRlIGlt
cGxlbWVudGF0aW9uIG9mIGV2ZW50U2VuZGVyCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjE5NAogZmFzdC9tdXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIu
aHRtbApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZiYTVhOTlkM2My
NTc1MjJlNzk3MTk4ZmM3ZjM4ODY4NjBkZGRmMWQuLjA0ZWI4ZjBhMTBmZWU4MDM2NTVmYzQ1NTM4
ZTkxZDUwODg1MzE4ZWIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxMi0wNi0wNSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3Vz
LnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZy
b20gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gd2luZG93LmludGVybmFscygpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wNi0wNSAgRG9uZ3dvbyBJbSAgPGR3LmltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIEFkZCAnaXNQcm90b2NvbEhhbmRsZXJSZWdpc3RlcmVkJyBhbmQgJ3Vu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXInLgo=
</data>
<flag name="review"
          id="152981"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="156337"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>