<?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>17079</bug_id>
          
          <creation_ts>2008-01-29 14:59:51 -0800</creation_ts>
          <short_desc>XML document sent with wrong encoding does not fail as expected (affects Acid3 test 70)</short_desc>
          <delta_ts>2024-01-28 12:29:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://acid3.acidtests.org/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>17064</blocked>
    
    <blocked>268263</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>gavin.sharp</cc>
    
    <cc>ian</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit-bugs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68720</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 14:59:51 -0800</bug_when>
    <thetext>XML document sent with wrong encoding does not fail as expected (Acid3 bug)

    function () {
      // test 71: XML encoding test
      // the third child in kungFuDeathGrip is an ISO-8859-1 document sent as UTF-8.
      // q.v. XML 1.0, section 4.3.3 Character Encoding in Entities
      // this only tests one of a large number of conditions that should cause fatal errors
      var doc = kungFuDeathGrip.childNodes[2].contentDocument;
      if (!doc)
        return 5;
      if (!doc.documentElement.tagName == &quot;root&quot;)
        return 5;
      if (!doc.documentElement.getElementsByTagName(&apos;test&apos;))
        return 5;
      fail(&quot;UTF-8 encoded XML document with invalid character did not have a well-formedness error&quot;);
    },</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68785</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-30 01:32:28 -0800</bug_when>
    <thetext>Bleh.  More XML strictness bugs.  If FF or Opera are not strict about this, then this isn&apos;t a bug. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68787</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-01-30 01:45:01 -0800</bug_when>
    <thetext>We match Firefox here, and changing this may be a compatibility problem.

Also, I am not convinced that the XML spec has any say in how text decoding should work - it is a layering violation for it to impose any restrictions on UTF-8, for example. What if the XML spec imposed restrictions on Ethernet MTU, for example?

This restriction was probably reasonable when XML 1.0 was first published, because the Unicode standard didn&apos;t deal with these issues well, but now it does.

Could having this test in Acid3 be reconsidered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68868</commentid>
    <comment_count>3</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2008-01-30 16:20:22 -0800</bug_when>
    <thetext>If you can get the XML WG to change this requirement, I will immediately change the test. However, the spec is hard to misinterpret right now, and this is a major interop danger with XML. I believe testing this in Acid3 is the right thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68904</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-01-31 02:37:50 -0800</bug_when>
    <thetext>I suggest that we don&apos;t try to be the first to &quot;fix&quot; this - exactly because it&apos;s a huge interop danger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68910</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-01-31 03:14:50 -0800</bug_when>
    <thetext>To reiterate, current shipping or preview versions of Firefox, Opera and Safari do not fail to parse &lt;http://hixie.ch/tests/evil/acid/003/empty.xml&gt;. Changing this would not be an interoperability enhancement, nor would it make the Web a better place in some other way I can see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68946</commentid>
    <comment_count>6</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2008-01-31 11:28:50 -0800</bug_when>
    <thetext>Ironically, IE7 does show an error when you go to empty.xml directly. So...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68958</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-01-31 13:02:18 -0800</bug_when>
    <thetext>I think that the most important case for interoperability is what happens for XHTML. IE is not really a reference point in that case.

Surely, we don&apos;t want to the first to start failing on pages that work in all other browsers (as IE would just get text/html MIME type from the server).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71340</commentid>
    <comment_count>8</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-02-20 18:29:43 -0800</bug_when>
    <thetext>Actually, I think the most important interoperability test case for this is XMLHttpRequest - that&apos;s likely the most common use of XML on the web. Hixie points out that IE passes &lt;http://www.hixie.ch/tests/adhoc/dom/web-apps/XMLHttpRequest/020.html&gt;. XHTML with an XML MIME type is pretty rare on the web and generally only used by people who care more about strictness than their site not breaking. So I think we should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74375</commentid>
    <comment_count>9</comment_count>
    <who name="Rosyna">webkit-bugs</who>
    <bug_when>2008-03-18 19:00:28 -0700</bug_when>
    <thetext>Sadly, this is not a layering violation any more C10 of the Unicode 5.0 specification Chapter 3 (http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf) says:

&quot;When a process interprets a code unit sequence which purports to be in a Unicode character encoding form, it shall treat ill-formed code unit sequences as an error condition and shall not interpret such sequences as characters. &quot;

It may have been a layering violation when the XML part of this was originally written. But it isn&apos;t as of Unicode 5.0, since it explicitly says &quot;error condition&quot;. And these XML specs are free to specify exactly what happens in an &quot;error condition&quot;.

(Many Text based apps just replace the invalids with U+FFFD (http://www.fileformat.info/info/unicode/char/fffd/index.htm) as it is far worse for these applications to bail when encountering invalid codepoints)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75083</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-25 00:32:44 -0700</bug_when>
    <thetext>So the changes here need to happen to the various TextDecoder classes.  I think for TextDecoderICU we can implement a &quot;strict&quot; mode using error callbacks which are covered by this documentation:
http://www.icu-project.org/apiref/icu4c/ucnv__err_8h.html#1e9f87a69d75288c0f93bd77a6f2c9db
currently we don&apos;t use any error callbacks.

We would then create the TextDecoder in a &quot;strict&quot; mode (or set it in a strict mode once we&apos;ve determined we&apos;re handling XML) and then check if it had an error in the write() function in the XMLTokenizer.  If it had an error we would stop tokenizing and display the error (using the existing error reporting functions in XMLTokenizer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75209</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-25 16:43:16 -0700</bug_when>
    <thetext>It looks like we will need to change TextResourceDecoder to so that when it detects an XML content type it should go into a &quot;strict&quot; mode and set a flag on error that the XMLTokenizer can then detect and react to.  I expect this patch will be a lot of plumbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75250</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-25 18:51:10 -0700</bug_when>
    <thetext>I&apos;m testing a patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75272</commentid>
    <comment_count>13</comment_count>
      <attachid>20077</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 01:04:24 -0700</bug_when>
    <thetext>Created attachment 20077
Fix, makes us pass Test 70.  Needs test cases!

 WebCore/WebCore.base.exp                       |    2 +-
 WebCore/dom/XMLTokenizer.cpp                   |    5 ++
 WebCore/loader/CachedFont.cpp                  |    4 ++
 WebCore/loader/TextResourceDecoder.cpp         |    7 ++-
 WebCore/loader/TextResourceDecoder.h           |    3 +
 WebCore/platform/text/TextCodec.h              |   13 +++--
 WebCore/platform/text/TextCodecICU.cpp         |   65 +++++++++++++++++++-----
 WebCore/platform/text/TextCodecICU.h           |    5 ++-
 WebCore/platform/text/TextCodecLatin1.cpp      |    2 +-
 WebCore/platform/text/TextCodecLatin1.h        |    2 +-
 WebCore/platform/text/TextCodecUTF16.cpp       |    2 +-
 WebCore/platform/text/TextCodecUTF16.h         |    2 +-
 WebCore/platform/text/TextCodecUserDefined.cpp |    2 +-
 WebCore/platform/text/TextCodecUserDefined.h   |    2 +-
 WebCore/platform/text/TextDecoder.cpp          |   11 +++--
 WebCore/platform/text/TextDecoder.h            |    8 ++--
 WebCore/platform/text/TextEncoding.cpp         |    4 +-
 WebCore/platform/text/TextEncoding.h           |    7 ++-
 WebCore/platform/text/mac/TextCodecMac.cpp     |   14 +++--
 WebCore/platform/text/mac/TextCodecMac.h       |    3 +-
 20 files changed, 116 insertions(+), 47 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75274</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 01:14:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=20077) [edit]
&gt; Fix, makes us pass Test 70.  Needs test cases!

Basically I need to test every single encoding we support (to make sure I test all of the various decoders).  Anyone know how to easily create an invalid char in any encoding?  Maybe some encodings don&apos;t have invalid codepoints?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75277</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-03-26 02:05:42 -0700</bug_when>
    <thetext>Latin1 and user-defined can always be decoded; UTF is pretty easy (just make an unpaired surrogate), and the general case is probably easy to test with Shift-JIS (I don&apos;t have an example handy, but some random noise should suffice, I think).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75303</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 08:56:46 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Latin1 and user-defined can always be decoded; UTF is pretty easy (just make an
&gt; unpaired surrogate), and the general case is probably easy to test with
&gt; Shift-JIS (I don&apos;t have an example handy, but some random noise should suffice,
&gt; I think).
&gt; 

Hum... Now I just need a way to produce an invalid char in an encoding which goes through TextDecoderMac.  x-mac-hebrew is the example used in the layout test attached to bug 4195...  Perhaps you have a suggestion of an encoding and an invalid code-point I could use for testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75304</commentid>
    <comment_count>17</comment_count>
      <attachid>20077</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-26 09:29:30 -0700</bug_when>
    <thetext>Comment on attachment 20077
Fix, makes us pass Test 70.  Needs test cases!

It looks like this patch will only fix platforms which use ICU.

I think the ErrorCallbackSetter constructor/destructor should return early when m_shouldStopOnEncodingErrorsis false.

Other than that this looks good (though of course we still need tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75310</commentid>
    <comment_count>18</comment_count>
      <attachid>20083</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 09:48:12 -0700</bug_when>
    <thetext>Created attachment 20083
Fix, makes us pass Test 70, now includes minimal testing

 LayoutTests/fast/encoding/invalid-xml.html         |   12 ++++
 .../encoding/resources/invalid-xml-shift-jis.xml   |    5 ++
 .../fast/encoding/resources/invalid-xml-utf16.xml  |  Bin 0 -&gt; 444 bytes
 .../fast/encoding/resources/invalid-xml-utf8.xml   |    5 ++
 .../encoding/resources/invalid-xml-x-mac-thai.xml  |    5 ++
 LayoutTests/fast/encoding/resources/invalid-xml.js |   43 +++++++++++++
 WebCore/WebCore.base.exp                           |    2 +-
 WebCore/dom/XMLTokenizer.cpp                       |    5 ++
 WebCore/loader/CachedFont.cpp                      |    4 +
 WebCore/loader/TextResourceDecoder.cpp             |    7 +-
 WebCore/loader/TextResourceDecoder.h               |    3 +
 WebCore/platform/text/TextCodec.h                  |   13 +++-
 WebCore/platform/text/TextCodecICU.cpp             |   65 ++++++++++++++++----
 WebCore/platform/text/TextCodecICU.h               |    5 +-
 WebCore/platform/text/TextCodecLatin1.cpp          |    2 +-
 WebCore/platform/text/TextCodecLatin1.h            |    2 +-
 WebCore/platform/text/TextCodecUTF16.cpp           |    2 +-
 WebCore/platform/text/TextCodecUTF16.h             |    2 +-
 WebCore/platform/text/TextCodecUserDefined.cpp     |    2 +-
 WebCore/platform/text/TextCodecUserDefined.h       |    2 +-
 WebCore/platform/text/TextDecoder.cpp              |   11 ++-
 WebCore/platform/text/TextDecoder.h                |    8 +-
 WebCore/platform/text/TextEncoding.cpp             |    4 +-
 WebCore/platform/text/TextEncoding.h               |    7 ++-
 WebCore/platform/text/mac/TextCodecMac.cpp         |   14 +++--
 WebCore/platform/text/mac/TextCodecMac.h           |    3 +-
 26 files changed, 186 insertions(+), 47 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75315</commentid>
    <comment_count>19</comment_count>
      <attachid>20083</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 10:03:33 -0700</bug_when>
    <thetext>Comment on attachment 20083
Fix, makes us pass Test 70, now includes minimal testing

I think this might actually be ready for review.  All test cases pass.  I may need to break out the mac-encoding tests into a separate file, since I&apos;m not sure this test would pass on other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75316</commentid>
    <comment_count>20</comment_count>
      <attachid>20083</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-26 10:08:36 -0700</bug_when>
    <thetext>Comment on attachment 20083
Fix, makes us pass Test 70, now includes minimal testing

 672     if (m_doc-&gt;decoder() &amp;&amp; m_doc-&gt;decoder()-&gt;sawError())
 673         // If the decoder saw an error, report it as fatal (stops parsing)
 674         handleError(fatal, &quot;Encoding error&quot;, lineNumber(), columnNumber());

Needs braces. We normally put braces around multiple lines even if one is a comment.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75319</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 10:21:30 -0700</bug_when>
    <thetext>Thanks.  Oops.  I think I forgot to fix the if, will do.

r31316
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112549</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-05 23:38:59 -0800</bug_when>
    <thetext>Follow-up in &lt;http://trac.webkit.org/changeset/41476&gt; - don&apos;t be strict with XMLHttpRequest responses.

Note that IE has quite a different model - it decodes responseXML and responseText separately, so they can even use different encodings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502979</commentid>
    <comment_count>23</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:30 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20077</attachid>
            <date>2008-03-26 01:04:24 -0700</date>
            <delta_ts>2008-03-26 09:48:21 -0700</delta_ts>
            <desc>Fix, makes us pass Test 70.  Needs test cases!</desc>
            <filename>Fix-makes-us-pass-Test-70.-Needs-test-cases-.patch</filename>
            <type>text/plain</type>
            <size>21796</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZjQ4ZjJlNzEwOGEwMTkzNDZmN2RhYTFkMzE2NWI0MWNjNjVmNDEwNgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDAy
OTM4YTQuLmU2ZWViOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTY1OCw3ICs2NTgsNyBAQCBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDI1YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbEV2CiBfX1pOSzdXZWJDb3JlMTJTaGFy
ZWRCdWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTJTaGFyZWRCdWZmZXI0c2l6ZUV2Ci1fX1pO
SzdXZWJDb3JlMTJUZXh0RW5jb2Rpbmc2ZGVjb2RlRVBLY20KK19fWk5LN1dlYkNvcmUxMlRleHRF
bmNvZGluZzZkZWNvZGVFUEtjbWJSYgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDEwaXNM
aXZlTGlua0V2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTBpc1NlbGVjdGVkRXYKIF9f
Wk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMXRhcmdldEZyYW1lRXYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3Bw
CmluZGV4IGZlN2M5NWEuLmYzYTZjNDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTFRva2Vu
aXplci5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcApAQCAtNDYsNiArNDYs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpZm5kZWYgVVNFX1FYTUxTVFJFQU0KICNpbmNsdWRlIDxsaWJ4bWwv
cGFyc2VyLmg+CiAjaW5jbHVkZSA8bGlieG1sL3BhcnNlckludGVybmFscy5oPgpAQCAtNjY4LDYg
KzY2OSwxMCBAQCBib29sIFhNTFRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5n
JiBzLCBib29sIC8qYXBwZW5kRGF0YSovKQogICAgIH0KICNlbmRpZgogICAgIAorICAgIGlmICht
X2RvYy0+ZGVjb2RlcigpICYmIG1fZG9jLT5kZWNvZGVyKCktPnNhd0Vycm9yKCkpCisgICAgICAg
IC8vIElmIHRoZSBkZWNvZGVyIHNhdyBhbiBlcnJvciwgcmVwb3J0IGl0IGFzIGZhdGFsIChzdG9w
cyBwYXJzaW5nKQorICAgICAgICBoYW5kbGVFcnJvcihmYXRhbCwgIkVuY29kaW5nIGVycm9yIiwg
bGluZU51bWJlcigpLCBjb2x1bW5OdW1iZXIoKSk7CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAj
aWZuZGVmIFVTRV9RWE1MU1RSRUFNCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRG
b250LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCmluZGV4IDk3YjU2NmIuLjEy
NDA1NzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCkBAIC0xMzcsNiArMTM3LDEwIEBAIGJvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEoKQogCiAgICAgICAgIFRleHRSZXNvdXJjZURlY29k
ZXIgZGVjb2RlcigiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC0+d3JpdGUoZGVjb2Rlci5kZWNvZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KSk7CisgICAgICAgIGlmIChkZWNvZGVyLnNhd0Vycm9yKCkpIHsKKyAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudC5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IH0KIAogICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPmZpbmlzaFBhcnNpbmcoKTsKICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmNwcAppbmRleCBlZjhhOTc5Li44YTg1ZmQ3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMzI3LDYgKzMyNyw3IEBAIFRleHRSZXNvdXJjZURl
Y29kZXI6OlRleHRSZXNvdXJjZURlY29kZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
VGV4dEVuY29kCiAgICAgLCBtX2NoZWNrZWRGb3JCT00oZmFsc2UpCiAgICAgLCBtX2NoZWNrZWRG
b3JDU1NDaGFyc2V0KGZhbHNlKQogICAgICwgbV9jaGVja2VkRm9ySGVhZENoYXJzZXQoZmFsc2Up
CisgICAgLCBtX3Nhd0Vycm9yKGZhbHNlKQogewogfQogCkBAIC03NTgsNyArNzU5LDcgQEAgU3Ry
aW5nIFRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuKQogICAgIEFTU0VSVChlbmNvZGluZygpLmlzVmFsaWQoKSk7CiAKICAgICBpZiAobV9idWZm
ZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZShkYXRhLCBsZW4p
OworICAgICAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZShkYXRhLCBsZW4sIGZhbHNlLCBtX2Nv
bnRlbnRUeXBlID09IFhNTCwgbV9zYXdFcnJvcik7CiAKICAgICBpZiAoIW1vdmVkRGF0YVRvQnVm
ZmVyKSB7CiAgICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9idWZmZXIuc2l6ZSgpOwpAQCAtNzY2
LDE0ICs3NjcsMTQgQEAgU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuKQogICAgICAgICBtZW1jcHkobV9idWZmZXIuZGF0YSgpICsg
b2xkU2l6ZSwgZGF0YSwgbGVuKTsKICAgICB9CiAKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9kZWNv
ZGVyLmRlY29kZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSk7CisgICAgU3RyaW5n
IHJlc3VsdCA9IG1fZGVjb2Rlci5kZWNvZGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCksIGZhbHNlLCBtX2NvbnRlbnRUeXBlID09IFhNTCwgbV9zYXdFcnJvcik7CiAgICAgbV9idWZm
ZXIuY2xlYXIoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTdHJpbmcgVGV4dFJlc291cmNl
RGVjb2Rlcjo6Zmx1c2goKQogewotICAgIFN0cmluZyByZXN1bHQgPSBtX2RlY29kZXIuZGVjb2Rl
KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCB0cnVlKTsKKyAgICBTdHJpbmcgcmVz
dWx0ID0gbV9kZWNvZGVyLmRlY29kZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSwg
dHJ1ZSwgbV9jb250ZW50VHlwZSA9PSBYTUwsIG1fc2F3RXJyb3IpOwogICAgIG1fYnVmZmVyLmNs
ZWFyKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuaAppbmRleCA2OTE3YWI1Li4xZGQ5ZDU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVj
b2Rlci5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWNvZGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgU3RyaW5nIGZsdXNoKCk7CisgICAg
CisgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2F3RXJyb3I7IH0KIAogcHJp
dmF0ZToKICAgICBlbnVtIENvbnRlbnRUeXBlIHsgUGxhaW5UZXh0LCBIVE1MLCBYTUwsIENTUyB9
OyAvLyBQbGFpblRleHQgaXMgZXF1aXZhbGVudCB0byBkaXJlY3RseSB1c2luZyBUZXh0RGVjb2Rl
ci4KQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hlY2tlZEZvckJPTTsK
ICAgICBib29sIG1fY2hlY2tlZEZvckNTU0NoYXJzZXQ7CiAgICAgYm9vbCBtX2NoZWNrZWRGb3JI
ZWFkQ2hhcnNldDsKKyAgICBib29sIG1fc2F3RXJyb3I7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjLmgKaW5kZXggOWQ0ZjUwNy4uOTY1NGEyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWMuaApAQCAtMzIsMTAgKzMyLDkgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAotICAgIGNsYXNzIENTdHJpbmc7Ci0gICAgY2xhc3Mg
U3RyaW5nOworbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFRleHRFbmNvZGluZzsKIAog
ICAgIC8vIFNwZWNpZmllcyB3aGF0IHdpbGwgaGFwcGVuIHdoZW4gYSBjaGFyYWN0ZXIgaXMgZW5j
b3VudGVyZWQgdGhhdCBpcwpAQCAtNjAsNyArNTksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dENvZGVjKCk7CiAKLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNo
ID0gZmFsc2UpID0gMDsKKyAgICAgICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiBzdHIsIHNp
emVfdCBsZW5ndGgsIGJvb2wgZmx1c2ggPSBmYWxzZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Ym9vbCBpZ25vcmVkOworICAgICAgICAgICAgcmV0dXJuIGRlY29kZShzdHIsIGxlbmd0aCwgZmx1
c2gsIGZhbHNlLCBpZ25vcmVkKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmlydHVh
bCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBi
b29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgPSAwOwogICAgICAgICB2aXJ0dWFsIENT
dHJpbmcgZW5jb2RlKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGVIYW5k
bGluZykgPSAwOwogCiAgICAgICAgIC8vIEZpbGxzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBy
ZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lD
VS5jcHAKaW5kZXggODU3OWZmZi4uNmU3Mzk2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0lDVS5jcHAKQEAgLTIxNSw3ICsyMTUsNTAgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OmNyZWF0
ZUlDVUNvbnZlcnRlcigpIGNvbnN0CiAgICAgICAgIHVjbnZfc2V0RmFsbGJhY2sobV9jb252ZXJ0
ZXJJQ1UsIFRSVUUpOwogfQogCi1TdHJpbmcgVGV4dENvZGVjSUNVOjpkZWNvZGUoY29uc3QgY2hh
ciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gpCitpbnQgVGV4dENvZGVjSUNVOjpk
ZWNvZGVUb0J1ZmZlcihVQ2hhciogdGFyZ2V0LCBVQ2hhciogdGFyZ2V0TGltaXQsIGNvbnN0IGNo
YXIqJiBzb3VyY2UsIGNvbnN0IGNoYXIqIHNvdXJjZUxpbWl0LCBpbnQzMl90KiBvZmZzZXRzLCBi
b29sIGZsdXNoLCBVRXJyb3JDb2RlJiBlcnIpCit7CisgICAgVUNoYXIqIHRhcmdldFN0YXJ0ID0g
dGFyZ2V0OworICAgIGVyciA9IFVfWkVST19FUlJPUjsKKyAgICB1Y252X3RvVW5pY29kZShtX2Nv
bnZlcnRlcklDVSwgJnRhcmdldCwgdGFyZ2V0TGltaXQsICZzb3VyY2UsIHNvdXJjZUxpbWl0LCBv
ZmZzZXRzLCBmbHVzaCwgJmVycik7CisgICAgcmV0dXJuIHRhcmdldCAtIHRhcmdldFN0YXJ0Owor
fQorCitjbGFzcyBFcnJvckNhbGxiYWNrU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBFcnJvckNhbGxi
YWNrU2V0dGVyKFVDb252ZXJ0ZXIqIGNvbnZlcnRlciwgYm9vbCBzdG9wT25FcnJvcikKKyAgICAg
ICAgOiBtX2NvbnZlcnRlcihjb252ZXJ0ZXIpCisgICAgICAgICwgbV9zaG91bGRTdG9wT25FbmNv
ZGluZ0Vycm9ycyhzdG9wT25FcnJvcikKKyAgICB7CisgICAgICAgIGlmIChtX3Nob3VsZFN0b3BP
bkVuY29kaW5nRXJyb3JzKSB7CisgICAgICAgICAgICBVRXJyb3JDb2RlIGVyciA9IFVfWkVST19F
UlJPUjsKKyAgICAgICAgICAgIHVjbnZfc2V0VG9VQ2FsbEJhY2sobV9jb252ZXJ0ZXIsIFVDTlZf
VE9fVV9DQUxMQkFDS19TVUJTVElUVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNO
Vl9TVUJfU1RPUF9PTl9JTExFR0FMLCAmbV9zYXZlZEFjdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtX3NhdmVkQ29udGV4dCwgJmVycik7CisgICAgICAgICAgICBBU1NFUlQoZXJy
ID09IFVfWkVST19FUlJPUik7CisgICAgICAgIH0KKyAgICB9CisgICAgfkVycm9yQ2FsbGJhY2tT
ZXR0ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2hvdWxkU3RvcE9uRW5jb2RpbmdFcnJvcnMp
IHsKKyAgICAgICAgICAgIFVFcnJvckNvZGUgZXJyID0gVV9aRVJPX0VSUk9SOworICAgICAgICAg
ICAgY29uc3Qgdm9pZCogb2xkQ29udGV4dDsKKyAgICAgICAgICAgIFVDb252ZXJ0ZXJUb1VDYWxs
YmFjayBvbGRBY3Rpb247CisgICAgICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKG1fY29udmVy
dGVyLCBtX3NhdmVkQWN0aW9uLAorICAgICAgICAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0LCAm
b2xkQWN0aW9uLAorICAgICAgICAgICAgICAgICAgICZvbGRDb250ZXh0LCAmZXJyKTsKKyAgICAg
ICAgICAgIEFTU0VSVChvbGRBY3Rpb24gPT0gVUNOVl9UT19VX0NBTExCQUNLX1NVQlNUSVRVVEUp
OworICAgICAgICAgICAgQVNTRVJUKG9sZENvbnRleHQgPT0gVUNOVl9TVUJfU1RPUF9PTl9JTExF
R0FMKTsKKyAgICAgICAgICAgIEFTU0VSVChlcnIgPT0gVV9aRVJPX0VSUk9SKTsKKyAgICAgICAg
fQorICAgIH0KK3ByaXZhdGU6CisgICAgVUNvbnZlcnRlciogbV9jb252ZXJ0ZXI7CisgICAgYm9v
bCBtX3Nob3VsZFN0b3BPbkVuY29kaW5nRXJyb3JzOworICAgIGNvbnN0IHZvaWQqIG1fc2F2ZWRD
b250ZXh0OworICAgIFVDb252ZXJ0ZXJUb1VDYWxsYmFjayBtX3NhdmVkQWN0aW9uOworfTsKKwor
U3RyaW5nIFRleHRDb2RlY0lDVTo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAg
ICAvLyBHZXQgYSBjb252ZXJ0ZXIgZm9yIHRoZSBwYXNzZWQtaW4gZW5jb2RpbmcuCiAgICAgaWYg
KCFtX2NvbnZlcnRlcklDVSkgewpAQCAtMjI2LDM0ICsyNjksMzAgQEAgU3RyaW5nIFRleHRDb2Rl
Y0lDVTo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNo
KQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9CiAgICAgfQorICAgIAor
ICAgIEVycm9yQ2FsbGJhY2tTZXR0ZXIgY2FsbGJhY2tTZXR0ZXIobV9jb252ZXJ0ZXJJQ1UsIHN0
b3BPbkVycm9yKTsKIAogICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwogCiAgICAgVUNoYXIgYnVm
ZmVyW0NvbnZlcnNpb25CdWZmZXJTaXplXTsKKyAgICBVQ2hhciogYnVmZmVyTGltaXQgPSBidWZm
ZXIgKyBDb252ZXJzaW9uQnVmZmVyU2l6ZTsKICAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyk7CiAgICAgY29uc3QgY2hhciogc291cmNl
TGltaXQgPSBzb3VyY2UgKyBsZW5ndGg7CiAgICAgaW50MzJfdCogb2Zmc2V0cyA9IE5VTEw7Ci0g
ICAgVUVycm9yQ29kZSBlcnI7CisgICAgVUVycm9yQ29kZSBlcnIgPSBVX1pFUk9fRVJST1I7CiAK
ICAgICBkbyB7Ci0gICAgICAgIFVDaGFyKiB0YXJnZXQgPSBidWZmZXI7Ci0gICAgICAgIGNvbnN0
IFVDaGFyKiB0YXJnZXRMaW1pdCA9IHRhcmdldCArIENvbnZlcnNpb25CdWZmZXJTaXplOwotICAg
ICAgICBlcnIgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVjbnZfdG9Vbmljb2RlKG1fY29udmVy
dGVySUNVLCAmdGFyZ2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNl
dHMsIGZsdXNoLCAmZXJyKTsKLSAgICAgICAgaW50IGNvdW50ID0gdGFyZ2V0IC0gYnVmZmVyOwot
ICAgICAgICBhcHBlbmRPbWl0dGluZ0JPTShyZXN1bHQsIGJ1ZmZlciwgY291bnQpOworICAgICAg
ICBpbnQgdWNoYXJzRGVjb2RlZCA9IGRlY29kZVRvQnVmZmVyKGJ1ZmZlciwgYnVmZmVyTGltaXQs
IHNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIGZsdXNoLCBlcnIpOworICAgICAgICBhcHBl
bmRPbWl0dGluZ0JPTShyZXN1bHQsIGJ1ZmZlciwgdWNoYXJzRGVjb2RlZCk7CiAgICAgfSB3aGls
ZSAoZXJyID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKTsKIAogICAgIGlmIChVX0ZBSUxVUkUo
ZXJyKSkgewogICAgICAgICAvLyBmbHVzaCB0aGUgY29udmVydGVyIHNvIGl0IGNhbiBiZSByZXVz
ZWQsIGFuZCBub3QgYmUgYm90aGVyZWQgYnkgdGhpcyBlcnJvci4KICAgICAgICAgZG8gewotICAg
ICAgICAgICAgVUNoYXIgKnRhcmdldCA9IGJ1ZmZlcjsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICp0YXJnZXRMaW1pdCA9IHRhcmdldCArIENvbnZlcnNpb25CdWZmZXJTaXplOwotICAgICAgICAg
ICAgZXJyID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAgICAgdWNudl90b1VuaWNvZGUobV9jb252
ZXJ0ZXJJQ1UsICZ0YXJnZXQsIHRhcmdldExpbWl0LCAmc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zm
c2V0cywgdHJ1ZSwgJmVycik7CisgICAgICAgICAgICBkZWNvZGVUb0J1ZmZlcihidWZmZXIsIGJ1
ZmZlckxpbWl0LCBzb3VyY2UsIHNvdXJjZUxpbWl0LCBvZmZzZXRzLCB0cnVlLCBlcnIpOwogICAg
ICAgICB9IHdoaWxlIChzb3VyY2UgPCBzb3VyY2VMaW1pdCk7CisgICAgICAgIHNhd0Vycm9yID0g
dHJ1ZTsKICAgICAgICAgTE9HX0VSUk9SKCJJQ1UgY29udmVyc2lvbiBlcnJvciIpOwotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IFN0
cmluZzo6YWRvcHQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNJQ1UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuaAppbmRl
eCBmNWM2NjRkLi45YzlhNGE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjSUNVLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5oCkBA
IC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGV4dENvZGVjSUNV
KGNvbnN0IFRleHRFbmNvZGluZyYpOwogICAgICAgICB2aXJ0dWFsIH5UZXh0Q29kZWNJQ1UoKTsK
IAotICAgICAgICB2aXJ0dWFsIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5n
dGgsIGJvb2wgZmx1c2ggPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY29kZShj
b25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwg
Ym9vbCYgc2F3RXJyb3IpOwogICAgICAgICB2aXJ0dWFsIENTdHJpbmcgZW5jb2RlKGNvbnN0IFVD
aGFyKiwgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGVIYW5kbGluZyk7CiAKICAgICBwcml2YXRl
OgpAQCAtNTMsNiArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVs
ZWFzZUlDVUNvbnZlcnRlcigpIGNvbnN0OwogICAgICAgICBib29sIG5lZWRzR0JLRmFsbGJhY2tz
KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0dCS0ZhbGxiYWNrczsgfQogICAgICAgICB2b2lkIHNl
dE5lZWRzR0JLRmFsbGJhY2tzKGJvb2wgbmVlZHNGYWxsYmFja3MpIHsgbV9uZWVkc0dCS0ZhbGxi
YWNrcyA9IG5lZWRzRmFsbGJhY2tzOyB9CisgICAgICAgIAorICAgICAgICBpbnQgZGVjb2RlVG9C
dWZmZXIoVUNoYXIqIGJ1ZmZlciwgVUNoYXIqIGJ1ZmZlckxpbWl0LCBjb25zdCBjaGFyKiYgc291
cmNlLAorICAgICAgICAgICAgY29uc3QgY2hhciogc291cmNlTGltaXQsIGludDMyX3QqIG9mZnNl
dHMsIGJvb2wgZmx1c2gsIFVFcnJvckNvZGUmIGVycik7CiAKICAgICAgICAgVGV4dEVuY29kaW5n
IG1fZW5jb2Rpbmc7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtQnVmZmVyZWRCeXRlczsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggZThlZjY5MC4uZjNkMWQy
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVj
UmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICByZWdpc3RyYXIoIlVTLUFTQ0lJIiwgbmV3U3RyZWFt
aW5nVGV4dERlY29kZXJXaW5kb3dzTGF0aW4xLCAwKTsKIH0KIAotU3RyaW5nIFRleHRDb2RlY0xh
dGluMTo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sKQorU3Ry
aW5nIFRleHRDb2RlY0xhdGluMTo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAg
ICBTdHJpbmdCdWZmZXIgY2hhcmFjdGVycyhsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjTGF0aW4xLmgKaW5kZXggYWM0YTNlYS4uZjAzNWQwMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGlu
Z05hbWVSZWdpc3RyYXIpOwogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIpOwogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY29kZShjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVh
bCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBi
b29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7CiAgICAgICAgIHZpcnR1YWwgQ1N0cmlu
ZyBlbmNvZGUoY29uc3QgVUNoYXIqLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZUhhbmRsaW5n
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRl
eCAwOGFkYTc0Li45NjQ2NmQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGMTYuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYx
Ni5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2Rl
Y3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICByZWdpc3RyYXIoIlVURi0xNkJF
IiwgbmV3U3RyZWFtaW5nVGV4dERlY29kZXJVVEYxNkJFLCAwKTsKIH0KIAotU3RyaW5nIFRleHRD
b2RlY1VURjE2OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wp
CitTdHJpbmcgVGV4dENvZGVjVVRGMTY6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90
IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpCiB7
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmgKaW5kZXggNjY4NDJlZC4uOGNlOTQ3NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIFRleHRDb2RlY1VURjE2KGJvb2wgbGl0dGxlRW5kaWFuKSA6
IG1fbGl0dGxlRW5kaWFuKGxpdHRsZUVuZGlhbiksIG1faGF2ZUJ1ZmZlcmVkQnl0ZShmYWxzZSkg
eyB9CiAKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3Qg
bGVuZ3RoLCBib29sIGZsdXNoID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBkZWNv
ZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJy
b3IsIGJvb2wmIHNhd0Vycm9yKTsKICAgICAgICAgdmlydHVhbCBDU3RyaW5nIGVuY29kZShjb25z
dCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcpOwogCiAgICAgcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVm
aW5lZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3Bw
CmluZGV4IGRhNGE0OWQuLjQ3YzJlNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VzZXJEZWZpbmVkLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFRleHRDb2RlY1Vz
ZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQog
ICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQiLCBuZXdTdHJlYW1pbmdUZXh0RGVjb2RlclVz
ZXJEZWZpbmVkLCAwKTsKIH0KIAotU3RyaW5nIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpkZWNvZGUo
Y29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wpCitTdHJpbmcgVGV4dENvZGVj
VXNlckRlZmluZWQ6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9v
bCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpCiB7CiAgICAgU3RyaW5n
QnVmZmVyIGJ1ZmZlcihsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVXNlckRlZmluZWQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVc2VyRGVmaW5lZC5oCmluZGV4IDI3NTk0NzEuLmQxYjMxNjAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFbmNvZGluZ05hbWVz
KEVuY29kaW5nTmFtZVJlZ2lzdHJhcik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ29k
ZWNzKFRleHRDb2RlY1JlZ2lzdHJhcik7CiAKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZGVjb2Rl
KGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoID0gZmFsc2UpOworICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wg
Zmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKTsKICAgICAgICAgdmlydHVh
bCBDU3RyaW5nIGVuY29kZShjb25zdCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxl
SGFuZGxpbmcpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RGVjb2Rlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dERlY29kZXIuY3BwCmlu
ZGV4IDg2MzNlOWYuLjkwMTYzODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RGVjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHREZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFRleHREZWNvZGVyOjpyZXNldChjb25zdCBUZXh0RW5j
b2RpbmcmIGVuY29kaW5nKQogICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IDA7CiB9CiAKLVN0cmlu
ZyBUZXh0RGVjb2Rlcjo6Y2hlY2tGb3JCT00oY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCBmbHVzaCkKK1N0cmluZyBUZXh0RGVjb2Rlcjo6Y2hlY2tGb3JCT00oY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9v
bCYgc2F3RXJyb3IpCiB7CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGZvdW5kIGEgQk9NLgog
ICAgIHNpemVfdCBudW1CdWZmZXJlZEJ5dGVzID0gbV9udW1CdWZmZXJlZEJ5dGVzOwpAQCAtOTYs
MTEgKzk2LDE0IEBAIFN0cmluZyBUZXh0RGVjb2Rlcjo6Y2hlY2tGb3JCT00oY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCkKICAgICAgICAgY2hhciBidWZmZXJlZEJ5
dGVzW3NpemVvZihtX2J1ZmZlcmVkQnl0ZXMpXTsKICAgICAgICAgbWVtY3B5KGJ1ZmZlcmVkQnl0
ZXMsIG1fYnVmZmVyZWRCeXRlcywgbnVtQnVmZmVyZWRCeXRlcyk7CiAgICAgICAgIG1fbnVtQnVm
ZmVyZWRCeXRlcyA9IDA7Ci0gICAgICAgIHJldHVybiBtX2NvZGVjLT5kZWNvZGUoYnVmZmVyZWRC
eXRlcywgbnVtQnVmZmVyZWRCeXRlcywgZmFsc2UpCi0gICAgICAgICAgICArIG1fY29kZWMtPmRl
Y29kZShkYXRhLCBsZW5ndGgsIGZsdXNoKTsKKworICAgICAgICBTdHJpbmcgYnVmZmVyZWRSZXN1
bHQgPSBtX2NvZGVjLT5kZWNvZGUoYnVmZmVyZWRCeXRlcywgbnVtQnVmZmVyZWRCeXRlcywgZmFs
c2UsIHN0b3BPbkVycm9yLCBzYXdFcnJvcik7CisgICAgICAgIGlmIChzdG9wT25FcnJvciAmJiBz
YXdFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBidWZmZXJlZFJlc3VsdDsKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlcmVkUmVzdWx0ICsgbV9jb2RlYy0+ZGVjb2RlKGRhdGEsIGxlbmd0aCwgZmx1c2gs
IHN0b3BPbkVycm9yLCBzYXdFcnJvcik7CiAgICAgfQogCi0gICAgcmV0dXJuIG1fY29kZWMtPmRl
Y29kZShkYXRhLCBsZW5ndGgsIGZsdXNoKTsKKyAgICByZXR1cm4gbV9jb2RlYy0+ZGVjb2RlKGRh
dGEsIGxlbmd0aCwgZmx1c2gsIHN0b3BPbkVycm9yLCBzYXdFcnJvcik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGVj
b2Rlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHREZWNvZGVyLmgKaW5kZXggMzg5MjAz
Mi4uMTcxY2I1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHREZWNvZGVy
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHREZWNvZGVyLmgKQEAgLTQxLDE1ICs0
MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVzZXQoY29uc3QgVGV4
dEVuY29kaW5nJik7CiAgICAgICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcoKSBjb25z
dCB7IHJldHVybiBtX2VuY29kaW5nOyB9OwogCi0gICAgICAgIFN0cmluZyBkZWNvZGUoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCA9IGZhbHNlKQorICAgICAgICBT
dHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gs
IGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2hlY2tlZEZvckJPTSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tGb3JC
T00oZGF0YSwgbGVuZ3RoLCBmbHVzaCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9jb2RlYy0+ZGVj
b2RlKGRhdGEsIGxlbmd0aCwgZmx1c2gpOworICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0Zv
ckJPTShkYXRhLCBsZW5ndGgsIGZsdXNoLCBzdG9wT25FcnJvciwgc2F3RXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuIG1fY29kZWMtPmRlY29kZShkYXRhLCBsZW5ndGgsIGZsdXNoLCBzdG9wT25F
cnJvciwgc2F3RXJyb3IpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTdHJp
bmcgY2hlY2tGb3JCT00oY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gpOwor
ICAgICAgICBTdHJpbmcgY2hlY2tGb3JCT00oY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJv
b2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKTsKIAogICAgICAgICBU
ZXh0RW5jb2RpbmcgbV9lbmNvZGluZzsKICAgICAgICAgT3duUHRyPFRleHRDb2RlYz4gbV9jb2Rl
YzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKaW5kZXggZTRkZjg0Mi4uOTAy
NjA0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTU5LDEyICs1
OSwxMiBAQCBUZXh0RW5jb2Rpbmc6OlRleHRFbmNvZGluZyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiB9CiAKLVN0cmluZyBUZXh0RW5jb2Rpbmc6OmRlY29kZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAorU3RyaW5nIFRleHRFbmNvZGluZzo6ZGVjb2RlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKSBj
b25zdAogewogICAgIGlmICghbV9uYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAg
ICByZXR1cm4gVGV4dERlY29kZXIoKnRoaXMpLmRlY29kZShkYXRhLCBsZW5ndGgsIHRydWUpOwor
ICAgIHJldHVybiBUZXh0RGVjb2RlcigqdGhpcykuZGVjb2RlKGRhdGEsIGxlbmd0aCwgdHJ1ZSwg
c3RvcE9uRXJyb3IsIHNhd0Vycm9yKTsKIH0KIAogQ1N0cmluZyBUZXh0RW5jb2Rpbmc6OmVuY29k
ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGVIYW5k
bGluZyBoYW5kbGluZykgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RW5jb2RpbmcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRl
eCBiODhhZDMzLi4wYTBhYjhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCkBA
IC00Nyw3ICs0NywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFVDaGFyIGJhY2tz
bGFzaEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdDsKICAgICAgICAgY29uc3QgVGV4dEVuY29kaW5n
JiBjbG9zZXN0OEJpdEVxdWl2YWxlbnQoKSBjb25zdDsKIAotICAgICAgICBTdHJpbmcgZGVjb2Rl
KGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGRlY29k
ZShjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGJvb2wgaWdub3JlZDsKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGUoc3RyLCBsZW5n
dGgsIGZhbHNlLCBpZ25vcmVkKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZGVjb2RlKGNv
bnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJv
cikgY29uc3Q7CiAgICAgICAgIENTdHJpbmcgZW5jb2RlKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxl
bmd0aCwgVW5lbmNvZGFibGVIYW5kbGluZykgY29uc3Q7CiAKICAgICBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCmluZGV4IGI1NTJjNGMuLmRhY2Nk
MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTc4
LDcgKzc4LDYgQEAgdm9pZCBUZXh0Q29kZWNNYWM6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1Jl
Z2lzdHJhciByZWdpc3RyYXIpCiAKIFRleHRDb2RlY01hYzo6VGV4dENvZGVjTWFjKFRFQ1RleHRF
bmNvZGluZ0lEIGVuY29kaW5nKQogICAgIDogbV9lbmNvZGluZyhlbmNvZGluZykKLSAgICAsIG1f
ZXJyb3IoZmFsc2UpCiAgICAgLCBtX251bUJ1ZmZlcmVkQnl0ZXMoMCkKICAgICAsIG1fY29udmVy
dGVyVEVDKDApCiB7CkBAIC0xNzksMTYgKzE3OCwxNSBAQCBPU1N0YXR1cyBUZXh0Q29kZWNNYWM6
OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dEJ1ZmZlciwgaW50IGlucHV0QnVmZmVy
TAogICAgIH0KIAogICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyAzMzUxMDkzLCB3aGVyZSBzb21ldGlt
ZXMgd2UgZ2V0IGtURUNCdWZmZXJCZWxvd01pbmltdW1TaXplRXJyIGluc3RlYWQgb2Yga1RFQ091
dHB1dEJ1ZmZlckZ1bGxTdGF0dXMuCi0gICAgaWYgKHN0YXR1cyA9PSBrVEVDQnVmZmVyQmVsb3dN
aW5pbXVtU2l6ZUVyciAmJiBieXRlc1dyaXR0ZW4gIT0gMCkgeworICAgIGlmIChzdGF0dXMgPT0g
a1RFQ0J1ZmZlckJlbG93TWluaW11bVNpemVFcnIgJiYgYnl0ZXNXcml0dGVuICE9IDApCiAgICAg
ICAgIHN0YXR1cyA9IGtURUNPdXRwdXRCdWZmZXJGdWxsU3RhdHVzOwotICAgIH0KIAogICAgIGlu
cHV0TGVuZ3RoID0gYnl0ZXNSZWFkOwogICAgIG91dHB1dExlbmd0aCA9IGJ5dGVzV3JpdHRlbjsK
ICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1TdHJpbmcgVGV4dENvZGVjTWFjOjpkZWNvZGUoY29u
c3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gpCitTdHJpbmcgVGV4dENv
ZGVjTWFjOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1
c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKQogewogICAgIC8vIEdldCBhIGNv
bnZlcnRlciBmb3IgdGhlIHBhc3NlZC1pbiBlbmNvZGluZy4KICAgICBpZiAoIW1fY29udmVydGVy
VEVDICYmIGNyZWF0ZVRFQ0NvbnZlcnRlcigpICE9IG5vRXJyKQpAQCAtMjAxLDcgKzE5OSw3IEBA
IFN0cmluZyBUZXh0Q29kZWNNYWM6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxl
bmd0aCwgYm9vbCBmbHVzaCkKICAgICBib29sIGJ1ZmZlcldhc0Z1bGwgPSBmYWxzZTsKICAgICBV
bmlDaGFyIGJ1ZmZlcltDb252ZXJzaW9uQnVmZmVyU2l6ZV07CiAKLSAgICB3aGlsZSAoc291cmNl
TGVuZ3RoIHx8IGJ1ZmZlcldhc0Z1bGwpIHsKKyAgICB3aGlsZSAoKHNvdXJjZUxlbmd0aCB8fCBi
dWZmZXJXYXNGdWxsKSAmJiAhc2F3RXJyb3IpIHsKICAgICAgICAgaW50IGJ5dGVzUmVhZCA9IDA7
CiAgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSAwOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMg
PSBkZWNvZGUoc291cmNlUG9pbnRlciwgc291cmNlTGVuZ3RoLCBieXRlc1JlYWQsIGJ1ZmZlciwg
c2l6ZW9mKGJ1ZmZlciksIGJ5dGVzV3JpdHRlbik7CkBAIC0yMTcsNiArMjE1LDEwIEBAIFN0cmlu
ZyBUZXh0Q29kZWNNYWM6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCBmbHVzaCkKICAgICAgICAgICAgIGNhc2Uga1RleHRVbmRlZmluZWRFbGVtZW50RXJyOgog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBQdXQgRkZGRCBjaGFyYWN0ZXIgaW50byB0aGUgb3V0
cHV0IHN0cmluZyBpbiB0aGlzIGNhc2U/CiAgICAgICAgICAgICAgICAgVEVDQ2xlYXJDb252ZXJ0
ZXJDb250ZXh0SW5mbyhtX2NvbnZlcnRlclRFQyk7CisgICAgICAgICAgICAgICAgaWYgKHN0b3BP
bkVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChzb3VyY2VMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgc291cmNlUG9pbnRlciArPSAx
OwogICAgICAgICAgICAgICAgICAgICBzb3VyY2VMZW5ndGggLT0gMTsKQEAgLTIzNyw3ICsyMzks
NyBAQCBTdHJpbmcgVGV4dENvZGVjTWFjOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVf
dCBsZW5ndGgsIGJvb2wgZmx1c2gpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIExPR19FUlJPUigidGV4dCBkZWNvZGluZyBmYWlsZWQgd2l0aCBl
cnJvciAlbGQiLCBzdGF0aWNfY2FzdDxsb25nPihzdGF0dXMpKTsKLSAgICAgICAgICAgICAgICBt
X2Vycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmggYi9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRDb2RlY01hYy5oCmluZGV4IGQ0MDA2NTkuLmFlZTRhOTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGV4cGxpY2l0IFRleHRDb2RlY01hYyhURUNUZXh0RW5jb2Rp
bmdJRCk7CiAgICAgICAgIHZpcnR1YWwgflRleHRDb2RlY01hYygpOwogCi0gICAgICAgIHZpcnR1
YWwgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCA9
IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXpl
X3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7
CiAgICAgICAgIHZpcnR1YWwgQ1N0cmluZyBlbmNvZGUoY29uc3QgVUNoYXIqLCBzaXplX3QgbGVu
Z3RoLCBVbmVuY29kYWJsZUhhbmRsaW5nKTsKIAogICAgIHByaXZhdGU6CkBAIC01NSw3ICs1NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBURUNUZXh0RW5jb2RpbmdJRCBtX2Vu
Y29kaW5nOwogICAgICAgICBVQ2hhciBtX2JhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2w7Ci0gICAg
ICAgIGJvb2wgbV9lcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1CdWZmZXJlZEJ5dGVzOwog
ICAgICAgICB1bnNpZ25lZCBjaGFyIG1fYnVmZmVyZWRCeXRlc1sxNl07IC8vIGJpZ2dlciB0aGFu
IGFueSBzaW5nbGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIKICAgICAgICAgbXV0YWJsZSBURUNPYmpl
Y3RSZWYgbV9jb252ZXJ0ZXJURUM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20083</attachid>
            <date>2008-03-26 09:48:12 -0700</date>
            <delta_ts>2008-03-26 10:08:36 -0700</delta_ts>
            <desc>Fix, makes us pass Test 70, now includes minimal testing</desc>
            <filename>Fix-makes-us-pass-Test-70-now-includes-minimal-testing.patch</filename>
            <type>text/plain</type>
            <size>25721</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NDEyMmFmMzgxOGIyMzZjNmY1NDAyYTI0NDdjNWQxOThkMjBmNDU5YwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLXhtbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9pbnZhbGlkLXhtbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmZiZWQ0N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2ludmFsaWQteG1sLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbnZhbGlkLXhtbC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5n
L3Jlc291cmNlcy9pbnZhbGlkLXhtbC1zaGlmdC1qaXMueG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
bmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtc2hpZnQtamlzLnhtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzNhMDhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtc2hpZnQtamlzLnhtbApA
QCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InNoaWZ0LWppcyIg
Pz4KKzxyb290PgorIDxmYWlsPiBUaGlzIGlzIGFuIGludmFsaWQgYnl0ZSBwYWlyIGluIHNoaWZ0
LWppczogDiA8L2ZhaWw+CisgPHRlc3QvPiA8IS0tIHNob3VsZG4ndCBldmVyIGJlIHBhcnNlZCwg
YXMgdGhlIHBhcnNlciBzaG91bGQgYWJvcnQgYXQgdGhlIGZpcnN0IHNpZ24gb2Ygbm9uLXdlbGwt
Zm9ybWVkbmVzcyAtLT4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXV0ZjE2LnhtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXV0ZjE2LnhtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jYjdkYTNhCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIv
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtdXRmMTYueG1s
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMv
aW52YWxpZC14bWwtdXRmOC54bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNl
cy9pbnZhbGlkLXhtbC11dGY4LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iNDc4NTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9y
ZXNvdXJjZXMvaW52YWxpZC14bWwtdXRmOC54bWwKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzxyb290PgorIDxmYWlsPiBUaGlzIGlzIGFu
IGludmFsaWQgYnl0ZSBpbiBVVEYtODogvyA8L2ZhaWw+CisgPHRlc3QvPiA8IS0tIHNob3VsZG4n
dCBldmVyIGJlIHBhcnNlZCwgYXMgdGhlIHBhcnNlciBzaG91bGQgYWJvcnQgYXQgdGhlIGZpcnN0
IHNpZ24gb2Ygbm9uLXdlbGwtZm9ybWVkbmVzcyAtLT4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXgtbWFjLXRoYWku
eG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwteC1t
YWMtdGhhaS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMyNTZkMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2lu
dmFsaWQteG1sLXgtbWFjLXRoYWkueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0ieC1tYWMtdGhhaSIgPz4KKzxyb290PgorIDxmYWlsPiBUaGlzIGlzIGFu
IGludmFsaWQgYnl0ZSBwYWlyIGluIHgtbWFjLXRoYWk6IJAgPC9mYWlsPgorIDx0ZXN0Lz4gPCEt
LSBzaG91bGRuJ3QgZXZlciBiZSBwYXJzZWQsIGFzIHRoZSBwYXJzZXIgc2hvdWxkIGFib3J0IGF0
IHRoZSBmaXJzdCBzaWduIG9mIG5vbi13ZWxsLWZvcm1lZG5lc3MgLS0+Cis8L3Jvb3Q+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9pbnZhbGlkLXhtbC5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MWEzZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9pbnZhbGlkLXhtbC5qcwpA
QCAtMCwwICsxLDQzIEBACisvLyB0ZXN0IDcwOiBYTUwgZW5jb2RpbmcgdGVzdAorLy8gcS52LiBY
TUwgMS4wLCBzZWN0aW9uIDQuMy4zIENoYXJhY3RlciBFbmNvZGluZyBpbiBFbnRpdGllcworLy8g
dGhpcyBvbmx5IHRlc3RzIG9uZSBvZiBhIGxhcmdlIG51bWJlciBvZiBjb25kaXRpb25zIHRoYXQg
c2hvdWxkIGNhdXNlIGZhdGFsIGVycm9ycworCitmdW5jdGlvbiBydW5FbmNvZGluZ1Rlc3QoZXZl
bnQpCit7CisgICAgZGVidWcoIlRlc3Rpbmc6ICIgKyBlbmNvZGluZ1Rlc3RzW2N1cnJlbnRUZXN0
LTFdKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlmcmFtZS5jb250ZW50RG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUiLCAicm9vdCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaWZy
YW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3Rlc3QnKS5sZW5ndGggPCAxIik7CisgICAgc2V0VGltZW91dChydW5OZXh0VGVzdCwgMCk7Cit9
CisKK3ZhciBjdXJyZW50VGVzdCA9IDA7Cit2YXIgZW5jb2RpbmdUZXN0cyA9IFsKKyAgICAiaW52
YWxpZC14bWwtdXRmOC54bWwiLAorICAgICJpbnZhbGlkLXhtbC11dGYxNi54bWwiLAorICAgICJp
bnZhbGlkLXhtbC1zaGlmdC1qaXMueG1sIiwKKyAgICAiaW52YWxpZC14bWwteC1tYWMtdGhhaS54
bWwiLAorXTsKKworZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQoreworICAgIGlmIChjdXJyZW50VGVz
dCA+PSBlbmNvZGluZ1Rlc3RzLmxlbmd0aCkgeworICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgICAgIHNjcmlwdC5zcmMgPSAiLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoc2NyaXB0KTsKKyAgICAgICAgaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaWZy
YW1lKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy8iICsgZW5jb2RpbmdUZXN0c1tjdXJy
ZW50VGVzdCsrXTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBpZnJhbWUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aWZyYW1lKTsKK2lmcmFtZS5vbmxvYWQgPSBydW5FbmNvZGluZ1Rlc3Q7CitydW5OZXh0VGVzdCgp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCAwMjkzOGE0
Li5lNmVlYjkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC02NTgsNyArNjU4LDcgQEAgX19aTks3V2ViQ29yZTEy
UmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmpl
Y3QyNWJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2xFdgogX19aTks3V2ViQ29yZTEyU2hhcmVkQnVm
ZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyNHNpemVFdgotX19aTks3V2Vi
Q29yZTEyVGV4dEVuY29kaW5nNmRlY29kZUVQS2NtCitfX1pOSzdXZWJDb3JlMTJUZXh0RW5jb2Rp
bmc2ZGVjb2RlRVBLY21iUmIKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMGlzTGl2ZUxp
bmtFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDEwaXNTZWxlY3RlZEV2CiBfX1pOSzdX
ZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTF0YXJnZXRGcmFtZUV2CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9YTUxUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAppbmRl
eCBmZTdjOTVhLi5mM2E2YzQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCiAjaWZuZGVmIFVTRV9RWE1MU1RSRUFNCiAjaW5jbHVkZSA8bGlieG1sL3BhcnNl
ci5oPgogI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaD4KQEAgLTY2OCw2ICs2Njks
MTAgQEAgYm9vbCBYTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgcywg
Ym9vbCAvKmFwcGVuZERhdGEqLykKICAgICB9CiAjZW5kaWYKICAgICAKKyAgICBpZiAobV9kb2Mt
PmRlY29kZXIoKSAmJiBtX2RvYy0+ZGVjb2RlcigpLT5zYXdFcnJvcigpKQorICAgICAgICAvLyBJ
ZiB0aGUgZGVjb2RlciBzYXcgYW4gZXJyb3IsIHJlcG9ydCBpdCBhcyBmYXRhbCAoc3RvcHMgcGFy
c2luZykKKyAgICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJFbmNvZGluZyBlcnJvciIsIGxpbmVO
dW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2lmbmRl
ZiBVU0VfUVhNTFNUUkVBTQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5j
cHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcAppbmRleCA5N2I1NjZiLi4xMjQwNTcw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcAorKysgYi9XZWJDb3Jl
L2xvYWRlci9DYWNoZWRGb250LmNwcApAQCAtMTM3LDYgKzEzNywxMCBAQCBib29sIENhY2hlZEZv
bnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKIAogICAgICAgICBUZXh0UmVzb3VyY2VEZWNvZGVyIGRl
Y29kZXIoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQt
PndyaXRlKGRlY29kZXIuZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwor
ICAgICAgICBpZiAoZGVjb2Rlci5zYXdFcnJvcigpKSB7CisgICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRG9jdW1lbnQuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAK
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5maW5pc2hQYXJzaW5nKCk7CiAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+Y2xvc2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNl
RGVjb2Rlci5jcHAKaW5kZXggZWY4YTk3OS4uOGE4NWZkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHAKQEAgLTMyNyw2ICszMjcsNyBAQCBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpUZXh0UmVzb3VyY2VEZWNvZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFRleHRF
bmNvZAogICAgICwgbV9jaGVja2VkRm9yQk9NKGZhbHNlKQogICAgICwgbV9jaGVja2VkRm9yQ1NT
Q2hhcnNldChmYWxzZSkKICAgICAsIG1fY2hlY2tlZEZvckhlYWRDaGFyc2V0KGZhbHNlKQorICAg
ICwgbV9zYXdFcnJvcihmYWxzZSkKIHsKIH0KIApAQCAtNzU4LDcgKzc1OSw3IEBAIFN0cmluZyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbikK
ICAgICBBU1NFUlQoZW5jb2RpbmcoKS5pc1ZhbGlkKCkpOwogCiAgICAgaWYgKG1fYnVmZmVyLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGUoZGF0YSwgbGVuKTsKKyAg
ICAgICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGUoZGF0YSwgbGVuLCBmYWxzZSwgbV9jb250ZW50
VHlwZSA9PSBYTUwsIG1fc2F3RXJyb3IpOwogCiAgICAgaWYgKCFtb3ZlZERhdGFUb0J1ZmZlcikg
ewogICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKQEAgLTc2NiwxNCAr
NzY3LDE0IEBAIFN0cmluZyBUZXh0UmVzb3VyY2VEZWNvZGVyOjpkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbikKICAgICAgICAgbWVtY3B5KG1fYnVmZmVyLmRhdGEoKSArIG9sZFNp
emUsIGRhdGEsIGxlbik7CiAgICAgfQogCi0gICAgU3RyaW5nIHJlc3VsdCA9IG1fZGVjb2Rlci5k
ZWNvZGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpOworICAgIFN0cmluZyByZXN1
bHQgPSBtX2RlY29kZXIuZGVjb2RlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCBm
YWxzZSwgbV9jb250ZW50VHlwZSA9PSBYTUwsIG1fc2F3RXJyb3IpOwogICAgIG1fYnVmZmVyLmNs
ZWFyKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5nIFRleHRSZXNvdXJjZURlY29k
ZXI6OmZsdXNoKCkKIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9kZWNvZGVyLmRlY29kZShtX2J1
ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSwgdHJ1ZSk7CisgICAgU3RyaW5nIHJlc3VsdCA9
IG1fZGVjb2Rlci5kZWNvZGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCksIHRydWUs
IG1fY29udGVudFR5cGUgPT0gWE1MLCBtX3Nhd0Vycm9yKTsKICAgICBtX2J1ZmZlci5jbGVhcigp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9UZXh0
UmVzb3VyY2VEZWNvZGVyLmggYi9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgK
aW5kZXggNjkxN2FiNS4uMWRkOWQ1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIu
aApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIFN0cmluZyBmbHVzaCgpOworICAgIAorICAg
IGJvb2wgc2F3RXJyb3IoKSBjb25zdCB7IHJldHVybiBtX3Nhd0Vycm9yOyB9CiAKIHByaXZhdGU6
CiAgICAgZW51bSBDb250ZW50VHlwZSB7IFBsYWluVGV4dCwgSFRNTCwgWE1MLCBDU1MgfTsgLy8g
UGxhaW5UZXh0IGlzIGVxdWl2YWxlbnQgdG8gZGlyZWN0bHkgdXNpbmcgVGV4dERlY29kZXIuCkBA
IC03MCw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NoZWNrZWRGb3JCT007CiAgICAg
Ym9vbCBtX2NoZWNrZWRGb3JDU1NDaGFyc2V0OwogICAgIGJvb2wgbV9jaGVja2VkRm9ySGVhZENo
YXJzZXQ7CisgICAgYm9vbCBtX3Nhd0Vycm9yOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlYy5oCmluZGV4IDlkNGY1MDcuLjk2NTRhMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWMuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
LmgKQEAgLTMyLDEwICszMiw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAKLSAgICBjbGFzcyBDU3RyaW5nOwotICAgIGNsYXNzIFN0cmlu
ZzsKK25hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKICAgICAv
LyBTcGVjaWZpZXMgd2hhdCB3aWxsIGhhcHBlbiB3aGVuIGEgY2hhcmFjdGVyIGlzIGVuY291bnRl
cmVkIHRoYXQgaXMKQEAgLTYwLDcgKzU5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHRDb2RlYygpOwogCi0gICAgICAgIHZpcnR1YWwg
U3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCA9IGZh
bHNlKSA9IDA7CisgICAgICAgIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogc3RyLCBzaXplX3Qg
bGVuZ3RoLCBib29sIGZsdXNoID0gZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wg
aWdub3JlZDsKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGUoc3RyLCBsZW5ndGgsIGZsdXNoLCBm
YWxzZSwgaWdub3JlZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBz
dG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpID0gMDsKICAgICAgICAgdmlydHVhbCBDU3RyaW5n
IGVuY29kZShjb25zdCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcp
ID0gMDsKIAogICAgICAgICAvLyBGaWxscyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGdpdmVuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjSUNVLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3Bw
CmluZGV4IDg1NzlmZmYuLjZlNzM5NmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJ
Q1UuY3BwCkBAIC0yMTUsNyArMjE1LDUwIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpjcmVhdGVJQ1VD
b252ZXJ0ZXIoKSBjb25zdAogICAgICAgICB1Y252X3NldEZhbGxiYWNrKG1fY29udmVydGVySUNV
LCBUUlVFKTsKIH0KIAotU3RyaW5nIFRleHRDb2RlY0lDVTo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoKQoraW50IFRleHRDb2RlY0lDVTo6ZGVjb2Rl
VG9CdWZmZXIoVUNoYXIqIHRhcmdldCwgVUNoYXIqIHRhcmdldExpbWl0LCBjb25zdCBjaGFyKiYg
c291cmNlLCBjb25zdCBjaGFyKiBzb3VyY2VMaW1pdCwgaW50MzJfdCogb2Zmc2V0cywgYm9vbCBm
bHVzaCwgVUVycm9yQ29kZSYgZXJyKQoreworICAgIFVDaGFyKiB0YXJnZXRTdGFydCA9IHRhcmdl
dDsKKyAgICBlcnIgPSBVX1pFUk9fRVJST1I7CisgICAgdWNudl90b1VuaWNvZGUobV9jb252ZXJ0
ZXJJQ1UsICZ0YXJnZXQsIHRhcmdldExpbWl0LCAmc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0
cywgZmx1c2gsICZlcnIpOworICAgIHJldHVybiB0YXJnZXQgLSB0YXJnZXRTdGFydDsKK30KKwor
Y2xhc3MgRXJyb3JDYWxsYmFja1NldHRlciB7CitwdWJsaWM6CisgICAgRXJyb3JDYWxsYmFja1Nl
dHRlcihVQ29udmVydGVyKiBjb252ZXJ0ZXIsIGJvb2wgc3RvcE9uRXJyb3IpCisgICAgICAgIDog
bV9jb252ZXJ0ZXIoY29udmVydGVyKQorICAgICAgICAsIG1fc2hvdWxkU3RvcE9uRW5jb2RpbmdF
cnJvcnMoc3RvcE9uRXJyb3IpCisgICAgeworICAgICAgICBpZiAobV9zaG91bGRTdG9wT25FbmNv
ZGluZ0Vycm9ycykgeworICAgICAgICAgICAgVUVycm9yQ29kZSBlcnIgPSBVX1pFUk9fRVJST1I7
CisgICAgICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKG1fY29udmVydGVyLCBVQ05WX1RPX1Vf
Q0FMTEJBQ0tfU1VCU1RJVFVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDTlZfU1VC
X1NUT1BfT05fSUxMRUdBTCwgJm1fc2F2ZWRBY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbV9zYXZlZENvbnRleHQsICZlcnIpOworICAgICAgICAgICAgQVNTRVJUKGVyciA9PSBV
X1pFUk9fRVJST1IpOworICAgICAgICB9CisgICAgfQorICAgIH5FcnJvckNhbGxiYWNrU2V0dGVy
KCkKKyAgICB7CisgICAgICAgIGlmIChtX3Nob3VsZFN0b3BPbkVuY29kaW5nRXJyb3JzKSB7Cisg
ICAgICAgICAgICBVRXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgICAgIGNv
bnN0IHZvaWQqIG9sZENvbnRleHQ7CisgICAgICAgICAgICBVQ29udmVydGVyVG9VQ2FsbGJhY2sg
b2xkQWN0aW9uOworICAgICAgICAgICAgdWNudl9zZXRUb1VDYWxsQmFjayhtX2NvbnZlcnRlciwg
bV9zYXZlZEFjdGlvbiwKKyAgICAgICAgICAgICAgICAgICBtX3NhdmVkQ29udGV4dCwgJm9sZEFj
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAmb2xkQ29udGV4dCwgJmVycik7CisgICAgICAgICAg
ICBBU1NFUlQob2xkQWN0aW9uID09IFVDTlZfVE9fVV9DQUxMQkFDS19TVUJTVElUVVRFKTsKKyAg
ICAgICAgICAgIEFTU0VSVChvbGRDb250ZXh0ID09IFVDTlZfU1VCX1NUT1BfT05fSUxMRUdBTCk7
CisgICAgICAgICAgICBBU1NFUlQoZXJyID09IFVfWkVST19FUlJPUik7CisgICAgICAgIH0KKyAg
ICB9Citwcml2YXRlOgorICAgIFVDb252ZXJ0ZXIqIG1fY29udmVydGVyOworICAgIGJvb2wgbV9z
aG91bGRTdG9wT25FbmNvZGluZ0Vycm9yczsKKyAgICBjb25zdCB2b2lkKiBtX3NhdmVkQ29udGV4
dDsKKyAgICBVQ29udmVydGVyVG9VQ2FsbGJhY2sgbV9zYXZlZEFjdGlvbjsKK307CisKK1N0cmlu
ZyBUZXh0Q29kZWNJQ1U6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpCiB7CiAgICAgLy8g
R2V0IGEgY29udmVydGVyIGZvciB0aGUgcGFzc2VkLWluIGVuY29kaW5nLgogICAgIGlmICghbV9j
b252ZXJ0ZXJJQ1UpIHsKQEAgLTIyNiwzNCArMjY5LDMwIEBAIFN0cmluZyBUZXh0Q29kZWNJQ1U6
OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBF
cnJvckNhbGxiYWNrU2V0dGVyIGNhbGxiYWNrU2V0dGVyKG1fY29udmVydGVySUNVLCBzdG9wT25F
cnJvcik7CiAKICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKIAogICAgIFVDaGFyIGJ1ZmZlcltD
b252ZXJzaW9uQnVmZmVyU2l6ZV07CisgICAgVUNoYXIqIGJ1ZmZlckxpbWl0ID0gYnVmZmVyICsg
Q29udmVyc2lvbkJ1ZmZlclNpemU7CiAgICAgY29uc3QgY2hhciogc291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMpOwogICAgIGNvbnN0IGNoYXIqIHNvdXJjZUxpbWl0
ID0gc291cmNlICsgbGVuZ3RoOwogICAgIGludDMyX3QqIG9mZnNldHMgPSBOVUxMOwotICAgIFVF
cnJvckNvZGUgZXJyOworICAgIFVFcnJvckNvZGUgZXJyID0gVV9aRVJPX0VSUk9SOwogCiAgICAg
ZG8gewotICAgICAgICBVQ2hhciogdGFyZ2V0ID0gYnVmZmVyOwotICAgICAgICBjb25zdCBVQ2hh
ciogdGFyZ2V0TGltaXQgPSB0YXJnZXQgKyBDb252ZXJzaW9uQnVmZmVyU2l6ZTsKLSAgICAgICAg
ZXJyID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1Y252X3RvVW5pY29kZShtX2NvbnZlcnRlcklD
VSwgJnRhcmdldCwgdGFyZ2V0TGltaXQsICZzb3VyY2UsIHNvdXJjZUxpbWl0LCBvZmZzZXRzLCBm
bHVzaCwgJmVycik7Ci0gICAgICAgIGludCBjb3VudCA9IHRhcmdldCAtIGJ1ZmZlcjsKLSAgICAg
ICAgYXBwZW5kT21pdHRpbmdCT00ocmVzdWx0LCBidWZmZXIsIGNvdW50KTsKKyAgICAgICAgaW50
IHVjaGFyc0RlY29kZWQgPSBkZWNvZGVUb0J1ZmZlcihidWZmZXIsIGJ1ZmZlckxpbWl0LCBzb3Vy
Y2UsIHNvdXJjZUxpbWl0LCBvZmZzZXRzLCBmbHVzaCwgZXJyKTsKKyAgICAgICAgYXBwZW5kT21p
dHRpbmdCT00ocmVzdWx0LCBidWZmZXIsIHVjaGFyc0RlY29kZWQpOwogICAgIH0gd2hpbGUgKGVy
ciA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUik7CiAKICAgICBpZiAoVV9GQUlMVVJFKGVycikp
IHsKICAgICAgICAgLy8gZmx1c2ggdGhlIGNvbnZlcnRlciBzbyBpdCBjYW4gYmUgcmV1c2VkLCBh
bmQgbm90IGJlIGJvdGhlcmVkIGJ5IHRoaXMgZXJyb3IuCiAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgIFVDaGFyICp0YXJnZXQgPSBidWZmZXI7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciAqdGFy
Z2V0TGltaXQgPSB0YXJnZXQgKyBDb252ZXJzaW9uQnVmZmVyU2l6ZTsKLSAgICAgICAgICAgIGVy
ciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIHVjbnZfdG9Vbmljb2RlKG1fY29udmVydGVy
SUNVLCAmdGFyZ2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMs
IHRydWUsICZlcnIpOworICAgICAgICAgICAgZGVjb2RlVG9CdWZmZXIoYnVmZmVyLCBidWZmZXJM
aW1pdCwgc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywgdHJ1ZSwgZXJyKTsKICAgICAgICAg
fSB3aGlsZSAoc291cmNlIDwgc291cmNlTGltaXQpOworICAgICAgICBzYXdFcnJvciA9IHRydWU7
CiAgICAgICAgIExPR19FUlJPUigiSUNVIGNvbnZlcnNpb24gZXJyb3IiKTsKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KIAogICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSBTdHJpbmc6
OmFkb3B0KHJlc3VsdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjSUNVLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmgKaW5kZXggZjVj
NjY0ZC4uOWM5YTRhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0lDVS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuaApAQCAtNDUs
NyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRleHRDb2RlY0lDVShjb25z
dCBUZXh0RW5jb2RpbmcmKTsKICAgICAgICAgdmlydHVhbCB+VGV4dENvZGVjSUNVKCk7CiAKLSAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBi
b29sIGZsdXNoID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBkZWNvZGUoY29uc3Qg
Y2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wm
IHNhd0Vycm9yKTsKICAgICAgICAgdmlydHVhbCBDU3RyaW5nIGVuY29kZShjb25zdCBVQ2hhcios
IHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcpOwogCiAgICAgcHJpdmF0ZToKQEAg
LTUzLDYgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlbGVhc2VJ
Q1VDb252ZXJ0ZXIoKSBjb25zdDsKICAgICAgICAgYm9vbCBuZWVkc0dCS0ZhbGxiYWNrcygpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNHQktGYWxsYmFja3M7IH0KICAgICAgICAgdm9pZCBzZXROZWVk
c0dCS0ZhbGxiYWNrcyhib29sIG5lZWRzRmFsbGJhY2tzKSB7IG1fbmVlZHNHQktGYWxsYmFja3Mg
PSBuZWVkc0ZhbGxiYWNrczsgfQorICAgICAgICAKKyAgICAgICAgaW50IGRlY29kZVRvQnVmZmVy
KFVDaGFyKiBidWZmZXIsIFVDaGFyKiBidWZmZXJMaW1pdCwgY29uc3QgY2hhciomIHNvdXJjZSwK
KyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZUxpbWl0LCBpbnQzMl90KiBvZmZzZXRzLCBi
b29sIGZsdXNoLCBVRXJyb3JDb2RlJiBlcnIpOwogCiAgICAgICAgIFRleHRFbmNvZGluZyBtX2Vu
Y29kaW5nOwogICAgICAgICB1bnNpZ25lZCBtX251bUJ1ZmZlcmVkQnl0ZXM7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IGU4ZWY2OTAuLjUwZjlmOTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lz
dHJhciByZWdpc3RyYXIpCiAgICAgcmVnaXN0cmFyKCJVUy1BU0NJSSIsIG5ld1N0cmVhbWluZ1Rl
eHREZWNvZGVyV2luZG93c0xhdGluMSwgMCk7CiB9CiAKLVN0cmluZyBUZXh0Q29kZWNMYXRpbjE6
OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCkKK1N0cmluZyBU
ZXh0Q29kZWNMYXRpbjE6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCwgYm9vbCwgYm9vbCYpCiB7CiAgICAgU3RyaW5nQnVmZmVyIGNoYXJhY3RlcnMobGVuZ3Ro
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5oCmluZGV4IGFjNGEzZWEu
LmYwMzVkMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRp
bjEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyKTsKIAotICAgICAgICB2aXJ0
dWFsIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gg
PSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6
ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3Ip
OwogICAgICAgICB2aXJ0dWFsIENTdHJpbmcgZW5jb2RlKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxl
bmd0aCwgVW5lbmNvZGFibGVIYW5kbGluZyk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHAKaW5kZXggMDhhZGE3NC4uMTE0OGJjZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgVGV4
dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIp
CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZCRSIsIG5ld1N0cmVhbWluZ1RleHREZWNvZGVyVVRGMTZC
RSwgMCk7CiB9CiAKLVN0cmluZyBUZXh0Q29kZWNVVEYxNjo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sKQorU3RyaW5nIFRleHRDb2RlY1VURjE2OjpkZWNvZGUo
Y29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wsIGJvb2wgc3RvcE9uRXJyb3Is
IGJvb2wmIHNhd0Vycm9yKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oCmluZGV4IDY2ODQyZWQu
LjhjZTk0NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYx
Ni5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBUZXh0Q29kZWNVVEYxNihi
b29sIGxpdHRsZUVuZGlhbikgOiBtX2xpdHRsZUVuZGlhbihsaXR0bGVFbmRpYW4pLCBtX2hhdmVC
dWZmZXJlZEJ5dGUoZmFsc2UpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY29kZShj
b25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCA9IGZhbHNlKTsKKyAgICAgICAg
dmlydHVhbCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZs
dXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7CiAgICAgICAgIHZpcnR1YWwg
Q1N0cmluZyBlbmNvZGUoY29uc3QgVUNoYXIqLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZUhh
bmRsaW5nKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VzZXJEZWZpbmVkLmNwcAppbmRleCBkYTRhNDlkLi4yZGFlMGYzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVn
aXN0cmFyIHJlZ2lzdHJhcikKICAgICByZWdpc3RyYXIoIngtdXNlci1kZWZpbmVkIiwgbmV3U3Ry
ZWFtaW5nVGV4dERlY29kZXJVc2VyRGVmaW5lZCwgMCk7CiB9CiAKLVN0cmluZyBUZXh0Q29kZWNV
c2VyRGVmaW5lZDo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29s
KQorU3RyaW5nIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMs
IHNpemVfdCBsZW5ndGgsIGJvb2wsIGJvb2wsIGJvb2wmKQogewogICAgIFN0cmluZ0J1ZmZlciBi
dWZmZXIobGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VzZXJEZWZpbmVkLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRl
ZmluZWQuaAppbmRleCAyNzU5NDcxLi5kMWIzMTYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVXNlckRlZmluZWQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGlu
Z05hbWVSZWdpc3RyYXIpOwogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIpOwogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY29kZShjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVh
bCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBi
b29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7CiAgICAgICAgIHZpcnR1YWwgQ1N0cmlu
ZyBlbmNvZGUoY29uc3QgVUNoYXIqLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZUhhbmRsaW5n
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dERlY29k
ZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHREZWNvZGVyLmNwcAppbmRleCA4NjMz
ZTlmLi45MDE2MzgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dERlY29k
ZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGVjb2Rlci5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgdm9pZCBUZXh0RGVjb2Rlcjo6cmVzZXQoY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZykKICAgICBtX251bUJ1ZmZlcmVkQnl0ZXMgPSAwOwogfQogCi1TdHJpbmcgVGV4dERl
Y29kZXI6OmNoZWNrRm9yQk9NKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wg
Zmx1c2gpCitTdHJpbmcgVGV4dERlY29kZXI6OmNoZWNrRm9yQk9NKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vy
cm9yKQogewogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBmb3VuZCBhIEJPTS4KICAgICBzaXpl
X3QgbnVtQnVmZmVyZWRCeXRlcyA9IG1fbnVtQnVmZmVyZWRCeXRlczsKQEAgLTk2LDExICs5Niwx
NCBAQCBTdHJpbmcgVGV4dERlY29kZXI6OmNoZWNrRm9yQk9NKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wgZmx1c2gpCiAgICAgICAgIGNoYXIgYnVmZmVyZWRCeXRlc1tzaXpl
b2YobV9idWZmZXJlZEJ5dGVzKV07CiAgICAgICAgIG1lbWNweShidWZmZXJlZEJ5dGVzLCBtX2J1
ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMpOwogICAgICAgICBtX251bUJ1ZmZlcmVkQnl0
ZXMgPSAwOwotICAgICAgICByZXR1cm4gbV9jb2RlYy0+ZGVjb2RlKGJ1ZmZlcmVkQnl0ZXMsIG51
bUJ1ZmZlcmVkQnl0ZXMsIGZhbHNlKQotICAgICAgICAgICAgKyBtX2NvZGVjLT5kZWNvZGUoZGF0
YSwgbGVuZ3RoLCBmbHVzaCk7CisKKyAgICAgICAgU3RyaW5nIGJ1ZmZlcmVkUmVzdWx0ID0gbV9j
b2RlYy0+ZGVjb2RlKGJ1ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMsIGZhbHNlLCBzdG9w
T25FcnJvciwgc2F3RXJyb3IpOworICAgICAgICBpZiAoc3RvcE9uRXJyb3IgJiYgc2F3RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyZWRSZXN1bHQ7CisgICAgICAgIHJldHVybiBidWZm
ZXJlZFJlc3VsdCArIG1fY29kZWMtPmRlY29kZShkYXRhLCBsZW5ndGgsIGZsdXNoLCBzdG9wT25F
cnJvciwgc2F3RXJyb3IpOwogICAgIH0KIAotICAgIHJldHVybiBtX2NvZGVjLT5kZWNvZGUoZGF0
YSwgbGVuZ3RoLCBmbHVzaCk7CisgICAgcmV0dXJuIG1fY29kZWMtPmRlY29kZShkYXRhLCBsZW5n
dGgsIGZsdXNoLCBzdG9wT25FcnJvciwgc2F3RXJyb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dERlY29kZXIuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGVjb2Rlci5oCmluZGV4IDM4OTIwMzIuLjE3MWNi
NTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGVjb2Rlci5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGVjb2Rlci5oCkBAIC00MSwxNSArNDEsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlc2V0KGNvbnN0IFRleHRFbmNvZGlu
ZyYpOwogICAgICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGluZzsgfTsKIAotICAgICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2ggPSBmYWxzZSkKKyAgICAgICAgU3RyaW5nIGRl
Y29kZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sIHN0
b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NoZWNrZWRGb3JCT00pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrRm9yQk9NKGRhdGEs
IGxlbmd0aCwgZmx1c2gpOwotICAgICAgICAgICAgcmV0dXJuIG1fY29kZWMtPmRlY29kZShkYXRh
LCBsZW5ndGgsIGZsdXNoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tGb3JCT00oZGF0
YSwgbGVuZ3RoLCBmbHVzaCwgc3RvcE9uRXJyb3IsIHNhd0Vycm9yKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2NvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3RoLCBmbHVzaCwgc3RvcE9uRXJyb3IsIHNh
d0Vycm9yKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIGNoZWNr
Rm9yQk9NKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoKTsKKyAgICAgICAg
U3RyaW5nIGNoZWNrRm9yQk9NKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNo
LCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7CiAKICAgICAgICAgVGV4dEVuY29k
aW5nIG1fZW5jb2Rpbmc7CiAgICAgICAgIE93blB0cjxUZXh0Q29kZWM+IG1fY29kZWM7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmluZGV4IGU0ZGY4NDIuLjkwMjYwNDkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCkBAIC01OSwxMiArNTksMTIgQEAg
VGV4dEVuY29kaW5nOjpUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQogewogfQogCi1T
dHJpbmcgVGV4dEVuY29kaW5nOjpkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgY29uc3QKK1N0cmluZyBUZXh0RW5jb2Rpbmc6OmRlY29kZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3QKIHsK
ICAgICBpZiAoIW1fbmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJu
IFRleHREZWNvZGVyKCp0aGlzKS5kZWNvZGUoZGF0YSwgbGVuZ3RoLCB0cnVlKTsKKyAgICByZXR1
cm4gVGV4dERlY29kZXIoKnRoaXMpLmRlY29kZShkYXRhLCBsZW5ndGgsIHRydWUsIHN0b3BPbkVy
cm9yLCBzYXdFcnJvcik7CiB9CiAKIENTdHJpbmcgVGV4dEVuY29kaW5nOjplbmNvZGUoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcgaGFu
ZGxpbmcpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggYjg4YWQz
My4uMGEwYWI4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Zy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNDcsNyAr
NDcsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBVQ2hhciBiYWNrc2xhc2hBc0N1
cnJlbmN5U3ltYm9sKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IFRleHRFbmNvZGluZyYgY2xvc2Vz
dDhCaXRFcXVpdmFsZW50KCkgY29uc3Q7CiAKLSAgICAgICAgU3RyaW5nIGRlY29kZShjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBkZWNvZGUoY29uc3Qg
Y2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBi
b29sIGlnbm9yZWQ7CisgICAgICAgICAgICByZXR1cm4gZGVjb2RlKHN0ciwgbGVuZ3RoLCBmYWxz
ZSwgaWdub3JlZCk7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFy
Kiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpIGNvbnN0
OwogICAgICAgICBDU3RyaW5nIGVuY29kZShjb25zdCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFVu
ZW5jb2RhYmxlSGFuZGxpbmcpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAppbmRleCBiNTUyYzRjLi5kYWNjZDA0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC03OCw3ICs3OCw2
IEBAIHZvaWQgVGV4dENvZGVjTWFjOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIg
cmVnaXN0cmFyKQogCiBUZXh0Q29kZWNNYWM6OlRleHRDb2RlY01hYyhURUNUZXh0RW5jb2RpbmdJ
RCBlbmNvZGluZykKICAgICA6IG1fZW5jb2RpbmcoZW5jb2RpbmcpCi0gICAgLCBtX2Vycm9yKGZh
bHNlKQogICAgICwgbV9udW1CdWZmZXJlZEJ5dGVzKDApCiAgICAgLCBtX2NvbnZlcnRlclRFQygw
KQogewpAQCAtMTc5LDE2ICsxNzgsMTUgQEAgT1NTdGF0dXMgVGV4dENvZGVjTWFjOjpkZWNvZGUo
Y29uc3QgdW5zaWduZWQgY2hhciogaW5wdXRCdWZmZXIsIGludCBpbnB1dEJ1ZmZlckwKICAgICB9
CiAKICAgICAvLyBXb3JrIGFyb3VuZCBidWcgMzM1MTA5Mywgd2hlcmUgc29tZXRpbWVzIHdlIGdl
dCBrVEVDQnVmZmVyQmVsb3dNaW5pbXVtU2l6ZUVyciBpbnN0ZWFkIG9mIGtURUNPdXRwdXRCdWZm
ZXJGdWxsU3RhdHVzLgotICAgIGlmIChzdGF0dXMgPT0ga1RFQ0J1ZmZlckJlbG93TWluaW11bVNp
emVFcnIgJiYgYnl0ZXNXcml0dGVuICE9IDApIHsKKyAgICBpZiAoc3RhdHVzID09IGtURUNCdWZm
ZXJCZWxvd01pbmltdW1TaXplRXJyICYmIGJ5dGVzV3JpdHRlbiAhPSAwKQogICAgICAgICBzdGF0
dXMgPSBrVEVDT3V0cHV0QnVmZmVyRnVsbFN0YXR1czsKLSAgICB9CiAKICAgICBpbnB1dExlbmd0
aCA9IGJ5dGVzUmVhZDsKICAgICBvdXRwdXRMZW5ndGggPSBieXRlc1dyaXR0ZW47CiAgICAgcmV0
dXJuIHN0YXR1czsKIH0KIAotU3RyaW5nIFRleHRDb2RlY01hYzo6ZGVjb2RlKGNvbnN0IGNoYXIq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoKQorU3RyaW5nIFRleHRDb2RlY01hYzo6
ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29s
IHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAgICAvLyBHZXQgYSBjb252ZXJ0ZXIg
Zm9yIHRoZSBwYXNzZWQtaW4gZW5jb2RpbmcuCiAgICAgaWYgKCFtX2NvbnZlcnRlclRFQyAmJiBj
cmVhdGVURUNDb252ZXJ0ZXIoKSAhPSBub0VycikKQEAgLTIwMSw3ICsxOTksNyBAQCBTdHJpbmcg
VGV4dENvZGVjTWFjOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJv
b2wgZmx1c2gpCiAgICAgYm9vbCBidWZmZXJXYXNGdWxsID0gZmFsc2U7CiAgICAgVW5pQ2hhciBi
dWZmZXJbQ29udmVyc2lvbkJ1ZmZlclNpemVdOwogCi0gICAgd2hpbGUgKHNvdXJjZUxlbmd0aCB8
fCBidWZmZXJXYXNGdWxsKSB7CisgICAgd2hpbGUgKChzb3VyY2VMZW5ndGggfHwgYnVmZmVyV2Fz
RnVsbCkgJiYgIXNhd0Vycm9yKSB7CiAgICAgICAgIGludCBieXRlc1JlYWQgPSAwOwogICAgICAg
ICBpbnQgYnl0ZXNXcml0dGVuID0gMDsKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gZGVjb2Rl
KHNvdXJjZVBvaW50ZXIsIHNvdXJjZUxlbmd0aCwgYnl0ZXNSZWFkLCBidWZmZXIsIHNpemVvZihi
dWZmZXIpLCBieXRlc1dyaXR0ZW4pOwpAQCAtMjE3LDYgKzIxNSwxMCBAQCBTdHJpbmcgVGV4dENv
ZGVjTWFjOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1
c2gpCiAgICAgICAgICAgICBjYXNlIGtUZXh0VW5kZWZpbmVkRWxlbWVudEVycjoKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogUHV0IEZGRkQgY2hhcmFjdGVyIGludG8gdGhlIG91dHB1dCBzdHJp
bmcgaW4gdGhpcyBjYXNlPwogICAgICAgICAgICAgICAgIFRFQ0NsZWFyQ29udmVydGVyQ29udGV4
dEluZm8obV9jb252ZXJ0ZXJURUMpOworICAgICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikg
eworICAgICAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoc291cmNl
TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVBvaW50ZXIgKz0gMTsKICAgICAg
ICAgICAgICAgICAgICAgc291cmNlTGVuZ3RoIC09IDE7CkBAIC0yMzcsNyArMjM5LDcgQEAgU3Ry
aW5nIFRleHRDb2RlY01hYzo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
LCBib29sIGZsdXNoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoInRleHQgZGVjb2RpbmcgZmFpbGVkIHdpdGggZXJyb3IgJWxk
Iiwgc3RhdGljX2Nhc3Q8bG9uZz4oc3RhdHVzKSk7Ci0gICAgICAgICAgICAgICAgbV9lcnJvciA9
IHRydWU7CisgICAgICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Q29kZWNNYWMuaAppbmRleCBkNDAwNjU5Li5hZWU0YTk3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvVGV4dENvZGVjTWFjLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBleHBsaWNpdCBUZXh0Q29kZWNNYWMoVEVDVGV4dEVuY29kaW5nSUQpOwog
ICAgICAgICB2aXJ0dWFsIH5UZXh0Q29kZWNNYWMoKTsKIAotICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2ggPSBmYWxzZSk7
CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0
aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpOwogICAgICAg
ICB2aXJ0dWFsIENTdHJpbmcgZW5jb2RlKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVW5l
bmNvZGFibGVIYW5kbGluZyk7CiAKICAgICBwcml2YXRlOgpAQCAtNTUsNyArNTUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgVEVDVGV4dEVuY29kaW5nSUQgbV9lbmNvZGluZzsK
ICAgICAgICAgVUNoYXIgbV9iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sOwotICAgICAgICBib29s
IG1fZXJyb3I7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtQnVmZmVyZWRCeXRlczsKICAgICAgICAg
dW5zaWduZWQgY2hhciBtX2J1ZmZlcmVkQnl0ZXNbMTZdOyAvLyBiaWdnZXIgdGhhbiBhbnkgc2lu
Z2xlIG11bHRpLWJ5dGUgY2hhcmFjdGVyCiAgICAgICAgIG11dGFibGUgVEVDT2JqZWN0UmVmIG1f
Y29udmVydGVyVEVDOwo=
</data>
<flag name="review"
          id="8775"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>