<?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>30080</bug_id>
          
          <creation_ts>2009-10-05 10:02:26 -0700</creation_ts>
          <short_desc>Web Inspector: Show content for plugin requests in network panel.</short_desc>
          <delta_ts>2011-07-05 03:17:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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>63917</dependson>
          <blocked>14259</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Patrick Mueller">pmuellr</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>aroben</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>jeroen.bensch</cc>
    
    <cc>kmccullough</cc>
    
    <cc>pfeldman</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152334</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-10-05 10:02:26 -0700</bug_when>
    <thetext>In the Resources panel, the resource data (HTTP response data) is not always displayed.

See Bug 28812, comment 6.

A case where this occurs is when loading the URL:

   http://www.lumacentral.com/CocaCola/index.html

One of the resources, named &quot;execBatch&quot; has an HTTP response which is not displayed.  Here is a replay of the individual resource request in curl.  As you can see, there actually is some content coming from the request.

$ curl -H &quot;Content-Type: application/xml&quot; -d &quot;&lt;lw2p-requests&gt;&lt;lw2p-request
action=&apos;getCurrentPortal&apos;/&gt;&lt;/lw2p-requests&gt;&quot; -v
http://www.lumacentral.com/CocaCola/w2p/execBatch
- About to connect() to www.lumacentral.com port 80 (#0)
-   Trying 194.78.34.228... connected
- Connected to www.lumacentral.com (194.78.34.228) port 80 (#0)
&gt; POST /CocaCola/w2p/execBatch HTTP/1.1
&gt; User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
&gt; Host: www.lumacentral.com
&gt; Accept: */*
&gt; Content-Type: application/xml
&gt; Content-Length: 72
&gt; 
&lt; HTTP/1.1 200 OK
&lt; Date: Mon, 05 Oct 2009 15:36:37 GMT
&lt; Cache-Control: no-cache
&lt; Set-Cookie: JSESSIONID=49ACA557EE891188BDB2B334CF2B4B7E; Path=/CocaCola
&lt; mime-type: application/xml
&lt; Transfer-Encoding: chunked
&lt; Content-Type: text/plain
&lt; 
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
- Connection #0 to host www.lumacentral.com left intact
- Closing connection #0
&lt;lw2p-replies&gt;&lt;lw2p-reply action=&quot;getCurrentPortal&quot;&gt;&lt;portal description=&quot;&quot;
id=&quot;52&quot; name=&quot;CocaCola&quot; version=&quot;10&quot;/&gt;&lt;/lw2p-reply&gt;&lt;/lw2p-replies&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152337</commentid>
    <comment_count>1</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-10-05 10:14:29 -0700</bug_when>
    <thetext>Note that Bug 30079 concerns the same base URL for it&apos;s problem.   In talking to Jeroen Bensch, the originator of the problem requests, seems like 30079 may be a root cause here.  May want to investigate that one first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152825</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-10-06 12:53:26 -0700</bug_when>
    <thetext>Jeroen, I&apos;m wondering if those execBatch XHR calls are happening in the .swf movie itself.  I poked around the resources available from the original site, and didn&apos;t see any references to the execBatch urls.

This may explain why the resource content doesn&apos;t show up - there is a separate path to obtain the resource than other paths the browser goes through to get files.  Not that it&apos;s necessarily right, but it would explain a bit.

In fact, I just poked on the resource selectors, and noticed these execBatch URLs are showing up under &quot;Other&quot;.  As is the .swf file itself, presumably loaded through an &quot;embed&quot; or &quot;object&quot; element (or whatever).

It&apos;s interesting that everything seems to be available for these resources, except the actual content.  Maybe it won&apos;t take much to hook that up.  Will need to investigate the plugin goop, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152826</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-06 12:56:10 -0700</bug_when>
    <thetext>The Web Inspector does not know how to render &quot;Other&quot; content right now. We might have the data, but we don&apos;t attempt to show it.

We need to know what type of data to pick the view that shows it. We try to do this based on the category the engine tells us, images, etc. I think we also look at mime type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152833</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-10-06 13:03:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; The Web Inspector does not know how to render &quot;Other&quot; content right now. We
&gt; might have the data, but we don&apos;t attempt to show it.
&gt; 
&gt; We need to know what type of data to pick the view that shows it. We try to do
&gt; this based on the category the engine tells us, images, etc. I think we also
&gt; look at mime type.

(In reply to comment #3)
&gt; The Web Inspector does not know how to render &quot;Other&quot; content right now. We
&gt; might have the data, but we don&apos;t attempt to show it.
&gt; 
&gt; We need to know what type of data to pick the view that shows it. We try to do
&gt; this based on the category the engine tells us, images, etc. I think we also
&gt; look at mime type.

Sounds like we can DUP this for the existing Bug 14259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152834</commentid>
    <comment_count>5</comment_count>
    <who name="Jeroen Bensch">jeroen.bensch</who>
    <bug_when>2009-10-06 13:09:11 -0700</bug_when>
    <thetext>I&apos;m following your reasoning and discussion here, but I don&apos;t know how I could help.

Thanks though for looking into it. I thought the reason why it wasn&apos;t shown is that because everything in that .swf file comes back as xml (with appropriate header) and you just discarded that when trying to show the response payload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426120</commentid>
    <comment_count>6</comment_count>
      <attachid>98342</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-23 06:37:26 -0700</bug_when>
    <thetext>Created attachment 98342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427813</commentid>
    <comment_count>7</comment_count>
      <attachid>98342</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-27 02:29:14 -0700</bug_when>
    <thetext>Comment on attachment 98342
Patch

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

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:182
&gt; +        m_contentSize -= resourceData-&gt;purgeContent();

This is clearly worth a test.

&gt; Source/WebCore/inspector/NetworkResourcesData.h:68
&gt; +        bool hasData() const { return m_dataBuffer; }

Make these private + a friend of the NetworkResourceData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428338</commentid>
    <comment_count>8</comment_count>
      <attachid>98792</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-27 14:55:51 -0700</bug_when>
    <thetext>Created attachment 98792
Patch (for gtk bot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428463</commentid>
    <comment_count>9</comment_count>
      <attachid>98792</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-06-27 17:17:19 -0700</bug_when>
    <thetext>Comment on attachment 98792
Patch (for gtk bot)

Attachment 98792 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8952335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428787</commentid>
    <comment_count>10</comment_count>
      <attachid>98896</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-28 03:54:44 -0700</bug_when>
    <thetext>Created attachment 98896
Patch (for gtk bot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429528</commentid>
    <comment_count>11</comment_count>
      <attachid>99073</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-29 05:00:44 -0700</bug_when>
    <thetext>Created attachment 99073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429585</commentid>
    <comment_count>12</comment_count>
      <attachid>99086</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-29 07:14:59 -0700</bug_when>
    <thetext>Created attachment 99086
Patch with build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429597</commentid>
    <comment_count>13</comment_count>
      <attachid>99086</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-29 07:38:11 -0700</bug_when>
    <thetext>Comment on attachment 99086
Patch with build fixes

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

&gt; Source/WebCore/WebCore.exp.in:1303
&gt; +__ZNK7WebCore8Document4pageEv

@dglazkov: are we exporting webcore symbols both for webkit and for internals using the same file on mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432003</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-04 11:44:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 99086 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99086&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/WebCore.exp.in:1303
&gt; &gt; +__ZNK7WebCore8Document4pageEv
&gt; 
&gt; @dglazkov: are we exporting webcore symbols both for webkit and for internals using the same file on mac?

Yep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432012</commentid>
    <comment_count>15</comment_count>
      <attachid>99086</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-04 12:39:01 -0700</bug_when>
    <thetext>Comment on attachment 99086
Patch with build fixes

Rejecting attachment 99086 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
re/loader/FormState.o
Source/WebCore/loader/DocumentThreadableLoader.cpp: In member function &apos;virtual void WebCore::DocumentThreadableLoader::didReceiveData(WebCore::SubresourceLoader*, const char*, int)&apos;:
Source/WebCore/loader/DocumentThreadableLoader.cpp:232: error: &apos;didReceiveContentLength&apos; is not a member of &apos;WebCore::InspectorInstrumentation&apos;
make: *** [out/Debug/obj.target/webcore_remaining/Source/WebCore/loader/DocumentThreadableLoader.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/8982506</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432025</commentid>
    <comment_count>16</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-04 13:08:15 -0700</bug_when>
    <thetext>Committed r90373: &lt;http://trac.webkit.org/changeset/90373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432183</commentid>
    <comment_count>17</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-05 03:12:44 -0700</bug_when>
    <thetext>Rolled out:

http://trac.webkit.org/changeset/90373
https://bugs.webkit.org/show_bug.cgi?id=63917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432185</commentid>
    <comment_count>18</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-05 03:17:03 -0700</bug_when>
    <thetext>Committed r90389: &lt;http://trac.webkit.org/changeset/90389&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98342</attachid>
            <date>2011-06-23 06:37:26 -0700</date>
            <delta_ts>2011-06-27 14:55:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30080-20110623173724.patch</filename>
            <type>text/plain</type>
            <size>39646</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk1NTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZGQ3YmIyZmY5MDk3NzVjNDM5YjM0
NjFjMmM3YzY2YzZlOWRjOGJhLi4wMDMwYjUwNTExZDg0NmZlNzUwOTMxY2RkMTJmZGNmOWJhZTg2
NTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMjMgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBjb250ZW50IGZvciBwbHVnaW4gcmVx
dWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cGx1Z2luLWRhdGEucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy91dGY4LnhtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA2LTIzICBab2x0YW4gSGVyY3pl
ZyAgPHpoZXJjemVnQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZl
bCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLWVtYmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGI1NjcxZjliNWQ0MDdkODExYzA3NWYxY2RmODdlNDkwNTBmNWFlYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1l
bWJlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDQ2OiBEb25lLgorVGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIHNob3dzIGNvbnRlbnQgZm9yIGVt
YmVkIG9iamVjdHMuCisKKworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZQorcmVzb3VyY2UudHlwZTogOAorcmVz
b3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291
cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxl
bmFtZT11dGY4LnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD11dGY4CityZXNvdXJjZS50
eXBlOiA4CityZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVm
aW5lZAorcmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZl
cnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi04Jz8+Cis8cm9vdD4KKyAgPHV0Zjg+U1XQodCh0JVT
UyAtIFRoZXNlICdDQ0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvdXRmOD4KKzwvcm9vdD4KKwor
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9wbHVnaW4t
ZGF0YS5waHA/ZmlsZW5hbWU9Y3AxMjUxLnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1j
cDEyNTEKK3Jlc291cmNlLnR5cGU6IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3Rp
bmcgY29udGVudDogdW5kZWZpbmVkCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3Rpbmcg
Y29udGVudDogPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nY3AxMjUxJz8+Cis8cm9vdD4K
KyAgPGNwMTI1MT5TVdCh0KHQlVNTIC0gVGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMu
PC9jcDEyNTE+Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPXV0ZjgueG1sJm1pbWV0eXBl
PWFwcGxpY2F0aW9uL3htbAorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZv
cmUgcmVxdWVzdGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIg
cmVxdWVzdGluZyBjb250ZW50OiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/
PgorPHJvb3Q+CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMg
bGV0dGVycy48L3V0Zjg+Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPWNwMTI1MS54bWwm
bWltZXR5cGU9YXBwbGljYXRpb24veG1sCityZXNvdXJjZS50eXBlOiA4CityZXNvdXJjZS5jb250
ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVzb3VyY2UuY29udGVu
dCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9
J2NwMTI1MSc/PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XQodCh0JVTUyAtIFRoZXNlICdDQ0UnIGFy
ZSBjeXJpbGxpYyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWVtYmVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjc1ZTViMDYzYjdmZDY5ZDU4MzRiYzBhNzRhYWJhM2I1Njk0MDNm
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTEzIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK3ZhciBsb2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rpb24gc3RyZWFtTG9hZGVkKCkK
K3sKKyAgICBpZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGxvYWRl
ZEZpcnN0VVJMID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCit2YXIgc25pZmZlckluc3Rh
bGxlZCA9IGZhbHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFsbGVkKCkKK3sKKyAgICBzbmlm
ZmVySW5zdGFsbGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCitmdW5jdGlvbiBsb2Fk
VVJMcygpCit7CisgICAgaWYgKHNuaWZmZXJJbnN0YWxsZWQgJiYgbG9hZGVkRmlyc3RVUkwpCisg
ICAgICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5h
bWU9dXRmOC54bWwmbWltZXR5cGU9dGV4dC9odG1sJmNoYXJzZXQ9dXRmOCIsIG51bGwsICJsb2Fk
VVJMMiIpOworfQorCitmdW5jdGlvbiBsb2FkVVJMMigpCit7CisgICAgcGxnLmdldFVSTE5vdGlm
eSgicmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxlbmFtZT1jcDEyNTEueG1sJm1pbWV0eXBl
PXRleHQvaHRtbCZjaGFyc2V0PWNwMTI1MSIsIG51bGwsICJsb2FkVVJMMyIpOworfQorCitmdW5j
dGlvbiBsb2FkVVJMMygpCit7CisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3BsdWdp
bi1kYXRhLnBocD9maWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT1hcHBsaWNhdGlvbi94bWwiLCBu
dWxsLCAibG9hZFVSTDQiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQoreworICAgIHBsZy5n
ZXRVUkxOb3RpZnkoInJlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9Y3AxMjUxLnht
bCZtaW1ldHlwZT1hcHBsaWNhdGlvbi94bWwiLCBudWxsLCAiYWxsVVJMc0xvYWRlZCIpOworfQor
CitmdW5jdGlvbiBhbGxVUkxzTG9hZGVkKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRG9uZS4iKTsK
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwgc3RlcDEpOwor
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm9uU25pZmZlckluc3RhbGxlZCgpIik7
CisKKyAgICBmdW5jdGlvbiBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZS51cmwpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UudHlwZTogIiArIHJlc291cmNlLnR5cGUp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZv
cmUgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7CisKKyAgICAgICAg
ZnVuY3Rpb24gY29udGVudExvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6
ICIgKyByZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9
CisKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDVdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVz
b3VyY2UsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2Vz
W1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gNF07CisgICAg
ICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
cy5sZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDJdOworICAgICAgICBkdW1wUmVzb3VyY2Uo
cmVzb3VyY2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgpCisgICAgewor
ICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3Vy
Y2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07Cisg
ICAgICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDYpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXA2KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
CisgICAgPHA+VGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIHNob3dzIGNvbnRlbnQgZm9yIGVtYmVk
IG9iamVjdHMuPC9wPgorICAgIDxlbWJlZCBuYW1lPSJwbGciIHR5cGU9ImFwcGxpY2F0aW9uL3gt
d2Via2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0icmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlIiBvbnN0cmVhbWxvYWQ9InN0cmVhbUxvYWRlZCgpIj48L2VtYmVkPgorPC9ib2R5PgorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9jcDEyNTEueG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjI4NWYzNjBiY2Uz
ZTVkOTNmM2MyZDZlMGVjNGMzMGNiNDk0YTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbApAQCAt
MCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2NwMTI1MSc/PgorPHJv
b3Q+CisgIDxjcDEyNTE+U1XR0cVTUyAtIFRoZXNlICdDQ0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJz
LjwvY3AxMjUxPgorPC9yb290PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMyMWQ5ZThlOWQ5NzM2MjNiYjFmNTJhYjQ0ZDA2NzUyZmJiY2FkYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9wbHVnaW4tZGF0YS5waHAKQEAgLTAsMCArMSwxNSBAQAorPD9waHAKKyAgICAkbWlt
ZXR5cGUgPSAkX0dFVFsibWltZXR5cGUiXTsKKyAgICAkZmlsZW5hbWUgPSAkX0dFVFsiZmlsZW5h
bWUiXTsKKyAgICAkY2hhcnNldCA9ICRfR0VUWyJjaGFyc2V0Il07CisKKyAgICBoZWFkZXIoIkV4
cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CisgICAgaGVhZGVyKCJDYWNo
ZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOworICAgIGhl
YWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworICAgIGlmICgkY2hhcnNldCkKKyAgICAgICAgaGVh
ZGVyKCJDb250ZW50LVR5cGU6ICIgLiAkbWltZXR5cGUgLiAiOyBjaGFyc2V0PSIgLiAkY2hhcnNl
dCk7CisgICAgZWxzZQorICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTogIiAuICRtaW1ldHlw
ZSk7CisKKyAgICByZWFkZmlsZSgkZmlsZW5hbWUpOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3V0ZjgueG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvdXRmOC54bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDdlZTQ4MWZhODA3NGFjYjc1M2MzYzdlZjU0MjE5ZmQ5MmYxMDQ2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL3V0ZjgueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0nMS4wJyBl
bmNvZGluZz0ndXRmLTgnPz4KKzxyb290PgorICA8dXRmOD5TVdCh0KHQlVNTIC0gVGhlc2UgJ0ND
RScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC91dGY4PgorPC9yb290PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDE3NTY5
YzhjMGFlNmNhMTEzMDNiNzU2MDVmMmU4OWZkOWIwOGY2ZWUuLjhkNTEzMWNjZjI3Y2E2NTA1MjQw
MmZjNjY1NWI4MmNkZjM0NjVjZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTY1NSw2ICs2NTUsOSBAQCBXT05URklY
IFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucyA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtaGVhZGVycy5odG1sID0gRkFJTAogV09OVEZJWCBT
S0lQIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3Qu
aHRtbCA9IEZBSUwKIAorLy8gVGhlcmUgaXMgbm8gZW5vdWdoIHBsdWdpbnMgc3VwcG9ydCBpbiBE
UlQKK1dPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1l
bWJlZC5odG1sID0gRkFJTAorCiAvLyBJbnNwZWN0b3IgdGVzdHMgaW4gRGVidWcgYnVpbGQgYXJl
IHZlcnkgc2xvdy4KIEJVR19EUlQgV0lOIExJTlVYIERFQlVHIFNMT1cgOiBpbnNwZWN0b3IgPSBQ
QVNTCiBCVUdfRFJUIFdJTiBMSU5VWCBERUJVRyBTTE9XIDogaHR0cC90ZXN0cy9pbnNwZWN0b3Ig
PSBQQVNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDA4NDk4ZDFmODJlYjAxZDRhMTRlMmVjZDcwODAzMGRlZGFh
ZGY2NC4uZWE1NTJkODU3MzhjNTM1MDNmMTMxMTY0NDQ2OWQ5YzQ1MDk3MWVhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU1IEBACisyMDExLTA2LTIzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3cgY29udGVudCBmb3IgcGx1Z2luIHJlcXVlc3RzIGlu
IG5ldHdvcmsgcGFuZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMDA4MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1lbWJlZC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpzZXRJbml0aWFsWEhSQ29udGVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1h
eWJlRGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6ZW5zdXJlTm9EYXRhRm9ySWRlbnRpZmllcik6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjp0ZXh0RW5j
b2RpbmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnNldFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rlcik6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9h
ZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0
UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2Fk
ZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRO
b3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6CisKIDIwMTEtMDYtMjMgIFpvbHRhbiBIZXJjemVnICA8
emhlcmN6ZWdAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZl
bGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCmluZGV4IGE5ZTJjYWE4MGJiZDIxOWNhYzk5YWY3ZmM3OWVkYTc1YjJi
MDg2NzEuLjJkYTE2N2RmMjA5ODYyZDY5ZDVjY2I0Yjc4YWQ2ZmQ5ZDhlZDA5MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCkBAIC00OTIsMTAgKzQ5MiwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZQogICAgIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKGZyYW1lLCBsb2FkZXIsIGlk
ZW50aWZpZXIsIHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGhJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
RGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBy
ZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChpZGVu
dGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIHJlc291cmNl
QWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91Ymxl
IGZpbmlzaFRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOThkYTI4ZWEyMDkwYzg4NzkyYjQ3OTFhYjQxZTYzN2U3
OGJjZTlmNS4uOWY1ZmEwNzhmZjJlNzhkMzI4NTIwNzQzZjY3NWIxMDM4NTRmNDJiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFm
dGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZv
aWQgY29udGludWVXaXRoUG9saWN5RG93bmxvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShGcmFtZSosIERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3Rh
dGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25l
ZCBzZW5kTGluZU51bWJlcik7CkBAIC0yNTUsNyArMjU1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZEltcGwoRnJhbWUqLCBEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkSW1wbChG
cmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5SWdu
b3JlSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGhJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgcmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVO
dW1iZXIpOwpAQCAtNzY1LDExICs3NjUsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUoRnJhbWUqIGZyYW1lLCBEb2MKICNl
bmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlk
ZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKaW5kZXggMjllYzE1YTQxZWY2OGYxNGRmNWQ5YzNhZDhmMTc0YmMyMmJjNDU4MC4u
MDllM2ZjZTkzZjM2OGI4NTJiOTViZWVhMGUyMWVkNTMzYTU0MjFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjUw
LDE4ICsyNTAsMjEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICAgICAgZWxzZSBpZiAo
bV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSB8fCBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlw
ZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlKQogICAgICAg
ICAgICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2U7CiAKLSAgICAgICAg
bV9yZXNvdXJjZXNEYXRhLT5yZXNwb25zZVJlY2VpdmVkKGlkZW50aWZpZXIsIG1fcGFnZUFnZW50
LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIHJlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5yZXNwb25zZVJlY2VpdmVkKGlkZW50aWZpZXIsIG1fcGFnZUFnZW50LT5m
cmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIHJlc3BvbnNlKTsKICAgICB9CiAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUoaWRlbnRpZmllciwgdHlwZSk7CiAgICAgbV9mcm9udGVu
ZC0+cmVzcG9uc2VSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIpLCBjdXJyZW50
VGltZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZVN0cmluZyh0eXBlKSwgcmVz
b3VyY2VSZXNwb25zZSk7CiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0ZWQgdGhlIHJlc291cmNlIGFu
ZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3RoIGZvbGxvd2luZyBkaWRSZWNl
aXZlUmVzcG9uc2UKLSAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCisgICAgLy8gYXMgdGhlcmUg
d2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNr
LgogICAgIGlmIChjYWNoZWRSZXNvdXJjZVNpemUgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDQpCi0gICAgICAgIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGNh
Y2hlZFJlc291cmNlU2l6ZSwgMCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IDAsIGNhY2hlZFJlc291cmNlU2l6ZSwgMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Cisg
ICAgaWYgKGRhdGEgJiYgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUoaWRlbnRpZmllcikg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNl
c0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgp
OworCiAgICAgbV9mcm9udGVuZC0+ZGF0YVJlY2VpdmVkKHN0YXRpY19jYXN0PGludD4oaWRlbnRp
ZmllciksIGN1cnJlbnRUaW1lKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IApAQCAtMjcwLDYgKzI3Myw4IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAgICAgaWYgKG1f
cmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VB
Z2VudDo6RG9jdW1lbnRSZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihpZGVudGlmaWVyLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVu
dCgpLT5pbnB1dEVuY29kaW5nKCkpOwogCisgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZURlY29k
ZURhdGFUb0NvbnRlbnQoaWRlbnRpZmllcik7CisKICAgICBpZiAoIWZpbmlzaFRpbWUpCiAgICAg
ICAgIGZpbmlzaFRpbWUgPSBjdXJyZW50VGltZSgpOwogCkBAIC0yOTYsNyArMzAxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGMKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJ
bml0aWFsWEhSQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nKQogewotICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VDb250ZW50
KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CisgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNv
dXJjZUNvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKaW5kZXggYjQ0MTBiMzc1Y2FmMWQyZTZmYTYyZWZlOTk0Y2FlYmI5Y2UxOTExNi4u
ZGRkYTIxYWVjODZjZGFkZDQ1YmQ0ZjNlMmI4ODUyY2UxM2EzODQ2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC05MCw3ICs5
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0Nh
Y2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxhb2RlciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDU4OGQxZWI0MDRm
N2U2OWYwODlkMzEyOTdiNzIwYTY5ZDAyYWVmOWMuLmEwMzgzNWJjZTcyMjBhN2RkMmQyYmJiMWRk
YjY4Y2VkNjcyMmI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMjksMTEgKzI5LDE4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuaCIKIAorI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogbmFtZXNwYWNl
IHsKIC8vIDEwTUIKIHN0YXRpYyBpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAg
KiAxMDAwICogMTAwMDsKKworLy8gMU1CCitzdGF0aWMgaW50IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplID0gMTAwMCAqIDEwMDA7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQyLDMwICs0OSw2NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAg
ICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQotICAgICwgbV9oYXNDb250ZW50KGZhbHNlKQogICAg
ICwgbV9pc0NvbnRlbnRQdXJnZWQoZmFsc2UpCiAgICAgLCBtX3R5cGUoSW5zcGVjdG9yUGFnZUFn
ZW50OjpPdGhlclJlc291cmNlKQogewogfQogCi1TdHJpbmcgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6Y29udGVudCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQoreworICAgIEFTU0VS
VCghaGFzRGF0YSgpKTsKKyAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CisgICAgbV9jb250ZW50
ID0gY29udGVudDsKK30KKworaW50IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2hhc0NvbnRlbnQgPyBtX2NvbnRl
bnRCdWlsZGVyLnRvU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZENvbnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIG1fY29udGVudEJ1aWxkZXIuYXBw
ZW5kKGNvbnRlbnQpOwotICAgIG1faGFzQ29udGVudCA9IHRydWU7CisgICAgQVNTRVJUKCFoYXND
b250ZW50KCkpOworICAgIGlmICghbV9kYXRhQnVmZmVyKQorICAgICAgICBtX2RhdGFCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworfQorCit2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQor
eworICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKKyAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXIt
PmRlY29kZShtX2RhdGFCdWZmZXItPmRhdGEoKSwgbV9kYXRhQnVmZmVyLT5zaXplKCkpOworICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OnB1cmdlQ29udGVudCgpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbV9jb250ZW50QnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKS5sZW5ndGgoKTsK
LSAgICBtX2NvbnRlbnRCdWlsZGVyLmNsZWFyKCk7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsK
KyAgICBpZiAoaGFzRGF0YSgpKSB7CisgICAgICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKKyAg
ICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgICAgIG1fZGF0YUJ1ZmZl
ciA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKGhhc0NvbnRlbnQoKSkgeworICAgICAgICBB
U1NFUlQoIWhhc0RhdGEoKSk7CisgICAgICAgIHJlc3VsdCA9IDIgKiBtX2NvbnRlbnQubGVuZ3Ro
KCk7CisgICAgICAgIG1fY29udGVudCA9IFN0cmluZygpOworICAgIH0KICAgICBtX2lzQ29udGVu
dFB1cmdlZCA9IHRydWU7Ci0gICAgbV9oYXNDb250ZW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIGxl
bmd0aDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQoreworICAgIGlmICghdGV4dEVuY29kaW5nTmFt
ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNy
ZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNvZGluZ05hbWUpOworICAgIGVsc2UgaWYgKERPTUlt
cGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgICAgICBtX2RlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOworICAg
ICAgICBtX2RlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOworICAgIH0gZWxzZSBpZiAo
bWltZVR5cGUgPT0gInRleHQvaHRtbCIpCisgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiwgIlVURi04Iik7CiB9CiAKIC8vIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhCkBAIC04NSwxMyArMTI4LDE0IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OnJlc291cmNlQ3JlYXRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
CiAgICAgbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuc2V0KGlkZW50aWZpZXIsIG5ldyBS
ZXNvdXJjZURhdGEoaWRlbnRpZmllciwgbG9hZGVySWQpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNlaXZlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpyZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VE
YXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKICAgICAgICAg
cmV0dXJuOwogICAgIHJlc291cmNlRGF0YS0+c2V0RnJhbWVJZChmcmFtZUlkKTsKLSAgICByZXNv
dXJjZURhdGEtPnNldFVybCh1cmwpOworICAgIHJlc291cmNlRGF0YS0+c2V0VXJsKHJlc3BvbnNl
LnVybCgpKTsKKyAgICByZXNvdXJjZURhdGEtPmNyZWF0ZURlY29kZXIocmVzcG9uc2UubWltZVR5
cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSkKQEAgLTExMCwyMSArMTU0LDUyIEBA
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJj
ZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAg
ICAgaWYgKCFyZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybjsKKyAgICBpbnQgZGF0YUxlbmd0
aCA9IDIgKiBjb250ZW50Lmxlbmd0aCgpOworICAgIGlmIChkYXRhTGVuZ3RoID4gbWF4aW11bVNp
bmdsZVJlc291cmNlQ29udGVudFNpemUpCisgICAgICAgIHJldHVybjsKICAgICBpZiAocmVzb3Vy
Y2VEYXRhLT5pc0NvbnRlbnRQdXJnZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChlbnN1
cmVGcmVlU3BhY2UoY29udGVudC5sZW5ndGgoKSkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50
UHVyZ2VkKCkpIHsKLSAgICAgICAgaWYgKCFyZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKLSAg
ICAgICAgICAgIG1faWRlbnRpZmllcnNEZXF1ZS5hcHBlbmQoaWRlbnRpZmllcik7Ci0gICAgICAg
IHJlc291cmNlRGF0YS0+YXBwZW5kQ29udGVudChjb250ZW50KTsKLSAgICAgICAgbV9jb250ZW50
U2l6ZSArPSBjb250ZW50Lmxlbmd0aCgpOworICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0YUxl
bmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50UHVyZ2VkKCkpIHsKKyAgICAgICAgbV9p
ZGVudGlmaWVyc0RlcXVlLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICAgICAgcmVzb3VyY2VEYXRh
LT5zZXRDb250ZW50KGNvbnRlbnQpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGFMZW5n
dGg7CiAgICAgfQogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291
cmNlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQoreworICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9pZGVudGlm
aWVyVG9SZXNvdXJjZURhdGFNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VE
YXRhKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFyZXNvdXJjZURhdGEtPmRlY29kZXIoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRh
dGFMZW5ndGggPiBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKKyAgICAgICAgbV9j
b250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29udGVudCgpOworICAgIGlmIChyZXNv
dXJjZURhdGEtPmlzQ29udGVudFB1cmdlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVu
c3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQdXJn
ZWQoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUuYXBwZW5kKGlkZW50aWZpZXIpOwor
ICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAg
ICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6Om1heWJlRGVjb2RlRGF0YVRvQ29udGVudCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpCit7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZp
ZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZURh
dGEpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzRGF0YSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICByZXNvdXJjZURhdGEtPmRlY29kZURhdGFUb0NvbnRlbnQo
KTsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7
CiAgICAgaWYgKCFtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5jb250YWlucyhpZGVudGlm
aWVyKSkKQEAgLTE3MCw3ICsyNDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1
cmVOb0RhdGFGb3JJZGVudGlmaWVyKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAgICBS
ZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFw
LmdldChpZGVudGlmaWVyKTsKICAgICBpZiAocmVzb3VyY2VEYXRhKSB7Ci0gICAgICAgIGlmIChy
ZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKKyAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+aGFz
Q29udGVudCgpIHx8IHJlc291cmNlRGF0YS0+aGFzRGF0YSgpKQogICAgICAgICAgICAgbV9jb250
ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29udGVudCgpOwogICAgICAgICBkZWxldGUg
cmVzb3VyY2VEYXRhOwogICAgICAgICBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5yZW1v
dmUoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IDlhOTdmOGU3ZDg0Y2ZhMzI3MzVmNWNhM2RiN2MzZDBmZDFmNmVl
NzMuLmE0MDgyNDdmZjUzMGQ0MGI2ZGIwY2ZkYTEzZjgxOTViOTA4MGE3MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMSw3ICsz
MSw2IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQzLDggKzQyLDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKIHB1YmxpYzoKQEAgLTYxLDIz
ICs2MSwzMCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgICAgICB2b2lkIHNldFVybChTdHJpbmcgdXJsKSB7IG1fdXJsID0gdXJsOyB9
CiAKLSAgICAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb250ZW50
OyB9Ci0gICAgICAgIFN0cmluZyBjb250ZW50KCk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQ29udGVu
dChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gIW1fY29udGVudC5pc051bGwoKTsgfQorICAgICAgICBTdHJpbmcgY29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudDsgfQorICAgICAgICB2b2lkIHNldENvbnRlbnQoY29uc3QgU3Ry
aW5nJik7CisKKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9CisgICAgICAgIGludCBkYXRhTGVuZ3RoKCkgY29uc3Q7CisgICAgICAgIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQg
ZGVjb2RlRGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIGJvb2wgaXNDb250ZW50UHVyZ2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbnRlbnRQdXJnZWQ7IH0KLSAgICAgICAgdm9pZCBzZXRJc0Nv
bnRlbnRQdXJnZWQoYm9vbCBpc0NvbnRlbnRQdXJnZWQpIHsgbV9pc0NvbnRlbnRQdXJnZWQgPSBp
c0NvbnRlbnRQdXJnZWQ7IH0KICAgICAgICAgdW5zaWduZWQgcHVyZ2VDb250ZW50KCk7CiAKICAg
ICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgICAgICB2b2lkIHNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpS
ZXNvdXJjZVR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CiAKKyAgICAgICAgU3RyaW5nIHRl
eHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7IH0KKyAg
ICAgICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSkgeyBtX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9CisKKyAgICAg
ICAgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQorICAgICAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKwogICAgICAgICBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAg
ICAgICAgdm9pZCBzZXRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikgeyBt
X2J1ZmZlciA9IGJ1ZmZlcjsgfQogCi0gICAgICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOyB9Ci0gICAgICAgIHZvaWQgc2V0VGV4
dEVuY29kaW5nTmFtZShTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSkgeyBtX3RleHRFbmNvZGluZ05h
bWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9Ci0KICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZS5nZXQoKTsgfQogICAg
ICAgICB2b2lkIHNldENhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSkgeyBtX2NhY2hlZFJlc291cmNlID0gY2FjaGVkUmVzb3VyY2U7IH0KIApAQCAtODYsMTMgKzkz
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbG9hZGVySWQ7CiAgICAgICAgIFN0cmlu
ZyBtX2ZyYW1lSWQ7CiAgICAgICAgIFN0cmluZyBtX3VybDsKLSAgICAgICAgYm9vbCBtX2hhc0Nv
bnRlbnQ7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgbV9jb250ZW50QnVpbGRlcjsKKyAgICAgICAg
U3RyaW5nIG1fY29udGVudDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVm
ZmVyOwogICAgICAgICBib29sIG1faXNDb250ZW50UHVyZ2VkOwogICAgICAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGU7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAg
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiBtX2NhY2hlZFJlc291cmNlOwogICAgIH07CiAKQEAgLTEwMSwxMCAr
MTEwLDEyIEBAIHB1YmxpYzoKICAgICB+TmV0d29ya1Jlc291cmNlc0RhdGEoKTsKIAogICAgIHZv
aWQgcmVzb3VyY2VDcmVhdGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsb2FkZXJJZCk7Ci0gICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRSZXNv
dXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZUNv
bnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwor
ICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBjb250ZW50KTsKKyAgICB2b2lkIG1heWJlQWRkUmVzb3VyY2VEYXRhKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwor
ICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cik7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEqIGRhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDg4ZGMwODFiYjI1ZWUyYzM5YzU2YjIxN2I0ZDQ2MWE0ZWNiZDBjMDguLmFiYjk2MGE0MTk1Nzdk
ZmE0YzQ4OGU5ZGM1NTVlNjM4M2ZlYzNjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMTM4Niw3ICsxMzg2LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRN
ZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUocmVxdWVz
dCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxl
Z2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIFJlc291cmNl
UmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpLCBTdHJpbmcoKSksIC0xLCAtMSwg
ZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2UodXJsLCBT
dHJpbmcoKSwgLTEsIFN0cmluZygpLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOwogCiAg
ICAgdXJsID0gcmVxdWVzdC51cmwoKTsKIApAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2RlIHdv
bid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9k
YXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBp
biBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVn
YXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2Us
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNwb25zZSwgMCwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIGVycm9y
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShoaXN0
b3J5KCktPmN1cnJlbnRJdGVtKCkpOwpAQCAtMjYyMyw3ICsyNjIzLDcgQEAgdW5zaWduZWQgbG9u
ZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXUKICNlbmRpZgogICAgIH0KICAgICBpbnQgZW5jb2RlZERhdGFMZW5ndGggPSBy
ZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkgPyBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLnJl
c291cmNlTG9hZEluZm8oKS0+ZW5jb2RlZERhdGFMZW5ndGgpIDogLTE7Ci0gICAgbm90aWZpZXIo
KS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgcmVzcG9uc2UsIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZXJy
b3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3BvbnNlLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKQEAgLTI5MTYsNyArMjkxNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwg
aWRlbnRpZmllciwgZXJyb3IpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jl
c291cmNlQXNDYWNoZWQocGFnZSwgaWRlbnRpZmllcik7Ci0gICAgbm90aWZpZXIoKS0+c2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJv
cik7CisgICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIDAsIHJl
c291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OmFwcGx5VXNlckFnZW50KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCmluZGV4IGFjNDZhOTQ0N2ZlNWMz
NjI4ZjQ3MzUyZThjMmNjYTIyYmRlODNhNDguLmY0NTEzYmI2YzA5MGNmZDgzYzYyNDIzMjMyNjFi
YjZmNzEyNzZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYQogICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICBwYWdlLT5wcm9ncmVz
cygpLT5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxl
bmd0aCk7CiAKLSAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9h
ZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKQEAgLTEzMCwxMSAr
MTMwLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsIGxv
YWRlciwgcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgbV9mcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwg
aWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGFMZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKG1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCB2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2Uo
dW5zaWduZWQgbG9uZwogICAgIG9sZFBhZ2UtPnByb2dyZXNzKCktPmNvbXBsZXRlUHJvZ3Jlc3Mo
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZl
UmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YUxl
bmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVy
LCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIGRp
c3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAg
IGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXIsIGlkZW50aWZpZXIsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCBkYWZkNjE5NGNj
ZWM4MzI0NWUyOGEyY2I4YWJiODk2YTI1MmJjMDM1Li42YTkyOTZjMzEyYjU4ZDJkZjc3ZGVhNTVi
ZjZiMWJhNjRiY2FkY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuaApAQCAtNjAsMTEgKzYwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc2lnbklk
ZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmlu
aXNoVGltZSk7CiAgICAgdm9pZCBkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBh
Z2UodW5zaWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYWdlKik7CiAKLSAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKIHByaXZhdGU6CiAgICAgRnJhbWUqIG1fZnJh
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDQ1YjE4NGNmZjk5NzAyMmEwYTcyZTQ3ZmRiMzhkODll
YTk5MjM0NDIuLjY0ZjdiNjg1ZGQ5YzhmZDc2MjcyMGNjMmU3YTJkNjVjOTM0M2Y1OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGQK
ICAgICBVTlVTRURfUEFSQU0oZW5jb2RlZERhdGFMZW5ndGgpOwogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbGVuZ3RoLCAwKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKG1fZnJhbWUsIG1fY3Vy
cmVudFJlc291cmNlSWRlbnRpZmllciwgMCwgbGVuZ3RoLCAwKTsKICNlbmRpZgogCiAgICAgaWYg
KGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98792</attachid>
            <date>2011-06-27 14:55:51 -0700</date>
            <delta_ts>2011-06-28 03:54:35 -0700</delta_ts>
            <desc>Patch (for gtk bot)</desc>
            <filename>bug-30080-20110628015549.patch</filename>
            <type>text/plain</type>
            <size>64640</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk4MTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYmE5OWY0YTJiMjAyOGU4NzhhNGVj
MDRhYmRhZmNhZWQyMGMyYTM3Li4yOTI1OGJlNGIzNWI5MTQ0OWZlYmViNWI1YTA1NTgzODVkOWNl
MWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMjMgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBjb250ZW50IGZvciBwbHVnaW4gcmVx
dWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cGx1Z2luLWRhdGEucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy91dGY4LnhtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA2LTI3ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dLMl0gRGFpbHkgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWVtYmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY1ZjRj
YjEyZjE5Njk2ZGJhNDcxZGFlN2ExMTdhYTlhMmNiNWQ2MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU5OiBEb25l
LgorVGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIHNob3dzIGNvbnRlbnQgZm9yIGVtYmVkIG9iamVj
dHMuCisKKworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZQorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29u
dGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRl
bnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxlbmFtZT11dGY4
LnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD11dGY4CityZXNvdXJjZS50eXBlOiA4City
ZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVz
b3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEu
MCcgZW5jb2Rpbmc9J3V0Zi04Jz8+Cis8cm9vdD4KKyAgPHV0Zjg+U1XQodCh0JVTUyAtIFRoZXNl
ICdDQ0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvdXRmOD4KKzwvcm9vdD4KKworaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/
ZmlsZW5hbWU9Y3AxMjUxLnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1jcDEyNTEKK3Jl
c291cmNlLnR5cGU6IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVu
dDogdW5kZWZpbmVkCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDog
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nY3AxMjUxJz8+Cis8cm9vdD4KKyAgPGNwMTI1
MT5TVdCh0KHQlVNTIC0gVGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC9jcDEyNTE+
Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPXV0ZjgueG1sJm1pbWV0eXBlPWFwcGxpY2F0
aW9uL3htbAorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVz
dGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGlu
ZyBjb250ZW50OiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/PgorPHJvb3Q+
CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0dGVycy48
L3V0Zjg+Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPWNwMTI1MS54bWwmbWltZXR5cGU9
YXBwbGljYXRpb24veG1sCityZXNvdXJjZS50eXBlOiA4CityZXNvdXJjZS5jb250ZW50IGJlZm9y
ZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVzb3VyY2UuY29udGVudCBhZnRlciBy
ZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2NwMTI1MSc/
PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XQodCh0JVTUyAtIFRoZXNlICdDQ0UnIGFyZSBjeXJpbGxp
YyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWVtYmVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGJjMmM1MzY3OTBiOTM3NzEwNzhmNzhjZmY0NWQ5ZjFjYTJiMDZmZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTI2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBs
b2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rpb24gc3RyZWFtTG9hZGVkKCkKK3sKKyAgICBp
ZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGxvYWRlZEZpcnN0VVJM
ID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCit2YXIgc25pZmZlckluc3RhbGxlZCA9IGZh
bHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFsbGVkKCkKK3sKKyAgICBzbmlmZmVySW5zdGFs
bGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCitmdW5jdGlvbiBsb2FkVVJMcygpCit7
CisgICAgaWYgKCFzbmlmZmVySW5zdGFsbGVkIHx8ICFsb2FkZWRGaXJzdFVSTCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUu
bG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2luZG93LmludGVybmFscyBpcyBub3Qg
YXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludGVybmFscy5zZXRJ
bnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyhkb2N1bWVudCwgMTAgKiAxMDAwICogMTAw
MCwgMTAwMCAqIDEwMDApOworCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3Jlc291
cmNlLnBocD90eXBlPWltYWdlIiwgbnVsbCwgImxvYWRVUkwyIik7Cit9CisKK2Z1bmN0aW9uIGxv
YWRVUkwyKCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcGx1Z2luLWRhdGEu
cGhwP2ZpbGVuYW1lPXV0ZjgueG1sJm1pbWV0eXBlPXRleHQvaHRtbCZjaGFyc2V0PXV0ZjgiLCBu
dWxsLCAibG9hZFVSTDMiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDMoKQoreworICAgIHBsZy5n
ZXRVUkxOb3RpZnkoInJlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9Y3AxMjUxLnht
bCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1jcDEyNTEiLCBudWxsLCAibG9hZFVSTDQiKTsK
K30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQoreworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291
cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9dXRmOC54bWwmbWltZXR5cGU9YXBwbGljYXRp
b24veG1sIiwgbnVsbCwgImxvYWRVUkw1Iik7Cit9CisKK2Z1bmN0aW9uIGxvYWRVUkw1KCkKK3sK
KyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1l
PWNwMTI1MS54bWwmbWltZXR5cGU9YXBwbGljYXRpb24veG1sIiwgbnVsbCwgImFsbFVSTHNMb2Fk
ZWQiKTsKK30KKworZnVuY3Rpb24gYWxsVVJMc0xvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2co
IkRvbmUuIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJvblNuaWZmZXJJbnN0
YWxsZWQoKSIpOworCisgICAgZnVuY3Rpb24gZHVtcFJlc291cmNlKHJlc291cmNlLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXNv
dXJjZS50eXBlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNv
bnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlc291cmNlLmNvbnRlbnQpOwor
CisgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0
aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgICAgIH0KKworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250ZW50
TG9hZGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gNV07CisgICAgICAgIGR1
bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSA0XTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3Vy
Y2UsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMl07CisgICAgICAg
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXA1KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDYoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgc2hvd3MgY29u
dGVudCBmb3IgZW1iZWQgb2JqZWN0cy48L3A+CisgICAgPGVtYmVkIG5hbWU9InBsZyIgdHlwZT0i
YXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgc3JjPSJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3R5cGU9aW1hZ2UiIG9uc3RyZWFtbG9hZD0ic3RyZWFtTG9hZGVkKCkiPjwvZW1iZWQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVz
b3VyY2VzLWRhdGEtZW1iZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMjYyYzE3NDRiMmQ4
ZDIwYTgzYmYyNWNkZjU5YmM0ODRjOGUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVzb3VyY2VzLWRhdGEtZW1i
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1
NDogRG9uZS4KK1Rlc3RzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIGxvZ2ljIGZvciBlbWJlZCBjb250
ZW50IHB1cmdpbmcuCisKKworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDAKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIg
cmVxdWVzdGluZyBjb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMAorcmVzb3VyY2UuY29udGVu
dCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MjAxCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJl
cXVlc3RpbmcgY29udGVudDogbnVsbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAKK3Jlc291cmNlLmNvbnRlbnQg
YWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLWVt
YmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM1MjZkZmU2MGRmODc5OWQ3OGVkNDM0MDgwMDMyNDQxYTdj
ODM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTEz
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBsb2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rp
b24gc3RyZWFtTG9hZGVkKCkKK3sKKyAgICBpZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJl
dHVybjsKKworICAgIGxvYWRlZEZpcnN0VVJMID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQor
Cit2YXIgc25pZmZlckluc3RhbGxlZCA9IGZhbHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFs
bGVkKCkKK3sKKyAgICBzbmlmZmVySW5zdGFsbGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOwor
fQorCitmdW5jdGlvbiBsb2FkVVJMcygpCit7CisgICAgaWYgKCFzbmlmZmVySW5zdGFsbGVkIHx8
ICFsb2FkZWRGaXJzdFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4g
YXMgd2luZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGludGVybmFscy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
cyhkb2N1bWVudCwgMiozMDAsIDIqMjAwKTsKKworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291
cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDAiLCBudWxsLCAibG9hZFVSTDIiKTsKK30KKworZnVu
Y3Rpb24gbG9hZFVSTDIoKQoreworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9yZXNv
dXJjZS5waHA/c2l6ZT0xMDAiLCBudWxsLCAibG9hZFVSTDMiKTsKK30KKworZnVuY3Rpb24gbG9h
ZFVSTDMoKQoreworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9yZXNvdXJjZS5waHA/
c2l6ZT0yMDEiLCBudWxsLCAibG9hZFVSTDQiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQor
eworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAi
LCBudWxsLCAiYWxsVVJMc0xvYWRlZCIpOworfQorCitmdW5jdGlvbiBhbGxVUkxzTG9hZGVkKCkK
K3sKKyAgICBjb25zb2xlLmxvZygiRG9uZS4iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUsICJhZGRNZXNzYWdlIiwgc3RlcDEpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoIm9uU25pZmZlckluc3RhbGxlZCgpIik7CisKKyAgICBmdW5jdGlvbiBkdW1wUmVzb3Vy
Y2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChyZXNvdXJjZS51cmwpOworCisgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNv
bnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7Cisg
ICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc291cmNlLnJlcXVl
c3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkK
KyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGgg
LSA0XTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMik7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2Us
IHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMl07CisgICAgICAgIGR1
bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSAxXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyBOZXR3b3JrUmVzb3VyY2VzRGF0YSBsb2dpYyBmb3Ig
ZW1iZWQgY29udGVudCBwdXJnaW5nLjwvcD4KKyAgICA8ZW1iZWQgbmFtZT0icGxnIiB0eXBlPSJh
cHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiBzcmM9InJlc291cmNlcy9yZXNvdXJj
ZS5waHA/dHlwZT1pbWFnZSIgb25zdHJlYW1sb2FkPSJzdHJlYW1Mb2FkZWQoKSI+PC9lbWJlZD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLXhoci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVzb3Vy
Y2VzLWRhdGEteGhyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGQyZDExOGEyOTVjZTZkNTRh
OTI0NTI4MTU0OTVlMDFjNjg3MTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLXhoci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM0OiBEb25l
LgorVGVzdHMgTmV0d29ya1Jlc291cmNlc0RhdGEgbG9naWMgZm9yIFhIUiBjb250ZW50IHB1cmdp
bmcuCisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwP3NpemU9MjAwCityZXNvdXJjZS5jb250ZW50OiBudWxsCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXpl
PTEwMAorcmVzb3VyY2UuY29udGVudDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDEKK3Jlc291cmNlLmNvbnRlbnQ6IG51bGwKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3NpemU9MTAwCityZXNvdXJjZS5jb250ZW50OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS14aHIuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS14
aHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMWEzOTg0NjJiYzFiZWI2YTM5MGQ5NDg2NmFiYzgzOWJiYmY0
NzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLXhoci5odG1sCkBAIC0wLDAgKzEsOTIgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gbG9hZERhdGEoKQoreworICAgIGlmICghd2luZG93LmludGVybmFscykgewor
ICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIGFzIHdpbmRvdy5p
bnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpbnRlcm5hbHMuc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoZG9jdW1lbnQs
IDIqMzAwLCAyKjIwMCk7CisKKyAgICBkb1hIUigiR0VUIiwgInJlc291cmNlcy9yZXNvdXJjZS5w
aHA/c2l6ZT0yMDAiLCB0cnVlLCB4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVk
MSgpCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MTAw
IiwgdHJ1ZSwgeGhyTG9hZGVkMik7Cit9CisKK2Z1bmN0aW9uIHhockxvYWRlZDIoKQoreworICAg
IGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTIwMSIsIHRydWUsIHho
ckxvYWRlZDMpOworfQorCitmdW5jdGlvbiB4aHJMb2FkZWQzKCkKK3sKKyAgICBkb1hIUigiR0VU
IiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAiLCB0cnVlLCBhbGxYSFJzTG9hZGVk
KTsKK30KKworZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRv
bmUuIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuYWRkU25p
ZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0
ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgpIik7CisK
KyAgICBmdW5jdGlvbiBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZS51cmwpOworCisgICAgICAgIGZ1
bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudDogIiArIHJlc291cmNlLmNvbnRlbnQpOwor
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc291cmNlLnJl
cXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSA0XTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3Vy
Y2UsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMl07CisgICAgICAg
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXA0KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD4gVGVzdHMgTmV0d29ya1Jlc291cmNlc0RhdGEgbG9naWMg
Zm9yIFhIUiBjb250ZW50IHB1cmdpbmcuPC9wPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhy
LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0CmluZGV4IDQ1ZTU1NTEzOTk4ZWIx
NTUxZjA3ZjA5NGFiNTJhZThlYzA5MmNmM2IuLjg5NjFlMTY5ODM1NWRlMmY1N2JmOTMyYzJjMWYz
MWE2MGIyZmY1MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBEb25lLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE5OiBEb25lLgogVGVzdHMgWEhSIG5ldHdvcmsgcmVzb3VyY2Ug
dHlwZSBhbmQgY29udGVudCBmb3IgYXN5bmNocm9ub3VzIHJlcXVlc3RzLiBCdWcgNjEyMDUKIAog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJj
ZS5waHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay14aHItYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMuaHRtbAppbmRleCAzMjYyMWNiNTE2OGRlNjdj
NzYzODczMjZhNTQyMzU1YWQ1OTBiMDQ2Li5iNjUzM2U1ZDYzY2UwZTBmMjExYWY0ZGYxNjBlMmVj
ZWM1MWNjMGJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy5odG1sCkBAIC01LDYgKzUsMTIg
QEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBsb2FkRGF0YSgpCiB7CisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4g
YXMgd2luZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGludGVybmFscy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
cyhkb2N1bWVudCwgMTAgKiAxMDAwICogMTAwMCwgMTAwMCAqIDEwMDApOworCiAgICAgZG9YSFIo
IkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIiwgdHJ1ZSwgcmVzb3VyY2VMb2FkZWQpOwog
fQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmsteGhyLXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAzNDQz
NDdjMGU1MWU4MjFhNWM2YzM4Njc0OWEzYWMxM2IzZjVkZjcyLi4yMzA2OTQ0ZWYwNmUwODI4NTk0
MjlkMTlkODU2NTA2ZTJlZThkMjgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IERv
bmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IERvbmUuCiBUZXN0cyBYSFIgbmV0d29yayBy
ZXNvdXJjZSB0eXBlIGFuZCBjb250ZW50IGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4gQnVnIDYx
MjA1CiAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCmluZGV4IDhmMjQ4MGU3Yjgx
YmZiMDM4Y2VkNmQ4ZTA4OWUxZGFhYjU1ZDg5MTMuLjdkM2JkMTk0NTRlMDU3ZTE2Y2IzZjhkOTE0
ZWFmZWNlMGU3ZmFlNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCkBAIC01LDYgKzUs
MTIgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBsb2FkRGF0YSgpCiB7CisgICAgaWYgKCF3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBy
dW4gYXMgd2luZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGludGVybmFscy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxp
bWl0cyhkb2N1bWVudCwgMTAgKiAxMDAwICogMTAwMCwgMTAwMCAqIDEwMDApOworCiAgICAgZG9Y
SFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIiwgZmFsc2UsIHJlc291cmNlTG9hZGVk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2NwMTI1MS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIyODVmMzYwYmNl
M2U1ZDkzZjNjMmQ2ZTBlYzRjMzBjYjQ5NGE3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2NwMTI1MS54bWwKQEAg
LTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdjcDEyNTEnPz4KKzxy
b290PgorICA8Y3AxMjUxPlNV0dHFU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0dGVy
cy48L2NwMTI1MT4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMjFkOWU4ZTlkOTczNjIzYmIxZjUyYWI0NGQwNjc1MmZiYmNhZGI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhwCisgICAgJG1p
bWV0eXBlID0gJF9HRVRbIm1pbWV0eXBlIl07CisgICAgJGZpbGVuYW1lID0gJF9HRVRbImZpbGVu
YW1lIl07CisgICAgJGNoYXJzZXQgPSAkX0dFVFsiY2hhcnNldCJdOworCisgICAgaGVhZGVyKCJF
eHBpcmVzOiBUaHUsIDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVCIpOworICAgIGhlYWRlcigiQ2Fj
aGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAgICBo
ZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKKyAgICBpZiAoJGNoYXJzZXQpCisgICAgICAgIGhl
YWRlcigiQ29udGVudC1UeXBlOiAiIC4gJG1pbWV0eXBlIC4gIjsgY2hhcnNldD0iIC4gJGNoYXJz
ZXQpOworICAgIGVsc2UKKyAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAkbWltZXR5
cGUpOworCisgICAgcmVhZGZpbGUoJGZpbGVuYW1lKTsKKz8+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNv
dXJjZS5waHAKaW5kZXggOWU1NjA3YzE4MmM4NjVlZTIzMmJmOTE4YmIwZjg4ODhhZGY0Y2YxNy4u
M2UxZjE4NWUxZmRlMjY4YjJlYmZlZmExZDAwMTdkYzA5MzUxN2VkYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL3Jlc291cmNlLnBocApAQCAtMjYsNyArMjYsNyBAQAogICAgIGVsc2UgaWYgKCR0eXBlID09
ICJpbWFnZSIpCiAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiBpbWFnZS9wbmciKTsKICAg
ICBlbHNlCi0gICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwiKTsKKyAgICAg
ICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW4iKTsKIAogICAgICMgRmx1c2ggaGVh
ZGVycyBhbmQgc2xlZXAgYm9mb3JlIHNlbmRpbmcgcmVzcG9uc2UKICAgICBpZiAoJHNlbmQpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL3V0ZjgueG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvdXRmOC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlZTQ4MWZhODA3NGFjYjc1M2MzYzdl
ZjU0MjE5ZmQ5MmYxMDQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3V0ZjgueG1sCkBAIC0wLDAgKzEsNCBAQAor
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KKzxyb290PgorICA8dXRmOD5T
VdCh0KHQlVNTIC0gVGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC91dGY4PgorPC9y
b290PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CmluZGV4IGQxMDRjZGNlN2NjODQ4N2FmZjkxOTVmN2ExMTc0MjUyMzczZjMxYjIu
LmFhNjczZTViMzNiZjZiYWI4OWZkNzRkMzJjNGMyYjFjNjk5ZTM2ZDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTY1
NSw2ICs2NTUsMTAgQEAgV09OVEZJWCBTS0lQIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMgPSBGQUlM
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWhlYWRlcnMu
aHRtbCA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0bWwgPSBGQUlMCiAKKy8vIFRoZXJlIGlzIG5vIGVub3Vn
aCBwbHVnaW5zIHN1cHBvcnQgaW4gRFJUCitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbCA9IEZBSUwKK1dPTlRGSVggU0tJUCA6IGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC5o
dG1sID0gRkFJTAorCiAvLyBJbnNwZWN0b3IgdGVzdHMgaW4gRGVidWcgYnVpbGQgYXJlIHZlcnkg
c2xvdy4KIEJVR19EUlQgV0lOIExJTlVYIERFQlVHIFNMT1cgOiBpbnNwZWN0b3IgPSBQQVNTCiBC
VUdfRFJUIFdJTiBMSU5VWCBERUJVRyBTTE9XIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IgPSBQQVNT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZDc3ODViYWMwM2FhNGI1NGU4YmI1NWRjNjE1YzZjZTE0YTg5YzIyNi4u
NzliZDlhNDE1N2M1ZWZiYTc3ZTdjMmEwZjc5NTRhYzYwMTg0MzkyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDExLTA2LTIzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFNob3cgY29udGVudCBmb3IgcGx1Z2luIHJlcXVlc3RzIGluIG5ldHdv
cmsgcGFuZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDA4MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1lbWJlZC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpzZXRJbml0aWFsWEhSQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJj
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlRGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6ZW5zdXJlTm9EYXRhRm9ySWRlbnRpZmllcik6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpoYXNDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjp0ZXh0RW5jb2RpbmdO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnNldFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rlcik6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlh
RWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRSZWNlaXZlRGF0YSk6CisKIDIwMTEtMDYtMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGNjZDgzODRhZGZhOTdmMDM0ODk0MGIxZWFkYzQwNGZjNjU3
ZGIyNmYuLmU3ZGE1M2MxYjc0ZDUzODgwNzJiM2Y3MWU1Nzk1YTFlMjdlMWY3OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0xMzAwLDYgKzEzMDAsNyBAQCBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZkYXNoYm9hcmRSZWdpb25zRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQyMGNhY2hlRG9jdW1l
bnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlF
dgorX19aTks3V2ViQ29yZThEb2N1bWVudDRwYWdlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ2
ZG9tYWluRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ2bG9hZGVyRXYKIF9fWk5LN1dlYkNvcmU4
SW50UG9pbnRjdjdDR1BvaW50RXYKQEAgLTE1NzksNiArMTU4MCw3IEBAIF9fWk43V2ViQ29yZTE5
SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVsUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFRUUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c3RvcFVzZXJJbml0aWF0
ZWRQcm9maWxpbmdFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdzdGFydFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmdFdgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MzlzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWkKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29u
dHJvbGxlcjVjbG9zZUV2CiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwxMm1vdmVXaW5kb3dCeUVmZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDBjZjNlOGY2MmRmYzAwZDhjNjEyYTgyOTc4ZGNhYmE5
YjQwM2VlODQuLjM0YmQzNDkzNTFmMzQzMGM2NTE2M2IyOGM2ZTliYjE2NjgyNDM5MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTQ4NCw2ICs0ODQsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQogCiAj
ZW5kaWYKIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZXNEYXRhU2l6ZUxp
bWl0c0Zyb21JbnRlcm5hbHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1h
eGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQoreworICAgIG1fcmVzb3VyY2VBZ2VudC0+
c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKG1heGltdW1SZXNvdXJjZXND
b250ZW50U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNzk4ZWJi
YTU2NTkzYjc1ZWIyZGIxYmQ2MzllZjQ2MzY5ZTIyMTkyMC4uZWI0MjFlNTFiZDc1MDNkYmIyZWE2
MWZmNTMzNDRlZmU0MDEwY2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMTksNiArMTE5LDggQEAgcHVibGljOgogICAgIHZvaWQg
cmVzdW1lKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNG
cm9tSW50ZXJuYWxzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVt
U2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBh
OWUyY2FhODBiYmQyMTljYWM5OWFmN2ZjNzllZGE3NWIyYjA4NjcxLi4yZGExNjdkZjIwOTg2MmQ2
OWQ1Y2NiNGI3OGFkNmZkOWQ4ZWQwOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNDkyLDEwICs0OTIsMTAg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9y
ZUltcGwoRnJhbWUqIGZyYW1lLCBEb2N1bWUKICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZUJ1dENhbmNlbGVkSW1wbChmcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCByKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlRGF0YShp
ZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4
IDIwYjBlYjgyNzEwNDg3ZTljYzI4YWI3Yzc2ZjUyZTE0NTg4M2U3MmMuLmUzZTMyNzRjOGUxNjg3
YzI3YzBjYzU0ZmQ2Mjk0MGIzZGRjNDIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQo
RnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURv
d25sb2FkKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQ
b2xpY3lJZ25vcmUoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlRGF0YShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwpAQCAt
MjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhG
cmFtZU9wdGlvbnNEZW5pZWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9p
ZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUltcGwoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGlt
ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKQEAgLTc2NCwxMSArNzY0
LDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRo
UG9saWN5SWdub3JlKEZyYW1lKiBmcmFtZSwgRG9jCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAg
ICAgIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVu
dGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVu
Z3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDI5ZWMxNWE0
MWVmNjhmMTRkZjVkOWMzYWQ4ZjE3NGJjMjJiYzQ1ODAuLmExNDNmY2FkMTA1ZDg2ZTg1MDE1OGM2
ZTZkZTNiNDkwMGU5YzRiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTI1MCwxOCArMjUwLDIxIEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lCiAgICAgICAgIGVsc2UgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3Vz
bHkgfHwgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUoaWRlbnRpZmllcikgPT0gSW5zcGVj
dG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSkKICAgICAgICAgICAgIHR5cGUgPSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlhIUlJlc291cmNlOwogCi0gICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9u
c2VSZWNlaXZlZChpZGVudGlmaWVyLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1l
KCkpLCByZXNwb25zZS51cmwoKSk7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VS
ZWNlaXZlZChpZGVudGlmaWVyLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkp
LCByZXNwb25zZSk7CiAgICAgfQogICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VUeXBl
KGlkZW50aWZpZXIsIHR5cGUpOwogICAgIG1fZnJvbnRlbmQtPnJlc3BvbnNlUmVjZWl2ZWQoc3Rh
dGljX2Nhc3Q8aW50PihpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgSW5zcGVjdG9yUGFnZUFn
ZW50OjpyZXNvdXJjZVR5cGVTdHJpbmcodHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogICAgIC8v
IElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2Vu
ZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCi0gICAgLy8gYXMg
dGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlQ29udGVudExlbmd0aCBmcm9tIHRo
ZSBuZXR3b3JrIHN0YWNrLgorICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlk
UmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoY2FjaGVkUmVzb3Vy
Y2VTaXplICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KQotICAgICAgICBkaWRS
ZWNlaXZlQ29udGVudExlbmd0aChpZGVudGlmaWVyLCBjYWNoZWRSZXNvdXJjZVNpemUsIDApOwor
ICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAwLCBjYWNoZWRSZXNvdXJjZVNpemUs
IDApOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVDb250ZW50
TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURh
dGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogeworICAgIGlmIChkYXRhICYmIG1fcmVzb3Vy
Y2VzRGF0YS0+cmVzb3VyY2VUeXBlKGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6
T3RoZXJSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKwogICAgIG1fZnJvbnRlbmQtPmRh
dGFSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKQEAgLTI3MCw2ICsyNzMsOCBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
VHlwZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2Up
CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoaWRlbnRp
ZmllciwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCksIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsK
IAorICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGlkZW50aWZp
ZXIpOworCiAgICAgaWYgKCFmaW5pc2hUaW1lKQogICAgICAgICBmaW5pc2hUaW1lID0gY3VycmVu
dFRpbWUoKTsKIApAQCAtMjk2LDcgKzMwMSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjCiAK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFhIUkNvbnRlbnQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKIHsKLSAgICBt
X3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJp
bmcpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KGlkZW50aWZpZXIs
IHNvdXJjZVN0cmluZyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTM5Nyw2ICs0MDIs
MTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLAogICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29s
ZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVk
LCBlbmFibGVkKTsKIH0KIAorLy8gY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciBsYXlvdXQgdGVz
dCBwdXJwb3Nlcy4KK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUs
IGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKK3sKKyAgICBtX3Jlc291cmNl
c0RhdGEtPnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKG1heGltdW1SZXNvdXJjZXNDb250ZW50
U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworfQorCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgZW5hYmxlKCk7
CkBAIC00MzYsNyArNDQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojppbml0aWFs
aXplQmFja2dyb3VuZENvbGxlY3Rpb24oKQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKQogewot
ICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+ZGF0YShpZGVudGlmaWVyKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpIHsKICAgICAgICAgKmVycm9y
U3RyaW5nID0gIk5vIHJlc291cmNlIHdpdGggZ2l2ZW4gaWRlbnRpZmllciBmb3VuZCI7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oCmluZGV4IGI0NDEwYjM3NWNhZjFkMmU2ZmE2MmVmZTk5NGNhZWJiOWNlMTkx
MTYuLmI4MDJhZjQzZDZlNDlhMWVlNTA1NTQzYjkxMTBhZDRjYjQ4ZWQ5ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtOTAs
NyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jlc291cmNl
QXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7CkBAIC0xMTMsNiArMTEz
LDkgQEAgcHVibGljOgogICAgIHZvaWQgaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKTsKICAgICB2b2lkIHNldEJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCk7CiAKKyAg
ICAvLyBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIGxheW91dCB0ZXN0IHB1cnBvc2VzLgorICAg
IHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKGludCBtYXhpbXVt
UmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSk7CisKICAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAogICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA1ODhkMWVi
NDA0ZjdlNjlmMDg5ZDMxMjk3YjcyMGE2OWQwMmFlZjljLi4zNDZiMjk5ZmMxNjlkY2QxZDBlNTQ5
NmZkNTdhYzE1OWJhMjdiNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTI5LDQ4ICsyOSw5OSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAKKyNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG5hbWVz
cGFjZSB7CiAvLyAxME1CCiBzdGF0aWMgaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9
IDEwICogMTAwMCAqIDEwMDA7CisKKy8vIDFNQgorc3RhdGljIGludCBtYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSA9IDEwMDAgKiAxMDAwOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKwogLy8gUmVzb3VyY2VEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpSZXNvdXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxv
YWRlcklkKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2xvYWRlcklk
KGxvYWRlcklkKQotICAgICwgbV9oYXNDb250ZW50KGZhbHNlKQogICAgICwgbV9pc0NvbnRlbnRQ
dXJnZWQoZmFsc2UpCiAgICAgLCBtX3R5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlKQogewogfQogCi1TdHJpbmcgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
Y29udGVudCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENv
bnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogewotICAgIHJldHVybiBtX2hhc0NvbnRlbnQg
PyBtX2NvbnRlbnRCdWlsZGVyLnRvU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBBU1NFUlQoIWhh
c0RhdGEoKSk7CisgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOworICAgIG1fY29udGVudCA9IGNv
bnRlbnQ7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBw
ZW5kQ29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpwdXJnZUNvbnRlbnQoKQogewotICAgIG1fY29udGVudEJ1
aWxkZXIuYXBwZW5kKGNvbnRlbnQpOwotICAgIG1faGFzQ29udGVudCA9IHRydWU7CisgICAgdW5z
aWduZWQgcmVzdWx0ID0gMDsKKyAgICBpZiAoaGFzRGF0YSgpKSB7CisgICAgICAgIEFTU0VSVCgh
aGFzQ29udGVudCgpKTsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKGhhc0NvbnRl
bnQoKSkgeworICAgICAgICBBU1NFUlQoIWhhc0RhdGEoKSk7CisgICAgICAgIHJlc3VsdCA9IDIg
KiBtX2NvbnRlbnQubGVuZ3RoKCk7CisgICAgICAgIG1fY29udGVudCA9IFN0cmluZygpOworICAg
IH0KKyAgICBtX2lzQ29udGVudFB1cmdlZCA9IHRydWU7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250
ZW50KCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6Y3JlYXRlRGVj
b2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jb250ZW50QnVpbGRlci50b1N0cmluZ1By
ZXNlcnZlQ2FwYWNpdHkoKS5sZW5ndGgoKTsKLSAgICBtX2NvbnRlbnRCdWlsZGVyLmNsZWFyKCk7
Ci0gICAgbV9pc0NvbnRlbnRQdXJnZWQgPSB0cnVlOwotICAgIG1faGFzQ29udGVudCA9IGZhbHNl
OwotICAgIHJldHVybiBsZW5ndGg7CisgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIiwgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgZWxzZSBpZiAobWltZVR5cGUgPT0gInRl
eHQvcGxhaW4iKQorICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoInRleHQvcGxhaW4iLCAiSVNPLTg4NTktMSIpOworICAgIGVsc2UgaWYgKG1pbWVUeXBlID09
ICJ0ZXh0L2h0bWwiKQorICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQvaHRtbCIsICJVVEYtOCIpOworICAgIGVsc2UgaWYgKERPTUltcGxlbWVudGF0
aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOworICAgICAgICBtX2Rl
Y29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOworICAgIH0KK30KKworaW50IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7Cit9CisKK3ZvaWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Cisg
ICAgaWYgKCFtX2RhdGFCdWZmZXIpCisgICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7Cit9CisKK2ludCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKK3sKKyAgICBBU1NFUlQo
IWhhc0NvbnRlbnQoKSk7CisgICAgaW50IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKKyAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZShtX2RhdGFCdWZmZXItPmRhdGEo
KSwgbV9kYXRhQnVmZmVyLT5zaXplKCkpOworICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgcmV0dXJuIDIgKiBtX2NvbnRlbnQubGVuZ3RoKCkgLSBkYXRhTGVuZ3RoOwogfQogCiAvLyBO
ZXR3b3JrUmVzb3VyY2VzRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhKCkKICAgICA6IG1fY29udGVudFNpemUoMCkKKyAgICAsIG1fbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKKyAgICAsIG1fbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUobWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUpCiB7CiB9CiAKQEAgLTg1LDEzICsxMzYsMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVzb3VyY2VDcmVhdGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW4K
ICAgICBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5zZXQoaWRlbnRpZmllciwgbmV3IFJl
c291cmNlRGF0YShpZGVudGlmaWVyLCBsb2FkZXJJZCkpOwogfQogCi12b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpyZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQogICAgICAgICBy
ZXR1cm47CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZyYW1lSWQpOwotICAgIHJlc291
cmNlRGF0YS0+c2V0VXJsKHVybCk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRVcmwocmVzcG9uc2Uu
dXJsKCkpOworICAgIHJlc291cmNlRGF0YS0+Y3JlYXRlRGVjb2RlcihyZXNwb25zZS5taW1lVHlw
ZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpzZXRSZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlKQpAQCAtMTEwLDIxICsxNjIsNTQgQEAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c291cmNlVHlwZSh1bnNpZ25lZCBsb24KICAgICByZXR1cm4gcmVzb3VyY2VEYXRhLT50eXBlKCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlQ29udGVudCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAg
ICBpZiAoIXJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOworICAgIGludCBkYXRhTGVuZ3Ro
ID0gMiAqIGNvbnRlbnQubGVuZ3RoKCk7CisgICAgaWYgKGRhdGFMZW5ndGggPiBtX21heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHJlc291
cmNlRGF0YS0+aXNDb250ZW50UHVyZ2VkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoZW5z
dXJlRnJlZVNwYWNlKGNvbnRlbnQubGVuZ3RoKCkpICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVu
dFB1cmdlZCgpKSB7Ci0gICAgICAgIGlmICghcmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCi0g
ICAgICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUuYXBwZW5kKGlkZW50aWZpZXIpOwotICAgICAg
ICByZXNvdXJjZURhdGEtPmFwcGVuZENvbnRlbnQoY29udGVudCk7Ci0gICAgICAgIG1fY29udGVu
dFNpemUgKz0gY29udGVudC5sZW5ndGgoKTsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGFM
ZW5ndGgpICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVudFB1cmdlZCgpKSB7CisgICAgICAgIG1f
aWRlbnRpZmllcnNEZXF1ZS5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgICAgIHJlc291cmNlRGF0
YS0+c2V0Q29udGVudChjb250ZW50KTsKKyAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVu
Z3RoOwogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNv
dXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKK3sKKyAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1faWRlbnRp
ZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNl
RGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghcmVzb3VyY2VEYXRhLT5kZWNvZGVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5kYXRhTGVuZ3RoKCkgKyBk
YXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKKyAgICAgICAg
bV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29udGVudCgpOworICAgIGlmIChy
ZXNvdXJjZURhdGEtPmlzQ29udGVudFB1cmdlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQ
dXJnZWQoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUuYXBwZW5kKGlkZW50aWZpZXIp
OworICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICB9Cit9CisKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6Om1heWJlRGVjb2RlRGF0YVRvQ29udGVudCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCit7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50
aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJj
ZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzRGF0YSgp
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50U2l6ZSArPSByZXNvdXJjZURhdGEtPmRl
Y29kZURhdGFUb0NvbnRlbnQoKTsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IDIgKiByZXNvdXJjZURh
dGEtPmNvbnRlbnQoKS5sZW5ndGgoKTsKKyAgICBpZiAoZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNp
bmdsZVJlc291cmNlQ29udGVudFNpemUpCisgICAgICAgIG1fY29udGVudFNpemUgLT0gcmVzb3Vy
Y2VEYXRhLT5wdXJnZUNvbnRlbnQoKTsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkQ2FjaGVkUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0
YU1hcC5jb250YWlucyhpZGVudGlmaWVyKSkKQEAgLTE0Myw3ICsyMjgsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFBhcwogICAgIHJlc291cmNlRGF0YS0+c2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0
RW5jb2RpbmdOYW1lKTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSog
TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0Rh
dGE6OmRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIHJldHVybiBtX2lkZW50
aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiB9CkBAIC0xNTEsNiArMjM2
LDcgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSogTmV0d29ya1Jlc291cmNl
c0RhdGE6OmRhdGEodW5zaWduZWQgbG9uZyBpZGUKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQpCiB7CiAgICAgbV9pZGVudGlm
aWVyc0RlcXVlLmNsZWFyKCk7CisgICAgbV9jb250ZW50U2l6ZSA9IDA7CiAKICAgICBSZXNvdXJj
ZURhdGFNYXAgcHJlc2VydmVkTWFwOwogCkBAIC0xNjYsMTEgKzI1MiwxOSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJpbmcmIHByZXNlcnZlZExvYWRlcklkKQog
ICAgIG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKIH0K
IAordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMo
aW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplKQoreworICAgIGNsZWFyKCk7CisgICAgbV9tYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUgPSBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7CisgICAgbV9tYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
OworfQorCisKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZU5vRGF0YUZvcklkZW50
aWZpZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuZ2V0KGlkZW50aWZpZXIp
OwogICAgIGlmIChyZXNvdXJjZURhdGEpIHsKLSAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+aGFz
Q29udGVudCgpKQorICAgICAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkgfHwgcmVz
b3VyY2VEYXRhLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291
cmNlRGF0YS0+cHVyZ2VDb250ZW50KCk7CiAgICAgICAgIGRlbGV0ZSByZXNvdXJjZURhdGE7CiAg
ICAgICAgIG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLnJlbW92ZShpZGVudGlmaWVyKTsK
QEAgLTE3OSwxMCArMjczLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZU5v
RGF0YUZvcklkZW50aWZpZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogCiBib29sIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjplbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpCiB7Ci0gICAgaWYgKHNp
emUgPiBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUpCisgICAgaWYgKHNpemUgPiBtX21heGlt
dW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2hp
bGUgKHNpemUgPiBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgLSBtX2NvbnRlbnRTaXplKSB7
CisgICAgd2hpbGUgKHNpemUgPiBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSAtIG1fY29u
dGVudFNpemUpIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbV9pZGVudGlm
aWVyc0RlcXVlLnRha2VGaXJzdCgpOwogICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0
YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKHJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggNzhjZGJlYmZhYTczZjY4MThlODAyZmEwMzliYWY5ZWM3
NWM3OWE5NS4uZDU0N2FhNzkxMWU2OTA4M2RlMzg5NDI3NWI0MjdlZDgzZGQxODZkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMx
LDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDMsMTIg
KzQyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBUZXh0UmVz
b3VyY2VEZWNvZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiBwdWJsaWM6CiAg
ICAgY2xhc3MgUmVzb3VyY2VEYXRhIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOwogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCk7CiAKQEAgLTYxLDM4ICs2Miw0
NyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgICAgICB2b2lkIHNldFVybChjb25zdCBTdHJpbmcmIHVybCkgeyBtX3VybCA9IHVybDsg
fQogCi0gICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29udGVu
dDsgfQotICAgICAgICBTdHJpbmcgY29udGVudCgpOwotICAgICAgICB2b2lkIGFwcGVuZENvbnRl
bnQoY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuICFtX2NvbnRlbnQuaXNOdWxsKCk7IH0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnQ7IH0KKyAgICAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0
cmluZyYpOwogCiAgICAgICAgIGJvb2wgaXNDb250ZW50UHVyZ2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnRlbnRQdXJnZWQ7IH0KLSAgICAgICAgdm9pZCBzZXRJc0NvbnRlbnRQdXJnZWQoYm9v
bCBpc0NvbnRlbnRQdXJnZWQpIHsgbV9pc0NvbnRlbnRQdXJnZWQgPSBpc0NvbnRlbnRQdXJnZWQ7
IH0KICAgICAgICAgdW5zaWduZWQgcHVyZ2VDb250ZW50KCk7CiAKICAgICAgICAgSW5zcGVjdG9y
UGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgICAgICB2b2lkIHNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlw
ZSkgeyBtX3R5cGUgPSB0eXBlOyB9CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7
IH0KLQogICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dEVuY29kaW5nTmFtZTsgfQogICAgICAgICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKSB7IG1fdGV4dEVuY29kaW5nTmFtZSA9IHRleHRF
bmNvZGluZ05hbWU7IH0KIAorICAgICAgICBUZXh0UmVzb3VyY2VEZWNvZGVyKiBkZWNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgY3JlYXRlRGVj
b2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpOworCisgICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9CisKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNv
dXJjZS5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNlID0gY2FjaGVkUmVzb3VyY2U7
IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBpbnQgZGF0YUxlbmd0aCgpIGNvbnN0OworICAgICAg
ICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAg
ICAgICBpbnQgZGVjb2RlRGF0YVRvQ29udGVudCgpOworCiAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bV9pZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbV9sb2FkZXJJZDsKICAgICAgICAgU3RyaW5n
IG1fZnJhbWVJZDsKICAgICAgICAgU3RyaW5nIG1fdXJsOwotICAgICAgICBib29sIG1faGFzQ29u
dGVudDsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBtX2NvbnRlbnRCdWlsZGVyOworICAgICAgICBT
dHJpbmcgbV9jb250ZW50OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZm
ZXI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CiAgICAgICAgIEluc3BlY3RvclBh
Z2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkUmVzb3VyY2U7CiAgICAgfTsKIApAQCAtMTAxLDE1ICsx
MTEsMTkgQEAgcHVibGljOgogICAgIH5OZXR3b3JrUmVzb3VyY2VzRGF0YSgpOwogCiAgICAgdm9p
ZCByZXNvdXJjZUNyZWF0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxvYWRlcklkKTsKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHNldFJlc291
cmNlVHlwZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJj
ZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZFJlc291cmNlQ29u
dGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Cisg
ICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOworICAgIHZvaWQgbWF5YmVBZGRSZXNvdXJjZURhdGEodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Cisg
ICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUpOwotICAgIFJlc291cmNlRGF0YSogZGF0YSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRM
b2FkZXJJZCA9IFN0cmluZygpKTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1p
dHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNv
dXJjZUNvbnRlbnRTaXplKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZU5vRGF0YUZvcklk
ZW50aWZpZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBib29sIGVuc3VyZUZyZWVT
cGFjZShpbnQgc2l6ZSk7CkBAIC0xMTksNiArMTMzLDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVzb3VyY2VEYXRhKj4gUmVzb3VyY2VEYXRhTWFwOwog
ICAgIFJlc291cmNlRGF0YU1hcCBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcDsKICAgICBp
bnQgbV9jb250ZW50U2l6ZTsKKyAgICBpbnQgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7
CisgICAgaW50IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZS5qcwppbmRleCAxMGJhMjc3NmNlYjg5MjZiZmFiZjdlYjg1MGYwZWJhYWQxOTNk
ZDgxLi40ZGZjNzUxMDhjYjNjMjk1Y2ZhZjYxMGZhMmI2Nzc2YzgwNTdkOGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTc5OCw2ICs3
OTgsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbnRlbnQ7CiAgICAgfSwKIAorICAgIGdldCBjb250ZW50RW5jb2RlZCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEVuY29kZWQ7CisgICAgfSwKKwogICAg
IGdldCBjb250ZW50VGltZXN0YW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50VGltZXN0YW1wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVByZXZpZXdWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVByZXZpZXdWaWV3LmpzCmluZGV4IDNmYmNlNDc5MzUzMTc2YjYxYzYy
ZDc5MjZmMTAyMmJkZTg5ZjQyMWIuLjU4YzYxN2ZiNmQ2NDkwN2M2N2FjYzhhM2QyNmVlNmNlYzhh
YzRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VQcmV2aWV3Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlUHJldmlld1ZpZXcuanMKQEAgLTM5LDcgKzM5LDcgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlUHJldmlld1ZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLnJlc291cmNlLmNvbnRlbnQpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5fZW1wdHlWaWV3
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5F
bXB0eVZpZXcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlzIHJlcXVlc3QgaGFzIG5vIHByZXZp
ZXcgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSB0aGlz
Ll9jcmVhdGVFbXB0eVZpZXcoKTsKICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcuc2hv
dyh0aGlzLmVsZW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpAQCAtNDcs
MTMgKzQ3LDE4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVByZXZpZXdWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcuZGV0YWNoKCk7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2VtcHR5VmlldzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghdGhpcy5fdmlldykKLSAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gdGhpcy5fY3Jl
YXRlSW5uZXJWaWV3KCk7Ci0gICAgICAgICAgICB0aGlzLl92aWV3LnNob3codGhpcy5lbGVtZW50
KTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fcHJldmlld1ZpZXcpCisgICAgICAgICAgICAgICAg
dGhpcy5fcHJldmlld1ZpZXcgPSB0aGlzLl9jcmVhdGVQcmV2aWV3VmlldygpOworICAgICAgICAg
ICAgdGhpcy5fcHJldmlld1ZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwogICAgICAgICB9CiAgICAg
fSwKIAotICAgIF9jcmVhdGVJbm5lclZpZXc6IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlRW1wdHlW
aWV3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5F
bXB0eVZpZXcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlzIHJlcXVlc3QgaGFzIG5vIHByZXZp
ZXcgYXZhaWxhYmxlLiIpKTsKKyAgICB9LAorICAgIAorICAgIF9jcmVhdGVQcmV2aWV3Vmlldzog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UuaGFzRXJyb3JTdGF0
dXNDb2RlKCkgJiYgdGhpcy5yZXNvdXJjZS5jb250ZW50KQogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIVE1MVmlldyh0aGlzLnJlc291cmNlKTsKQEAgLTY2LDYg
KzcxLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlUHJldmlld1ZpZXcucHJvdG90eXBlID0gewog
CiAgICAgICAgIGlmICh0aGlzLl9yZXNwb25zZVZpZXcuc291cmNlVmlldykKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9yZXNwb25zZVZpZXcuc291cmNlVmlldzsKKyAgICAgICAgCisgICAgICAg
IGlmICh0aGlzLnJlc291cmNlLmNhdGVnb3J5ID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRl
Z29yaWVzLm90aGVyKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVtcHR5Vmlldygp
OwogCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3Lm5vblNvdXJjZVZp
ZXdGb3JSZXNvdXJjZSh0aGlzLnJlc291cmNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IDcyMjZmNjczMmUz
M2UwNjE4MmYwNzAyZTRjZWMwYjE0MzZjYjc3OGYuLjEwNmU4YjEyNTM5OTM5NDkwOWU4NjY5MmUx
ODJmYzAzNDVlYzgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC01MSw2ICs1MSw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcuaGFzVGV4dENvbnRlbnQgPSBmdW5jdGlvbihyZXNvdXJjZSkKICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgogICAgIGNhc2UgV2ViSW5zcGVjdG9y
LnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLm90aGVyOgorICAgICAgICBy
ZXR1cm4gcmVzb3VyY2UuY29udGVudCAmJiAhcmVzb3VyY2UuY29udGVudEVuY29kZWQ7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IDI0MzBiNTgyMGE1NzljZmYyNTBjOWZjNGM2OWQ2MDA3NTlm
NzQwOTMuLjEyYzI4Zjg0MWZlMTU3ZGUzYmYwZWY1MmQ5ZDFhMmYzMGE2NTg0ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM3OCw3ICsxMzc4LDcgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogICAgIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVl
c3RGcm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVy
KCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCks
IGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygp
LCBTdHJpbmcoKSksIC0xLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIFJl
c291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpLCBTdHJpbmcoKSksIDAs
IC0xLCAtMSwgZXJyb3IpOwogCiAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKIApAQCAtMTc3Niw3
ICsxNzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAy
QiBieXRlcywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIo
KS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgcmVzcG9uc2UsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLT5zZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlm
aWVyLCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSksIDAsIGVycm9yKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcGFn
ZUNhY2hlKCktPnJlbW92ZShoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkpOwpAQCAtMjU4OSw3ICsy
NTg5LDcgQEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICNlbmRpZgogICAgIH0KICAgICBpbnQg
ZW5jb2RlZERhdGFMZW5ndGggPSByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkgPyBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+ZW5jb2RlZERhdGFMZW5ndGgp
IDogLTE7Ci0gICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9k
b2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2UsIGRhdGEuc2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3Bv
bnNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBlcnJvcik7
CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTI4ODIsNyArMjg4Miw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RG
cm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQocGFnZSwgaWRlbnRpZmllcik7Ci0g
ICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5l
bmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzb3Vy
Y2UtPnJlc3BvbnNlKCksIDAsIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
CmluZGV4IGFjNDZhOTQ0N2ZlNWMzNjI4ZjQ3MzUyZThjMmNjYTIyYmRlODNhNDguLmY0NTEzYmI2
YzA5MGNmZDgzYzYyNDIzMjMyNjFiYjZmNzEyNzZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyKiBkYQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQog
ICAgICAgICBwYWdlLT5wcm9ncmVzcygpLT5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50
aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiAKLSAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCks
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUgZmlu
aXNoVGltZSkKQEAgLTEzMCwxMSArMTMwLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShj
b29raWUsIGlkZW50aWZpZXIsIGxvYWRlciwgcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUsIGlk
ZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKG1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC0xNTIsMTMg
KzE1MiwxMyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVyTG9h
ZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9uZwogICAgIG9sZFBhZ2UtPnByb2dyZXNz
KCktPmNvbXBsZXRlUHJvZ3Jlc3MoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAg
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25z
ZSk7CiAKICAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlm
aWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICBpZiAoZXJy
b3IuaXNOdWxsKCkpCiAgICAgICAgIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXIsIGlk
ZW50aWZpZXIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuaAppbmRleCBkYWZkNjE5NGNjZWM4MzI0NWUyOGEyY2I4YWJiODk2YTI1MmJjMDM1Li42YTky
OTZjMzEyYjU4ZDJkZjc3ZGVhNTViZjZiMWJhNjRiY2FkY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjAsMTEgKzYwLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURh
dGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaXNwYXRjaFRyYW5zZmVy
TG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7CiAKLSAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKIHByaXZh
dGU6CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDQ1YjE4NGNmZjk5
NzAyMmEwYTcyZTQ3ZmRiMzhkODllYTk5MjM0NDIuLjY0ZjdiNjg1ZGQ5YzhmZDc2MjcyMGNjMmU3
YTJkNjVjOTM0M2Y1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IGNoYXIqIGQKICAgICBVTlVTRURfUEFSQU0oZW5jb2RlZERhdGFMZW5ndGgp
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRp
ZmllciwgbGVuZ3RoLCAwKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgMCwgbGVuZ3RoLCAw
KTsKICNlbmRpZgogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODZjZGNiZWI5MGYwZjJjMzZlYjljNGQ1
ZWRiZjRiZjMyYzljOGExZi4uZmI5NWUxYjk2ZTgzYWIzZjVmMTY1ZDBhMWY2OWJjNGZjZjNkODBh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzAsNiArMzAsOCBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTaGFk
b3dDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTEyMyw0ICsx
MjUsMTUgQEAgU3RyaW5nIEludGVybmFsczo6c2hhZG93UHNldWRvSWQoRWxlbWVudCogZWxlbWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIGVsZW1lbnQtPnNoYWRvd1BzZXVkb0lk
KCkuc3RyaW5nKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQordm9pZCBJbnRlcm5hbHM6
OnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKERvY3VtZW50KiBkb2N1bWVudCwg
aW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0+cGFnZSgpIHx8ICFkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHMobWF4aW11bVJlc291cmNlc0Nv
bnRlbnRTaXplLCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7Cit9CisjZW5kaWYK
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZTY3N2UzMmYwODlkY2NhNzE4
YjI0MmJhYjcwNTgxZDAwZjU2NmJlNC4uMTUwYWI4ZWM0YmYwODkxNzAxYmUxZDM4ZTFkMmJiYjEy
NDIxM2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Myw2ICs1MywxMCBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVu
dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgdm9pZCBzZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyhEb2N1bWVudCosIGlu
dCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50
ZXJuYWxzKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGI4Mjg3
MWU1MjQyZjRmNGJjOWVlNzU4NGRkNTk3OWQ3ZTBkYTIzNDYuLjZhYmE4MDM5ZjhiMTU1OWFjZWM5
NzFmZmZiOGNlNDUyZDUzODZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTM1LDYgKzM1LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIHZvaWQgcmVtb3ZlU2hh
ZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
RE9NU3RyaW5nIHNoYWRvd1BzZXVkb0lkKGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgICAgICBFbGVtZW50IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGlu
IERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICB2b2lk
IHNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKGluIERvY3VtZW50IGRvY3VtZW50
LCBpbiBsb25nIG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW4gbG9uZyBtYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98896</attachid>
            <date>2011-06-28 03:54:44 -0700</date>
            <delta_ts>2011-06-29 05:00:34 -0700</delta_ts>
            <desc>Patch (for gtk bot)</desc>
            <filename>bug-30080-20110628145441.patch</filename>
            <type>text/plain</type>
            <size>65860</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk4MTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYmE5OWY0YTJiMjAyOGU4NzhhNGVj
MDRhYmRhZmNhZWQyMGMyYTM3Li4yOTI1OGJlNGIzNWI5MTQ0OWZlYmViNWI1YTA1NTgzODVkOWNl
MWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMjMgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBjb250ZW50IGZvciBwbHVnaW4gcmVx
dWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cGx1Z2luLWRhdGEucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy91dGY4LnhtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA2LTI3ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dLMl0gRGFpbHkgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWVtYmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY1ZjRj
YjEyZjE5Njk2ZGJhNDcxZGFlN2ExMTdhYTlhMmNiNWQ2MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU5OiBEb25l
LgorVGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIHNob3dzIGNvbnRlbnQgZm9yIGVtYmVkIG9iamVj
dHMuCisKKworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZQorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29u
dGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRl
bnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxlbmFtZT11dGY4
LnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD11dGY4CityZXNvdXJjZS50eXBlOiA4City
ZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVz
b3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEu
MCcgZW5jb2Rpbmc9J3V0Zi04Jz8+Cis8cm9vdD4KKyAgPHV0Zjg+U1XQodCh0JVTUyAtIFRoZXNl
ICdDQ0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvdXRmOD4KKzwvcm9vdD4KKworaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/
ZmlsZW5hbWU9Y3AxMjUxLnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1jcDEyNTEKK3Jl
c291cmNlLnR5cGU6IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVu
dDogdW5kZWZpbmVkCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDog
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nY3AxMjUxJz8+Cis8cm9vdD4KKyAgPGNwMTI1
MT5TVdCh0KHQlVNTIC0gVGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC9jcDEyNTE+
Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPXV0ZjgueG1sJm1pbWV0eXBlPWFwcGxpY2F0
aW9uL3htbAorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVz
dGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGlu
ZyBjb250ZW50OiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/PgorPHJvb3Q+
CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0dGVycy48
L3V0Zjg+Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPWNwMTI1MS54bWwmbWltZXR5cGU9
YXBwbGljYXRpb24veG1sCityZXNvdXJjZS50eXBlOiA4CityZXNvdXJjZS5jb250ZW50IGJlZm9y
ZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVzb3VyY2UuY29udGVudCBhZnRlciBy
ZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2NwMTI1MSc/
PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XQodCh0JVTUyAtIFRoZXNlICdDQ0UnIGFyZSBjeXJpbGxp
YyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWVtYmVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGJjMmM1MzY3OTBiOTM3NzEwNzhmNzhjZmY0NWQ5ZjFjYTJiMDZmZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTI2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBs
b2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rpb24gc3RyZWFtTG9hZGVkKCkKK3sKKyAgICBp
ZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGxvYWRlZEZpcnN0VVJM
ID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCit2YXIgc25pZmZlckluc3RhbGxlZCA9IGZh
bHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFsbGVkKCkKK3sKKyAgICBzbmlmZmVySW5zdGFs
bGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCitmdW5jdGlvbiBsb2FkVVJMcygpCit7
CisgICAgaWYgKCFzbmlmZmVySW5zdGFsbGVkIHx8ICFsb2FkZWRGaXJzdFVSTCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUu
bG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2luZG93LmludGVybmFscyBpcyBub3Qg
YXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludGVybmFscy5zZXRJ
bnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyhkb2N1bWVudCwgMTAgKiAxMDAwICogMTAw
MCwgMTAwMCAqIDEwMDApOworCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3Jlc291
cmNlLnBocD90eXBlPWltYWdlIiwgbnVsbCwgImxvYWRVUkwyIik7Cit9CisKK2Z1bmN0aW9uIGxv
YWRVUkwyKCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcGx1Z2luLWRhdGEu
cGhwP2ZpbGVuYW1lPXV0ZjgueG1sJm1pbWV0eXBlPXRleHQvaHRtbCZjaGFyc2V0PXV0ZjgiLCBu
dWxsLCAibG9hZFVSTDMiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDMoKQoreworICAgIHBsZy5n
ZXRVUkxOb3RpZnkoInJlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9Y3AxMjUxLnht
bCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1jcDEyNTEiLCBudWxsLCAibG9hZFVSTDQiKTsK
K30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQoreworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291
cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9dXRmOC54bWwmbWltZXR5cGU9YXBwbGljYXRp
b24veG1sIiwgbnVsbCwgImxvYWRVUkw1Iik7Cit9CisKK2Z1bmN0aW9uIGxvYWRVUkw1KCkKK3sK
KyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1l
PWNwMTI1MS54bWwmbWltZXR5cGU9YXBwbGljYXRpb24veG1sIiwgbnVsbCwgImFsbFVSTHNMb2Fk
ZWQiKTsKK30KKworZnVuY3Rpb24gYWxsVVJMc0xvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2co
IkRvbmUuIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIs
IHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJvblNuaWZmZXJJbnN0
YWxsZWQoKSIpOworCisgICAgZnVuY3Rpb24gZHVtcFJlc291cmNlKHJlc291cmNlLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2soKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXNv
dXJjZS50eXBlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNv
bnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogIiArIHJlc291cmNlLmNvbnRlbnQpOwor
CisgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0
aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgICAgIH0KKworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250ZW50
TG9hZGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gNV07CisgICAgICAgIGR1
bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSA0XTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3Vy
Y2UsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMl07CisgICAgICAg
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXA1KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDYoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0aGF0IG5ldHdvcmsgcGFuZWwgc2hvd3MgY29u
dGVudCBmb3IgZW1iZWQgb2JqZWN0cy48L3A+CisgICAgPGVtYmVkIG5hbWU9InBsZyIgdHlwZT0i
YXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgc3JjPSJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3R5cGU9aW1hZ2UiIG9uc3RyZWFtbG9hZD0ic3RyZWFtTG9hZGVkKCkiPjwvZW1iZWQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVz
b3VyY2VzLWRhdGEtZW1iZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMjYyYzE3NDRiMmQ4
ZDIwYTgzYmYyNWNkZjU5YmM0ODRjOGUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVzb3VyY2VzLWRhdGEtZW1i
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1
NDogRG9uZS4KK1Rlc3RzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIGxvZ2ljIGZvciBlbWJlZCBjb250
ZW50IHB1cmdpbmcuCisKKworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDAKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIg
cmVxdWVzdGluZyBjb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMAorcmVzb3VyY2UuY29udGVu
dCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MjAxCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJl
cXVlc3RpbmcgY29udGVudDogbnVsbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAKK3Jlc291cmNlLmNvbnRlbnQg
YWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLWVt
YmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM1MjZkZmU2MGRmODc5OWQ3OGVkNDM0MDgwMDMyNDQxYTdj
ODM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTEz
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBsb2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rp
b24gc3RyZWFtTG9hZGVkKCkKK3sKKyAgICBpZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJl
dHVybjsKKworICAgIGxvYWRlZEZpcnN0VVJMID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQor
Cit2YXIgc25pZmZlckluc3RhbGxlZCA9IGZhbHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFs
bGVkKCkKK3sKKyAgICBzbmlmZmVySW5zdGFsbGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOwor
fQorCitmdW5jdGlvbiBsb2FkVVJMcygpCit7CisgICAgaWYgKCFzbmlmZmVySW5zdGFsbGVkIHx8
ICFsb2FkZWRGaXJzdFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4g
YXMgd2luZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGludGVybmFscy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
cyhkb2N1bWVudCwgMiozMDAsIDIqMjAwKTsKKworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291
cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDAiLCBudWxsLCAibG9hZFVSTDIiKTsKK30KKworZnVu
Y3Rpb24gbG9hZFVSTDIoKQoreworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9yZXNv
dXJjZS5waHA/c2l6ZT0xMDAiLCBudWxsLCAibG9hZFVSTDMiKTsKK30KKworZnVuY3Rpb24gbG9h
ZFVSTDMoKQoreworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9yZXNvdXJjZS5waHA/
c2l6ZT0yMDEiLCBudWxsLCAibG9hZFVSTDQiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQor
eworICAgIHBsZy5nZXRVUkxOb3RpZnkoInJlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAi
LCBudWxsLCAiYWxsVVJMc0xvYWRlZCIpOworfQorCitmdW5jdGlvbiBhbGxVUkxzTG9hZGVkKCkK
K3sKKyAgICBjb25zb2xlLmxvZygiRG9uZS4iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUsICJhZGRNZXNzYWdlIiwgc3RlcDEpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoIm9uU25pZmZlckluc3RhbGxlZCgpIik7CisKKyAgICBmdW5jdGlvbiBkdW1wUmVzb3Vy
Y2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChyZXNvdXJjZS51cmwpOworCisgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNv
bnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7Cisg
ICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc291cmNlLnJlcXVl
c3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkK
KyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGgg
LSA0XTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMik7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2Us
IHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMl07CisgICAgICAgIGR1
bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSAxXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyBOZXR3b3JrUmVzb3VyY2VzRGF0YSBsb2dpYyBmb3Ig
ZW1iZWQgY29udGVudCBwdXJnaW5nLjwvcD4KKyAgICA8ZW1iZWQgbmFtZT0icGxnIiB0eXBlPSJh
cHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiBzcmM9InJlc291cmNlcy9yZXNvdXJj
ZS5waHA/dHlwZT1pbWFnZSIgb25zdHJlYW1sb2FkPSJzdHJlYW1Mb2FkZWQoKSI+PC9lbWJlZD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLXhoci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVzb3Vy
Y2VzLWRhdGEteGhyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGQyZDExOGEyOTVjZTZkNTRh
OTI0NTI4MTU0OTVlMDFjNjg3MTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLXhoci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM0OiBEb25l
LgorVGVzdHMgTmV0d29ya1Jlc291cmNlc0RhdGEgbG9naWMgZm9yIFhIUiBjb250ZW50IHB1cmdp
bmcuCisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwP3NpemU9MjAwCityZXNvdXJjZS5jb250ZW50OiBudWxsCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXpl
PTEwMAorcmVzb3VyY2UuY29udGVudDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDEKK3Jlc291cmNlLmNvbnRlbnQ6IG51bGwKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3NpemU9MTAwCityZXNvdXJjZS5jb250ZW50OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS14aHIuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS14
aHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMWEzOTg0NjJiYzFiZWI2YTM5MGQ5NDg2NmFiYzgzOWJiYmY0
NzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXJlc291cmNlcy1kYXRhLXhoci5odG1sCkBAIC0wLDAgKzEsOTIgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gbG9hZERhdGEoKQoreworICAgIGlmICghd2luZG93LmludGVybmFscykgewor
ICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIGFzIHdpbmRvdy5p
bnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpbnRlcm5hbHMuc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoZG9jdW1lbnQs
IDIqMzAwLCAyKjIwMCk7CisKKyAgICBkb1hIUigiR0VUIiwgInJlc291cmNlcy9yZXNvdXJjZS5w
aHA/c2l6ZT0yMDAiLCB0cnVlLCB4aHJMb2FkZWQxKTsKK30KKworZnVuY3Rpb24geGhyTG9hZGVk
MSgpCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MTAw
IiwgdHJ1ZSwgeGhyTG9hZGVkMik7Cit9CisKK2Z1bmN0aW9uIHhockxvYWRlZDIoKQoreworICAg
IGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTIwMSIsIHRydWUsIHho
ckxvYWRlZDMpOworfQorCitmdW5jdGlvbiB4aHJMb2FkZWQzKCkKK3sKKyAgICBkb1hIUigiR0VU
IiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAiLCB0cnVlLCBhbGxYSFJzTG9hZGVk
KTsKK30KKworZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRv
bmUuIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuYWRkU25p
ZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0
ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgpIik7CisK
KyAgICBmdW5jdGlvbiBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZS51cmwpOworCisgICAgICAgIGZ1
bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudDogIiArIHJlc291cmNlLmNvbnRlbnQpOwor
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc291cmNlLnJl
cXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSA0XTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDNdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3Vy
Y2UsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMl07CisgICAgICAg
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXA0KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAxXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD4gVGVzdHMgTmV0d29ya1Jlc291cmNlc0RhdGEgbG9naWMg
Zm9yIFhIUiBjb250ZW50IHB1cmdpbmcuPC9wPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhy
LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0CmluZGV4IDQ1ZTU1NTEzOTk4ZWIx
NTUxZjA3ZjA5NGFiNTJhZThlYzA5MmNmM2IuLjg5NjFlMTY5ODM1NWRlMmY1N2JmOTMyYzJjMWYz
MWE2MGIyZmY1MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBEb25lLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE5OiBEb25lLgogVGVzdHMgWEhSIG5ldHdvcmsgcmVzb3VyY2Ug
dHlwZSBhbmQgY29udGVudCBmb3IgYXN5bmNocm9ub3VzIHJlcXVlc3RzLiBCdWcgNjEyMDUKIAog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJj
ZS5waHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay14aHItYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMuaHRtbAppbmRleCAzMjYyMWNiNTE2OGRlNjdj
NzYzODczMjZhNTQyMzU1YWQ1OTBiMDQ2Li5iNjUzM2U1ZDYzY2UwZTBmMjExYWY0ZGYxNjBlMmVj
ZWM1MWNjMGJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy5odG1sCkBAIC01LDYgKzUsMTIg
QEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBsb2FkRGF0YSgpCiB7CisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4g
YXMgd2luZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGludGVybmFscy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
cyhkb2N1bWVudCwgMTAgKiAxMDAwICogMTAwMCwgMTAwMCAqIDEwMDApOworCiAgICAgZG9YSFIo
IkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIiwgdHJ1ZSwgcmVzb3VyY2VMb2FkZWQpOwog
fQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmsteGhyLXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAzNDQz
NDdjMGU1MWU4MjFhNWM2YzM4Njc0OWEzYWMxM2IzZjVkZjcyLi4yMzA2OTQ0ZWYwNmUwODI4NTk0
MjlkMTlkODU2NTA2ZTJlZThkMjgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IERv
bmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IERvbmUuCiBUZXN0cyBYSFIgbmV0d29yayBy
ZXNvdXJjZSB0eXBlIGFuZCBjb250ZW50IGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4gQnVnIDYx
MjA1CiAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCmluZGV4IDhmMjQ4MGU3Yjgx
YmZiMDM4Y2VkNmQ4ZTA4OWUxZGFhYjU1ZDg5MTMuLjdkM2JkMTk0NTRlMDU3ZTE2Y2IzZjhkOTE0
ZWFmZWNlMGU3ZmFlNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy5odG1sCkBAIC01LDYgKzUs
MTIgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBsb2FkRGF0YSgpCiB7CisgICAgaWYgKCF3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBy
dW4gYXMgd2luZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGludGVybmFscy5zZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxp
bWl0cyhkb2N1bWVudCwgMTAgKiAxMDAwICogMTAwMCwgMTAwMCAqIDEwMDApOworCiAgICAgZG9Y
SFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIiwgZmFsc2UsIHJlc291cmNlTG9hZGVk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2NwMTI1MS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIyODVmMzYwYmNl
M2U1ZDkzZjNjMmQ2ZTBlYzRjMzBjYjQ5NGE3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2NwMTI1MS54bWwKQEAg
LTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdjcDEyNTEnPz4KKzxy
b290PgorICA8Y3AxMjUxPlNV0dHFU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0dGVy
cy48L2NwMTI1MT4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMjFkOWU4ZTlkOTczNjIzYmIxZjUyYWI0NGQwNjc1MmZiYmNhZGI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhwCisgICAgJG1p
bWV0eXBlID0gJF9HRVRbIm1pbWV0eXBlIl07CisgICAgJGZpbGVuYW1lID0gJF9HRVRbImZpbGVu
YW1lIl07CisgICAgJGNoYXJzZXQgPSAkX0dFVFsiY2hhcnNldCJdOworCisgICAgaGVhZGVyKCJF
eHBpcmVzOiBUaHUsIDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVCIpOworICAgIGhlYWRlcigiQ2Fj
aGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKKyAgICBo
ZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKKyAgICBpZiAoJGNoYXJzZXQpCisgICAgICAgIGhl
YWRlcigiQ29udGVudC1UeXBlOiAiIC4gJG1pbWV0eXBlIC4gIjsgY2hhcnNldD0iIC4gJGNoYXJz
ZXQpOworICAgIGVsc2UKKyAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAkbWltZXR5
cGUpOworCisgICAgcmVhZGZpbGUoJGZpbGVuYW1lKTsKKz8+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNv
dXJjZS5waHAKaW5kZXggOWU1NjA3YzE4MmM4NjVlZTIzMmJmOTE4YmIwZjg4ODhhZGY0Y2YxNy4u
M2UxZjE4NWUxZmRlMjY4YjJlYmZlZmExZDAwMTdkYzA5MzUxN2VkYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL3Jlc291cmNlLnBocApAQCAtMjYsNyArMjYsNyBAQAogICAgIGVsc2UgaWYgKCR0eXBlID09
ICJpbWFnZSIpCiAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiBpbWFnZS9wbmciKTsKICAg
ICBlbHNlCi0gICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwiKTsKKyAgICAg
ICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW4iKTsKIAogICAgICMgRmx1c2ggaGVh
ZGVycyBhbmQgc2xlZXAgYm9mb3JlIHNlbmRpbmcgcmVzcG9uc2UKICAgICBpZiAoJHNlbmQpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL3V0ZjgueG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvdXRmOC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlZTQ4MWZhODA3NGFjYjc1M2MzYzdl
ZjU0MjE5ZmQ5MmYxMDQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3V0ZjgueG1sCkBAIC0wLDAgKzEsNCBAQAor
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KKzxyb290PgorICA8dXRmOD5T
VdCh0KHQlVNTIC0gVGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC91dGY4PgorPC9y
b290PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CmluZGV4IGQxMDRjZGNlN2NjODQ4N2FmZjkxOTVmN2ExMTc0MjUyMzczZjMxYjIu
LmFhNjczZTViMzNiZjZiYWI4OWZkNzRkMzJjNGMyYjFjNjk5ZTM2ZDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTY1
NSw2ICs2NTUsMTAgQEAgV09OVEZJWCBTS0lQIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMgPSBGQUlM
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWhlYWRlcnMu
aHRtbCA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0bWwgPSBGQUlMCiAKKy8vIFRoZXJlIGlzIG5vIGVub3Vn
aCBwbHVnaW5zIHN1cHBvcnQgaW4gRFJUCitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbCA9IEZBSUwKK1dPTlRGSVggU0tJUCA6IGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXNvdXJjZXMtZGF0YS1lbWJlZC5o
dG1sID0gRkFJTAorCiAvLyBJbnNwZWN0b3IgdGVzdHMgaW4gRGVidWcgYnVpbGQgYXJlIHZlcnkg
c2xvdy4KIEJVR19EUlQgV0lOIExJTlVYIERFQlVHIFNMT1cgOiBpbnNwZWN0b3IgPSBQQVNTCiBC
VUdfRFJUIFdJTiBMSU5VWCBERUJVRyBTTE9XIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IgPSBQQVNT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZDc3ODViYWMwM2FhNGI1NGU4YmI1NWRjNjE1YzZjZTE0YTg5YzIyNi4u
NzliZDlhNDE1N2M1ZWZiYTc3ZTdjMmEwZjc5NTRhYzYwMTg0MzkyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDExLTA2LTIzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFNob3cgY29udGVudCBmb3IgcGx1Z2luIHJlcXVlc3RzIGluIG5ldHdv
cmsgcGFuZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDA4MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1lbWJlZC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpzZXRJbml0aWFsWEhSQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJj
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlRGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6ZW5zdXJlTm9EYXRhRm9ySWRlbnRpZmllcik6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpoYXNDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjp0ZXh0RW5jb2RpbmdO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnNldFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rlcik6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlh
RWxlbWVudFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRSZWNlaXZlRGF0YSk6CisKIDIwMTEtMDYtMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGNjZDgzODRhZGZhOTdmMDM0ODk0MGIxZWFkYzQwNGZjNjU3
ZGIyNmYuLmU3ZGE1M2MxYjc0ZDUzODgwNzJiM2Y3MWU1Nzk1YTFlMjdlMWY3OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0xMzAwLDYgKzEzMDAsNyBAQCBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZkYXNoYm9hcmRSZWdpb25zRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQyMGNhY2hlRG9jdW1l
bnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlF
dgorX19aTks3V2ViQ29yZThEb2N1bWVudDRwYWdlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ2
ZG9tYWluRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ2bG9hZGVyRXYKIF9fWk5LN1dlYkNvcmU4
SW50UG9pbnRjdjdDR1BvaW50RXYKQEAgLTE1NzksNiArMTU4MCw3IEBAIF9fWk43V2ViQ29yZTE5
SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVsUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFRUUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c3RvcFVzZXJJbml0aWF0
ZWRQcm9maWxpbmdFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdzdGFydFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmdFdgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MzlzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWkKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29u
dHJvbGxlcjVjbG9zZUV2CiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwxMm1vdmVXaW5kb3dCeUVmZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDBjZjNlOGY2MmRmYzAwZDhjNjEyYTgyOTc4ZGNhYmE5
YjQwM2VlODQuLjM0YmQzNDkzNTFmMzQzMGM2NTE2M2IyOGM2ZTliYjE2NjgyNDM5MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTQ4NCw2ICs0ODQsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQogCiAj
ZW5kaWYKIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZXNEYXRhU2l6ZUxp
bWl0c0Zyb21JbnRlcm5hbHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1h
eGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQoreworICAgIG1fcmVzb3VyY2VBZ2VudC0+
c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKG1heGltdW1SZXNvdXJjZXND
b250ZW50U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNzk4ZWJi
YTU2NTkzYjc1ZWIyZGIxYmQ2MzllZjQ2MzY5ZTIyMTkyMC4uZWI0MjFlNTFiZDc1MDNkYmIyZWE2
MWZmNTMzNDRlZmU0MDEwY2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMTksNiArMTE5LDggQEAgcHVibGljOgogICAgIHZvaWQg
cmVzdW1lKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNG
cm9tSW50ZXJuYWxzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVt
U2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBh
OWUyY2FhODBiYmQyMTljYWM5OWFmN2ZjNzllZGE3NWIyYjA4NjcxLi4yZGExNjdkZjIwOTg2MmQ2
OWQ1Y2NiNGI3OGFkNmZkOWQ4ZWQwOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNDkyLDEwICs0OTIsMTAg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9y
ZUltcGwoRnJhbWUqIGZyYW1lLCBEb2N1bWUKICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZUJ1dENhbmNlbGVkSW1wbChmcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCByKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlRGF0YShp
ZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4
IDIwYjBlYjgyNzEwNDg3ZTljYzI4YWI3Yzc2ZjUyZTE0NTg4M2U3MmMuLmUzZTMyNzRjOGUxNjg3
YzI3YzBjYzU0ZmQ2Mjk0MGIzZGRjNDIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQo
RnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURv
d25sb2FkKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQ
b2xpY3lJZ25vcmUoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlRGF0YShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwpAQCAt
MjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhG
cmFtZU9wdGlvbnNEZW5pZWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9p
ZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUltcGwoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGlt
ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKQEAgLTc2NCwxMSArNzY0
LDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRo
UG9saWN5SWdub3JlKEZyYW1lKiBmcmFtZSwgRG9jCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAg
ICAgIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVu
dGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVu
Z3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDI5ZWMxNWE0
MWVmNjhmMTRkZjVkOWMzYWQ4ZjE3NGJjMjJiYzQ1ODAuLmExNDNmY2FkMTA1ZDg2ZTg1MDE1OGM2
ZTZkZTNiNDkwMGU5YzRiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTI1MCwxOCArMjUwLDIxIEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lCiAgICAgICAgIGVsc2UgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3Vz
bHkgfHwgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUoaWRlbnRpZmllcikgPT0gSW5zcGVj
dG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSkKICAgICAgICAgICAgIHR5cGUgPSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlhIUlJlc291cmNlOwogCi0gICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9u
c2VSZWNlaXZlZChpZGVudGlmaWVyLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1l
KCkpLCByZXNwb25zZS51cmwoKSk7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VS
ZWNlaXZlZChpZGVudGlmaWVyLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkp
LCByZXNwb25zZSk7CiAgICAgfQogICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VUeXBl
KGlkZW50aWZpZXIsIHR5cGUpOwogICAgIG1fZnJvbnRlbmQtPnJlc3BvbnNlUmVjZWl2ZWQoc3Rh
dGljX2Nhc3Q8aW50PihpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgSW5zcGVjdG9yUGFnZUFn
ZW50OjpyZXNvdXJjZVR5cGVTdHJpbmcodHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogICAgIC8v
IElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2Vu
ZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCi0gICAgLy8gYXMg
dGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlQ29udGVudExlbmd0aCBmcm9tIHRo
ZSBuZXR3b3JrIHN0YWNrLgorICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlk
UmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoY2FjaGVkUmVzb3Vy
Y2VTaXplICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KQotICAgICAgICBkaWRS
ZWNlaXZlQ29udGVudExlbmd0aChpZGVudGlmaWVyLCBjYWNoZWRSZXNvdXJjZVNpemUsIDApOwor
ICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAwLCBjYWNoZWRSZXNvdXJjZVNpemUs
IDApOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVDb250ZW50
TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURh
dGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogeworICAgIGlmIChkYXRhICYmIG1fcmVzb3Vy
Y2VzRGF0YS0+cmVzb3VyY2VUeXBlKGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6
T3RoZXJSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKwogICAgIG1fZnJvbnRlbmQtPmRh
dGFSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKQEAgLTI3MCw2ICsyNzMsOCBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
VHlwZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2Up
CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoaWRlbnRp
ZmllciwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCksIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsK
IAorICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGlkZW50aWZp
ZXIpOworCiAgICAgaWYgKCFmaW5pc2hUaW1lKQogICAgICAgICBmaW5pc2hUaW1lID0gY3VycmVu
dFRpbWUoKTsKIApAQCAtMjk2LDcgKzMwMSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjCiAK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFhIUkNvbnRlbnQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKIHsKLSAgICBt
X3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJp
bmcpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KGlkZW50aWZpZXIs
IHNvdXJjZVN0cmluZyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTM5Nyw2ICs0MDIs
MTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRCYWNrZ3JvdW5kRXZlbnRzQ29s
bGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLAogICAgIHJldHVybiBtX3N0YXRlLT5zZXRCb29s
ZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6YmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVk
LCBlbmFibGVkKTsKIH0KIAorLy8gY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciBsYXlvdXQgdGVz
dCBwdXJwb3Nlcy4KK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUs
IGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKK3sKKyAgICBtX3Jlc291cmNl
c0RhdGEtPnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKG1heGltdW1SZXNvdXJjZXNDb250ZW50
U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworfQorCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgZW5hYmxlKCk7
CkBAIC00MzYsNyArNDQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojppbml0aWFs
aXplQmFja2dyb3VuZENvbGxlY3Rpb24oKQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKQogewot
ICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+ZGF0YShpZGVudGlmaWVyKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpIHsKICAgICAgICAgKmVycm9y
U3RyaW5nID0gIk5vIHJlc291cmNlIHdpdGggZ2l2ZW4gaWRlbnRpZmllciBmb3VuZCI7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oCmluZGV4IGI0NDEwYjM3NWNhZjFkMmU2ZmE2MmVmZTk5NGNhZWJiOWNlMTkx
MTYuLmI4MDJhZjQzZDZlNDlhMWVlNTA1NTQzYjkxMTBhZDRjYjQ4ZWQ5ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtOTAs
NyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jlc291cmNl
QXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7CkBAIC0xMTMsNiArMTEz
LDkgQEAgcHVibGljOgogICAgIHZvaWQgaXNCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sKiBlbmFibGVkKTsKICAgICB2b2lkIHNldEJhY2tncm91bmRF
dmVudHNDb2xsZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCk7CiAKKyAg
ICAvLyBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIGxheW91dCB0ZXN0IHB1cnBvc2VzLgorICAg
IHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKGludCBtYXhpbXVt
UmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSk7CisKICAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAogICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA1ODhkMWVi
NDA0ZjdlNjlmMDg5ZDMxMjk3YjcyMGE2OWQwMmFlZjljLi4zNDZiMjk5ZmMxNjlkY2QxZDBlNTQ5
NmZkNTdhYzE1OWJhMjdiNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTI5LDQ4ICsyOSw5OSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAKKyNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG5hbWVz
cGFjZSB7CiAvLyAxME1CCiBzdGF0aWMgaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9
IDEwICogMTAwMCAqIDEwMDA7CisKKy8vIDFNQgorc3RhdGljIGludCBtYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSA9IDEwMDAgKiAxMDAwOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKwogLy8gUmVzb3VyY2VEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpSZXNvdXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxv
YWRlcklkKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2xvYWRlcklk
KGxvYWRlcklkKQotICAgICwgbV9oYXNDb250ZW50KGZhbHNlKQogICAgICwgbV9pc0NvbnRlbnRQ
dXJnZWQoZmFsc2UpCiAgICAgLCBtX3R5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlKQogewogfQogCi1TdHJpbmcgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
Y29udGVudCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENv
bnRlbnQoY29uc3QgU3RyaW5nJiBjb250ZW50KQogewotICAgIHJldHVybiBtX2hhc0NvbnRlbnQg
PyBtX2NvbnRlbnRCdWlsZGVyLnRvU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBBU1NFUlQoIWhh
c0RhdGEoKSk7CisgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOworICAgIG1fY29udGVudCA9IGNv
bnRlbnQ7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBw
ZW5kQ29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpwdXJnZUNvbnRlbnQoKQogewotICAgIG1fY29udGVudEJ1
aWxkZXIuYXBwZW5kKGNvbnRlbnQpOwotICAgIG1faGFzQ29udGVudCA9IHRydWU7CisgICAgdW5z
aWduZWQgcmVzdWx0ID0gMDsKKyAgICBpZiAoaGFzRGF0YSgpKSB7CisgICAgICAgIEFTU0VSVCgh
aGFzQ29udGVudCgpKTsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKGhhc0NvbnRl
bnQoKSkgeworICAgICAgICBBU1NFUlQoIWhhc0RhdGEoKSk7CisgICAgICAgIHJlc3VsdCA9IDIg
KiBtX2NvbnRlbnQubGVuZ3RoKCk7CisgICAgICAgIG1fY29udGVudCA9IFN0cmluZygpOworICAg
IH0KKyAgICBtX2lzQ29udGVudFB1cmdlZCA9IHRydWU7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250
ZW50KCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6Y3JlYXRlRGVj
b2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jb250ZW50QnVpbGRlci50b1N0cmluZ1By
ZXNlcnZlQ2FwYWNpdHkoKS5sZW5ndGgoKTsKLSAgICBtX2NvbnRlbnRCdWlsZGVyLmNsZWFyKCk7
Ci0gICAgbV9pc0NvbnRlbnRQdXJnZWQgPSB0cnVlOwotICAgIG1faGFzQ29udGVudCA9IGZhbHNl
OwotICAgIHJldHVybiBsZW5ndGg7CisgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIiwgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgZWxzZSBpZiAobWltZVR5cGUgPT0gInRl
eHQvcGxhaW4iKQorICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoInRleHQvcGxhaW4iLCAiSVNPLTg4NTktMSIpOworICAgIGVsc2UgaWYgKG1pbWVUeXBlID09
ICJ0ZXh0L2h0bWwiKQorICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQvaHRtbCIsICJVVEYtOCIpOworICAgIGVsc2UgaWYgKERPTUltcGxlbWVudGF0
aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOworICAgICAgICBtX2Rl
Y29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOworICAgIH0KK30KKworaW50IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7Cit9CisKK3ZvaWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Cisg
ICAgaWYgKCFtX2RhdGFCdWZmZXIpCisgICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7Cit9CisKK2ludCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKK3sKKyAgICBBU1NFUlQo
IWhhc0NvbnRlbnQoKSk7CisgICAgaW50IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKKyAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZShtX2RhdGFCdWZmZXItPmRhdGEo
KSwgbV9kYXRhQnVmZmVyLT5zaXplKCkpOworICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgcmV0dXJuIDIgKiBtX2NvbnRlbnQubGVuZ3RoKCkgLSBkYXRhTGVuZ3RoOwogfQogCiAvLyBO
ZXR3b3JrUmVzb3VyY2VzRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhKCkKICAgICA6IG1fY29udGVudFNpemUoMCkKKyAgICAsIG1fbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKKyAgICAsIG1fbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUobWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUpCiB7CiB9CiAKQEAgLTg1LDEzICsxMzYsMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVzb3VyY2VDcmVhdGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW4K
ICAgICBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5zZXQoaWRlbnRpZmllciwgbmV3IFJl
c291cmNlRGF0YShpZGVudGlmaWVyLCBsb2FkZXJJZCkpOwogfQogCi12b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpyZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQogICAgICAgICBy
ZXR1cm47CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZyYW1lSWQpOwotICAgIHJlc291
cmNlRGF0YS0+c2V0VXJsKHVybCk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRVcmwocmVzcG9uc2Uu
dXJsKCkpOworICAgIHJlc291cmNlRGF0YS0+Y3JlYXRlRGVjb2RlcihyZXNwb25zZS5taW1lVHlw
ZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpzZXRSZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlKQpAQCAtMTEwLDIxICsxNjIsNTQgQEAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c291cmNlVHlwZSh1bnNpZ25lZCBsb24KICAgICByZXR1cm4gcmVzb3VyY2VEYXRhLT50eXBlKCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlQ29udGVudCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAg
ICBpZiAoIXJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOworICAgIGludCBkYXRhTGVuZ3Ro
ID0gMiAqIGNvbnRlbnQubGVuZ3RoKCk7CisgICAgaWYgKGRhdGFMZW5ndGggPiBtX21heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHJlc291
cmNlRGF0YS0+aXNDb250ZW50UHVyZ2VkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoZW5z
dXJlRnJlZVNwYWNlKGNvbnRlbnQubGVuZ3RoKCkpICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVu
dFB1cmdlZCgpKSB7Ci0gICAgICAgIGlmICghcmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCi0g
ICAgICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUuYXBwZW5kKGlkZW50aWZpZXIpOwotICAgICAg
ICByZXNvdXJjZURhdGEtPmFwcGVuZENvbnRlbnQoY29udGVudCk7Ci0gICAgICAgIG1fY29udGVu
dFNpemUgKz0gY29udGVudC5sZW5ndGgoKTsKKyAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGFM
ZW5ndGgpICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVudFB1cmdlZCgpKSB7CisgICAgICAgIG1f
aWRlbnRpZmllcnNEZXF1ZS5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgICAgIHJlc291cmNlRGF0
YS0+c2V0Q29udGVudChjb250ZW50KTsKKyAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVu
Z3RoOwogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNv
dXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKK3sKKyAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1faWRlbnRp
ZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNl
RGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghcmVzb3VyY2VEYXRhLT5kZWNvZGVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5kYXRhTGVuZ3RoKCkgKyBk
YXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKKyAgICAgICAg
bV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29udGVudCgpOworICAgIGlmIChy
ZXNvdXJjZURhdGEtPmlzQ29udGVudFB1cmdlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQ
dXJnZWQoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUuYXBwZW5kKGlkZW50aWZpZXIp
OworICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICB9Cit9CisKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6Om1heWJlRGVjb2RlRGF0YVRvQ29udGVudCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCit7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50
aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJj
ZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzRGF0YSgp
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZW50U2l6ZSArPSByZXNvdXJjZURhdGEtPmRl
Y29kZURhdGFUb0NvbnRlbnQoKTsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IDIgKiByZXNvdXJjZURh
dGEtPmNvbnRlbnQoKS5sZW5ndGgoKTsKKyAgICBpZiAoZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNp
bmdsZVJlc291cmNlQ29udGVudFNpemUpCisgICAgICAgIG1fY29udGVudFNpemUgLT0gcmVzb3Vy
Y2VEYXRhLT5wdXJnZUNvbnRlbnQoKTsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkQ2FjaGVkUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0
YU1hcC5jb250YWlucyhpZGVudGlmaWVyKSkKQEAgLTE0Myw3ICsyMjgsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFBhcwogICAgIHJlc291cmNlRGF0YS0+c2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0
RW5jb2RpbmdOYW1lKTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSog
TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0Rh
dGE6OmRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIHJldHVybiBtX2lkZW50
aWZpZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiB9CkBAIC0xNTEsNiArMjM2
LDcgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSogTmV0d29ya1Jlc291cmNl
c0RhdGE6OmRhdGEodW5zaWduZWQgbG9uZyBpZGUKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQpCiB7CiAgICAgbV9pZGVudGlm
aWVyc0RlcXVlLmNsZWFyKCk7CisgICAgbV9jb250ZW50U2l6ZSA9IDA7CiAKICAgICBSZXNvdXJj
ZURhdGFNYXAgcHJlc2VydmVkTWFwOwogCkBAIC0xNjYsMTEgKzI1MiwxOSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJpbmcmIHByZXNlcnZlZExvYWRlcklkKQog
ICAgIG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKIH0K
IAordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMo
aW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplKQoreworICAgIGNsZWFyKCk7CisgICAgbV9tYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUgPSBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7CisgICAgbV9tYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
OworfQorCisKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZU5vRGF0YUZvcklkZW50
aWZpZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuZ2V0KGlkZW50aWZpZXIp
OwogICAgIGlmIChyZXNvdXJjZURhdGEpIHsKLSAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+aGFz
Q29udGVudCgpKQorICAgICAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkgfHwgcmVz
b3VyY2VEYXRhLT5oYXNEYXRhKCkpCiAgICAgICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291
cmNlRGF0YS0+cHVyZ2VDb250ZW50KCk7CiAgICAgICAgIGRlbGV0ZSByZXNvdXJjZURhdGE7CiAg
ICAgICAgIG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLnJlbW92ZShpZGVudGlmaWVyKTsK
QEAgLTE3OSwxMCArMjczLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZU5v
RGF0YUZvcklkZW50aWZpZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogCiBib29sIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjplbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpCiB7Ci0gICAgaWYgKHNp
emUgPiBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUpCisgICAgaWYgKHNpemUgPiBtX21heGlt
dW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2hp
bGUgKHNpemUgPiBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgLSBtX2NvbnRlbnRTaXplKSB7
CisgICAgd2hpbGUgKHNpemUgPiBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSAtIG1fY29u
dGVudFNpemUpIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbV9pZGVudGlm
aWVyc0RlcXVlLnRha2VGaXJzdCgpOwogICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0
YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKHJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggNzhjZGJlYmZhYTczZjY4MThlODAyZmEwMzliYWY5ZWM3
NWM3OWE5NS4uZDU0N2FhNzkxMWU2OTA4M2RlMzg5NDI3NWI0MjdlZDgzZGQxODZkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMx
LDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDMsMTIg
KzQyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBUZXh0UmVz
b3VyY2VEZWNvZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiBwdWJsaWM6CiAg
ICAgY2xhc3MgUmVzb3VyY2VEYXRhIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOwogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCk7CiAKQEAgLTYxLDM4ICs2Miw0
NyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgICAgICB2b2lkIHNldFVybChjb25zdCBTdHJpbmcmIHVybCkgeyBtX3VybCA9IHVybDsg
fQogCi0gICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29udGVu
dDsgfQotICAgICAgICBTdHJpbmcgY29udGVudCgpOwotICAgICAgICB2b2lkIGFwcGVuZENvbnRl
bnQoY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuICFtX2NvbnRlbnQuaXNOdWxsKCk7IH0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnQ7IH0KKyAgICAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0
cmluZyYpOwogCiAgICAgICAgIGJvb2wgaXNDb250ZW50UHVyZ2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnRlbnRQdXJnZWQ7IH0KLSAgICAgICAgdm9pZCBzZXRJc0NvbnRlbnRQdXJnZWQoYm9v
bCBpc0NvbnRlbnRQdXJnZWQpIHsgbV9pc0NvbnRlbnRQdXJnZWQgPSBpc0NvbnRlbnRQdXJnZWQ7
IH0KICAgICAgICAgdW5zaWduZWQgcHVyZ2VDb250ZW50KCk7CiAKICAgICAgICAgSW5zcGVjdG9y
UGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgICAgICB2b2lkIHNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlw
ZSkgeyBtX3R5cGUgPSB0eXBlOyB9CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7
IH0KLQogICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dEVuY29kaW5nTmFtZTsgfQogICAgICAgICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKSB7IG1fdGV4dEVuY29kaW5nTmFtZSA9IHRleHRF
bmNvZGluZ05hbWU7IH0KIAorICAgICAgICBUZXh0UmVzb3VyY2VEZWNvZGVyKiBkZWNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgY3JlYXRlRGVj
b2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpOworCisgICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9CisKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNv
dXJjZS5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNlID0gY2FjaGVkUmVzb3VyY2U7
IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBpbnQgZGF0YUxlbmd0aCgpIGNvbnN0OworICAgICAg
ICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAg
ICAgICBpbnQgZGVjb2RlRGF0YVRvQ29udGVudCgpOworCiAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bV9pZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbV9sb2FkZXJJZDsKICAgICAgICAgU3RyaW5n
IG1fZnJhbWVJZDsKICAgICAgICAgU3RyaW5nIG1fdXJsOwotICAgICAgICBib29sIG1faGFzQ29u
dGVudDsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBtX2NvbnRlbnRCdWlsZGVyOworICAgICAgICBT
dHJpbmcgbV9jb250ZW50OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZm
ZXI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CiAgICAgICAgIEluc3BlY3RvclBh
Z2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkUmVzb3VyY2U7CiAgICAgfTsKIApAQCAtMTAxLDE1ICsx
MTEsMTkgQEAgcHVibGljOgogICAgIH5OZXR3b3JrUmVzb3VyY2VzRGF0YSgpOwogCiAgICAgdm9p
ZCByZXNvdXJjZUNyZWF0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxvYWRlcklkKTsKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHNldFJlc291
cmNlVHlwZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJj
ZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZFJlc291cmNlQ29u
dGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Cisg
ICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOworICAgIHZvaWQgbWF5YmVBZGRSZXNvdXJjZURhdGEodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Cisg
ICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUpOwotICAgIFJlc291cmNlRGF0YSogZGF0YSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRM
b2FkZXJJZCA9IFN0cmluZygpKTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1p
dHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNv
dXJjZUNvbnRlbnRTaXplKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZU5vRGF0YUZvcklk
ZW50aWZpZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBib29sIGVuc3VyZUZyZWVT
cGFjZShpbnQgc2l6ZSk7CkBAIC0xMTksNiArMTMzLDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVzb3VyY2VEYXRhKj4gUmVzb3VyY2VEYXRhTWFwOwog
ICAgIFJlc291cmNlRGF0YU1hcCBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1hcDsKICAgICBp
bnQgbV9jb250ZW50U2l6ZTsKKyAgICBpbnQgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7
CisgICAgaW50IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZS5qcwppbmRleCAxMGJhMjc3NmNlYjg5MjZiZmFiZjdlYjg1MGYwZWJhYWQxOTNk
ZDgxLi40ZGZjNzUxMDhjYjNjMjk1Y2ZhZjYxMGZhMmI2Nzc2YzgwNTdkOGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTc5OCw2ICs3
OTgsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbnRlbnQ7CiAgICAgfSwKIAorICAgIGdldCBjb250ZW50RW5jb2RlZCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEVuY29kZWQ7CisgICAgfSwKKwogICAg
IGdldCBjb250ZW50VGltZXN0YW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50VGltZXN0YW1wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVByZXZpZXdWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVByZXZpZXdWaWV3LmpzCmluZGV4IDNmYmNlNDc5MzUzMTc2YjYxYzYy
ZDc5MjZmMTAyMmJkZTg5ZjQyMWIuLjU4YzYxN2ZiNmQ2NDkwN2M2N2FjYzhhM2QyNmVlNmNlYzhh
YzRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VQcmV2aWV3Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlUHJldmlld1ZpZXcuanMKQEAgLTM5LDcgKzM5LDcgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlUHJldmlld1ZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLnJlc291cmNlLmNvbnRlbnQpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5fZW1wdHlWaWV3
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5F
bXB0eVZpZXcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlzIHJlcXVlc3QgaGFzIG5vIHByZXZp
ZXcgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSB0aGlz
Ll9jcmVhdGVFbXB0eVZpZXcoKTsKICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcuc2hv
dyh0aGlzLmVsZW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpAQCAtNDcs
MTMgKzQ3LDE4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVByZXZpZXdWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eVZpZXcuZGV0YWNoKCk7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2VtcHR5VmlldzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghdGhpcy5fdmlldykKLSAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gdGhpcy5fY3Jl
YXRlSW5uZXJWaWV3KCk7Ci0gICAgICAgICAgICB0aGlzLl92aWV3LnNob3codGhpcy5lbGVtZW50
KTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fcHJldmlld1ZpZXcpCisgICAgICAgICAgICAgICAg
dGhpcy5fcHJldmlld1ZpZXcgPSB0aGlzLl9jcmVhdGVQcmV2aWV3VmlldygpOworICAgICAgICAg
ICAgdGhpcy5fcHJldmlld1ZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwogICAgICAgICB9CiAgICAg
fSwKIAotICAgIF9jcmVhdGVJbm5lclZpZXc6IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlRW1wdHlW
aWV3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5F
bXB0eVZpZXcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlzIHJlcXVlc3QgaGFzIG5vIHByZXZp
ZXcgYXZhaWxhYmxlLiIpKTsKKyAgICB9LAorICAgIAorICAgIF9jcmVhdGVQcmV2aWV3Vmlldzog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UuaGFzRXJyb3JTdGF0
dXNDb2RlKCkgJiYgdGhpcy5yZXNvdXJjZS5jb250ZW50KQogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIVE1MVmlldyh0aGlzLnJlc291cmNlKTsKQEAgLTY2LDYg
KzcxLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlUHJldmlld1ZpZXcucHJvdG90eXBlID0gewog
CiAgICAgICAgIGlmICh0aGlzLl9yZXNwb25zZVZpZXcuc291cmNlVmlldykKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9yZXNwb25zZVZpZXcuc291cmNlVmlldzsKKyAgICAgICAgCisgICAgICAg
IGlmICh0aGlzLnJlc291cmNlLmNhdGVnb3J5ID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRl
Z29yaWVzLm90aGVyKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVtcHR5Vmlldygp
OwogCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3Lm5vblNvdXJjZVZp
ZXdGb3JSZXNvdXJjZSh0aGlzLnJlc291cmNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IDcyMjZmNjczMmUz
M2UwNjE4MmYwNzAyZTRjZWMwYjE0MzZjYjc3OGYuLjEwNmU4YjEyNTM5OTM5NDkwOWU4NjY5MmUx
ODJmYzAzNDVlYzgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC01MSw2ICs1MSw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcuaGFzVGV4dENvbnRlbnQgPSBmdW5jdGlvbihyZXNvdXJjZSkKICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgogICAgIGNhc2UgV2ViSW5zcGVjdG9y
LnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLm90aGVyOgorICAgICAgICBy
ZXR1cm4gcmVzb3VyY2UuY29udGVudCAmJiAhcmVzb3VyY2UuY29udGVudEVuY29kZWQ7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IDI0MzBiNTgyMGE1NzljZmYyNTBjOWZjNGM2OWQ2MDA3NTlm
NzQwOTMuLjEyYzI4Zjg0MWZlMTU3ZGUzYmYwZWY1MmQ5ZDFhMmYzMGE2NTg0ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM3OCw3ICsxMzc4LDcgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogICAgIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVl
c3RGcm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVy
KCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCks
IGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygp
LCBTdHJpbmcoKSksIC0xLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIFJl
c291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpLCBTdHJpbmcoKSksIDAs
IC0xLCAtMSwgZXJyb3IpOwogCiAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKIApAQCAtMTc3Niw3
ICsxNzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAy
QiBieXRlcywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgICAgICAgICAgbm90aWZpZXIo
KS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwg
aWRlbnRpZmllciwgcmVzcG9uc2UsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLT5zZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlm
aWVyLCByZXNwb25zZSwgMCwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSksIDAsIGVycm9yKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcGFn
ZUNhY2hlKCktPnJlbW92ZShoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkpOwpAQCAtMjU4OSw3ICsy
NTg5LDcgQEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICNlbmRpZgogICAgIH0KICAgICBpbnQg
ZW5jb2RlZERhdGFMZW5ndGggPSByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkgPyBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+ZW5jb2RlZERhdGFMZW5ndGgp
IDogLTE7Ci0gICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9k
b2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2UsIGRhdGEuc2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3Bv
bnNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBlcnJvcik7
CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTI4ODIsNyArMjg4Miw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RG
cm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQocGFnZSwgaWRlbnRpZmllcik7Ci0g
ICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5l
bmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzb3Vy
Y2UtPnJlc3BvbnNlKCksIDAsIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
CmluZGV4IGFjNDZhOTQ0N2ZlNWMzNjI4ZjQ3MzUyZThjMmNjYTIyYmRlODNhNDguLmY0NTEzYmI2
YzA5MGNmZDgzYzYyNDIzMjMyNjFiYjZmNzEyNzZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyKiBkYQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQog
ICAgICAgICBwYWdlLT5wcm9ncmVzcygpLT5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50
aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiAKLSAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCks
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUgZmlu
aXNoVGltZSkKQEAgLTEzMCwxMSArMTMwLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShj
b29raWUsIGlkZW50aWZpZXIsIGxvYWRlciwgcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUsIGlk
ZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKG1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC0xNTIsMTMg
KzE1MiwxMyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVyTG9h
ZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9uZwogICAgIG9sZFBhZ2UtPnByb2dyZXNz
KCktPmNvbXBsZXRlUHJvZ3Jlc3MoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAg
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25z
ZSk7CiAKICAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlm
aWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICBpZiAoZXJy
b3IuaXNOdWxsKCkpCiAgICAgICAgIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXIsIGlk
ZW50aWZpZXIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuaAppbmRleCBkYWZkNjE5NGNjZWM4MzI0NWUyOGEyY2I4YWJiODk2YTI1MmJjMDM1Li42YTky
OTZjMzEyYjU4ZDJkZjc3ZGVhNTViZjZiMWJhNjRiY2FkY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjAsMTEgKzYwLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURh
dGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaXNwYXRjaFRyYW5zZmVy
TG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7CiAKLSAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKIHByaXZh
dGU6CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDQ1YjE4NGNmZjk5
NzAyMmEwYTcyZTQ3ZmRiMzhkODllYTk5MjM0NDIuLjY0ZjdiNjg1ZGQ5YzhmZDc2MjcyMGNjMmU3
YTJkNjVjOTM0M2Y1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IGNoYXIqIGQKICAgICBVTlVTRURfUEFSQU0oZW5jb2RlZERhdGFMZW5ndGgp
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRp
ZmllciwgbGVuZ3RoLCAwKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgMCwgbGVuZ3RoLCAw
KTsKICNlbmRpZgogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODZjZGNiZWI5MGYwZjJjMzZlYjljNGQ1
ZWRiZjRiZjMyYzljOGExZi4uZmI5NWUxYjk2ZTgzYWIzZjVmMTY1ZDBhMWY2OWJjNGZjZjNkODBh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzAsNiArMzAsOCBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTaGFk
b3dDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTEyMyw0ICsx
MjUsMTUgQEAgU3RyaW5nIEludGVybmFsczo6c2hhZG93UHNldWRvSWQoRWxlbWVudCogZWxlbWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIGVsZW1lbnQtPnNoYWRvd1BzZXVkb0lk
KCkuc3RyaW5nKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQordm9pZCBJbnRlcm5hbHM6
OnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKERvY3VtZW50KiBkb2N1bWVudCwg
aW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0+cGFnZSgpIHx8ICFkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHMobWF4aW11bVJlc291cmNlc0Nv
bnRlbnRTaXplLCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7Cit9CisjZW5kaWYK
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZTY3N2UzMmYwODlkY2NhNzE4
YjI0MmJhYjcwNTgxZDAwZjU2NmJlNC4uMTUwYWI4ZWM0YmYwODkxNzAxYmUxZDM4ZTFkMmJiYjEy
NDIxM2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Myw2ICs1MywxMCBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVu
dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgdm9pZCBzZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyhEb2N1bWVudCosIGlu
dCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50
ZXJuYWxzKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGI4Mjg3
MWU1MjQyZjRmNGJjOWVlNzU4NGRkNTk3OWQ3ZTBkYTIzNDYuLjZhYmE4MDM5ZjhiMTU1OWFjZWM5
NzFmZmZiOGNlNDUyZDUzODZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTM1LDYgKzM1LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIHZvaWQgcmVtb3ZlU2hh
ZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
RE9NU3RyaW5nIHNoYWRvd1BzZXVkb0lkKGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgICAgICBFbGVtZW50IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGlu
IERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICB2b2lk
IHNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKGluIERvY3VtZW50IGRvY3VtZW50
LCBpbiBsb25nIG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW4gbG9uZyBtYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMTY4NDJkZWVhODViYzRmOTc1NWU0YTE4NDE0
MzMxNDc0MTZmMDg3Ni4uYmM5MjBhOTcyM2QxNjNkNTQwMDI3M2E4ZDliZTk1Y2IyZTdhNGZiYyAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zNiw2ICszNiw3IEBAIF9aTjdXZWJDb3JlMTNj
cmVhdGVXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5T
XzROb2RlRTsKIF9aTjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVp
OwogX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3
SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM18x
MFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRyYWl0c0lTNl9FRU5TQl9JUzlfRUVFRVM2XzsKIF9aTjdX
ZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5
U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FOworX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFsc0VpaTsKIF9aTjdX
ZWJDb3JlMjBTaGFkb3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7CiBfWk43
V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBL
TjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBO
U183RWxlbWVudEVqOwpAQCAtNTAsNiArNTEsNyBAQCBfWk43V2ViQ29yZTl0b0VsZW1lbnRFTjNK
U0M3SlNWYWx1ZUU7CiBfWk5LN1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMTFpc1ByZWxv
YWRlZEVSS04zV1RGNlN0cmluZ0U7CiBfWk5LN1dlYkNvcmU2SlNOb2RlMjFwdXNoRXZlbnRIYW5k
bGVyU2NvcGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0U2NvcGVDaGFpbk5vZGVFOwogX1pOSzdX
ZWJDb3JlN0VsZW1lbnQxMHNoYWRvd1Jvb3RFdjsKK19aTks3V2ViQ29yZThEb2N1bWVudDRwYWdl
RXY7CiBsb2NhbDoKIF9aKjsKIGN0aSo7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99073</attachid>
            <date>2011-06-29 05:00:44 -0700</date>
            <delta_ts>2011-06-29 07:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30080-20110629160041.patch</filename>
            <type>text/plain</type>
            <size>70004</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwMDEKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBhMTg0ZTA1YjQ0NGM3NjQ2ZjZiZTkyNTU5NTI5ODgxYTA0MWJmOWU2Li42ZmNi
NmU1MmIzNTVlOWE0NjFjNDk3NjM0ZjM2MDNjODk0M2I4YzE3IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDYtMjkgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBjb250ZW50IGZvciBw
bHVnaW4gcmVxdWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA2LTI4ICBKb29uZSBIdXIgIDxqb29uZS5odXJA
Y29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YjU1NjA4ZTVkMzFiZjcxMjJkOWIyZmExMGM5ZjNkNDZlYmU0ZjU5Li4wOGNlMWEy
YzExYmU2MGMxZGQ2OWVlMWE3Yjc3MzAyY2E1YjBjM2E3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTEtMDYtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2hvdyBjb250ZW50IGZvciBwbHVnaW4gcmVxdWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBs
YWNlbWVudC1lbWJlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LWVtYmVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
b250ZW50LXJlcGxhY2VtZW50LXhoci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXho
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3lu
Yy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14
aHItc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXhoci1zeW5jLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJj
ZS5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
dXRmOC54bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKKwogMjAxMS0wNi0yOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc2tpcApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFj
ZW1lbnQtZW1iZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQtZW1iZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI5MTFiMmUxMzBmZjNmZGY2NDY5MGUzYWNiYTYzOTU2OWE0NmM1MTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC1lbWJlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBEb25lLgorVGVzdHMgTmV0d29ya1Jl
c291cmNlc0RhdGEgbG9naWMgZm9yIGVtYmVkIGNvbnRlbnQgcmVwbGFjZW1lbnQuCisKKworaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5w
aHA/c2l6ZT0yMDAKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBu
dWxsCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jl
c291cmNlLnBocD9zaXplPTEwMAorcmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNv
bnRlbnQ6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3NpemU9MjAxCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogbnVs
bAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNv
dXJjZS5waHA/c2l6ZT0xMDAKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250
ZW50OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
b250ZW50LXJlcGxhY2VtZW50LWVtYmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC1lbWJlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZWUzZGI3ZWY4ZmM5M2M5NDA5NDFhYTcyZDA4MWYzNDMzNTg2ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstY29udGVudC1yZXBsYWNlbWVudC1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTE5IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3ZhciBsb2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rpb24gc3Ry
ZWFtTG9hZGVkKCkKK3sKKyAgICBpZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsK
KworICAgIGxvYWRlZEZpcnN0VVJMID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCit2YXIg
c25pZmZlckluc3RhbGxlZCA9IGZhbHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFsbGVkKCkK
K3sKKyAgICBzbmlmZmVySW5zdGFsbGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCitm
dW5jdGlvbiBsb2FkVVJMcygpCit7CisgICAgaWYgKCFzbmlmZmVySW5zdGFsbGVkIHx8ICFsb2Fk
ZWRGaXJzdFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2lu
ZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIC8vIEVhY2ggJyonIHN5bWJvbCBpbiBvcmlnaW5hbCBkYXRhIHdpbGwgdXNlIHR3byBi
eXRlcyBpbiBTdHJpbmcgb2JqZWN0CisgICAgLy8gYWZ0ZXIgZGVjb2RpbmcsIGhlbmNlIG11bHRp
cGx5aW5nIGJ5IHR3by4KKyAgICBpbnRlcm5hbHMuc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNp
emVMaW1pdHMoZG9jdW1lbnQsIDIqMzAwLCAyKjIwMCk7CisKKyAgICAvLyBIZXJlIHdlIHRlc3Qg
cmVwbGFjZW1lbnQgbG9naWMuIFdlIHNhdmUgZmlyc3QgdHdvIHJlc291cmNlcyBjb250ZW50LAor
ICAgIC8vIGRpc2NhcmQgdGhpcmQgcmVzb3VyY2UgY29udGVudCBvbmNlIHdlIHNlZSBpdHMgc2l6
ZSBleGNlZWRzIGxpbWl0LAorICAgIC8vIGFuZCBmaW5hbGx5IHJlcGxhY2UgZmlyc3QgcmVzb3Vy
Y2UgY29udGVudCB3aXRoIHRoZSBsYXN0IHJlc291cmNlIGNvbnRlbnQuCisKKyAgICBwbGcuZ2V0
VVJMTm90aWZ5KCJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MjAwIiwgbnVsbCwgImxvYWRV
UkwyIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRVUkwyKCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5
KCJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MTAwIiwgbnVsbCwgImxvYWRVUkwzIik7Cit9
CisKK2Z1bmN0aW9uIGxvYWRVUkwzKCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJj
ZXMvcmVzb3VyY2UucGhwP3NpemU9MjAxIiwgbnVsbCwgImxvYWRVUkw0Iik7Cit9CisKK2Z1bmN0
aW9uIGxvYWRVUkw0KCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3NpemU9MTAwIiwgbnVsbCwgImFsbFVSTHNMb2FkZWQiKTsKK30KKworZnVuY3Rpb24g
YWxsVVJMc0xvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRvbmUuIik7Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJvblNuaWZmZXJJbnN0YWxsZWQoKSIpOworCisgICAgZnVu
Y3Rpb24gZHVtcFJlc291cmNlKHJlc291cmNlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlm
ICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKworICAgICAgICBmdW5jdGlvbiBj
b250ZW50TG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVz
b3VyY2UuY29udGVudCk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisKKyAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aCAtIDRdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2Us
IHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gM107CisgICAgICAgIGR1
bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAz
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSAyXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3Vy
Y2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIGxvZ2ljIGZvciBlbWJlZCBjb250ZW50IHJlcGxhY2VtZW50LjwvcD4KKyAgICA8
ZW1iZWQgbmFtZT0icGxnIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBl
IiBzcmM9InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSIgb25zdHJlYW1sb2FkPSJz
dHJlYW1Mb2FkZWQoKSI+PC9lbWJlZD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQt
cmVwbGFjZW1lbnQteGhyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDFlZjczZjYwNzIzODI1NjcxMDRjODU1M2QwZjIyMzZhN2RkMjMxYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM5OiBEb25lLgorVGVzdHMgTmV0d29ya1Jl
c291cmNlc0RhdGEgbG9naWMgZm9yIFhIUiBjb250ZW50IHJlcGxhY2VtZW50LgorCitodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9z
aXplPTIwMAorcmVzb3VyY2UuY29udGVudDogbnVsbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAKK3Jlc291cmNl
LmNvbnRlbnQ6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3NpemU9MjAxCityZXNvdXJjZS5jb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMAorcmVz
b3VyY2UuY29udGVudDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE2NWNiMWQ3MmRjZDc0MGE0OTkyZGVhZTRiNWI3YTcxMDFjMGI2NWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbApAQCAtMCwwICsxLDk3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvYWREYXRhKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgY29uc29sZS5sb2coIlRoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biBhcyB3aW5kb3cu
aW50ZXJuYWxzIGlzIG5vdCBhdmFpbGFibGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgLy8gRWFjaCAnKicgc3ltYm9sIHdpbGwgdXNlIHR3byBieXRlcyBpbiBTdHJpbmcgb2JqZWN0
LCBoZW5jZSBtdWx0aXBseWluZyBieSB0d28uCisgICAgaW50ZXJuYWxzLnNldEluc3BlY3RvclJl
c291cmNlc0RhdGFTaXplTGltaXRzKGRvY3VtZW50LCAyKjMwMCwgMioyMDApOworCisgICAgLy8g
SGVyZSB3ZSB0ZXN0IHJlcGxhY2VtZW50IGxvZ2ljLiBXZSBzYXZlIGZpcnN0IHR3byByZXNvdXJj
ZXMgY29udGVudCwKKyAgICAvLyBkaXNjYXJkIHRoaXJkIHJlc291cmNlIGNvbnRlbnQgb25jZSB3
ZSBzZWUgaXRzIHNpemUgZXhjZWVkcyBsaW1pdCwKKyAgICAvLyBhbmQgZmluYWxseSByZXBsYWNl
IGZpcnN0IHJlc291cmNlIGNvbnRlbnQgd2l0aCB0aGUgbGFzdCByZXNvdXJjZSBjb250ZW50Lgor
CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MjAwIiwgdHJ1
ZSwgeGhyTG9hZGVkMSk7Cit9CisKK2Z1bmN0aW9uIHhockxvYWRlZDEoKQoreworICAgIGRvWEhS
KCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMCIsIHRydWUsIHhockxvYWRl
ZDIpOworfQorCitmdW5jdGlvbiB4aHJMb2FkZWQyKCkKK3sKKyAgICBkb1hIUigiR0VUIiwgInJl
c291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDEiLCB0cnVlLCB4aHJMb2FkZWQzKTsKK30KKwor
ZnVuY3Rpb24geGhyTG9hZGVkMygpCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3NpemU9MTAwIiwgdHJ1ZSwgYWxsWEhSc0xvYWRlZCk7Cit9CisKK2Z1bmN0aW9u
IGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMSk7CisgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gZHVt
cFJlc291cmNlKHJlc291cmNlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghcmVzb3Vy
Y2UpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKworICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9h
ZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJl
c291cmNlLmNvbnRlbnQ6ICIgKyByZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgIH0KKworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250
ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gNF07CisgICAgICAg
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDJdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVz
b3VyY2UsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2Vz
W1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07CisgICAg
ICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXA1KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cisg
ICAgPHA+IFRlc3RzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIGxvZ2ljIGZvciBYSFIgY29udGVudCBy
ZXBsYWNlbWVudC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1i
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYmZmMGY3NTNiNDJmN2JiYjI4ODQwZWFlNGE1
NzdlMjVlZDVhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2NjogRG9uZS4KK1Rlc3RzIHRoYXQgbmV0d29yayBw
YW5lbCBzaG93cyBjb250ZW50IGZvciBlbWJlZCBvYmplY3RzLgorCisKK2h0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1h
Z2UKK3Jlc291cmNlLnR5cGU6IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3Rpbmcg
Y29udGVudDogdW5kZWZpbmVkCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29u
dGVudDogbnVsbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9dXRmOC54bWwmbWltZXR5cGU9dGV4dC9odG1s
JmNoYXJzZXQ9dXRmOAorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUg
cmVxdWVzdGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVx
dWVzdGluZyBjb250ZW50OiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/Pgor
PHJvb3Q+CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0
dGVycy48L3V0Zjg+Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPWNwMTI1MS54bWwmbWlt
ZXR5cGU9dGV4dC9odG1sJmNoYXJzZXQ9Y3AxMjUxCityZXNvdXJjZS50eXBlOiA4CityZXNvdXJj
ZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVzb3VyY2Uu
Y29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEuMCcgZW5j
b2Rpbmc9J2NwMTI1MSc/PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XQodCh0JVTUyAtIFRoZXNlICdD
Q0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgorCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9m
aWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT1hcHBsaWNhdGlvbi94bWwKK3Jlc291cmNlLnR5cGU6
IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogdW5kZWZpbmVk
CityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogPD94bWwgdmVyc2lv
bj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KKzxyb290PgorICA8dXRmOD5TVdCh0KHQlVNTIC0g
VGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC91dGY4PgorPC9yb290PgorCitodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRh
LnBocD9maWxlbmFtZT1jcDEyNTEueG1sJm1pbWV0eXBlPWFwcGxpY2F0aW9uL3htbAorcmVzb3Vy
Y2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiB1
bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiA8P3ht
bCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdjcDEyNTEnPz4KKzxyb290PgorICA8Y3AxMjUxPlNV
0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0dGVycy48L2NwMTI1MT4KKzwv
cm9vdD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNTUyMzkzOGE2ZThh
ZjQ2NmExNjc5ZDgwZmQ1YWQzYTg0YmU4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbApAQCAtMCww
ICsxLDEzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgbG9hZGVkRmlyc3RVUkwgPSBmYWxzZTsK
K2Z1bmN0aW9uIHN0cmVhbUxvYWRlZCgpCit7CisgICAgaWYgKGxvYWRlZEZpcnN0VVJMKQorICAg
ICAgICByZXR1cm47CisKKyAgICBsb2FkZWRGaXJzdFVSTCA9IHRydWU7CisgICAgbG9hZFVSTHMo
KTsKK30KKwordmFyIHNuaWZmZXJJbnN0YWxsZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIG9uU25pZmZl
ckluc3RhbGxlZCgpCit7CisgICAgc25pZmZlckluc3RhbGxlZCA9IHRydWU7CisgICAgbG9hZFVS
THMoKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTHMoKQoreworICAgIGlmICghc25pZmZlckluc3Rh
bGxlZCB8fCAhbG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2lu
ZG93LmludGVybmFscykgeworICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3Qg
YmUgcnVuIGFzIHdpbmRvdy5pbnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRvZ2V0
aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0ZXN0cywgd2Ug
bmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAgaW50ZXJuYWxz
LnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKGRvY3VtZW50LCAxMCAqIDEwMDAg
KiAxMDAwLCAxMDAwICogMTAwMCk7CisKKyAgICAvLyBCaW5hcnkgY29udGVudCBzaG91bGQgbm90
IGJlIGF2YWlsYWJsZS4KKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3R5cGU9aW1hZ2UiLCBudWxsLCAibG9hZFVSTDIiKTsKK30KKworZnVuY3Rpb24gbG9hZFVS
TDIoKQoreworICAgIC8vIFRoaXMgcmVzb3VyY2UgY29udGVudCBzaG91bGQgYmUgY29ycmVjdGx5
IGRlY29kZWQuCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBo
cD9maWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD11dGY4IiwgbnVs
bCwgImxvYWRVUkwzIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRVUkwzKCkKK3sKKyAgICAvLyBUaGlz
IHJlc291cmNlIGNvbnRlbnQgc2hvdWxkIGJlIGNvcnJlY3RseSBkZWNvZGVkLgorICAgIHBsZy5n
ZXRVUkxOb3RpZnkoInJlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9Y3AxMjUxLnht
bCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1jcDEyNTEiLCBudWxsLCAibG9hZFVSTDQiKTsK
K30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQoreworICAgIC8vIFRoaXMgcmVzb3VyY2UgY29udGVu
dCBzaG91bGQgYmUgY29ycmVjdGx5IGRlY29kZWQuCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVz
b3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT1hcHBsaWNh
dGlvbi94bWwiLCBudWxsLCAibG9hZFVSTDUiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDUoKQor
eworICAgIC8vIFRoaXMgcmVzb3VyY2UgY29udGVudCBzaG91bGQgYmUgY29ycmVjdGx5IGRlY29k
ZWQuCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxl
bmFtZT1jcDEyNTEueG1sJm1pbWV0eXBlPWFwcGxpY2F0aW9uL3htbCIsIG51bGwsICJhbGxVUkxz
TG9hZGVkIik7Cit9CisKK2Z1bmN0aW9uIGFsbFVSTHNMb2FkZWQoKQoreworICAgIGNvbnNvbGUu
bG9nKCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3Nh
Z2UiLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgib25TbmlmZmVy
SW5zdGFsbGVkKCkiKTsKKworICAgIGZ1bmN0aW9uIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlLnVy
bCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsg
cmVzb3VyY2UudHlwZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJj
ZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZS5jb250ZW50
KTsKKworICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVx
dWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7CisgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICB9CisKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29u
dGVudExvYWRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAg
ICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDVdOworICAgICAg
ICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dGVwMigpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMu
bGVuZ3RoIC0gNF07CisgICAgICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDMpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJl
c291cmNlLCBzdGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
c1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDJdOworICAg
ICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdGVwNSgpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXMubGVuZ3RoIC0gMV07CisgICAgICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDYpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIHNob3dz
IGNvbnRlbnQgZm9yIGVtYmVkIG9iamVjdHMuPC9wPgorICAgIDxlbWJlZCBuYW1lPSJwbGciIHR5
cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0icmVzb3VyY2VzL3Jl
c291cmNlLnBocD90eXBlPWltYWdlIiBvbnN0cmVhbWxvYWQ9InN0cmVhbUxvYWRlZCgpIj48L2Vt
YmVkPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMt
ZXhwZWN0ZWQudHh0CmluZGV4IDQ1ZTU1NTEzOTk4ZWIxNTUxZjA3ZjA5NGFiNTJhZThlYzA5MmNm
M2IuLjU2NWZkNzc4NTk3Y2EwZTQ5Mzk2YTMwZTM1ZTk5ZTFmMDJjMWFlNTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5
bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDEzOiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBE
b25lLgogVGVzdHMgWEhSIG5ldHdvcmsgcmVzb3VyY2UgdHlwZSBhbmQgY29udGVudCBmb3IgYXN5
bmNocm9ub3VzIHJlcXVlc3RzLiBCdWcgNjEyMDUKIAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHIt
YXN5bmMuaHRtbAppbmRleCAzMjYyMWNiNTE2OGRlNjdjNzYzODczMjZhNTQyMzU1YWQ1OTBiMDQ2
Li5iZDhiMjQwODEwZGExN2E4ZDAzMTE3Mjk1ZjQ1MDRjYzJjNGY4Y2Q5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5j
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLXhoci1hc3luYy5odG1sCkBAIC01LDYgKzUsMTQgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBs
b2FkRGF0YSgpCiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGNvbnNv
bGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2luZG93LmludGVybmFscyBpcyBu
b3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFNpbmNlIHRo
aXMgdGVzdCBjb3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFja2Vu
ZCBjYWNoZQorICAgIC8vIHRlc3RzLCB3ZSBuZWVkIHRvIHJlc2V0IHNpemUgbGltaXRzIHRvIGRl
ZmF1bHQgb25lcy4KKyAgICBpbnRlcm5hbHMuc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVM
aW1pdHMoZG9jdW1lbnQsIDEwICogMTAwMCAqIDEwMDAsIDEwMDAgKiAxMDAwKTsKKwogICAgIGRv
WEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocCIsIHRydWUsIHJlc291cmNlTG9hZGVk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy1leHBlY3RlZC50eHQKaW5kZXgg
MzQ0MzQ3YzBlNTFlODIxYTVjNmMzODY3NDlhM2FjMTNiM2Y1ZGY3Mi4uYmU4NGY0MzkzMWFiZjky
ZDFmZmJiMzkzZjUyYWQ0MDRkY2U4YmUwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5
bmMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEz
OiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBEb25lLgogVGVzdHMgWEhSIG5ldHdv
cmsgcmVzb3VyY2UgdHlwZSBhbmQgY29udGVudCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuIEJ1
ZyA2MTIwNQogCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL3Jlc291cmNlLnBocApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbAppbmRleCA4ZjI0ODBl
N2I4MWJmYjAzOGNlZDZkOGUwODllMWRhYWI1NWQ4OTEzLi4wMGQyODlkZGFmZDc2NzlkOTliYmRm
NjJmYzY4MTE3MWU5MGI5MGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbApAQCAtNSw2
ICs1LDE0IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gbG9hZERhdGEoKQogeworICAgIGlmICghd2lu
ZG93LmludGVybmFscykgeworICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3Qg
YmUgcnVuIGFzIHdpbmRvdy5pbnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRvZ2V0
aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0ZXN0cywgd2Ug
bmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAgaW50ZXJuYWxz
LnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKGRvY3VtZW50LCAxMCAqIDEwMDAg
KiAxMDAwLCAxMDAwICogMTAwMCk7CisKICAgICBkb1hIUigiR0VUIiwgInJlc291cmNlcy9yZXNv
dXJjZS5waHAiLCBmYWxzZSwgcmVzb3VyY2VMb2FkZWQpOwogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9jcDEyNTEueG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvY3Ax
MjUxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMjI4NWYzNjBiY2UzZTVkOTNmM2MyZDZlMGVjNGMzMGNiNDk0
YTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNp
b249JzEuMCcgZW5jb2Rpbmc9J2NwMTI1MSc/PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XR0cVTUyAt
IFRoZXNlICdDQ0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvcGx1Z2luLWRhdGEucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMWQ5ZThlOWQ5NzM2
MjNiYjFmNTJhYjQ0ZDA2NzUyZmJiY2FkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9wbHVnaW4tZGF0YS5waHAK
QEAgLTAsMCArMSwxNSBAQAorPD9waHAKKyAgICAkbWltZXR5cGUgPSAkX0dFVFsibWltZXR5cGUi
XTsKKyAgICAkZmlsZW5hbWUgPSAkX0dFVFsiZmlsZW5hbWUiXTsKKyAgICAkY2hhcnNldCA9ICRf
R0VUWyJjaGFyc2V0Il07CisKKyAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMg
MTY6MDA6MDAgR01UIik7CisgICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8t
Y2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOworICAgIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIp
OworICAgIGlmICgkY2hhcnNldCkKKyAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAk
bWltZXR5cGUgLiAiOyBjaGFyc2V0PSIgLiAkY2hhcnNldCk7CisgICAgZWxzZQorICAgICAgICBo
ZWFkZXIoIkNvbnRlbnQtVHlwZTogIiAuICRtaW1ldHlwZSk7CisKKyAgICByZWFkZmlsZSgkZmls
ZW5hbWUpOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocAppbmRleCA5ZTU2MDdjMTgy
Yzg2NWVlMjMyYmY5MThiYjBmODg4OGFkZjRjZjE3Li4zZTFmMTg1ZTFmZGUyNjhiMmViZmVmYTFk
MDAxN2RjMDkzNTE3ZWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCkBAIC0yNiw3
ICsyNiw3IEBACiAgICAgZWxzZSBpZiAoJHR5cGUgPT0gImltYWdlIikKICAgICAgICAgaGVhZGVy
KCJDb250ZW50LVR5cGU6IGltYWdlL3BuZyIpOwogICAgIGVsc2UKLSAgICAgICAgaGVhZGVyKCJD
b250ZW50LVR5cGU6IHRleHQvaHRtbCIpOworICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTog
dGV4dC9wbGFpbiIpOwogCiAgICAgIyBGbHVzaCBoZWFkZXJzIGFuZCBzbGVlcCBib2ZvcmUgc2Vu
ZGluZyByZXNwb25zZQogICAgIGlmICgkc2VuZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvdXRmOC54bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy91dGY4LnhtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wN2VlNDgxZmE4MDc0YWNiNzUzYzNjN2VmNTQyMTlmZDkyZjEwNDYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvdXRmOC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29k
aW5nPSd1dGYtOCc/PgorPHJvb3Q+CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBh
cmUgY3lyaWxsaWMgbGV0dGVycy48L3V0Zjg+Cis8L3Jvb3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMjY1ZDE3YWFl
MmVkNTU0OGRiZWFhYTYxMTgyM2VmYjE5MjU4MjgwMy4uY2NmOWVmZTYwMzkyYzdkMTA1YmZjY2Ri
M2VkNDZkNTM3ZmViNTE5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNjU1LDYgKzY1NSwxMCBAQCBXT05URklYIFNL
SVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucyA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtaGVhZGVycy5odG1sID0gRkFJTAogV09OVEZJWCBTS0lQ
IDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QuaHRt
bCA9IEZBSUwKIAorLy8gVGhlcmUgaXMgbm8gZW5vdWdoIHBsdWdpbnMgc3VwcG9ydCBpbiBEUlQK
K1dPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJl
ZC5odG1sID0gRkFJTAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQtZW1iZWQuaHRtbCA9IEZBSUwKKwogLy8gSW5z
cGVjdG9yIHRlc3RzIGluIERlYnVnIGJ1aWxkIGFyZSB2ZXJ5IHNsb3cuCiBCVUdfRFJUIFdJTiBM
SU5VWCBERUJVRyBTTE9XIDogaW5zcGVjdG9yID0gUEFTUwogQlVHX0RSVCBXSU4gTElOVVggREVC
VUcgU0xPVyA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yID0gUEFTUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiNDc2
YzNkZmJiOTZkZmQ4YTc5ZjFiYjljNjEzYmUxZTk5Nzk3MTcuLjYwMDFiNmJlNjZjYzgzZTJkYmQ4
MDdlNTY0NjdmMTZlM2Q2OWMyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxMS0w
Ni0yOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG93
IGNvbnRlbnQgZm9yIHBsdWdpbiByZXF1ZXN0cyBpbiBuZXR3b3JrIHBhbmVsLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwODAKKworICAgICAgICBU
ZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFj
ZW1lbnQtZW1iZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQteGhyLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVEYXRhSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFhIUkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50
ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJl
c291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3Vy
Y2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjph
cHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZURlY29kZURhdGFUb0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlTm9EYXRh
Rm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
ZW5zdXJlRnJlZVNwYWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6Omhhc0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6Y29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IGNvbnRlbnRFbmNvZGVkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmlld1ZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3Vmlldy5wcm90b3R5cGUuY29udGVudExvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3Vmlldy5wcm90b3R5cGUu
X2NyZWF0ZUVtcHR5Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3
Vmlldy5wcm90b3R5cGUuX2NyZWF0ZVByZXZpZXdWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcuaGFzVGV4dENvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCiAyMDExLTA2LTI4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBkNzEyOTViOTE5YTY4YzlkN2FmNzNhNGE4ZDI2NjM1MjQwNmMyZTM1Li5iNmEzZGIxODQ4
MzAwN2MzYWZlN2FhNzhhNjc4NzVhNTg5OTZiMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MTMwMCw2ICsxMzAwLDcgQEAgX19aTks3V2ViQ29yZThEb2N1bWVudDE2ZGFzaGJvYXJkUmVnaW9u
c0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MjBjYWNoZURvY3VtZW50RWxlbWVudEV2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNX
VEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKK19fWk5LN1dlYkNvcmU4
RG9jdW1lbnQ0cGFnZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NmRvbWFpbkV2CiBfX1pOSzdX
ZWJDb3JlOERvY3VtZW50NmxvYWRlckV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y3Q0dQb2lu
dEV2CkBAIC0xNTc5LDYgKzE1ODAsNyBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEVOM1dU
RjEwUGFzc093blB0cklOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RUVFCiBfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nRXYKIF9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3c3RhcnRVc2VySW5pdGlhdGVkUHJvZmls
aW5nRXYKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXI0c2hvd0V2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgog
X19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTJtb3ZlV2luZG93QnlF
ZmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAppbmRleCAwY2YzZThmNjJkZmMwMGQ4YzYxMmE4Mjk3OGRjYWJhOWI0MDNlZTg0Li4zNGJkMzQ5
MzUxZjM0MzBjNjUxNjNiMjhjNmU5YmIxNjY4MjQzOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00ODQsNiArNDg0LDExIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdW1lKCkKIAogI2VuZGlmCiAKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxz
KGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3Vy
Y2VDb250ZW50U2l6ZSkKK3sKKyAgICBtX3Jlc291cmNlQWdlbnQtPnNldFJlc291cmNlc0RhdGFT
aXplTGltaXRzRnJvbUludGVybmFscyhtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIG1heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDc5OGViYmE1NjU5M2I3NWViMmRiMWJk
NjM5ZWY0NjM2OWUyMjE5MjAuLmViNDIxZTUxYmQ3NTAzZGJiMmVhNjFmZjUzMzQ0ZWZlNDAxMGNk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtMTE5LDYgKzExOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogI2VuZGlm
CiAKKyAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhpbnQg
bWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQb3N0V29ya2VyTm90aWZp
Y2F0aW9uVG9Gcm9udGVuZFRhc2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTllMmNhYTgwYmJkMjE5Y2Fj
OTlhZjdmYzc5ZWRhNzViMmIwODY3MS4uMmRhMTY3ZGYyMDk4NjJkNjlkNWNjYjRiNzhhZDZmZDlk
OGVkMDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQ5MiwxMCArNDkyLDEwIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiBmcmFt
ZSwgRG9jdW1lCiAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VCdXRDYW5jZWxlZEltcGwo
ZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKEluc3BlY3Rv
clJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpCi0gICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwg
ZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAyMGIwZWI4MjcxMDQ4N2U5
Y2MyOGFiN2M3NmY1MmUxNDU4ODNlNzJjLi5lM2UzMjc0YzhlMTY4N2MyN2MwY2M1NGZkNjI5NDBi
M2RkYzQyMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZyYW1lKiwgRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZChGcmFtZSosIERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5SWdub3JlKEZyYW1l
KiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aChG
cmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwg
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVk
SW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9s
aWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250
aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAg
ICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1
bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CkBAIC03NjQsMTEgKzc2NCwxMSBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShGcmFt
ZSogZnJhbWUsIERvYwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1l
KiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICBkaWRSZWNlaXZlQ29u
dGVudExlbmd0aEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAyOWVjMTVhNDFlZjY4ZjE0ZGY1ZDljM2Fk
OGYxNzRiYzIyYmM0NTgwLi5hMTQzZmNhZDEwNWQ4NmU4NTAxNThjNmU2ZGUzYjQ5MDBlOWM0Yjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCkBAIC0yNTAsMTggKzI1MCwyMSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQog
ICAgICAgICBlbHNlIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5IHx8IG1fcmVzb3VyY2Vz
RGF0YS0+cmVzb3VyY2VUeXBlKGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhS
UmVzb3VyY2UpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNv
dXJjZTsKIAotICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQoaWRlbnRp
ZmllciwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UudXJs
KCkpOworICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQoaWRlbnRpZmll
ciwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UpOwogICAg
IH0KICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShpZGVudGlmaWVyLCB0eXBl
KTsKICAgICBtX2Zyb250ZW5kLT5yZXNwb25zZVJlY2VpdmVkKHN0YXRpY19jYXN0PGludD4oaWRl
bnRpZmllciksIGN1cnJlbnRUaW1lKCksIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBl
U3RyaW5nKHR5cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRl
ZCB0aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGgg
Zm9sbG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQotICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8g
Y2FsbHMgdG8gZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGggZnJvbSB0aGUgbmV0d29yayBzdGFjay4K
KyAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20g
dGhlIG5ldHdvcmsgc3RhY2suCiAgICAgaWYgKGNhY2hlZFJlc291cmNlU2l6ZSAmJiByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkKLSAgICAgICAgZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoaWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VTaXplLCAwKTsKKyAgICAgICAgZGlkUmVjZWl2
ZURhdGEoaWRlbnRpZmllciwgMCwgY2FjaGVkUmVzb3VyY2VTaXplLCAwKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKKyAgICBpZiAoZGF0YSAmJiBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
VHlwZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UpCisg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEoaWRlbnRpZmllciwg
ZGF0YSwgZGF0YUxlbmd0aCk7CisKICAgICBtX2Zyb250ZW5kLT5kYXRhUmVjZWl2ZWQoc3RhdGlj
X2Nhc3Q8aW50PihpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZGF0YUxlbmd0aCwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCkBAIC0yNzAsNiArMjczLDggQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnQKICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUoaWRlbnRpZmllcikg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlKQogICAgICAgICBtX3Jlc291
cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGlkZW50aWZpZXIsIGxvYWRlci0+ZnJh
bWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLCBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CiAKKyAgICBtX3Jlc291cmNl
c0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29udGVudChpZGVudGlmaWVyKTsKKwogICAgIGlmICgh
ZmluaXNoVGltZSkKICAgICAgICAgZmluaXNoVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKQEAgLTI5
Niw3ICszMDEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxTY3Jp
cHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYwogCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgbV9yZXNvdXJjZXNEYXRhLT5h
ZGRSZXNvdXJjZUNvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKKyAgICBtX3Jlc291
cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwog
fQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVYSFJSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC0zOTcsNiArNDAyLDEyIEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVy
cm9yU3RyaW5nKiwKICAgICByZXR1cm4gbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50
U3RhdGU6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCwgZW5hYmxlZCk7CiB9CiAK
Ky8vIGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgbGF5b3V0IHRlc3QgcHVycG9zZXMuCit2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUlu
dGVybmFscyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNpbmds
ZVJlc291cmNlQ29udGVudFNpemUpCit7CisgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJj
ZXNEYXRhU2l6ZUxpbWl0cyhtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIG1heGltdW1TaW5n
bGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewogICAgIGVuYWJsZSgpOwpAQCAtNDM2LDcgKzQ0Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xs
ZWN0aW9uKCkKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRl
bnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFN0
cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkKIHsKLSAgICBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEoaWRlbnRpZmllcik7CisgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBj
b25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKGlkZW50aWZpZXIpOwog
ICAgIGlmICghcmVzb3VyY2VEYXRhKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyByZXNv
dXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIgZm91bmQiOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRl
eCBiNDQxMGIzNzVjYWYxZDJlNmZhNjJlZmU5OTRjYWViYjljZTE5MTE2Li5iODAyYWY0M2Q2ZTQ5
YTFlZTUwNTU0M2I5MTEwYWQ0Y2I0OGVkOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwpAQCAtMTEzLDYgKzExMyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGlzQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwg
Ym9vbCogZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVu
YWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpOwogCisgICAgLy8gY2FsbGVkIGZyb20g
SW50ZXJuYWxzIGZvciBsYXlvdXQgdGVzdCBwdXJwb3Nlcy4KKyAgICB2b2lkIHNldFJlc291cmNl
c0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRT
aXplLCBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworCiAgICAgLy8gQ2Fs
bGVkIGZyb20gZnJvbnRlbmQKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNTg4ZDFlYjQwNGY3ZTY5ZjA4OWQzMTI5
N2I3MjBhNjlkMDJhZWY5Yy4uMzQ2YjI5OWZjMTY5ZGNkMWQwZTU0OTZmZDU3YWMxNTliYTI3YjY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC0yOSw0OCArMjksOTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogCisjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBuYW1lc3BhY2UgewogLy8gMTBNQgog
c3RhdGljIGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAw
OworCisvLyAxTUIKK3N0YXRpYyBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUg
PSAxMDAwICogMTAwMDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKIC8vIFJlc291cmNl
RGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKLSAgICAs
IG1faGFzQ29udGVudChmYWxzZSkKICAgICAsIG1faXNDb250ZW50UHVyZ2VkKGZhbHNlKQogICAg
ICwgbV90eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKIHsKIH0KIAotU3Ry
aW5nIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNvbnRlbnQoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRDb250ZW50KGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKIHsKLSAgICByZXR1cm4gbV9oYXNDb250ZW50ID8gbV9jb250ZW50QnVpbGRl
ci50b1N0cmluZygpIDogU3RyaW5nKCk7CisgICAgQVNTRVJUKCFoYXNEYXRhKCkpOworICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKKyAgICBtX2NvbnRlbnQgPSBjb250ZW50OwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZENvbnRlbnQoY29uc3Qg
U3RyaW5nJiBjb250ZW50KQordW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6cHVyZ2VDb250ZW50KCkKIHsKLSAgICBtX2NvbnRlbnRCdWlsZGVyLmFwcGVuZChjb250
ZW50KTsKLSAgICBtX2hhc0NvbnRlbnQgPSB0cnVlOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CisgICAgaWYgKGhhc0RhdGEoKSkgeworICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Cisg
ICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZm
ZXIgPSBudWxscHRyOworICAgIH0KKworICAgIGlmIChoYXNDb250ZW50KCkpIHsKKyAgICAgICAg
QVNTRVJUKCFoYXNEYXRhKCkpOworICAgICAgICByZXN1bHQgPSAyICogbV9jb250ZW50Lmxlbmd0
aCgpOworICAgICAgICBtX2NvbnRlbnQgPSBTdHJpbmcoKTsKKyAgICB9CisgICAgbV9pc0NvbnRl
bnRQdXJnZWQgPSB0cnVlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXVuc2lnbmVkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnB1cmdlQ29udGVudCgpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IG1fY29udGVudEJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCku
bGVuZ3RoKCk7Ci0gICAgbV9jb250ZW50QnVpbGRlci5jbGVhcigpOwotICAgIG1faXNDb250ZW50
UHVyZ2VkID0gdHJ1ZTsKLSAgICBtX2hhc0NvbnRlbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gbGVu
Z3RoOworICAgIGlmICghdGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZGVj
b2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNv
ZGluZ05hbWUpOworICAgIGVsc2UgaWYgKG1pbWVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAg
ICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwg
IklTTy04ODU5LTEiKTsKKyAgICBlbHNlIGlmIChtaW1lVHlwZSA9PSAidGV4dC9odG1sIikKKyAg
ICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwi
LCAiVVRGLTgiKTsKKyAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlw
ZShtaW1lVHlwZSkpIHsKKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgbV9kZWNvZGVyLT51c2VMZW5pZW50
WE1MRGVjb2RpbmcoKTsKKyAgICB9Cit9CisKK2ludCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCit7CisgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOworICAgIGlmICghbV9kYXRhQnVm
ZmVyKQorICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOworfQorCitpbnQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCit7CisgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwor
ICAgIGludCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgbV9jb250ZW50
ID0gbV9kZWNvZGVyLT5kZWNvZGUobV9kYXRhQnVmZmVyLT5kYXRhKCksIG1fZGF0YUJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiAyICogbV9j
b250ZW50Lmxlbmd0aCgpIC0gZGF0YUxlbmd0aDsKIH0KIAogLy8gTmV0d29ya1Jlc291cmNlc0Rh
dGEKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpOZXR3b3JrUmVzb3VyY2VzRGF0YSgpCiAgICAgOiBt
X2NvbnRlbnRTaXplKDApCisgICAgLCBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZShtYXhp
bXVtUmVzb3VyY2VzQ29udGVudFNpemUpCisgICAgLCBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNv
bnRlbnRTaXplKG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogewogfQogCkBAIC04
NSwxMyArMTM2LDE0IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRl
ZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgbV9pZGVudGlmaWVy
VG9SZXNvdXJjZURhdGFNYXAuc2V0KGlkZW50aWZpZXIsIG5ldyBSZXNvdXJjZURhdGEoaWRlbnRp
ZmllciwgbG9hZGVySWQpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9u
c2VSZWNlaXZlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNwb25z
ZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBSZXNvdXJjZURhdGEq
IHJlc291cmNlRGF0YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlm
aWVyKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc291
cmNlRGF0YS0+c2V0RnJhbWVJZChmcmFtZUlkKTsKLSAgICByZXNvdXJjZURhdGEtPnNldFVybCh1
cmwpOworICAgIHJlc291cmNlRGF0YS0+c2V0VXJsKHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXNv
dXJjZURhdGEtPmNyZWF0ZURlY29kZXIocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4
dEVuY29kaW5nTmFtZSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVz
b3VyY2VUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgSW5zcGVjdG9yUGFnZUFnZW50OjpS
ZXNvdXJjZVR5cGUgdHlwZSkKQEAgLTExMCwyMSArMTYyLDU0IEBAIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6UmVzb3VyY2VUeXBlIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZVR5cGUodW5zaWdu
ZWQgbG9uCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpz
ZXRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZp
ZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURh
dGEpCiAgICAgICAgIHJldHVybjsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IDIgKiBjb250ZW50Lmxl
bmd0aCgpOworICAgIGlmIChkYXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250
ZW50U2l6ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVu
dFB1cmdlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShjb250
ZW50Lmxlbmd0aCgpKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQdXJnZWQoKSkgewotICAg
ICAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQotICAgICAgICAgICAgbV9pZGVu
dGlmaWVyc0RlcXVlLmFwcGVuZChpZGVudGlmaWVyKTsKLSAgICAgICAgcmVzb3VyY2VEYXRhLT5h
cHBlbmRDb250ZW50KGNvbnRlbnQpOwotICAgICAgICBtX2NvbnRlbnRTaXplICs9IGNvbnRlbnQu
bGVuZ3RoKCk7CisgICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3Vy
Y2VEYXRhLT5pc0NvbnRlbnRQdXJnZWQoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUu
YXBwZW5kKGlkZW50aWZpZXIpOworICAgICAgICByZXNvdXJjZURhdGEtPnNldENvbnRlbnQoY29u
dGVudCk7CisgICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKICAgICB9CiB9CiAK
K3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit7Cisg
ICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0
YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZURhdGEpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+ZGVjb2RlcigpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4
aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCisgICAgICAgIG1fY29udGVudFNpemUgLT0g
cmVzb3VyY2VEYXRhLT5wdXJnZUNvbnRlbnQoKTsKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5pc0Nv
bnRlbnRQdXJnZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbnN1cmVGcmVlU3BhY2Uo
ZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50UHVyZ2VkKCkpIHsKKyAgICAg
ICAgbV9pZGVudGlmaWVyc0RlcXVlLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICAgICAgcmVzb3Vy
Y2VEYXRhLT5hcHBlbmREYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnRT
aXplICs9IGRhdGFMZW5ndGg7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjptYXliZURlY29kZURhdGFUb0NvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorewor
ICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VEYXRhKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFyZXNvdXJjZURhdGEtPmhhc0RhdGEoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGVudFNpemUgKz0gcmVzb3VyY2VEYXRhLT5kZWNvZGVEYXRhVG9Db250ZW50
KCk7CisgICAgaW50IGRhdGFMZW5ndGggPSAyICogcmVzb3VyY2VEYXRhLT5jb250ZW50KCkubGVu
Z3RoKCk7CisgICAgaWYgKGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKQorICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+cHVyZ2VDb250
ZW50KCk7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZENhY2hlZFJlc291cmNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KQogewogICAgIGlmICghbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuY29udGFpbnMoaWRl
bnRpZmllcikpCkBAIC0xNDMsNyArMjI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBQYXMKICAg
ICByZXNvdXJjZURhdGEtPnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7CiB9
CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpkYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK05ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KGlkZW50aWZpZXIpOwogfQpAQCAtMTUxLDYgKzIzNiw3IEBAIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKHVuc2ln
bmVkIGxvbmcgaWRlCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJp
bmcmIHByZXNlcnZlZExvYWRlcklkKQogewogICAgIG1faWRlbnRpZmllcnNEZXF1ZS5jbGVhcigp
OworICAgIG1fY29udGVudFNpemUgPSAwOwogCiAgICAgUmVzb3VyY2VEYXRhTWFwIHByZXNlcnZl
ZE1hcDsKIApAQCAtMTY2LDExICsyNTIsMTkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
Y2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCkKICAgICBtX2lkZW50aWZpZXJU
b1Jlc291cmNlRGF0YU1hcC5zd2FwKHByZXNlcnZlZE1hcCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKGludCBtYXhpbXVtUmVzb3Vy
Y2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKK3sK
KyAgICBjbGVhcigpOworICAgIG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplOworICAgIG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZTsKK30KKworCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVOb0RhdGFGb3JJZGVudGlmaWVyKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcikKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1faWRl
bnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAocmVzb3Vy
Y2VEYXRhKSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKKyAgICAg
ICAgaWYgKHJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpIHx8IHJlc291cmNlRGF0YS0+aGFzRGF0
YSgpKQogICAgICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29u
dGVudCgpOwogICAgICAgICBkZWxldGUgcmVzb3VyY2VEYXRhOwogICAgICAgICBtX2lkZW50aWZp
ZXJUb1Jlc291cmNlRGF0YU1hcC5yZW1vdmUoaWRlbnRpZmllcik7CkBAIC0xNzksMTAgKzI3Mywx
MCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVOb0RhdGFGb3JJZGVudGlmaWVy
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
ZW5zdXJlRnJlZVNwYWNlKGludCBzaXplKQogewotICAgIGlmIChzaXplID4gbWF4aW11bVJlc291
cmNlc0NvbnRlbnRTaXplKQorICAgIGlmIChzaXplID4gbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVu
dFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHdoaWxlIChzaXplID4gbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplIC0gbV9jb250ZW50U2l6ZSkgeworICAgIHdoaWxlIChzaXpl
ID4gbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgLSBtX2NvbnRlbnRTaXplKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNEZXF1ZS50YWtlRmly
c3QoKTsKICAgICAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJU
b1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZXNvdXJjZURh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CmluZGV4IDc4Y2RiZWJmYWE3M2Y2ODE4ZTgwMmZhMDM5YmFmOWVjNzVjNzlhOTUuLmQ1NDdhYTc5
MTFlNjkwODNkZTM4OTQyNzViNDI3ZWQ4M2RkMTg2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQzLDEyICs0MiwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAog
Y2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNsYXNzIFJlc291cmNl
RGF0YSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKICAgICBw
dWJsaWM6CiAgICAgICAgIFJlc291cmNlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbG9hZGVySWQpOwogCkBAIC02MSwzOCArNjIsNDcgQEAgcHVibGljOgogICAg
ICAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgdm9pZCBz
ZXRVcmwoY29uc3QgU3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0KIAotICAgICAgICBib29s
IGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KLSAgICAgICAgU3Ry
aW5nIGNvbnRlbnQoKTsKLSAgICAgICAgdm9pZCBhcHBlbmRDb250ZW50KGNvbnN0IFN0cmluZyYp
OworICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50Lmlz
TnVsbCgpOyB9CisgICAgICAgIFN0cmluZyBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50OyB9CisgICAgICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmKTsKIAogICAgICAg
ICBib29sIGlzQ29udGVudFB1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250ZW50UHVyZ2Vk
OyB9Ci0gICAgICAgIHZvaWQgc2V0SXNDb250ZW50UHVyZ2VkKGJvb2wgaXNDb250ZW50UHVyZ2Vk
KSB7IG1faXNDb250ZW50UHVyZ2VkID0gaXNDb250ZW50UHVyZ2VkOyB9CiAgICAgICAgIHVuc2ln
bmVkIHB1cmdlQ29udGVudCgpOwogCiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3Vy
Y2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICAgICAgdm9pZCBzZXRU
eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlw
ZTsgfQogCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0KICAgICAgICAgU3Ry
aW5nIHRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7
IH0KICAgICAgICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSkgeyBtX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9CiAK
KyAgICAgICAgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQorICAgICAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgICAgICBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7
IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsgfQorCiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2UuZ2V0KCk7IH0KICAg
ICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0K
KyAgICAgICAgaW50IGRhdGFMZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgaW50IGRlY29kZURh
dGFUb0NvbnRlbnQoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKICAg
ICAgICAgU3RyaW5nIG1fbG9hZGVySWQ7CiAgICAgICAgIFN0cmluZyBtX2ZyYW1lSWQ7CiAgICAg
ICAgIFN0cmluZyBtX3VybDsKLSAgICAgICAgYm9vbCBtX2hhc0NvbnRlbnQ7Ci0gICAgICAgIFN0
cmluZ0J1aWxkZXIgbV9jb250ZW50QnVpbGRlcjsKKyAgICAgICAgU3RyaW5nIG1fY29udGVudDsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBib29s
IG1faXNDb250ZW50UHVyZ2VkOwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNl
VHlwZSBtX3R5cGU7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAg
ICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAgICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBt
X2NhY2hlZFJlc291cmNlOwogICAgIH07CiAKQEAgLTEwMSwxNSArMTExLDE5IEBAIHB1YmxpYzoK
ICAgICB+TmV0d29ya1Jlc291cmNlc0RhdGEoKTsKIAogICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCk7Ci0gICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworICAgIHZvaWQgc2V0UmVzb3Vy
Y2VDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKKyAgICB2b2lkIG1heWJlQWRkUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHZvaWQgbWF5YmVEZWNv
ZGVEYXRhVG9Db250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRD
YWNoZWRSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENhY2hlZFJlc291cmNlKik7
CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lKTsKLSAgICBSZXNvdXJjZURhdGEqIGRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
KyAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
ICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmco
KSk7CiAKKyAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKGludCBtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7
CisKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVOb0RhdGFGb3JJZGVudGlmaWVyKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgYm9vbCBlbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpOwpA
QCAtMTE5LDYgKzEzMyw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVk
IGxvbmcsIFJlc291cmNlRGF0YSo+IFJlc291cmNlRGF0YU1hcDsKICAgICBSZXNvdXJjZURhdGFN
YXAgbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXA7CiAgICAgaW50IG1fY29udGVudFNpemU7
CisgICAgaW50IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOworICAgIGludCBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5k
ZXggMTBiYTI3NzZjZWI4OTI2YmZhYmY3ZWI4NTBmMGViYWFkMTkzZGQ4MS4uNGRmYzc1MTA4Y2Iz
YzI5NWNmYWY2MTBmYTJiNjc3NmM4MDU3ZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC03OTgsNiArNzk4LDExIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
OwogICAgIH0sCiAKKyAgICBnZXQgY29udGVudEVuY29kZWQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbnRlbnRFbmNvZGVkOworICAgIH0sCisKICAgICBnZXQgY29udGVudFRpbWVz
dGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRpbWVzdGFtcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VQcmV2
aWV3Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VQ
cmV2aWV3Vmlldy5qcwppbmRleCAzZmJjZTQ3OTM1MzE3NmI2MWM2MmQ3OTI2ZjEwMjJiZGU4OWY0
MjFiLi41OGM2MTdmYjZkNjQ5MDdjNjdhY2M4YTNkMjZlZTZjZWM4YWM0ZTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmlld1ZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVByZXZp
ZXdWaWV3LmpzCkBAIC0zOSw3ICszOSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVByZXZpZXdW
aWV3LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5yZXNvdXJjZS5jb250
ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2VtcHR5VmlldykgewotICAgICAgICAgICAg
ICAgIHRoaXMuX2VtcHR5VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBubyBwcmV2aWV3IGF2YWlsYWJsZS4iKSk7
CisgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3ID0gdGhpcy5fY3JlYXRlRW1wdHlWaWV3
KCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3LnNob3codGhpcy5lbGVtZW50KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTQ3LDEzICs0NywxOCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fZW1wdHlWaWV3LmRldGFjaCgpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9lbXB0eVZpZXc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3ZpZXcp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdmlldyA9IHRoaXMuX2NyZWF0ZUlubmVyVmlldygpOwot
ICAgICAgICAgICAgdGhpcy5fdmlldy5zaG93KHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICBp
ZiAoIXRoaXMuX3ByZXZpZXdWaWV3KQorICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3
ID0gdGhpcy5fY3JlYXRlUHJldmlld1ZpZXcoKTsKKyAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdW
aWV3LnNob3codGhpcy5lbGVtZW50KTsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfY3JlYXRl
SW5uZXJWaWV3OiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZUVtcHR5VmlldzogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBubyBwcmV2aWV3IGF2YWlsYWJsZS4iKSk7
CisgICAgfSwKKyAgICAKKyAgICBfY3JlYXRlUHJldmlld1ZpZXc6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLnJlc291cmNlLmhhc0Vycm9yU3RhdHVzQ29kZSgpICYmIHRoaXMu
cmVzb3VyY2UuY29udGVudCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlSFRNTFZpZXcodGhpcy5yZXNvdXJjZSk7CkBAIC02Niw2ICs3MSw5IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5fcmVzcG9uc2VWaWV3LnNvdXJjZVZpZXcpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVz
cG9uc2VWaWV3LnNvdXJjZVZpZXc7CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5yZXNvdXJj
ZS5jYXRlZ29yeSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcikKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbXB0eVZpZXcoKTsKIAogICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5ub25Tb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhp
cy5yZXNvdXJjZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCA3MjI2ZjY3MzJlMzNlMDYxODJmMDcwMmU0Y2Vj
MGIxNDM2Y2I3NzhmLi4xMDZlOGIxMjUzOTkzOTQ5MDllODY2OTJlMTgyZmMwMzQ1ZWM4MWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmll
dy5qcwpAQCAtNTEsNiArNTEsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3Lmhhc1RleHRD
b250ZW50ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VDYXRlZ29yaWVzLnhocjoKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3Jp
ZXMuc3R5bGVzaGVldHM6CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5zcGVj
dG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjoKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmNv
bnRlbnQgJiYgIXJlc291cmNlLmNvbnRlbnRFbmNvZGVkOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCA3YzA5NDNiNTYwZDRmZDA3NTZjMzc1ZjJkMDBmYjIwZGIxNzAyOWJmLi41ODYzZjhjNzlm
NTkzMDRhMWFiN2UzMzFkMWE4ZDBhNGU1MzE0MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTEzNzgsNyArMTM3OCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKEtVUkwmIHVybCkKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXI7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJl
cXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5n
RGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBSZXNv
dXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSwgU3RyaW5nKCkpLCAtMSwg
LTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlKHVy
bCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsK
IAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTE3NzYsNyArMTc3Niw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhN
RTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29k
ZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEg
Z2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3Bv
bnNlLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwg
MCwgZXJyb3IpOworICAgICAgICAgICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2UsIDAs
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUo
aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKTsKQEAgLTI1ODksNyArMjU4OSw3IEBAIHVuc2lnbmVk
IGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1CiAjZW5kaWYKICAgICB9CiAgICAgaW50IGVuY29kZWREYXRhTGVuZ3Ro
ID0gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8gc3RhdGljX2Nhc3Q8aW50PihyZXNwb25z
ZS5yZXNvdXJjZUxvYWRJbmZvKCktPmVuY29kZWREYXRhTGVuZ3RoKSA6IC0xOwotICAgIG5vdGlm
aWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0
KCksIGlkZW50aWZpZXIsIHJlc3BvbnNlLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgs
IGVycm9yKTsKKyAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNwb25zZSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOwogICAgIHJldHVybiBpZGVu
dGlmaWVyOwogfQogCkBAIC0yODgyLDcgKzI4ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
ZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJlcXVl
c3QsIGlkZW50aWZpZXIsIGVycm9yKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1h
cmtSZXNvdXJjZUFzQ2FjaGVkKHBhZ2UsIGlkZW50aWZpZXIpOwotICAgIG5vdGlmaWVyKCktPnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50
aWZpZXIsIHJlc291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCwg
ZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc291cmNlLT5yZXNwb25zZSgpLCAw
LCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjphcHBseVVzZXJBZ2VudChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCBhYzQ2YTk0NDdm
ZTVjMzYyOGY0NzM1MmU4YzJjY2EyMmJkZTgzYTQ4Li5mNDUxM2JiNmMwOTBjZmQ4M2M2MjQyMzIz
MjYxYmI2ZjcxMjc2ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGEK
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+cHJv
Z3Jlc3MoKS0+aW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEsIGRh
dGFMZW5ndGgpOwogCi0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZpbmlz
aExvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC0xMzAs
MTEgKzEzMCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bgogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBpZGVudGlmaWVy
LCBsb2FkZXIsIHIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2Fk
ZXIsIGlkZW50aWZpZXIsIGRhdGFMZW5ndGgpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhTGVu
Z3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNo
RGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21Q
YWdlKHVuc2lnbmVkIGxvbmcKICAgICBvbGRQYWdlLT5wcm9ncmVzcygpLT5jb21wbGV0ZVByb2dy
ZXNzKGlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogewogICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIGRpc3BhdGNoRGlkUmVj
ZWl2ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCiAgICAgaWYgKGRh
dGFMZW5ndGggPiAwKQotICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxv
YWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxl
bmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAg
ICAgICBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcobG9hZGVyLCBpZGVudGlmaWVyLCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggZGFmZDYx
OTRjY2VjODMyNDVlMjhhMmNiOGFiYjg5NmEyNTJiYzAzNS4uNmE5Mjk2YzMxMmI1OGQyZGY3N2Rl
YTU1YmY2YjFiYTY0YmNhZGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE5vdGlmaWVyLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNo
TG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91Ymxl
IGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZy
b21QYWdlKHVuc2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFnZSopOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lKiBt
X2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA0NWIxODRjZmY5OTcwMjJhMGE3MmU0N2ZkYjM4
ZDg5ZWE5OTIzNDQyLi42NGY3YjY4NWRkOWM4ZmQ3NjI3MjBjYzJlN2EyZDY1YzkzNDNmNTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFy
KiBkCiAgICAgVU5VU0VEX1BBUkFNKGVuY29kZWREYXRhTGVuZ3RoKTsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVu
dExlbmd0aChtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxlbmd0aCwgMCk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShtX2ZyYW1lLCBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIDAsIGxlbmd0aCwgMCk7CiAjZW5kaWYKIAogICAg
IGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDg2Y2RjYmViOTBmMGYyYzM2ZWI5YzRkNWVkYmY0YmYzMmM5YzhhMWYu
LmZiOTVlMWI5NmU4M2FiM2Y1ZjE2NWQwYTFmNjliYzRmY2YzZDgwYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0xMjMsNCArMTI1LDE1IEBAIFN0cmluZyBJ
bnRlcm5hbHM6OnNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIHJldHVybiBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpOwogfQog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3ZvaWQgSW50ZXJuYWxzOjpzZXRJbnNwZWN0b3JSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0cyhEb2N1bWVudCogZG9jdW1lbnQsIGludCBtYXhpbXVtUmVzb3Vy
Y2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2Uo
KSB8fCAhZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRv
Y3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0UmVzb3VyY2VzRGF0YVNp
emVMaW1pdHNGcm9tSW50ZXJuYWxzKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCmluZGV4IGU2NzdlMzJmMDg5ZGNjYTcxOGIyNDJiYWI3MDU4MWQwMGY1
NjZiZTQuLjE1MGFiOGVjNGJmMDg5MTcwMWJlMWQzOGUxZDJiYmIxMjQyMTNiNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIFN0
cmluZyBzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBFeGNl
cHRpb25Db2RlJik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHZvaWQgc2V0SW5zcGVj
dG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoRG9jdW1lbnQqLCBpbnQgbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEludGVybmFscygpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiODI4NzFlNTI0MmY0ZjRiYzllZTc1
ODRkZDU5NzlkN2UwZGEyMzQ2Li42YWJhODAzOWY4YjE1NTlhY2VjOTcxZmZmYjhjZTQ1MmQ1Mzg2
YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw2ICszNSw4IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoaW4gRWxlbWVu
dCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyBzaGFkb3dQ
c2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgdm9pZCBzZXRJbnNwZWN0b3JSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0cyhpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyBtYXhpbXVt
UmVzb3VyY2VzQ29udGVudFNpemUsIGluIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCmluZGV4IDE2ODQyZGVlYTg1YmM0Zjk3NTVlNGExODQxNDMzMTQ3NDE2ZjA4NzYuLmJj
OTIwYTk3MjNkMTYzZDU0MDAyNzNhOGQ5YmU5NWNiMmU3YTRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgpAQCAtMzYsNiArMzYsNyBAQCBfWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlckVQTjNK
U0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU180Tm9kZUU7CiBfWk43V2Vi
Q29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFaTsKIF9aTjdXZWJDb3JlMTZq
c1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0
cmluZ0ltcGxFTlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfMTBTdHJpbmdIYXNoRU5TM18x
MEhhc2hUcmFpdHNJUzZfRUVOU0JfSVM5X0VFRUVTNl87CiBfWk43V2ViQ29yZTE3Y2FjaGVET01T
dHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85
Q2xhc3NJbmZvRTsKK19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNvdXJj
ZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7CiBfWk43V2ViQ29yZTIwU2hhZG93Q29u
dGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOwogX1pON1dlYkNvcmUyMWdldENhY2hl
ZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5mb0U7
CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFajsKQEAg
LTUwLDYgKzUxLDcgQEAgX1pON1dlYkNvcmU5dG9FbGVtZW50RU4zSlNDN0pTVmFsdWVFOwogX1pO
SzdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjExaXNQcmVsb2FkZWRFUktOM1dURjZTdHJp
bmdFOwogX1pOSzdXZWJDb3JlNkpTTm9kZTIxcHVzaEV2ZW50SGFuZGxlclNjb3BlRVBOM0pTQzlF
eGVjU3RhdGVFUE5TMV8xNFNjb3BlQ2hhaW5Ob2RlRTsKIF9aTks3V2ViQ29yZTdFbGVtZW50MTBz
aGFkb3dSb290RXY7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQ0cGFnZUV2OwogbG9jYWw6CiBfWio7
CiBjdGkqOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99086</attachid>
            <date>2011-06-29 07:14:59 -0700</date>
            <delta_ts>2011-07-04 12:39:01 -0700</delta_ts>
            <desc>Patch with build fixes</desc>
            <filename>bug-30080-20110629181457.patch</filename>
            <type>text/plain</type>
            <size>72909</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwMDEKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBhMTg0ZTA1YjQ0NGM3NjQ2ZjZiZTkyNTU5NTI5ODgxYTA0MWJmOWU2Li42ZmNi
NmU1MmIzNTVlOWE0NjFjNDk3NjM0ZjM2MDNjODk0M2I4YzE3IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDYtMjkgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBjb250ZW50IGZvciBw
bHVnaW4gcmVxdWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDExLTA2LTI4ICBKb29uZSBIdXIgIDxqb29uZS5odXJA
Y29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YjU1NjA4ZTVkMzFiZjcxMjJkOWIyZmExMGM5ZjNkNDZlYmU0ZjU5Li4wOGNlMWEy
YzExYmU2MGMxZGQ2OWVlMWE3Yjc3MzAyY2E1YjBjM2E3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTEtMDYtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2hvdyBjb250ZW50IGZvciBwbHVnaW4gcmVxdWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBs
YWNlbWVudC1lbWJlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LWVtYmVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
b250ZW50LXJlcGxhY2VtZW50LXhoci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXho
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3lu
Yy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14
aHItc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXhoci1zeW5jLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJj
ZS5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
dXRmOC54bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKKwogMjAxMS0wNi0yOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc2tpcApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFj
ZW1lbnQtZW1iZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQtZW1iZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI5MTFiMmUxMzBmZjNmZGY2NDY5MGUzYWNiYTYzOTU2OWE0NmM1MTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC1lbWJlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBEb25lLgorVGVzdHMgTmV0d29ya1Jl
c291cmNlc0RhdGEgbG9naWMgZm9yIGVtYmVkIGNvbnRlbnQgcmVwbGFjZW1lbnQuCisKKworaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5w
aHA/c2l6ZT0yMDAKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBu
dWxsCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jl
c291cmNlLnBocD9zaXplPTEwMAorcmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNv
bnRlbnQ6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhw
P3NpemU9MjAxCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogbnVs
bAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNv
dXJjZS5waHA/c2l6ZT0xMDAKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250
ZW50OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1j
b250ZW50LXJlcGxhY2VtZW50LWVtYmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC1lbWJlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5ZWUzZGI3ZWY4ZmM5M2M5NDA5NDFhYTcyZDA4MWYzNDMzNTg2ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstY29udGVudC1yZXBsYWNlbWVudC1lbWJlZC5odG1sCkBAIC0wLDAgKzEsMTE5IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3ZhciBsb2FkZWRGaXJzdFVSTCA9IGZhbHNlOworZnVuY3Rpb24gc3Ry
ZWFtTG9hZGVkKCkKK3sKKyAgICBpZiAobG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsK
KworICAgIGxvYWRlZEZpcnN0VVJMID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCit2YXIg
c25pZmZlckluc3RhbGxlZCA9IGZhbHNlOworZnVuY3Rpb24gb25TbmlmZmVySW5zdGFsbGVkKCkK
K3sKKyAgICBzbmlmZmVySW5zdGFsbGVkID0gdHJ1ZTsKKyAgICBsb2FkVVJMcygpOworfQorCitm
dW5jdGlvbiBsb2FkVVJMcygpCit7CisgICAgaWYgKCFzbmlmZmVySW5zdGFsbGVkIHx8ICFsb2Fk
ZWRGaXJzdFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2lu
ZG93LmludGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIC8vIEVhY2ggJyonIHN5bWJvbCBpbiBvcmlnaW5hbCBkYXRhIHdpbGwgdXNlIHR3byBi
eXRlcyBpbiBTdHJpbmcgb2JqZWN0CisgICAgLy8gYWZ0ZXIgZGVjb2RpbmcsIGhlbmNlIG11bHRp
cGx5aW5nIGJ5IHR3by4KKyAgICBpbnRlcm5hbHMuc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNp
emVMaW1pdHMoZG9jdW1lbnQsIDIqMzAwLCAyKjIwMCk7CisKKyAgICAvLyBIZXJlIHdlIHRlc3Qg
cmVwbGFjZW1lbnQgbG9naWMuIFdlIHNhdmUgZmlyc3QgdHdvIHJlc291cmNlcyBjb250ZW50LAor
ICAgIC8vIGRpc2NhcmQgdGhpcmQgcmVzb3VyY2UgY29udGVudCBvbmNlIHdlIHNlZSBpdHMgc2l6
ZSBleGNlZWRzIGxpbWl0LAorICAgIC8vIGFuZCBmaW5hbGx5IHJlcGxhY2UgZmlyc3QgcmVzb3Vy
Y2UgY29udGVudCB3aXRoIHRoZSBsYXN0IHJlc291cmNlIGNvbnRlbnQuCisKKyAgICBwbGcuZ2V0
VVJMTm90aWZ5KCJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MjAwIiwgbnVsbCwgImxvYWRV
UkwyIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRVUkwyKCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5
KCJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MTAwIiwgbnVsbCwgImxvYWRVUkwzIik7Cit9
CisKK2Z1bmN0aW9uIGxvYWRVUkwzKCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJj
ZXMvcmVzb3VyY2UucGhwP3NpemU9MjAxIiwgbnVsbCwgImxvYWRVUkw0Iik7Cit9CisKK2Z1bmN0
aW9uIGxvYWRVUkw0KCkKK3sKKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3NpemU9MTAwIiwgbnVsbCwgImFsbFVSTHNMb2FkZWQiKTsKK30KKworZnVuY3Rpb24g
YWxsVVJMc0xvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRvbmUuIik7Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJvblNuaWZmZXJJbnN0YWxsZWQoKSIpOworCisgICAgZnVu
Y3Rpb24gZHVtcFJlc291cmNlKHJlc291cmNlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlm
ICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKworICAgICAgICBmdW5jdGlvbiBj
b250ZW50TG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVz
b3VyY2UuY29udGVudCk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisKKyAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzLmxlbmd0aCAtIDRdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2Us
IHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gM107CisgICAgICAgIGR1
bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAz
KCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5n
dGggLSAyXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwNCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVzb3Vy
Y2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIGxvZ2ljIGZvciBlbWJlZCBjb250ZW50IHJlcGxhY2VtZW50LjwvcD4KKyAgICA8
ZW1iZWQgbmFtZT0icGxnIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBl
IiBzcmM9InJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSIgb25zdHJlYW1sb2FkPSJz
dHJlYW1Mb2FkZWQoKSI+PC9lbWJlZD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQt
cmVwbGFjZW1lbnQteGhyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDFlZjczZjYwNzIzODI1NjcxMDRjODU1M2QwZjIyMzZhN2RkMjMxYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM5OiBEb25lLgorVGVzdHMgTmV0d29ya1Jl
c291cmNlc0RhdGEgbG9naWMgZm9yIFhIUiBjb250ZW50IHJlcGxhY2VtZW50LgorCitodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9z
aXplPTIwMAorcmVzb3VyY2UuY29udGVudDogbnVsbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAKK3Jlc291cmNl
LmNvbnRlbnQ6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3NpemU9MjAxCityZXNvdXJjZS5jb250ZW50OiBudWxsCitodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMAorcmVz
b3VyY2UuY29udGVudDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE2NWNiMWQ3MmRjZDc0MGE0OTkyZGVhZTRiNWI3YTcxMDFjMGI2NWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbApAQCAtMCwwICsxLDk3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvYWREYXRhKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgY29uc29sZS5sb2coIlRoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biBhcyB3aW5kb3cu
aW50ZXJuYWxzIGlzIG5vdCBhdmFpbGFibGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgLy8gRWFjaCAnKicgc3ltYm9sIHdpbGwgdXNlIHR3byBieXRlcyBpbiBTdHJpbmcgb2JqZWN0
LCBoZW5jZSBtdWx0aXBseWluZyBieSB0d28uCisgICAgaW50ZXJuYWxzLnNldEluc3BlY3RvclJl
c291cmNlc0RhdGFTaXplTGltaXRzKGRvY3VtZW50LCAyKjMwMCwgMioyMDApOworCisgICAgLy8g
SGVyZSB3ZSB0ZXN0IHJlcGxhY2VtZW50IGxvZ2ljLiBXZSBzYXZlIGZpcnN0IHR3byByZXNvdXJj
ZXMgY29udGVudCwKKyAgICAvLyBkaXNjYXJkIHRoaXJkIHJlc291cmNlIGNvbnRlbnQgb25jZSB3
ZSBzZWUgaXRzIHNpemUgZXhjZWVkcyBsaW1pdCwKKyAgICAvLyBhbmQgZmluYWxseSByZXBsYWNl
IGZpcnN0IHJlc291cmNlIGNvbnRlbnQgd2l0aCB0aGUgbGFzdCByZXNvdXJjZSBjb250ZW50Lgor
CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MjAwIiwgdHJ1
ZSwgeGhyTG9hZGVkMSk7Cit9CisKK2Z1bmN0aW9uIHhockxvYWRlZDEoKQoreworICAgIGRvWEhS
KCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMCIsIHRydWUsIHhockxvYWRl
ZDIpOworfQorCitmdW5jdGlvbiB4aHJMb2FkZWQyKCkKK3sKKyAgICBkb1hIUigiR0VUIiwgInJl
c291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDEiLCB0cnVlLCB4aHJMb2FkZWQzKTsKK30KKwor
ZnVuY3Rpb24geGhyTG9hZGVkMygpCit7CisgICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3NpemU9MTAwIiwgdHJ1ZSwgYWxsWEhSc0xvYWRlZCk7Cit9CisKK2Z1bmN0aW9u
IGFsbFhIUnNMb2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLCBzdGVwMSk7CisgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworCisgICAgZnVuY3Rpb24gZHVt
cFJlc291cmNlKHJlc291cmNlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghcmVzb3Vy
Y2UpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQocmVzb3VyY2UudXJsKTsKKworICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9h
ZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJl
c291cmNlLmNvbnRlbnQ6ICIgKyByZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgIH0KKworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250
ZW50TG9hZGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gNF07CisgICAgICAg
IGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5s
ZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJlc291cmNlLCBzdGVwMyk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDJdOworICAgICAgICBkdW1wUmVzb3VyY2UocmVz
b3VyY2UsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2Vz
W1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gMV07CisgICAg
ICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXA1KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cisg
ICAgPHA+IFRlc3RzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIGxvZ2ljIGZvciBYSFIgY29udGVudCBy
ZXBsYWNlbWVudC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1i
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYmZmMGY3NTNiNDJmN2JiYjI4ODQwZWFlNGE1
NzdlMjVlZDVhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2NjogRG9uZS4KK1Rlc3RzIHRoYXQgbmV0d29yayBw
YW5lbCBzaG93cyBjb250ZW50IGZvciBlbWJlZCBvYmplY3RzLgorCisKK2h0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1h
Z2UKK3Jlc291cmNlLnR5cGU6IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3Rpbmcg
Y29udGVudDogdW5kZWZpbmVkCityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29u
dGVudDogbnVsbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9dXRmOC54bWwmbWltZXR5cGU9dGV4dC9odG1s
JmNoYXJzZXQ9dXRmOAorcmVzb3VyY2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUg
cmVxdWVzdGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVx
dWVzdGluZyBjb250ZW50OiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/Pgor
PHJvb3Q+CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0
dGVycy48L3V0Zjg+Cis8L3Jvb3Q+CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwP2ZpbGVuYW1lPWNwMTI1MS54bWwmbWlt
ZXR5cGU9dGV4dC9odG1sJmNoYXJzZXQ9Y3AxMjUxCityZXNvdXJjZS50eXBlOiA4CityZXNvdXJj
ZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVzb3VyY2Uu
Y29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDw/eG1sIHZlcnNpb249JzEuMCcgZW5j
b2Rpbmc9J2NwMTI1MSc/PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XQodCh0JVTUyAtIFRoZXNlICdD
Q0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgorCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9m
aWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT1hcHBsaWNhdGlvbi94bWwKK3Jlc291cmNlLnR5cGU6
IDgKK3Jlc291cmNlLmNvbnRlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29udGVudDogdW5kZWZpbmVk
CityZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogPD94bWwgdmVyc2lv
bj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KKzxyb290PgorICA8dXRmOD5TVdCh0KHQlVNTIC0g
VGhlc2UgJ0NDRScgYXJlIGN5cmlsbGljIGxldHRlcnMuPC91dGY4PgorPC9yb290PgorCitodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3BsdWdpbi1kYXRh
LnBocD9maWxlbmFtZT1jcDEyNTEueG1sJm1pbWV0eXBlPWFwcGxpY2F0aW9uL3htbAorcmVzb3Vy
Y2UudHlwZTogOAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiB1
bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiA8P3ht
bCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdjcDEyNTEnPz4KKzxyb290PgorICA8Y3AxMjUxPlNV
0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBhcmUgY3lyaWxsaWMgbGV0dGVycy48L2NwMTI1MT4KKzwv
cm9vdD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNTUyMzkzOGE2ZThh
ZjQ2NmExNjc5ZDgwZmQ1YWQzYTg0YmU4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1iZWQuaHRtbApAQCAtMCww
ICsxLDEzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgbG9hZGVkRmlyc3RVUkwgPSBmYWxzZTsK
K2Z1bmN0aW9uIHN0cmVhbUxvYWRlZCgpCit7CisgICAgaWYgKGxvYWRlZEZpcnN0VVJMKQorICAg
ICAgICByZXR1cm47CisKKyAgICBsb2FkZWRGaXJzdFVSTCA9IHRydWU7CisgICAgbG9hZFVSTHMo
KTsKK30KKwordmFyIHNuaWZmZXJJbnN0YWxsZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIG9uU25pZmZl
ckluc3RhbGxlZCgpCit7CisgICAgc25pZmZlckluc3RhbGxlZCA9IHRydWU7CisgICAgbG9hZFVS
THMoKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTHMoKQoreworICAgIGlmICghc25pZmZlckluc3Rh
bGxlZCB8fCAhbG9hZGVkRmlyc3RVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2lu
ZG93LmludGVybmFscykgeworICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3Qg
YmUgcnVuIGFzIHdpbmRvdy5pbnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRvZ2V0
aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0ZXN0cywgd2Ug
bmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAgaW50ZXJuYWxz
LnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKGRvY3VtZW50LCAxMCAqIDEwMDAg
KiAxMDAwLCAxMDAwICogMTAwMCk7CisKKyAgICAvLyBCaW5hcnkgY29udGVudCBzaG91bGQgbm90
IGJlIGF2YWlsYWJsZS4KKyAgICBwbGcuZ2V0VVJMTm90aWZ5KCJyZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3R5cGU9aW1hZ2UiLCBudWxsLCAibG9hZFVSTDIiKTsKK30KKworZnVuY3Rpb24gbG9hZFVS
TDIoKQoreworICAgIC8vIFRoaXMgcmVzb3VyY2UgY29udGVudCBzaG91bGQgYmUgY29ycmVjdGx5
IGRlY29kZWQuCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBo
cD9maWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD11dGY4IiwgbnVs
bCwgImxvYWRVUkwzIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRVUkwzKCkKK3sKKyAgICAvLyBUaGlz
IHJlc291cmNlIGNvbnRlbnQgc2hvdWxkIGJlIGNvcnJlY3RseSBkZWNvZGVkLgorICAgIHBsZy5n
ZXRVUkxOb3RpZnkoInJlc291cmNlcy9wbHVnaW4tZGF0YS5waHA/ZmlsZW5hbWU9Y3AxMjUxLnht
bCZtaW1ldHlwZT10ZXh0L2h0bWwmY2hhcnNldD1jcDEyNTEiLCBudWxsLCAibG9hZFVSTDQiKTsK
K30KKworZnVuY3Rpb24gbG9hZFVSTDQoKQoreworICAgIC8vIFRoaXMgcmVzb3VyY2UgY29udGVu
dCBzaG91bGQgYmUgY29ycmVjdGx5IGRlY29kZWQuCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVz
b3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxlbmFtZT11dGY4LnhtbCZtaW1ldHlwZT1hcHBsaWNh
dGlvbi94bWwiLCBudWxsLCAibG9hZFVSTDUiKTsKK30KKworZnVuY3Rpb24gbG9hZFVSTDUoKQor
eworICAgIC8vIFRoaXMgcmVzb3VyY2UgY29udGVudCBzaG91bGQgYmUgY29ycmVjdGx5IGRlY29k
ZWQuCisgICAgcGxnLmdldFVSTE5vdGlmeSgicmVzb3VyY2VzL3BsdWdpbi1kYXRhLnBocD9maWxl
bmFtZT1jcDEyNTEueG1sJm1pbWV0eXBlPWFwcGxpY2F0aW9uL3htbCIsIG51bGwsICJhbGxVUkxz
TG9hZGVkIik7Cit9CisKK2Z1bmN0aW9uIGFsbFVSTHNMb2FkZWQoKQoreworICAgIGNvbnNvbGUu
bG9nKCJEb25lLiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3Nh
Z2UiLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgib25TbmlmZmVy
SW5zdGFsbGVkKCkiKTsKKworICAgIGZ1bmN0aW9uIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlLnVy
bCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsg
cmVzb3VyY2UudHlwZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJj
ZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZS5jb250ZW50
KTsKKworICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVx
dWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UuY29udGVudCk7CisgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICB9CisKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29u
dGVudExvYWRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAg
ICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDVdOworICAgICAg
ICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dGVwMigpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMu
bGVuZ3RoIC0gNF07CisgICAgICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDMpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKKyAgICAgICAgZHVtcFJlc291cmNlKHJl
c291cmNlLCBzdGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
c1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDJdOworICAg
ICAgICBkdW1wUmVzb3VyY2UocmVzb3VyY2UsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdGVwNSgpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXMubGVuZ3RoIC0gMV07CisgICAgICAgIGR1bXBSZXNvdXJjZShyZXNvdXJjZSwgc3RlcDYpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgdGhhdCBuZXR3b3JrIHBhbmVsIHNob3dz
IGNvbnRlbnQgZm9yIGVtYmVkIG9iamVjdHMuPC9wPgorICAgIDxlbWJlZCBuYW1lPSJwbGciIHR5
cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHNyYz0icmVzb3VyY2VzL3Jl
c291cmNlLnBocD90eXBlPWltYWdlIiBvbnN0cmVhbWxvYWQ9InN0cmVhbUxvYWRlZCgpIj48L2Vt
YmVkPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMt
ZXhwZWN0ZWQudHh0CmluZGV4IDQ1ZTU1NTEzOTk4ZWIxNTUxZjA3ZjA5NGFiNTJhZThlYzA5MmNm
M2IuLjU2NWZkNzc4NTk3Y2EwZTQ5Mzk2YTMwZTM1ZTk5ZTFmMDJjMWFlNTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5
bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDEzOiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBE
b25lLgogVGVzdHMgWEhSIG5ldHdvcmsgcmVzb3VyY2UgdHlwZSBhbmQgY29udGVudCBmb3IgYXN5
bmNocm9ub3VzIHJlcXVlc3RzLiBCdWcgNjEyMDUKIAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHIt
YXN5bmMuaHRtbAppbmRleCAzMjYyMWNiNTE2OGRlNjdjNzYzODczMjZhNTQyMzU1YWQ1OTBiMDQ2
Li5iZDhiMjQwODEwZGExN2E4ZDAzMTE3Mjk1ZjQ1MDRjYzJjNGY4Y2Q5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5j
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLXhoci1hc3luYy5odG1sCkBAIC01LDYgKzUsMTQgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBs
b2FkRGF0YSgpCiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGNvbnNv
bGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2luZG93LmludGVybmFscyBpcyBu
b3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFNpbmNlIHRo
aXMgdGVzdCBjb3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFja2Vu
ZCBjYWNoZQorICAgIC8vIHRlc3RzLCB3ZSBuZWVkIHRvIHJlc2V0IHNpemUgbGltaXRzIHRvIGRl
ZmF1bHQgb25lcy4KKyAgICBpbnRlcm5hbHMuc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVM
aW1pdHMoZG9jdW1lbnQsIDEwICogMTAwMCAqIDEwMDAsIDEwMDAgKiAxMDAwKTsKKwogICAgIGRv
WEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocCIsIHRydWUsIHJlc291cmNlTG9hZGVk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy1leHBlY3RlZC50eHQKaW5kZXgg
MzQ0MzQ3YzBlNTFlODIxYTVjNmMzODY3NDlhM2FjMTNiM2Y1ZGY3Mi4uYmU4NGY0MzkzMWFiZjky
ZDFmZmJiMzkzZjUyYWQ0MDRkY2U4YmUwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5
bmMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEz
OiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBEb25lLgogVGVzdHMgWEhSIG5ldHdv
cmsgcmVzb3VyY2UgdHlwZSBhbmQgY29udGVudCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuIEJ1
ZyA2MTIwNQogCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL3Jlc291cmNlLnBocApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbAppbmRleCA4ZjI0ODBl
N2I4MWJmYjAzOGNlZDZkOGUwODllMWRhYWI1NWQ4OTEzLi4wMGQyODlkZGFmZDc2NzlkOTliYmRm
NjJmYzY4MTE3MWU5MGI5MGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMuaHRtbApAQCAtNSw2
ICs1LDE0IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gbG9hZERhdGEoKQogeworICAgIGlmICghd2lu
ZG93LmludGVybmFscykgeworICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3Qg
YmUgcnVuIGFzIHdpbmRvdy5pbnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRvZ2V0
aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKKyAgICAvLyB0ZXN0cywgd2Ug
bmVlZCB0byByZXNldCBzaXplIGxpbWl0cyB0byBkZWZhdWx0IG9uZXMuCisgICAgaW50ZXJuYWxz
LnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKGRvY3VtZW50LCAxMCAqIDEwMDAg
KiAxMDAwLCAxMDAwICogMTAwMCk7CisKICAgICBkb1hIUigiR0VUIiwgInJlc291cmNlcy9yZXNv
dXJjZS5waHAiLCBmYWxzZSwgcmVzb3VyY2VMb2FkZWQpOwogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9jcDEyNTEueG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvY3Ax
MjUxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMjI4NWYzNjBiY2UzZTVkOTNmM2MyZDZlMGVjNGMzMGNiNDk0
YTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvY3AxMjUxLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNp
b249JzEuMCcgZW5jb2Rpbmc9J2NwMTI1MSc/PgorPHJvb3Q+CisgIDxjcDEyNTE+U1XR0cVTUyAt
IFRoZXNlICdDQ0UnIGFyZSBjeXJpbGxpYyBsZXR0ZXJzLjwvY3AxMjUxPgorPC9yb290PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvcGx1Z2luLWRhdGEucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcGx1Z2luLWRhdGEucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMWQ5ZThlOWQ5NzM2
MjNiYjFmNTJhYjQ0ZDA2NzUyZmJiY2FkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9wbHVnaW4tZGF0YS5waHAK
QEAgLTAsMCArMSwxNSBAQAorPD9waHAKKyAgICAkbWltZXR5cGUgPSAkX0dFVFsibWltZXR5cGUi
XTsKKyAgICAkZmlsZW5hbWUgPSAkX0dFVFsiZmlsZW5hbWUiXTsKKyAgICAkY2hhcnNldCA9ICRf
R0VUWyJjaGFyc2V0Il07CisKKyAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMg
MTY6MDA6MDAgR01UIik7CisgICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8t
Y2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOworICAgIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIp
OworICAgIGlmICgkY2hhcnNldCkKKyAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAk
bWltZXR5cGUgLiAiOyBjaGFyc2V0PSIgLiAkY2hhcnNldCk7CisgICAgZWxzZQorICAgICAgICBo
ZWFkZXIoIkNvbnRlbnQtVHlwZTogIiAuICRtaW1ldHlwZSk7CisKKyAgICByZWFkZmlsZSgkZmls
ZW5hbWUpOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocAppbmRleCA5ZTU2MDdjMTgy
Yzg2NWVlMjMyYmY5MThiYjBmODg4OGFkZjRjZjE3Li4zZTFmMTg1ZTFmZGUyNjhiMmViZmVmYTFk
MDAxN2RjMDkzNTE3ZWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCkBAIC0yNiw3
ICsyNiw3IEBACiAgICAgZWxzZSBpZiAoJHR5cGUgPT0gImltYWdlIikKICAgICAgICAgaGVhZGVy
KCJDb250ZW50LVR5cGU6IGltYWdlL3BuZyIpOwogICAgIGVsc2UKLSAgICAgICAgaGVhZGVyKCJD
b250ZW50LVR5cGU6IHRleHQvaHRtbCIpOworICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTog
dGV4dC9wbGFpbiIpOwogCiAgICAgIyBGbHVzaCBoZWFkZXJzIGFuZCBzbGVlcCBib2ZvcmUgc2Vu
ZGluZyByZXNwb25zZQogICAgIGlmICgkc2VuZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvdXRmOC54bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy91dGY4LnhtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wN2VlNDgxZmE4MDc0YWNiNzUzYzNjN2VmNTQyMTlmZDkyZjEwNDYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvdXRmOC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29k
aW5nPSd1dGYtOCc/PgorPHJvb3Q+CisgIDx1dGY4PlNV0KHQodCVU1MgLSBUaGVzZSAnQ0NFJyBh
cmUgY3lyaWxsaWMgbGV0dGVycy48L3V0Zjg+Cis8L3Jvb3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMjY1ZDE3YWFl
MmVkNTU0OGRiZWFhYTYxMTgyM2VmYjE5MjU4MjgwMy4uY2NmOWVmZTYwMzkyYzdkMTA1YmZjY2Ri
M2VkNDZkNTM3ZmViNTE5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNjU1LDYgKzY1NSwxMCBAQCBXT05URklYIFNL
SVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucyA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtaGVhZGVycy5odG1sID0gRkFJTAogV09OVEZJWCBTS0lQ
IDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QuaHRt
bCA9IEZBSUwKIAorLy8gVGhlcmUgaXMgbm8gZW5vdWdoIHBsdWdpbnMgc3VwcG9ydCBpbiBEUlQK
K1dPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJl
ZC5odG1sID0gRkFJTAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQtZW1iZWQuaHRtbCA9IEZBSUwKKwogLy8gSW5z
cGVjdG9yIHRlc3RzIGluIERlYnVnIGJ1aWxkIGFyZSB2ZXJ5IHNsb3cuCiBCVUdfRFJUIFdJTiBM
SU5VWCBERUJVRyBTTE9XIDogaW5zcGVjdG9yID0gUEFTUwogQlVHX0RSVCBXSU4gTElOVVggREVC
VUcgU0xPVyA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yID0gUEFTUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiNDc2
YzNkZmJiOTZkZmQ4YTc5ZjFiYjljNjEzYmUxZTk5Nzk3MTcuLjYwMDFiNmJlNjZjYzgzZTJkYmQ4
MDdlNTY0NjdmMTZlM2Q2OWMyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxMS0w
Ni0yOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG93
IGNvbnRlbnQgZm9yIHBsdWdpbiByZXF1ZXN0cyBpbiBuZXR3b3JrIHBhbmVsLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwODAKKworICAgICAgICBU
ZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFj
ZW1lbnQtZW1iZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQteGhyLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbWJlZC5odG1sCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVEYXRhSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFhIUkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50
ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJl
c291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3Vy
Y2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjph
cHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZURlY29kZURhdGFUb0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlTm9EYXRh
Rm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
ZW5zdXJlRnJlZVNwYWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6Omhhc0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6Y29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IGNvbnRlbnRFbmNvZGVkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmlld1ZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3Vmlldy5wcm90b3R5cGUuY29udGVudExvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3Vmlldy5wcm90b3R5cGUu
X2NyZWF0ZUVtcHR5Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3
Vmlldy5wcm90b3R5cGUuX2NyZWF0ZVByZXZpZXdWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcuaGFzVGV4dENvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCiAyMDExLTA2LTI4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBkNzEyOTViOTE5YTY4YzlkN2FmNzNhNGE4ZDI2NjM1MjQwNmMyZTM1Li5iNmEzZGIxODQ4
MzAwN2MzYWZlN2FhNzhhNjc4NzVhNTg5OTZiMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MTMwMCw2ICsxMzAwLDcgQEAgX19aTks3V2ViQ29yZThEb2N1bWVudDE2ZGFzaGJvYXJkUmVnaW9u
c0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MjBjYWNoZURvY3VtZW50RWxlbWVudEV2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNX
VEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKK19fWk5LN1dlYkNvcmU4
RG9jdW1lbnQ0cGFnZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NmRvbWFpbkV2CiBfX1pOSzdX
ZWJDb3JlOERvY3VtZW50NmxvYWRlckV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y3Q0dQb2lu
dEV2CkBAIC0xNTc5LDYgKzE1ODAsNyBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEVOM1dU
RjEwUGFzc093blB0cklOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RUVFCiBfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nRXYKIF9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3c3RhcnRVc2VySW5pdGlhdGVkUHJvZmls
aW5nRXYKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXI0c2hvd0V2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgog
X19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTJtb3ZlV2luZG93QnlF
ZmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAppbmRleCAwY2YzZThmNjJkZmMwMGQ4YzYxMmE4Mjk3OGRjYWJhOWI0MDNlZTg0Li4zNGJkMzQ5
MzUxZjM0MzBjNjUxNjNiMjhjNmU5YmIxNjY4MjQzOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00ODQsNiArNDg0LDExIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdW1lKCkKIAogI2VuZGlmCiAKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxz
KGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3Vy
Y2VDb250ZW50U2l6ZSkKK3sKKyAgICBtX3Jlc291cmNlQWdlbnQtPnNldFJlc291cmNlc0RhdGFT
aXplTGltaXRzRnJvbUludGVybmFscyhtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIG1heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDc5OGViYmE1NjU5M2I3NWViMmRiMWJk
NjM5ZWY0NjM2OWUyMjE5MjAuLmViNDIxZTUxYmQ3NTAzZGJiMmVhNjFmZjUzMzQ0ZWZlNDAxMGNk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtMTE5LDYgKzExOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogI2VuZGlm
CiAKKyAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhpbnQg
bWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQb3N0V29ya2VyTm90aWZp
Y2F0aW9uVG9Gcm9udGVuZFRhc2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTllMmNhYTgwYmJkMjE5Y2Fj
OTlhZjdmYzc5ZWRhNzViMmIwODY3MS4uMmRhMTY3ZGYyMDk4NjJkNjlkNWNjYjRiNzhhZDZmZDlk
OGVkMDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQ5MiwxMCArNDkyLDEwIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiBmcmFt
ZSwgRG9jdW1lCiAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VCdXRDYW5jZWxlZEltcGwo
ZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKEluc3BlY3Rv
clJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpCi0gICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwg
ZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAyMGIwZWI4MjcxMDQ4N2U5
Y2MyOGFiN2M3NmY1MmUxNDU4ODNlNzJjLi5lM2UzMjc0YzhlMTY4N2MyN2MwY2M1NGZkNjI5NDBi
M2RkYzQyMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZyYW1lKiwgRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZChGcmFtZSosIERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5SWdub3JlKEZyYW1l
KiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aChG
cmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwg
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVk
SW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9s
aWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250
aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAg
ICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1
bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CkBAIC03NjQsMTEgKzc2NCwxMSBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShGcmFt
ZSogZnJhbWUsIERvYwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1l
KiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICBkaWRSZWNlaXZlQ29u
dGVudExlbmd0aEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAyOWVjMTVhNDFlZjY4ZjE0ZGY1ZDljM2Fk
OGYxNzRiYzIyYmM0NTgwLi5hMTQzZmNhZDEwNWQ4NmU4NTAxNThjNmU2ZGUzYjQ5MDBlOWM0Yjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCkBAIC0yNTAsMTggKzI1MCwyMSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQog
ICAgICAgICBlbHNlIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5IHx8IG1fcmVzb3VyY2Vz
RGF0YS0+cmVzb3VyY2VUeXBlKGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhS
UmVzb3VyY2UpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNv
dXJjZTsKIAotICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQoaWRlbnRp
ZmllciwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UudXJs
KCkpOworICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQoaWRlbnRpZmll
ciwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UpOwogICAg
IH0KICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShpZGVudGlmaWVyLCB0eXBl
KTsKICAgICBtX2Zyb250ZW5kLT5yZXNwb25zZVJlY2VpdmVkKHN0YXRpY19jYXN0PGludD4oaWRl
bnRpZmllciksIGN1cnJlbnRUaW1lKCksIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBl
U3RyaW5nKHR5cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRl
ZCB0aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGgg
Zm9sbG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQotICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8g
Y2FsbHMgdG8gZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGggZnJvbSB0aGUgbmV0d29yayBzdGFjay4K
KyAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20g
dGhlIG5ldHdvcmsgc3RhY2suCiAgICAgaWYgKGNhY2hlZFJlc291cmNlU2l6ZSAmJiByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkKLSAgICAgICAgZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoaWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VTaXplLCAwKTsKKyAgICAgICAgZGlkUmVjZWl2
ZURhdGEoaWRlbnRpZmllciwgMCwgY2FjaGVkUmVzb3VyY2VTaXplLCAwKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKKyAgICBpZiAoZGF0YSAmJiBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
VHlwZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UpCisg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEoaWRlbnRpZmllciwg
ZGF0YSwgZGF0YUxlbmd0aCk7CisKICAgICBtX2Zyb250ZW5kLT5kYXRhUmVjZWl2ZWQoc3RhdGlj
X2Nhc3Q8aW50PihpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZGF0YUxlbmd0aCwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCkBAIC0yNzAsNiArMjczLDggQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnQKICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUoaWRlbnRpZmllcikg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlKQogICAgICAgICBtX3Jlc291
cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGlkZW50aWZpZXIsIGxvYWRlci0+ZnJh
bWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLCBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CiAKKyAgICBtX3Jlc291cmNl
c0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29udGVudChpZGVudGlmaWVyKTsKKwogICAgIGlmICgh
ZmluaXNoVGltZSkKICAgICAgICAgZmluaXNoVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKQEAgLTI5
Niw3ICszMDEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxTY3Jp
cHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYwogCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgbV9yZXNvdXJjZXNEYXRhLT5h
ZGRSZXNvdXJjZUNvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKKyAgICBtX3Jlc291
cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwog
fQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVYSFJSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC0zOTcsNiArNDAyLDEyIEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c2V0QmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVy
cm9yU3RyaW5nKiwKICAgICByZXR1cm4gbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50
U3RhdGU6OmJhY2tncm91bmRFdmVudHNDb2xsZWN0aW9uRW5hYmxlZCwgZW5hYmxlZCk7CiB9CiAK
Ky8vIGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgbGF5b3V0IHRlc3QgcHVycG9zZXMuCit2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUlu
dGVybmFscyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNpbmds
ZVJlc291cmNlQ29udGVudFNpemUpCit7CisgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJj
ZXNEYXRhU2l6ZUxpbWl0cyhtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIG1heGltdW1TaW5n
bGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewogICAgIGVuYWJsZSgpOwpAQCAtNDM2LDcgKzQ0Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aW5pdGlhbGl6ZUJhY2tncm91bmRDb2xs
ZWN0aW9uKCkKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRl
bnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFN0
cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkKIHsKLSAgICBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEoaWRlbnRpZmllcik7CisgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBj
b25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKGlkZW50aWZpZXIpOwog
ICAgIGlmICghcmVzb3VyY2VEYXRhKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyByZXNv
dXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIgZm91bmQiOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRl
eCBiNDQxMGIzNzVjYWYxZDJlNmZhNjJlZmU5OTRjYWViYjljZTE5MTE2Li5iODAyYWY0M2Q2ZTQ5
YTFlZTUwNTU0M2I5MTEwYWQ0Y2I0OGVkOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwpAQCAtMTEzLDYgKzExMyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGlzQmFja2dyb3VuZEV2ZW50c0NvbGxlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwg
Ym9vbCogZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRXZlbnRzQ29sbGVjdGlvbkVu
YWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpOwogCisgICAgLy8gY2FsbGVkIGZyb20g
SW50ZXJuYWxzIGZvciBsYXlvdXQgdGVzdCBwdXJwb3Nlcy4KKyAgICB2b2lkIHNldFJlc291cmNl
c0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRT
aXplLCBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworCiAgICAgLy8gQ2Fs
bGVkIGZyb20gZnJvbnRlbmQKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNTg4ZDFlYjQwNGY3ZTY5ZjA4OWQzMTI5
N2I3MjBhNjlkMDJhZWY5Yy4uMzQ2YjI5OWZjMTY5ZGNkMWQwZTU0OTZmZDU3YWMxNTliYTI3YjY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC0yOSw0OCArMjksOTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogCisjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBuYW1lc3BhY2UgewogLy8gMTBNQgog
c3RhdGljIGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAw
OworCisvLyAxTUIKK3N0YXRpYyBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUg
PSAxMDAwICogMTAwMDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKIC8vIFJlc291cmNl
RGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKLSAgICAs
IG1faGFzQ29udGVudChmYWxzZSkKICAgICAsIG1faXNDb250ZW50UHVyZ2VkKGZhbHNlKQogICAg
ICwgbV90eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKIHsKIH0KIAotU3Ry
aW5nIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNvbnRlbnQoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRDb250ZW50KGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKIHsKLSAgICByZXR1cm4gbV9oYXNDb250ZW50ID8gbV9jb250ZW50QnVpbGRl
ci50b1N0cmluZygpIDogU3RyaW5nKCk7CisgICAgQVNTRVJUKCFoYXNEYXRhKCkpOworICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKKyAgICBtX2NvbnRlbnQgPSBjb250ZW50OwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZENvbnRlbnQoY29uc3Qg
U3RyaW5nJiBjb250ZW50KQordW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6cHVyZ2VDb250ZW50KCkKIHsKLSAgICBtX2NvbnRlbnRCdWlsZGVyLmFwcGVuZChjb250
ZW50KTsKLSAgICBtX2hhc0NvbnRlbnQgPSB0cnVlOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CisgICAgaWYgKGhhc0RhdGEoKSkgeworICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Cisg
ICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZm
ZXIgPSBudWxscHRyOworICAgIH0KKworICAgIGlmIChoYXNDb250ZW50KCkpIHsKKyAgICAgICAg
QVNTRVJUKCFoYXNEYXRhKCkpOworICAgICAgICByZXN1bHQgPSAyICogbV9jb250ZW50Lmxlbmd0
aCgpOworICAgICAgICBtX2NvbnRlbnQgPSBTdHJpbmcoKTsKKyAgICB9CisgICAgbV9pc0NvbnRl
bnRQdXJnZWQgPSB0cnVlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXVuc2lnbmVkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnB1cmdlQ29udGVudCgpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmNyZWF0ZURlY29kZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IG1fY29udGVudEJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCku
bGVuZ3RoKCk7Ci0gICAgbV9jb250ZW50QnVpbGRlci5jbGVhcigpOwotICAgIG1faXNDb250ZW50
UHVyZ2VkID0gdHJ1ZTsKLSAgICBtX2hhc0NvbnRlbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gbGVu
Z3RoOworICAgIGlmICghdGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZGVj
b2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNv
ZGluZ05hbWUpOworICAgIGVsc2UgaWYgKG1pbWVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAg
ICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwg
IklTTy04ODU5LTEiKTsKKyAgICBlbHNlIGlmIChtaW1lVHlwZSA9PSAidGV4dC9odG1sIikKKyAg
ICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwi
LCAiVVRGLTgiKTsKKyAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlw
ZShtaW1lVHlwZSkpIHsKKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgbV9kZWNvZGVyLT51c2VMZW5pZW50
WE1MRGVjb2RpbmcoKTsKKyAgICB9Cit9CisKK2ludCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCit7CisgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOworICAgIGlmICghbV9kYXRhQnVm
ZmVyKQorICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOworfQorCitpbnQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCit7CisgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwor
ICAgIGludCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgbV9jb250ZW50
ID0gbV9kZWNvZGVyLT5kZWNvZGUobV9kYXRhQnVmZmVyLT5kYXRhKCksIG1fZGF0YUJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiAyICogbV9j
b250ZW50Lmxlbmd0aCgpIC0gZGF0YUxlbmd0aDsKIH0KIAogLy8gTmV0d29ya1Jlc291cmNlc0Rh
dGEKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpOZXR3b3JrUmVzb3VyY2VzRGF0YSgpCiAgICAgOiBt
X2NvbnRlbnRTaXplKDApCisgICAgLCBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZShtYXhp
bXVtUmVzb3VyY2VzQ29udGVudFNpemUpCisgICAgLCBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNv
bnRlbnRTaXplKG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogewogfQogCkBAIC04
NSwxMyArMTM2LDE0IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRl
ZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgbV9pZGVudGlmaWVy
VG9SZXNvdXJjZURhdGFNYXAuc2V0KGlkZW50aWZpZXIsIG5ldyBSZXNvdXJjZURhdGEoaWRlbnRp
ZmllciwgbG9hZGVySWQpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9u
c2VSZWNlaXZlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNwb25z
ZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBSZXNvdXJjZURhdGEq
IHJlc291cmNlRGF0YSA9IG1faWRlbnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlm
aWVyKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc291
cmNlRGF0YS0+c2V0RnJhbWVJZChmcmFtZUlkKTsKLSAgICByZXNvdXJjZURhdGEtPnNldFVybCh1
cmwpOworICAgIHJlc291cmNlRGF0YS0+c2V0VXJsKHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXNv
dXJjZURhdGEtPmNyZWF0ZURlY29kZXIocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4
dEVuY29kaW5nTmFtZSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVz
b3VyY2VUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgSW5zcGVjdG9yUGFnZUFnZW50OjpS
ZXNvdXJjZVR5cGUgdHlwZSkKQEAgLTExMCwyMSArMTYyLDU0IEBAIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6UmVzb3VyY2VUeXBlIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZVR5cGUodW5zaWdu
ZWQgbG9uCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpz
ZXRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZp
ZXJUb1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURh
dGEpCiAgICAgICAgIHJldHVybjsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IDIgKiBjb250ZW50Lmxl
bmd0aCgpOworICAgIGlmIChkYXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250
ZW50U2l6ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVu
dFB1cmdlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShjb250
ZW50Lmxlbmd0aCgpKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQdXJnZWQoKSkgewotICAg
ICAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQotICAgICAgICAgICAgbV9pZGVu
dGlmaWVyc0RlcXVlLmFwcGVuZChpZGVudGlmaWVyKTsKLSAgICAgICAgcmVzb3VyY2VEYXRhLT5h
cHBlbmRDb250ZW50KGNvbnRlbnQpOwotICAgICAgICBtX2NvbnRlbnRTaXplICs9IGNvbnRlbnQu
bGVuZ3RoKCk7CisgICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3Vy
Y2VEYXRhLT5pc0NvbnRlbnRQdXJnZWQoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJzRGVxdWUu
YXBwZW5kKGlkZW50aWZpZXIpOworICAgICAgICByZXNvdXJjZURhdGEtPnNldENvbnRlbnQoY29u
dGVudCk7CisgICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKICAgICB9CiB9CiAK
K3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit7Cisg
ICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0
YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZURhdGEpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+ZGVjb2RlcigpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YUxlbmd0aCA+IG1fbWF4
aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCisgICAgICAgIG1fY29udGVudFNpemUgLT0g
cmVzb3VyY2VEYXRhLT5wdXJnZUNvbnRlbnQoKTsKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5pc0Nv
bnRlbnRQdXJnZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbnN1cmVGcmVlU3BhY2Uo
ZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50UHVyZ2VkKCkpIHsKKyAgICAg
ICAgbV9pZGVudGlmaWVyc0RlcXVlLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICAgICAgcmVzb3Vy
Y2VEYXRhLT5hcHBlbmREYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnRT
aXplICs9IGRhdGFMZW5ndGg7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjptYXliZURlY29kZURhdGFUb0NvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorewor
ICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VEYXRhKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFyZXNvdXJjZURhdGEtPmhhc0RhdGEoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGVudFNpemUgKz0gcmVzb3VyY2VEYXRhLT5kZWNvZGVEYXRhVG9Db250ZW50
KCk7CisgICAgaW50IGRhdGFMZW5ndGggPSAyICogcmVzb3VyY2VEYXRhLT5jb250ZW50KCkubGVu
Z3RoKCk7CisgICAgaWYgKGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKQorICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+cHVyZ2VDb250
ZW50KCk7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZENhY2hlZFJlc291cmNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KQogewogICAgIGlmICghbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuY29udGFpbnMoaWRl
bnRpZmllcikpCkBAIC0xNDMsNyArMjI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBQYXMKICAg
ICByZXNvdXJjZURhdGEtPnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7CiB9
CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpkYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK05ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KGlkZW50aWZpZXIpOwogfQpAQCAtMTUxLDYgKzIzNiw3IEBAIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKHVuc2ln
bmVkIGxvbmcgaWRlCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJp
bmcmIHByZXNlcnZlZExvYWRlcklkKQogewogICAgIG1faWRlbnRpZmllcnNEZXF1ZS5jbGVhcigp
OworICAgIG1fY29udGVudFNpemUgPSAwOwogCiAgICAgUmVzb3VyY2VEYXRhTWFwIHByZXNlcnZl
ZE1hcDsKIApAQCAtMTY2LDExICsyNTIsMTkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
Y2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCkKICAgICBtX2lkZW50aWZpZXJU
b1Jlc291cmNlRGF0YU1hcC5zd2FwKHByZXNlcnZlZE1hcCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKGludCBtYXhpbXVtUmVzb3Vy
Y2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKK3sK
KyAgICBjbGVhcigpOworICAgIG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplOworICAgIG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZTsKK30KKworCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVOb0RhdGFGb3JJZGVudGlmaWVyKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcikKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1faWRl
bnRpZmllclRvUmVzb3VyY2VEYXRhTWFwLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAocmVzb3Vy
Y2VEYXRhKSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKKyAgICAg
ICAgaWYgKHJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpIHx8IHJlc291cmNlRGF0YS0+aGFzRGF0
YSgpKQogICAgICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29u
dGVudCgpOwogICAgICAgICBkZWxldGUgcmVzb3VyY2VEYXRhOwogICAgICAgICBtX2lkZW50aWZp
ZXJUb1Jlc291cmNlRGF0YU1hcC5yZW1vdmUoaWRlbnRpZmllcik7CkBAIC0xNzksMTAgKzI3Mywx
MCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVOb0RhdGFGb3JJZGVudGlmaWVy
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
ZW5zdXJlRnJlZVNwYWNlKGludCBzaXplKQogewotICAgIGlmIChzaXplID4gbWF4aW11bVJlc291
cmNlc0NvbnRlbnRTaXplKQorICAgIGlmIChzaXplID4gbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVu
dFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHdoaWxlIChzaXplID4gbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplIC0gbV9jb250ZW50U2l6ZSkgeworICAgIHdoaWxlIChzaXpl
ID4gbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgLSBtX2NvbnRlbnRTaXplKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNEZXF1ZS50YWtlRmly
c3QoKTsKICAgICAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJU
b1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZXNvdXJjZURh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CmluZGV4IDc4Y2RiZWJmYWE3M2Y2ODE4ZTgwMmZhMDM5YmFmOWVjNzVjNzlhOTUuLmQ1NDdhYTc5
MTFlNjkwODNkZTM4OTQyNzViNDI3ZWQ4M2RkMTg2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQzLDEyICs0MiwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAog
Y2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNsYXNzIFJlc291cmNl
RGF0YSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKICAgICBw
dWJsaWM6CiAgICAgICAgIFJlc291cmNlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbG9hZGVySWQpOwogCkBAIC02MSwzOCArNjIsNDcgQEAgcHVibGljOgogICAg
ICAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgdm9pZCBz
ZXRVcmwoY29uc3QgU3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0KIAotICAgICAgICBib29s
IGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KLSAgICAgICAgU3Ry
aW5nIGNvbnRlbnQoKTsKLSAgICAgICAgdm9pZCBhcHBlbmRDb250ZW50KGNvbnN0IFN0cmluZyYp
OworICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50Lmlz
TnVsbCgpOyB9CisgICAgICAgIFN0cmluZyBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50OyB9CisgICAgICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmKTsKIAogICAgICAg
ICBib29sIGlzQ29udGVudFB1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250ZW50UHVyZ2Vk
OyB9Ci0gICAgICAgIHZvaWQgc2V0SXNDb250ZW50UHVyZ2VkKGJvb2wgaXNDb250ZW50UHVyZ2Vk
KSB7IG1faXNDb250ZW50UHVyZ2VkID0gaXNDb250ZW50UHVyZ2VkOyB9CiAgICAgICAgIHVuc2ln
bmVkIHB1cmdlQ29udGVudCgpOwogCiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3Vy
Y2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICAgICAgdm9pZCBzZXRU
eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlw
ZTsgfQogCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0KICAgICAgICAgU3Ry
aW5nIHRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7
IH0KICAgICAgICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSkgeyBtX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9CiAK
KyAgICAgICAgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQorICAgICAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgICAgICBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7
IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsgfQorCiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2UuZ2V0KCk7IH0KICAg
ICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0K
KyAgICAgICAgaW50IGRhdGFMZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgaW50IGRlY29kZURh
dGFUb0NvbnRlbnQoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKICAg
ICAgICAgU3RyaW5nIG1fbG9hZGVySWQ7CiAgICAgICAgIFN0cmluZyBtX2ZyYW1lSWQ7CiAgICAg
ICAgIFN0cmluZyBtX3VybDsKLSAgICAgICAgYm9vbCBtX2hhc0NvbnRlbnQ7Ci0gICAgICAgIFN0
cmluZ0J1aWxkZXIgbV9jb250ZW50QnVpbGRlcjsKKyAgICAgICAgU3RyaW5nIG1fY29udGVudDsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBib29s
IG1faXNDb250ZW50UHVyZ2VkOwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNl
VHlwZSBtX3R5cGU7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAg
ICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAgICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBt
X2NhY2hlZFJlc291cmNlOwogICAgIH07CiAKQEAgLTEwMSwxNSArMTExLDE5IEBAIHB1YmxpYzoK
ICAgICB+TmV0d29ya1Jlc291cmNlc0RhdGEoKTsKIAogICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCk7Ci0gICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworICAgIHZvaWQgc2V0UmVzb3Vy
Y2VDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKKyAgICB2b2lkIG1heWJlQWRkUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHZvaWQgbWF5YmVEZWNv
ZGVEYXRhVG9Db250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRD
YWNoZWRSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENhY2hlZFJlc291cmNlKik7
CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lKTsKLSAgICBSZXNvdXJjZURhdGEqIGRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
KyAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
ICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmco
KSk7CiAKKyAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKGludCBtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7
CisKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVOb0RhdGFGb3JJZGVudGlmaWVyKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgYm9vbCBlbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpOwpA
QCAtMTE5LDYgKzEzMyw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVk
IGxvbmcsIFJlc291cmNlRGF0YSo+IFJlc291cmNlRGF0YU1hcDsKICAgICBSZXNvdXJjZURhdGFN
YXAgbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXA7CiAgICAgaW50IG1fY29udGVudFNpemU7
CisgICAgaW50IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOworICAgIGludCBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5k
ZXggMTBiYTI3NzZjZWI4OTI2YmZhYmY3ZWI4NTBmMGViYWFkMTkzZGQ4MS4uNGRmYzc1MTA4Y2Iz
YzI5NWNmYWY2MTBmYTJiNjc3NmM4MDU3ZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC03OTgsNiArNzk4LDExIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
OwogICAgIH0sCiAKKyAgICBnZXQgY29udGVudEVuY29kZWQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbnRlbnRFbmNvZGVkOworICAgIH0sCisKICAgICBnZXQgY29udGVudFRpbWVz
dGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRpbWVzdGFtcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VQcmV2
aWV3Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VQ
cmV2aWV3Vmlldy5qcwppbmRleCAzZmJjZTQ3OTM1MzE3NmI2MWM2MmQ3OTI2ZjEwMjJiZGU4OWY0
MjFiLi41OGM2MTdmYjZkNjQ5MDdjNjdhY2M4YTNkMjZlZTZjZWM4YWM0ZTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlUHJldmlld1ZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVByZXZp
ZXdWaWV3LmpzCkBAIC0zOSw3ICszOSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVByZXZpZXdW
aWV3LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5yZXNvdXJjZS5jb250
ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2VtcHR5VmlldykgewotICAgICAgICAgICAg
ICAgIHRoaXMuX2VtcHR5VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBubyBwcmV2aWV3IGF2YWlsYWJsZS4iKSk7
CisgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3ID0gdGhpcy5fY3JlYXRlRW1wdHlWaWV3
KCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHlWaWV3LnNob3codGhpcy5lbGVtZW50KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTQ3LDEzICs0NywxOCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VQcmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fZW1wdHlWaWV3LmRldGFjaCgpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9lbXB0eVZpZXc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3ZpZXcp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdmlldyA9IHRoaXMuX2NyZWF0ZUlubmVyVmlldygpOwot
ICAgICAgICAgICAgdGhpcy5fdmlldy5zaG93KHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICBp
ZiAoIXRoaXMuX3ByZXZpZXdWaWV3KQorICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3
ID0gdGhpcy5fY3JlYXRlUHJldmlld1ZpZXcoKTsKKyAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdW
aWV3LnNob3codGhpcy5lbGVtZW50KTsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfY3JlYXRl
SW5uZXJWaWV3OiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZUVtcHR5VmlldzogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGhpcyByZXF1ZXN0IGhhcyBubyBwcmV2aWV3IGF2YWlsYWJsZS4iKSk7
CisgICAgfSwKKyAgICAKKyAgICBfY3JlYXRlUHJldmlld1ZpZXc6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLnJlc291cmNlLmhhc0Vycm9yU3RhdHVzQ29kZSgpICYmIHRoaXMu
cmVzb3VyY2UuY29udGVudCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlSFRNTFZpZXcodGhpcy5yZXNvdXJjZSk7CkBAIC02Niw2ICs3MSw5IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5fcmVzcG9uc2VWaWV3LnNvdXJjZVZpZXcpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVz
cG9uc2VWaWV3LnNvdXJjZVZpZXc7CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5yZXNvdXJj
ZS5jYXRlZ29yeSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcikKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbXB0eVZpZXcoKTsKIAogICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5ub25Tb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhp
cy5yZXNvdXJjZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCA3MjI2ZjY3MzJlMzNlMDYxODJmMDcwMmU0Y2Vj
MGIxNDM2Y2I3NzhmLi4xMDZlOGIxMjUzOTkzOTQ5MDllODY2OTJlMTgyZmMwMzQ1ZWM4MWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmll
dy5qcwpAQCAtNTEsNiArNTEsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3Lmhhc1RleHRD
b250ZW50ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VDYXRlZ29yaWVzLnhocjoKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3Jp
ZXMuc3R5bGVzaGVldHM6CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5zcGVj
dG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjoKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmNv
bnRlbnQgJiYgIXJlc291cmNlLmNvbnRlbnRFbmNvZGVkOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCA3YzA5NDNiNTYwZDRmZDA3NTZjMzc1ZjJkMDBmYjIwZGIxNzAyOWJmLi41ODYzZjhjNzlm
NTkzMDRhMWFiN2UzMzFkMWE4ZDBhNGU1MzE0MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTEzNzgsNyArMTM3OCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKEtVUkwmIHVybCkKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXI7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJl
cXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5n
RGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBSZXNv
dXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSwgU3RyaW5nKCkpLCAtMSwg
LTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlKHVy
bCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsK
IAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTE3NzYsNyArMTc3Niw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhN
RTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29k
ZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEg
Z2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3Bv
bnNlLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwg
MCwgZXJyb3IpOworICAgICAgICAgICAgbm90aWZpZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2UsIDAs
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUo
aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKTsKQEAgLTI1ODksNyArMjU4OSw3IEBAIHVuc2lnbmVk
IGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1CiAjZW5kaWYKICAgICB9CiAgICAgaW50IGVuY29kZWREYXRhTGVuZ3Ro
ID0gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8gc3RhdGljX2Nhc3Q8aW50PihyZXNwb25z
ZS5yZXNvdXJjZUxvYWRJbmZvKCktPmVuY29kZWREYXRhTGVuZ3RoKSA6IC0xOwotICAgIG5vdGlm
aWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0
KCksIGlkZW50aWZpZXIsIHJlc3BvbnNlLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgs
IGVycm9yKTsKKyAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNwb25zZSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOwogICAgIHJldHVybiBpZGVu
dGlmaWVyOwogfQogCkBAIC0yODgyLDcgKzI4ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
ZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJlcXVl
c3QsIGlkZW50aWZpZXIsIGVycm9yKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1h
cmtSZXNvdXJjZUFzQ2FjaGVkKHBhZ2UsIGlkZW50aWZpZXIpOwotICAgIG5vdGlmaWVyKCktPnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50
aWZpZXIsIHJlc291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCwg
ZXJyb3IpOworICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc291cmNlLT5yZXNwb25zZSgpLCAw
LCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjphcHBseVVzZXJBZ2VudChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCBhYzQ2YTk0NDdm
ZTVjMzYyOGY0NzM1MmU4YzJjY2EyMmJkZTgzYTQ4Li5mNDUxM2JiNmMwOTBjZmQ4M2M2MjQyMzIz
MjYxYmI2ZjcxMjc2ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGEK
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+cHJv
Z3Jlc3MoKS0+aW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEsIGRh
dGFMZW5ndGgpOwogCi0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZpbmlz
aExvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC0xMzAs
MTEgKzEzMCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bgogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBpZGVudGlmaWVy
LCBsb2FkZXIsIHIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2Fk
ZXIsIGlkZW50aWZpZXIsIGRhdGFMZW5ndGgpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhTGVu
Z3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNo
RGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21Q
YWdlKHVuc2lnbmVkIGxvbmcKICAgICBvbGRQYWdlLT5wcm9ncmVzcygpLT5jb21wbGV0ZVByb2dy
ZXNzKGlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogewogICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIGRpc3BhdGNoRGlkUmVj
ZWl2ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCiAgICAgaWYgKGRh
dGFMZW5ndGggPiAwKQotICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxv
YWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxl
bmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAg
ICAgICBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcobG9hZGVyLCBpZGVudGlmaWVyLCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggZGFmZDYx
OTRjY2VjODMyNDVlMjhhMmNiOGFiYjg5NmEyNTJiYzAzNS4uNmE5Mjk2YzMxMmI1OGQyZGY3N2Rl
YTU1YmY2YjFiYTY0YmNhZGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE5vdGlmaWVyLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNo
TG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91Ymxl
IGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZy
b21QYWdlKHVuc2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFnZSopOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lKiBt
X2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA0NWIxODRjZmY5OTcwMjJhMGE3MmU0N2ZkYjM4
ZDg5ZWE5OTIzNDQyLi42NGY3YjY4NWRkOWM4ZmQ3NjI3MjBjYzJlN2EyZDY1YzkzNDNmNTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFy
KiBkCiAgICAgVU5VU0VEX1BBUkFNKGVuY29kZWREYXRhTGVuZ3RoKTsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVu
dExlbmd0aChtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxlbmd0aCwgMCk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShtX2ZyYW1lLCBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIDAsIGxlbmd0aCwgMCk7CiAjZW5kaWYKIAogICAg
IGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDg2Y2RjYmViOTBmMGYyYzM2ZWI5YzRkNWVkYmY0YmYzMmM5YzhhMWYu
LmZiOTVlMWI5NmU4M2FiM2Y1ZjE2NWQwYTFmNjliYzRmY2YzZDgwYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0xMjMsNCArMTI1LDE1IEBAIFN0cmluZyBJ
bnRlcm5hbHM6OnNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIHJldHVybiBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpOwogfQog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3ZvaWQgSW50ZXJuYWxzOjpzZXRJbnNwZWN0b3JSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0cyhEb2N1bWVudCogZG9jdW1lbnQsIGludCBtYXhpbXVtUmVzb3Vy
Y2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2Uo
KSB8fCAhZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRv
Y3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0UmVzb3VyY2VzRGF0YVNp
emVMaW1pdHNGcm9tSW50ZXJuYWxzKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCmluZGV4IGU2NzdlMzJmMDg5ZGNjYTcxOGIyNDJiYWI3MDU4MWQwMGY1
NjZiZTQuLjE1MGFiOGVjNGJmMDg5MTcwMWJlMWQzOGUxZDJiYmIxMjQyMTNiNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIFN0
cmluZyBzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBFeGNl
cHRpb25Db2RlJik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHZvaWQgc2V0SW5zcGVj
dG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoRG9jdW1lbnQqLCBpbnQgbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEludGVybmFscygpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiODI4NzFlNTI0MmY0ZjRiYzllZTc1
ODRkZDU5NzlkN2UwZGEyMzQ2Li42YWJhODAzOWY4YjE1NTlhY2VjOTcxZmZmYjhjZTQ1MmQ1Mzg2
YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw2ICszNSw4IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoaW4gRWxlbWVu
dCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyBzaGFkb3dQ
c2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgdm9pZCBzZXRJbnNwZWN0b3JSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0cyhpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyBtYXhpbXVt
UmVzb3VyY2VzQ29udGVudFNpemUsIGluIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBj
ZTA4ZmYyZGQwMjIzNTBjM2EwOGVkZjczMjdmODMxYjNlYjA4NzM4Li4wMzRiMmI1Zjk1YzkwMzVl
NTU2NWQzNjYyNDI3ZmVlMDUwYzdmM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMDYtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
U2hvdyBjb250ZW50IGZvciBwbHVnaW4gcmVxdWVzdHMgaW4gbmV0d29yayBwYW5lbC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDgwCisKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgor
CiAyMDExLTA2LTI4ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA2Njg3NTVk
MTNkM2ZiMjgyZDIzZmMyY2E0NTcxZmFmZWM3MWU1MDdmLi4xOTY3ZmIwZGIzZDUzZGYwYWEzZGIw
MGRmYWYzODQzZjFkODE1ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNDQsOCArMTQ0
LDEwIEBAIEVYUE9SVFMKICAgICAgICAgP2dldENhY2hlZERPTVN0cnVjdHVyZUBXZWJDb3JlQEBZ
QVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEJVQ2xhc3NJbmZvQDNA
QFoKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFC
RV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBA
WUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmluZ0lt
cGxAV1RGQEBWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFz
aFRyYWl0c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0
cmluZ0BKU0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgorICAgICAgICA/cGFn
ZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3JlbW92ZVNoYWRv
d1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBX
ZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKKyAgICAgICAgP3NldFJlc291cmNlc0Rh
dGFTaXplTGltaXRzRnJvbUludGVybmFsc0BJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFB
RVhISEBaCiAgICAgICAgID9zaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWU2hhZG93
Um9vdEAyQFhaCiAgICAgICAgID90b0RvY3VtZW50QFdlYkNvcmVAQFlBUEFWRG9jdW1lbnRAMUBW
SlNWYWx1ZUBKU0NAQEBaCiAgICAgICAgID90b0VsZW1lbnRAV2ViQ29yZUBAWUFQQVZFbGVtZW50
QDFAVkpTVmFsdWVASlNDQEBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4
IDE4NzFjZTcyZjMyZjE5MzU0MjJkNTg0OTZhMGIyODQyNWJkMWIxZjAuLmExODc2ZGQ3N2NiNzQ0
ZjQ4MDM4MTcyMTlmZTc1Y2I5ZmJkNTE0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKQEAgLTEzNyw4ICsxMzcsMTAgQEAgRVhQT1JUUwogICAgICAgICA/Z2V0Q2FjaGVkRE9N
U3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmpl
Y3RAMUBQQlVDbGFzc0luZm9AM0BAWgogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNTdHJp
bmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/
JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BA
VVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNo
VHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1w
bEA2QEBaCisgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgog
ICAgICAgICA/cmVtb3ZlU2hhZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgorICAg
ICAgICA/c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFWEhIQFoKICAgICAgICAgP3NoYWRvd1Jvb3RARWxlbWVudEBX
ZWJDb3JlQEBRQkVQQVZTaGFkb3dSb290QDJAWFoKICAgICAgICAgP3RvRG9jdW1lbnRAV2ViQ29y
ZUBAWUFQQVZEb2N1bWVudEAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3RvRWxlbWVudEBX
ZWJDb3JlQEBZQVBBVkVsZW1lbnRAMUBWSlNWYWx1ZUBKU0NAQEBaCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgppbmRleCAxNjg0MmRlZWE4NWJjNGY5NzU1ZTRhMTg0MTQzMzE0NzQxNmYwODc2Li5iYzky
MGE5NzIzZDE2M2Q1NDAwMjczYThkOWJlOTVjYjJlN2E0ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKQEAgLTM2LDYgKzM2LDcgQEAgX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlND
OUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFOwogX1pON1dlYkNv
cmUxNXNldERPTUV4Y2VwdGlvbkVQTjNKU0M5RXhlY1N0YXRlRWk7CiBfWk43V2ViQ29yZTE2anNT
dHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjdIYXNoTWFwSVBOUzNfMTBTdHJp
bmdJbXBsRU5TMF80V2Vha0lOUzBfOEpTU3RyaW5nRUVFTlMzXzEwU3RyaW5nSGFzaEVOUzNfMTBI
YXNoVHJhaXRzSVM2X0VFTlNCX0lTOV9FRUVFUzZfOwogX1pON1dlYkNvcmUxN2NhY2hlRE9NU3Ry
dWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNs
YXNzSW5mb0U7CitfWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2Vz
RGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRl
bnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRE
T01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9FOwog
X1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzdFbGVtZW50RWo7CkBAIC01
MCw2ICs1MSw3IEBAIF9aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRTsKIF9aTks3
V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIxMWlzUHJlbG9hZGVkRVJLTjNXVEY2U3RyaW5n
RTsKIF9aTks3V2ViQ29yZTZKU05vZGUyMXB1c2hFdmVudEhhbmRsZXJTY29wZUVQTjNKU0M5RXhl
Y1N0YXRlRVBOUzFfMTRTY29wZUNoYWluTm9kZUU7CiBfWk5LN1dlYkNvcmU3RWxlbWVudDEwc2hh
ZG93Um9vdEV2OworX1pOSzdXZWJDb3JlOERvY3VtZW50NHBhZ2VFdjsKIGxvY2FsOgogX1oqOwog
Y3RpKjsK
</data>
<flag name="review"
          id="93491"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="94172"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>