<?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>30879</bug_id>
          
          <creation_ts>2009-10-28 14:17:33 -0700</creation_ts>
          <short_desc>Loading HTML with a JS alert() when the DocumentLoader has been set to not defer data load results in ASSERT</short_desc>
          <delta_ts>2010-08-03 08:46:09 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29381</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tor Arne Vestbø">vestbo</reporter>
          <assigned_to name="Tor Arne Vestbø">vestbo</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158698</commentid>
    <comment_count>0</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-10-28 14:17:33 -0700</bug_when>
    <thetext>Qt&apos;s QWebFrame::setHtml() uses DocumentLoader::setDeferMainResourceDataLoad(false) to force synchronuous loading:

WTF::PassRefPtr&lt;WebCore::DocumentLoader&gt; FrameLoaderClientQt::createDocumentLoader(const WebCore::ResourceRequest&amp; request, const SubstituteData&amp; substituteData)
{
    RefPtr&lt;DocumentLoader&gt; loader = DocumentLoader::create(request, substituteData);
    if (substituteData.isValid())
        loader-&gt;setDeferMainResourceDataLoad(false);
    return loader.release();
}

When the subsituteData that&apos;s being loaded has a piece of JS that does an alert(&quot;foo&quot;), we end up in Chrome::runJavaScriptAlert(), which then uses a PageGroupLoadDeferrer to protect against paralell event loops:

// Defer loads in case the client method runs a new event loop that would
// otherwise cause the load to continue while we&apos;re in the middle of executing JavaScript.
PageGroupLoadDeferrer deferrer(m_page, true);

After the alert() dialog has been closed by the user, the PageGroupLoadDeferrer goes out of scope, resulting in a call to MainResourceLoader::setDefersLoading(false).

The problem as I understand it is that MainResourceLoader::setDefersLoading() does not take into account the case where the resources has already been loaded, so it starts a new load, either though loadNow() or through the timer.

My fix so far is to use m_response as a sign that the request has already been loaded:

http://gist.github.com/220820

My questions are:

   1. Is my assumption about the bug correct?
   2. If so, is that the right sign to use?
   3. Is it in the right place? I.e should it be moved to loadNow() et al?
   
I see ResourceLoader has a check for  if (!defers &amp;&amp; !m_deferredRequest.isNull()), perhaps that&apos;s what&apos;s preventing this bug from appearing there?
   
Thanks for any input :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158886</commentid>
    <comment_count>1</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-10-29 07:37:35 -0700</bug_when>
    <thetext>Related to bug 29381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159006</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-29 12:10:11 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The problem as I understand it is that MainResourceLoader::setDefersLoading()
&gt; does not take into account the case where the resources has already been
&gt; loaded, so it starts a new load, either though loadNow() or through the timer.

The logic in MainResourceLoader seems a bit twisted and has changed quite a bit since I last looked at it.

The reason m_initialRequest exists is to record that there&apos;s deferred loading that needs to be done. It should be cleared when the resource has already been loaded. I don&apos;t think adding a check for m_response is the right thing to do.

Adding code to clear m_initialRequest in handleDataLoadNow is probably the right fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159299</commentid>
    <comment_count>3</comment_count>
      <attachid>42207</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-10-30 06:14:54 -0700</bug_when>
    <thetext>Created attachment 42207
Clear the initial request when loading synchronously to prevent duplicate loads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159352</commentid>
    <comment_count>4</comment_count>
      <attachid>42207</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-30 10:36:05 -0700</bug_when>
    <thetext>Comment on attachment 42207
Clear the initial request when loading synchronously to prevent duplicate loads

Is there any way to make a regression test for this? It mist affect cases other than just a particular way of calling WebKit in Qt.

If not, why not?

Adam Barth would probably be made at me if I said review+ on this without first getting an answer to that.

By the way, not about this patch, just about the existing code: I think it&apos;s really confusing that ResourceLoader has a member called m_deferredRequest and this class has a member called m_initialRequest and they have almost the same purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159365</commentid>
    <comment_count>5</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-10-30 10:55:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 42207 [details])
&gt; Is there any way to make a regression test for this? It must affect cases other than just a particular way of calling WebKit in Qt.

As far as I can tell we&apos;re the only ones calling setDeferMainResourceDataLoad(false), apart from the original code that introduced it in r23627, where it seems to set m_deferMainResourceDataLoad = false in WebDocumentLoaderMac when detecting com.apple.AppKit or an Adobe Installer.

Would it be possible to add a DRT hook for this for layout tests, where the test would first disable the deferred load and then trigger another load from the test?

&gt; Adam Barth would probably be made at me if I said review+ on this without first
&gt; getting an answer to that.

Would love to know if there&apos;s some way to test this :)

&gt; By the way, not about this patch, just about the existing code: I think it&apos;s
&gt; really confusing that ResourceLoader has a member called m_deferredRequest and
&gt; this class has a member called m_initialRequest and they have almost the same
&gt; purpose.

I agree, i noticed this too when you tipped med off of the real intent behind initialRequest. I could rename this in an upcoming patch if you want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164104</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-16 15:04:54 -0800</bug_when>
    <thetext>Oops.  Wrong bug.  Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167326</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:21:52 -0800</bug_when>
    <thetext>Attachment 42207 passed the style-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171546</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 13:31:40 -0800</bug_when>
    <thetext>This sounds vaguely related to bug 30989, but I doubt that it&apos;s actually related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175358</commentid>
    <comment_count>9</comment_count>
      <attachid>42207</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 18:11:20 -0800</bug_when>
    <thetext>Comment on attachment 42207
Clear the initial request when loading synchronously to prevent duplicate loads

The code change looks good to me, but this needs a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175360</commentid>
    <comment_count>10</comment_count>
      <attachid>42207</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 18:15:30 -0800</bug_when>
    <thetext>Comment on attachment 42207
Clear the initial request when loading synchronously to prevent duplicate loads

I see that the test case issue was already discussed in comments. I see thrre reasonable options:

1) I believe a test case can be made by using an alert() during initial load, as described in the ChangeLog.
2) If the first approach doesn&apos;t work, adding a hook to DumpRenderTree is reasonable.
2) If it is truly impossible to test this, then the ChangeLog should explain why it&apos;s currently not possible to make a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177124</commentid>
    <comment_count>11</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-01-05 06:21:24 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; 1) I believe a test case can be made by using an alert() during initial load, as
&gt; described in the ChangeLog.

My bad, the ChangeLog was not describing full picture. The alert() will only trigger the assert if the DocumentLoader has setDeferMainResourceDataLoad() set to false, which then results in a erroneous call to loadNow() in MainResourceLoader::setDefersLoading().

As far as I can tell deferred main resource loads are only used by Qt&apos;s QWebFrame::setHtml() API to do synchronous loads, as well as Chromium&apos;s WebWorker implementation.

&gt; 2) If the first approach doesn&apos;t work, adding a hook to DumpRenderTree is
&gt; reasonable.

I tried poking around to see if I could add a DRT hook for this. The setter/getter in LTC is of course easy, but I&apos;m wondering where would be a good place to call DocumentLoader::setDeferMainResourceDataLoad(false), as the DRT does not seem to control the loader directly but uses the FrameLoadDelegate mechanism for hooks.

I considered adding a hook there for FrameLoaderClient::createDocumentLoader(), which is the place we setDeferMainResourceDataLoad(false) in the Qt port, but as I understand it WebFrameLoadDelegate is public API for the Mac and Win ports?

I also tried looking at hooking into willSendRequest of the WebResourceLoadDelegate, which gets passed a a WebDataSource, but it seems only the Windows COM API has a way to access the document loader though the WebDataSource, the Obj-C bindings&apos;s WebDataSource is opaque and has no documentLoader() method.

I&apos;m probably missing something, so any hints on where to make the DRT access the loader and set the main resource to be non-deferred would be appreciated :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177632</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-06 10:06:55 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I tried poking around to see if I could add a DRT hook for this. The
&gt; setter/getter in LTC is of course easy, but I&apos;m wondering where would be a good
&gt; place to call DocumentLoader::setDeferMainResourceDataLoad(false), as the DRT
&gt; does not seem to control the loader directly but uses the FrameLoadDelegate
&gt; mechanism for hooks.

Yes, DumpRenderTree uses mostly public API. You&apos;d need to add new &quot;SPI&quot; to make this work on Mac OS X at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247595</commentid>
    <comment_count>13</comment_count>
      <attachid>60741</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-07-07 09:22:12 -0700</bug_when>
    <thetext>Created attachment 60741
Patch with test

Patch now has test, using two new DRT functions. 

Hoping the win-ews will catch build errors for this one as I don&apos;t have a win-machine readily available right now.

I&apos;ll file bugs for Chromium and GTK for the skipped test before landing the patch once it&apos;s accepted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247605</commentid>
    <comment_count>14</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-07-07 09:52:20 -0700</bug_when>
    <thetext>Spelling mistake in the test, ill fix that before landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247606</commentid>
    <comment_count>15</comment_count>
      <attachid>60741</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-07-07 09:52:26 -0700</bug_when>
    <thetext>Comment on attachment 60741
Patch with test

&gt; +        COMPtr&lt;IWebDataSourcePrivate&gt; dataSourcePrivate;
&gt; +        if (FAILED(dataSource-&gt;QueryInterface(&amp;dataSourcePrivate)))
&gt; +            return S_FAILED;
&gt; +        dataSourcePrivate-&gt;setDeferMainResourceDataLoad(false);

This should be:

COMPtr&lt;IWebDataSourcePrivate&gt; dataSourcePrivate(Query, dataSource);
if (!dataSourcePrivate)
    return E_FAIL;
dataSourcePrivate-&gt;setDeferMainResourceDataLoad(FALSE);

Other than that, the Windows parts look fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247860</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-07 17:00:27 -0700</bug_when>
    <thetext>Attachment 60741 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3378430</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248126</commentid>
    <comment_count>17</comment_count>
      <attachid>60863</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-07-08 03:42:41 -0700</bug_when>
    <thetext>Created attachment 60863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248127</commentid>
    <comment_count>18</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-07-08 03:46:12 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=60863) [details]
&gt; Patch

Updated:

 - Fixed spelling mistake in test
 - Incorporated Adam&apos;s feedback
 - Removed changes to WebKit.order (rumor is it will be auto-generated for me)

Dunno what the build error was on the Win-EWS bot, the logs do not say anything :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248231</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 08:49:51 -0700</bug_when>
    <thetext>Attachment 60863 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3439039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249802</commentid>
    <comment_count>20</comment_count>
      <attachid>61221</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-07-12 06:36:20 -0700</bug_when>
    <thetext>Created attachment 61221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250015</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-07-12 13:38:54 -0700</bug_when>
    <thetext>Adam, can you help review this patch?

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250432</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-13 04:05:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63191 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250435</commentid>
    <comment_count>23</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-07-13 04:23:05 -0700</bug_when>
    <thetext>Hmm, the win build-bot needs to be kicked somehow so that include/WebKit/WebKit.h is regenerated so that the build picks up the new private API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255940</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-07-26 01:31:26 -0700</bug_when>
    <thetext>Committed r63191: &lt;http://trac.webkit.org/changeset/63191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256028</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-07-26 06:57:19 -0700</bug_when>
    <thetext>Revision r63191 cherry-picked into qtwebkit-2.0 with commit 9923d5f69ae0dc413fe9c2b3e702b47887c19df5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259483</commentid>
    <comment_count>26</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-03 08:46:09 -0700</bug_when>
    <thetext>Revision r63191 cherry-picked into qtwebkit-2.1 with commit 502eff516377d2f6ac6c56bcb055ee16b56e76bd</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42207</attachid>
            <date>2009-10-30 06:14:54 -0700</date>
            <delta_ts>2010-07-08 03:42:24 -0700</delta_ts>
            <desc>Clear the initial request when loading synchronously to prevent duplicate loads</desc>
            <filename>bug-30879-20091030141451.patch</filename>
            <type>text/plain</type>
            <size>1967</size>
            <attacher name="Tor Arne Vestbø">vestbo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTRhZTQ5Ny4uYmRlMGVkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMC0zMCAgVG9yIEFybmUgVmVz
dGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYXIgdGhlIGluaXRpYWwgcmVxdWVzdCB3aGVu
IGxvYWRpbmcgc3luY2hyb25vdXNseSB0byBwcmV2ZW50IGR1cGxpY2F0ZSBsb2FkcworCisgICAg
ICAgIE1haW5SZXNvdXJjZUxvYWRlciB1c2VzIHRoZSBtZW1iZXIgbV9pbml0aWFsUmVxdWVzdCB0
byBzdG9yZSBhIHJlcXVlc3QgZm9yIGZ1dHVyZQorICAgICAgICBkZWZlcnJlZCBsb2Fkcy4gV2hl
biBkb2luZyBhIHN5bmNocm9ub3VzIGxvYWQsIGluIGhhbmRsZURhdGFMb2FkTm93KCksIHdlIHRo
ZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNl
cXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3Qgc3RhcnQKKyAgICAgICAgeWV0
IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBmb3IgZXhhbXBsZSBoYXBwZW4gaW4g
c2V0RGVmZXJzTG9hZGluZygpIGFzIGEgcmVzdWx0IG9mIGEgUGFnZUdyb3VwTG9hZERlZmVycmVy
CisgICAgICAgIGdvaW5nIG91dCBvZiBzY29wZSB3aGVuIHJldHVybmluZyBmcm9tIENocm9tZTo6
cnVuSmF2YVNjcmlwdEFsZXJ0KCksIHdoZXJlIHRoZSBhbGVydCgpCisgICAgICAgIGNhbWUgZnJv
bSBhIHNjcmlwdCBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoZSBmaXJzdC9vcmlnaW5hbCBsb2FkLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg3OQor
CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93KTogY2xlYXIgbV9pbml0
aWFsUmVxdWVzdAorCiAyMDA5LTEwLTI4ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGMzN2RhZWYuLjQ5NzBmMDYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcApAQCAtNDMzLDYgKzQzMywxMCBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6aGFuZGxlRGF0YUxvYWROb3coTWFpblJlc291cmNlTG9hZGVyVGltZXIqKQog
ICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0dXRlRGF0YS5yZXNwb25zZVVSTCgpOwogICAgIGlmICh1
cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwgPSBtX2luaXRpYWxSZXF1ZXN0LnVybCgpOworCisg
ICAgLy8gQ2xlYXIgdGhlIGluaXRpYWwgcmVxdWVzdCBoZXJlIHNvIHRoYXQgc3Vic2VxdWVudCBl
bnRyaWVzIGludG8gdGhlCisgICAgLy8gbG9hZGVyIHdpbGwgbm90IHRoaW5rIHRoZXJlJ3Mgc3Rp
bGwgYSBkZWZlcnJlZCBsb2FkIGxlZnQgdG8gZG8uCisgICAgbV9pbml0aWFsUmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdCgpOwogICAgICAgICAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
KHVybCwgbV9zdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRl
bnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCAiIik7CiAgICAg
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60741</attachid>
            <date>2010-07-07 09:22:12 -0700</date>
            <delta_ts>2010-07-08 03:42:33 -0700</delta_ts>
            <desc>Patch with test</desc>
            <filename>0001-Prevent-assertion-duplicate-loads-for-non-deferred-s.patch</filename>
            <type>text/plain</type>
            <size>40833</size>
            <attacher name="Tor Arne Vestbø">vestbo</attacher>
            
              <data encoding="base64">RnJvbSA3MDg0ZjBiNzIyODQ3OGI1MzIwOGMxYTBlNWZjZjQ3Y2QyYTVmMjc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/VG9yPTIwQXJuZT0yMFZlc3RiPUMzPUI4Pz0g
PHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CkRhdGU6IFdlZCwgNyBKdWwgMjAxMCAxNjoyNjo1
NyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2Fk
cyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1kYXRhIGxvYWRzCgpodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA4NzkKCk1haW5SZXNvdXJjZUxvYWRlciB1c2VzIHRo
ZSBtZW1iZXIgbV9pbml0aWFsUmVxdWVzdCB0byBzdG9yZSByZXF1ZXN0cyBmb3IgZnV0dXJlCmRl
ZmVycmVkIGxvYWRzLiBXaGVuIGRvaW5nIHRoZSBhY3R1YWwgbG9hZCBpbiBoYW5kbGVEYXRhTG9h
ZE5vdygpLCB3ZSB0aGVyZWZvcmUKaGF2ZSB0byBjbGVhciB0aGlzIHJlcXVlc3Qgc28gdGhhdCBz
dWJzZXF1ZW50IGVudHJpZXMgaW50byB0aGUgbG9hZGVyIHdpbGwgbm90CnN0YXJ0IHlldCBhbm90
aGVyIGxvYWQuCgpUaGlzIGNhbiBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdoZW4KcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpy
dW5KYXZhU2NyaXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNl
KSwKYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5k
IG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCmxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdv
IG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CgogKiBxdWV1ZUxvYWRIVE1MU3RyaW5nKCkK
ICogc2V0RGVmZXJNYWluUmVzb3VyY2VMb2FkKCkKClRoZSBjaGFuZ2UgYWRkcyBEUlQgaG9va3Mg
Zm9yIE1hYywgV2luIGFuZCBRdCBmb3IgdGhlc2UgdHdvIGZ1bmN0aW9ucy4gRm9yIE1hYwphbmQg
V2luIHRoZSBob29rIHVzZXMgbmV3IFNQSSBpbiBXZWJEYXRhU291cmNlLiBGb3IgUXQgYSBuZXcg
c3RhdGljIG1lbWJlciB3YXMKYWRkZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50UXQgYW5kIGFj
Y2Vzc2VkIHRob3VnaCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC4KLS0tCiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKysrKysrKwog
Li4uL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQtZXhwZWN0ZWQudHh0ICAgICAgfCAgICAy
ICsKIC4uLi9mYXN0L2xvYWRlci9ub24tZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2FkLmh0bWwgIHwg
ICAxNSArKysrKwogLi4uL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCAg
ICAgICAgfCAgICAzICsKIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkICAgICAgICAg
ICAgICAgICAgIHwgICAgMyArCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMzAgKysrKysrKysrKwogV2ViQ29yZS9sb2FkZXIvTWFpblJlc291
cmNlTG9hZGVyLmNwcCAgICAgICAgICAgICAgfCAgICA0ICsrCiBXZWJLaXQvbWFjL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKysrKysrKwogV2ViS2l0
L21hYy9XZWJLaXQub3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tICAgICAgICAgICAgICAgIHwgICAxMCAr
KysrCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaCAgICAgICAgICB8
ICAgIDIgKwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDMyICsrKysrKysrKysrCiAuLi4vcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwICB8ICAgIDUgKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oIHwgICAgMiArCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgICB8ICAgIDMgKy0KIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggICAgIHwgICAgMSArCiBXZWJLaXQvd2luL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKysrKysrKysrKysKIFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRGF0YVNvdXJjZS5pZGwgICAgICAgICAgIHwgICAgMSAr
CiBXZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTAgKysrKwogV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmggICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICsKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgICAgfCAgIDQyICsrKysrKysrKysrKysrCiBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oICB8ICAgIDUgKysK
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaCAgICAgICAgIHwgICAx
NSArKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcCAgICAg
ICAgfCAgICA1ICsrCiAuLi4vRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tICAgICB8ICAgIDUgKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVl
dWVJdGVtTWFjLm1tIHwgICAgOSArKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcCAgIHwgICAxMSArKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oICAgICB8ICAgIDIgKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmNwcCAgfCAgIDEyICsrKysKIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5oICAgIHwgICAxNiArKysrKysKIC4uLi9E
dW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwICAgIHwgICAgNyArKysK
IC4uLi9EdW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAgICAgICAgIHwgICAx
NiArKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1dvcmtRdWV1ZUl0ZW1XeC5j
cHAgIHwgICAgNSArKwogMzQgZmlsZXMgY2hhbmdlZCwgNDI2IGluc2VydGlvbnMoKyksIDEgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbm9u
LWRlZmVycmVkLXN1YnN0aXR1dGUtbG9hZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9ub24tZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2FkLmh0
bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYWFjOTM0OS4uOGVmNTdhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEw
LTA3LTA3ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2ZW50IGFz
c2VydGlvbi9kdXBsaWNhdGUgbG9hZHMgZm9yIG5vbi1kZWZlcnJlZCBzdWJ0aXR1dGUtZGF0YSBs
b2FkcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDg3OQorCisgICAgICAgIE1haW5SZXNvdXJjZUxvYWRlciB1c2VzIHRoZSBtZW1iZXIgbV9pbml0
aWFsUmVxdWVzdCB0byBzdG9yZSByZXF1ZXN0cyBmb3IgZnV0dXJlCisgICAgICAgIGRlZmVycmVk
IGxvYWRzLiBXaGVuIGRvaW5nIHRoZSBhY3R1YWwgbG9hZCBpbiBoYW5kbGVEYXRhTG9hZE5vdygp
LCB3ZSB0aGVyZWZvcmUKKyAgICAgICAgaGF2ZSB0byBjbGVhciB0aGlzIHJlcXVlc3Qgc28gdGhh
dCBzdWJzZXF1ZW50IGVudHJpZXMgaW50byB0aGUgbG9hZGVyIHdpbGwgbm90CisgICAgICAgIHN0
YXJ0IHlldCBhbm90aGVyIGxvYWQuCisKKyAgICAgICAgVGhpcyBjYW4gaGFwcGVuIGFzIGEgcmVz
dWx0IG9mIGEgUGFnZUdyb3VwTG9hZERlZmVycmVyIGdvaW5nIG91dCBvZiBzY29wZSB3aGVuCisg
ICAgICAgIHJldHVybmluZyBmcm9tIENocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KCksIHdoaWNo
IGNhbGxzIHNldERlZmVycmVkTG9hZGluZyhmYWxzZSksCisgICAgICAgIGJ1dCBvbmx5IGluIHRo
ZSBjYXNlIG9mIHVzaW5nIGJvdGggc3Vic3RpdHV0ZS1kYXRhIGFuZCBub24tZGVmZXJyZWQgbWFp
biByZXNvdXJjZQorICAgICAgICBsb2FkIHRvZ2V0aGVyLiBUaGF0J3Mgd2h5IHR3byBuZXcgRFJU
IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOgorCisgICAgICAgICAqIHF1ZXVlTG9hZEhUTUxTdHJpbmco
KQorICAgICAgICAgKiBzZXREZWZlck1haW5SZXNvdXJjZUxvYWQoKQorCisgICAgICAgIFRoZSBj
aGFuZ2UgYWRkcyBEUlQgaG9va3MgZm9yIE1hYywgV2luIGFuZCBRdCBmb3IgdGhlc2UgdHdvIGZ1
bmN0aW9ucy4gRm9yIE1hYworICAgICAgICBhbmQgV2luIHRoZSBob29rIHVzZXMgbmV3IFNQSSBp
biBXZWJEYXRhU291cmNlLiBGb3IgUXQgYSBuZXcgc3RhdGljIG1lbWJlciB3YXMKKyAgICAgICAg
YWRkZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50UXQgYW5kIGFjY2Vzc2VkIHRob3VnaCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL25vbi1kZWZlcnJl
ZC1zdWJzdGl0dXRlLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xv
YWRlci9ub24tZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvU2tpcHBlZDoKKwogMjAxMC0wNy0wNiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9ub24tZGVmZXJyZWQtc3Vic3RpdHV0
ZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJl
ZC1zdWJzdGl0dXRlLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjU3OTM0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9ub24tZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKK0FMRVJUOiBUcmlnZ2VyaW5nIGJ1ZyB0aG91Z2ggSlMtYWxlcnQKK1BBU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxv
YWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRl
LWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmIzNjExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbm9uLWRlZmVycmVkLXN1
YnN0aXR1dGUtbG9hZC5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxwPlRoaXMgdGVzdHMgdGhhdCB1
c2luZyBzdWJzdGl0dXRlIGxvYWQgaW4gY29tYmluYXRpb24gd2l0aCBub24tZGVmZXJyZWQgbWFp
biByZXNvdXJjZSBsb2FkaW5nIHdpbGwgbm90IGNhdXNlCithc3NlcnRpb25zIG9yIGR1cGxpY2F0
ZSBsb2Fkcywgd2hpY2ggY2FuIGhhcHBlbiBpZiB0aGUgc3Vic3RpdHV0ZSBkb2N1bWVudCBjb250
YWlucyBKYXZhU2NyaXB0LWFsZXJ0cy48L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGZh
bHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWRIVE1MU3RyaW5nKCI8c2Ny
aXB0PmlmICh0eXBlb2YoaGFzQmVlbkxvYWRlZCkgIT0gJ3VuZGVmaW5lZCcpIHsiICsKKyAgICAg
ICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVS
RSc7IiArCisgICAgIn0gZWxzZSB7ICIgKworICAgICAgICAiaGFzQmVlbkxvYWRlZCA9IHRydWU7
IGRvY3VtZW50LndyaXRlKCc8ZGl2IGlkPXJlc3VsdD5QQVNTPC9kaXY+Jyk7IGFsZXJ0KCdUcmln
Z2VyaW5nIGJ1ZyB0aG91Z2ggSlMtYWxlcnQnKTsgfSIgKworICAgICI8XC9zY3JpcHQ+Iik7Cit9
IGVsc2UKKyAgICBkb2N1bWVudC53cml0ZSgnVGhpcyB0ZXN0IG11c3QgYmUgcnVuIGJ5IER1bXBS
ZW5kZXJUcmVlIScpCis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDJhYWVhZDYuLjg0NGY4ZTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKQEAgLTIwNyw2ICsyMDcsOSBAQCBXT05URklYIFNLSVAgOiBqYXZhL2xjMyA9IFRFWFQK
IC8vIFRPRE86IG1vdmUgdG8gcGxhdGZvcm0vY2hyb21pdW0tbGludXgvLgogV09OVEZJWCBTS0lQ
IE1BQyBXSU4gOiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3RleHQvY2hyb21pdW0tbGludXgtZm9u
dGNvbmZpZy1yZW5kZXJzdHlsZS5odG1sID0gRkFJTAogCisvLyBOZWVkcyBEUlQgcXVldWVMb2Fk
SFRNTFN0cmluZyBhbmQgc2V0RGVmZXJNYWluUmVzb3VyY2VMb2FkLWltcGxlbWVudGF0aW9ucwor
U0tJUCA6IGZhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbCA9IEZB
SUwKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIC8vIFdPTlRGSVggVEVTVFMKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCmluZGV4IDg2N2JjNTYuLmVmYmI4NjQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCkBAIC01MjYyLDYgKzUyNjIsOSBAQCBmYXN0L2Zvcm1zL3RleHRhcmVhLWFwcGVh
cmFuY2Utd3JhcC5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDU4NAogc3ZnL2N1c3RvbS9mb250LWZhY2Utbm90LWluLWRvY3VtZW50LnN2ZwogCisjIE5l
ZWRzIERSVCBxdWV1ZUxvYWRIVE1MU3RyaW5nIGFuZCBzZXREZWZlck1haW5SZXNvdXJjZUxvYWQt
aW1wbGVtZW50YXRpb25zCitmYXN0L2xvYWRlci9ub24tZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2Fk
Lmh0bWwKKwogIyBQcm9iYWJseSByZWxhdGVkIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzYzNwogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5z
ZWN1cmUtcGx1Z2luLWluLWlmcmFtZS5odG1sCiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0
aC1yZXNlbmQtd3JvbmctY3JlZGVudGlhbHMuaHRtbCAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI2NzQyOC4uMWFkODFmYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMyBAQAorMjAxMC0wNy0wNyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUHJldmVudCBhc3NlcnRpb24vZHVwbGljYXRlIGxvYWRzIGZvciBub24tZGVmZXJyZWQgc3Vi
dGl0dXRlLWRhdGEgbG9hZHMKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzA4NzkKKworICAgICAgICBNYWluUmVzb3VyY2VMb2FkZXIgdXNlcyB0aGUg
bWVtYmVyIG1faW5pdGlhbFJlcXVlc3QgdG8gc3RvcmUgcmVxdWVzdHMgZm9yIGZ1dHVyZQorICAg
ICAgICBkZWZlcnJlZCBsb2Fkcy4gV2hlbiBkb2luZyB0aGUgYWN0dWFsIGxvYWQgaW4gaGFuZGxl
RGF0YUxvYWROb3coKSwgd2UgdGhlcmVmb3JlCisgICAgICAgIGhhdmUgdG8gY2xlYXIgdGhpcyBy
ZXF1ZXN0IHNvIHRoYXQgc3Vic2VxdWVudCBlbnRyaWVzIGludG8gdGhlIGxvYWRlciB3aWxsIG5v
dAorICAgICAgICBzdGFydCB5ZXQgYW5vdGhlciBsb2FkLgorCisgICAgICAgIFRoaXMgY2FuIGhh
cHBlbiBhcyBhIHJlc3VsdCBvZiBhIFBhZ2VHcm91cExvYWREZWZlcnJlciBnb2luZyBvdXQgb2Yg
c2NvcGUgd2hlbgorICAgICAgICByZXR1cm5pbmcgZnJvbSBDaHJvbWU6OnJ1bkphdmFTY3JpcHRB
bGVydCgpLCB3aGljaCBjYWxscyBzZXREZWZlcnJlZExvYWRpbmcoZmFsc2UpLAorICAgICAgICBi
dXQgb25seSBpbiB0aGUgY2FzZSBvZiB1c2luZyBib3RoIHN1YnN0aXR1dGUtZGF0YSBhbmQgbm9u
LWRlZmVycmVkIG1haW4gcmVzb3VyY2UKKyAgICAgICAgbG9hZCB0b2dldGhlci4gVGhhdCdzIHdo
eSB0d28gbmV3IERSVCBmdW5jdGlvbnMgd2VyZSBhZGRlZDoKKworICAgICAgICAgKiBxdWV1ZUxv
YWRIVE1MU3RyaW5nKCkKKyAgICAgICAgICogc2V0RGVmZXJNYWluUmVzb3VyY2VMb2FkKCkKKwor
ICAgICAgICBUaGUgY2hhbmdlIGFkZHMgRFJUIGhvb2tzIGZvciBNYWMsIFdpbiBhbmQgUXQgZm9y
IHRoZXNlIHR3byBmdW5jdGlvbnMuIEZvciBNYWMKKyAgICAgICAgYW5kIFdpbiB0aGUgaG9vayB1
c2VzIG5ldyBTUEkgaW4gV2ViRGF0YVNvdXJjZS4gRm9yIFF0IGEgbmV3IHN0YXRpYyBtZW1iZXIg
d2FzCisgICAgICAgIGFkZGVkIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudFF0IGFuZCBhY2Nlc3Nl
ZCB0aG91Z2ggRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuCisKKyAgICAgICAgVGVzdDogZmFzdC9s
b2FkZXIvbm9uLWRlZmVycmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCisKKyAgICAgICAgKiBsb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJj
ZUxvYWRlcjo6aGFuZGxlRGF0YUxvYWROb3cpOgorCiAyMDEwLTA3LTA2ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsg
U2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHAgYi9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDBhNWJmNDAu
LjZmNTdhNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApAQCAtNDY0LDYg
KzQ2NCwxMCBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlRGF0YUxvYWROb3coTWFp
blJlc291cmNlTG9hZGVyVGltZXIqKQogICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0dXRlRGF0YS5y
ZXNwb25zZVVSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwgPSBtX2lu
aXRpYWxSZXF1ZXN0LnVybCgpOworCisgICAgLy8gQ2xlYXIgdGhlIGluaXRpYWwgcmVxdWVzdCBo
ZXJlIHNvIHRoYXQgc3Vic2VxdWVudCBlbnRyaWVzIGludG8gdGhlCisgICAgLy8gbG9hZGVyIHdp
bGwgbm90IHRoaW5rIHRoZXJlJ3Mgc3RpbGwgYSBkZWZlcnJlZCBsb2FkIGxlZnQgdG8gZG8uCisg
ICAgbV9pbml0aWFsUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICAKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgp
LCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLnRl
eHRFbmNvZGluZygpLCAiIik7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggNDAwYTg5OC4uYTA3YmE1YiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wNy0wNyAgVG9y
IEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmVudCBhc3NlcnRpb24vZHVw
bGljYXRlIGxvYWRzIGZvciBub24tZGVmZXJyZWQgc3VidGl0dXRlLWRhdGEgbG9hZHMKKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA4NzkKKworICAg
ICAgICBNYWluUmVzb3VyY2VMb2FkZXIgdXNlcyB0aGUgbWVtYmVyIG1faW5pdGlhbFJlcXVlc3Qg
dG8gc3RvcmUgcmVxdWVzdHMgZm9yIGZ1dHVyZQorICAgICAgICBkZWZlcnJlZCBsb2Fkcy4gV2hl
biBkb2luZyB0aGUgYWN0dWFsIGxvYWQgaW4gaGFuZGxlRGF0YUxvYWROb3coKSwgd2UgdGhlcmVm
b3JlCisgICAgICAgIGhhdmUgdG8gY2xlYXIgdGhpcyByZXF1ZXN0IHNvIHRoYXQgc3Vic2VxdWVu
dCBlbnRyaWVzIGludG8gdGhlIGxvYWRlciB3aWxsIG5vdAorICAgICAgICBzdGFydCB5ZXQgYW5v
dGhlciBsb2FkLgorCisgICAgICAgIFRoaXMgY2FuIGhhcHBlbiBhcyBhIHJlc3VsdCBvZiBhIFBh
Z2VHcm91cExvYWREZWZlcnJlciBnb2luZyBvdXQgb2Ygc2NvcGUgd2hlbgorICAgICAgICByZXR1
cm5pbmcgZnJvbSBDaHJvbWU6OnJ1bkphdmFTY3JpcHRBbGVydCgpLCB3aGljaCBjYWxscyBzZXRE
ZWZlcnJlZExvYWRpbmcoZmFsc2UpLAorICAgICAgICBidXQgb25seSBpbiB0aGUgY2FzZSBvZiB1
c2luZyBib3RoIHN1YnN0aXR1dGUtZGF0YSBhbmQgbm9uLWRlZmVycmVkIG1haW4gcmVzb3VyY2UK
KyAgICAgICAgbG9hZCB0b2dldGhlci4gVGhhdCdzIHdoeSB0d28gbmV3IERSVCBmdW5jdGlvbnMg
d2VyZSBhZGRlZDoKKworICAgICAgICAgKiBxdWV1ZUxvYWRIVE1MU3RyaW5nKCkKKyAgICAgICAg
ICogc2V0RGVmZXJNYWluUmVzb3VyY2VMb2FkKCkKKworICAgICAgICBUaGUgY2hhbmdlIGFkZHMg
RFJUIGhvb2tzIGZvciBNYWMsIFdpbiBhbmQgUXQgZm9yIHRoZXNlIHR3byBmdW5jdGlvbnMuIEZv
ciBNYWMKKyAgICAgICAgYW5kIFdpbiB0aGUgaG9vayB1c2VzIG5ldyBTUEkgaW4gV2ViRGF0YVNv
dXJjZS4gRm9yIFF0IGEgbmV3IHN0YXRpYyBtZW1iZXIgd2FzCisgICAgICAgIGFkZGVkIHRvIHRo
ZSBGcmFtZUxvYWRlckNsaWVudFF0IGFuZCBhY2Nlc3NlZCB0aG91Z2ggRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuCisKKyAgICAgICAgKiBXZWJLaXQub3JkZXI6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXREZWZlck1haW5S
ZXNvdXJjZURhdGFMb2FkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZh
dGUuaDoKKwogMjAxMC0wNy0wNiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvV2ViS2l0Lm9yZGVyIGIvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKaW5kZXggMTc3NjYx
Ni4uMWQ0ODk1MiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKKysrIGIvV2Vi
S2l0L21hYy9XZWJLaXQub3JkZXIKQEAgLTI2MDAsMyArMjYwMCw0IEBAIF9fWk4yMFdlYkNvbnRl
eHRNZW51Q2xpZW50MTFkb3dubG9hZFVSTEVSS043V2ViQ29yZTRLVVJMRQogLVtOU1VSTChXZWJO
U1VSTEV4dHJhcykgX3dlYl9VUkxXaXRoTG93ZXJjYXNlZFNjaGVtZV0KIC1bTlNFdmVudChXZWJF
eHRyYXMpIF93ZWJfaXNSZXR1cm5PckVudGVyS2V5RXZlbnRdCiAtW1dlYlByZWZlcmVuY2VzIHNl
dERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lOl0KKy1bV2ViRGF0YVNvdXJjZShXZWJQcml2YXRlKSBf
c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDpdCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCmluZGV4IGIxNmFhYTguLjAyZGJjMmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCkBAIC0yMTEsNiArMjExLDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21D
bGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAjZW5kaWYK
IH0KIAorLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCit7
CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IFtzZWxmIF9kb2N1bWVudExvYWRlcl07CisK
KyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9hZGVyLT5zZXREZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKGZsYWcpOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJEYXRhU291cmNlIChXZWJJbnRlcm5hbCkKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2VQcml2YXRlLmgKaW5kZXggYWU4ZDRjZi4uZGY5YzYxZSAxMDA2NDQKLS0tIGEvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2VQcml2YXRlLmgKKysrIGIvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2VQcml2YXRlLmgKQEAgLTM3LDQgKzM3LDYgQEAKIAogLSAoQk9PTClf
dHJhbnNmZXJBcHBsaWNhdGlvbkNhY2hlOihOU1N0cmluZyopZGVzdGluYXRpb25CdW5kbGVJZGVu
dGlmaWVyOwogCistICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZs
YWc7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IDhiMjRjZDIuLjdkMDc3ZjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEw
LTA3LTA3ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2ZW50IGFz
c2VydGlvbi9kdXBsaWNhdGUgbG9hZHMgZm9yIG5vbi1kZWZlcnJlZCBzdWJ0aXR1dGUtZGF0YSBs
b2FkcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDg3OQorCisgICAgICAgIE1haW5SZXNvdXJjZUxvYWRlciB1c2VzIHRoZSBtZW1iZXIgbV9pbml0
aWFsUmVxdWVzdCB0byBzdG9yZSByZXF1ZXN0cyBmb3IgZnV0dXJlCisgICAgICAgIGRlZmVycmVk
IGxvYWRzLiBXaGVuIGRvaW5nIHRoZSBhY3R1YWwgbG9hZCBpbiBoYW5kbGVEYXRhTG9hZE5vdygp
LCB3ZSB0aGVyZWZvcmUKKyAgICAgICAgaGF2ZSB0byBjbGVhciB0aGlzIHJlcXVlc3Qgc28gdGhh
dCBzdWJzZXF1ZW50IGVudHJpZXMgaW50byB0aGUgbG9hZGVyIHdpbGwgbm90CisgICAgICAgIHN0
YXJ0IHlldCBhbm90aGVyIGxvYWQuCisKKyAgICAgICAgVGhpcyBjYW4gaGFwcGVuIGFzIGEgcmVz
dWx0IG9mIGEgUGFnZUdyb3VwTG9hZERlZmVycmVyIGdvaW5nIG91dCBvZiBzY29wZSB3aGVuCisg
ICAgICAgIHJldHVybmluZyBmcm9tIENocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KCksIHdoaWNo
IGNhbGxzIHNldERlZmVycmVkTG9hZGluZyhmYWxzZSksCisgICAgICAgIGJ1dCBvbmx5IGluIHRo
ZSBjYXNlIG9mIHVzaW5nIGJvdGggc3Vic3RpdHV0ZS1kYXRhIGFuZCBub24tZGVmZXJyZWQgbWFp
biByZXNvdXJjZQorICAgICAgICBsb2FkIHRvZ2V0aGVyLiBUaGF0J3Mgd2h5IHR3byBuZXcgRFJU
IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOgorCisgICAgICAgICAqIHF1ZXVlTG9hZEhUTUxTdHJpbmco
KQorICAgICAgICAgKiBzZXREZWZlck1haW5SZXNvdXJjZUxvYWQoKQorCisgICAgICAgIFRoZSBj
aGFuZ2UgYWRkcyBEUlQgaG9va3MgZm9yIE1hYywgV2luIGFuZCBRdCBmb3IgdGhlc2UgdHdvIGZ1
bmN0aW9ucy4gRm9yIE1hYworICAgICAgICBhbmQgV2luIHRoZSBob29rIHVzZXMgbmV3IFNQSSBp
biBXZWJEYXRhU291cmNlLiBGb3IgUXQgYSBuZXcgc3RhdGljIG1lbWJlciB3YXMKKyAgICAgICAg
YWRkZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50UXQgYW5kIGFjY2Vzc2VkIHRob3VnaCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wNy0wNyAgTWFyYyBNdXR6ICA8bWFyYy5tdXR6QGtk
YWIuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCAw
OWRlYzcxLi45ZjkxMTM2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTU0Nyw2ICs1NDcsMTEgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKGNvbnN0
IFFTdHJpbmdMaXN0JgogICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXJzID0gaGVhZGVyczsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChib29sIGIpCit7CisgICAgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCA9IGI7Cit9CisKIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgZW5hYmxlZCwgYm9v
bCBwZXJtaXNzaXZlKQogewogICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvbGljeURlbGVnYXRl
RW5hYmxlZCA9IGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IDMwNGU2NWIuLjkwYWZhODIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0x
MTYsNiArMTE2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsKGJvb2wgYik7CiAgICAgc3RhdGljIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXJzKGNvbnN0IFFTdHJpbmdMaXN0JiBoZWFkZXJzKTsKIAorICAgIHN0YXRpYyB2
b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoYm9vbCBiKTsKKwogICAgIHN0YXRpYyB2
b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKGJvb2wgYik7CiAgICAgc3RhdGljIHZvaWQgZHVtcFNl
dEFjY2VwdHNFZGl0aW5nKGJvb2wgYik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCAwMzQ4MjUxLi5mYzBmNmMzIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysr
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0x
NTcsNiArMTU3LDcgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNlbmRSZXF1ZXN0
UmV0dXJuc051bGxPblJlZGlyZWN0ID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMgPSBmYWxzZTsKK2Jvb2wgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCA9IHRydWU7CiAKIFFTdHJpbmdM
aXN0IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOwogUVN0cmlu
ZyBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzUGF0aDsKQEAg
LTg3OCw3ICs4NzksNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEZhbGxCYWNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKQogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxv
YWRlciA9IERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwot
ICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFkZWZlck1haW5SZXNv
dXJjZURhdGFMb2FkIHx8IHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgbG9hZGVy
LT5zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGZhbHNlKTsKICAgICByZXR1cm4gbG9hZGVy
LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCmluZGV4IGI0YTNjN2UuLmVjNjcyZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApAQCAtMjIxLDYgKzIyMSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUVN0cmluZ0xpc3Qgc2VuZFJlcXVlc3RDbGVhckhlYWRlcnM7CiAgICAg
c3RhdGljIGJvb2wgcG9saWN5RGVsZWdhdGVFbmFibGVkOwogICAgIHN0YXRpYyBib29sIHBvbGlj
eURlbGVnYXRlUGVybWlzc2l2ZTsKKyAgICBzdGF0aWMgYm9vbCBkZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkOwogCiBwcml2YXRlOgogICAgIEZyYW1lICptX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBiN2EyN2QxLi5h
MWI1YmJlIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEwLTA3LTA3ICBUb3IgQXJuZSBWZXN0YsO4
ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2ZW50IGFzc2VydGlvbi9kdXBsaWNhdGUgbG9hZHMg
Zm9yIG5vbi1kZWZlcnJlZCBzdWJ0aXR1dGUtZGF0YSBsb2FkcworCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg3OQorCisgICAgICAgIE1haW5SZXNv
dXJjZUxvYWRlciB1c2VzIHRoZSBtZW1iZXIgbV9pbml0aWFsUmVxdWVzdCB0byBzdG9yZSByZXF1
ZXN0cyBmb3IgZnV0dXJlCisgICAgICAgIGRlZmVycmVkIGxvYWRzLiBXaGVuIGRvaW5nIHRoZSBh
Y3R1YWwgbG9hZCBpbiBoYW5kbGVEYXRhTG9hZE5vdygpLCB3ZSB0aGVyZWZvcmUKKyAgICAgICAg
aGF2ZSB0byBjbGVhciB0aGlzIHJlcXVlc3Qgc28gdGhhdCBzdWJzZXF1ZW50IGVudHJpZXMgaW50
byB0aGUgbG9hZGVyIHdpbGwgbm90CisgICAgICAgIHN0YXJ0IHlldCBhbm90aGVyIGxvYWQuCisK
KyAgICAgICAgVGhpcyBjYW4gaGFwcGVuIGFzIGEgcmVzdWx0IG9mIGEgUGFnZUdyb3VwTG9hZERl
ZmVycmVyIGdvaW5nIG91dCBvZiBzY29wZSB3aGVuCisgICAgICAgIHJldHVybmluZyBmcm9tIENo
cm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KCksIHdoaWNoIGNhbGxzIHNldERlZmVycmVkTG9hZGlu
ZyhmYWxzZSksCisgICAgICAgIGJ1dCBvbmx5IGluIHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggc3Vi
c3RpdHV0ZS1kYXRhIGFuZCBub24tZGVmZXJyZWQgbWFpbiByZXNvdXJjZQorICAgICAgICBsb2Fk
IHRvZ2V0aGVyLiBUaGF0J3Mgd2h5IHR3byBuZXcgRFJUIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOgor
CisgICAgICAgICAqIHF1ZXVlTG9hZEhUTUxTdHJpbmcoKQorICAgICAgICAgKiBzZXREZWZlck1h
aW5SZXNvdXJjZUxvYWQoKQorCisgICAgICAgIFRoZSBjaGFuZ2UgYWRkcyBEUlQgaG9va3MgZm9y
IE1hYywgV2luIGFuZCBRdCBmb3IgdGhlc2UgdHdvIGZ1bmN0aW9ucy4gRm9yIE1hYworICAgICAg
ICBhbmQgV2luIHRoZSBob29rIHVzZXMgbmV3IFNQSSBpbiBXZWJEYXRhU291cmNlLiBGb3IgUXQg
YSBuZXcgc3RhdGljIG1lbWJlciB3YXMKKyAgICAgICAgYWRkZWQgdG8gdGhlIEZyYW1lTG9hZGVy
Q2xpZW50UXQgYW5kIGFjY2Vzc2VkIHRob3VnaCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisg
ICAgICAgICogSW50ZXJmYWNlcy9JV2ViRGF0YVNvdXJjZS5pZGw6CisgICAgICAgICogV2ViRGF0
YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpzZXREZWZlck1haW5SZXNvdXJj
ZURhdGFMb2FkKToKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmg6CisKIDIwMTAtMDctMDcgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4
CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRhdGFTb3VyY2UuaWRsIGIv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJEYXRhU291cmNlLmlkbAppbmRleCAxNWJlYTFhLi5k
ZDc4ZDdlIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRhdGFTb3VyY2Uu
aWRsCisrKyBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRGF0YVNvdXJjZS5pZGwKQEAgLTIx
NCw0ICsyMTQsNSBAQCBpbnRlcmZhY2UgSVdlYkRhdGFTb3VyY2VQcml2YXRlIDogSVVua25vd24K
ICAgICBIUkVTVUxUIG92ZXJyaWRlRW5jb2RpbmcoW291dCwgcmV0dmFsXSBCU1RSKiBlbmNvZGlu
Zyk7CiAgICAgSFJFU1VMVCBzZXRPdmVycmlkZUVuY29kaW5nKFtpbl0gQlNUUiBlbmNvZGluZyk7
CiAgICAgSFJFU1VMVCBtYWluRG9jdW1lbnRFcnJvcihbb3V0LCByZXR2YWxdIElXZWJFcnJvcioq
IGVycm9yKTsKKyAgICBIUkVTVUxUIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoW2luXSBC
T09MIGZsYWcpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcCBi
L1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggNGVjMWZkMy4uNTY2ZjE3NCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9XZWJLaXQvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCkBAIC0xMTksNiArMTE5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRGF0YVNvdXJjZTo6bWFpbkRvY3VtZW50RXJyb3IoCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6c2V0RGVmZXJN
YWluUmVzb3VyY2VEYXRhTG9hZCgKKyAgICAvKiBbaW5dICovIEJPT0wgZmxhZykKK3sKKyAgICBp
ZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgbV9sb2FkZXItPnNl
dERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmxhZyk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJE
YXRhU291cmNlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5oIGIvV2ViS2l0L3dpbi9XZWJE
YXRhU291cmNlLmgKaW5kZXggNzA5OThhZS4uM2JhYTAyNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9XZWJEYXRhU291cmNlLmgKKysrIGIvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmgKQEAgLTEx
MCw2ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG1haW5Eb2N1bWVudEVycm9yKAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJF
cnJvcioqIGVycm9yKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKAorICAgICAgICAvKiBbaW5dICovIEJPT0wgZmxh
Zyk7CisKICAgICAvLyBXZWJEYXRhU291cmNlCiAgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyKCkgY29uc3Q7CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggOTVmNjAxMy4uMWZiYTAzYiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEwLTA3LTA3ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9y
LmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQcmV2ZW50IGFzc2VydGlvbi9kdXBsaWNhdGUgbG9hZHMgZm9yIG5v
bi1kZWZlcnJlZCBzdWJ0aXR1dGUtZGF0YSBsb2FkcworCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg3OQorCisgICAgICAgIE1haW5SZXNvdXJjZUxv
YWRlciB1c2VzIHRoZSBtZW1iZXIgbV9pbml0aWFsUmVxdWVzdCB0byBzdG9yZSByZXF1ZXN0cyBm
b3IgZnV0dXJlCisgICAgICAgIGRlZmVycmVkIGxvYWRzLiBXaGVuIGRvaW5nIHRoZSBhY3R1YWwg
bG9hZCBpbiBoYW5kbGVEYXRhTG9hZE5vdygpLCB3ZSB0aGVyZWZvcmUKKyAgICAgICAgaGF2ZSB0
byBjbGVhciB0aGlzIHJlcXVlc3Qgc28gdGhhdCBzdWJzZXF1ZW50IGVudHJpZXMgaW50byB0aGUg
bG9hZGVyIHdpbGwgbm90CisgICAgICAgIHN0YXJ0IHlldCBhbm90aGVyIGxvYWQuCisKKyAgICAg
ICAgVGhpcyBjYW4gaGFwcGVuIGFzIGEgcmVzdWx0IG9mIGEgUGFnZUdyb3VwTG9hZERlZmVycmVy
IGdvaW5nIG91dCBvZiBzY29wZSB3aGVuCisgICAgICAgIHJldHVybmluZyBmcm9tIENocm9tZTo6
cnVuSmF2YVNjcmlwdEFsZXJ0KCksIHdoaWNoIGNhbGxzIHNldERlZmVycmVkTG9hZGluZyhmYWxz
ZSksCisgICAgICAgIGJ1dCBvbmx5IGluIHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggc3Vic3RpdHV0
ZS1kYXRhIGFuZCBub24tZGVmZXJyZWQgbWFpbiByZXNvdXJjZQorICAgICAgICBsb2FkIHRvZ2V0
aGVyLiBUaGF0J3Mgd2h5IHR3byBuZXcgRFJUIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOgorCisgICAg
ICAgICAqIHF1ZXVlTG9hZEhUTUxTdHJpbmcoKQorICAgICAgICAgKiBzZXREZWZlck1haW5SZXNv
dXJjZUxvYWQoKQorCisgICAgICAgIFRoZSBjaGFuZ2UgYWRkcyBEUlQgaG9va3MgZm9yIE1hYywg
V2luIGFuZCBRdCBmb3IgdGhlc2UgdHdvIGZ1bmN0aW9ucy4gRm9yIE1hYworICAgICAgICBhbmQg
V2luIHRoZSBob29rIHVzZXMgbmV3IFNQSSBpbiBXZWJEYXRhU291cmNlLiBGb3IgUXQgYSBuZXcg
c3RhdGljIG1lbWJlciB3YXMKKyAgICAgICAgYWRkZWQgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50
UXQgYW5kIGFjY2Vzc2VkIHRob3VnaCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChxdWV1
ZUxvYWRIVE1MU3RyaW5nQ2FsbGJhY2spOgorICAgICAgICAoc2V0RGVmZXJNYWluUmVzb3VyY2VE
YXRhTG9hZENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJNYWluUmVzb3VyY2VE
YXRhTG9hZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVlSXRlbS5oOgorICAg
ICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjpMb2FkSFRNTFN0cmluZ0l0ZW0pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcDoKKyAgICAgICAgKExvYWRI
VE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdl
YlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFT
b3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMu
bW06CisgICAgICAgIChMb2FkSFRNTFN0cmluZ0l0ZW06Omludm9rZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cmVzZXQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnF1ZXVlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9X
b3JrUXVldWVJdGVtUXQuY3BwOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2Up
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5oOgorICAgICAg
ICAoTG9hZEhUTUxTdHJpbmdJdGVtOjpMb2FkSFRNTFN0cmluZ0l0ZW0pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChSZXNv
dXJjZUxvYWREZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHA6CisgICAgICAgIChMb2FkSFRNTFN0cmluZ0l0
ZW06Omludm9rZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvV29ya1F1ZXVlSXRlbVd4
LmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKwogMjAxMC0wNy0w
NyAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCB0cml2aWFsIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlZGFiMjllLi5hYmE0NmM3IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC03
OCw2ICs3OCw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihj
b25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uCiAgICAgLCBtX2dlb2xvY2F0aW9u
UGVybWlzc2lvbihmYWxzZSkKICAgICAsIG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
cyhmYWxzZSkKICAgICAsIG1faXNQcmludGluZyhmYWxzZSkKKyAgICAsIG1fZGVmZXJNYWluUmVz
b3VyY2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV90ZXN0UGF0aE9yVVJMKHRlc3RQYXRoT3JVUkwp
CiAgICAgLCBtX2V4cGVjdGVkUGl4ZWxIYXNoKGV4cGVjdGVkUGl4ZWxIYXNoKQogewpAQCAtNzM0
LDYgKzczNSwyOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBxdWV1ZUxvYWRDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBxdWV1ZUxvYWRI
VE1MU3RyaW5nQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8v
IEhhcyBNYWMgJiBXaW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY29udGVudChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5n
Q29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4
Y2VwdGlvbik7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYmFzZVVSTDsKKyAgICBp
ZiAoYXJndW1lbnRDb3VudCA+PSAyKSB7CisgICAgICAgIGJhc2VVUkwuYWRvcHQoSlNWYWx1ZVRv
U3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgICAgICBB
U1NFUlQoISpleGNlcHRpb24pOworICAgIH0gZWxzZQorICAgICAgICBiYXNlVVJMLmFkb3B0KEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5xdWV1ZUxvYWRI
VE1MU3RyaW5nKGNvbnRlbnQuZ2V0KCksIGJhc2VVUkwuZ2V0KCkpOworCisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBxdWV1
ZVJlbG9hZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBI
YXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtOTE1LDYgKzkzOCwxOCBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXREYXRhYmFzZVF1b3RhQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgTWFj
IGFuZCBXaW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlv
dXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250
cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVy
LT5zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwg
YXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5G
b3JVUkxTY2hlbWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
Ly8gSGFzIE1hYyBhbmQgV2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMTc1Miw2ICsxNzg3LDcg
QEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9u
cygpCiAgICAgICAgIHsgInF1ZXVlQmFja05hdmlnYXRpb24iLCBxdWV1ZUJhY2tOYXZpZ2F0aW9u
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsIHF1
ZXVlRm9yd2FyZE5hdmlnYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJxdWV1ZUxv
YWQiLCBxdWV1ZUxvYWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJxdWV1ZUxvYWRIVE1M
U3RyaW5nIiwgcXVldWVMb2FkSFRNTFN0cmluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InF1ZXVlTG9hZGluZ1NjcmlwdCIsIHF1ZXVlTG9hZGluZ1NjcmlwdENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInF1ZXVlTm9uTG9hZGluZ1NjcmlwdCIsIHF1ZXVlTm9uTG9hZGluZ1Njcmlw
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVlUmVsb2FkIiwgcXVldWVSZWxvYWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApAQCAtMTc3Miw2ICsxODA4LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldENs
b3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSIsIHNldENsb3NlUmVtYWluaW5nV2luZG93
c1doZW5Db21wbGV0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEN1c3RvbVBvbGlj
eURlbGVnYXRlIiwgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGVDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXREYXRhYmFzZVF1b3RhIiwgc2V0RGF0YWJhc2VRdW90YUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sIAorICAgICAgICB7ICJzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkIiwgc2V0RGVmZXJN
YWluUmVzb3VyY2VEYXRhTG9hZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldERvbWFp
blJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUiLCBzZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0RWRpdGlu
Z0JlaGF2aW9yIiwgc2V0RWRpdGluZ0JlaGF2aW9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCIsIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApAQCAtMTgyMCw2ICsxODU3LDExIEBAIEpTU3RhdGljRnVuY3Rpb24q
IExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgIHJldHVybiBzdGF0
aWNGdW5jdGlvbnM7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEhU
TUxTdHJpbmcoSlNTdHJpbmdSZWYgY29udGVudCwgSlNTdHJpbmdSZWYgYmFzZVVSTCkKK3sKKyAg
ICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgTG9hZEhUTUxTdHJpbmdJdGVtKGNvbnRl
bnQsIGJhc2VVUkwpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVCYWNr
TmF2aWdhdGlvbihpbnQgaG93RmFyQmFjaykKIHsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5x
dWV1ZShuZXcgQmFja0l0ZW0oaG93RmFyQmFjaykpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYmU3OTQ3My4uYTMxYzE3MyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXVlQmFja05hdmlnYXRp
b24oaW50IGhvd0ZhckJhY2t3YXJkKTsKICAgICB2b2lkIHF1ZXVlRm9yd2FyZE5hdmlnYXRpb24o
aW50IGhvd0ZhckZvcndhcmQpOwogICAgIHZvaWQgcXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwg
SlNTdHJpbmdSZWYgdGFyZ2V0KTsKKyAgICB2b2lkIHF1ZXVlTG9hZEhUTUxTdHJpbmcoSlNTdHJp
bmdSZWYgY29udGVudCwgSlNTdHJpbmdSZWYgYmFzZVVSTCk7CiAgICAgdm9pZCBxdWV1ZUxvYWRp
bmdTY3JpcHQoSlNTdHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIHF1ZXVlTm9uTG9hZGluZ1Nj
cmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVSZWxvYWQoKTsKQEAgLTIz
MCw2ICsyMzEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBnbG9iYWxGbGFnKCkgY29uc3QgeyByZXR1
cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxGbGFnKGJvb2wgZ2xvYmFsRmxh
ZykgeyBtX2dsb2JhbEZsYWcgPSBnbG9iYWxGbGFnOyB9CiAgICAgCisgICAgYm9vbCBkZWZlck1h
aW5SZXNvdXJjZURhdGFMb2FkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkOyB9CisgICAgdm9pZCBzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGJvb2wgZmxh
ZykgeyBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQgPSBmbGFnOyB9CisKICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdFBhdGhPclVS
TDsgfQogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwZWN0ZWRQaXhlbEhhc2g7IH0KICAgICAKQEAgLTMxNiw2ICszMjAsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9nZW9sb2NhdGlvblBlcm1pc3Npb247CiAgICAgYm9vbCBtX2hh
bmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXM7CiAgICAgYm9vbCBtX2lzUHJpbnRpbmc7Cisg
ICAgYm9vbCBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ7CiAKICAgICBzdGQ6OnN0cmluZyBt
X2F1dGhlbnRpY2F0aW9uVXNlcm5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlv
blBhc3N3b3JkOyAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtR
dWV1ZUl0ZW0uaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaApp
bmRleCA1NmJlMzc3Li4zNDI3NmM4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9Xb3JrUXVldWVJdGVtLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvV29y
a1F1ZXVlSXRlbS5oCkBAIC01Myw2ICs1MywyMSBAQCBwcml2YXRlOgogICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBtX3RhcmdldDsKIH07CiAKK2NsYXNzIExvYWRIVE1MU3RyaW5nSXRlbSA6
IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3B1YmxpYzoKKyAgICBMb2FkSFRNTFN0cmluZ0l0ZW0o
Y29uc3QgSlNTdHJpbmdSZWYgY29udGVudCwgY29uc3QgSlNTdHJpbmdSZWYgYmFzZVVSTCkKKyAg
ICAgICAgOiBtX2NvbnRlbnQoY29udGVudCkKKyAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTCkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpbnZva2UoKSBjb25z
dDsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtX2NvbnRlbnQ7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IG1fYmFzZVVSTDsKK307CisKIGNsYXNzIFJlbG9hZEl0ZW0gOiBw
dWJsaWMgV29ya1F1ZXVlSXRlbSB7CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpbnZva2Uo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3Jr
UXVldWVJdGVtR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVl
dWVJdGVtR3RrLmNwcAppbmRleCBlMGUwZmZiLi5hZmU4MWJlIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCkBAIC01Niw2ICs1
NiwxMSBAQCBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCitib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIGJvb2wgUmVsb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKICAgICB3
ZWJraXRfd2ViX2ZyYW1lX3JlbG9hZChtYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDkyNDQx
MTAuLmQzZTQ2YTYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkxh
eW91dFRlc3RDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3Vy
Y2VQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtMTMxLDYgKzEzMiwxMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgICAg
ICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CiAKKyAgICBpZiAo
IWRvbmUgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZCgpKSB7CisgICAgICAgIFtkYXRhU291cmNlIF9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
OmZhbHNlXTsKKyAgICB9CisKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVy
LT53aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1h
Yy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1t
CmluZGV4IDRlMzlhNWEuLjc5N2FmYjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tCkBAIC01NCw2ICs1NCwxNSBAQCBib29sIExv
YWRJdGVtOjppbnZva2UoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIExvYWRI
VE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNvbnRlbnRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX2NvbnRlbnQuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJh
c2VVUkxDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX2Jhc2VVUkwuZ2V0KCkpKTsKKworICAgIFttYWluRnJhbWUgbG9hZEhUTUxTdHJpbmc6KE5T
U3RyaW5nICopY29udGVudENGLmdldCgpIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5T
U3RyaW5nICopYmFzZVVSTENGLmdldCgpXV07CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
UmVsb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBy
ZWxvYWQ6bmlsXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggMDA4MTkwZi4uYWE0MzYyNiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cmVzZXQoKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMb2FkZXIoZmFs
c2UpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKGZhbHNlKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFJlc291cmNlUmVz
cG9uc2VNSU1FVHlwZXMoZmFsc2UpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRE
ZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QoZmFsc2UpOwogICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChm
YWxzZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5kUmVxdWVzdENs
ZWFySGVhZGVycyhRU3RyaW5nTGlzdCgpKTsKQEAgLTI0OSw2ICsyNTAsMTEgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoY29uc3QgUVN0
cmluZ0xpc3QmIGhlYWQKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRS
ZXF1ZXN0Q2xlYXJIZWFkZXJzKGhlYWRlcnMpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGJvb2wgZGVmZXIpCit7CisgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZGVmZXIp
OworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUJhY2tOYXZpZ2F0aW9uKGlu
dCBob3dGYXJCYWNrd2FyZCkKIHsKICAgICAvL3FEZWJ1ZygpIDw8ICI+Pj5xdWV1ZUJhY2tOYXZp
Z2F0aW9uIiA8PCBob3dGYXJCYWNrd2FyZDsKQEAgLTI2OSw2ICsyNzUsMTEgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkKGNvbnN0IFFTdHJpbmcmIHVybCwgY29uc3QgUVN0
cmluZyYgdGFyZ2V0KQogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSXRl
bShhYnNvbHV0ZVVybCwgdGFyZ2V0LCBtX2RydC0+d2ViUGFnZSgpKSk7CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3QgUVN0cmluZyYgY29u
dGVudCwgY29uc3QgUVN0cmluZyYgYmFzZVVSTCkKK3sKKyAgICBXb3JrUXVldWU6OnNoYXJlZCgp
LT5xdWV1ZShuZXcgTG9hZEhUTUxTdHJpbmdJdGVtKGNvbnRlbnQsIGJhc2VVUkwsIG1fZHJ0LT53
ZWJQYWdlKCkpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVSZWxvYWQo
KQogewogICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlUmVsb2FkIjsKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRl
eCBlZDFhMjMyLi44YTc5NmE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHVi
bGljIHNsb3RzOgogICAgIHZvaWQgcXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dh
cmQpOwogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7
CiAgICAgdm9pZCBxdWV1ZUxvYWQoY29uc3QgUVN0cmluZyYgdXJsLCBjb25zdCBRU3RyaW5nJiB0
YXJnZXQgPSBRU3RyaW5nKCkpOworICAgIHZvaWQgcXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBR
U3RyaW5nJiBjb250ZW50LCBjb25zdCBRU3RyaW5nJiBiYXNlVVJMID0gUVN0cmluZygpKTsKICAg
ICB2b2lkIHF1ZXVlUmVsb2FkKCk7CiAgICAgdm9pZCBxdWV1ZUxvYWRpbmdTY3JpcHQoY29uc3Qg
UVN0cmluZyYgc2NyaXB0KTsKICAgICB2b2lkIHF1ZXVlTm9uTG9hZGluZ1NjcmlwdChjb25zdCBR
U3RyaW5nJiBzY3JpcHQpOwpAQCAtMTQ4LDYgKzE0OSw3IEBAIHB1YmxpYyBzbG90czoKICAgICB2
b2lkIHJlc2V0TG9hZEZpbmlzaGVkKCkgeyBtX2xvYWRGaW5pc2hlZCA9IGZhbHNlOyB9CiAgICAg
dm9pZCBzZXRXaW5kb3dJc0tleShib29sIGlzS2V5KTsKICAgICB2b2lkIHNldE1haW5GcmFtZUlz
Rmlyc3RSZXNwb25kZXIoYm9vbCBpc0ZpcnN0KTsKKyAgICB2b2lkIHNldERlZmVyTWFpblJlc291
cmNlRGF0YUxvYWQoYm9vbCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5h
YmxlKTsKICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9Xb3JrUXVldWVJdGVtUXQuY3BwCmlu
ZGV4IDA2N2U2YWEuLmQxYmFmMDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmNwcApAQCAtNjAsNiArNjAsMTggQEAgYm9vbCBMb2FkSXRl
bTo6aW52b2tlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBMb2FkSFRNTFN0
cmluZ0l0ZW06Omludm9rZSgpIGNvbnN0Cit7CisgICAgUV9BU1NFUlQobV93ZWJQYWdlKTsKKwor
ICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZyYW1lLT5zZXRIdG1sKG1fY29u
dGVudCwgUVVybChtX2Jhc2VVUkwpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBSZWxv
YWRJdGVtOjppbnZva2UoKSBjb25zdAogewogICAgIC8vcURlYnVnKCkgPDwgIj4+PlJlbG9hZEl0
ZW06Omludm9rZSI7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9X
b3JrUXVldWVJdGVtUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1
ZUl0ZW1RdC5oCmluZGV4IDk0ZGE1ZTEuLjk3YzliMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5oCkBAIC02NCw2ICs2NCwyMiBAQCBwcml2
YXRlOgogICAgIFFTdHJpbmcgbV90YXJnZXQ7CiB9OwogCitjbGFzcyBMb2FkSFRNTFN0cmluZ0l0
ZW0gOiBwdWJsaWMgV29ya1F1ZXVlSXRlbSB7CitwdWJsaWM6CisgICAgTG9hZEhUTUxTdHJpbmdJ
dGVtKGNvbnN0IFFTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFFTdHJpbmcgJmJhc2VVUkwsIFFXZWJQ
YWdlICpwYWdlKQorICAgICAgICA6IFdvcmtRdWV1ZUl0ZW0ocGFnZSkKKyAgICAgICAgLCBtX2Nv
bnRlbnQoY29udGVudCkKKyAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTCkKKyAgICB7CisgICAg
fQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpbnZva2UoKSBjb25zdDsKKworICAgIFFT
dHJpbmcgbV9jb250ZW50OworICAgIFFTdHJpbmcgbV9iYXNlVVJMOworfTsKKwogY2xhc3MgUmVs
b2FkSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKIHB1YmxpYzoKICAgICBSZWxvYWRJdGVt
KFFXZWJQYWdlICpwYWdlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMmUwMzFkYS4uMjVkMmQ3MCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVn
YXRlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuY3BwCkBAIC0yNTAsNiArMjUwLDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCgKICAgICAgICAgICAgIGRl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlZGlyZWN0UmVzcG9uc2UpLmNfc3RyKCkp
OwogICAgIH0KIAorICAgIGlmICghZG9uZSAmJiAhZ0xheW91dFRlc3RDb250cm9sbGVyLT5kZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKCkpIHsKKyAgICAgICAgQ09NUHRyPElXZWJEYXRhU291cmNl
UHJpdmF0ZT4gZGF0YVNvdXJjZVByaXZhdGU7CisgICAgICAgIGlmIChGQUlMRUQoZGF0YVNvdXJj
ZS0+UXVlcnlJbnRlcmZhY2UoJmRhdGFTb3VyY2VQcml2YXRlKSkpCisgICAgICAgICAgICByZXR1
cm4gU19GQUlMRUQ7CisgICAgICAgIGRhdGFTb3VyY2VQcml2YXRlLT5zZXREZWZlck1haW5SZXNv
dXJjZURhdGFMb2FkKGZhbHNlKTsKKyAgICB9CisKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpKSB7CiAgICAgICAgICpu
ZXdSZXF1ZXN0ID0gMDsKICAgICAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAKaW5kZXggN2M2MGQzZC4u
ZGI3ZjZiYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtR
dWV1ZUl0ZW1XaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Xb3Jr
UXVldWVJdGVtV2luLmNwcApAQCAtODEsNiArODEsMjIgQEAgYm9vbCBMb2FkSXRlbTo6aW52b2tl
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBMb2FkSFRNTFN0cmluZ0l0ZW06
Omludm9rZSgpIGNvbnN0Cit7CisgICAgd3N0cmluZyBjb250ZW50ID0ganNTdHJpbmdSZWZUb1dT
dHJpbmcobV9jb250ZW50LmdldCgpKTsKKyAgICB3c3RyaW5nIGJhc2VVUkwgPSBqc1N0cmluZ1Jl
ZlRvV1N0cmluZyhtX2Jhc2VVUkwuZ2V0KCkpOworCisgICAgQlNUUiBjb250ZW50QlNUUiA9IFN5
c0FsbG9jU3RyaW5nKGNvbnRlbnQuY19zdHIoKSk7CisgICAgQlNUUiBiYXNlVVJMQlNUUiA9IFN5
c0FsbG9jU3RyaW5nKGJhc2VVUkwuY19zdHIoKSk7CisKKyAgICBmcmFtZS0+bG9hZERhdGEoY29u
dGVudEJTVFIsIGJhc2VVUkxCU1RSKTsKKworICAgIFN5c0ZyZWVTdHJpbmcoY29udGVudEJTVFIp
OworICAgIFN5c0ZyZWVTdHJpbmcoYmFzZVVSTEJTVFIpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKIGJvb2wgUmVsb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKICAgICBDT01QdHI8SVdlYlZp
ZXc+IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9X
b3JrUXVldWVJdGVtV3guY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvV29ya1F1
ZXVlSXRlbVd4LmNwcAppbmRleCAzZThkYTE5Li5lNmVjYjc1IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93eC9Xb3JrUXVldWVJdGVtV3guY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L1dvcmtRdWV1ZUl0ZW1XeC5jcHAKQEAgLTM2LDYgKzM2LDEx
IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIGJvb2wgUmVsb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gZmFsc2U7Ci0tIAoxLjcuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60863</attachid>
            <date>2010-07-08 03:42:41 -0700</date>
            <delta_ts>2010-07-12 06:36:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30879-20100708124238.patch</filename>
            <type>text/plain</type>
            <size>38915</size>
            <attacher name="Tor Arne Vestbø">vestbo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhYWM5MzQ5NGJlNzliZTVjN2RmNDc3YjlhZmRiN2IxNjA3NzY5Y2M3Li44ZWY1N2E5
MTY5NDBkNWY5MjIwM2M4NTllNGE5ZTkzNGMzYmE3NTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZl
bnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1k
YXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJlciBt
X2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAgZGVm
ZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFMb2Fk
Tm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBz
byB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAgICAg
ICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYXMg
YSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdo
ZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoKSwg
d2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9ubHkg
aW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZlcnJl
ZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdvIG5l
dyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRNTFN0
cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAgICAg
VGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVzZSB0
d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBuZXcg
U1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcworICAg
ICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhvdWdo
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICogZmFzdC9sb2FkZXIvbm9uLWRl
ZmVycmVkLXN1YnN0aXR1dGUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorCiAyMDEwLTA3LTA2ICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJz
dGl0dXRlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbm9uLWRl
ZmVycmVkLXN1YnN0aXR1dGUtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA3MmNmMjA2
YTgyZjNjOGQ0MTkxZDAyMTljZDQzNjBmMTYyN2FjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFRyaWdnZXJpbmcgYnVnIHRocm91Z2ggSlMtYWxl
cnQKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJl
ZC1zdWJzdGl0dXRlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZl
cnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjBmMmJjMWNhMzQ5NmM5MzMz
ZmVkNTJmOTQ4ODM1YzQzZmJlMWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvbm9uLWRlZmVycmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCkBAIC0wLDAgKzEsMTUg
QEAKKzxwPlRoaXMgdGVzdHMgdGhhdCB1c2luZyBzdWJzdGl0dXRlIGxvYWQgaW4gY29tYmluYXRp
b24gd2l0aCBub24tZGVmZXJyZWQgbWFpbiByZXNvdXJjZSBsb2FkaW5nIHdpbGwgbm90IGNhdXNl
Cithc3NlcnRpb25zIG9yIGR1cGxpY2F0ZSBsb2Fkcywgd2hpY2ggY2FuIGhhcHBlbiBpZiB0aGUg
c3Vic3RpdHV0ZSBkb2N1bWVudCBjb250YWlucyBKYXZhU2NyaXB0LWFsZXJ0cy48L3A+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXREZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5x
dWV1ZUxvYWRIVE1MU3RyaW5nKCI8c2NyaXB0PmlmICh0eXBlb2YoaGFzQmVlbkxvYWRlZCkgIT0g
J3VuZGVmaW5lZCcpIHsiICsKKyAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRSc7IiArCisgICAgIn0gZWxzZSB7ICIgKworICAgICAg
ICAiaGFzQmVlbkxvYWRlZCA9IHRydWU7IGRvY3VtZW50LndyaXRlKCc8ZGl2IGlkPXJlc3VsdD5Q
QVNTPC9kaXY+Jyk7IGFsZXJ0KCdUcmlnZ2VyaW5nIGJ1ZyB0aHJvdWdoIEpTLWFsZXJ0Jyk7IH0i
ICsKKyAgICAiPFwvc2NyaXB0PiIpOworfSBlbHNlCisgICAgZG9jdW1lbnQud3JpdGUoJ1RoaXMg
dGVzdCBtdXN0IGJlIHJ1biBieSBEdW1wUmVuZGVyVHJlZSEnKQorPC9zY3JpcHQ+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApp
bmRleCAyYWFlYWQ2NWJmZDQ2ZTI3ZTQ3NDRlOWY3YzkzNTg5MjNlZDQ2OWExLi44NDRmOGUxOTk0
ZDNjZWVmNWY0ZjBkZTFjMTEzYzc0ZDU1MzFlYzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMDcsNiArMjA3LDkg
QEAgV09OVEZJWCBTS0lQIDogamF2YS9sYzMgPSBURVhUCiAvLyBUT0RPOiBtb3ZlIHRvIHBsYXRm
b3JtL2Nocm9taXVtLWxpbnV4Ly4KIFdPTlRGSVggU0tJUCBNQUMgV0lOIDogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC90ZXh0L2Nocm9taXVtLWxpbnV4LWZvbnRjb25maWctcmVuZGVyc3R5bGUuaHRt
bCA9IEZBSUwKIAorLy8gTmVlZHMgRFJUIHF1ZXVlTG9hZEhUTUxTdHJpbmcgYW5kIHNldERlZmVy
TWFpblJlc291cmNlTG9hZC1pbXBsZW1lbnRhdGlvbnMKK1NLSVAgOiBmYXN0L2xvYWRlci9ub24t
ZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2FkLmh0bWwgPSBGQUlMCisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBX
T05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA4
NjdiYzU2ZmMwYjg5ODc5ZTgyZjllMTBhMDVjMDAyZjEwYzYxYjZiLi5lZmJiODY0YjI1ZThkOGMw
NzJiOTg2MzhiZGZhZGEyNGRiZDRjZDA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAt
NTI2Miw2ICs1MjYyLDkgQEAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1hcHBlYXJhbmNlLXdyYXAuaHRt
bAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA1ODQKIHN2Zy9j
dXN0b20vZm9udC1mYWNlLW5vdC1pbi1kb2N1bWVudC5zdmcKIAorIyBOZWVkcyBEUlQgcXVldWVM
b2FkSFRNTFN0cmluZyBhbmQgc2V0RGVmZXJNYWluUmVzb3VyY2VMb2FkLWltcGxlbWVudGF0aW9u
cworZmFzdC9sb2FkZXIvbm9uLWRlZmVycmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCisKICMgUHJv
YmFibHkgcmVsYXRlZCB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc2MzcKIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXBsdWdpbi1p
bi1pZnJhbWUuaHRtbAogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5kLXdyb25n
LWNyZWRlbnRpYWxzLmh0bWwgCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGEyNjc0MjgxOTQ2N2ZkNmRlZmZkYjg2MTE1OWEyOGZkN2Y0ZjFi
ZTMuLjFhZDgxZmI5ZjkxODQ5MWU0NDY3Yjc4NmQzNjFiNDNmMzU4NjRiODEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
ZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0
ZS1kYXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJl
ciBtX2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAg
ZGVmZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFM
b2FkTm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVz
dCBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAg
ICAgICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4g
YXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3Bl
IHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQo
KSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9u
bHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZl
cnJlZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdv
IG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRN
TFN0cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAg
ICAgVGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVz
ZSB0d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBu
ZXcgU1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcwor
ICAgICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhv
dWdoIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvbG9hZGVy
L25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL01h
aW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZURhdGFMb2FkTm93KToKKwogMjAxMC0wNy0wNiAgTmlrb2xhcyBaaW1tZXJtYW5u
ICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVs
emUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwYTViZjQwMzgzYjZi
YjU3Y2JkYjJhM2E1OTZhYzBjMDQ1NWY0YjQ0Li42ZjU3YTczNzk2NTI1OGYxNTQ2MzQ2MjcxNTBm
NjI0YjY3YTBmNzQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ2
NCw2ICs0NjQsMTAgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93
KE1haW5SZXNvdXJjZUxvYWRlclRpbWVyKikKICAgICBLVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURh
dGEucmVzcG9uc2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0g
bV9pbml0aWFsUmVxdWVzdC51cmwoKTsKKworICAgIC8vIENsZWFyIHRoZSBpbml0aWFsIHJlcXVl
c3QgaGVyZSBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZQorICAgIC8vIGxvYWRl
ciB3aWxsIG5vdCB0aGluayB0aGVyZSdzIHN0aWxsIGEgZGVmZXJyZWQgbG9hZCBsZWZ0IHRvIGRv
LgorICAgIG1faW5pdGlhbFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKICAgICAgICAgCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1fc3Vic3RpdHV0ZURhdGEubWltZVR5
cGUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0
YS50ZXh0RW5jb2RpbmcoKSwgIiIpOwogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7
CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDQwMGE4OTg2YzE0NGYwNDA1MDczYTFkYTIyYjFiMjlmMmQ2NWJiZTcuLjJkMzg5NTc1
M2MxNzBkNzEzODhmN2UyM2M4YWU3MjE5Njc3NTljMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQg
YXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1kYXRh
IGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJlciBtX2lu
aXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAgZGVmZXJy
ZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFMb2FkTm93
KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBzbyB0
aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAgICAgICAg
c3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYXMgYSBy
ZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdoZW4K
KyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoKSwgd2hp
Y2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9ubHkgaW4g
dGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZlcnJlZCBt
YWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdvIG5ldyBE
UlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRNTFN0cmlu
ZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAgICAgVGhl
IGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVzZSB0d28g
ZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBuZXcgU1BJ
IGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcworICAgICAg
ICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhvdWdoIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXREZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaDoKKwogMjAx
MC0wNy0wNiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
aW5kZXggYjE2YWFhODgwOWQxNWY3NDllNzQyMjU5ZTQ0NzAxMjJkMmUyYTI3My4uMDJkYmMyYzQ3
MWFhYTRhYTQwNDIwYmJiMGM1NTFmNDU1MDljZDUzZSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTIxMSw2ICsyMTEsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVz
RnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICNl
bmRpZgogfQogCistICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZs
YWcKK3sKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gW3NlbGYgX2RvY3VtZW50TG9hZGVy
XTsKKworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsb2FkZXItPnNl
dERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmxhZyk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkRhdGFTb3VyY2UgKFdlYkludGVybmFsKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2VQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZVByaXZhdGUuaAppbmRleCBhZThkNGNmMzYyMGYzNzk1OTEzOGM2NDBhZTg5MGI1
ODc2YWQ3M2E2Li5kZjljNjFlZTliMjAxMmY3YWEwMjc2NjMyNmQ4NDM0YmQ0YzhmMzU0IDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaAorKysgYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaApAQCAtMzcsNCArMzcsNiBA
QAogCiAtIChCT09MKV90cmFuc2ZlckFwcGxpY2F0aW9uQ2FjaGU6KE5TU3RyaW5nKilkZXN0aW5h
dGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAKKy0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0
YUxvYWQ6KEJPT0wpZmxhZzsKKwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOGIyNGNkMjE4N2ZlY2Y5NGQ4Y2JhZjkwMzlh
NDk4OTc2YTM4MDViOC4uN2QwNzdmMDI1NjBiY2U5ODU2NTRkNTUzYzdlZjFkYmMxMTQ4NDYxYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJu
ZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRl
ZmVycmVkIHN1YnRpdHV0ZS1kYXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVy
IHVzZXMgdGhlIG1lbWJlciBtX2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBm
dXR1cmUKKyAgICAgICAgZGVmZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2Fk
IGluIGhhbmRsZURhdGFMb2FkTm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNs
ZWFyIHRoaXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2Fk
ZXIgd2lsbCBub3QKKyAgICAgICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBU
aGlzIGNhbiBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29p
bmcgb3V0IG9mIHNjb3BlIHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5K
YXZhU2NyaXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwK
KyAgICAgICAgYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRh
dGEgYW5kIG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIu
IFRoYXQncyB3aHkgdHdvIG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAg
ICogcXVldWVMb2FkSFRNTFN0cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNl
TG9hZCgpCisKKyAgICAgICAgVGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4g
YW5kIFF0IGZvciB0aGVzZSB0d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4g
dGhlIGhvb2sgdXNlcyBuZXcgU1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0
aWMgbWVtYmVyIHdhcworICAgICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBh
bmQgYWNjZXNzZWQgdGhvdWdoIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDEwLTA3LTA3ICBN
YXJjIE11dHogIDxtYXJjLm11dHpAa2RhYi5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwCmluZGV4IDA5ZGVjNzFjNGFkMjczZGU4M2E1ZjkxNTQ2MDEzZTRiODkw
Y2EzODYuLjlmOTExMzZiYmQwOGU4YzQ3OWVhYThiOWU5Yjk1ZTg1ODEyNWE5ODAgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
KysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cApAQCAtNTQ3LDYgKzU0NywxMSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRX
aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoY29uc3QgUVN0cmluZ0xpc3QmCiAgICAgRnJhbWVM
b2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RDbGVhckhlYWRlcnMgPSBoZWFkZXJzOwogfQogCit2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
KGJvb2wgYikKK3sKKyAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkID0gYjsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Q3VzdG9t
UG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAgRnJh
bWVMb2FkZXJDbGllbnRRdDo6cG9saWN5RGVsZWdhdGVFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5k
ZXggMzA0ZTY1YjQ1ZDYyOWM3ZTQxZDUwNzM4NjdjMWE5YzZmOGM1OTkyOC4uOTBhZmE4MmU4N2Iz
OTkzOGQyZGJlZGUwMjllMGFiNDJhZTVmNzRlNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTExNiw2ICsxMTYsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoYm9v
bCBiKTsKICAgICBzdGF0aWMgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoY29u
c3QgUVN0cmluZ0xpc3QmIGhlYWRlcnMpOwogCisgICAgc3RhdGljIHZvaWQgc2V0RGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZChib29sIGIpOworCiAgICAgc3RhdGljIHZvaWQgZHVtcEVkaXRpbmdD
YWxsYmFja3MoYm9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wU2V0QWNjZXB0c0VkaXRpbmco
Ym9vbCBiKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCmluZGV4IDAzNDgyNTFhMGQ1MWFlYmJhODE1YmYzMGU1YWFlYWQyZDIzMTYwNGIu
LmZjMGY2YzM4OTQzMjZjZmIzMWNkYjVjOWQwZDNlYzI2ZDNmNzk4N2QgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTE1Nyw2ICsx
NTcsNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5z
TnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJl
cXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOwogYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyA9IGZhbHNlOworYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkID0gdHJ1ZTsKIAogUVN0cmluZ0xpc3QgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RDbGVhckhlYWRlcnM7CiBRU3RyaW5nIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoOwpAQCAtODc4LDcg
Kzg3OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkRmFsbEJhY2soY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQogewogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0g
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7Ci0gICAgaWYg
KHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICBpZiAoIWRlZmVyTWFpblJlc291cmNlRGF0
YUxvYWQgfHwgc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBsb2FkZXItPnNldERl
ZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmFsc2UpOwogICAgIHJldHVybiBsb2FkZXIucmVsZWFz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmgKaW5kZXggYjRhM2M3ZWE5NmM0N2RjYzliZjAzNTI4Yzc2OWM0ZmNjNmQ4ZmM2Zi4uZWM2NzJm
NTllYTk2YTk4NjMxNGFjYjRjNjQ1ZWJkMmJhZDljNzE5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0yMjEsNiArMjIxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBRU3RyaW5nTGlzdCBzZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAg
ICBzdGF0aWMgYm9vbCBwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgcG9s
aWN5RGVsZWdhdGVQZXJtaXNzaXZlOworICAgIHN0YXRpYyBib29sIGRlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQ7CiAKIHByaXZhdGU6CiAgICAgRnJhbWUgKm1fZnJhbWU7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGI3YTI3ZDE1
ZGVjYzNiMzc5ZTRhYTQ2ODY1ZGZlNWYzNTI1YjdlNjAuLmExYjViYmU4MWRmNWJhNGYxMjMxNjQx
OThlODNmNmFjMjM3NGVmOWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDctMDcgIFRvciBB
cm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxp
Y2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1kYXRhIGxvYWRzCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODc5CisKKyAgICAg
ICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJlciBtX2luaXRpYWxSZXF1ZXN0IHRv
IHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAgZGVmZXJyZWQgbG9hZHMuIFdoZW4g
ZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFMb2FkTm93KCksIHdlIHRoZXJlZm9y
ZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNlcXVlbnQg
ZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAgICAgICAgc3RhcnQgeWV0IGFub3Ro
ZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdl
R3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdoZW4KKyAgICAgICAgcmV0dXJu
aW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVm
ZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNp
bmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCisg
ICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdvIG5ldyBEUlQgZnVuY3Rpb25zIHdl
cmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRNTFN0cmluZygpCisgICAgICAgICAq
IHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAgICAgVGhlIGNoYW5nZSBhZGRzIERS
VCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVzZSB0d28gZnVuY3Rpb25zLiBGb3Ig
TWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBuZXcgU1BJIGluIFdlYkRhdGFTb3Vy
Y2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcworICAgICAgICBhZGRlZCB0byB0aGUg
RnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhvdWdoIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAo
T09QUyEpCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJEYXRhU291cmNlLmlkbDoKKyAgICAg
ICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnNldERlZmVy
TWFpblJlc291cmNlRGF0YUxvYWQpOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuaDoKKwogMjAx
MC0wNy0wNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93
cyBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRGF0YVNv
dXJjZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRhdGFTb3VyY2UuaWRsCmluZGV4
IDE1YmVhMWFlODZiZWQwZjhmOWE4NjhjNGI1NDI4MjBmMTgzNjRiZDIuLmRkNzhkN2VlYjc1NjEy
NTBhOWYyZTJhNWEyNWExNTg4MDJmMzk1Y2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViRGF0YVNvdXJjZS5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJE
YXRhU291cmNlLmlkbApAQCAtMjE0LDQgKzIxNCw1IEBAIGludGVyZmFjZSBJV2ViRGF0YVNvdXJj
ZVByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgb3ZlcnJpZGVFbmNvZGluZyhbb3V0LCBy
ZXR2YWxdIEJTVFIqIGVuY29kaW5nKTsKICAgICBIUkVTVUxUIHNldE92ZXJyaWRlRW5jb2Rpbmco
W2luXSBCU1RSIGVuY29kaW5nKTsKICAgICBIUkVTVUxUIG1haW5Eb2N1bWVudEVycm9yKFtvdXQs
IHJldHZhbF0gSVdlYkVycm9yKiogZXJyb3IpOworICAgIEhSRVNVTFQgc2V0RGVmZXJNYWluUmVz
b3VyY2VEYXRhTG9hZChbaW5dIEJPT0wgZmxhZyk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwIGIvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA0
ZWMxZmQzZjI2MTZjOTk2OTZjNmM4ZWU2ZmFmMzRlMTU0YzBmZTYyLi41NjZmMTc0Mjk4ZDAyODcx
MWViN2U2MmJlZjNjNmU2MTE0ZmEwZTA5IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTExOSw2ICsx
MTksMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjptYWluRG9j
dW1lbnRFcnJvcigKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEYXRhU291cmNlOjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKAorICAgIC8q
IFtpbl0gKi8gQk9PTCBmbGFnKQoreworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIHJldHVy
biBFX0ZBSUw7CisKKyAgICBtX2xvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChm
bGFnKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJE
YXRhU291cmNlLmggYi9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaAppbmRleCA3MDk5OGFlMGMw
OTI5NzVmZTcwODM5NTI2ODNlOWQxY2NjM2U3YzFhLi4zYmFhMDI0OTQxYTkzZjE0ZmU2NjAyYWU0
ZDIzNGFkMDBlZmIwYTBhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaAor
KysgYi9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaApAQCAtMTEwLDYgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFpbkRvY3VtZW50RXJy
b3IoCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkVycm9yKiogZXJyb3IpOwogCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQoCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKTsKKwogICAgIC8vIFdlYkRh
dGFTb3VyY2UKICAgICBXZWJEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdDsK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCA5NWY2MDEzNDE3OWVmM2M0NDBiZDUxMjJjYWU0ODNjNDExNDI2
M2I1Li4xZmJhMDNiOTkwZDUyYTk5NGZlZjI2NWFmNGUyM2M3MmQyMzMwODVmIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjEgQEAKKzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0
Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVk
IHN1YnRpdHV0ZS1kYXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMg
dGhlIG1lbWJlciBtX2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUK
KyAgICAgICAgZGVmZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhh
bmRsZURhdGFMb2FkTm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRo
aXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2ls
bCBub3QKKyAgICAgICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNh
biBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0
IG9mIHNjb3BlIHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2Ny
aXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAg
ICAgYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5k
IG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQn
cyB3aHkgdHdvIG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVl
dWVMb2FkSFRNTFN0cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgp
CisKKyAgICAgICAgVGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0
IGZvciB0aGVzZSB0d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhv
b2sgdXNlcyBuZXcgU1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVt
YmVyIHdhcworICAgICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNj
ZXNzZWQgdGhvdWdoIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKHF1ZXVlTG9hZEhUTUxT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkQ2Fs
bGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTFN0cmluZyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmg6CisgICAgICAgIChMb2Fk
SFRNTFN0cmluZ0l0ZW06OkxvYWRIVE1MU3RyaW5nSXRlbSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJ
dGVtOjppbnZva2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNv
dXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbToKKyAgICAg
ICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJN
YWluUmVzb3VyY2VEYXRhTG9hZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVl
dWVMb2FkSFRNTFN0cmluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0
ZW1RdC5jcHA6CisgICAgICAgIChMb2FkSFRNTFN0cmluZ0l0ZW06Omludm9rZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0Lmg6CisgICAgICAgIChMb2FkSFRN
TFN0cmluZ0l0ZW06OkxvYWRIVE1MU3RyaW5nSXRlbSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNlTG9hZERl
bGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9X
b3JrUXVldWVJdGVtV2luLmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9Xb3JrUXVldWVJdGVtV3guY3BwOgorICAg
ICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorCiAyMDEwLTA3LTA3ICBBbmRyYXMg
QmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRyaXZpYWwg
Zml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IGVkYWIyOWUyYjNiMGEyYTQwYTU0ZWRmNjk5YzczYmQ0OGMwYTY3ZDIu
LmFiYTQ2YzdlMjBkYTYzNmI1NzgzZWNkMzBmNzQwNmE0NDU0MWI5MmUgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTc4
LDYgKzc4LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKGNv
bnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb24KICAgICAsIG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGZhbHNlKQogICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KGZhbHNlKQogICAgICwgbV9pc1ByaW50aW5nKGZhbHNlKQorICAgICwgbV9kZWZlck1haW5SZXNv
dXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBtX3Rlc3RQYXRoT3JVUkwodGVzdFBhdGhPclVSTCkK
ICAgICAsIG1fZXhwZWN0ZWRQaXhlbEhhc2goZXhwZWN0ZWRQaXhlbEhhc2gpCiB7CkBAIC03MzQs
NiArNzM1LDI4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlTG9hZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlTG9hZEhU
TUxTdHJpbmdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8g
SGFzIE1hYyAmIFdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb250ZW50KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhj
ZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBiYXNlVVJMOworICAgIGlm
IChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgYmFzZVVSTC5hZG9wdChKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIEFT
U0VSVCghKmV4Y2VwdGlvbik7CisgICAgfSBlbHNlCisgICAgICAgIGJhc2VVUkwuYWRvcHQoSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKKworICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnF1ZXVlTG9hZEhU
TUxTdHJpbmcoY29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVl
UmVsb2FkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhh
cyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC05MTUsNiArOTM4LDE4IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldERhdGFiYXNlUXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBNYWMg
YW5kIFdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXIt
PnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBh
cmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZv
clVSTFNjaGVtZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAv
LyBIYXMgTWFjIGFuZCBXaW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xNzUyLDYgKzE3ODcsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAicXVldWVCYWNrTmF2aWdhdGlvbiIsIHF1ZXVlQmFja05hdmlnYXRpb25D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJxdWV1ZUZvcndhcmROYXZpZ2F0aW9uIiwgcXVl
dWVGb3J3YXJkTmF2aWdhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVlTG9h
ZCIsIHF1ZXVlTG9hZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInF1ZXVlTG9hZEhUTUxT
dHJpbmciLCBxdWV1ZUxvYWRIVE1MU3RyaW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cXVldWVMb2FkaW5nU2NyaXB0IiwgcXVldWVMb2FkaW5nU2NyaXB0Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAicXVldWVOb25Mb2FkaW5nU2NyaXB0IiwgcXVldWVOb25Mb2FkaW5nU2NyaXB0
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicXVldWVSZWxvYWQiLCBxdWV1ZVJlbG9hZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCkBAIC0xNzcyLDYgKzE4MDgsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0Q2xv
c2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dz
V2hlbkNvbXBsZXRlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q3VzdG9tUG9saWN5
RGVsZWdhdGUiLCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldERhdGFiYXNlUXVvdGEiLCBzZXREYXRhYmFzZVF1b3RhQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwgCisgICAgICAgIHsgInNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQiLCBzZXREZWZlck1h
aW5SZXNvdXJjZURhdGFMb2FkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0RG9tYWlu
UmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSIsIHNldERvbWFpblJlbGF4YXRpb25Gb3Ji
aWRkZW5Gb3JVUkxTY2hlbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRFZGl0aW5n
QmVoYXZpb3IiLCBzZXRFZGl0aW5nQmVoYXZpb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkIiwgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCkBAIC0xODIwLDYgKzE4NTcsMTEgQEAgSlNTdGF0aWNGdW5jdGlvbiog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgcmV0dXJuIHN0YXRp
Y0Z1bmN0aW9uczsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRN
TFN0cmluZyhKU1N0cmluZ1JlZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKQoreworICAg
IFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVu
dCwgYmFzZVVSTCkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUJhY2tO
YXZpZ2F0aW9uKGludCBob3dGYXJCYWNrKQogewogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1
ZXVlKG5ldyBCYWNrSXRlbShob3dGYXJCYWNrKSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBiZTc5NDczOWQ1Njc0M2ZiMmVj
MTU1NjU0OTk2ZjcyMDc4OGZkZTBmLi5hMzFjMTczODQxMDc0ODBiOGEwMDFmZjJlMzBkMWI3YzRh
ZDg3YjlhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcXVldWVCYWNr
TmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2
aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUxvYWQoSlNTdHJpbmdS
ZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpOworICAgIHZvaWQgcXVldWVMb2FkSFRNTFN0cmlu
ZyhKU1N0cmluZ1JlZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKTsKICAgICB2b2lkIHF1
ZXVlTG9hZGluZ1NjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVOb25M
b2FkaW5nU2NyaXB0KEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBxdWV1ZVJlbG9hZCgp
OwpAQCAtMjMwLDYgKzIzMSw5IEBAIHB1YmxpYzoKICAgICBib29sIGdsb2JhbEZsYWcoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbEZsYWc7IH0KICAgICB2b2lkIHNldEdsb2JhbEZsYWcoYm9vbCBn
bG9iYWxGbGFnKSB7IG1fZ2xvYmFsRmxhZyA9IGdsb2JhbEZsYWc7IH0KICAgICAKKyAgICBib29s
IGRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyTWFpblJl
c291cmNlRGF0YUxvYWQ7IH0KKyAgICB2b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQo
Ym9vbCBmbGFnKSB7IG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCA9IGZsYWc7IH0KKwogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0
UGF0aE9yVVJMOyB9CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFBpeGVsSGFzaDsgfQogICAgIApAQCAtMzE2LDYgKzMy
MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsKICAgICBi
b29sIG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlczsKICAgICBib29sIG1faXNQcmlu
dGluZzsKKyAgICBib29sIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDsKIAogICAgIHN0ZDo6
c3RyaW5nIG1fYXV0aGVudGljYXRpb25Vc2VybmFtZTsKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhl
bnRpY2F0aW9uUGFzc3dvcmQ7IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvV29ya1F1ZXVlSXRlbS5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVl
SXRlbS5oCmluZGV4IDU2YmUzNzc1ZTI2YzM5MzE3OWFiYjNhNTQ2NDFhYmEwOGMzMjBhZjYuLjM0
Mjc2YzhkNDZkMzExMDliNzllNGJmMWU0NWU0NTNhYTE5Zjc5ZTggMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmgKQEAgLTUzLDYgKzUzLDIxIEBAIHByaXZhdGU6
CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1fdGFyZ2V0OwogfTsKIAorY2xhc3MgTG9h
ZEhUTUxTdHJpbmdJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0geworcHVibGljOgorICAgIExv
YWRIVE1MU3RyaW5nSXRlbShjb25zdCBKU1N0cmluZ1JlZiBjb250ZW50LCBjb25zdCBKU1N0cmlu
Z1JlZiBiYXNlVVJMKQorICAgICAgICA6IG1fY29udGVudChjb250ZW50KQorICAgICAgICAsIG1f
YmFzZVVSTChiYXNlVVJMKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBi
b29sIGludm9rZSgpIGNvbnN0OworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1fY29u
dGVudDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbV9iYXNlVVJMOworfTsKKwogY2xh
c3MgUmVsb2FkSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGludm9rZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCmluZGV4IGUwZTBmZmIzZDAwMTJhMmZmZmI0
MjkwZDkzMGY5NDg1YjFkZDA4ZWUuLmFmZTgxYmUzOTgxYzQ2NTM1ODFkNzJlNTI1NTkxNTI5NGU4
YzgzMTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVl
dWVJdGVtR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1
ZXVlSXRlbUd0ay5jcHAKQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjpp
bnZva2UoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBSZWxvYWRJdGVt
OjppbnZva2UoKSBjb25zdAogewogICAgIHdlYmtpdF93ZWJfZnJhbWVfcmVsb2FkKG1haW5GcmFt
ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0KaW5kZXggOTI0NDExMDdjMjIxOWFmYzcyMDRiYTQ0NjEwYjgzM2NiOTRj
ZGIyZC4uZDNlNDZhNmYzYzFjZDk5NDM1NTBjMTBhNGFlOTZlODI0YTc2NWFmOCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1t
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVy
bmFsLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZVByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xMzEsNiArMTMy
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJp
bmcgVVRGOFN0cmluZ10pOwogICAgIH0KIAorICAgIGlmICghZG9uZSAmJiAhZ0xheW91dFRlc3RD
b250cm9sbGVyLT5kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkpIHsKKyAgICAgICAgW2RhdGFT
b3VyY2UgX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6ZmFsc2VdOworICAgIH0KKwogICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMubW0KaW5kZXggNGUzOWE1YTZlMjc4MDli
NDg2NTM5NGY3Mjk1MzJhODNmNTJkZmE3NS4uNzk3YWZiNzFiZmY1ZDMyOGUwNTg2ZWU2ZTBjYWRm
MDdiNTBiZjY5NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dv
cmtRdWV1ZUl0ZW1NYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dv
cmtRdWV1ZUl0ZW1NYWMubW0KQEAgLTU0LDYgKzU0LDE1IEBAIGJvb2wgTG9hZEl0ZW06Omludm9r
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVt
OjppbnZva2UoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29udGVudENG
KEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29u
dGVudC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFzZVVSTENGKEFkb3B0
Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fYmFzZVVSTC5n
ZXQoKSkpOworCisgICAgW21haW5GcmFtZSBsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKiljb250
ZW50Q0YuZ2V0KCkgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKiliYXNl
VVJMQ0YuZ2V0KCldXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBSZWxvYWRJdGVtOjpp
bnZva2UoKSBjb25zdAogewogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHJlbG9hZDpuaWxdOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAppbmRleCAwMDgxOTBmYmU4MmY0ODllYzg5MzU0NjUwOTM2MzEzYTg0Zjc5
YzE0Li5hYTQzNjI2NmYwZDJmZjg2MGM0OGJiZDUyZTE2YmIwODU0MTkzNDQ3IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcApAQCAtNzIsNiArNzIsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNl
dCgpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBGcmFtZUxvYWRlcihmYWxzZSk7
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
ZmFsc2UpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VSZXNwb25z
ZU1JTUVUeXBlcyhmYWxzZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVy
TWFpblJlc291cmNlRGF0YUxvYWQodHJ1ZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChmYWxzZSk7CiAgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGZhbHNl
KTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXJzKFFTdHJpbmdMaXN0KCkpOwpAQCAtMjQ5LDYgKzI1MCwxMSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihjb25zdCBRU3RyaW5n
TGlzdCYgaGVhZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcnMoaGVhZGVycyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoYm9vbCBkZWZlcikKK3sKKyAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChkZWZlcik7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhv
d0ZhckJhY2t3YXJkKQogewogICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlQmFja05hdmlnYXRp
b24iIDw8IGhvd0ZhckJhY2t3YXJkOwpAQCAtMjY5LDYgKzI3NSwxMSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoY29uc3QgUVN0cmluZyYgdXJsLCBjb25zdCBRU3RyaW5n
JiB0YXJnZXQpCiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IExvYWRJdGVtKGFi
c29sdXRlVXJsLCB0YXJnZXQsIG1fZHJ0LT53ZWJQYWdlKCkpKTsKIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBRU3RyaW5nJiBjb250ZW50
LCBjb25zdCBRU3RyaW5nJiBiYXNlVVJMKQoreworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1
ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVudCwgYmFzZVVSTCwgbV9kcnQtPndlYlBh
Z2UoKSkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZVJlbG9hZCgpCiB7
CiAgICAgLy9xRGVidWcoKSA8PCAiPj4+cXVldWVSZWxvYWQiOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGVk
MWEyMzJlODg3NjEwOTg2Mjg2ZjYyM2FhYzM5ZTY2ZDhlMzVlNWIuLjhhNzk2YTljYTllMWQxZjRl
ZWQ0ODM4YWNmNjhhYzQwNWFlZTUzNGUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTExMiw2ICsxMTIsNyBA
QCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBxdWV1ZUJhY2tOYXZpZ2F0aW9uKGludCBob3dGYXJC
YWNrd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGludCBob3dGYXJGb3J3
YXJkKTsKICAgICB2b2lkIHF1ZXVlTG9hZChjb25zdCBRU3RyaW5nJiB1cmwsIGNvbnN0IFFTdHJp
bmcmIHRhcmdldCA9IFFTdHJpbmcoKSk7CisgICAgdm9pZCBxdWV1ZUxvYWRIVE1MU3RyaW5nKGNv
bnN0IFFTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFFTdHJpbmcmIGJhc2VVUkwgPSBRU3RyaW5nKCkp
OwogICAgIHZvaWQgcXVldWVSZWxvYWQoKTsKICAgICB2b2lkIHF1ZXVlTG9hZGluZ1NjcmlwdChj
b25zdCBRU3RyaW5nJiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVOb25Mb2FkaW5nU2NyaXB0KGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCk7CkBAIC0xNDgsNiArMTQ5LDcgQEAgcHVibGljIHNsb3RzOgog
ICAgIHZvaWQgcmVzZXRMb2FkRmluaXNoZWQoKSB7IG1fbG9hZEZpbmlzaGVkID0gZmFsc2U7IH0K
ICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGJvb2wgaXNLZXkpOwogICAgIHZvaWQgc2V0TWFpbkZy
YW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGlzRmlyc3QpOworICAgIHZvaWQgc2V0RGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZChib29sKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9v
bCBlbmFibGUpOwogICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRl
bVF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5j
cHAKaW5kZXggMDY3ZTZhYWJiYjRmNjA4ODZiYmZiZWVlMjYwNDBmM2JkYjNhMzA4ZC4uZDFiYWYw
OGI2MTFhNTRmNGVkMjkwMjFiNTE5MmY1ZTlkZmQ3NTU3YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9Xb3JrUXVldWVJdGVtUXQuY3BwCkBAIC02MCw2ICs2MCwxOCBA
QCBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBRX0FTU0VSVCht
X3dlYlBhZ2UpOworCisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fd2ViUGFnZS0+bWFpbkZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnJhbWUt
PnNldEh0bWwobV9jb250ZW50LCBRVXJsKG1fYmFzZVVSTCkpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiB7CiAgICAgLy9xRGVidWcoKSA8
PCAiPj4+UmVsb2FkSXRlbTo6aW52b2tlIjsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmgKaW5kZXggOTRkYTVlMTAyZWMwYjI3NTk2NDM5YTZhMDRi
M2Q0YWJkMTQ4ZWUzMy4uOTdjOWIwNGEwNzRiYjA2NDIyMzU3NTQxYTBkZGI3NzZkMTUwNTIzNiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0
LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmgK
QEAgLTY0LDYgKzY0LDIyIEBAIHByaXZhdGU6CiAgICAgUVN0cmluZyBtX3RhcmdldDsKIH07CiAK
K2NsYXNzIExvYWRIVE1MU3RyaW5nSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3B1Ymxp
YzoKKyAgICBMb2FkSFRNTFN0cmluZ0l0ZW0oY29uc3QgUVN0cmluZyYgY29udGVudCwgY29uc3Qg
UVN0cmluZyAmYmFzZVVSTCwgUVdlYlBhZ2UgKnBhZ2UpCisgICAgICAgIDogV29ya1F1ZXVlSXRl
bShwYWdlKQorICAgICAgICAsIG1fY29udGVudChjb250ZW50KQorICAgICAgICAsIG1fYmFzZVVS
TChiYXNlVVJMKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlu
dm9rZSgpIGNvbnN0OworCisgICAgUVN0cmluZyBtX2NvbnRlbnQ7CisgICAgUVN0cmluZyBtX2Jh
c2VVUkw7Cit9OworCiBjbGFzcyBSZWxvYWRJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0gewog
cHVibGljOgogICAgIFJlbG9hZEl0ZW0oUVdlYlBhZ2UgKnBhZ2UpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAppbmRl
eCAyZTAzMWRhM2IwZDM0Yzk5YzczZmI4MWZjOGI3NDQ3M2RlMzU2Y2NiLi5iYzM3MGQ4NWViYTI2
N2RlYTQ4ODNkZjQ5OWU3MTNhMTI2MzdhZTUwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI1MCw2ICsy
NTAsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6
d2lsbFNlbmRSZXF1ZXN0KAogICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQocmVkaXJlY3RSZXNwb25zZSkuY19zdHIoKSk7CiAgICAgfQogCisgICAgaWYgKCFkb25l
ICYmICFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoKSkg
eworICAgICAgICBDT01QdHI8SVdlYkRhdGFTb3VyY2VQcml2YXRlPiBkYXRhU291cmNlUHJpdmF0
ZShRdWVyeSwgZGF0YVNvdXJjZSk7CisgICAgICAgIGlmICghZGF0YVNvdXJjZVByaXZhdGUpCisg
ICAgICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICBkYXRhU291cmNlUHJpdmF0ZS0+c2V0
RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChGQUxTRSk7CisgICAgfQorCiAgICAgaWYgKCFkb25l
ICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkg
ewogICAgICAgICAqbmV3UmVxdWVzdCA9IDA7CiAgICAgICAgIHJldHVybiBTX09LOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtRdWV1ZUl0ZW1XaW4uY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtRdWV1ZUl0ZW1XaW4uY3BwCmlu
ZGV4IDdjNjBkM2Q2MDdhZDliNzBlOWM0NDIwYjQzNTc4NGQ5YjFjNjM5MTAuLmRiN2Y2YmM1YjMy
NzUxZjVkNTBkMmFiYTQyMTgxNDRkNDU2NjY2YTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAKQEAgLTgxLDYgKzgxLDIyIEBA
IGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIHdzdHJpbmcgY29u
dGVudCA9IGpzU3RyaW5nUmVmVG9XU3RyaW5nKG1fY29udGVudC5nZXQoKSk7CisgICAgd3N0cmlu
ZyBiYXNlVVJMID0ganNTdHJpbmdSZWZUb1dTdHJpbmcobV9iYXNlVVJMLmdldCgpKTsKKworICAg
IEJTVFIgY29udGVudEJTVFIgPSBTeXNBbGxvY1N0cmluZyhjb250ZW50LmNfc3RyKCkpOworICAg
IEJTVFIgYmFzZVVSTEJTVFIgPSBTeXNBbGxvY1N0cmluZyhiYXNlVVJMLmNfc3RyKCkpOworCisg
ICAgZnJhbWUtPmxvYWREYXRhKGNvbnRlbnRCU1RSLCBiYXNlVVJMQlNUUik7CisKKyAgICBTeXNG
cmVlU3RyaW5nKGNvbnRlbnRCU1RSKTsKKyAgICBTeXNGcmVlU3RyaW5nKGJhc2VVUkxCU1RSKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0
CiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvV29ya1F1ZXVlSXRlbVd4LmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L1dvcmtRdWV1ZUl0ZW1XeC5jcHAKaW5kZXggM2U4ZGExOWY0MmUzNTQ0
MzM3MjkwYjVjMTZkZTkyMWRhMmQ0YWU1Zi4uZTZlY2I3NTJiZDgyYjJkMWY2MjBkZDA5NWIyNmNi
YmM0NTQ5Yzc3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvV29y
a1F1ZXVlSXRlbVd4LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9Xb3Jr
UXVldWVJdGVtV3guY3BwCkBAIC0zNiw2ICszNiwxMSBAQCBib29sIExvYWRJdGVtOjppbnZva2Uo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBMb2FkSFRNTFN0cmluZ0l0ZW06
Omludm9rZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFJlbG9hZEl0
ZW06Omludm9rZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61221</attachid>
            <date>2010-07-12 06:36:20 -0700</date>
            <delta_ts>2010-07-12 13:58:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30879-20100712153616.patch</filename>
            <type>text/plain</type>
            <size>38921</size>
            <attacher name="Tor Arne Vestbø">vestbo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhYWM5MzQ5NGJlNzliZTVjN2RmNDc3YjlhZmRiN2IxNjA3NzY5Y2M3Li44ZWY1N2E5
MTY5NDBkNWY5MjIwM2M4NTllNGE5ZTkzNGMzYmE3NTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZl
bnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1k
YXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJlciBt
X2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAgZGVm
ZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFMb2Fk
Tm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBz
byB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAgICAg
ICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYXMg
YSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdo
ZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoKSwg
d2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9ubHkg
aW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZlcnJl
ZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdvIG5l
dyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRNTFN0
cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAgICAg
VGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVzZSB0
d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBuZXcg
U1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcworICAg
ICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhvdWdo
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICogZmFzdC9sb2FkZXIvbm9uLWRl
ZmVycmVkLXN1YnN0aXR1dGUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorCiAyMDEwLTA3LTA2ICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJz
dGl0dXRlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbm9uLWRl
ZmVycmVkLXN1YnN0aXR1dGUtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA3MmNmMjA2
YTgyZjNjOGQ0MTkxZDAyMTljZDQzNjBmMTYyN2FjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFRyaWdnZXJpbmcgYnVnIHRocm91Z2ggSlMtYWxl
cnQKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZlcnJl
ZC1zdWJzdGl0dXRlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL25vbi1kZWZl
cnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjBmMmJjMWNhMzQ5NmM5MzMz
ZmVkNTJmOTQ4ODM1YzQzZmJlMWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvbm9uLWRlZmVycmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCkBAIC0wLDAgKzEsMTUg
QEAKKzxwPlRoaXMgdGVzdHMgdGhhdCB1c2luZyBzdWJzdGl0dXRlIGxvYWQgaW4gY29tYmluYXRp
b24gd2l0aCBub24tZGVmZXJyZWQgbWFpbiByZXNvdXJjZSBsb2FkaW5nIHdpbGwgbm90IGNhdXNl
Cithc3NlcnRpb25zIG9yIGR1cGxpY2F0ZSBsb2Fkcywgd2hpY2ggY2FuIGhhcHBlbiBpZiB0aGUg
c3Vic3RpdHV0ZSBkb2N1bWVudCBjb250YWlucyBKYXZhU2NyaXB0LWFsZXJ0cy48L3A+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXREZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5x
dWV1ZUxvYWRIVE1MU3RyaW5nKCI8c2NyaXB0PmlmICh0eXBlb2YoaGFzQmVlbkxvYWRlZCkgIT0g
J3VuZGVmaW5lZCcpIHsiICsKKyAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRSc7IiArCisgICAgIn0gZWxzZSB7ICIgKworICAgICAg
ICAiaGFzQmVlbkxvYWRlZCA9IHRydWU7IGRvY3VtZW50LndyaXRlKCc8ZGl2IGlkPXJlc3VsdD5Q
QVNTPC9kaXY+Jyk7IGFsZXJ0KCdUcmlnZ2VyaW5nIGJ1ZyB0aHJvdWdoIEpTLWFsZXJ0Jyk7IH0i
ICsKKyAgICAiPFwvc2NyaXB0PiIpOworfSBlbHNlCisgICAgZG9jdW1lbnQud3JpdGUoJ1RoaXMg
dGVzdCBtdXN0IGJlIHJ1biBieSBEdW1wUmVuZGVyVHJlZSEnKQorPC9zY3JpcHQ+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApp
bmRleCAyYWFlYWQ2NWJmZDQ2ZTI3ZTQ3NDRlOWY3YzkzNTg5MjNlZDQ2OWExLi44NDRmOGUxOTk0
ZDNjZWVmNWY0ZjBkZTFjMTEzYzc0ZDU1MzFlYzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMDcsNiArMjA3LDkg
QEAgV09OVEZJWCBTS0lQIDogamF2YS9sYzMgPSBURVhUCiAvLyBUT0RPOiBtb3ZlIHRvIHBsYXRm
b3JtL2Nocm9taXVtLWxpbnV4Ly4KIFdPTlRGSVggU0tJUCBNQUMgV0lOIDogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC90ZXh0L2Nocm9taXVtLWxpbnV4LWZvbnRjb25maWctcmVuZGVyc3R5bGUuaHRt
bCA9IEZBSUwKIAorLy8gTmVlZHMgRFJUIHF1ZXVlTG9hZEhUTUxTdHJpbmcgYW5kIHNldERlZmVy
TWFpblJlc291cmNlTG9hZC1pbXBsZW1lbnRhdGlvbnMKK1NLSVAgOiBmYXN0L2xvYWRlci9ub24t
ZGVmZXJyZWQtc3Vic3RpdHV0ZS1sb2FkLmh0bWwgPSBGQUlMCisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBX
T05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA4
NjdiYzU2ZmMwYjg5ODc5ZTgyZjllMTBhMDVjMDAyZjEwYzYxYjZiLi5lZmJiODY0YjI1ZThkOGMw
NzJiOTg2MzhiZGZhZGEyNGRiZDRjZDA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAt
NTI2Miw2ICs1MjYyLDkgQEAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1hcHBlYXJhbmNlLXdyYXAuaHRt
bAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA1ODQKIHN2Zy9j
dXN0b20vZm9udC1mYWNlLW5vdC1pbi1kb2N1bWVudC5zdmcKIAorIyBOZWVkcyBEUlQgcXVldWVM
b2FkSFRNTFN0cmluZyBhbmQgc2V0RGVmZXJNYWluUmVzb3VyY2VMb2FkLWltcGxlbWVudGF0aW9u
cworZmFzdC9sb2FkZXIvbm9uLWRlZmVycmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCisKICMgUHJv
YmFibHkgcmVsYXRlZCB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc2MzcKIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXBsdWdpbi1p
bi1pZnJhbWUuaHRtbAogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5kLXdyb25n
LWNyZWRlbnRpYWxzLmh0bWwgCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGEyNjc0MjgxOTQ2N2ZkNmRlZmZkYjg2MTE1OWEyOGZkN2Y0ZjFi
ZTMuLjFhZDgxZmI5ZjkxODQ5MWU0NDY3Yjc4NmQzNjFiNDNmMzU4NjRiODEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
ZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0
ZS1kYXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJl
ciBtX2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAg
ZGVmZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFM
b2FkTm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVz
dCBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAg
ICAgICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4g
YXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3Bl
IHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQo
KSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9u
bHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZl
cnJlZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdv
IG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRN
TFN0cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAg
ICAgVGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVz
ZSB0d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBu
ZXcgU1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcwor
ICAgICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhv
dWdoIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvbG9hZGVy
L25vbi1kZWZlcnJlZC1zdWJzdGl0dXRlLWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL01h
aW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZURhdGFMb2FkTm93KToKKwogMjAxMC0wNy0wNiAgTmlrb2xhcyBaaW1tZXJtYW5u
ICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVs
emUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwYTViZjQwMzgzYjZi
YjU3Y2JkYjJhM2E1OTZhYzBjMDQ1NWY0YjQ0Li42ZjU3YTczNzk2NTI1OGYxNTQ2MzQ2MjcxNTBm
NjI0YjY3YTBmNzQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ2
NCw2ICs0NjQsMTAgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93
KE1haW5SZXNvdXJjZUxvYWRlclRpbWVyKikKICAgICBLVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURh
dGEucmVzcG9uc2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0g
bV9pbml0aWFsUmVxdWVzdC51cmwoKTsKKworICAgIC8vIENsZWFyIHRoZSBpbml0aWFsIHJlcXVl
c3QgaGVyZSBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZQorICAgIC8vIGxvYWRl
ciB3aWxsIG5vdCB0aGluayB0aGVyZSdzIHN0aWxsIGEgZGVmZXJyZWQgbG9hZCBsZWZ0IHRvIGRv
LgorICAgIG1faW5pdGlhbFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKICAgICAgICAgCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1fc3Vic3RpdHV0ZURhdGEubWltZVR5
cGUoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0
YS50ZXh0RW5jb2RpbmcoKSwgIiIpOwogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7
CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDQwMGE4OTg2YzE0NGYwNDA1MDczYTFkYTIyYjFiMjlmMmQ2NWJiZTcuLjJkMzg5NTc1
M2MxNzBkNzEzODhmN2UyM2M4YWU3MjE5Njc3NTljMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQg
YXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1kYXRh
IGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJlciBtX2lu
aXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAgZGVmZXJy
ZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFMb2FkTm93
KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBzbyB0
aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAgICAgICAg
c3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYXMgYSBy
ZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdoZW4K
KyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoKSwgd2hp
Y2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9ubHkgaW4g
dGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZlcnJlZCBt
YWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdvIG5ldyBE
UlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRNTFN0cmlu
ZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAgICAgVGhl
IGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVzZSB0d28g
ZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBuZXcgU1BJ
IGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcworICAgICAg
ICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhvdWdoIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXREZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaDoKKwogMjAx
MC0wNy0wNiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
aW5kZXggYjE2YWFhODgwOWQxNWY3NDllNzQyMjU5ZTQ0NzAxMjJkMmUyYTI3My4uMDJkYmMyYzQ3
MWFhYTRhYTQwNDIwYmJiMGM1NTFmNDU1MDljZDUzZSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTIxMSw2ICsyMTEsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVz
RnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICNl
bmRpZgogfQogCistICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZs
YWcKK3sKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gW3NlbGYgX2RvY3VtZW50TG9hZGVy
XTsKKworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsb2FkZXItPnNl
dERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmxhZyk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkRhdGFTb3VyY2UgKFdlYkludGVybmFsKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2VQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZVByaXZhdGUuaAppbmRleCBhZThkNGNmMzYyMGYzNzk1OTEzOGM2NDBhZTg5MGI1
ODc2YWQ3M2E2Li5kZjljNjFlZTliMjAxMmY3YWEwMjc2NjMyNmQ4NDM0YmQ0YzhmMzU0IDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaAorKysgYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZVByaXZhdGUuaApAQCAtMzcsNCArMzcsNiBA
QAogCiAtIChCT09MKV90cmFuc2ZlckFwcGxpY2F0aW9uQ2FjaGU6KE5TU3RyaW5nKilkZXN0aW5h
dGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAKKy0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0
YUxvYWQ6KEJPT0wpZmxhZzsKKwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOGIyNGNkMjE4N2ZlY2Y5NGQ4Y2JhZjkwMzlh
NDk4OTc2YTM4MDViOC4uN2QwNzdmMDI1NjBiY2U5ODU2NTRkNTUzYzdlZjFkYmMxMTQ4NDYxYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJu
ZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRl
ZmVycmVkIHN1YnRpdHV0ZS1kYXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVy
IHVzZXMgdGhlIG1lbWJlciBtX2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBm
dXR1cmUKKyAgICAgICAgZGVmZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2Fk
IGluIGhhbmRsZURhdGFMb2FkTm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNs
ZWFyIHRoaXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2Fk
ZXIgd2lsbCBub3QKKyAgICAgICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBU
aGlzIGNhbiBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29p
bmcgb3V0IG9mIHNjb3BlIHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5K
YXZhU2NyaXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwK
KyAgICAgICAgYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRh
dGEgYW5kIG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIu
IFRoYXQncyB3aHkgdHdvIG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAg
ICogcXVldWVMb2FkSFRNTFN0cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNl
TG9hZCgpCisKKyAgICAgICAgVGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4g
YW5kIFF0IGZvciB0aGVzZSB0d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4g
dGhlIGhvb2sgdXNlcyBuZXcgU1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0
aWMgbWVtYmVyIHdhcworICAgICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBh
bmQgYWNjZXNzZWQgdGhvdWdoIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDEwLTA3LTA3ICBN
YXJjIE11dHogIDxtYXJjLm11dHpAa2RhYi5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwCmluZGV4IDA5ZGVjNzFjNGFkMjczZGU4M2E1ZjkxNTQ2MDEzZTRiODkw
Y2EzODYuLjlmOTExMzZiYmQwOGU4YzQ3OWVhYThiOWU5Yjk1ZTg1ODEyNWE5ODAgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
KysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cApAQCAtNTQ3LDYgKzU0NywxMSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRX
aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoY29uc3QgUVN0cmluZ0xpc3QmCiAgICAgRnJhbWVM
b2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RDbGVhckhlYWRlcnMgPSBoZWFkZXJzOwogfQogCit2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
KGJvb2wgYikKK3sKKyAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkID0gYjsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Q3VzdG9t
UG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAgRnJh
bWVMb2FkZXJDbGllbnRRdDo6cG9saWN5RGVsZWdhdGVFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5k
ZXggMzA0ZTY1YjQ1ZDYyOWM3ZTQxZDUwNzM4NjdjMWE5YzZmOGM1OTkyOC4uOTBhZmE4MmU4N2Iz
OTkzOGQyZGJlZGUwMjllMGFiNDJhZTVmNzRlNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTExNiw2ICsxMTYsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoYm9v
bCBiKTsKICAgICBzdGF0aWMgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoY29u
c3QgUVN0cmluZ0xpc3QmIGhlYWRlcnMpOwogCisgICAgc3RhdGljIHZvaWQgc2V0RGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZChib29sIGIpOworCiAgICAgc3RhdGljIHZvaWQgZHVtcEVkaXRpbmdD
YWxsYmFja3MoYm9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wU2V0QWNjZXB0c0VkaXRpbmco
Ym9vbCBiKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCmluZGV4IDAzNDgyNTFhMGQ1MWFlYmJhODE1YmYzMGU1YWFlYWQyZDIzMTYwNGIu
LmZjMGY2YzM4OTQzMjZjZmIzMWNkYjVjOWQwZDNlYzI2ZDNmNzk4N2QgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTE1Nyw2ICsx
NTcsNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5z
TnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJl
cXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOwogYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyA9IGZhbHNlOworYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkID0gdHJ1ZTsKIAogUVN0cmluZ0xpc3QgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RDbGVhckhlYWRlcnM7CiBRU3RyaW5nIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoOwpAQCAtODc4LDcg
Kzg3OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkRmFsbEJhY2soY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQogewogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0g
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7Ci0gICAgaWYg
KHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICBpZiAoIWRlZmVyTWFpblJlc291cmNlRGF0
YUxvYWQgfHwgc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBsb2FkZXItPnNldERl
ZmVyTWFpblJlc291cmNlRGF0YUxvYWQoZmFsc2UpOwogICAgIHJldHVybiBsb2FkZXIucmVsZWFz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmgKaW5kZXggYjRhM2M3ZWE5NmM0N2RjYzliZjAzNTI4Yzc2OWM0ZmNjNmQ4ZmM2Zi4uZWM2NzJm
NTllYTk2YTk4NjMxNGFjYjRjNjQ1ZWJkMmJhZDljNzE5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0yMjEsNiArMjIxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBRU3RyaW5nTGlzdCBzZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAg
ICBzdGF0aWMgYm9vbCBwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgcG9s
aWN5RGVsZWdhdGVQZXJtaXNzaXZlOworICAgIHN0YXRpYyBib29sIGRlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQ7CiAKIHByaXZhdGU6CiAgICAgRnJhbWUgKm1fZnJhbWU7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGI3YTI3ZDE1
ZGVjYzNiMzc5ZTRhYTQ2ODY1ZGZlNWYzNTI1YjdlNjAuLmExYjViYmU4MWRmNWJhNGYxMjMxNjQx
OThlODNmNmFjMjM3NGVmOWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDctMDcgIFRvciBB
cm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxp
Y2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVkIHN1YnRpdHV0ZS1kYXRhIGxvYWRzCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODc5CisKKyAgICAg
ICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMgdGhlIG1lbWJlciBtX2luaXRpYWxSZXF1ZXN0IHRv
IHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUKKyAgICAgICAgZGVmZXJyZWQgbG9hZHMuIFdoZW4g
ZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhhbmRsZURhdGFMb2FkTm93KCksIHdlIHRoZXJlZm9y
ZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRoaXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNlcXVlbnQg
ZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2lsbCBub3QKKyAgICAgICAgc3RhcnQgeWV0IGFub3Ro
ZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdl
R3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0IG9mIHNjb3BlIHdoZW4KKyAgICAgICAgcmV0dXJu
aW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2NyaXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVm
ZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAgICAgYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNp
bmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5kIG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCisg
ICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQncyB3aHkgdHdvIG5ldyBEUlQgZnVuY3Rpb25zIHdl
cmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVldWVMb2FkSFRNTFN0cmluZygpCisgICAgICAgICAq
IHNldERlZmVyTWFpblJlc291cmNlTG9hZCgpCisKKyAgICAgICAgVGhlIGNoYW5nZSBhZGRzIERS
VCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0IGZvciB0aGVzZSB0d28gZnVuY3Rpb25zLiBGb3Ig
TWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhvb2sgdXNlcyBuZXcgU1BJIGluIFdlYkRhdGFTb3Vy
Y2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVtYmVyIHdhcworICAgICAgICBhZGRlZCB0byB0aGUg
RnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNjZXNzZWQgdGhvdWdoIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAo
T09QUyEpCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJEYXRhU291cmNlLmlkbDoKKyAgICAg
ICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnNldERlZmVy
TWFpblJlc291cmNlRGF0YUxvYWQpOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuaDoKKwogMjAx
MC0wNy0wNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93
cyBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRGF0YVNv
dXJjZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRhdGFTb3VyY2UuaWRsCmluZGV4
IDE1YmVhMWFlODZiZWQwZjhmOWE4NjhjNGI1NDI4MjBmMTgzNjRiZDIuLmRkNzhkN2VlYjc1NjEy
NTBhOWYyZTJhNWEyNWExNTg4MDJmMzk1Y2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViRGF0YVNvdXJjZS5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJE
YXRhU291cmNlLmlkbApAQCAtMjE0LDQgKzIxNCw1IEBAIGludGVyZmFjZSBJV2ViRGF0YVNvdXJj
ZVByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgb3ZlcnJpZGVFbmNvZGluZyhbb3V0LCBy
ZXR2YWxdIEJTVFIqIGVuY29kaW5nKTsKICAgICBIUkVTVUxUIHNldE92ZXJyaWRlRW5jb2Rpbmco
W2luXSBCU1RSIGVuY29kaW5nKTsKICAgICBIUkVTVUxUIG1haW5Eb2N1bWVudEVycm9yKFtvdXQs
IHJldHZhbF0gSVdlYkVycm9yKiogZXJyb3IpOworICAgIEhSRVNVTFQgc2V0RGVmZXJNYWluUmVz
b3VyY2VEYXRhTG9hZChbaW5dIEJPT0wgZmxhZyk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwIGIvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA0
ZWMxZmQzZjI2MTZjOTk2OTZjNmM4ZWU2ZmFmMzRlMTU0YzBmZTYyLi41NjZmMTc0Mjk4ZDAyODcx
MWViN2U2MmJlZjNjNmU2MTE0ZmEwZTA5IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTExOSw2ICsx
MTksMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjptYWluRG9j
dW1lbnRFcnJvcigKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEYXRhU291cmNlOjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKAorICAgIC8q
IFtpbl0gKi8gQk9PTCBmbGFnKQoreworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIHJldHVy
biBFX0ZBSUw7CisKKyAgICBtX2xvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChm
bGFnKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJE
YXRhU291cmNlLmggYi9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaAppbmRleCA3MDk5OGFlMGMw
OTI5NzVmZTcwODM5NTI2ODNlOWQxY2NjM2U3YzFhLi4zYmFhMDI0OTQxYTkzZjE0ZmU2NjAyYWU0
ZDIzNGFkMDBlZmIwYTBhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaAor
KysgYi9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaApAQCAtMTEwLDYgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFpbkRvY3VtZW50RXJy
b3IoCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkVycm9yKiogZXJyb3IpOwogCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQoCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKTsKKwogICAgIC8vIFdlYkRh
dGFTb3VyY2UKICAgICBXZWJEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdDsK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCA5NWY2MDEzNDE3OWVmM2M0NDBiZDUxMjJjYWU0ODNjNDExNDI2
M2I1Li4xZmJhMDNiOTkwZDUyYTk5NGZlZjI2NWFmNGUyM2M3MmQyMzMwODVmIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjEgQEAKKzIwMTAtMDctMDcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0
Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXZlbnQgYXNzZXJ0aW9uL2R1cGxpY2F0ZSBsb2FkcyBmb3Igbm9uLWRlZmVycmVk
IHN1YnRpdHV0ZS1kYXRhIGxvYWRzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwODc5CisKKyAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHVzZXMg
dGhlIG1lbWJlciBtX2luaXRpYWxSZXF1ZXN0IHRvIHN0b3JlIHJlcXVlc3RzIGZvciBmdXR1cmUK
KyAgICAgICAgZGVmZXJyZWQgbG9hZHMuIFdoZW4gZG9pbmcgdGhlIGFjdHVhbCBsb2FkIGluIGhh
bmRsZURhdGFMb2FkTm93KCksIHdlIHRoZXJlZm9yZQorICAgICAgICBoYXZlIHRvIGNsZWFyIHRo
aXMgcmVxdWVzdCBzbyB0aGF0IHN1YnNlcXVlbnQgZW50cmllcyBpbnRvIHRoZSBsb2FkZXIgd2ls
bCBub3QKKyAgICAgICAgc3RhcnQgeWV0IGFub3RoZXIgbG9hZC4KKworICAgICAgICBUaGlzIGNh
biBoYXBwZW4gYXMgYSByZXN1bHQgb2YgYSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgZ29pbmcgb3V0
IG9mIHNjb3BlIHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIGZyb20gQ2hyb21lOjpydW5KYXZhU2Ny
aXB0QWxlcnQoKSwgd2hpY2ggY2FsbHMgc2V0RGVmZXJyZWRMb2FkaW5nKGZhbHNlKSwKKyAgICAg
ICAgYnV0IG9ubHkgaW4gdGhlIGNhc2Ugb2YgdXNpbmcgYm90aCBzdWJzdGl0dXRlLWRhdGEgYW5k
IG5vbi1kZWZlcnJlZCBtYWluIHJlc291cmNlCisgICAgICAgIGxvYWQgdG9nZXRoZXIuIFRoYXQn
cyB3aHkgdHdvIG5ldyBEUlQgZnVuY3Rpb25zIHdlcmUgYWRkZWQ6CisKKyAgICAgICAgICogcXVl
dWVMb2FkSFRNTFN0cmluZygpCisgICAgICAgICAqIHNldERlZmVyTWFpblJlc291cmNlTG9hZCgp
CisKKyAgICAgICAgVGhlIGNoYW5nZSBhZGRzIERSVCBob29rcyBmb3IgTWFjLCBXaW4gYW5kIFF0
IGZvciB0aGVzZSB0d28gZnVuY3Rpb25zLiBGb3IgTWFjCisgICAgICAgIGFuZCBXaW4gdGhlIGhv
b2sgdXNlcyBuZXcgU1BJIGluIFdlYkRhdGFTb3VyY2UuIEZvciBRdCBhIG5ldyBzdGF0aWMgbWVt
YmVyIHdhcworICAgICAgICBhZGRlZCB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgYWNj
ZXNzZWQgdGhvdWdoIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKHF1ZXVlTG9hZEhUTUxT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkQ2Fs
bGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTFN0cmluZyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmg6CisgICAgICAgIChMb2Fk
SFRNTFN0cmluZ0l0ZW06OkxvYWRIVE1MU3RyaW5nSXRlbSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJ
dGVtOjppbnZva2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNv
dXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbToKKyAgICAg
ICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJN
YWluUmVzb3VyY2VEYXRhTG9hZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVl
dWVMb2FkSFRNTFN0cmluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0
ZW1RdC5jcHA6CisgICAgICAgIChMb2FkSFRNTFN0cmluZ0l0ZW06Omludm9rZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0Lmg6CisgICAgICAgIChMb2FkSFRN
TFN0cmluZ0l0ZW06OkxvYWRIVE1MU3RyaW5nSXRlbSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNlTG9hZERl
bGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9X
b3JrUXVldWVJdGVtV2luLmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9Xb3JrUXVldWVJdGVtV3guY3BwOgorICAg
ICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorCiAyMDEwLTA3LTA3ICBBbmRyYXMg
QmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRyaXZpYWwg
Zml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IGVkYWIyOWUyYjNiMGEyYTQwYTU0ZWRmNjk5YzczYmQ0OGMwYTY3ZDIu
LmFiYTQ2YzdlMjBkYTYzNmI1NzgzZWNkMzBmNzQwNmE0NDU0MWI5MmUgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTc4
LDYgKzc4LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKGNv
bnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb24KICAgICAsIG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGZhbHNlKQogICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KGZhbHNlKQogICAgICwgbV9pc1ByaW50aW5nKGZhbHNlKQorICAgICwgbV9kZWZlck1haW5SZXNv
dXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBtX3Rlc3RQYXRoT3JVUkwodGVzdFBhdGhPclVSTCkK
ICAgICAsIG1fZXhwZWN0ZWRQaXhlbEhhc2goZXhwZWN0ZWRQaXhlbEhhc2gpCiB7CkBAIC03MzQs
NiArNzM1LDI4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlTG9hZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlTG9hZEhU
TUxTdHJpbmdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8g
SGFzIE1hYyAmIFdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb250ZW50KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhj
ZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBiYXNlVVJMOworICAgIGlm
IChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgYmFzZVVSTC5hZG9wdChKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIEFT
U0VSVCghKmV4Y2VwdGlvbik7CisgICAgfSBlbHNlCisgICAgICAgIGJhc2VVUkwuYWRvcHQoSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKKworICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnF1ZXVlTG9hZEhU
TUxTdHJpbmcoY29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVl
UmVsb2FkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhh
cyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC05MTUsNiArOTM4LDE4IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldERhdGFiYXNlUXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBNYWMg
YW5kIFdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXIt
PnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBh
cmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZv
clVSTFNjaGVtZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAv
LyBIYXMgTWFjIGFuZCBXaW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xNzUyLDYgKzE3ODcsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAicXVldWVCYWNrTmF2aWdhdGlvbiIsIHF1ZXVlQmFja05hdmlnYXRpb25D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJxdWV1ZUZvcndhcmROYXZpZ2F0aW9uIiwgcXVl
dWVGb3J3YXJkTmF2aWdhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVlTG9h
ZCIsIHF1ZXVlTG9hZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInF1ZXVlTG9hZEhUTUxT
dHJpbmciLCBxdWV1ZUxvYWRIVE1MU3RyaW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cXVldWVMb2FkaW5nU2NyaXB0IiwgcXVldWVMb2FkaW5nU2NyaXB0Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAicXVldWVOb25Mb2FkaW5nU2NyaXB0IiwgcXVldWVOb25Mb2FkaW5nU2NyaXB0
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicXVldWVSZWxvYWQiLCBxdWV1ZVJlbG9hZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCkBAIC0xNzcyLDYgKzE4MDgsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0Q2xv
c2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dz
V2hlbkNvbXBsZXRlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q3VzdG9tUG9saWN5
RGVsZWdhdGUiLCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldERhdGFiYXNlUXVvdGEiLCBzZXREYXRhYmFzZVF1b3RhQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwgCisgICAgICAgIHsgInNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQiLCBzZXREZWZlck1h
aW5SZXNvdXJjZURhdGFMb2FkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0RG9tYWlu
UmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSIsIHNldERvbWFpblJlbGF4YXRpb25Gb3Ji
aWRkZW5Gb3JVUkxTY2hlbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRFZGl0aW5n
QmVoYXZpb3IiLCBzZXRFZGl0aW5nQmVoYXZpb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkIiwgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCkBAIC0xODIwLDYgKzE4NTcsMTEgQEAgSlNTdGF0aWNGdW5jdGlvbiog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgcmV0dXJuIHN0YXRp
Y0Z1bmN0aW9uczsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRN
TFN0cmluZyhKU1N0cmluZ1JlZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKQoreworICAg
IFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVu
dCwgYmFzZVVSTCkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUJhY2tO
YXZpZ2F0aW9uKGludCBob3dGYXJCYWNrKQogewogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1
ZXVlKG5ldyBCYWNrSXRlbShob3dGYXJCYWNrKSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBiZTc5NDczOWQ1Njc0M2ZiMmVj
MTU1NjU0OTk2ZjcyMDc4OGZkZTBmLi5hMzFjMTczODQxMDc0ODBiOGEwMDFmZjJlMzBkMWI3YzRh
ZDg3YjlhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcXVldWVCYWNr
TmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2
aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUxvYWQoSlNTdHJpbmdS
ZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpOworICAgIHZvaWQgcXVldWVMb2FkSFRNTFN0cmlu
ZyhKU1N0cmluZ1JlZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKTsKICAgICB2b2lkIHF1
ZXVlTG9hZGluZ1NjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVOb25M
b2FkaW5nU2NyaXB0KEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBxdWV1ZVJlbG9hZCgp
OwpAQCAtMjMwLDYgKzIzMSw5IEBAIHB1YmxpYzoKICAgICBib29sIGdsb2JhbEZsYWcoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbEZsYWc7IH0KICAgICB2b2lkIHNldEdsb2JhbEZsYWcoYm9vbCBn
bG9iYWxGbGFnKSB7IG1fZ2xvYmFsRmxhZyA9IGdsb2JhbEZsYWc7IH0KICAgICAKKyAgICBib29s
IGRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyTWFpblJl
c291cmNlRGF0YUxvYWQ7IH0KKyAgICB2b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQo
Ym9vbCBmbGFnKSB7IG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCA9IGZsYWc7IH0KKwogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0
UGF0aE9yVVJMOyB9CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFBpeGVsSGFzaDsgfQogICAgIApAQCAtMzE2LDYgKzMy
MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsKICAgICBi
b29sIG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlczsKICAgICBib29sIG1faXNQcmlu
dGluZzsKKyAgICBib29sIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDsKIAogICAgIHN0ZDo6
c3RyaW5nIG1fYXV0aGVudGljYXRpb25Vc2VybmFtZTsKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhl
bnRpY2F0aW9uUGFzc3dvcmQ7IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvV29ya1F1ZXVlSXRlbS5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVl
SXRlbS5oCmluZGV4IDU2YmUzNzc1ZTI2YzM5MzE3OWFiYjNhNTQ2NDFhYmEwOGMzMjBhZjYuLjM0
Mjc2YzhkNDZkMzExMDliNzllNGJmMWU0NWU0NTNhYTE5Zjc5ZTggMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmgKQEAgLTUzLDYgKzUzLDIxIEBAIHByaXZhdGU6
CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1fdGFyZ2V0OwogfTsKIAorY2xhc3MgTG9h
ZEhUTUxTdHJpbmdJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0geworcHVibGljOgorICAgIExv
YWRIVE1MU3RyaW5nSXRlbShjb25zdCBKU1N0cmluZ1JlZiBjb250ZW50LCBjb25zdCBKU1N0cmlu
Z1JlZiBiYXNlVVJMKQorICAgICAgICA6IG1fY29udGVudChjb250ZW50KQorICAgICAgICAsIG1f
YmFzZVVSTChiYXNlVVJMKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBi
b29sIGludm9rZSgpIGNvbnN0OworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1fY29u
dGVudDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbV9iYXNlVVJMOworfTsKKwogY2xh
c3MgUmVsb2FkSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGludm9rZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCmluZGV4IGUwZTBmZmIzZDAwMTJhMmZmZmI0
MjkwZDkzMGY5NDg1YjFkZDA4ZWUuLmFmZTgxYmUzOTgxYzQ2NTM1ODFkNzJlNTI1NTkxNTI5NGU4
YzgzMTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVl
dWVJdGVtR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1
ZXVlSXRlbUd0ay5jcHAKQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjpp
bnZva2UoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBSZWxvYWRJdGVt
OjppbnZva2UoKSBjb25zdAogewogICAgIHdlYmtpdF93ZWJfZnJhbWVfcmVsb2FkKG1haW5GcmFt
ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0KaW5kZXggOTI0NDExMDdjMjIxOWFmYzcyMDRiYTQ0NjEwYjgzM2NiOTRj
ZGIyZC4uZDNlNDZhNmYzYzFjZDk5NDM1NTBjMTBhNGFlOTZlODI0YTc2NWFmOCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1t
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVy
bmFsLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZVByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xMzEsNiArMTMy
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJp
bmcgVVRGOFN0cmluZ10pOwogICAgIH0KIAorICAgIGlmICghZG9uZSAmJiAhZ0xheW91dFRlc3RD
b250cm9sbGVyLT5kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkpIHsKKyAgICAgICAgW2RhdGFT
b3VyY2UgX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6ZmFsc2VdOworICAgIH0KKwogICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMubW0KaW5kZXggNGUzOWE1YTZlMjc4MDli
NDg2NTM5NGY3Mjk1MzJhODNmNTJkZmE3NS4uNzk3YWZiNzFiZmY1ZDMyOGUwNTg2ZWU2ZTBjYWRm
MDdiNTBiZjY5NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dv
cmtRdWV1ZUl0ZW1NYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dv
cmtRdWV1ZUl0ZW1NYWMubW0KQEAgLTU0LDYgKzU0LDE1IEBAIGJvb2wgTG9hZEl0ZW06Omludm9r
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVt
OjppbnZva2UoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29udGVudENG
KEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29u
dGVudC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFzZVVSTENGKEFkb3B0
Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fYmFzZVVSTC5n
ZXQoKSkpOworCisgICAgW21haW5GcmFtZSBsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKiljb250
ZW50Q0YuZ2V0KCkgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKiliYXNl
VVJMQ0YuZ2V0KCldXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBSZWxvYWRJdGVtOjpp
bnZva2UoKSBjb25zdAogewogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHJlbG9hZDpuaWxdOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAppbmRleCAwMDgxOTBmYmU4MmY0ODllYzg5MzU0NjUwOTM2MzEzYTg0Zjc5
YzE0Li5hYTQzNjI2NmYwZDJmZjg2MGM0OGJiZDUyZTE2YmIwODU0MTkzNDQ3IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcApAQCAtNzIsNiArNzIsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNl
dCgpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBGcmFtZUxvYWRlcihmYWxzZSk7
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
ZmFsc2UpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VSZXNwb25z
ZU1JTUVUeXBlcyhmYWxzZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVy
TWFpblJlc291cmNlRGF0YUxvYWQodHJ1ZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChmYWxzZSk7CiAgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGZhbHNl
KTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXJzKFFTdHJpbmdMaXN0KCkpOwpAQCAtMjQ5LDYgKzI1MCwxMSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihjb25zdCBRU3RyaW5n
TGlzdCYgaGVhZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcnMoaGVhZGVycyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoYm9vbCBkZWZlcikKK3sKKyAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChkZWZlcik7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhv
d0ZhckJhY2t3YXJkKQogewogICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlQmFja05hdmlnYXRp
b24iIDw8IGhvd0ZhckJhY2t3YXJkOwpAQCAtMjY5LDYgKzI3NSwxMSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoY29uc3QgUVN0cmluZyYgdXJsLCBjb25zdCBRU3RyaW5n
JiB0YXJnZXQpCiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IExvYWRJdGVtKGFi
c29sdXRlVXJsLCB0YXJnZXQsIG1fZHJ0LT53ZWJQYWdlKCkpKTsKIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBRU3RyaW5nJiBjb250ZW50
LCBjb25zdCBRU3RyaW5nJiBiYXNlVVJMKQoreworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1
ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVudCwgYmFzZVVSTCwgbV9kcnQtPndlYlBh
Z2UoKSkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZVJlbG9hZCgpCiB7
CiAgICAgLy9xRGVidWcoKSA8PCAiPj4+cXVldWVSZWxvYWQiOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGVk
MWEyMzJlODg3NjEwOTg2Mjg2ZjYyM2FhYzM5ZTY2ZDhlMzVlNWIuLjhhNzk2YTljYTllMWQxZjRl
ZWQ0ODM4YWNmNjhhYzQwNWFlZTUzNGUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTExMiw2ICsxMTIsNyBA
QCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBxdWV1ZUJhY2tOYXZpZ2F0aW9uKGludCBob3dGYXJC
YWNrd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGludCBob3dGYXJGb3J3
YXJkKTsKICAgICB2b2lkIHF1ZXVlTG9hZChjb25zdCBRU3RyaW5nJiB1cmwsIGNvbnN0IFFTdHJp
bmcmIHRhcmdldCA9IFFTdHJpbmcoKSk7CisgICAgdm9pZCBxdWV1ZUxvYWRIVE1MU3RyaW5nKGNv
bnN0IFFTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFFTdHJpbmcmIGJhc2VVUkwgPSBRU3RyaW5nKCkp
OwogICAgIHZvaWQgcXVldWVSZWxvYWQoKTsKICAgICB2b2lkIHF1ZXVlTG9hZGluZ1NjcmlwdChj
b25zdCBRU3RyaW5nJiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVOb25Mb2FkaW5nU2NyaXB0KGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCk7CkBAIC0xNDgsNiArMTQ5LDcgQEAgcHVibGljIHNsb3RzOgog
ICAgIHZvaWQgcmVzZXRMb2FkRmluaXNoZWQoKSB7IG1fbG9hZEZpbmlzaGVkID0gZmFsc2U7IH0K
ICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGJvb2wgaXNLZXkpOwogICAgIHZvaWQgc2V0TWFpbkZy
YW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGlzRmlyc3QpOworICAgIHZvaWQgc2V0RGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZChib29sKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9v
bCBlbmFibGUpOwogICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRl
bVF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5j
cHAKaW5kZXggMDY3ZTZhYWJiYjRmNjA4ODZiYmZiZWVlMjYwNDBmM2JkYjNhMzA4ZC4uZDFiYWYw
OGI2MTFhNTRmNGVkMjkwMjFiNTE5MmY1ZTlkZmQ3NTU3YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9Xb3JrUXVldWVJdGVtUXQuY3BwCkBAIC02MCw2ICs2MCwxOCBA
QCBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBRX0FTU0VSVCht
X3dlYlBhZ2UpOworCisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fd2ViUGFnZS0+bWFpbkZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnJhbWUt
PnNldEh0bWwobV9jb250ZW50LCBRVXJsKG1fYmFzZVVSTCkpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiB7CiAgICAgLy9xRGVidWcoKSA8
PCAiPj4+UmVsb2FkSXRlbTo6aW52b2tlIjsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmgKaW5kZXggOTRkYTVlMTAyZWMwYjI3NTk2NDM5YTZhMDRi
M2Q0YWJkMTQ4ZWUzMy4uOTdjOWIwNGEwNzRiYjA2NDIyMzU3NTQxYTBkZGI3NzZkMTUwNTIzNiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0
LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmgK
QEAgLTY0LDYgKzY0LDIyIEBAIHByaXZhdGU6CiAgICAgUVN0cmluZyBtX3RhcmdldDsKIH07CiAK
K2NsYXNzIExvYWRIVE1MU3RyaW5nSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3B1Ymxp
YzoKKyAgICBMb2FkSFRNTFN0cmluZ0l0ZW0oY29uc3QgUVN0cmluZyYgY29udGVudCwgY29uc3Qg
UVN0cmluZyAmYmFzZVVSTCwgUVdlYlBhZ2UgKnBhZ2UpCisgICAgICAgIDogV29ya1F1ZXVlSXRl
bShwYWdlKQorICAgICAgICAsIG1fY29udGVudChjb250ZW50KQorICAgICAgICAsIG1fYmFzZVVS
TChiYXNlVVJMKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlu
dm9rZSgpIGNvbnN0OworCisgICAgUVN0cmluZyBtX2NvbnRlbnQ7CisgICAgUVN0cmluZyBtX2Jh
c2VVUkw7Cit9OworCiBjbGFzcyBSZWxvYWRJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0gewog
cHVibGljOgogICAgIFJlbG9hZEl0ZW0oUVdlYlBhZ2UgKnBhZ2UpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAppbmRl
eCAyZTAzMWRhM2IwZDM0Yzk5YzczZmI4MWZjOGI3NDQ3M2RlMzU2Y2NiLi5iYzM3MGQ4NWViYTI2
N2RlYTQ4ODNkZjQ5OWU3MTNhMTI2MzdhZTUwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI1MCw2ICsy
NTAsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6
d2lsbFNlbmRSZXF1ZXN0KAogICAgICAgICAgICAgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQocmVkaXJlY3RSZXNwb25zZSkuY19zdHIoKSk7CiAgICAgfQogCisgICAgaWYgKCFkb25l
ICYmICFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoKSkg
eworICAgICAgICBDT01QdHI8SVdlYkRhdGFTb3VyY2VQcml2YXRlPiBkYXRhU291cmNlUHJpdmF0
ZShRdWVyeSwgZGF0YVNvdXJjZSk7CisgICAgICAgIGlmICghZGF0YVNvdXJjZVByaXZhdGUpCisg
ICAgICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICBkYXRhU291cmNlUHJpdmF0ZS0+c2V0
RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChGQUxTRSk7CisgICAgfQorCiAgICAgaWYgKCFkb25l
ICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkg
ewogICAgICAgICAqbmV3UmVxdWVzdCA9IDA7CiAgICAgICAgIHJldHVybiBTX09LOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtRdWV1ZUl0ZW1XaW4uY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtRdWV1ZUl0ZW1XaW4uY3BwCmlu
ZGV4IDdjNjBkM2Q2MDdhZDliNzBlOWM0NDIwYjQzNTc4NGQ5YjFjNjM5MTAuLmEyNGNhMzcyMWE4
YzIyNjcyMGVmZTEzZjY0ZWRiYzc5NThmZWU0NDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAKQEAgLTgxLDYgKzgxLDIyIEBA
IGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIHdzdHJpbmcgY29u
dGVudCA9IGpzU3RyaW5nUmVmVG9XU3RyaW5nKG1fY29udGVudC5nZXQoKSk7CisgICAgd3N0cmlu
ZyBiYXNlVVJMID0ganNTdHJpbmdSZWZUb1dTdHJpbmcobV9iYXNlVVJMLmdldCgpKTsKKworICAg
IEJTVFIgY29udGVudEJTVFIgPSBTeXNBbGxvY1N0cmluZyhjb250ZW50LmNfc3RyKCkpOworICAg
IEJTVFIgYmFzZVVSTEJTVFIgPSBTeXNBbGxvY1N0cmluZyhiYXNlVVJMLmNfc3RyKCkpOworCisg
ICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKGNvbnRlbnRCU1RSLCBiYXNlVVJMQlNUUik7CisKKyAg
ICBTeXNGcmVlU3RyaW5nKGNvbnRlbnRCU1RSKTsKKyAgICBTeXNGcmVlU3RyaW5nKGJhc2VVUkxC
U1RSKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFJlbG9hZEl0ZW06Omludm9rZSgp
IGNvbnN0CiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvV29ya1F1ZXVlSXRlbVd4LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L1dvcmtRdWV1ZUl0ZW1XeC5jcHAKaW5kZXggM2U4ZGExOWY0
MmUzNTQ0MzM3MjkwYjVjMTZkZTkyMWRhMmQ0YWU1Zi4uZTZlY2I3NTJiZDgyYjJkMWY2MjBkZDA5
NWIyNmNiYmM0NTQ5Yzc3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvV29ya1F1ZXVlSXRlbVd4LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93
eC9Xb3JrUXVldWVJdGVtV3guY3BwCkBAIC0zNiw2ICszNiwxMSBAQCBib29sIExvYWRJdGVtOjpp
bnZva2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBMb2FkSFRNTFN0cmlu
Z0l0ZW06Omludm9rZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFJl
bG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwo=
</data>
<flag name="review"
          id="49205"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>