<?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>178207</bug_id>
          
          <creation_ts>2017-10-12 05:10:32 -0700</creation_ts>
          <short_desc>UTF-8 decoding produces one replacement character per byte; Encoding standard requires one replacement character per illegal sequence instead</short_desc>
          <delta_ts>2017-11-05 17:03:38 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179303</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359578</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2017-10-12 05:10:32 -0700</bug_when>
    <thetext>See https://bugs.chromium.org/p/chromium/issues/detail?id=773320 for the same bug in Blink.

In that bug, we saw a script where an invalid byte sequence occurs and is split between two chunks (of size 4096):

0b11100000 &lt;&lt; lead &lt;&lt; 0xe0
0b10100101 &lt;&lt; cont &lt;&lt; 0xa5
0b00111111 &lt;&lt; ascii &lt;&lt; 0x3f

The bug is that TextCodecUTF8::HandlePartialSequence calls TextCodecUTF8::HandleError which assumes that each error consumes one byte from the byte stream and produces an invalid char. However, that ignores the fact that we need to consume multiple bytes (i.e., the maximal subpart).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360036</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-13 09:44:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/34979603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360037</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-13 09:45:16 -0700</bug_when>
    <thetext>Test case and patch available in the Chromium bug. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360415</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-10-14 02:49:16 -0700</bug_when>
    <thetext>Blink commit:
https://chromium.googlesource.com/chromium/src.git/+/79806338f4762c005b99808c8e97edf4d176b621</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360473</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 15:04:38 -0700</bug_when>
    <thetext>I think I’ll fix this.

This might be better tested by writing a unit test for TextCodecUTF8 rather than trying to use a layout test. That would avoid the dependency on buffer sizes. I don’t know where the knowledge that a buffer is 4kB comes from and I would not want the test to stop being effective if we switched to, say, an 8kB buffer size.

I also think a better fix would be to get rid of the handleError function; it’s not really working well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360474</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 15:06:04 -0700</bug_when>
    <thetext>To be thorough need to test both the case where the replacement character is the first 16-bit character and the case where there is a preceding 16-bit character.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360475</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 15:06:50 -0700</bug_when>
    <thetext>And also the &quot;flush&quot; and &quot;no flush&quot; variants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360547</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 22:23:17 -0700</bug_when>
    <thetext>There is not a bug here that is specific to chunk boundaries. The code handles chunk boundaries correctly.

The issue is that the UTF-8 decoder produces too many replacement characters. The Encoding standard and &quot;Best Practices for Using U+FFFD&quot; from the Unicode specification require one replacement character for each illegal sequence, not one per byte in an illegal sequence.

We weren’t trying to implement that before, but now know that we should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360550</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 22:27:35 -0700</bug_when>
    <thetext>Henri Sivonen wrote a paper about this topic &lt;https://hsivonen.fi/broken-utf-8/&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360551</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 22:31:29 -0700</bug_when>
    <thetext>I believe that the Chromium comments about this being a &quot;very old bug&quot; are incorrect. I think someone implemented new behavior in Chromium and didn’t handle chunk boundaries correctly. The very old code was correct for the old desired behavior, and became incorrect only recently when the behavior of the non-chunk-boundaries code was changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360556</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-14 23:46:32 -0700</bug_when>
    <thetext>This code is not in WTF; it’s in the platform layer. And a tiny bit of trivia: Henri’s paper incorrectly claims that it is in WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360557</commentid>
    <comment_count>11</comment_count>
      <attachid>323840</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-15 00:07:37 -0700</bug_when>
    <thetext>Created attachment 323840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360560</commentid>
    <comment_count>12</comment_count>
      <attachid>323841</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-15 00:52:11 -0700</bug_when>
    <thetext>Created attachment 323841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360565</commentid>
    <comment_count>13</comment_count>
      <attachid>323843</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-15 08:16:36 -0700</bug_when>
    <thetext>Created attachment 323843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360567</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-15 08:33:10 -0700</bug_when>
    <thetext>WTF has a different set of UTF-8 functions. Not sure how they handle replacement characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360584</commentid>
    <comment_count>15</comment_count>
      <attachid>323843</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-15 12:46:36 -0700</bug_when>
    <thetext>Comment on attachment 323843
Patch

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

&gt; Source/WebCore/platform/text/TextCodecUTF8.cpp:441
&gt; +    Vector&lt;char, 3000&gt; bytes(length * 3);

How did you decide on 3000?

&gt; Source/WebCore/platform/text/TextCodecUTF8.cpp:448
&gt; +    return CString { bytes.data(), bytesWritten };

It&apos;s too bad we don&apos;t have a way to avoid this copy at least in some instances.  Perhaps at some point, we should rework CStringBuffer to allow for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360586</commentid>
    <comment_count>16</comment_count>
      <attachid>323843</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-15 13:13:55 -0700</bug_when>
    <thetext>Comment on attachment 323843
Patch

Clearing flags on attachment: 323843

Committed r223329: &lt;https://trac.webkit.org/changeset/223329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360587</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-15 13:13:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360607</commentid>
    <comment_count>18</comment_count>
      <attachid>323843</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-15 17:00:56 -0700</bug_when>
    <thetext>Comment on attachment 323843
Patch

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

&gt;&gt; Source/WebCore/platform/text/TextCodecUTF8.cpp:441
&gt;&gt; +    Vector&lt;char, 3000&gt; bytes(length * 3);
&gt; 
&gt; How did you decide on 3000?

I just kind of thought &quot;1000 * 3&quot;, but it’s so random.

I am getting a little annoyed at Vector&lt;uint8_t&gt; vs. Vector&lt;char&gt; vs. CString in different places. For the same kinds of purposes. We really need to standardize on Vector&lt;uint8_t&gt; vs. Vector&lt;char&gt;. I think that encode should probably return a Vector and not a CString.

&gt;&gt; Source/WebCore/platform/text/TextCodecUTF8.cpp:448
&gt;&gt; +    return CString { bytes.data(), bytesWritten };
&gt; 
&gt; It&apos;s too bad we don&apos;t have a way to avoid this copy at least in some instances.  Perhaps at some point, we should rework CStringBuffer to allow for this.

I think we should minimize the use of CString in the future. Not sure we need that class.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323840</attachid>
            <date>2017-10-15 00:07:37 -0700</date>
            <delta_ts>2017-10-15 00:52:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178207-20171015000736.patch</filename>
            <type>text/plain</type>
            <size>36614</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U0OTI1YTVjZTBiYzNl
NWE1MWI4OTgwNWQ4ODFkMDAyOGRiNzUyOS4uZmNkN2ZhNjYwNDUzY2NhMjljYTFkNThjYTUzYzNi
M2E2MWI2NGM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTEwLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVVEYtOCBkZWNvZGluZyBwcm9k
dWNlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBieXRlOyBFbmNvZGluZyBzdGFuZGFy
ZCByZXF1aXJlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBpbGxlZ2FsIHNlcXVlbmNl
IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5v
bkFTQ0lJU2VxdWVuY2VMZW5ndGgpOiBDaGFuZ2VkIHJldHVybiB0eXBlIHRvIHVuc2lnbmVkLiBD
aGFuZ2VkIHRvIHJldHVybiAwIGluc3RlYWQKKyAgICAgICAgb2YgMiBmb3IgdGhlIHJhbmdlIDgw
LUMxIHNpbmNlIG5vbiBvZiB0aG9zZSBhcmUgdmFsaWQgc2VxdWVuY2UgbGVhZGluZyBjaGFyYWN0
ZXJzLgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlTm9uQVNDSUlTZXF1ZW5jZSk6IENoYW5nZWQg
dGhlIGxlbmd0aCBhcmd1bWVudCB0byBiZSBpbi9vdXQgc28gdGhlIGNhbGxlcgorICAgICAgICBr
bm93cyBob3cgbXVjaCBvZiB0aGUgc2VxdWVuY2Ugd2UgZGVjb2RlZCBmb3IgZmFpbHVyZSBjYXNl
cy4gU2ltcGxpZmllZCB0aGUgbGVuZ3RoIDIgc2VjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDb2RlY1VURjg6OmhhbmRsZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDb2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZSk6IENoYW5nZWQgdGhpcyBpbnRvIGEg
cGFpciBvZiBwbGFpbiBmdW5jdGlvbnMKKyAgICAgICAgcmF0aGVyIHRoYW4gdHdvIHRlbXBsYXRl
IGZ1bmN0aW9uIHNwZWNpYWxpemF0aW9ucyBzaW5jZSB0aGUgdHdvIGZ1bmN0aW9ucyBhcmUgcmF0
aGVyIGRpZmZlcmVudC4KKyAgICAgICAgRm9yIHRoZSBvbmUtYnl0ZSB2ZXJzaW9uLCBnb3Qgcmlk
IG9mIHRoZSB1bnVzZWQgYXJndW1lbnRzLiBGb3IgdGhlIHR3by1ieXRlIHZlcnNpb24sIGdvdCBy
aWQKKyAgICAgICAgb2YgdGhlIGlnbm9yZWQgcmV0dXJuIHZhbHVlLCBzdG9wcGVkIHVzaW5nIHRo
ZSBoYW5kbGVFcnJvciBmdW5jdGlvbiBzaW5jZSBlYWNoIGVycm9yIGNhc2UKKyAgICAgICAgbmVl
ZHMgdG8gYmUgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gZWFjaCBlcnJvciBjYXNlIGNvbnN1bWUg
dGhlIGVudGlyZSBpbmNvcnJlY3Qgc2VxdWVuY2UKKyAgICAgICAgaW5zdGVhZCBvZiBqdXN0IG9u
ZSBieXRlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGODo6ZGVjb2RlKTogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZSwgYW5kIGNoYW5nZWQgdGhlIG5vbi1wYXJ0aWFsCisgICAg
ICAgIGluY29ycmVjdCBzZXF1ZW5jZSB0byBjb25zdW1lIHRoZSBlbnRpcmUgaW5jb3JyZWN0IHNl
cXVlbmNlIGluc3RlYWQgb2YganVzdCBvbmUgYnl0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b2RlY1VURjg6OmVuY29kZSk6IEdvdCByaWQgb2YgdW5uZWVkZWQgdHlwZSBwdW5uaW5nLCBhbmQg
YWRkZWQgc29tZSBpbmxpbmUKKyAgICAgICAgY2FwYWNpdHkgdG8gc2F2ZSBvbmUgbWVtb3J5IGFs
bG9jYXRpb24gd2hlbiBlbmNvZGluZyBzaG9ydGVyIHN0cmluZ3MuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguaDogVXNlIHByYWdtYSBvbmNlLiBJbnRpYWxpemUgbV9w
YXJ0aWFsU2VxdWVuY2VTaXplIHdoZXJlIGl0CisgICAgICAgIGlzIGRlZmluZWQgaW5zdGVhZCBv
ZiB3cml0aW5nIG91dCB0aGUgY29uc3RydWN0b3IuIE1hZGUgdGhlIGNyZWF0ZSBmdW5jdGlvbiBw
cml2YXRlIGFuZCB0aGUKKyAgICAgICAgZGVmYXVsdCBjb25zdHJ1Y3RvciBwcm90ZWN0ZWQsIHNp
bmNlIG5vIG9uZSBpcyBjdXJyZW50bHkgY2FsbGluZyB0aGVtLiBVcGRhdGVkIGZvciBjaGFuZ2Vz
CisgICAgICAgIGFib3ZlLiBDaGFuZ2VkIG1fcGFydGlhbFNlcXVlbmNlU2l6ZSB0byBiZSBhIHVp
bnQ4X3QgaW5zdGVhZCBvZiBhbiBpbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOiBFeHBvcnQgYSBjb25zdHJ1Y3RvciBub3cgdXNlZCBieSBhIHVuaXQgdGVzdC4K
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg6IEV4cG9ydCBu
ZXdUZXh0Q29kZWMsIG5vdyB1c2VkIGJ5IGEgdW5pdCB0ZXN0LgorCiAyMDE3LTEwLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBXZWIg
QW5pbWF0aW9ucyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEY4LmNwcAppbmRleCA1MDhlZGVlOWE1MzIxMjdjYzFiNGMzNzA5MDQ0ZWE1YmQxYmI4N2E3
Li5jNGY0M2JkYmVkMDZhNjI4NjczMDVmMmE0ODkyNDQ0OWViZTJmYWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4LCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjQsNyArNjQsNyBAQCB2b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKFRleHRD
b2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgcmVnaXN0cmFyKCJVVEYtOCIsIGNyZWF0ZSwg
MCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgodWludDhf
dCBmaXJzdEJ5dGUpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG5vbkFTQ0lJU2VxdWVuY2VMZW5n
dGgodWludDhfdCBmaXJzdEJ5dGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbGVuZ3Ro
c1syNTZdID0gewogICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLApAQCAtNzUsMTEgKzc1LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG5vbkFTQ0lJ
U2VxdWVuY2VMZW5ndGgodWludDhfdCBmaXJzdEJ5dGUpCiAgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCisgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCiAgICAgICAgIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCiAgICAgICAgIDMsIDMsIDMsIDMsIDMs
IDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsCiAgICAgICAgIDQsIDQsIDQsIDQsIDQs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKQEAgLTg3LDU1ICs4Nyw3NiBAQCBzdGF0
aWMgaW5saW5lIGludCBub25BU0NJSVNlcXVlbmNlTGVuZ3RoKHVpbnQ4X3QgZmlyc3RCeXRlKQog
ICAgIHJldHVybiBsZW5ndGhzW2ZpcnN0Qnl0ZV07CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGRl
Y29kZU5vbkFTQ0lJU2VxdWVuY2UoY29uc3QgdWludDhfdCogc2VxdWVuY2UsIHVuc2lnbmVkIGxl
bmd0aCkKK3N0YXRpYyBpbmxpbmUgaW50IGRlY29kZU5vbkFTQ0lJU2VxdWVuY2UoY29uc3QgdWlu
dDhfdCogc2VxdWVuY2UsIHVuc2lnbmVkJiBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc0FTQ0lJ
KHNlcXVlbmNlWzBdKSk7CiAgICAgaWYgKGxlbmd0aCA9PSAyKSB7CisgICAgICAgIEFTU0VSVChz
ZXF1ZW5jZVswXSA+PSAweEMyKTsKICAgICAgICAgQVNTRVJUKHNlcXVlbmNlWzBdIDw9IDB4REYp
OwotICAgICAgICBpZiAoc2VxdWVuY2VbMF0gPCAweEMyKQotICAgICAgICAgICAgcmV0dXJuIG5v
bkNoYXJhY3RlcjsKLSAgICAgICAgaWYgKHNlcXVlbmNlWzFdIDwgMHg4MCB8fCBzZXF1ZW5jZVsx
XSA+IDB4QkYpCisgICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0g
PiAweEJGKSB7CisgICAgICAgICAgICBsZW5ndGggPSAxOwogICAgICAgICAgICAgcmV0dXJuIG5v
bkNoYXJhY3RlcjsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gKChzZXF1ZW5jZVswXSA8PCA2
KSArIHNlcXVlbmNlWzFdKSAtIDB4MDAwMDMwODA7CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0g
MykgewotICAgICAgICBBU1NFUlQoc2VxdWVuY2VbMF0gPj0gMHhFMCAmJiBzZXF1ZW5jZVswXSA8
PSAweEVGKTsKKyAgICAgICAgQVNTRVJUKHNlcXVlbmNlWzBdID49IDB4RTApOworICAgICAgICBB
U1NFUlQoc2VxdWVuY2VbMF0gPD0gMHhFRik7CiAgICAgICAgIHN3aXRjaCAoc2VxdWVuY2VbMF0p
IHsKICAgICAgICAgY2FzZSAweEUwOgotICAgICAgICAgICAgaWYgKHNlcXVlbmNlWzFdIDwgMHhB
MCB8fCBzZXF1ZW5jZVsxXSA+IDB4QkYpCisgICAgICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAw
eEEwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikgeworICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4RUQ6Ci0gICAgICAgICAgICBpZiAoc2Vx
dWVuY2VbMV0gPCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHg5RikKKyAgICAgICAgICAgIGlmIChz
ZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweDlGKSB7CisgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9uQ2hhcmFjdGVyOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikKKyAgICAg
ICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKSB7Cisg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9uQ2hh
cmFjdGVyOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsy
XSA8IDB4ODAgfHwgc2VxdWVuY2VbMl0gPiAweEJGKQorICAgICAgICBpZiAoc2VxdWVuY2VbMl0g
PCAweDgwIHx8IHNlcXVlbmNlWzJdID4gMHhCRikgeworICAgICAgICAgICAgbGVuZ3RoID0gMjsK
ICAgICAgICAgICAgIHJldHVybiBub25DaGFyYWN0ZXI7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuICgoc2VxdWVuY2VbMF0gPDwgMTIpICsgKHNlcXVlbmNlWzFdIDw8IDYpICsgc2VxdWVuY2Vb
Ml0pIC0gMHgwMDBFMjA4MDsKICAgICB9CiAgICAgQVNTRVJUKGxlbmd0aCA9PSA0KTsKLSAgICBB
U1NFUlQoc2VxdWVuY2VbMF0gPj0gMHhGMCAmJiBzZXF1ZW5jZVswXSA8PSAweEY0KTsKKyAgICBB
U1NFUlQoc2VxdWVuY2VbMF0gPj0gMHhGMCk7CisgICAgQVNTRVJUKHNlcXVlbmNlWzBdIDw9IDB4
RjQpOwogICAgIHN3aXRjaCAoc2VxdWVuY2VbMF0pIHsKICAgICBjYXNlIDB4RjA6Ci0gICAgICAg
IGlmIChzZXF1ZW5jZVsxXSA8IDB4OTAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKQorICAgICAgICBp
ZiAoc2VxdWVuY2VbMV0gPCAweDkwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikgeworICAgICAgICAg
ICAgbGVuZ3RoID0gMTsKICAgICAgICAgICAgIHJldHVybiBub25DaGFyYWN0ZXI7CisgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweEY0OgotICAgICAgICBpZiAoc2VxdWVuY2Vb
MV0gPCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHg4RikKKyAgICAgICAgaWYgKHNlcXVlbmNlWzFd
IDwgMHg4MCB8fCBzZXF1ZW5jZVsxXSA+IDB4OEYpIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7
CiAgICAgICAgICAgICByZXR1cm4gbm9uQ2hhcmFjdGVyOworICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2Vx
dWVuY2VbMV0gPiAweEJGKQorICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNlcXVl
bmNlWzFdID4gMHhCRikgeworICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAgICAgICAgICAgIHJl
dHVybiBub25DaGFyYWN0ZXI7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHNlcXVlbmNlWzJd
IDwgMHg4MCB8fCBzZXF1ZW5jZVsyXSA+IDB4QkYpCisgICAgaWYgKHNlcXVlbmNlWzJdIDwgMHg4
MCB8fCBzZXF1ZW5jZVsyXSA+IDB4QkYpIHsKKyAgICAgICAgbGVuZ3RoID0gMjsKICAgICAgICAg
cmV0dXJuIG5vbkNoYXJhY3RlcjsKLSAgICBpZiAoc2VxdWVuY2VbM10gPCAweDgwIHx8IHNlcXVl
bmNlWzNdID4gMHhCRikKKyAgICB9CisgICAgaWYgKHNlcXVlbmNlWzNdIDwgMHg4MCB8fCBzZXF1
ZW5jZVszXSA+IDB4QkYpIHsKKyAgICAgICAgbGVuZ3RoID0gMzsKICAgICAgICAgcmV0dXJuIG5v
bkNoYXJhY3RlcjsKKyAgICB9CiAgICAgcmV0dXJuICgoc2VxdWVuY2VbMF0gPDwgMTgpICsgKHNl
cXVlbmNlWzFdIDw8IDEyKSArIChzZXF1ZW5jZVsyXSA8PCA2KSArIHNlcXVlbmNlWzNdKSAtIDB4
MDNDODIwODA7CiB9CiAKQEAgLTE1OCwxOCArMTc5LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4Ojpj
b25zdW1lUGFydGlhbFNlcXVlbmNlQnl0ZSgpCiAgICAgbWVtbW92ZShtX3BhcnRpYWxTZXF1ZW5j
ZSwgbV9wYXJ0aWFsU2VxdWVuY2UgKyAxLCBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpOwogfQogCi12
b2lkIFRleHRDb2RlY1VURjg6OmhhbmRsZUVycm9yKFVDaGFyKiYgZGVzdGluYXRpb24sIGJvb2wg
c3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKQotewotICAgIHNhd0Vycm9yID0gdHJ1ZTsKLSAg
ICBpZiAoc3RvcE9uRXJyb3IpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBFYWNoIGVycm9yIGdl
bmVyYXRlcyBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBhbmQgY29uc3VtZXMgb25lIGJ5dGUuCi0g
ICAgKmRlc3RpbmF0aW9uKysgPSByZXBsYWNlbWVudENoYXJhY3RlcjsKLSAgICBjb25zdW1lUGFy
dGlhbFNlcXVlbmNlQnl0ZSgpOwotfQotCi10ZW1wbGF0ZSA8PgotYm9vbCBUZXh0Q29kZWNVVEY4
OjpoYW5kbGVQYXJ0aWFsU2VxdWVuY2U8TENoYXI+KExDaGFyKiYgZGVzdGluYXRpb24sIGNvbnN0
IHVpbnQ4X3QqJiBzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgYm9vbCBmbHVzaCwgYm9vbCwg
Ym9vbCYpCitib29sIFRleHRDb2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZShMQ2hhciom
IGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBlbmQs
IGJvb2wgZmx1c2gpCiB7CiAgICAgQVNTRVJUKG1fcGFydGlhbFNlcXVlbmNlU2l6ZSk7CiAgICAg
ZG8gewpAQCAtMTc4LDcgKzE4OCw3IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlh
bFNlcXVlbmNlPExDaGFyPihMQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAg
ICAgICBjb25zdW1lUGFydGlhbFNlcXVlbmNlQnl0ZSgpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KLSAgICAgICAgaW50IGNvdW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aCht
X3BhcnRpYWxTZXF1ZW5jZVswXSk7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbm9uQVNDSUlT
ZXF1ZW5jZUxlbmd0aChtX3BhcnRpYWxTZXF1ZW5jZVswXSk7CiAgICAgICAgIGlmICghY291bnQp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMjAxLDcgKzIxMSw3IEBAIGJvb2wgVGV4
dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPExDaGFyPihMQ2hhciomIGRlc3RpbmF0
aW9uLCBjb25zdCB1aW50CiAgICAgICAgICAgICBtX3BhcnRpYWxTZXF1ZW5jZVNpemUgPSBjb3Vu
dDsKICAgICAgICAgfQogICAgICAgICBpbnQgY2hhcmFjdGVyID0gZGVjb2RlTm9uQVNDSUlTZXF1
ZW5jZShtX3BhcnRpYWxTZXF1ZW5jZSwgY291bnQpOwotICAgICAgICBpZiAoKGNoYXJhY3RlciA9
PSBub25DaGFyYWN0ZXIpIHx8IChjaGFyYWN0ZXIgPiAweGZmKSkKKyAgICAgICAgaWYgKGNoYXJh
Y3RlciA9PSBub25DaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID4gMHhGRikKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgICAgIG1fcGFydGlhbFNlcXVlbmNlU2l6ZSAtPSBjb3VudDsKQEAg
LTIxMSw4ICsyMjEsNyBAQCBib29sIFRleHRDb2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5j
ZTxMQ2hhcj4oTENoYXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdGVtcGxhdGUgPD4KLWJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNl
cXVlbmNlPFVDaGFyPihVQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiYgc291cmNl
LCBjb25zdCB1aW50OF90KiBlbmQsIGJvb2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wm
IHNhd0Vycm9yKQordm9pZCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVuY2UoVUNo
YXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdComIHNvdXJjZSwgY29uc3QgdWludDhfdCog
ZW5kLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAg
ICBBU1NFUlQobV9wYXJ0aWFsU2VxdWVuY2VTaXplKTsKICAgICBkbyB7CkBAIC0yMjEsMTEgKzIz
MCwxMyBAQCBib29sIFRleHRDb2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZTxVQ2hhcj4o
VUNoYXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludAogICAgICAgICAgICAgY29uc3VtZVBhcnRp
YWxTZXF1ZW5jZUJ5dGUoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAg
ICAgIGludCBjb3VudCA9IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgobV9wYXJ0aWFsU2VxdWVuY2Vb
MF0pOworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgobV9w
YXJ0aWFsU2VxdWVuY2VbMF0pOwogICAgICAgICBpZiAoIWNvdW50KSB7Ci0gICAgICAgICAgICBo
YW5kbGVFcnJvcihkZXN0aW5hdGlvbiwgc3RvcE9uRXJyb3IsIHNhd0Vycm9yKTsKKyAgICAgICAg
ICAgIHNhd0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgKmRlc3RpbmF0aW9uKysgPSByZXBsYWNlbWVudENoYXJhY3RlcjsKKyAgICAgICAgICAg
IGNvbnN1bWVQYXJ0aWFsU2VxdWVuY2VCeXRlKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoY291bnQgPiBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpIHsKQEAg
LTIzNSwxMiArMjQ2LDE1IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVl
bmNlPFVDaGFyPihVQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAgICAgICAg
ICAgICAgIC8vIGFkZCBpdCB0byB0aGUgZXhpc3RpbmcgcGFydGlhbCBzZXF1ZW5jZS4KICAgICAg
ICAgICAgICAgICAgICAgbWVtY3B5KG1fcGFydGlhbFNlcXVlbmNlICsgbV9wYXJ0aWFsU2VxdWVu
Y2VTaXplLCBzb3VyY2UsIGVuZCAtIHNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgIG1fcGFy
dGlhbFNlcXVlbmNlU2l6ZSArPSBlbmQgLSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAvLyBBbiBpbmNvbXBsZXRlIHBhcnRpYWwgc2VxdWVuY2UgYXQg
dGhlIGVuZCBpcyBhbiBlcnJvci4KLSAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihkZXN0aW5h
dGlvbiwgc3RvcE9uRXJyb3IsIHNhd0Vycm9yKTsKKyAgICAgICAgICAgICAgICBzYXdFcnJvciA9
IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAqZGVzdGluYXRpb24rKyA9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICAg
ICAgICAgIG1fcGFydGlhbFNlcXVlbmNlU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgc291cmNl
ID0gZW5kOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbWVtY3B5KG1fcGFydGlhbFNlcXVlbmNlICsgbV9wYXJ0aWFsU2VxdWVuY2VTaXplLCBz
b3VyY2UsIGNvdW50IC0gbV9wYXJ0aWFsU2VxdWVuY2VTaXplKTsKQEAgLTI0OSwxNyArMjYzLDE4
IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPFVDaGFyPihVQ2hh
ciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAgIH0KICAgICAgICAgaW50IGNoYXJh
Y3RlciA9IGRlY29kZU5vbkFTQ0lJU2VxdWVuY2UobV9wYXJ0aWFsU2VxdWVuY2UsIGNvdW50KTsK
ICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBub25DaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGhh
bmRsZUVycm9yKGRlc3RpbmF0aW9uLCBzdG9wT25FcnJvciwgc2F3RXJyb3IpOworICAgICAgICAg
ICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAqZGVzdGluYXRpb24rKyA9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICAgICAg
bV9wYXJ0aWFsU2VxdWVuY2VTaXplIC09IGNvdW50OworICAgICAgICAgICAgbWVtbW92ZShtX3Bh
cnRpYWxTZXF1ZW5jZSwgbV9wYXJ0aWFsU2VxdWVuY2UgKyBjb3VudCwgbV9wYXJ0aWFsU2VxdWVu
Y2VTaXplKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgbV9w
YXJ0aWFsU2VxdWVuY2VTaXplIC09IGNvdW50OwogICAgICAgICBkZXN0aW5hdGlvbiA9IGFwcGVu
ZENoYXJhY3RlcihkZXN0aW5hdGlvbiwgY2hhcmFjdGVyKTsKICAgICB9IHdoaWxlIChtX3BhcnRp
YWxTZXF1ZW5jZVNpemUpOwotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAogU3RyaW5nIFRl
eHRDb2RlY1VURjg6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9v
bCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpCkBAIC0yODEsNyArMjk2
LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6
ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbAogICAgICAgICAgICAgLy8gaW4gc29tZSBjb21w
aWxlcnMuCiAgICAgICAgICAgICBMQ2hhciogZGVzdGluYXRpb25Gb3JIYW5kbGVQYXJ0aWFsU2Vx
dWVuY2UgPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZUZv
ckhhbmRsZVBhcnRpYWxTZXF1ZW5jZSA9IHNvdXJjZTsKLSAgICAgICAgICAgIGlmIChoYW5kbGVQ
YXJ0aWFsU2VxdWVuY2UoZGVzdGluYXRpb25Gb3JIYW5kbGVQYXJ0aWFsU2VxdWVuY2UsIHNvdXJj
ZUZvckhhbmRsZVBhcnRpYWxTZXF1ZW5jZSwgZW5kLCBmbHVzaCwgc3RvcE9uRXJyb3IsIHNhd0Vy
cm9yKSkgeworICAgICAgICAgICAgaWYgKGhhbmRsZVBhcnRpYWxTZXF1ZW5jZShkZXN0aW5hdGlv
bkZvckhhbmRsZVBhcnRpYWxTZXF1ZW5jZSwgc291cmNlRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNl
LCBlbmQsIGZsdXNoKSkgewogICAgICAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZUZvckhhbmRs
ZVBhcnRpYWxTZXF1ZW5jZTsKICAgICAgICAgICAgICAgICBnb3RvIHVwQ29udmVydFRvMTZCaXQ7
CiAgICAgICAgICAgICB9CkBAIC0zMTEsNyArMzI2LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjg6
OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9v
bAogICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbisrID0gKnNvdXJjZSsrOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IGNvdW50ID0g
bm9uQVNDSUlTZXF1ZW5jZUxlbmd0aCgqc291cmNlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNv
dW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aCgqc291cmNlKTsKICAgICAgICAgICAgIGludCBj
aGFyYWN0ZXI7CiAgICAgICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgICAgIGNoYXJh
Y3RlciA9IG5vbkNoYXJhY3RlcjsKQEAgLTMzMCwxMCArMzQ1LDEwIEBAIFN0cmluZyBUZXh0Q29k
ZWNVVEY4OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1
c2gsIGJvb2wKICAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgaWYgKHN0b3BPbkVycm9yKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPiAweGZmKQorICAgICAgICAgICAg
aWYgKGNoYXJhY3RlciA+IDB4RkYpCiAgICAgICAgICAgICAgICAgZ290byB1cENvbnZlcnRUbzE2
Qml0OwogCiAgICAgICAgICAgICBzb3VyY2UgKz0gY291bnQ7CkBAIC0zODgsNyArNDAzLDcgQEAg
dXBDb252ZXJ0VG8xNkJpdDoKICAgICAgICAgICAgICAgICAqZGVzdGluYXRpb24xNisrID0gKnNv
dXJjZSsrOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW50IGNvdW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aCgqc291cmNlKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aCgqc291cmNlKTsK
ICAgICAgICAgICAgIGludCBjaGFyYWN0ZXI7CiAgICAgICAgICAgICBpZiAoIWNvdW50KQogICAg
ICAgICAgICAgICAgIGNoYXJhY3RlciA9IG5vbkNoYXJhY3RlcjsKQEAgLTQwNyw5ICs0MjIsOCBA
QCB1cENvbnZlcnRUbzE2Qml0OgogICAgICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoc3RvcE9uRXJyb3IpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIC8vIEVhY2ggZXJyb3IgZ2VuZXJhdGVzIGEgcmVwbGFjZW1lbnQg
Y2hhcmFjdGVyIGFuZCBjb25zdW1lcyBvbmUgYnl0ZS4KICAgICAgICAgICAgICAgICAqZGVzdGlu
YXRpb24xNisrID0gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgKytzb3Vy
Y2U7CisgICAgICAgICAgICAgICAgc291cmNlICs9IGNvdW50ID8gY291bnQgOiAxOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc291cmNlICs9
IGNvdW50OwpAQCAtNDI5LDE3ICs0NDMsMTUgQEAgQ1N0cmluZyBUZXh0Q29kZWNVVEY4OjplbmNv
ZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmwKICAg
ICAvLyBOb24tQk1QIGNoYXJhY3RlcnMgdGFrZSB0d28gVVRGLTE2IGNvZGUgdW5pdHMgYW5kIGNh
biB0YWtlIHVwIHRvIDQgYnl0ZXMgKDJ4KS4KICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIDMpCiAgICAgICAgIENSQVNIKCk7Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ5dGVzKGxlbmd0aCAqIDMpOwogCi0gICAgc2l6ZV90IGkgPSAwOworICAgIFZl
Y3RvcjxjaGFyLCAyNTY+IGJ5dGVzKGxlbmd0aCAqIDMpOwogICAgIHNpemVfdCBieXRlc1dyaXR0
ZW4gPSAwOwotICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICkgewogICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjsKICAgICAgICAgVTE2
X05FWFQoY2hhcmFjdGVycywgaSwgbGVuZ3RoLCBjaGFyYWN0ZXIpOwogICAgICAgICBVOF9BUFBF
TkRfVU5TQUZFKGJ5dGVzLmRhdGEoKSwgYnl0ZXNXcml0dGVuLCBjaGFyYWN0ZXIpOwogICAgIH0K
LQotICAgIHJldHVybiBDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ5dGVzLmRhdGEo
KSksIGJ5dGVzV3JpdHRlbik7CisgICAgcmV0dXJuIENTdHJpbmcoYnl0ZXMuZGF0YSgpLCBieXRl
c1dyaXR0ZW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5oCmluZGV4IDU5MGZkNWMwZDVlMzVjZjU2ODUw
YmRkMjdlMjM3YzcyMTM5YmE3YjkuLmQyODQ0MzExMzM5MjI2NTc1MmM1N2Q3NGZiYmMyZDE4ZDdl
ZmYwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGOC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGV4dENvZGVj
VVRGOF9oCi0jZGVmaW5lIFRleHRDb2RlY1VURjhfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJUZXh0Q29kZWMuaCIKIApAQCAtMzIsMjkgKzMxLDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgVGV4dENvZGVjVVRGOCA6IHB1YmxpYyBUZXh0Q29kZWMgewogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBjcmVhdGUoY29uc3QgVGV4dEVuY29k
aW5nJiwgY29uc3Qgdm9pZCopOwotICAgIFRleHRDb2RlY1VURjgoKQotICAgICAgICA6IG1fcGFy
dGlhbFNlcXVlbmNlU2l6ZSgwKQotICAgIHsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyKTsKICAgICBzdGF0aWMgdm9p
ZCByZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIpOwogCitwcm90ZWN0ZWQ6CisgICAg
VGV4dENvZGVjVVRGOCgpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFRleHRDb2RlYz4gY3JlYXRlKGNvbnN0IFRleHRFbmNvZGluZyYsIGNvbnN0IHZv
aWQqKTsKKwogICAgIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJv
b2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKSBvdmVycmlkZTsKICAg
ICBDU3RyaW5nIGVuY29kZShjb25zdCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxl
SGFuZGxpbmcpIG92ZXJyaWRlOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgot
ICAgIGJvb2wgaGFuZGxlUGFydGlhbFNlcXVlbmNlKENoYXJUeXBlKiYgZGVzdGluYXRpb24sIGNv
bnN0IHVpbnQ4X3QqJiBzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgYm9vbCBmbHVzaCwgYm9v
bCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpOwotICAgIHZvaWQgaGFuZGxlRXJyb3IoVUNo
YXIqJiBkZXN0aW5hdGlvbiwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpOworICAg
IGJvb2wgaGFuZGxlUGFydGlhbFNlcXVlbmNlKExDaGFyKiYgZGVzdGluYXRpb24sIGNvbnN0IHVp
bnQ4X3QqJiBzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgYm9vbCBmbHVzaCk7CisgICAgdm9p
ZCBoYW5kbGVQYXJ0aWFsU2VxdWVuY2UoVUNoYXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhf
dComIHNvdXJjZSwgY29uc3QgdWludDhfdCogZW5kLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVy
cm9yLCBib29sJiBzYXdFcnJvcik7CiAgICAgdm9pZCBjb25zdW1lUGFydGlhbFNlcXVlbmNlQnl0
ZSgpOwogCi0gICAgaW50IG1fcGFydGlhbFNlcXVlbmNlU2l6ZTsKKyAgICB1aW50OF90IG1fcGFy
dGlhbFNlcXVlbmNlU2l6ZSB7IDAgfTsKICAgICB1aW50OF90IG1fcGFydGlhbFNlcXVlbmNlW1U4
X01BWF9MRU5HVEhdOwogICAgIAogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVGV4dENvZGVjVVRGOF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RW5jb2RpbmcuaAppbmRleCBhMzQ5YzM4MjhkN2JhOGY3YTFlNDM4ODRlNjE0ZDg0NmEyODY0N2Vk
Li4yMDRkNDc4NWM1YzgyZTM0Njg5Njk5NGIxMmQxMWRkNTgxODE3YzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dEVuY29kaW5nIHsKIHB1YmxpYzoKICAgICBUZXh0
RW5jb2RpbmcoKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dEVuY29kaW5nKGNvbnN0IGNoYXIqIG5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIFRleHRFbmNvZGluZyhjb25zdCBjaGFyKiBuYW1lKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oCmluZGV4IDdjYTUy
ZTUzODhkMGVlODI1MjNlOWIwZGQ0YTYwMTBlMGVmNmM1OTEuLmJjYzRiODc1NjdhY2UzM2EwMjM1
MDQxMjc1ZjhlOWI4NjdlNWY2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVGV4
dEVuY29kaW5nOwogCiAvLyBVc2UgVGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlIHRvIGRlY29k
ZSByZXNvdXJjZXMsIHNpbmNlIGl0IGhhbmRsZXMgQk9Ncy4KIC8vIFVzZSBUZXh0RW5jb2Rpbmc6
OmVuY29kZSB0byBlbmNvZGUsIHNpbmNlIGl0IHRha2VzIGNhcmUgb2Ygbm9ybWFsaXphdGlvbi4K
LXN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0RW5jb2Rp
bmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRD
b2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmKTsKIAogLy8gT25seSBUZXh0RW5jb2Rpbmcgc2hvdWxk
IHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBkaXJlY3RseS4KIGNvbnN0IGNoYXIqIGF0b21p
Y0Nhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUoY29uc3QgY2hhciogYWxpYXMpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcyYzc2MTIyYjA0ZDgy
NWM2MTlmM2EzOWY1YjZiZTE1NDgyMzUyODguLmFlMGU4MmU3MDgyMDRlMWM4YWFiMWFiMzJiOTM5
OTRiYzM1YWJiMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMC0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVVRGLTggZGVjb2RpbmcgcHJvZHVjZXMgb25lIHJlcGxhY2Vt
ZW50IGNoYXJhY3RlciBwZXIgYnl0ZTsgRW5jb2Rpbmcgc3RhbmRhcmQgcmVxdWlyZXMgb25lIHJl
cGxhY2VtZW50IGNoYXJhY3RlciBwZXIgaWxsZWdhbCBzZXF1ZW5jZSBpbnN0ZWFkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyMDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCB0ZXN0LgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9UZXh0Q29kZWMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY29kZUhleFRlc3RCeXRlcyk6IERlY29kZXMgYSBz
dHJpbmcgc28gd2UgY2FuIHdyaXRlIHJlYWRhYmxlIHRlc3RzLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZXNjYXBlTm9uUHJpbnRhYmxlQVNDSUlDaGFyYWN0ZXJzKTogRW5jb2RlcyBhIHN0cmlu
ZyBzbyB3ZSBjYW4gd3JpdGUgcmVhZGFibGUgdGVzdHMuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKTogQWRkZWQgc29tZSBVVEYtOCB0ZXN0cyBhbmQgVVRGLTggaW52YWxpZCBzZXF1ZW5j
ZXMgdGVzdHMuCisgICAgICAgIFdvdWxkIGJlIHNtYXJ0IHRvIGFkZCBtb3JlIHRlc3RzIGZvciBv
dGhlciBjYXNlcywgZXhlcmNpc2luZyB0aGUgZmFzdCBBU0NJSSBsb29wIGZvciBleGFtcGxlLCBh
bmQKKyAgICAgICAgb3RoZXIgZW5jb2RpbmdzLgorCiAyMDE3LTEwLTE0ICBBZHJpYW4gUGVyZXog
ZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gSkhCdWlsZCBi
dWlsZCBkaXJlY3RvcnkgRGVwZW5kZW5jaWVzV1BFL0J1aWxkIGlzIG5vdCByZW1vdmVkIGJ5IHVw
ZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1ZjA1
NzE1YjI0MWVhOGZhY2VlMDAzZWU2M2QyYzc1OTY4YjM5MjMuLjdhOTc3OTdhZTRjNzhmNDFlZGUz
OTkxMGI2NmJlZjMyYzk0ODk5OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzAsNiAr
NTMwLDcgQEAKIAkJOTNBRjRFRDExNTA2RjEzMDAwN0ZENTdFIC8qIGxvdHMtb2YtaW1hZ2VzLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgKi87IH07CiAJ
CTkzQ0ZBODY3MUNFQjlFMzgwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTND
RkE4NjYxQ0VCOURFMTAwMDU2NUE4IC8qIGF1dG9mb2N1c2VkLXRleHQtaW5wdXQuaHRtbCAqLzsg
fTsKIAkJOTNFMkQyNzYxRUQ3RDUzMjAwRkE3NkY2IC8qIG9mZnNjcmVlbi1pZnJhbWUtb2YtbWVk
aWEtZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0UyRDI3NTFFRDdENTE3MDBGQTc2RjYgLyogb2Zmc2NyZWVuLWlmcmFt
ZS1vZi1tZWRpYS1kb2N1bWVudC5odG1sICovOyB9OworCQk5M0U2MTkzQjFGOTMxQjNBMDBBRjI0
NUUgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29kZWMuY3BwICovOyB9
OwogCQk5M0YxREIzNDE0REEyMDg3MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0YxREIzMzE0REEyMDg3MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0X0J1bmRsZS5jcHAgKi87IH07CiAJCTkzRjFEQjU3MTREQjFCODQwMDI0QzM2MiAv
KiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlsc19CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMURCNTYxNERCMUI4NDAw
MjRDMzYyIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzX0J1bmRsZS5jcHAg
Ki87IH07CiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBsaWJpY3Vjb3JlLmR5bGliIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4M0UwMzMx
RDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CkBAIC0xNDc2LDYgKzE0
NzcsNyBAQAogCQk5MzZGNzI3RjFDRDdEOUQwMDA2OEEwRkIgLyogbGFyZ2UtdmlkZW8td2l0aC1h
dWRpby5tcDQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBwYXRoID0gImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ijsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxl
RmFjdG9yT25CYWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzOUJGRTM5MThFNTU0ODkwMDg4MzI3NSAvKiBTdHJpbmdUcnVuY2F0b3IubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdHJpbmdUcnVuY2F0b3IubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0
Q29kZWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENvZGVjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNDI3QTgxODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZQdHIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0E0MjdBQTE4MERBMjY0MDBDRDI0RDcgLyogUmVmLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTQyN0FDMTgwREE2MEYwMENEMjRENyAvKiBNb3ZlT25s
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNb3ZlT25seS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE1Miw2ICsyMTU0LDcgQEAKIAkJCQlBMTc5OTE4QTFFMUNBMjQxMDBBNTA1RUQgLyog
U2hhcmVkQnVmZmVyVGVzdC5oICovLAogCQkJCUVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBT
dHJpbmdVdGlsaXRpZXMubW0gKi8sCiAJCQkJQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2IC8qIFN0
cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovLAorCQkJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAv
KiBUZXh0Q29kZWMuY3BwICovLAogCQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1l
UmFuZ2VzLmNwcCAqLywKIAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJhbnNmb3Jt
YXRpb25NYXRyaXguY3BwICovLAogCQkJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBVUkwu
Y3BwICovLApAQCAtMzQ1Myw2ICszNDU2LDcgQEAKIAkJCQlBMTRGQzU5MDFCOEFFMzZGMDBEMTA3
RUIgLyogVGVzdFByb3RvY29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUUxQTQxMUEz
NDAwNDQ3QzRDIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUZG
MDZENDFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTkzRTYxOTNCMUY5MzFCM0EwMEFGMjQ1RSAvKiBUZXh0Q29kZWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0UzNTI0RjkxQjE0NDFDNDAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5k
RW5kRWRpdGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VERDFBNDExQTkyMDA0NDdD
NEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMzFBNDExQTdF
MDA0NDdDNEMgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RleHRDb2RlYy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4dENvZGVjLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NTI4ZjBiN2Y4YzNjNTZmMjJhMTRkMWM2ZGE3ODI5MGUxNTIxZWM3Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RleHRDb2RlYy5jcHAKQEAgLTAs
MCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5n
UmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFZlY3RvcjxjaGFyPiBkZWNvZGVIZXhUZXN0
Qnl0ZXMoY29uc3QgY2hhciogaW5wdXQpCit7CisgICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaW5wdXRbaV07ICkgeworICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdChpbnB1dFtpXSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAo
IWlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaV0sIGlucHV0W2kg
KyAxXSkpOworICAgICAgICBpICs9IDI7CisgICAgICAgIGlmIChpbnB1dFtpXSA9PSAnICcpCisg
ICAgICAgICAgICArK2k7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBj
b25zdCBjaGFyKiBlc2NhcGVOb25QcmludGFibGVBU0NJSUNoYXJhY3RlcnMoU3RyaW5nVmlldyBz
dHJpbmcpCit7CisgICAgc3RhdGljIGNoYXIgcmVzdWx0QnVmZmVyWzEwMF07CisgICAgc2l6ZV90
IGkgPSAwOworICAgIGF1dG8gYXBwZW5kID0gWyZpXSAoY2hhciBjaGFyYWN0ZXIpIHsKKyAgICAg
ICAgaWYgKGkgPCBzaXplb2YocmVzdWx0QnVmZmVyKSkKKyAgICAgICAgICAgIHJlc3VsdEJ1ZmZl
cltpKytdID0gY2hhcmFjdGVyOworICAgIH07CisgICAgYXV0byBhcHBlbmROaWJibGUgPSBbYXBw
ZW5kXSAoY2hhciBuaWJibGUpIHsKKyAgICAgICAgaWYgKG5pYmJsZSkKKyAgICAgICAgICAgIGFw
cGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChuaWJibGUpKTsKKyAgICB9OworICAgIGF1
dG8gYXBwZW5kTGFzdE5pYmJsZSA9IFthcHBlbmRdIChjaGFyIG5pYmJsZSkgeworICAgICAgICBh
cHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQobmliYmxlKSk7CisgICAgfTsKKyAgICBm
b3IgKGF1dG8gY2hhcmFjdGVyIDogc3RyaW5nLmNvZGVQb2ludHMoKSkgeworICAgICAgICBpZiAo
aXNBU0NJSVByaW50YWJsZShjaGFyYWN0ZXIpKQorICAgICAgICAgICAgYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXBwZW5kKCd7Jyk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAzMiAtIDQ7IGk7IGkgLT0gNCkKKyAgICAgICAgICAgICAgICBh
cHBlbmROaWJibGUoY2hhcmFjdGVyID4+IGkpOworICAgICAgICAgICAgYXBwZW5kTGFzdE5pYmJs
ZShjaGFyYWN0ZXIpOworICAgICAgICAgICAgYXBwZW5kKCd9Jyk7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKGkgPT0gc2l6ZW9mKHJlc3VsdEJ1ZmZlcikpCisgICAgICAgIHJldHVybiAiIjsK
KyAgICByZXN1bHRCdWZmZXJbaV0gPSAnXDAnOworICAgIHJldHVybiByZXN1bHRCdWZmZXI7Cit9
CisKK3N0YXRpYyBjb25zdCBjaGFyKiB0ZXN0RGVjb2RlKGNvbnN0IGNoYXIqIGVuY29kaW5nTmFt
ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBpbnB1dHMpCit7CisgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHRCdWlsZGVyOworICAgIGF1dG8gY29kZWMgPSBuZXdUZXh0Q29kZWMo
V2ViQ29yZTo6VGV4dEVuY29kaW5nIHsgZW5jb2RpbmdOYW1lIH0pOworICAgIHNpemVfdCBzaXpl
ID0gaW5wdXRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBhdXRvIHZlY3RvciA9IGRlY29kZUhleFRlc3RCeXRlcyhpbnB1dHMuYmVnaW4o
KVtpXSk7CisgICAgICAgIGJvb2wgbGFzdCA9IGkgPT0gc2l6ZSAtIDE7CisgICAgICAgIHJlc3Vs
dEJ1aWxkZXIuYXBwZW5kKGVzY2FwZU5vblByaW50YWJsZUFTQ0lJQ2hhcmFjdGVycyhjb2RlYy0+
ZGVjb2RlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCksIGxhc3QpKSk7CisgICAgfQorICAg
IHJldHVybiBlc2NhcGVOb25QcmludGFibGVBU0NJSUNoYXJhY3RlcnMocmVzdWx0QnVpbGRlci50
b1N0cmluZygpKTsKK30KKworVEVTVChUZXh0Q29kZWMsIFVURjgpCit7CisgICAgRVhQRUNUX1NU
UkVRKCIiLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIiIgfSkpOworCisgICAgRVhQRUNUX1NUUkVR
KCJ7MH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjAwIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RS
RVEoImEiLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjYxIiB9KSk7CisgICAgRVhQRUNUX1NUUkVR
KCJhIiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIiLCAiNjEiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoImEiLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjYxIiwgIiIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgiYSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiIiwgIjYxIiwgIiIgfSkpOworCisgICAg
RVhQRUNUX1NUUkVRKCJ7QjZ9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMiBCNiIgfSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgie0I2fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzIiLCAiQjYi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntCNn0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIiIs
ICJDMiIsICIiLCAiQjYiLCAiIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ4e0I2fSIsIHRlc3RE
ZWNvZGUoIlVURi04IiwgeyAiNzggQzIgQjYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntCNn14
IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMiBCNiA3OCIgfSkpOworCisgICAgRVhQRUNUX1NU
UkVRKCJ7MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUyIDk4IDgzIiB9KSk7CisgICAg
RVhQRUNUX1NUUkVRKCJ7MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUyIiwgIjk4Iiwg
IjgzIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIs
IHsgIiIsICJFMiIsICIiLCAiOTgiLCAiODMiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAz
fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTIgOTgiLCAiODMiIH0pKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoInsyNjAzfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiIiwgIkUyIDk4IiwgIiIsICI4
MyIsICIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAzfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRTIiLCAiOTg4MyIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiezI2MDN9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICIiLCAiRTIiLCAiIiwgIjk4ODMiLCAiIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ4ezI2MDN9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI3OCBFMiA5OCA4MyIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgiezI2MDN9eCIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTIg
OTggODMgNzgiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgiezFGNEE5fSIsIHRlc3REZWNvZGUo
IlVURi04IiwgeyAiRjAgOUYgOTIgQTkiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsxRjRBOX0i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIiwgIjlGIiwgIjkyIiwgIkE5IiB9KSk7CisgICAg
RVhQRUNUX1NUUkVRKCJ7MUY0QTl9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIiLCAiRjAiLCAi
IiwgIjlGIiwgIiIsICI5MiIsICIiICwgIkE5IiwgIiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
ezFGNEE5fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjA5RjkyIiwgIkE5IiB9KSk7CisgICAg
RVhQRUNUX1NUUkVRKCJ4ezFGNEE5fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNzggRjAgOUYg
OTIgQTkiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsxRjRBOX14IiwgdGVzdERlY29kZSgiVVRG
LTgiLCB7ICJGMCA5RiA5MiBBOSA3OCIgfSkpOworfQorCitURVNUKFRleHRDb2RlYywgVVRGOElu
dmFsaWRTZXF1ZW5jZXMpCit7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0/IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICJFMCBBNSAzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9PyIs
IHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTAgQTUiLCAiM0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUwIiwgIkE1IDNGIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCIsICJB
NSIsICIzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVU
Ri04IiwgeyAiRTAiLCAiIiwgIkE1IiwgIiIsICIzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
e0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTAiLCAiIiwgIkE1IiwgIiIsICIzRiIs
ICIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIs
IHsgIiIsICJFMCIsICIiLCAiQTUiLCAiIiwgIjNGIiwgIiIgfSkpOworCisgICAgRVhQRUNUX1NU
UkVRKCJhe0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNjEgRTAgQTUgM0YiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImF7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI2MSBF
MCBBNSIsICIzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiYXtGRkZEfT8iLCB0ZXN0RGVjb2Rl
KCJVVEYtOCIsIHsgIjYxIEUwIiwgIkE1IDNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJhe0ZG
RkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNjEgRTAiLCAiQTUiLCAiM0YiIH0pKTsKKwor
ICAgIEVYUEVDVF9TVFJFUSgie0I2fXtGRkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkMy
IEI2IEUwIEE1IDNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9e0ZGRkR9PyIsIHRlc3RE
ZWNvZGUoIlVURi04IiwgeyAiQzIgQjYgRTAgQTUiLCAiM0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntCNn17RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMiBCNiBFMCIsICJBNSAz
RiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0I2fXtGRkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYt
OCIsIHsgIkMyIEI2IEUwIiwgIkE1IiwgIjNGIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIntG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEo
IntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTIiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTIgOTgiIH0pKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAiIH0pKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgOUYiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgOUYg
OTIiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICJFMiIsICI5OCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICJGMCIsICI5RiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA5RiIsICI5MiIgfSkpOworICAgIEVYUEVDVF9TVFJF
USgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCIsICI5RjkyIiB9KSk7CisgICAg
RVhQRUNUX1NUUkVRKCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIiwgIjlGIiwg
IjkyIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUo
IlVURi04IiwgeyAiQzAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAi
RjAgODAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjggODAgODAgODAgODAiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIs
IHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMgODAgODAgODAgODAgODAiIH0pKTsKKworICAgIEVY
UEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMSBCRiIg
fSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgi
VVRGLTgiLCB7ICJFMCA4MSBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9
e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA4MCA4MSBCRiIgfSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGOCA4MCA4MCA4MSBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICJGQyA4MCA4MCA4MCA4MSBCRiIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17
RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUwIDgyIDgwIiB9KSk7CisgICAg
RVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYt
OCIsIHsgIkYwIDgwIDgyIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17
RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDgwIDgwIDgyIDgw
IiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17
RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDgwIDgwIDgyIDgwIiB9KSk7CisK
KyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRTAgOUYgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZE
fXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgODAgOUYgQkYiIH0pKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUo
IlVURi04IiwgeyAiRjggODAgODAgOUYgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZE
fXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAi
RkMgODAgODAgODAgOUYgQkYiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9
e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA4MCBBMCA4MCIgfSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGOCA4MCA4MCBBMCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICJGQyA4MCA4MCA4MCBBMCA4MCIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17
RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDhGIEJGIEJGIiB9
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDgwIDhGIEJGIEJGIiB9KSk7CisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJV
VEYtOCIsIHsgIkZDIDgwIDgwIDhGIEJGIEJGIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIntG
RkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjgg
ODAgOTAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMgODAgODAgOTAgODAg
ODAiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZG
RkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGOCA4NCA4RiBCRiBCRiIgfSkpOworICAgIEVY
UEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGQyA4MCA4NCA4RiBCRiBCRiIgfSkpOworCisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY0
IDkwIDgwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZCIEJGIEJGIEJGIEJGIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZEIEJGIEJGIEJGIEJGIEJGIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkVEIEEw
IDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVj
b2RlKCJVVEYtOCIsIHsgIkVEIEJGIEJGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17
RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkVE
IEEwIEJEIEVEIEIyIEE5IiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtG
RkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjggODQgOTAgODAgODAi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMgODAgODQgOTAgODAgODAiIH0pKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVU
Ri04IiwgeyAiRjAgOEQgQTAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZE
fXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgOEQgQkYgQkYiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgOEQgQTAgQkQgRjAgOEQgQjIg
QTkiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICI4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICI4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9
e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI4MCA4MCA4MCIgfSkpOworICAgIEVYUEVD
VF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICI4MCA4MCA4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9
e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI4MCA4MCA4MCA4MCA4MCIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9
IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI4MCA4MCA4MCA4MCA4MCA4MCIgfSkpOworICAgIEVY
UEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICI4MCA4MCA4MCA4MCA4MCA4MCA4MCIgfSkpOworICAgIEVY
UEVDVF9TVFJFUSgie0I2fXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzIgQjYgODAi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAzfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRTIgOTggODMgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsxRjRBOX17RkZGRH0i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDlGIDkyIEE5IDgwIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2Rl
KCJVVEYtOCIsIHsgIkZCIEJGIEJGIEJGIEJGIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7
RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJV
VEYtOCIsIHsgIkZEIEJGIEJGIEJGIEJGIEJGIDgwIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEo
IntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkUiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkUgODAiIH0pKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkYiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAi
RkYgODAiIH0pKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323841</attachid>
            <date>2017-10-15 00:52:11 -0700</date>
            <delta_ts>2017-10-15 08:16:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178207-20171015005210.patch</filename>
            <type>text/plain</type>
            <size>39994</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U0OTI1YTVjZTBiYzNl
NWE1MWI4OTgwNWQ4ODFkMDAyOGRiNzUyOS4uYTFlZjRjM2RmOGE4OTFlZTBiZjQ4NDM3YWY3OGZm
NzUzMTM2NmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTEwLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVVEYtOCBkZWNvZGluZyBwcm9k
dWNlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBieXRlOyBFbmNvZGluZyBzdGFuZGFy
ZCByZXF1aXJlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBpbGxlZ2FsIHNlcXVlbmNl
IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDb2RlY1VURjg6OmNyZWF0ZSk6IERlbGV0ZWQuIFVzZSBhIGxhbWJkYSBpbnN0ZWFkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOiBVc2UgYSBsYW1i
ZGEuCisgICAgICAgIChXZWJDb3JlOjpub25BU0NJSVNlcXVlbmNlTGVuZ3RoKTogQ2hhbmdlZCBy
ZXR1cm4gdHlwZSB0byB1bnNpZ25lZC4gQ2hhbmdlZCB0byByZXR1cm4gMCBpbnN0ZWFkCisgICAg
ICAgIG9mIDIgZm9yIHRoZSByYW5nZSA4MC1DMSBzaW5jZSBub24gb2YgdGhvc2UgYXJlIHZhbGlk
IHNlcXVlbmNlIGxlYWRpbmcgY2hhcmFjdGVycy4KKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZU5v
bkFTQ0lJU2VxdWVuY2UpOiBDaGFuZ2VkIHRoZSBsZW5ndGggYXJndW1lbnQgdG8gYmUgaW4vb3V0
IHNvIHRoZSBjYWxsZXIKKyAgICAgICAga25vd3MgaG93IG11Y2ggb2YgdGhlIHNlcXVlbmNlIHdl
IGRlY29kZWQgZm9yIGZhaWx1cmUgY2FzZXMuIFNpbXBsaWZpZWQgdGhlIGxlbmd0aCAyIHNlY3Rp
b24uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpoYW5kbGVFcnJvcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVu
Y2UpOiBDaGFuZ2VkIHRoaXMgaW50byBhIHBhaXIgb2YgcGxhaW4gZnVuY3Rpb25zCisgICAgICAg
IHJhdGhlciB0aGFuIHR3byB0ZW1wbGF0ZSBmdW5jdGlvbiBzcGVjaWFsaXphdGlvbnMgc2luY2Ug
dGhlIHR3byBmdW5jdGlvbnMgYXJlIHJhdGhlciBkaWZmZXJlbnQuCisgICAgICAgIEZvciB0aGUg
b25lLWJ5dGUgdmVyc2lvbiwgZ290IHJpZCBvZiB0aGUgdW51c2VkIGFyZ3VtZW50cy4gRm9yIHRo
ZSB0d28tYnl0ZSB2ZXJzaW9uLCBnb3QgcmlkCisgICAgICAgIG9mIHRoZSBpZ25vcmVkIHJldHVy
biB2YWx1ZSwgc3RvcHBlZCB1c2luZyB0aGUgaGFuZGxlRXJyb3IgZnVuY3Rpb24gc2luY2UgZWFj
aCBlcnJvciBjYXNlCisgICAgICAgIG5lZWRzIHRvIGJlIGhhbmRsZWQgZGlmZmVyZW50bHkuIElu
IGVhY2ggZXJyb3IgY2FzZSBjb25zdW1lIHRoZSBlbnRpcmUgaW5jb3JyZWN0IHNlcXVlbmNlCisg
ICAgICAgIGluc3RlYWQgb2YganVzdCBvbmUgYnl0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b2RlY1VURjg6OmRlY29kZSk6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UsIGFuZCBjaGFu
Z2VkIHRoZSBub24tcGFydGlhbAorICAgICAgICBpbmNvcnJlY3Qgc2VxdWVuY2UgdG8gY29uc3Vt
ZSB0aGUgZW50aXJlIGluY29ycmVjdCBzZXF1ZW5jZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGJ5dGUu
IEFsc28KKyAgICAgICAgdXNlIFdURiBwcmVmaXhlcyBleHBsaWNpdGx5IHNvIHdlIGRvbid0ICBo
YXZlIHRvIGRvICJ1c2luZyBuYW1lc3BhY2UiLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
VVRGODo6ZW5jb2RlKTogR290IHJpZCBvZiB1bm5lZWRlZCB0eXBlIHB1bm5pbmcsIGFuZCBhZGRl
ZCBzb21lIGlubGluZQorICAgICAgICBjYXBhY2l0eSB0byBzYXZlIG9uZSBtZW1vcnkgYWxsb2Nh
dGlvbiB3aGVuIGVuY29kaW5nIHNob3J0ZXIgc3RyaW5ncy4KKworICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGOC5oOiBVc2UgcHJhZ21hIG9uY2UuIEludGlhbGl6ZSBtX3BhcnRp
YWxTZXF1ZW5jZVNpemUgd2hlcmUgaXQKKyAgICAgICAgaXMgZGVmaW5lZCBhbmQgbGV0IHRoZSBj
b21waWxlciBnZW5lcmF0ZSB0aGUgY29uc3RydWN0b3IuIFVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2Vz
IGFib3ZlLgorICAgICAgICBDaGFuZ2VkIG1fcGFydGlhbFNlcXVlbmNlU2l6ZSB0byBiZSBhIHVp
bnQ4X3QgaW5zdGVhZCBvZiBhbiBpbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOiBFeHBvcnQgYSBjb25zdHJ1Y3RvciBub3cgdXNlZCBieSBhIHVuaXQgdGVzdC4K
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg6IEV4cG9ydCBu
ZXdUZXh0Q29kZWMsIG5vdyB1c2VkIGJ5IGEgdW5pdCB0ZXN0LgorCiAyMDE3LTEwLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBXZWIg
QW5pbWF0aW9ucyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEY4LmNwcAppbmRleCA1MDhlZGVlOWE1MzIxMjdjYzFiNGMzNzA5MDQ0ZWE1YmQxYmI4N2E3
Li5hMzU2Zjk1ZDlkMjQyN2M1NGYyMTE3YWI0YzJkMjBmM2FjZGQ0ODZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4LCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzEsMTggKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IFdURjsKLXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY29uc3QgaW50IG5vbkNoYXJhY3RlciA9IC0xOwogCi1zdGQ6OnVuaXF1ZV9wdHI8VGV4
dENvZGVjPiBUZXh0Q29kZWNVVEY4OjpjcmVhdGUoY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3Qg
dm9pZCopCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGOD4oKTsK
LX0KLQogdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdO
YW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICAvLyBGcm9tIGh0dHBzOi8vZW5jb2Rpbmcu
c3BlYy53aGF0d2cub3JnLgpAQCAtNjEsMTAgKzUzLDEyIEBAIHZvaWQgVGV4dENvZGVjVVRGODo6
cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiAK
IHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJl
Z2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoIlVURi04IiwgY3JlYXRlLCAwKTsKKyAgICByZWdp
c3RyYXIoIlVURi04IiwgW10gKGNvbnN0IFRleHRFbmNvZGluZyYsIGNvbnN0IHZvaWQqKSAtPiBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAgfSwgbnVsbHB0cik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgaW50IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgodWludDhfdCBmaXJzdEJ5dGUpCitzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgodWludDhfdCBmaXJzdEJ5dGUp
CiB7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbGVuZ3Roc1syNTZdID0gewogICAgICAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLApAQCAtNzUsMTEg
KzY5LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgodWludDhf
dCBmaXJzdEJ5dGUpCiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCi0gICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCisgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgICAgIDAsIDAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCiAgICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIs
IDIsIDIsIDIsIDIsCiAgICAgICAgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMs
IDMsIDMsIDMsIDMsCiAgICAgICAgIDQsIDQsIDQsIDQsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAKQEAgLTg3LDU1ICs4MSw3NiBAQCBzdGF0aWMgaW5saW5lIGludCBub25BU0NJ
SVNlcXVlbmNlTGVuZ3RoKHVpbnQ4X3QgZmlyc3RCeXRlKQogICAgIHJldHVybiBsZW5ndGhzW2Zp
cnN0Qnl0ZV07CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGRlY29kZU5vbkFTQ0lJU2VxdWVuY2Uo
Y29uc3QgdWludDhfdCogc2VxdWVuY2UsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBpbmxpbmUg
aW50IGRlY29kZU5vbkFTQ0lJU2VxdWVuY2UoY29uc3QgdWludDhfdCogc2VxdWVuY2UsIHVuc2ln
bmVkJiBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc0FTQ0lJKHNlcXVlbmNlWzBdKSk7CiAgICAg
aWYgKGxlbmd0aCA9PSAyKSB7CisgICAgICAgIEFTU0VSVChzZXF1ZW5jZVswXSA+PSAweEMyKTsK
ICAgICAgICAgQVNTRVJUKHNlcXVlbmNlWzBdIDw9IDB4REYpOwotICAgICAgICBpZiAoc2VxdWVu
Y2VbMF0gPCAweEMyKQotICAgICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKLSAgICAgICAg
aWYgKHNlcXVlbmNlWzFdIDwgMHg4MCB8fCBzZXF1ZW5jZVsxXSA+IDB4QkYpCisgICAgICAgIGlm
IChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKSB7CisgICAgICAgICAg
ICBsZW5ndGggPSAxOwogICAgICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKKyAgICAgICAg
fQogICAgICAgICByZXR1cm4gKChzZXF1ZW5jZVswXSA8PCA2KSArIHNlcXVlbmNlWzFdKSAtIDB4
MDAwMDMwODA7CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0gMykgewotICAgICAgICBBU1NFUlQo
c2VxdWVuY2VbMF0gPj0gMHhFMCAmJiBzZXF1ZW5jZVswXSA8PSAweEVGKTsKKyAgICAgICAgQVNT
RVJUKHNlcXVlbmNlWzBdID49IDB4RTApOworICAgICAgICBBU1NFUlQoc2VxdWVuY2VbMF0gPD0g
MHhFRik7CiAgICAgICAgIHN3aXRjaCAoc2VxdWVuY2VbMF0pIHsKICAgICAgICAgY2FzZSAweEUw
OgotICAgICAgICAgICAgaWYgKHNlcXVlbmNlWzFdIDwgMHhBMCB8fCBzZXF1ZW5jZVsxXSA+IDB4
QkYpCisgICAgICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweEEwIHx8IHNlcXVlbmNlWzFdID4g
MHhCRikgeworICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5vbkNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIDB4RUQ6Ci0gICAgICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNl
cXVlbmNlWzFdID4gMHg5RikKKyAgICAgICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwg
c2VxdWVuY2VbMV0gPiAweDlGKSB7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbm9uQ2hhcmFjdGVyOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoc2VxdWVuY2VbMV0g
PCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikKKyAgICAgICAgICAgIGlmIChzZXF1ZW5jZVsx
XSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKSB7CisgICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9uQ2hhcmFjdGVyOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsyXSA8IDB4ODAgfHwgc2VxdWVuY2Vb
Ml0gPiAweEJGKQorICAgICAgICBpZiAoc2VxdWVuY2VbMl0gPCAweDgwIHx8IHNlcXVlbmNlWzJd
ID4gMHhCRikgeworICAgICAgICAgICAgbGVuZ3RoID0gMjsKICAgICAgICAgICAgIHJldHVybiBu
b25DaGFyYWN0ZXI7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuICgoc2VxdWVuY2VbMF0gPDwg
MTIpICsgKHNlcXVlbmNlWzFdIDw8IDYpICsgc2VxdWVuY2VbMl0pIC0gMHgwMDBFMjA4MDsKICAg
ICB9CiAgICAgQVNTRVJUKGxlbmd0aCA9PSA0KTsKLSAgICBBU1NFUlQoc2VxdWVuY2VbMF0gPj0g
MHhGMCAmJiBzZXF1ZW5jZVswXSA8PSAweEY0KTsKKyAgICBBU1NFUlQoc2VxdWVuY2VbMF0gPj0g
MHhGMCk7CisgICAgQVNTRVJUKHNlcXVlbmNlWzBdIDw9IDB4RjQpOwogICAgIHN3aXRjaCAoc2Vx
dWVuY2VbMF0pIHsKICAgICBjYXNlIDB4RjA6Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4
OTAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKQorICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDkw
IHx8IHNlcXVlbmNlWzFdID4gMHhCRikgeworICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAgICAg
ICAgICAgIHJldHVybiBub25DaGFyYWN0ZXI7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSAweEY0OgotICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNlcXVlbmNl
WzFdID4gMHg4RikKKyAgICAgICAgaWYgKHNlcXVlbmNlWzFdIDwgMHg4MCB8fCBzZXF1ZW5jZVsx
XSA+IDB4OEYpIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7CiAgICAgICAgICAgICByZXR1cm4g
bm9uQ2hhcmFjdGVyOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKQorICAg
ICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikgeworICAg
ICAgICAgICAgbGVuZ3RoID0gMTsKICAgICAgICAgICAgIHJldHVybiBub25DaGFyYWN0ZXI7Cisg
ICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHNlcXVlbmNlWzJdIDwgMHg4MCB8fCBzZXF1ZW5jZVsy
XSA+IDB4QkYpCisgICAgaWYgKHNlcXVlbmNlWzJdIDwgMHg4MCB8fCBzZXF1ZW5jZVsyXSA+IDB4
QkYpIHsKKyAgICAgICAgbGVuZ3RoID0gMjsKICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsK
LSAgICBpZiAoc2VxdWVuY2VbM10gPCAweDgwIHx8IHNlcXVlbmNlWzNdID4gMHhCRikKKyAgICB9
CisgICAgaWYgKHNlcXVlbmNlWzNdIDwgMHg4MCB8fCBzZXF1ZW5jZVszXSA+IDB4QkYpIHsKKyAg
ICAgICAgbGVuZ3RoID0gMzsKICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKKyAgICB9CiAg
ICAgcmV0dXJuICgoc2VxdWVuY2VbMF0gPDwgMTgpICsgKHNlcXVlbmNlWzFdIDw8IDEyKSArIChz
ZXF1ZW5jZVsyXSA8PCA2KSArIHNlcXVlbmNlWzNdKSAtIDB4MDNDODIwODA7CiB9CiAKQEAgLTE1
OCwxOCArMTczLDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4Ojpjb25zdW1lUGFydGlhbFNlcXVlbmNl
Qnl0ZSgpCiAgICAgbWVtbW92ZShtX3BhcnRpYWxTZXF1ZW5jZSwgbV9wYXJ0aWFsU2VxdWVuY2Ug
KyAxLCBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpOwogfQogCi12b2lkIFRleHRDb2RlY1VURjg6Omhh
bmRsZUVycm9yKFVDaGFyKiYgZGVzdGluYXRpb24sIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNh
d0Vycm9yKQotewotICAgIHNhd0Vycm9yID0gdHJ1ZTsKLSAgICBpZiAoc3RvcE9uRXJyb3IpCi0g
ICAgICAgIHJldHVybjsKLSAgICAvLyBFYWNoIGVycm9yIGdlbmVyYXRlcyBhIHJlcGxhY2VtZW50
IGNoYXJhY3RlciBhbmQgY29uc3VtZXMgb25lIGJ5dGUuCi0gICAgKmRlc3RpbmF0aW9uKysgPSBy
ZXBsYWNlbWVudENoYXJhY3RlcjsKLSAgICBjb25zdW1lUGFydGlhbFNlcXVlbmNlQnl0ZSgpOwot
fQotCi10ZW1wbGF0ZSA8PgotYm9vbCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVu
Y2U8TENoYXI+KExDaGFyKiYgZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4X3QqJiBzb3VyY2UsIGNv
bnN0IHVpbnQ4X3QqIGVuZCwgYm9vbCBmbHVzaCwgYm9vbCwgYm9vbCYpCitib29sIFRleHRDb2Rl
Y1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZShMQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1
aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBlbmQsIGJvb2wgZmx1c2gpCiB7CiAgICAg
QVNTRVJUKG1fcGFydGlhbFNlcXVlbmNlU2l6ZSk7CiAgICAgZG8gewpAQCAtMTc4LDcgKzE4Miw3
IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPExDaGFyPihMQ2hh
ciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAgICAgICBjb25zdW1lUGFydGlhbFNl
cXVlbmNlQnl0ZSgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAg
aW50IGNvdW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aChtX3BhcnRpYWxTZXF1ZW5jZVswXSk7
CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aChtX3BhcnRp
YWxTZXF1ZW5jZVswXSk7CiAgICAgICAgIGlmICghY291bnQpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIApAQCAtMjAxLDcgKzIwNSw3IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFy
dGlhbFNlcXVlbmNlPExDaGFyPihMQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAg
ICAgICAgICBtX3BhcnRpYWxTZXF1ZW5jZVNpemUgPSBjb3VudDsKICAgICAgICAgfQogICAgICAg
ICBpbnQgY2hhcmFjdGVyID0gZGVjb2RlTm9uQVNDSUlTZXF1ZW5jZShtX3BhcnRpYWxTZXF1ZW5j
ZSwgY291bnQpOwotICAgICAgICBpZiAoKGNoYXJhY3RlciA9PSBub25DaGFyYWN0ZXIpIHx8IChj
aGFyYWN0ZXIgPiAweGZmKSkKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBub25DaGFyYWN0ZXIg
fHwgY2hhcmFjdGVyID4gMHhGRikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAg
IG1fcGFydGlhbFNlcXVlbmNlU2l6ZSAtPSBjb3VudDsKQEAgLTIxMSw4ICsyMTUsNyBAQCBib29s
IFRleHRDb2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZTxMQ2hhcj4oTENoYXIqJiBkZXN0
aW5hdGlvbiwgY29uc3QgdWludAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPD4K
LWJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPFVDaGFyPihVQ2hhciom
IGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBlbmQs
IGJvb2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKQordm9pZCBUZXh0
Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVuY2UoVUNoYXIqJiBkZXN0aW5hdGlvbiwgY29u
c3QgdWludDhfdComIHNvdXJjZSwgY29uc3QgdWludDhfdCogZW5kLCBib29sIGZsdXNoLCBib29s
IHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAgICBBU1NFUlQobV9wYXJ0aWFsU2Vx
dWVuY2VTaXplKTsKICAgICBkbyB7CkBAIC0yMjEsMTEgKzIyNCwxMyBAQCBib29sIFRleHRDb2Rl
Y1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZTxVQ2hhcj4oVUNoYXIqJiBkZXN0aW5hdGlvbiwg
Y29uc3QgdWludAogICAgICAgICAgICAgY29uc3VtZVBhcnRpYWxTZXF1ZW5jZUJ5dGUoKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGludCBjb3VudCA9IG5vbkFT
Q0lJU2VxdWVuY2VMZW5ndGgobV9wYXJ0aWFsU2VxdWVuY2VbMF0pOworICAgICAgICB1bnNpZ25l
ZCBjb3VudCA9IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgobV9wYXJ0aWFsU2VxdWVuY2VbMF0pOwog
ICAgICAgICBpZiAoIWNvdW50KSB7Ci0gICAgICAgICAgICBoYW5kbGVFcnJvcihkZXN0aW5hdGlv
biwgc3RvcE9uRXJyb3IsIHNhd0Vycm9yKTsKKyAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsK
ICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgKmRlc3RpbmF0aW9uKysg
PSByZXBsYWNlbWVudENoYXJhY3RlcjsKKyAgICAgICAgICAgIGNvbnN1bWVQYXJ0aWFsU2VxdWVu
Y2VCeXRlKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
Y291bnQgPiBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpIHsKQEAgLTIzNSwxMiArMjQwLDE1IEBAIGJv
b2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPFVDaGFyPihVQ2hhciomIGRl
c3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBpdCB0byB0
aGUgZXhpc3RpbmcgcGFydGlhbCBzZXF1ZW5jZS4KICAgICAgICAgICAgICAgICAgICAgbWVtY3B5
KG1fcGFydGlhbFNlcXVlbmNlICsgbV9wYXJ0aWFsU2VxdWVuY2VTaXplLCBzb3VyY2UsIGVuZCAt
IHNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgIG1fcGFydGlhbFNlcXVlbmNlU2l6ZSArPSBl
bmQgLSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAv
LyBBbiBpbmNvbXBsZXRlIHBhcnRpYWwgc2VxdWVuY2UgYXQgdGhlIGVuZCBpcyBhbiBlcnJvci4K
LSAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihkZXN0aW5hdGlvbiwgc3RvcE9uRXJyb3IsIHNh
d0Vycm9yKTsKKyAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgaWYgKHN0b3BPbkVycm9yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAqZGVzdGluYXRpb24r
KyA9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICAgICAgICAgIG1fcGFydGlhbFNlcXVl
bmNlU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgc291cmNlID0gZW5kOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtY3B5KG1fcGFydGlh
bFNlcXVlbmNlICsgbV9wYXJ0aWFsU2VxdWVuY2VTaXplLCBzb3VyY2UsIGNvdW50IC0gbV9wYXJ0
aWFsU2VxdWVuY2VTaXplKTsKQEAgLTI0OSwxNyArMjU3LDE4IEBAIGJvb2wgVGV4dENvZGVjVVRG
ODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPFVDaGFyPihVQ2hhciomIGRlc3RpbmF0aW9uLCBjb25z
dCB1aW50CiAgICAgICAgIH0KICAgICAgICAgaW50IGNoYXJhY3RlciA9IGRlY29kZU5vbkFTQ0lJ
U2VxdWVuY2UobV9wYXJ0aWFsU2VxdWVuY2UsIGNvdW50KTsKICAgICAgICAgaWYgKGNoYXJhY3Rl
ciA9PSBub25DaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGhhbmRsZUVycm9yKGRlc3RpbmF0aW9u
LCBzdG9wT25FcnJvciwgc2F3RXJyb3IpOworICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwog
ICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAqZGVzdGluYXRpb24rKyA9
IHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICAgICAgbV9wYXJ0aWFsU2VxdWVuY2VTaXpl
IC09IGNvdW50OworICAgICAgICAgICAgbWVtbW92ZShtX3BhcnRpYWxTZXF1ZW5jZSwgbV9wYXJ0
aWFsU2VxdWVuY2UgKyBjb3VudCwgbV9wYXJ0aWFsU2VxdWVuY2VTaXplKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgbV9wYXJ0aWFsU2VxdWVuY2VTaXplIC09
IGNvdW50OwogICAgICAgICBkZXN0aW5hdGlvbiA9IGFwcGVuZENoYXJhY3RlcihkZXN0aW5hdGlv
biwgY2hhcmFjdGVyKTsKICAgICB9IHdoaWxlIChtX3BhcnRpYWxTZXF1ZW5jZVNpemUpOwotCi0g
ICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAogU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29kZShj
b25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25F
cnJvciwgYm9vbCYgc2F3RXJyb3IpCkBAIC0yNzEsNyArMjgwLDcgQEAgU3RyaW5nIFRleHRDb2Rl
Y1VURjg6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVz
aCwgYm9vbAogCiAgICAgY29uc3QgdWludDhfdCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oYnl0ZXMpOwogICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHNvdXJjZSAr
IGxlbmd0aDsKLSAgICBjb25zdCB1aW50OF90KiBhbGlnbmVkRW5kID0gYWxpZ25Ub01hY2hpbmVX
b3JkKGVuZCk7CisgICAgY29uc3QgdWludDhfdCogYWxpZ25lZEVuZCA9IFdURjo6YWxpZ25Ub01h
Y2hpbmVXb3JkKGVuZCk7CiAgICAgTENoYXIqIGRlc3RpbmF0aW9uID0gYnVmZmVyLmNoYXJhY3Rl
cnMoKTsKIAogICAgIGRvIHsKQEAgLTI4MSw3ICsyOTAsNyBAQCBTdHJpbmcgVGV4dENvZGVjVVRG
ODo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBi
b29sCiAgICAgICAgICAgICAvLyBpbiBzb21lIGNvbXBpbGVycy4KICAgICAgICAgICAgIExDaGFy
KiBkZXN0aW5hdGlvbkZvckhhbmRsZVBhcnRpYWxTZXF1ZW5jZSA9IGRlc3RpbmF0aW9uOwogICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogc291cmNlRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNlID0g
c291cmNlOwotICAgICAgICAgICAgaWYgKGhhbmRsZVBhcnRpYWxTZXF1ZW5jZShkZXN0aW5hdGlv
bkZvckhhbmRsZVBhcnRpYWxTZXF1ZW5jZSwgc291cmNlRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNl
LCBlbmQsIGZsdXNoLCBzdG9wT25FcnJvciwgc2F3RXJyb3IpKSB7CisgICAgICAgICAgICBpZiAo
aGFuZGxlUGFydGlhbFNlcXVlbmNlKGRlc3RpbmF0aW9uRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNl
LCBzb3VyY2VGb3JIYW5kbGVQYXJ0aWFsU2VxdWVuY2UsIGVuZCwgZmx1c2gpKSB7CiAgICAgICAg
ICAgICAgICAgc291cmNlID0gc291cmNlRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNlOwogICAgICAg
ICAgICAgICAgIGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKICAgICAgICAgICAgIH0KQEAgLTI5NCwx
NCArMzAzLDE0IEBAIFN0cmluZyBUZXh0Q29kZWNVVEY4OjpkZWNvZGUoY29uc3QgY2hhciogYnl0
ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wKICAgICAgICAgd2hpbGUgKHNvdXJj
ZSA8IGVuZCkgewogICAgICAgICAgICAgaWYgKGlzQVNDSUkoKnNvdXJjZSkpIHsKICAgICAgICAg
ICAgICAgICAvLyBGYXN0IHBhdGggZm9yIEFTQ0lJLiBNb3N0IFVURi04IHRleHQgd2lsbCBiZSBB
U0NJSS4KLSAgICAgICAgICAgICAgICBpZiAoaXNBbGlnbmVkVG9NYWNoaW5lV29yZChzb3VyY2Up
KSB7CisgICAgICAgICAgICAgICAgaWYgKFdURjo6aXNBbGlnbmVkVG9NYWNoaW5lV29yZChzb3Vy
Y2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzb3VyY2UgPCBhbGlnbmVkRW5kKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lV29yZCBjaHVuayA9ICpyZWludGVycHJl
dF9jYXN0X3B0cjxjb25zdCBNYWNoaW5lV29yZCo+KHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzQWxsQVNDSUk8TENoYXI+KGNodW5rKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gY2h1bmsgPSAqcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgV1RGOjpNYWNo
aW5lV29yZCo+KHNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVdURjo6aXNB
bGxBU0NJSTxMQ2hhcj4oY2h1bmspKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgY29weUFTQ0lJTWFjaGluZVdvcmQoZGVzdGluYXRp
b24sIHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc2l6ZW9mKE1h
Y2hpbmVXb3JkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uICs9IHNpemVv
ZihNYWNoaW5lV29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc2l6ZW9m
KFdURjo6TWFjaGluZVdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24g
Kz0gc2l6ZW9mKFdURjo6TWFjaGluZVdvcmQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gZW5kKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0zMTEsNyArMzIwLDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29k
ZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbAogICAg
ICAgICAgICAgICAgICpkZXN0aW5hdGlvbisrID0gKnNvdXJjZSsrOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW50IGNvdW50ID0gbm9uQVND
SUlTZXF1ZW5jZUxlbmd0aCgqc291cmNlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0g
bm9uQVNDSUlTZXF1ZW5jZUxlbmd0aCgqc291cmNlKTsKICAgICAgICAgICAgIGludCBjaGFyYWN0
ZXI7CiAgICAgICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9
IG5vbkNoYXJhY3RlcjsKQEAgLTMzMCwxMCArMzM5LDEwIEBAIFN0cmluZyBUZXh0Q29kZWNVVEY4
OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJv
b2wKICAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYg
KHN0b3BPbkVycm9yKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAgICAgICAgIGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPiAweGZmKQorICAgICAgICAgICAgaWYgKGNo
YXJhY3RlciA+IDB4RkYpCiAgICAgICAgICAgICAgICAgZ290byB1cENvbnZlcnRUbzE2Qml0Owog
CiAgICAgICAgICAgICBzb3VyY2UgKz0gY291bnQ7CkBAIC0zNzEsMTQgKzM4MCwxNCBAQCB1cENv
bnZlcnRUbzE2Qml0OgogICAgICAgICB3aGlsZSAoc291cmNlIDwgZW5kKSB7CiAgICAgICAgICAg
ICBpZiAoaXNBU0NJSSgqc291cmNlKSkgewogICAgICAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBm
b3IgQVNDSUkuIE1vc3QgVVRGLTggdGV4dCB3aWxsIGJlIEFTQ0lJLgotICAgICAgICAgICAgICAg
IGlmIChpc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoV1RGOjppc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKHNvdXJjZSA8IGFsaWduZWRFbmQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIE1hY2hpbmVXb3JkIGNodW5rID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IE1hY2hp
bmVXb3JkKj4oc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBbGxBU0NJ
STxMQ2hhcj4oY2h1bmspKQorICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBjaHVuayA9ICpy
ZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBXVEY6Ok1hY2hpbmVXb3JkKj4oc291cmNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghV1RGOjppc0FsbEFTQ0lJPExDaGFyPihjaHVuaykp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3B5QVNDSUlNYWNoaW5lV29yZChkZXN0aW5hdGlvbjE2LCBzb3VyY2UpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNpemVvZihNYWNoaW5lV29yZCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjE2ICs9IHNpemVvZihNYWNoaW5lV29yZCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc2l6ZW9mKFdURjo6TWFjaGluZVdvcmQp
OworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24xNiArPSBzaXplb2YoV1RGOjpN
YWNoaW5lV29yZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
aWYgKHNvdXJjZSA9PSBlbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM4
OCw3ICszOTcsNyBAQCB1cENvbnZlcnRUbzE2Qml0OgogICAgICAgICAgICAgICAgICpkZXN0aW5h
dGlvbjE2KysgPSAqc291cmNlKys7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnQgY291bnQgPSBub25BU0NJSVNlcXVlbmNlTGVuZ3RoKCpz
b3VyY2UpOworICAgICAgICAgICAgdW5zaWduZWQgY291bnQgPSBub25BU0NJSVNlcXVlbmNlTGVu
Z3RoKCpzb3VyY2UpOwogICAgICAgICAgICAgaW50IGNoYXJhY3RlcjsKICAgICAgICAgICAgIGlm
ICghY291bnQpCiAgICAgICAgICAgICAgICAgY2hhcmFjdGVyID0gbm9uQ2hhcmFjdGVyOwpAQCAt
NDA3LDkgKzQxNiw4IEBAIHVwQ29udmVydFRvMTZCaXQ6CiAgICAgICAgICAgICAgICAgc2F3RXJy
b3IgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgLy8gRWFjaCBlcnJvciBnZW5lcmF0ZXMg
YSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgYW5kIGNvbnN1bWVzIG9uZSBieXRlLgogICAgICAgICAg
ICAgICAgICpkZXN0aW5hdGlvbjE2KysgPSByZXBsYWNlbWVudENoYXJhY3RlcjsKLSAgICAgICAg
ICAgICAgICArK3NvdXJjZTsKKyAgICAgICAgICAgICAgICBzb3VyY2UgKz0gY291bnQgPyBjb3Vu
dCA6IDE7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzb3VyY2UgKz0gY291bnQ7CkBAIC00MjksMTcgKzQzNywxNSBAQCBDU3RyaW5nIFRleHRD
b2RlY1VURjg6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwg
VW5lbmNvZGFibAogICAgIC8vIE5vbi1CTVAgY2hhcmFjdGVycyB0YWtlIHR3byBVVEYtMTYgY29k
ZSB1bml0cyBhbmQgY2FuIHRha2UgdXAgdG8gNCBieXRlcyAoMngpLgogICAgIGlmIChsZW5ndGgg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gMykKICAgICAgICAgQ1JBU0go
KTsKLSAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMobGVuZ3RoICogMyk7CiAKLSAgICBzaXplX3Qg
aSA9IDA7CisgICAgVmVjdG9yPGNoYXIsIDI1Nj4gYnl0ZXMobGVuZ3RoICogMyk7CiAgICAgc2l6
ZV90IGJ5dGVzV3JpdHRlbiA9IDA7Ci0gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVy
OwogICAgICAgICBVMTZfTkVYVChjaGFyYWN0ZXJzLCBpLCBsZW5ndGgsIGNoYXJhY3Rlcik7CiAg
ICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnl0ZXMuZGF0YSgpLCBieXRlc1dyaXR0ZW4sIGNoYXJh
Y3Rlcik7CiAgICAgfQotCi0gICAgcmV0dXJuIENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXNXcml0dGVuKTsKKyAgICByZXR1cm4gQ1N0cmluZyhieXRl
cy5kYXRhKCksIGJ5dGVzV3JpdHRlbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmgKaW5kZXggNTkwZmQ1
YzBkNWUzNWNmNTY4NTBiZGQyN2UyMzdjNzIxMzliYTdiOS4uNDcxZDUzOTMxZjU3Y2E2YzY5ZWJi
ZmVlOTAzYzRmYTc4YmZhYjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVVEY4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEY4LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBUZXh0Q29kZWNVVEY4X2gKLSNkZWZpbmUgVGV4dENvZGVjVVRGOF9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogCkBAIC0zMiwxMiArMzEsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRDb2RlY1VURjggOiBwdWJsaWMgVGV4dENvZGVjIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gY3JlYXRlKGNv
bnN0IFRleHRFbmNvZGluZyYsIGNvbnN0IHZvaWQqKTsKLSAgICBUZXh0Q29kZWNVVEY4KCkKLSAg
ICAgICAgOiBtX3BhcnRpYWxTZXF1ZW5jZVNpemUoMCkKLSAgICB7Ci0gICAgfQotCiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhcik7CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyKTsKIApAQCAt
NDUsMTYgKzM4LDE0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwg
c2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJy
b3IpIG92ZXJyaWRlOwogICAgIENTdHJpbmcgZW5jb2RlKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxl
bmd0aCwgVW5lbmNvZGFibGVIYW5kbGluZykgb3ZlcnJpZGU7CiAKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci0gICAgYm9vbCBoYW5kbGVQYXJ0aWFsU2VxdWVuY2UoQ2hhclR5cGUq
JiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdComIHNvdXJjZSwgY29uc3QgdWludDhfdCogZW5k
LCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7Ci0gICAgdm9p
ZCBoYW5kbGVFcnJvcihVQ2hhciomIGRlc3RpbmF0aW9uLCBib29sIHN0b3BPbkVycm9yLCBib29s
JiBzYXdFcnJvcik7CisgICAgYm9vbCBoYW5kbGVQYXJ0aWFsU2VxdWVuY2UoTENoYXIqJiBkZXN0
aW5hdGlvbiwgY29uc3QgdWludDhfdComIHNvdXJjZSwgY29uc3QgdWludDhfdCogZW5kLCBib29s
IGZsdXNoKTsKKyAgICB2b2lkIGhhbmRsZVBhcnRpYWxTZXF1ZW5jZShVQ2hhciomIGRlc3RpbmF0
aW9uLCBjb25zdCB1aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBlbmQsIGJvb2wgZmx1
c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKTsKICAgICB2b2lkIGNvbnN1bWVQ
YXJ0aWFsU2VxdWVuY2VCeXRlKCk7CiAKLSAgICBpbnQgbV9wYXJ0aWFsU2VxdWVuY2VTaXplOwor
ICAgIHVpbnQ4X3QgbV9wYXJ0aWFsU2VxdWVuY2VTaXplIHsgMCB9OwogICAgIHVpbnQ4X3QgbV9w
YXJ0aWFsU2VxdWVuY2VbVThfTUFYX0xFTkdUSF07CiAgICAgCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBUZXh0Q29kZWNVVEY4X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCmluZGV4IGEzNDljMzgyOGQ3YmE4ZjdhMWU0Mzg4
NGU2MTRkODQ2YTI4NjQ3ZWQuLjIwNGQ0Nzg1YzVjODJlMzQ2ODk2OTk0YjEyZDExZGQ1ODE4MTdj
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0RW5jb2Rpbmcgewog
cHVibGljOgogICAgIFRleHRFbmNvZGluZygpID0gZGVmYXVsdDsKLSAgICBUZXh0RW5jb2Rpbmco
Y29uc3QgY2hhciogbmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGV4dEVuY29kaW5nKGNvbnN0
IGNoYXIqIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRFbmNvZGluZyhjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1Jl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lz
dHJ5LmgKaW5kZXggN2NhNTJlNTM4OGQwZWU4MjUyM2U5YjBkZDRhNjAxMGUwZWY2YzU5MS4uYmNj
NGI4NzU2N2FjZTMzYTAyMzUwNDEyNzVmOGU5Yjg2N2U1ZjZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIC8vIFVzZSBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpkZWNvZGUgdG8gZGVjb2RlIHJlc291cmNlcywgc2luY2UgaXQgaGFuZGxlcyBCT01zLgogLy8g
VXNlIFRleHRFbmNvZGluZzo6ZW5jb2RlIHRvIGVuY29kZSwgc2luY2UgaXQgdGFrZXMgY2FyZSBv
ZiBub3JtYWxpemF0aW9uLgotc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVj
KGNvbnN0IFRleHRFbmNvZGluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFRl
eHRDb2RlYz4gbmV3VGV4dENvZGVjKGNvbnN0IFRleHRFbmNvZGluZyYpOwogCiAvLyBPbmx5IFRl
eHRFbmNvZGluZyBzaG91bGQgdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRpcmVjdGx5Lgog
Y29uc3QgY2hhciogYXRvbWljQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBh
bGlhcyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNzJjNzYxMjJiMDRkODI1YzYxOWYzYTM5ZjViNmJlMTU0ODIzNTI4OC4uYWUwZTgyZTcwODIw
NGUxYzhhYWIxYWIzMmI5Mzk5NGJjMzVhYmIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEwLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVVEYtOCBkZWNvZGluZyBwcm9k
dWNlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBieXRlOyBFbmNvZGluZyBzdGFuZGFy
ZCByZXF1aXJlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBpbGxlZ2FsIHNlcXVlbmNl
IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IEFkZGVkIHRlc3QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RleHRD
b2RlYy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjb2RlSGV4VGVzdEJ5
dGVzKTogRGVjb2RlcyBhIHN0cmluZyBzbyB3ZSBjYW4gd3JpdGUgcmVhZGFibGUgdGVzdHMuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjplc2NhcGVOb25QcmludGFibGVBU0NJSUNoYXJhY3RlcnMp
OiBFbmNvZGVzIGEgc3RyaW5nIHNvIHdlIGNhbiB3cml0ZSByZWFkYWJsZSB0ZXN0cy4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBBZGRlZCBzb21lIFVURi04IHRlc3RzIGFuZCBVVEYt
OCBpbnZhbGlkIHNlcXVlbmNlcyB0ZXN0cy4KKyAgICAgICAgV291bGQgYmUgc21hcnQgdG8gYWRk
IG1vcmUgdGVzdHMgZm9yIG90aGVyIGNhc2VzLCBleGVyY2lzaW5nIHRoZSBmYXN0IEFTQ0lJIGxv
b3AgZm9yIGV4YW1wbGUsIGFuZAorICAgICAgICBvdGhlciBlbmNvZGluZ3MuCisKIDIwMTctMTAt
MTQgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXSBKSEJ1aWxkIGJ1aWxkIGRpcmVjdG9yeSBEZXBlbmRlbmNpZXNXUEUvQnVpbGQgaXMg
bm90IHJlbW92ZWQgYnkgdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVpbGQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZDVmMDU3MTViMjQxZWE4ZmFjZWUwMDNlZTYzZDJjNzU5NjhiMzkyMy4uN2E5
Nzc5N2FlNGM3OGY0MWVkZTM5OTEwYjY2YmVmMzJjOTQ4OTk5MyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTUzMCw2ICs1MzAsNyBAQAogCQk5M0FGNEVEMTE1MDZGMTMwMDA3RkQ1N0UgLyog
bG90cy1vZi1pbWFnZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDRjE1MDZGMTIzMDA3RkQ1N0UgLyogbG90cy1vZi1pbWFn
ZXMuaHRtbCAqLzsgfTsKIAkJOTNDRkE4NjcxQ0VCOUUzODAwMDU2NUE4IC8qIGF1dG9mb2N1c2Vk
LXRleHQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4
dC1pbnB1dC5odG1sICovOyB9OwogCQk5M0UyRDI3NjFFRDdENTMyMDBGQTc2RjYgLyogb2Zmc2Ny
ZWVuLWlmcmFtZS1vZi1tZWRpYS1kb2N1bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTJEMjc1MUVEN0Q1MTcwMEZBNzZGNiAv
KiBvZmZzY3JlZW4taWZyYW1lLW9mLW1lZGlhLWRvY3VtZW50Lmh0bWwgKi87IH07CisJCTkzRTYx
OTNCMUY5MzFCM0EwMEFGMjQ1RSAvKiBUZXh0Q29kZWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBMjU4OTgxRjkyRkYxNTAwM0U1MTBDIC8qIFRl
eHRDb2RlYy5jcHAgKi87IH07CiAJCTkzRjFEQjM0MTREQTIwODcwMDI0QzM2MiAvKiBOZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEQjMzMTREQTIwODcwMDI0QzM2MiAvKiBOZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJOTNGMURCNTcx
NERCMUI4NDAwMjRDMzYyIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0YxREI1NjE0REIxQjg0MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
RmFpbHNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VERTg0IC8qIGxp
YmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiAqLzsg
fTsKQEAgLTE0NzYsNiArMTQ3Nyw3IEBACiAJCTkzNkY3MjdGMUNEN0Q5RDAwMDY4QTBGQiAvKiBs
YXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5t
cDQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzlCQTkxNjE0MTAzNDEyMDAxQTAx
QkQgLyogRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBEZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM5QkZFMzkxOEU1NTQ4OTAwODgzMjc1IC8qIFN0cmluZ1RydW5j
YXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1Ry
dW5jYXRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNBMjU4OTgxRjkyRkYx
NTAwM0U1MTBDIC8qIFRleHRDb2RlYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0E0MjdBODE4MEQ5QjA3MDBDRDI0
RDcgLyogUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZlB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTQyN0FBMTgwREEyNjQw
MENEMjRENyAvKiBSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNDI3QUMxODBEQTYwRjAw
Q0QyNEQ3IC8qIE1vdmVPbmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdmVPbmx5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUyLDYgKzIxNTQsNyBAQAogCQkJCUExNzk5MThBMUUx
Q0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmggKi8sCiAJCQkJRUNBNjgwQ0QxRTY4
Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKIAkJCQlDRTRENURFNTFGNjc0
M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAgKi8sCisJCQkJOTNBMjU4OTgx
RjkyRkYxNTAwM0U1MTBDIC8qIFRleHRDb2RlYy5jcHAgKi8sCiAJCQkJQ0RDMkM3MTQxNzk3MDg5
RDAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3BwICovLAogCQkJCTdBRDNGRThEMUQ3NUZCOEQwMEIx
NjlBNCAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCiAJCQkJNDQwQTFEMzgxNEEwMTAz
QTAwOEE2NkYyIC8qIFVSTC5jcHAgKi8sCkBAIC0zNDUzLDYgKzM0NTYsNyBAQAogCQkJCUExNEZD
NTkwMUI4QUUzNkYwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VBRTFBNDExQTM0MDA0NDdDNEMgLyogVGVzdHNDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJOTNFNjE5M0IxRjkzMUIzQTAwQUYyNDVFIC8qIFRleHRDb2Rl
Yy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4
dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4
dENvZGVjLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9UZXh0Q29kZWMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ1MjhmMGI3ZjhjM2M1NmYyMmExNGQxYzZkYTc4MjkwZTE1MjFlYzcK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4
dENvZGVjLmNwcApAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgVmVjdG9yPGNo
YXI+IGRlY29kZUhleFRlc3RCeXRlcyhjb25zdCBjaGFyKiBpbnB1dCkKK3sKKyAgICBWZWN0b3I8
Y2hhcj4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpbnB1dFtpXTsgKSB7CisgICAg
ICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0W2ldKSkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXN1bHQuYXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShp
bnB1dFtpXSwgaW5wdXRbaSArIDFdKSk7CisgICAgICAgIGkgKz0gMjsKKyAgICAgICAgaWYgKGlu
cHV0W2ldID09ICcgJykKKyAgICAgICAgICAgICsraTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGVzY2FwZU5vblByaW50YWJsZUFTQ0lJQ2hhcmFj
dGVycyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0aWMgY2hhciByZXN1bHRCdWZmZXJb
MTAwXTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgYXV0byBhcHBlbmQgPSBbJmldIChjaGFyIGNo
YXJhY3RlcikgeworICAgICAgICBpZiAoaSA8IHNpemVvZihyZXN1bHRCdWZmZXIpKQorICAgICAg
ICAgICAgcmVzdWx0QnVmZmVyW2krK10gPSBjaGFyYWN0ZXI7CisgICAgfTsKKyAgICBhdXRvIGFw
cGVuZE5pYmJsZSA9IFthcHBlbmRdIChjaGFyIG5pYmJsZSkgeworICAgICAgICBpZiAobmliYmxl
KQorICAgICAgICAgICAgYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KG5pYmJsZSkp
OworICAgIH07CisgICAgYXV0byBhcHBlbmRMYXN0TmliYmxlID0gW2FwcGVuZF0gKGNoYXIgbmli
YmxlKSB7CisgICAgICAgIGFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChuaWJibGUp
KTsKKyAgICB9OworICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBzdHJpbmcuY29kZVBvaW50cygp
KSB7CisgICAgICAgIGlmIChpc0FTQ0lJUHJpbnRhYmxlKGNoYXJhY3RlcikpCisgICAgICAgICAg
ICBhcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhcHBlbmQo
J3snKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDMyIC0gNDsgaTsgaSAtPSA0KQor
ICAgICAgICAgICAgICAgIGFwcGVuZE5pYmJsZShjaGFyYWN0ZXIgPj4gaSk7CisgICAgICAgICAg
ICBhcHBlbmRMYXN0TmliYmxlKGNoYXJhY3Rlcik7CisgICAgICAgICAgICBhcHBlbmQoJ30nKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaSA9PSBzaXplb2YocmVzdWx0QnVmZmVyKSkKKyAg
ICAgICAgcmV0dXJuICIiOworICAgIHJlc3VsdEJ1ZmZlcltpXSA9ICdcMCc7CisgICAgcmV0dXJu
IHJlc3VsdEJ1ZmZlcjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIHRlc3REZWNvZGUoY29uc3Qg
Y2hhciogZW5jb2RpbmdOYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGlu
cHV0cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdEJ1aWxkZXI7CisgICAgYXV0byBjb2Rl
YyA9IG5ld1RleHRDb2RlYyhXZWJDb3JlOjpUZXh0RW5jb2RpbmcgeyBlbmNvZGluZ05hbWUgfSk7
CisgICAgc2l6ZV90IHNpemUgPSBpbnB1dHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gZGVjb2RlSGV4VGVzdEJ5
dGVzKGlucHV0cy5iZWdpbigpW2ldKTsKKyAgICAgICAgYm9vbCBsYXN0ID0gaSA9PSBzaXplIC0g
MTsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoZXNjYXBlTm9uUHJpbnRhYmxlQVNDSUlD
aGFyYWN0ZXJzKGNvZGVjLT5kZWNvZGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSwgbGFz
dCkpKTsKKyAgICB9CisgICAgcmV0dXJuIGVzY2FwZU5vblByaW50YWJsZUFTQ0lJQ2hhcmFjdGVy
cyhyZXN1bHRCdWlsZGVyLnRvU3RyaW5nKCkpOworfQorCitURVNUKFRleHRDb2RlYywgVVRGOCkK
K3sKKyAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiIiB9KSk7CisK
KyAgICBFWFBFQ1RfU1RSRVEoInswfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiMDAiIH0pKTsK
KworICAgIEVYUEVDVF9TVFJFUSgiYSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNjEiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImEiLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIiIsICI2MSIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgiYSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNjEiLCAiIiB9
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJhIiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIiLCAiNjEi
LCAiIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIntCNn0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIs
IHsgIkMyIEI2IiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9IiwgdGVzdERlY29kZSgiVVRG
LTgiLCB7ICJDMiIsICJCNiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0I2fSIsIHRlc3REZWNv
ZGUoIlVURi04IiwgeyAiIiwgIkMyIiwgIiIsICJCNiIsICIiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInh7QjZ9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI3OCBDMiBCNiIgfSkpOworICAgIEVY
UEVDVF9TVFJFUSgie0I2fXgiLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkMyIEI2IDc4IiB9KSk7
CisKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAzfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTIg
OTggODMiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAzfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRTIiLCAiOTgiLCAiODMiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAzfSIsIHRl
c3REZWNvZGUoIlVURi04IiwgeyAiIiwgIkUyIiwgIiIsICI5OCIsICI4MyIgfSkpOworICAgIEVY
UEVDVF9TVFJFUSgiezI2MDN9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiA5OCIsICI4MyIg
fSkpOworICAgIEVYUEVDVF9TVFJFUSgiezI2MDN9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIi
LCAiRTIgOTgiLCAiIiwgIjgzIiwgIiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiezI2MDN9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiIsICI5ODgzIiB9KSk7CisgICAgRVhQRUNUX1NUUkVR
KCJ7MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIiIsICJFMiIsICIiLCAiOTg4MyIsICIi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInh7MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsg
Ijc4IEUyIDk4IDgzIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MjYwM314IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICJFMiA5OCA4MyA3OCIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7MUY0
QTl9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA5RiA5MiBBOSIgfSkpOworICAgIEVYUEVD
VF9TVFJFUSgiezFGNEE5fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAiLCAiOUYiLCAiOTIi
LCAiQTkiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsxRjRBOX0iLCB0ZXN0RGVjb2RlKCJVVEYt
OCIsIHsgIiIsICJGMCIsICIiLCAiOUYiLCAiIiwgIjkyIiwgIiIgLCAiQTkiLCAiIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7MUY0QTl9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMDlGOTIi
LCAiQTkiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInh7MUY0QTl9IiwgdGVzdERlY29kZSgiVVRG
LTgiLCB7ICI3OCBGMCA5RiA5MiBBOSIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiezFGNEE5fXgi
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDlGIDkyIEE5IDc4IiB9KSk7Cit9CisKK1RFU1Qo
VGV4dENvZGVjLCBVVEY4SW52YWxpZFNlcXVlbmNlcykKK3sKKyAgICBFWFBFQ1RfU1RSRVEoIntG
RkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUwIEE1IDNGIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCBBNSIsICIzRiIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTAi
LCAiQTUgM0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfT8iLCB0ZXN0RGVjb2RlKCJV
VEYtOCIsIHsgIkUwIiwgIkE1IiwgIjNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0/
IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCIsICIiLCAiQTUiLCAiIiwgIjNGIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCIsICIi
LCAiQTUiLCAiIiwgIjNGIiwgIiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9PyIsIHRl
c3REZWNvZGUoIlVURi04IiwgeyAiIiwgIkUwIiwgIiIsICJBNSIsICIiLCAiM0YiLCAiIiB9KSk7
CisKKyAgICBFWFBFQ1RfU1RSRVEoImF7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI2
MSBFMCBBNSAzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiYXtGRkZEfT8iLCB0ZXN0RGVjb2Rl
KCJVVEYtOCIsIHsgIjYxIEUwIEE1IiwgIjNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJhe0ZG
RkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNjEgRTAiLCAiQTUgM0YiIH0pKTsKKyAgICBF
WFBFQ1RfU1RSRVEoImF7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICI2MSBFMCIsICJB
NSIsICIzRiIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9e0ZGRkR9PyIsIHRlc3REZWNv
ZGUoIlVURi04IiwgeyAiQzIgQjYgRTAgQTUgM0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntC
Nn17RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMiBCNiBFMCBBNSIsICIzRiIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgie0I2fXtGRkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsg
IkMyIEI2IEUwIiwgIkE1IDNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9e0ZGRkR9PyIs
IHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzIgQjYgRTAiLCAiQTUiLCAiM0YiIH0pKTsKKworICAg
IEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMiIgfSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiA5
OCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICJGMCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICJGMCA5RiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgi
VVRGLTgiLCB7ICJGMCA5RiA5MiIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUyIiwgIjk4IiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7
RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIiwgIjlGIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDlGIiwgIjkyIiB9KSk7
CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIiwg
IjlGOTIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRjAiLCAiOUYiLCAiOTIiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZG
RkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJF
USgie0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCA4MCA4MCIg
fSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGMCA4MCA4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGOCA4
MCA4MCA4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZG
RkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGQyA4MCA4MCA4MCA4MCA4
MCIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJV
VEYtOCIsIHsgIkMxIEJGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZG
RH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUwIDgxIEJGIiB9KSk7CisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYw
IDgwIDgxIEJGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDgwIDgwIDgxIEJGIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDgwIDgwIDgxIEJGIiB9KSk7CisKKyAgICBFWFBF
Q1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTAg
ODIgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIs
IHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgODAgODIgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04Iiwg
eyAiRjggODAgODAgODIgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtG
RkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMgODAgODAg
ODAgODIgODAiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCA5RiBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA4MCA5
RiBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZG
RkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGOCA4MCA4MCA5RiBCRiIgfSkpOworICAgIEVY
UEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGQyA4MCA4MCA4MCA5RiBCRiIgfSkpOworCisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYw
IDgwIEEwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDgwIDgwIEEwIDgwIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDgwIDgwIEEwIDgwIiB9KSk7CisKKyAgICBFWFBF
Q1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04Iiwg
eyAiRjAgOEYgQkYgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZE
fXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjggODAgOEYgQkYgQkYiIH0p
KTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZE
fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMgODAgODAgOEYgQkYgQkYiIH0pKTsKKworICAg
IEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICJGOCA4MCA5MCA4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICJGQyA4MCA4MCA5MCA4MCA4MCIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZG
RH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDg0IDhGIEJG
IEJGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDg0IDhGIEJGIEJGIiB9KSk7
CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNv
ZGUoIlVURi04IiwgeyAiRjQgOTAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZE
fXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkIgQkYg
QkYgQkYgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZE
fXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkQgQkYgQkYgQkYgQkYgQkYi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUo
IlVURi04IiwgeyAiRUQgQTAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZE
fXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRUQgQkYgQkYiIH0pKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNv
ZGUoIlVURi04IiwgeyAiRUQgQTAgQkQgRUQgQjIgQTkiIH0pKTsKKworICAgIEVYUEVDVF9TVFJF
USgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICJGOCA4NCA5MCA4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGQyA4MCA4NCA5
MCA4MCA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9
IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA4RCBBMCA4MCIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJG
MCA4RCBCRiBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA4
RCBBMCBCRCBGMCA4RCBCMiBBOSIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17
RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjgwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjgwIDgwIDgw
IiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0
RGVjb2RlKCJVVEYtOCIsIHsgIjgwIDgwIDgwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7
RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjgw
IDgwIDgwIDgwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17
RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjgwIDgwIDgwIDgwIDgw
IDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjgwIDgwIDgwIDgwIDgwIDgw
IDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRG
LTgiLCB7ICJDMiBCNiA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiezI2MDN9e0ZGRkR9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiA5OCA4MyA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJF
USgiezFGNEE5fXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgOUYgOTIgQTkgODAi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkIgQkYgQkYgQkYgQkYgODAiIH0pKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZE
fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkQgQkYgQkYgQkYgQkYgQkYgODAiIH0pKTsKKwor
ICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGRSIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICJGRSA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRG
LTgiLCB7ICJGRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGRiA4MCIgfSkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323843</attachid>
            <date>2017-10-15 08:16:36 -0700</date>
            <delta_ts>2017-10-15 13:13:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178207-20171015081635.patch</filename>
            <type>text/plain</type>
            <size>38772</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U0OTI1YTVjZTBiYzNl
NWE1MWI4OTgwNWQ4ODFkMDAyOGRiNzUyOS4uZTc3ZWYxMWFmNTg3M2U4ZmZmMDdmMDMyYTkyNDRk
ZTllZmY0NzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEwLTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVVEYtOCBkZWNvZGluZyBwcm9k
dWNlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBieXRlOyBFbmNvZGluZyBzdGFuZGFy
ZCByZXF1aXJlcyBvbmUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHBlciBpbGxlZ2FsIHNlcXVlbmNl
IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDb2RlY1VURjg6OmNyZWF0ZSk6IERlbGV0ZWQuIFVzZSBhIGxhbWJkYSBpbnN0ZWFkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOiBVc2UgYSBsYW1i
ZGEuCisgICAgICAgIChXZWJDb3JlOjpub25BU0NJSVNlcXVlbmNlTGVuZ3RoKTogQ2hhbmdlZCB0
byByZXR1cm4gMCBpbnN0ZWFkIG9mIDIgZm9yIHRoZSByYW5nZSA4MC1DMSBzaW5jZQorICAgICAg
ICBub25lIG9mIHRob3NlIGFyZSB2YWxpZCBzZXF1ZW5jZSBsZWFkaW5nIGNoYXJhY3RlcnMuCisg
ICAgICAgIChXZWJDb3JlOjpkZWNvZGVOb25BU0NJSVNlcXVlbmNlKTogQ2hhbmdlZCB0aGUgbGVu
Z3RoIGFyZ3VtZW50IHRvIGJlIGluL291dCBzbyB0aGUgY2FsbGVyCisgICAgICAgIGtub3dzIGhv
dyBtdWNoIG9mIHRoZSBzZXF1ZW5jZSB3ZSBkZWNvZGVkIGZvciBmYWlsdXJlIGNhc2VzLiBTaW1w
bGlmaWVkIHRoZSBsZW5ndGggMiBzZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
VVRGODo6aGFuZGxlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
VVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlKTogQ2hhbmdlZCB0aGlzIGludG8gYSBwYWlyIG9m
IHBsYWluIGZ1bmN0aW9ucworICAgICAgICByYXRoZXIgdGhhbiB0d28gdGVtcGxhdGUgZnVuY3Rp
b24gc3BlY2lhbGl6YXRpb25zIHNpbmNlIHRoZSB0d28gZnVuY3Rpb25zIGFyZSByYXRoZXIgZGlm
ZmVyZW50LgorICAgICAgICBGb3IgdGhlIG9uZS1ieXRlIHZlcnNpb24sIGdvdCByaWQgb2YgdGhl
IHVudXNlZCBhcmd1bWVudHMuIEZvciB0aGUgdHdvLWJ5dGUgdmVyc2lvbiwgZ290IHJpZAorICAg
ICAgICBvZiB0aGUgaWdub3JlZCByZXR1cm4gdmFsdWUsIHN0b3BwZWQgdXNpbmcgdGhlIGhhbmRs
ZUVycm9yIGZ1bmN0aW9uIHNpbmNlIGVhY2ggZXJyb3IgY2FzZQorICAgICAgICBuZWVkcyB0byBi
ZSBoYW5kbGVkIGRpZmZlcmVudGx5LiBJbiBlYWNoIGVycm9yIGNhc2UgY29uc3VtZSB0aGUgZW50
aXJlIGluY29ycmVjdCBzZXF1ZW5jZQorICAgICAgICBpbnN0ZWFkIG9mIGp1c3Qgb25lIGJ5dGUu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpkZWNvZGUpOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUgY2hhbmdlLCBhbmQgY2hhbmdlZCB0aGUgbm9uLXBhcnRpYWwKKyAgICAgICAgaW5j
b3JyZWN0IHNlcXVlbmNlIHRvIGNvbnN1bWUgdGhlIGVudGlyZSBpbmNvcnJlY3Qgc2VxdWVuY2Ug
aW5zdGVhZCBvZiBqdXN0IG9uZSBieXRlLiBBbHNvCisgICAgICAgIHVzZSBXVEYgcHJlZml4ZXMg
ZXhwbGljaXRseSBzbyB3ZSBkb24ndCAgaGF2ZSB0byBkbyAidXNpbmcgbmFtZXNwYWNlIi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjg6OmVuY29kZSk6IEdvdCByaWQgb2YgdW5uZWVk
ZWQgdHlwZSBwdW5uaW5nLCBhbmQgYWRkZWQgc29tZSBpbmxpbmUKKyAgICAgICAgY2FwYWNpdHkg
dG8gc2F2ZSBvbmUgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiBlbmNvZGluZyBzaG9ydGVyIHN0cmlu
Z3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguaDogVXNlIHByYWdt
YSBvbmNlLiBJbnRpYWxpemUgbV9wYXJ0aWFsU2VxdWVuY2VTaXplIHdoZXJlIGl0CisgICAgICAg
IGlzIGRlZmluZWQgYW5kIGxldCB0aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhlIGNvbnN0cnVjdG9y
LiBVcGRhdGVkIGZvciB0aGUgY2hhbmdlcyBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dEVuY29kaW5nLmg6IEV4cG9ydCBhIGNvbnN0cnVjdG9yIG5vdyB1c2VkIGJ5IGEgdW5p
dCB0ZXN0LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaDog
RXhwb3J0IG5ld1RleHRDb2RlYywgbm93IHVzZWQgYnkgYSB1bml0IHRlc3QuCisKIDIwMTctMTAt
MTQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
YWxsIFdlYiBBbmltYXRpb25zIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjguY3BwCmluZGV4IDUwOGVkZWU5YTUzMjEyN2NjMWI0YzM3MDkwNDRlYTVi
ZDFiYjg3YTcuLjNiN2Y2MWIzYTI2YzViNjdkYzA2NDEwMjQ3M2NiZmQ1MDA2MTQ5ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSwxOCArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZm
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi11c2luZyBu
YW1lc3BhY2UgV1RGOwotdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjb25zdCBpbnQgbm9uQ2hhcmFjdGVyID0gLTE7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxUZXh0Q29kZWM+IFRleHRDb2RlY1VURjg6OmNyZWF0ZShjb25zdCBUZXh0RW5jb2Rpbmcm
LCBjb25zdCB2b2lkKikKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNV
VEY4PigpOwotfQotCiB2b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhF
bmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIC8vIEZyb20gaHR0cHM6Ly9l
bmNvZGluZy5zcGVjLndoYXR3Zy5vcmcuCkBAIC02MSw3ICs1Myw5IEBAIHZvaWQgVGV4dENvZGVj
VVRGODo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiAKIHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoIlVURi04IiwgY3JlYXRlLCAwKTsKKyAg
ICByZWdpc3RyYXIoIlVURi04IiwgW10gKGNvbnN0IFRleHRFbmNvZGluZyYsIGNvbnN0IHZvaWQq
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiB7CisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAgfSwgbnVsbHB0cik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgaW50IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgodWludDhfdCBmaXJzdEJ5dGUpCkBA
IC03NSwxMSArNjksMTEgQEAgc3RhdGljIGlubGluZSBpbnQgbm9uQVNDSUlTZXF1ZW5jZUxlbmd0
aCh1aW50OF90IGZpcnN0Qnl0ZSkKICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKLSAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKLSAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKLSAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKLSAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgMCwgMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKICAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg
MiwgMiwgMiwgMiwgMiwgMiwgMiwKICAgICAgICAgMywgMywgMywgMywgMywgMywgMywgMywgMywg
MywgMywgMywgMywgMywgMywgMywKICAgICAgICAgNCwgNCwgNCwgNCwgNCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMApAQCAtODcsNTUgKzgxLDc2IEBAIHN0YXRpYyBpbmxpbmUgaW50
IG5vbkFTQ0lJU2VxdWVuY2VMZW5ndGgodWludDhfdCBmaXJzdEJ5dGUpCiAgICAgcmV0dXJuIGxl
bmd0aHNbZmlyc3RCeXRlXTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgZGVjb2RlTm9uQVNDSUlT
ZXF1ZW5jZShjb25zdCB1aW50OF90KiBzZXF1ZW5jZSwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGlj
IGlubGluZSBpbnQgZGVjb2RlTm9uQVNDSUlTZXF1ZW5jZShjb25zdCB1aW50OF90KiBzZXF1ZW5j
ZSwgaW50JiBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc0FTQ0lJKHNlcXVlbmNlWzBdKSk7CiAg
ICAgaWYgKGxlbmd0aCA9PSAyKSB7CisgICAgICAgIEFTU0VSVChzZXF1ZW5jZVswXSA+PSAweEMy
KTsKICAgICAgICAgQVNTRVJUKHNlcXVlbmNlWzBdIDw9IDB4REYpOwotICAgICAgICBpZiAoc2Vx
dWVuY2VbMF0gPCAweEMyKQotICAgICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKLSAgICAg
ICAgaWYgKHNlcXVlbmNlWzFdIDwgMHg4MCB8fCBzZXF1ZW5jZVsxXSA+IDB4QkYpCisgICAgICAg
IGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKSB7CisgICAgICAg
ICAgICBsZW5ndGggPSAxOwogICAgICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKKyAgICAg
ICAgfQogICAgICAgICByZXR1cm4gKChzZXF1ZW5jZVswXSA8PCA2KSArIHNlcXVlbmNlWzFdKSAt
IDB4MDAwMDMwODA7CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0gMykgewotICAgICAgICBBU1NF
UlQoc2VxdWVuY2VbMF0gPj0gMHhFMCAmJiBzZXF1ZW5jZVswXSA8PSAweEVGKTsKKyAgICAgICAg
QVNTRVJUKHNlcXVlbmNlWzBdID49IDB4RTApOworICAgICAgICBBU1NFUlQoc2VxdWVuY2VbMF0g
PD0gMHhFRik7CiAgICAgICAgIHN3aXRjaCAoc2VxdWVuY2VbMF0pIHsKICAgICAgICAgY2FzZSAw
eEUwOgotICAgICAgICAgICAgaWYgKHNlcXVlbmNlWzFdIDwgMHhBMCB8fCBzZXF1ZW5jZVsxXSA+
IDB4QkYpCisgICAgICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweEEwIHx8IHNlcXVlbmNlWzFd
ID4gMHhCRikgeworICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5vbkNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIDB4RUQ6Ci0gICAgICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8
IHNlcXVlbmNlWzFdID4gMHg5RikKKyAgICAgICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAg
fHwgc2VxdWVuY2VbMV0gPiAweDlGKSB7CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbm9uQ2hhcmFjdGVyOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoc2VxdWVuY2Vb
MV0gPCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikKKyAgICAgICAgICAgIGlmIChzZXF1ZW5j
ZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKSB7CisgICAgICAgICAgICAgICAgbGVu
Z3RoID0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9uQ2hhcmFjdGVyOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsyXSA8IDB4ODAgfHwgc2VxdWVu
Y2VbMl0gPiAweEJGKQorICAgICAgICBpZiAoc2VxdWVuY2VbMl0gPCAweDgwIHx8IHNlcXVlbmNl
WzJdID4gMHhCRikgeworICAgICAgICAgICAgbGVuZ3RoID0gMjsKICAgICAgICAgICAgIHJldHVy
biBub25DaGFyYWN0ZXI7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuICgoc2VxdWVuY2VbMF0g
PDwgMTIpICsgKHNlcXVlbmNlWzFdIDw8IDYpICsgc2VxdWVuY2VbMl0pIC0gMHgwMDBFMjA4MDsK
ICAgICB9CiAgICAgQVNTRVJUKGxlbmd0aCA9PSA0KTsKLSAgICBBU1NFUlQoc2VxdWVuY2VbMF0g
Pj0gMHhGMCAmJiBzZXF1ZW5jZVswXSA8PSAweEY0KTsKKyAgICBBU1NFUlQoc2VxdWVuY2VbMF0g
Pj0gMHhGMCk7CisgICAgQVNTRVJUKHNlcXVlbmNlWzBdIDw9IDB4RjQpOwogICAgIHN3aXRjaCAo
c2VxdWVuY2VbMF0pIHsKICAgICBjYXNlIDB4RjA6Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8
IDB4OTAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKQorICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAw
eDkwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikgeworICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAg
ICAgICAgICAgIHJldHVybiBub25DaGFyYWN0ZXI7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSAweEY0OgotICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNlcXVl
bmNlWzFdID4gMHg4RikKKyAgICAgICAgaWYgKHNlcXVlbmNlWzFdIDwgMHg4MCB8fCBzZXF1ZW5j
ZVsxXSA+IDB4OEYpIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7CiAgICAgICAgICAgICByZXR1
cm4gbm9uQ2hhcmFjdGVyOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGlmIChzZXF1ZW5jZVsxXSA8IDB4ODAgfHwgc2VxdWVuY2VbMV0gPiAweEJGKQor
ICAgICAgICBpZiAoc2VxdWVuY2VbMV0gPCAweDgwIHx8IHNlcXVlbmNlWzFdID4gMHhCRikgewor
ICAgICAgICAgICAgbGVuZ3RoID0gMTsKICAgICAgICAgICAgIHJldHVybiBub25DaGFyYWN0ZXI7
CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHNlcXVlbmNlWzJdIDwgMHg4MCB8fCBzZXF1ZW5j
ZVsyXSA+IDB4QkYpCisgICAgaWYgKHNlcXVlbmNlWzJdIDwgMHg4MCB8fCBzZXF1ZW5jZVsyXSA+
IDB4QkYpIHsKKyAgICAgICAgbGVuZ3RoID0gMjsKICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3Rl
cjsKLSAgICBpZiAoc2VxdWVuY2VbM10gPCAweDgwIHx8IHNlcXVlbmNlWzNdID4gMHhCRikKKyAg
ICB9CisgICAgaWYgKHNlcXVlbmNlWzNdIDwgMHg4MCB8fCBzZXF1ZW5jZVszXSA+IDB4QkYpIHsK
KyAgICAgICAgbGVuZ3RoID0gMzsKICAgICAgICAgcmV0dXJuIG5vbkNoYXJhY3RlcjsKKyAgICB9
CiAgICAgcmV0dXJuICgoc2VxdWVuY2VbMF0gPDwgMTgpICsgKHNlcXVlbmNlWzFdIDw8IDEyKSAr
IChzZXF1ZW5jZVsyXSA8PCA2KSArIHNlcXVlbmNlWzNdKSAtIDB4MDNDODIwODA7CiB9CiAKQEAg
LTE1OCwxOCArMTczLDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4Ojpjb25zdW1lUGFydGlhbFNlcXVl
bmNlQnl0ZSgpCiAgICAgbWVtbW92ZShtX3BhcnRpYWxTZXF1ZW5jZSwgbV9wYXJ0aWFsU2VxdWVu
Y2UgKyAxLCBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpOwogfQogCi12b2lkIFRleHRDb2RlY1VURjg6
OmhhbmRsZUVycm9yKFVDaGFyKiYgZGVzdGluYXRpb24sIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wm
IHNhd0Vycm9yKQotewotICAgIHNhd0Vycm9yID0gdHJ1ZTsKLSAgICBpZiAoc3RvcE9uRXJyb3Ip
Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBFYWNoIGVycm9yIGdlbmVyYXRlcyBhIHJlcGxhY2Vt
ZW50IGNoYXJhY3RlciBhbmQgY29uc3VtZXMgb25lIGJ5dGUuCi0gICAgKmRlc3RpbmF0aW9uKysg
PSByZXBsYWNlbWVudENoYXJhY3RlcjsKLSAgICBjb25zdW1lUGFydGlhbFNlcXVlbmNlQnl0ZSgp
OwotfQotCi10ZW1wbGF0ZSA8PgotYm9vbCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2Vx
dWVuY2U8TENoYXI+KExDaGFyKiYgZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4X3QqJiBzb3VyY2Us
IGNvbnN0IHVpbnQ4X3QqIGVuZCwgYm9vbCBmbHVzaCwgYm9vbCwgYm9vbCYpCitib29sIFRleHRD
b2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5jZShMQ2hhciomIGRlc3RpbmF0aW9uLCBjb25z
dCB1aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBlbmQsIGJvb2wgZmx1c2gpCiB7CiAg
ICAgQVNTRVJUKG1fcGFydGlhbFNlcXVlbmNlU2l6ZSk7CiAgICAgZG8gewpAQCAtMjAxLDcgKzIw
NSw3IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlPExDaGFyPihM
Q2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAgICAgICBtX3BhcnRpYWxTZXF1
ZW5jZVNpemUgPSBjb3VudDsKICAgICAgICAgfQogICAgICAgICBpbnQgY2hhcmFjdGVyID0gZGVj
b2RlTm9uQVNDSUlTZXF1ZW5jZShtX3BhcnRpYWxTZXF1ZW5jZSwgY291bnQpOwotICAgICAgICBp
ZiAoKGNoYXJhY3RlciA9PSBub25DaGFyYWN0ZXIpIHx8IChjaGFyYWN0ZXIgPiAweGZmKSkKKyAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSBub25DaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID4gMHhGRikK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIG1fcGFydGlhbFNlcXVlbmNlU2l6
ZSAtPSBjb3VudDsKQEAgLTIxMSw4ICsyMTUsNyBAQCBib29sIFRleHRDb2RlY1VURjg6OmhhbmRs
ZVBhcnRpYWxTZXF1ZW5jZTxMQ2hhcj4oTENoYXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPD4KLWJvb2wgVGV4dENvZGVjVVRGODo6
aGFuZGxlUGFydGlhbFNlcXVlbmNlPFVDaGFyPihVQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1
aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBlbmQsIGJvb2wgZmx1c2gsIGJvb2wgc3Rv
cE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKQordm9pZCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0
aWFsU2VxdWVuY2UoVUNoYXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdComIHNvdXJjZSwg
Y29uc3QgdWludDhfdCogZW5kLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBz
YXdFcnJvcikKIHsKICAgICBBU1NFUlQobV9wYXJ0aWFsU2VxdWVuY2VTaXplKTsKICAgICBkbyB7
CkBAIC0yMjMsOSArMjI2LDExIEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNl
cXVlbmNlPFVDaGFyPihVQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50CiAgICAgICAgIH0K
ICAgICAgICAgaW50IGNvdW50ID0gbm9uQVNDSUlTZXF1ZW5jZUxlbmd0aChtX3BhcnRpYWxTZXF1
ZW5jZVswXSk7CiAgICAgICAgIGlmICghY291bnQpIHsKLSAgICAgICAgICAgIGhhbmRsZUVycm9y
KGRlc3RpbmF0aW9uLCBzdG9wT25FcnJvciwgc2F3RXJyb3IpOworICAgICAgICAgICAgc2F3RXJy
b3IgPSB0cnVlOwogICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAqZGVz
dGluYXRpb24rKyA9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICAgICAgY29uc3VtZVBh
cnRpYWxTZXF1ZW5jZUJ5dGUoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChjb3VudCA+IG1fcGFydGlhbFNlcXVlbmNlU2l6ZSkgewpAQCAtMjM1LDEyICsy
NDAsMTUgQEAgYm9vbCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVuY2U8VUNoYXI+
KFVDaGFyKiYgZGVzdGluYXRpb24sIGNvbnN0IHVpbnQKICAgICAgICAgICAgICAgICAgICAgLy8g
YWRkIGl0IHRvIHRoZSBleGlzdGluZyBwYXJ0aWFsIHNlcXVlbmNlLgogICAgICAgICAgICAgICAg
ICAgICBtZW1jcHkobV9wYXJ0aWFsU2VxdWVuY2UgKyBtX3BhcnRpYWxTZXF1ZW5jZVNpemUsIHNv
dXJjZSwgZW5kIC0gc291cmNlKTsKICAgICAgICAgICAgICAgICAgICAgbV9wYXJ0aWFsU2VxdWVu
Y2VTaXplICs9IGVuZCAtIHNvdXJjZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIC8vIEFuIGluY29tcGxldGUgcGFydGlhbCBzZXF1ZW5jZSBhdCB0aGUgZW5kIGlz
IGFuIGVycm9yLgotICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGRlc3RpbmF0aW9uLCBzdG9w
T25FcnJvciwgc2F3RXJyb3IpOworICAgICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoc3RvcE9uRXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICpk
ZXN0aW5hdGlvbisrID0gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgICAgICAgICAgICAgbV9w
YXJ0aWFsU2VxdWVuY2VTaXplID0gMDsKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBlbmQ7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtZW1j
cHkobV9wYXJ0aWFsU2VxdWVuY2UgKyBtX3BhcnRpYWxTZXF1ZW5jZVNpemUsIHNvdXJjZSwgY291
bnQgLSBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpOwpAQCAtMjQ5LDE3ICsyNTcsMTggQEAgYm9vbCBU
ZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVuY2U8VUNoYXI+KFVDaGFyKiYgZGVzdGlu
YXRpb24sIGNvbnN0IHVpbnQKICAgICAgICAgfQogICAgICAgICBpbnQgY2hhcmFjdGVyID0gZGVj
b2RlTm9uQVNDSUlTZXF1ZW5jZShtX3BhcnRpYWxTZXF1ZW5jZSwgY291bnQpOwogICAgICAgICBp
ZiAoY2hhcmFjdGVyID09IG5vbkNoYXJhY3RlcikgewotICAgICAgICAgICAgaGFuZGxlRXJyb3Io
ZGVzdGluYXRpb24sIHN0b3BPbkVycm9yLCBzYXdFcnJvcik7CisgICAgICAgICAgICBzYXdFcnJv
ciA9IHRydWU7CiAgICAgICAgICAgICBpZiAoc3RvcE9uRXJyb3IpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICpkZXN0
aW5hdGlvbisrID0gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgICAgICAgICBtX3BhcnRpYWxT
ZXF1ZW5jZVNpemUgLT0gY291bnQ7CisgICAgICAgICAgICBtZW1tb3ZlKG1fcGFydGlhbFNlcXVl
bmNlLCBtX3BhcnRpYWxTZXF1ZW5jZSArIGNvdW50LCBtX3BhcnRpYWxTZXF1ZW5jZVNpemUpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBtX3BhcnRpYWxTZXF1
ZW5jZVNpemUgLT0gY291bnQ7CiAgICAgICAgIGRlc3RpbmF0aW9uID0gYXBwZW5kQ2hhcmFjdGVy
KGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXIpOwogICAgIH0gd2hpbGUgKG1fcGFydGlhbFNlcXVlbmNl
U2l6ZSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBTdHJpbmcgVGV4dENvZGVjVVRG
ODo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBi
b29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKQEAgLTI3MSw3ICsyODAsNyBAQCBTdHJp
bmcgVGV4dENvZGVjVVRGODo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
LCBib29sIGZsdXNoLCBib29sCiAKICAgICBjb25zdCB1aW50OF90KiBzb3VyY2UgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyk7CiAgICAgY29uc3QgdWludDhfdCogZW5k
ID0gc291cmNlICsgbGVuZ3RoOwotICAgIGNvbnN0IHVpbnQ4X3QqIGFsaWduZWRFbmQgPSBhbGln
blRvTWFjaGluZVdvcmQoZW5kKTsKKyAgICBjb25zdCB1aW50OF90KiBhbGlnbmVkRW5kID0gV1RG
OjphbGlnblRvTWFjaGluZVdvcmQoZW5kKTsKICAgICBMQ2hhciogZGVzdGluYXRpb24gPSBidWZm
ZXIuY2hhcmFjdGVycygpOwogCiAgICAgZG8gewpAQCAtMjgxLDcgKzI5MCw3IEBAIFN0cmluZyBU
ZXh0Q29kZWNVVEY4OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJv
b2wgZmx1c2gsIGJvb2wKICAgICAgICAgICAgIC8vIGluIHNvbWUgY29tcGlsZXJzLgogICAgICAg
ICAgICAgTENoYXIqIGRlc3RpbmF0aW9uRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNlID0gZGVzdGlu
YXRpb247CiAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBzb3VyY2VGb3JIYW5kbGVQYXJ0aWFs
U2VxdWVuY2UgPSBzb3VyY2U7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlUGFydGlhbFNlcXVlbmNl
KGRlc3RpbmF0aW9uRm9ySGFuZGxlUGFydGlhbFNlcXVlbmNlLCBzb3VyY2VGb3JIYW5kbGVQYXJ0
aWFsU2VxdWVuY2UsIGVuZCwgZmx1c2gsIHN0b3BPbkVycm9yLCBzYXdFcnJvcikpIHsKKyAgICAg
ICAgICAgIGlmIChoYW5kbGVQYXJ0aWFsU2VxdWVuY2UoZGVzdGluYXRpb25Gb3JIYW5kbGVQYXJ0
aWFsU2VxdWVuY2UsIHNvdXJjZUZvckhhbmRsZVBhcnRpYWxTZXF1ZW5jZSwgZW5kLCBmbHVzaCkp
IHsKICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2VGb3JIYW5kbGVQYXJ0aWFsU2VxdWVu
Y2U7CiAgICAgICAgICAgICAgICAgZ290byB1cENvbnZlcnRUbzE2Qml0OwogICAgICAgICAgICAg
fQpAQCAtMjk0LDE0ICszMDMsMTQgQEAgU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29kZShjb25z
dCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbAogICAgICAgICB3
aGlsZSAoc291cmNlIDwgZW5kKSB7CiAgICAgICAgICAgICBpZiAoaXNBU0NJSSgqc291cmNlKSkg
ewogICAgICAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgQVNDSUkuIE1vc3QgVVRGLTggdGV4
dCB3aWxsIGJlIEFTQ0lJLgotICAgICAgICAgICAgICAgIGlmIChpc0FsaWduZWRUb01hY2hpbmVX
b3JkKHNvdXJjZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoV1RGOjppc0FsaWduZWRUb01hY2hp
bmVXb3JkKHNvdXJjZSkpIHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGFs
aWduZWRFbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVXb3JkIGNodW5rID0g
KnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IE1hY2hpbmVXb3JkKj4oc291cmNlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghaXNBbGxBU0NJSTxMQ2hhcj4oY2h1bmspKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBjaHVuayA9ICpyZWludGVycHJldF9jYXN0X3B0cjxjb25z
dCBXVEY6Ok1hY2hpbmVXb3JkKj4oc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghV1RGOjppc0FsbEFTQ0lJPExDaGFyPihjaHVuaykpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5QVNDSUlNYWNoaW5lV29y
ZChkZXN0aW5hdGlvbiwgc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSAr
PSBzaXplb2YoTWFjaGluZVdvcmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b24gKz0gc2l6ZW9mKE1hY2hpbmVXb3JkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJj
ZSArPSBzaXplb2YoV1RGOjpNYWNoaW5lV29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0aW5hdGlvbiArPSBzaXplb2YoV1RGOjpNYWNoaW5lV29yZCk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBlbmQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTMzMCwxMCArMzM5LDEwIEBAIFN0cmluZyBUZXh0Q29k
ZWNVVEY4OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1
c2gsIGJvb2wKICAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgaWYgKHN0b3BPbkVycm9yKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPiAweGZmKQorICAgICAgICAgICAg
aWYgKGNoYXJhY3RlciA+IDB4RkYpCiAgICAgICAgICAgICAgICAgZ290byB1cENvbnZlcnRUbzE2
Qml0OwogCiAgICAgICAgICAgICBzb3VyY2UgKz0gY291bnQ7CkBAIC0zNzEsMTQgKzM4MCwxNCBA
QCB1cENvbnZlcnRUbzE2Qml0OgogICAgICAgICB3aGlsZSAoc291cmNlIDwgZW5kKSB7CiAgICAg
ICAgICAgICBpZiAoaXNBU0NJSSgqc291cmNlKSkgewogICAgICAgICAgICAgICAgIC8vIEZhc3Qg
cGF0aCBmb3IgQVNDSUkuIE1vc3QgVVRGLTggdGV4dCB3aWxsIGJlIEFTQ0lJLgotICAgICAgICAg
ICAgICAgIGlmIChpc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoV1RGOjppc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGFsaWduZWRFbmQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE1hY2hpbmVXb3JkIGNodW5rID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0
IE1hY2hpbmVXb3JkKj4oc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNB
bGxBU0NJSTxMQ2hhcj4oY2h1bmspKQorICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBjaHVu
ayA9ICpyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBXVEY6Ok1hY2hpbmVXb3JkKj4oc291cmNl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghV1RGOjppc0FsbEFTQ0lJPExDaGFyPihj
aHVuaykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3B5QVNDSUlNYWNoaW5lV29yZChkZXN0aW5hdGlvbjE2LCBzb3VyY2UpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNpemVvZihNYWNoaW5lV29yZCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjE2ICs9IHNpemVvZihNYWNoaW5lV29y
ZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc2l6ZW9mKFdURjo6TWFjaGlu
ZVdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24xNiArPSBzaXplb2Yo
V1RGOjpNYWNoaW5lV29yZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgaWYgKHNvdXJjZSA9PSBlbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTQwNyw5ICs0MTYsOCBAQCB1cENvbnZlcnRUbzE2Qml0OgogICAgICAgICAgICAgICAgIHNh
d0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoc3RvcE9uRXJyb3IpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIC8vIEVhY2ggZXJyb3IgZ2VuZXJh
dGVzIGEgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGFuZCBjb25zdW1lcyBvbmUgYnl0ZS4KICAgICAg
ICAgICAgICAgICAqZGVzdGluYXRpb24xNisrID0gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7Ci0gICAg
ICAgICAgICAgICAgKytzb3VyY2U7CisgICAgICAgICAgICAgICAgc291cmNlICs9IGNvdW50ID8g
Y291bnQgOiAxOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgc291cmNlICs9IGNvdW50OwpAQCAtNDI5LDE3ICs0MzcsMTUgQEAgQ1N0cmluZyBU
ZXh0Q29kZWNVVEY4OjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5n
dGgsIFVuZW5jb2RhYmwKICAgICAvLyBOb24tQk1QIGNoYXJhY3RlcnMgdGFrZSB0d28gVVRGLTE2
IGNvZGUgdW5pdHMgYW5kIGNhbiB0YWtlIHVwIHRvIDQgYnl0ZXMgKDJ4KS4KICAgICBpZiAobGVu
Z3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIDMpCiAgICAgICAgIENS
QVNIKCk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzKGxlbmd0aCAqIDMpOwogCi0gICAgc2l6
ZV90IGkgPSAwOworICAgIFZlY3RvcjxjaGFyLCAzMDAwPiBieXRlcyhsZW5ndGggKiAzKTsKICAg
ICBzaXplX3QgYnl0ZXNXcml0dGVuID0gMDsKLSAgICB3aGlsZSAoaSA8IGxlbmd0aCkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKICAgICAgICAgVUNoYXIzMiBjaGFy
YWN0ZXI7CiAgICAgICAgIFUxNl9ORVhUKGNoYXJhY3RlcnMsIGksIGxlbmd0aCwgY2hhcmFjdGVy
KTsKICAgICAgICAgVThfQVBQRU5EX1VOU0FGRShieXRlcy5kYXRhKCksIGJ5dGVzV3JpdHRlbiwg
Y2hhcmFjdGVyKTsKICAgICB9Ci0KLSAgICByZXR1cm4gQ1N0cmluZyhyZWludGVycHJldF9jYXN0
PGNoYXIqPihieXRlcy5kYXRhKCkpLCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBDU3RyaW5n
IHsgYnl0ZXMuZGF0YSgpLCBieXRlc1dyaXR0ZW4gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
VEY4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguaAppbmRl
eCA1OTBmZDVjMGQ1ZTM1Y2Y1Njg1MGJkZDI3ZTIzN2M3MjEzOWJhN2I5Li4yMDgxM2MyZmVhNTkw
MjgxYWY0MTU5NTQ4MzhiMGM5Y2JkZDU3YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjguaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIFRleHRDb2RlY1VURjhfaAotI2RlZmluZSBUZXh0Q29kZWNVVEY4X2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiCiAKQEAgLTMyLDEyICszMSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dENvZGVjVVRGOCA6IHB1YmxpYyBUZXh0
Q29kZWMgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBj
cmVhdGUoY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3Qgdm9pZCopOwotICAgIFRleHRDb2RlY1VU
RjgoKQotICAgICAgICA6IG1fcGFydGlhbFNlcXVlbmNlU2l6ZSgwKQotICAgIHsKLSAgICB9Ci0K
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0
cmFyKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIp
OwogCkBAIC00NSwxNiArMzgsMTQgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0
IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29s
JiBzYXdFcnJvcikgb3ZlcnJpZGU7CiAgICAgQ1N0cmluZyBlbmNvZGUoY29uc3QgVUNoYXIqLCBz
aXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZUhhbmRsaW5nKSBvdmVycmlkZTsKIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBib29sIGhhbmRsZVBhcnRpYWxTZXF1ZW5jZShD
aGFyVHlwZSomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50
OF90KiBlbmQsIGJvb2wgZmx1c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKTsK
LSAgICB2b2lkIGhhbmRsZUVycm9yKFVDaGFyKiYgZGVzdGluYXRpb24sIGJvb2wgc3RvcE9uRXJy
b3IsIGJvb2wmIHNhd0Vycm9yKTsKKyAgICBib29sIGhhbmRsZVBhcnRpYWxTZXF1ZW5jZShMQ2hh
ciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiYgc291cmNlLCBjb25zdCB1aW50OF90KiBl
bmQsIGJvb2wgZmx1c2gpOworICAgIHZvaWQgaGFuZGxlUGFydGlhbFNlcXVlbmNlKFVDaGFyKiYg
ZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4X3QqJiBzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGVuZCwg
Ym9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpOwogICAgIHZvaWQg
Y29uc3VtZVBhcnRpYWxTZXF1ZW5jZUJ5dGUoKTsKIAotICAgIGludCBtX3BhcnRpYWxTZXF1ZW5j
ZVNpemU7CisgICAgaW50IG1fcGFydGlhbFNlcXVlbmNlU2l6ZSB7IDAgfTsKICAgICB1aW50OF90
IG1fcGFydGlhbFNlcXVlbmNlW1U4X01BWF9MRU5HVEhdOwogICAgIAogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVGV4dENvZGVjVVRGOF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCBhMzQ5YzM4MjhkN2JhOGY3YTFl
NDM4ODRlNjE0ZDg0NmEyODY0N2VkLi4yMDRkNDc4NWM1YzgyZTM0Njg5Njk5NGIxMmQxMWRkNTgx
ODE3YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgK
QEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dEVuY29kaW5n
IHsKIHB1YmxpYzoKICAgICBUZXh0RW5jb2RpbmcoKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dEVuY29k
aW5nKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFRleHRFbmNvZGluZyhj
b25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdS
ZWdpc3RyeS5oCmluZGV4IDdjYTUyZTUzODhkMGVlODI1MjNlOWIwZGQ0YTYwMTBlMGVmNmM1OTEu
LmJjYzRiODc1NjdhY2UzM2EwMjM1MDQxMjc1ZjhlOWI4NjdlNWY2ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmgKQEAgLTM1
LDcgKzM1LDcgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogCiAvLyBVc2UgVGV4dFJlc291cmNlRGVj
b2Rlcjo6ZGVjb2RlIHRvIGRlY29kZSByZXNvdXJjZXMsIHNpbmNlIGl0IGhhbmRsZXMgQk9Ncy4K
IC8vIFVzZSBUZXh0RW5jb2Rpbmc6OmVuY29kZSB0byBlbmNvZGUsIHNpbmNlIGl0IHRha2VzIGNh
cmUgb2Ygbm9ybWFsaXphdGlvbi4KLXN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRD
b2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmKTsKIAogLy8gT25s
eSBUZXh0RW5jb2Rpbmcgc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBkaXJlY3Rs
eS4KIGNvbnN0IGNoYXIqIGF0b21pY0Nhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUoY29uc3QgY2hh
ciogYWxpYXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDcyYzc2MTIyYjA0ZDgyNWM2MTlmM2EzOWY1YjZiZTE1NDgyMzUyODguLmFlMGU4MmU3
MDgyMDRlMWM4YWFiMWFiMzJiOTM5OTRiYzM1YWJiMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMC0xNCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVVRGLTggZGVjb2Rpbmcg
cHJvZHVjZXMgb25lIHJlcGxhY2VtZW50IGNoYXJhY3RlciBwZXIgYnl0ZTsgRW5jb2Rpbmcgc3Rh
bmRhcmQgcmVxdWlyZXMgb25lIHJlcGxhY2VtZW50IGNoYXJhY3RlciBwZXIgaWxsZWdhbCBzZXF1
ZW5jZSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzgyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCB0ZXN0LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9U
ZXh0Q29kZWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY29kZUhleFRl
c3RCeXRlcyk6IERlY29kZXMgYSBzdHJpbmcgc28gd2UgY2FuIHdyaXRlIHJlYWRhYmxlIHRlc3Rz
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXNjYXBlTm9uUHJpbnRhYmxlQVNDSUlDaGFyYWN0
ZXJzKTogRW5jb2RlcyBhIHN0cmluZyBzbyB3ZSBjYW4gd3JpdGUgcmVhZGFibGUgdGVzdHMuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogQWRkZWQgc29tZSBVVEYtOCB0ZXN0cyBhbmQg
VVRGLTggaW52YWxpZCBzZXF1ZW5jZXMgdGVzdHMuCisgICAgICAgIFdvdWxkIGJlIHNtYXJ0IHRv
IGFkZCBtb3JlIHRlc3RzIGZvciBvdGhlciBjYXNlcywgZXhlcmNpc2luZyB0aGUgZmFzdCBBU0NJ
SSBsb29wIGZvciBleGFtcGxlLCBhbmQKKyAgICAgICAgb3RoZXIgZW5jb2RpbmdzLgorCiAyMDE3
LTEwLTE0ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV0gSkhCdWlsZCBidWlsZCBkaXJlY3RvcnkgRGVwZW5kZW5jaWVzV1BFL0J1aWxk
IGlzIG5vdCByZW1vdmVkIGJ5IHVwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGQ1ZjA1NzE1YjI0MWVhOGZhY2VlMDAzZWU2M2QyYzc1OTY4YjM5MjMu
LjdhOTc3OTdhZTRjNzhmNDFlZGUzOTkxMGI2NmJlZjMyYzk0ODk5OTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01MzAsNiArNTMwLDcgQEAKIAkJOTNBRjRFRDExNTA2RjEzMDAwN0ZENTdF
IC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2Yt
aW1hZ2VzLmh0bWwgKi87IH07CiAJCTkzQ0ZBODY3MUNFQjlFMzgwMDA1NjVBOCAvKiBhdXRvZm9j
dXNlZC10ZXh0LWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNDRkE4NjYxQ0VCOURFMTAwMDU2NUE4IC8qIGF1dG9mb2N1c2Vk
LXRleHQtaW5wdXQuaHRtbCAqLzsgfTsKIAkJOTNFMkQyNzYxRUQ3RDUzMjAwRkE3NkY2IC8qIG9m
ZnNjcmVlbi1pZnJhbWUtb2YtbWVkaWEtZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyRDI3NTFFRDdENTE3MDBGQTc2
RjYgLyogb2Zmc2NyZWVuLWlmcmFtZS1vZi1tZWRpYS1kb2N1bWVudC5odG1sICovOyB9OworCQk5
M0U2MTkzQjFGOTMxQjNBMDBBRjI0NUUgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAv
KiBUZXh0Q29kZWMuY3BwICovOyB9OwogCQk5M0YxREIzNDE0REEyMDg3MDAyNEMzNjIgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxREIzMzE0REEyMDg3MDAyNEMzNjIgLyog
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5jcHAgKi87IH07CiAJCTkzRjFE
QjU3MTREQjFCODQwMDI0QzM2MiAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWls
c19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGMURCNTYxNERCMUI4NDAwMjRDMzYyIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZhaWxzX0J1bmRsZS5jcHAgKi87IH07CiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAv
KiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M4M0UwMzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIg
Ki87IH07CkBAIC0xNDc2LDYgKzE0NzcsNyBAQAogCQk5MzZGNzI3RjFDRDdEOUQwMDA2OEEwRkIg
LyogbGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gImxhcmdlLXZpZGVvLXdpdGgtYXVk
aW8ubXA0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5QkE5MTYxNDEwMzQxMjAw
MUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOUJGRTM5MThFNTU0ODkwMDg4MzI3NSAvKiBTdHJpbmdU
cnVuY2F0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdHJp
bmdUcnVuY2F0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQTI1ODk4MUY5
MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29kZWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENv
ZGVjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNDI3QTgxODBEOUIwNzAw
Q0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0E0MjdBQTE4MERB
MjY0MDBDRDI0RDcgLyogUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTQyN0FDMTgwREE2
MEYwMENEMjRENyAvKiBNb3ZlT25seS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3ZlT25seS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1Miw2ICsyMTU0LDcgQEAKIAkJCQlBMTc5OTE4
QTFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVyVGVzdC5oICovLAogCQkJCUVDQTY4MENE
MUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCiAJCQkJQ0U0RDVERTUx
RjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovLAorCQkJCTkzQTI1
ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29kZWMuY3BwICovLAogCQkJCUNEQzJDNzE0MTc5
NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQk3QUQzRkU4RDFENzVGQjhE
MDBCMTY5QTQgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwICovLAogCQkJCTQ0MEExRDM4MTRB
MDEwM0EwMDhBNjZGMiAvKiBVUkwuY3BwICovLApAQCAtMzQ1Myw2ICszNDU2LDcgQEAKIAkJCQlB
MTRGQzU5MDFCOEFFMzZGMDBEMTA3RUIgLyogVGVzdFByb3RvY29sLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQUUxQTQxMUEzNDAwNDQ3QzRDIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRUZGMDZENDFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmll
dy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzRTYxOTNCMUY5MzFCM0EwMEFGMjQ1RSAvKiBUZXh0
Q29kZWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UzNTI0RjkxQjE0NDFDNDAwMjhBN0M1IC8q
IFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VERDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VEMzFBNDExQTdFMDA0NDdDNEMgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1RleHRDb2RlYy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4dENv
ZGVjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNkNzYwMjdjODc0YmFkZWY5OTRkM2NjMTM3MGZjNWViNzdi
ZTJiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1RleHRDb2RlYy5jcHAKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dEVuY29kaW5nUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gRXhwZWN0cyBo
ZXggYnl0ZXMgd2l0aCBvcHRpb25hbCBzcGFjZXMgYmV0d2VlbiB0aGVtLgorLy8gUmV0dXJucyBh
biBlbXB0eSB2ZWN0b3IgaWYgaXQgZW5jb3VudGVycyBub24taGV4LWRpZ2l0IGNoYXJhY3RlcnMu
CitzdGF0aWMgVmVjdG9yPGNoYXI+IGRlY29kZUhleFRlc3RCeXRlcyhjb25zdCBjaGFyKiBpbnB1
dCkKK3sKKyAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
bnB1dFtpXTsgKSB7CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0W2ldKSkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGlucHV0
W2kgKyAxXSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXN1bHQuYXBwZW5k
KHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpXSwgaW5wdXRbaSArIDFdKSk7CisgICAgICAgIGkgKz0g
MjsKKyAgICAgICAgaWYgKGlucHV0W2ldID09ICcgJykKKyAgICAgICAgICAgICsraTsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gVGhlIHdvcmQgImVzY2FwZSIgaGVyZSBqdXN0
IG1lYW5zIGEgZm9ybWF0IGVhc3kgdG8gcmVhZCBpbiB0ZXN0IHJlc3VsdHMuCisvLyBJdCBkb2Vz
bid0IGhhdmUgdG8gYmUgYSBmb3JtYXQgc3VpdGFibGUgZm9yIG90aGVyIHVzZXJzIG9yIGV2ZW4g
b25lCisvLyB0aGF0IGlzIGNvbXBsZXRlbHkgdW5hbWJpZ3VvdXMuCitzdGF0aWMgY29uc3QgY2hh
ciogZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFyYWN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nKQor
eworICAgIHN0YXRpYyBjaGFyIHJlc3VsdEJ1ZmZlclsxMDBdOworICAgIHNpemVfdCBpID0gMDsK
KyAgICBhdXRvIGFwcGVuZCA9IFsmaV0gKGNoYXIgY2hhcmFjdGVyKSB7CisgICAgICAgIGlmIChp
IDwgc2l6ZW9mKHJlc3VsdEJ1ZmZlcikpCisgICAgICAgICAgICByZXN1bHRCdWZmZXJbaSsrXSA9
IGNoYXJhY3RlcjsKKyAgICB9OworICAgIGF1dG8gYXBwZW5kTmliYmxlID0gW2FwcGVuZF0gKGNo
YXIgbmliYmxlKSB7CisgICAgICAgIGlmIChuaWJibGUpCisgICAgICAgICAgICBhcHBlbmQobG93
ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQobmliYmxlKSk7CisgICAgfTsKKyAgICBhdXRvIGFwcGVu
ZExhc3ROaWJibGUgPSBbYXBwZW5kXSAoY2hhciBuaWJibGUpIHsKKyAgICAgICAgYXBwZW5kKGxv
d2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KG5pYmJsZSkpOworICAgIH07CisgICAgZm9yIChhdXRv
IGNoYXJhY3RlciA6IHN0cmluZy5jb2RlUG9pbnRzKCkpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlQ
cmludGFibGUoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIGFwcGVuZChjaGFyYWN0ZXIpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFwcGVuZCgneycpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMzIgLSA0OyBpOyBpIC09IDQpCisgICAgICAgICAgICAgICAgYXBwZW5kTmli
YmxlKGNoYXJhY3RlciA+PiBpKTsKKyAgICAgICAgICAgIGFwcGVuZExhc3ROaWJibGUoY2hhcmFj
dGVyKTsKKyAgICAgICAgICAgIGFwcGVuZCgnfScpOworICAgICAgICB9CisgICAgfQorICAgIGlm
IChpID09IHNpemVvZihyZXN1bHRCdWZmZXIpKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmVz
dWx0QnVmZmVyW2ldID0gJ1wwJzsKKyAgICByZXR1cm4gcmVzdWx0QnVmZmVyOworfQorCitzdGF0
aWMgY29uc3QgY2hhciogdGVzdERlY29kZShjb25zdCBjaGFyKiBlbmNvZGluZ05hbWUsIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaW5wdXRzKQoreworICAgIFN0cmluZ0J1aWxk
ZXIgcmVzdWx0QnVpbGRlcjsKKyAgICBhdXRvIGNvZGVjID0gbmV3VGV4dENvZGVjKFdlYkNvcmU6
OlRleHRFbmNvZGluZyB7IGVuY29kaW5nTmFtZSB9KTsKKyAgICBzaXplX3Qgc2l6ZSA9IGlucHV0
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgYXV0byB2ZWN0b3IgPSBkZWNvZGVIZXhUZXN0Qnl0ZXMoaW5wdXRzLmJlZ2luKClbaV0pOwor
ICAgICAgICBib29sIGxhc3QgPSBpID09IHNpemUgLSAxOworICAgICAgICByZXN1bHRCdWlsZGVy
LmFwcGVuZChlc2NhcGVOb25BU0NJSVByaW50YWJsZUNoYXJhY3RlcnMoY29kZWMtPmRlY29kZSh2
ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpLCBsYXN0KSkpOworICAgIH0KKyAgICByZXR1cm4g
ZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFyYWN0ZXJzKHJlc3VsdEJ1aWxkZXIudG9TdHJpbmco
KSk7Cit9CisKK1RFU1QoVGV4dENvZGVjLCBVVEY4KQoreworICAgIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICIiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgiezB9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICIwMCIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJhIiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICI2MSIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiYSIsIHRl
c3REZWNvZGUoIlVURi04IiwgeyAiIiwgIjYxIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJhIiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICI2MSIsICIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImEi
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIiIsICI2MSIsICIiIH0pKTsKKworICAgIEVYUEVDVF9T
VFJFUSgie0I2fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzIgQjYiIH0pKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIntCNn0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkMyIiwgIkI2IiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7QjZ9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIiLCAiQzIiLCAi
IiwgIkI2IiwgIiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgieHtCNn0iLCB0ZXN0RGVjb2RlKCJV
VEYtOCIsIHsgIjc4IEMyIEI2IiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9eCIsIHRlc3RE
ZWNvZGUoIlVURi04IiwgeyAiQzIgQjYgNzgiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgiezI2
MDN9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiA5OCA4MyIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgiezI2MDN9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMiIsICI5OCIsICI4MyIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgiezI2MDN9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIiLCAi
RTIiLCAiIiwgIjk4IiwgIjgzIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MjYwM30iLCB0ZXN0
RGVjb2RlKCJVVEYtOCIsIHsgIkUyIDk4IiwgIjgzIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7
MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIiIsICJFMiA5OCIsICIiLCAiODMiLCAiIiB9
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MjYwM30iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUy
IiwgIjk4ODMiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsyNjAzfSIsIHRlc3REZWNvZGUoIlVU
Ri04IiwgeyAiIiwgIkUyIiwgIiIsICI5ODgzIiwgIiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
eHsyNjAzfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNzggRTIgOTggODMiIH0pKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInsyNjAzfXgiLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUyIDk4IDgzIDc4
IiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoInsxRjRBOX0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIs
IHsgIkYwIDlGIDkyIEE5IiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MUY0QTl9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGMCIsICI5RiIsICI5MiIsICJBOSIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgiezFGNEE5fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiIiwgIkYwIiwgIiIsICI5RiIs
ICIiLCAiOTIiLCAiIiAsICJBOSIsICIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoInsxRjRBOX0i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwOUY5MiIsICJBOSIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgieHsxRjRBOX0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjc4IEYwIDlGIDkyIEE5IiB9
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MUY0QTl9eCIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAi
RjAgOUYgOTIgQTkgNzgiIH0pKTsKK30KKworVEVTVChUZXh0Q29kZWMsIFVURjhJbnZhbGlkU2Vx
dWVuY2VzKQoreworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRTAgQTUgM0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfT8iLCB0ZXN0RGVj
b2RlKCJVVEYtOCIsIHsgIkUwIEE1IiwgIjNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZG
RH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCIsICJBNSAzRiIgfSkpOworICAgIEVYUEVD
VF9TVFJFUSgie0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTAiLCAiQTUiLCAiM0Yi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsg
IkUwIiwgIiIsICJBNSIsICIiLCAiM0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfT8i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUwIiwgIiIsICJBNSIsICIiLCAiM0YiLCAiIiB9KSk7
CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICIiLCAi
RTAiLCAiIiwgIkE1IiwgIiIsICIzRiIsICIiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgiYXtG
RkZEfT8iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjYxIEUwIEE1IDNGIiB9KSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJhe0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiNjEgRTAgQTUiLCAi
M0YiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImF7RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICI2MSBFMCIsICJBNSAzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgiYXtGRkZEfT8iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIjYxIEUwIiwgIkE1IiwgIjNGIiB9KSk7CisKKyAgICBFWFBF
Q1RfU1RSRVEoIntCNn17RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJDMiBCNiBFMCBB
NSAzRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0I2fXtGRkZEfT8iLCB0ZXN0RGVjb2RlKCJV
VEYtOCIsIHsgIkMyIEI2IEUwIEE1IiwgIjNGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7QjZ9
e0ZGRkR9PyIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzIgQjYgRTAiLCAiQTUgM0YiIH0pKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIntCNn17RkZGRH0/IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJD
MiBCNiBFMCIsICJBNSIsICIzRiIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkMyIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUyIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZG
RH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUyIDk4IiB9KSk7CisgICAgRVhQRUNUX1NUUkVR
KCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIiB9KSk7CisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDlGIiB9KSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDlGIDkyIiB9KSk7
CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRTIi
LCAiOTgiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiRjAiLCAiOUYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNv
ZGUoIlVURi04IiwgeyAiRjAgOUYiLCAiOTIiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZE
fSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAiLCAiOUY5MiIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgie0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCIsICI5RiIsICI5MiIgfSkp
OworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIs
IHsgIkMwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUwIDgwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7
RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDgwIDgw
IDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZG
RH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDgwIDgwIDgwIDgwIiB9KSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVj
b2RlKCJVVEYtOCIsIHsgIkZDIDgwIDgwIDgwIDgwIDgwIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiQzEgQkYiIH0pKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04Iiwg
eyAiRTAgODEgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgODAgODEgQkYiIH0pKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVU
Ri04IiwgeyAiRjggODAgODAgODEgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtG
RkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMg
ODAgODAgODAgODEgQkYiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZG
RkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFMCA4MiA4MCIgfSkpOworICAgIEVYUEVDVF9T
VFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJG
MCA4MCA4MiA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZG
RkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGOCA4MCA4MCA4MiA4MCIgfSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9Iiwg
dGVzdERlY29kZSgiVVRGLTgiLCB7ICJGQyA4MCA4MCA4MCA4MiA4MCIgfSkpOworCisgICAgRVhQ
RUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUw
IDlGIEJGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDgwIDlGIEJGIiB9KSk7CisgICAgRVhQRUNUX1NU
UkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIs
IHsgIkY4IDgwIDgwIDlGIEJGIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17
RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDgw
IDgwIDlGIEJGIiB9KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRjAgODAgQTAgODAiIH0pKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVU
Ri04IiwgeyAiRjggODAgODAgQTAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtG
RkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiRkMg
ODAgODAgODAgQTAgODAiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZG
RkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGMCA4RiBCRiBCRiIgfSkpOworICAg
IEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICJGOCA4MCA4RiBCRiBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICJGQyA4MCA4MCA4RiBCRiBCRiIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZG
RH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDgwIDkwIDgw
IDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDgwIDkwIDgwIDgwIiB9KSk7
CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRl
c3REZWNvZGUoIlVURi04IiwgeyAiRjggODQgOEYgQkYgQkYiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVU
Ri04IiwgeyAiRkMgODAgODQgOEYgQkYgQkYiIH0pKTsKKworICAgIEVYUEVDVF9TVFJFUSgie0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGNCA5MCA4MCA4
MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9
IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJGQiBCRiBCRiBCRiBCRiIgfSkpOworICAgIEVYUEVD
VF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29k
ZSgiVVRGLTgiLCB7ICJGRCBCRiBCRiBCRiBCRiBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFRCBBMCA4MCIgfSkp
OworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRG
LTgiLCB7ICJFRCBCRiBCRiIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZGRkR9e0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7ICJFRCBBMCBCRCBF
RCBCMiBBOSIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkY4IDg0IDkwIDgwIDgwIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0
ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZDIDgwIDg0IDkwIDgwIDgwIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsg
IkYwIDhEIEEwIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17
RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDhEIEJGIEJGIiB9KSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJ7RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZGRH17RkZG
RH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkYwIDhEIEEwIEJEIEYwIDhEIEIyIEE5IiB9KSk7
CisKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiODAi
IH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04
IiwgeyAiODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfSIs
IHRlc3REZWNvZGUoIlVURi04IiwgeyAiODAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEo
IntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiODAgODAg
ODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtG
RkZEfSIsIHRlc3REZWNvZGUoIlVURi04IiwgeyAiODAgODAgODAgODAgODAiIH0pKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3RE
ZWNvZGUoIlVURi04IiwgeyAiODAgODAgODAgODAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfXtGRkZEfSIsIHRlc3REZWNv
ZGUoIlVURi04IiwgeyAiODAgODAgODAgODAgODAgODAgODAiIH0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIntCNn17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkMyIEI2IDgwIiB9KSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ7MjYwM317RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkUy
IDk4IDgzIDgwIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7MUY0QTl9e0ZGRkR9IiwgdGVzdERl
Y29kZSgiVVRGLTgiLCB7ICJGMCA5RiA5MiBBOSA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgi
e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgi
LCB7ICJGQiBCRiBCRiBCRiBCRiA4MCIgfSkpOworICAgIEVYUEVDVF9TVFJFUSgie0ZGRkR9e0ZG
RkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9e0ZGRkR9IiwgdGVzdERlY29kZSgiVVRGLTgiLCB7
ICJGRCBCRiBCRiBCRiBCRiBCRiA4MCIgfSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJ7RkZGRH0i
LCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZFIiB9KSk7CisgICAgRVhQRUNUX1NUUkVRKCJ7RkZG
RH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZFIDgwIiB9KSk7CisgICAgRVhQRUNU
X1NUUkVRKCJ7RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZGIiB9KSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJ7RkZGRH17RkZGRH0iLCB0ZXN0RGVjb2RlKCJVVEYtOCIsIHsgIkZGIDgwIiB9
KSk7Cit9CisKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>