<?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>190836</bug_id>
          
          <creation_ts>2018-10-23 11:15:58 -0700</creation_ts>
          <short_desc>[BigInt] JSBigInt::createWithLength should throw when length is greater than JSBigInt::maxLength</short_desc>
          <delta_ts>2018-11-21 10:38:21 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>179001</blocked>
    
    <blocked>186233</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471619</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-10-23 11:15:58 -0700</bug_when>
    <thetext>Current implementation ignores JSBigInt::maxLength, but we should follow this definition, since some algorithms rely on this vale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471817</commentid>
    <comment_count>1</comment_count>
      <attachid>353034</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-10-24 07:06:43 -0700</bug_when>
    <thetext>Created attachment 353034
WIP - Patch

This starts. There are changes and tests missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472136</commentid>
    <comment_count>2</comment_count>
      <attachid>353097</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-10-25 11:39:57 -0700</bug_when>
    <thetext>Created attachment 353097
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472312</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-25 20:47:10 -0700</bug_when>
    <thetext>If the factory function may fail, I like to name it &quot;tryCreateXXX&quot; instead of &quot;createXXX&quot;. It encourages us to check the result in the caller side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474337</commentid>
    <comment_count>4</comment_count>
      <attachid>353664</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-01 17:13:40 -0700</bug_when>
    <thetext>Created attachment 353664
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474340</commentid>
    <comment_count>5</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-01 17:14:47 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; If the factory function may fail, I like to name it &quot;tryCreateXXX&quot; instead
&gt; of &quot;createXXX&quot;. It encourages us to check the result in the caller side.

I changed this. Thx for the comment!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476512</commentid>
    <comment_count>6</comment_count>
      <attachid>354237</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-08 06:59:07 -0800</bug_when>
    <thetext>Created attachment 354237
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477653</commentid>
    <comment_count>7</comment_count>
      <attachid>354572</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-12 11:26:00 -0800</bug_when>
    <thetext>Created attachment 354572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477656</commentid>
    <comment_count>8</comment_count>
      <attachid>354573</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-12 11:39:58 -0800</bug_when>
    <thetext>Created attachment 354573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477657</commentid>
    <comment_count>9</comment_count>
      <attachid>354573</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 11:48:13 -0800</bug_when>
    <thetext>Comment on attachment 354573
Patch

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

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:98
&gt; +    if (length &gt; maxLength) {

nit: Maybe do UNLIKELY here?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:414
&gt; +        JSBigInt* y1 = absoluteSubOne(exec, y, y-&gt;length());

Don&apos;t you also need an exception check after this?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:416
&gt; +        return absoluteAddOne(exec, result, SignOption::Signed);

Do you need to release the scope before this?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:425
&gt; +    return absoluteAndNot(vm, x, absoluteSubOne(exec, y, y-&gt;length()));

You don&apos;t need an exception check here? Can&apos;t this return nullptr?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1190
&gt; +JSBigInt* JSBigInt::absoluteAddOne(ExecState* exec, JSBigInt* x, SignOption signOption)

Don&apos;t you need to make all callers check for an exception here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477668</commentid>
    <comment_count>10</comment_count>
      <attachid>354573</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-12 12:35:49 -0800</bug_when>
    <thetext>Comment on attachment 354573
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:414
&gt;&gt; +        JSBigInt* y1 = absoluteSubOne(exec, y, y-&gt;length());
&gt; 
&gt; Don&apos;t you also need an exception check after this?

Yes. Actually I realised this is the wrong version of the Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477684</commentid>
    <comment_count>11</comment_count>
      <attachid>354573</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-12 13:06:18 -0800</bug_when>
    <thetext>Comment on attachment 354573
Patch

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

Thx for the review and sorry for the confusion in the previous Patch.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:98
&gt;&gt; +    if (length &gt; maxLength) {
&gt; 
&gt; nit: Maybe do UNLIKELY here?

Yes. Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:416
&gt;&gt; +        return absoluteAddOne(exec, result, SignOption::Signed);
&gt; 
&gt; Do you need to release the scope before this?

Ditto.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:425
&gt;&gt; +    return absoluteAndNot(vm, x, absoluteSubOne(exec, y, y-&gt;length()));
&gt; 
&gt; You don&apos;t need an exception check here? Can&apos;t this return nullptr?

yes. done.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1190
&gt;&gt; +JSBigInt* JSBigInt::absoluteAddOne(ExecState* exec, JSBigInt* x, SignOption signOption)
&gt; 
&gt; Don&apos;t you need to make all callers check for an exception here?

I don&apos;t understand this question. Do you mean the caller of absoluteAddOne? It is always the last operation of functions we use, and IIUC, we don&apos;t need to check for exceptions in such case. Is it.right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477772</commentid>
    <comment_count>12</comment_count>
      <attachid>354602</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-12 15:46:53 -0800</bug_when>
    <thetext>Created attachment 354602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477776</commentid>
    <comment_count>13</comment_count>
      <attachid>354604</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-12 15:54:08 -0800</bug_when>
    <thetext>Created attachment 354604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477820</commentid>
    <comment_count>14</comment_count>
      <attachid>354604</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 18:06:40 -0800</bug_when>
    <thetext>Comment on attachment 354604
Patch

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

r=me w/ comments.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:112
&gt; +    RELEASE_ASSERT(bigInt);

No need for this RELEASE_ASSERT. This will never return null. If you can&apos;t allocate the cell, it&apos;ll crash. It could return nullptr if you used tryAllocateCell.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:419
&gt; +        result = absoluteAddOne(exec, result, SignOption::Signed);
&gt; +        RETURN_IF_EXCEPTION(scope, nullptr);
&gt; +        return result;

This could be:
scope.release()
return absoluteAddOne(exec, result, SignOption::Signed)

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:498
&gt; +    result = absoluteAddOne(exec, result, SignOption::Signed);
&gt; +    RETURN_IF_EXCEPTION(scope, nullptr);
&gt; +    return result;

this could be:
scope.release();
return absoluteAddOne(exec, result, SignOption::Signed);

&gt; Source/JavaScriptCore/runtime/Operations.cpp:75
&gt; +            JSBigInt* result = JSBigInt::add(callFrame, WTF::get&lt;JSBigInt*&gt;(leftNumeric), WTF::get&lt;JSBigInt*&gt;(rightNumeric));
&gt; +            RETURN_IF_EXCEPTION(scope, { });
&gt; +            return result;

ditto w/ scope.release() before calling add

&gt; Source/JavaScriptCore/runtime/Operations.h:354
&gt; +            JSBigInt* result = JSBigInt::sub(exec, WTF::get&lt;JSBigInt*&gt;(leftNumeric), WTF::get&lt;JSBigInt*&gt;(rightNumeric));
&gt; +            RETURN_IF_EXCEPTION(scope, { });
&gt; +            return result;

ditto

&gt; Source/JavaScriptCore/runtime/Operations.h:377
&gt; +            JSBigInt* result = JSBigInt::multiply(state, WTF::get&lt;JSBigInt*&gt;(leftNumeric), WTF::get&lt;JSBigInt*&gt;(rightNumeric));
&gt; +            RETURN_IF_EXCEPTION(scope, { });
&gt; +            return result;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477979</commentid>
    <comment_count>15</comment_count>
      <attachid>354670</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-13 06:28:22 -0800</bug_when>
    <thetext>Created attachment 354670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477990</commentid>
    <comment_count>16</comment_count>
      <attachid>354670</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-13 07:20:22 -0800</bug_when>
    <thetext>Comment on attachment 354670
Patch

Thank you very much for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477994</commentid>
    <comment_count>17</comment_count>
      <attachid>354670</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-13 07:46:41 -0800</bug_when>
    <thetext>Comment on attachment 354670
Patch

Clearing flags on attachment: 354670

Committed r238132: &lt;https://trac.webkit.org/changeset/238132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477995</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-13 07:46:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477996</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-13 07:48:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/46028371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478020</commentid>
    <comment_count>20</comment_count>
      <attachid>354670</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-13 09:21:15 -0800</bug_when>
    <thetext>Comment on attachment 354670
Patch

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

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:249
&gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);

Sorry for missing this earlier, but this should be a throw scope, not a catch scope

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1237
&gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478045</commentid>
    <comment_count>21</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-13 10:25:08 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #20)
&gt; Comment on attachment 354670 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354670&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:249
&gt; &gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);
&gt; 
&gt; Sorry for missing this earlier, but this should be a throw scope, not a
&gt; catch scope
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1237
&gt; &gt; +    auto scope = DECLARE_CATCH_SCOPE(vm);
&gt; 
&gt; ditto

Sorry for this. I&apos;m going to handle this change into https://bugs.webkit.org/show_bug.cgi?id=190264 then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478243</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-11-13 17:35:15 -0800</bug_when>
    <thetext>The test added with this change (stress/big-int-out-of-memory-tests.js) is timing out on Debug JSC bots:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/1742
https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/2922</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478250</commentid>
    <comment_count>23</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-11-13 17:47:36 -0800</bug_when>
    <thetext>Reverted r238132 for reason:

The test added with this change is timing out on Debug JSC bots.

Committed r238156: &lt;https://trac.webkit.org/changeset/238156&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478286</commentid>
    <comment_count>24</comment_count>
      <attachid>354755</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-13 19:27:53 -0800</bug_when>
    <thetext>Created attachment 354755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478390</commentid>
    <comment_count>25</comment_count>
      <attachid>354797</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-14 04:50:00 -0800</bug_when>
    <thetext>Created attachment 354797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478494</commentid>
    <comment_count>26</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-11-14 10:01:09 -0800</bug_when>
    <thetext>Before it got rolled out, the test stress/big-int-out-of-memory-tests.js was being killed (probably OOM-killed) on MIPS, and timed out on MIPS. Is there an easy way to make this test run on these slower, memory restricted platforms? If not, the test should be skipped for them (at least arm and mips on linux), maybe on debug bots too (since that seems to be the reason for the rollout)?

Disregard this message if your new patch already addresses this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480099</commentid>
    <comment_count>27</comment_count>
      <attachid>355242</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-18 16:10:22 -0800</bug_when>
    <thetext>Created attachment 355242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480616</commentid>
    <comment_count>28</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-20 16:04:46 -0800</bug_when>
    <thetext>The big difference from approved version is the change into test to avoid timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480649</commentid>
    <comment_count>29</comment_count>
      <attachid>355242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-20 19:00:57 -0800</bug_when>
    <thetext>Comment on attachment 355242
Patch

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

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:111
&gt;      JSBigInt* bigInt = new (NotNull, allocateCell&lt;JSBigInt&gt;(vm.heap, allocationSize(length))) JSBigInt(vm, vm.bigIntStructure.get(), length);

Let&apos;s have an assertion on `length`!

ASSERT(length &lt;= maxLength);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480787</commentid>
    <comment_count>30</comment_count>
      <attachid>355422</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-21 09:45:28 -0800</bug_when>
    <thetext>Created attachment 355422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480788</commentid>
    <comment_count>31</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-11-21 09:48:23 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #29)
&gt; Comment on attachment 355242 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355242&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:111
&gt; &gt;      JSBigInt* bigInt = new (NotNull, allocateCell&lt;JSBigInt&gt;(vm.heap, allocationSize(length))) JSBigInt(vm, vm.bigIntStructure.get(), length);
&gt; 
&gt; Let&apos;s have an assertion on `length`!
&gt; 
&gt; ASSERT(length &lt;= maxLength);

Done. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480802</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 10:37:32 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 355422:

http/wpt/css/css-animations/start-animation-001.html bug 190903 (authors: dino@apple.com, fred.wang@free.fr, and graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480803</commentid>
    <comment_count>33</comment_count>
      <attachid>355422</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 10:38:19 -0800</bug_when>
    <thetext>Comment on attachment 355422
Patch

Clearing flags on attachment: 355422

Committed r238425: &lt;https://trac.webkit.org/changeset/238425&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480804</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 10:38:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353034</attachid>
            <date>2018-10-24 07:06:43 -0700</date>
            <delta_ts>2018-10-25 11:39:53 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>wip-create-with-length.diff</filename>
            <type>text/plain</type>
            <size>39956</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGQzMDQ4
M2JlNDUzLi40ZDAxMmZkODA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUK
IAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAg
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0
d2lzZUFuZChleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0zNzYsNyArMzc2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJp
dHdpc2VPcigqdm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTI5NCw3ICsxMjk0
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG8KICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQg
PSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBq
c0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwogICAgIAotICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKCp2
bSwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIo
ZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0QW5kQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2Vs
bAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAg
ICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAg
Ci0gICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKCp2bSwgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4ZWMsIGxlZnRPcGVy
YW5kLCByaWdodE9wZXJhbmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBA
IC0xMzE2LDcgKzEzMTYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JC
aWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKgogICAgIEpTQmlnSW50
KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJp
Z2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpT
QmlnSW50OjpiaXR3aXNlT3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2Vs
bChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGI1ZTE5MmMwZGE0Li5iM2Nj
NzNkOGNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0yNjY4LDcgKzI2NjgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkTmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVgogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIGlmIChw
cmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKGV4ZWMsIGFzQmlnSW50KHBy
aW1WYWx1ZSkpKTsKICAgICAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVy
KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwpAQCAtMjY4OCw3ICsyNjg4LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWwKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBpZiAo
cHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKGV4ZWMsIGFzQmlnSW50KHByaW1WYWx1
ZSkpOwogICAgICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI3MzMsNyArMjczMyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7
Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNC
aWdJbnQocHJpbVZhbHVlKSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
dW5hcnlNaW51cyhleGVjLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKICAgICAgICAgYXJpdGhQcm9m
aWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKICAgICB9CkBAIC0yNzY1LDcgKzI3NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIAogICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkp
OworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXMoZXhlYywg
YXNCaWdJbnQocHJpbVZhbHVlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDBhMTMyN2E0NzlmLi5jYTU3YTQ5NzI1NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00
MTUsNyArNDE1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBDSEVD
S19FWENFUFRJT04oKTsKIAogICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHBy
aW1WYWx1ZSkpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWlu
dXMoZXhlYywgYXNCaWdJbnQocHJpbVZhbHVlKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJ
TElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJp
dGhPcChwYywgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01MzQsNyArNTM0LDcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N1YikKIAogICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgICAgICB1cGRhdGVB
cml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIH0pOwpAQCAtNjYyLDcgKzY2Miw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChvcF9iaXRhbmQsIHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTY4Miw3ICs2ODIs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0b3IpCiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
ICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKHZtLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0
d2lzZU9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQob3BfYml0b3IsIHJlc3VsdCk7CiAgICAgICAg
IH0KQEAgLTcwMiw3ICs3MDIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmJpdHdpc2VYb3Iodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRh
YjVhNTIzNTNmLi5jYTg2YWE1ZjczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmNwcApAQCAtODEsNyArODEsNyBAQCBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbAog
CiBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oVk0mIHZtKQogewotICAgIEpTQmlnSW50
KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMCk7CisgICAgSlNCaWdJbnQqIHpl
cm9CaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAwKTsKICAgICByZXR1cm4g
emVyb0JpZ0ludDsKIH0KIApAQCAtOTEsOSArOTEsMjMgQEAgaW5saW5lIHNpemVfdCBKU0JpZ0lu
dDo6YWxsb2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBzaXplV2l0aFBh
ZGRpbmcgKyBsZW5ndGggKiBzaXplb2YoRGlnaXQpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6
OmNyZWF0ZVdpdGhMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCitKU0JpZ0ludCogSlNC
aWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIGlmIChsZW5ndGggPiBtYXhMZW5n
dGgpIHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2NvcGUsICJUcnlpbmcgdG8gY3JlYXRlIEJpZ0lu
dCB3aXRoIGxlbmd0aCBncmVhdGVyIHRoYW4gc3VwcG9ydGVkIHNpemUiX3MpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aExlbmd0aFVuY2hl
Y2tlZCh2bSwgbGVuZ3RoKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVu
Z3RoVW5jaGVja2VkKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEpTQmlnSW50KiBi
aWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCwgYWxs
b2NhdGlvblNpemUobGVuZ3RoKSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0
KCksIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmlnSW50KTsKICAgICBiaWdJbnQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTAzLDggKzExNyw3
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDMyX3QgdmFsdWUp
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAot
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAKKyAg
ICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAg
ICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19j
YXN0PERpZ2l0PigtMSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwogICAgICAgICBi
aWdJbnQtPnNldFNpZ24odHJ1ZSk7CkBAIC0xMTksNyArMTMyLDcgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3Jl
YXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBz
dGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTMw
LDggKzE0Myw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0
X3QgdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKICAgICBpZiAo
c2l6ZW9mKERpZ2l0KSA9PSA4KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVX
aXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAgICAgCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBj
cmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkg
ewogICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAgICAgICAgICAgICBiaWdJ
bnQtPnNldFNpZ24odHJ1ZSk7CkBAIC0xNDEsOCArMTUzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50
OjpjcmVhdGVGcm9tKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGJpZ0lu
dDsKICAgICB9CiAgICAgCi0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgo
dm0sIDIpOwotICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKHZtLCAyKTsKICAgICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAgICAgYm9vbCBzaWduID0g
ZmFsc2U7CiAgICAgaWYgKHZhbHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3Nyw4IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGJvb2wgdmFsdWUpCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBi
aWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0g
Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CisgICAgQVNTRVJUKGJpZ0ludCk7CiAg
ICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICBy
ZXR1cm4gYmlnSW50OwogfQpAQCAtMjQxLDcgKzI1Myw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6
bXVsdGlwbHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAg
ICAgIHJldHVybiB5OwogCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0geC0+bGVuZ3RoKCkg
KyB5LT5sZW5ndGgoKTsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CiAgICAgcmVzdWx0LT5p
bml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOwogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHgtPmxlbmd0aCgpOyBpKyspCkBAIC0yNzMsMzMgKzI4NSwzNSBAQCBK
U0JpZ0ludCogSlNCaWdJbnQ6OmRpdmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKICAgICBpZiAoeS0+bGVuZ3RoKCkgPT0gMSkgewogICAgICAgICBEaWdpdCBk
aXZpc29yID0geS0+ZGlnaXQoMCk7CiAgICAgICAgIGlmIChkaXZpc29yID09IDEpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4IDogdW5hcnlNaW51cyh2bSwg
eCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4IDogdW5h
cnlNaW51cyhleGVjLCB4KTsKIAogICAgICAgICBEaWdpdCByZW1haW5kZXI7Ci0gICAgICAgIGFi
c29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgeCwgZGl2aXNvciwgJnF1b3RpZW50LCByZW1h
aW5kZXIpOworICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoZXhlYywgeCwgZGl2
aXNvciwgJnF1b3RpZW50LCByZW1haW5kZXIpOwogICAgIH0gZWxzZQotICAgICAgICBhYnNvbHV0
ZURpdldpdGhCaWdJbnREaXZpc29yKHZtLCB4LCB5LCAmcXVvdGllbnQsIG51bGxwdHIpOworICAg
ICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksICZxdW90aWVudCwg
bnVsbHB0cik7CiAKICAgICBxdW90aWVudC0+c2V0U2lnbihyZXN1bHRTaWduKTsKICAgICByZXR1
cm4gcXVvdGllbnQtPnJpZ2h0VHJpbSh2bSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Y29w
eShWTSYgdm0sIEpTQmlnSW50KiB4KQorSlNCaWdJbnQqIEpTQmlnSW50Ojpjb3B5KEV4ZWNTdGF0
ZSogZXhlYywgSlNCaWdJbnQqIHgpCiB7CiAgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CiAKLSAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxl
bmd0aCgpKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5n
dGgoZXhlYywgeC0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAgICAg
c3RkOjpjb3B5KHgtPmRhdGFTdG9yYWdlKCksIHgtPmRhdGFTdG9yYWdlKCkgKyB4LT5sZW5ndGgo
KSwgcmVzdWx0LT5kYXRhU3RvcmFnZSgpKTsKICAgICByZXN1bHQtPnNldFNpZ24oeC0+c2lnbigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnVuYXJ5TWlu
dXMoVk0mIHZtLCBKU0JpZ0ludCogeCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6dW5hcnlNaW51cyhF
eGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4KQogewogICAgIGlmICh4LT5pc1plcm8oKSkKICAg
ICAgICAgcmV0dXJuIHg7CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY29weSh2bSwgeCk7Cisg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNvcHkoZXhlYywgeCk7CisgICAgQVNTRVJUKHJlc3VsdCk7
CiAgICAgcmVzdWx0LT5zZXRTaWduKCF4LT5zaWduKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0zMjcsNjggKzM0MSw3MSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJlbWFpbmRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVaZXJvKHZtKTsKIAogICAgICAgICBEaWdpdCByZW1haW5kZXJEaWdpdDsKLSAgICAg
ICAgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKHZtLCB4LCBkaXZpc29yLCBudWxscHRyLCBy
ZW1haW5kZXJEaWdpdCk7CisgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihleGVj
LCB4LCBkaXZpc29yLCBudWxscHRyLCByZW1haW5kZXJEaWdpdCk7CiAgICAgICAgIGlmICghcmVt
YWluZGVyRGlnaXQpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAKLSAgICAg
ICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgICAgIHJlbWFpbmRl
ciA9IGNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgMSk7CisgICAgICAgIGlmICghcmVtYWluZGVyKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAgICAgcmVtYWluZGVyLT5zZXREaWdp
dCgwLCByZW1haW5kZXJEaWdpdCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGFic29sdXRlRGl2V2l0
aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksIG51bGxwdHIsICZyZW1haW5kZXIpOworICAgICAgICBh
YnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksIG51bGxwdHIsICZyZW1haW5k
ZXIpOwogCiAgICAgcmVtYWluZGVyLT5zZXRTaWduKHgtPnNpZ24oKSk7CiAgICAgcmV0dXJuIHJl
bWFpbmRlci0+cmlnaHRUcmltKHZtKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoVk0m
IHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChF
eGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKICAgICBib29sIHhT
aWduID0geC0+c2lnbigpOwogCiAgICAgLy8geCArIHkgPT0geCArIHkKICAgICAvLyAteCArIC15
ID09IC0oeCArIHkpCiAgICAgaWYgKHhTaWduID09IHktPnNpZ24oKSkKLSAgICAgICAgcmV0dXJu
IGFic29sdXRlQWRkKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFk
ZChleGVjLCB4LCB5LCB4U2lnbik7CiAKICAgICAvLyB4ICsgLXkgPT0geCAtIHkgPT0gLSh5IC0g
eCkKICAgICAvLyAteCArIHkgPT0geSAtIHggPT0gLSh4IC0geSkKICAgICBDb21wYXJpc29uUmVz
dWx0IGNvbXBhcmlzb25SZXN1bHQgPSBhYnNvbHV0ZUNvbXBhcmUoeCwgeSk7CiAgICAgaWYgKGNv
bXBhcmlzb25SZXN1bHQgPT0gQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFy
aXNvblJlc3VsdCA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIGFi
c29sdXRlU3ViKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZVN1Yihl
eGVjLCB4LCB5LCB4U2lnbik7CiAKLSAgICByZXR1cm4gYWJzb2x1dGVTdWIodm0sIHksIHgsICF4
U2lnbik7CisgICAgcmV0dXJuIGFic29sdXRlU3ViKGV4ZWMsIHksIHgsICF4U2lnbik7CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6c3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQorSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCiB7CiAgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKICAgICBpZiAoeFNp
Z24gIT0geS0+c2lnbigpKSB7CiAgICAgICAgIC8vIHggLSAoLXkpID09IHggKyB5CiAgICAgICAg
IC8vICgteCkgLSB5ID09IC0oeCArIHkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwg
eCwgeSwgeFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeCwgeSwgeFNp
Z24pOwogICAgIH0KICAgICAvLyB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vICgteCkgLSAoLXkp
ID09IHkgLSB4ID09IC0oeCAtIHkpCiAgICAgQ29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVz
dWx0ID0gYWJzb2x1dGVDb21wYXJlKHgsIHkpOwogICAgIGlmIChjb21wYXJpc29uUmVzdWx0ID09
IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIHx8IGNvbXBhcmlzb25SZXN1bHQgPT0gQ29t
cGFyaXNvblJlc3VsdDo6RXF1YWwpCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeCwg
eSwgeFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWIoZXhlYywgeCwgeSwgeFNpZ24p
OwogCi0gICAgcmV0dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAheFNpZ24pOworICAgIHJldHVy
biBhYnNvbHV0ZVN1YihleGVjLCB5LCB4LCAheFNpZ24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpCiB7CiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkKLSAgICAgICAg
cmV0dXJuIGFic29sdXRlQW5kKHZtLCB4LCB5KTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQW5k
KGV4ZWMsIHgsIHkpOwogICAgIAogICAgIGlmICh4LT5zaWduKCkgJiYgeS0+c2lnbigpKSB7CiAg
ICAgICAgIGludCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3Ro
KCkpICsgMTsKICAgICAgICAgLy8gKC14KSAmICgteSkgPT0gfih4LTEpICYgfih5LTEpID09IH4o
KHgtMSkgfCAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgfCAoeS0xKSkgKyAxKQotICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0
aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5n
dGgoKSk7Ci0gICAgICAgIHJlc3VsdCA9IGFic29sdXRlT3Iodm0sIHJlc3VsdCwgeTEpOworICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVu
Z3RoKTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+
bGVuZ3RoKCkpOworICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKGV4ZWMsIHJlc3VsdCwgeTEp
OwogCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9u
OjpTaWduZWQpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBT
aWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+
c2lnbigpKTsKQEAgLTM5NywyMyArNDE0LDIzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lz
ZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2Fw
KHgsIHkpOwogICAgIAogICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0x
KQotICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgYWJzb2x1dGVTdWJPbmUodm0sIHks
IHktPmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KGV4ZWMsIHgsIGFic29s
dXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0lu
dDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQq
IEpTQmlnSW50OjpiaXR3aXNlT3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHkpCiB7CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3Ro
KCksIHktPmxlbmd0aCgpKTsKIAogICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCi0g
ICAgICAgIHJldHVybiBhYnNvbHV0ZU9yKHZtLCB4LCB5KTsKKyAgICAgICAgcmV0dXJuIGFic29s
dXRlT3IoZXhlYywgeCwgeSk7CiAgICAgCiAgICAgaWYgKHgtPnNpZ24oKSAmJiB5LT5zaWduKCkp
IHsKICAgICAgICAgLy8gKC14KSB8ICgteSkgPT0gfih4LTEpIHwgfih5LTEpID09IH4oKHgtMSkg
JiAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAxKQotICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0g
ICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7
Ci0gICAgICAgIHJlc3VsdCA9IGFic29sdXRlQW5kKHZtLCByZXN1bHQsIHkxKTsKLSAgICAgICAg
cmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7Cisg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRM
ZW5ndGgpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5
LT5sZW5ndGgoKSk7CisgICAgICAgIHJlc3VsdCA9IGFic29sdXRlQW5kKGV4ZWMsIHJlc3VsdCwg
eTEpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0
aW9uOjpTaWduZWQpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNp
Z24oKSk7CkBAIC00MjMsMjMgKzQ0MCwyMyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VP
cihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgs
IHkpOwogICAgIAogICAgIC8vIHggfCAoLXkpID09IHggfCB+KHktMSkgPT0gfigoeS0xKSAmfiB4
KSA9PSAtKCgoeS0xKSAmfiB4KSArIDEpCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRl
U3ViT25lKHZtLCB5LCByZXN1bHRMZW5ndGgpOwotICAgIHJlc3VsdCA9IGFic29sdXRlQW5kTm90
KHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBT
aWduT3B0aW9uOjpTaWduZWQpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9u
ZShleGVjLCB5LCByZXN1bHRMZW5ndGgpOworICAgIHJlc3VsdCA9IGFic29sdXRlQW5kTm90KGV4
ZWMsIHJlc3VsdCwgeCk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwg
U2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9y
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50Ojpi
aXR3aXNlWG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewog
ICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0
ZVhvcih2bSwgeCwgeSk7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZVhvcihleGVjLCB4LCB5KTsK
ICAgICAKICAgICBpZiAoeC0+c2lnbigpICYmIHktPnNpZ24oKSkgewogICAgICAgICBpbnQgcmVz
dWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgpKTsKICAgICAgICAg
CiAgICAgICAgIC8vICgteCkgXiAoLXkpID09IH4oeC0xKSBeIH4oeS0xKSA9PSAoeC0xKSBeICh5
LTEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeCwgcmVz
dWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUodm0sIHks
IHktPmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIGFic29sdXRlWG9yKHZtLCByZXN1bHQsIHkx
KTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHgsIHJl
c3VsdExlbmd0aCk7CisgICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMs
IHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlWG9yKGV4ZWMsIHJlc3Vs
dCwgeTEpOwogICAgIH0KICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CiAgICAg
aW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSkgKyAx
OwpAQCAtNDQ5LDkgKzQ2Niw5IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYg
dm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwog
ICAgIAogICAgIC8vIHggXiAoLXkpID09IHggXiB+KHktMSkgPT0gfih4IF4gKHktMSkpID09IC0o
KHggXiAoeS0xKSkgKyAxKQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2
bSwgeSwgcmVzdWx0TGVuZ3RoKTsKLSAgICByZXN1bHQgPSBhYnNvbHV0ZVhvcih2bSwgcmVzdWx0
LCB4KTsKLSAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6
U2lnbmVkKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwg
cmVzdWx0TGVuZ3RoKTsKKyAgICByZXN1bHQgPSBhYnNvbHV0ZVhvcihleGVjLCByZXN1bHQsIHgp
OworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNp
Z25lZCk7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNzUxLDEwICs3NjgsMTAgQEAg
aW5saW5lIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50OjphYnNvbHV0ZUNvbXBh
cmUoSlNCaWdJbnQqIHgsIEpTQmlnSW4KICAgICByZXR1cm4geC0+ZGlnaXQoaSkgPiB5LT5kaWdp
dChpKSA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6
TGVzc1RoYW47CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6YWJzb2x1dGVBZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHksIGJvb2wgcmVzdWx0U2lnbikKIHsKICAgICBpZiAoeC0+bGVuZ3RoKCkgPCB5LT5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKHZtLCB5LCB4LCByZXN1bHRTaWduKTsKKyAg
ICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHksIHgsIHJlc3VsdFNpZ24pOwogCiAgICAg
aWYgKHgtPmlzWmVybygpKSB7CiAgICAgICAgIEFTU0VSVCh5LT5pc1plcm8oKSk7CkBAIC03NjIs
MTAgKzc3OSwxMSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwogICAgIH0KIAogICAgIGlmICh5
LT5pc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdFNpZ24gPT0geC0+c2lnbigpID8geCA6
IHVuYXJ5TWludXModm0sIHgpOworICAgICAgICByZXR1cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWdu
KCkgPyB4IDogdW5hcnlNaW51cyhleGVjLCB4KTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkgKyAxKTsKLSAgICBBU1NF
UlQocmVzdWx0KTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhM
ZW5ndGgoZXhlYywgeC0+bGVuZ3RoKCkgKyAxKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgRGlnaXQgY2FycnkgPSAwOwogICAgIHVuc2lnbmVkIGkgPSAw
OwogICAgIGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtNzg2LDExICs4MDQsMTIg
QEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZChWTSYgdm0sIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWcKICAgICByZXN1bHQtPnNldERpZ2l0KGksIGNhcnJ5
KTsKICAgICByZXN1bHQtPnNldFNpZ24ocmVzdWx0U2lnbik7CiAKLSAgICByZXR1cm4gcmVzdWx0
LT5yaWdodFRyaW0odm0pOworICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShleGVjLT52bSgp
KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1YihWTSYgdm0sIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKQorSlNCaWdJbnQqIEpTQmlnSW50Ojph
YnNvbHV0ZVN1YihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9v
bCByZXN1bHRTaWduKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29tcGFyaXNv
blJlc3VsdCBjb21wYXJpc29uUmVzdWx0ID0gYWJzb2x1dGVDb21wYXJlKHgsIHkpOwogICAgIEFT
U0VSVCh4LT5sZW5ndGgoKSA+PSB5LT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbXBhcmlzb25S
ZXN1bHQgPT0gQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFyaXNvblJlc3Vs
dCA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbCk7CkBAIC04MDEsMTIgKzgyMCwxNSBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5LCBib29sIHJlc3VsdFNpZwogICAgIH0KIAogICAgIGlmICh5LT5pc1plcm8oKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdFNpZ24gPT0geC0+c2lnbigpID8geCA6IHVuYXJ5TWludXModm0sIHgp
OworICAgICAgICByZXR1cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4IDogdW5hcnlNaW51
cyhleGVjLCB4KTsKIAogICAgIGlmIChjb21wYXJpc29uUmVzdWx0ID09IENvbXBhcmlzb25SZXN1
bHQ6OkVxdWFsKQogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwogCi0g
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5s
ZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVu
Z3RoKGV4ZWMsIHgtPmxlbmd0aCgpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKICAgICBEaWdpdCBib3Jyb3cgPSAwOwogICAgIHVuc2lnbmVkIGkgPSAwOwog
ICAgIGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODM2LDcgKzg1OCw3IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHksIGJvb2wgcmVzdWx0U2lnCiAvLyBhbGxvY2F0ZWQgZm9yIGl0OyBvdGhlcndpc2UgdGhl
IGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJpZyBlbm91Z2guCiAvLyB7cXVvdGllbnR9
IGNhbiBiZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGluLXBsYWNlIGRpdmlzaW9uLiB7cXVvdGll
bnR9IGNhbgogLy8gYWxzbyBiZSBudWxscHRyIGlmIHRoZSBjYWxsZXIgaXMgb25seSBpbnRlcmVz
dGVkIGluIHRoZSByZW1haW5kZXIuCi12b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhEaWdp
dERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBx
dW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcikKK3ZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0
aERpZ2l0RGl2aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29y
LCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVyKQogewogICAgIEFTU0VSVChk
aXZpc29yKTsKIApAQCAtODUxLDcgKzg3Myw3IEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2
V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgaWYgKHF1b3RpZW50ICE9IG51
bGxwdHIpIHsKICAgICAgICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRyKQotICAgICAgICAgICAg
KnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIGxlbmd0aCk7CisgICAg
ICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aChleGVjLCBsZW5n
dGgpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgewog
ICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KHJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRp
dmlzb3IsIHJlbWFpbmRlcik7CkBAIC04NjksNyArODkxLDcgQEAgdm9pZCBKU0JpZ0ludDo6YWJz
b2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlz
b3IsIEoKIC8vIEJvdGgge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0gYXJlIG9wdGlvbmFsLCBm
b3IgY2FsbGVycyB0aGF0IGFyZSBvbmx5CiAvLyBpbnRlcmVzdGVkIGluIG9uZSBvZiB0aGVtLgog
Ly8gU2VlIEtudXRoLCBWb2x1bWUgMiwgc2VjdGlvbiA0LjMuMSwgQWxnb3JpdGhtIEQuCi12b2lk
IEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQq
IGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJ
bnQqKiByZW1haW5kZXIpCit2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZp
c29yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNv
ciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpCiB7CiAgICAgQVNT
RVJUKGRpdmlzb3ItPmxlbmd0aCgpID49IDIpOwogICAgIEFTU0VSVChkaXZpZGVuZC0+bGVuZ3Ro
KCkgPj0gZGl2aXNvci0+bGVuZ3RoKCkpOwpAQCAtODgzLDEyICs5MDUsMTUgQEAgdm9pZCBKU0Jp
Z0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZp
ZGVuZCwgSlNCaWdJbnQKICAgICAKICAgICAvLyBUaGUgcXVvdGllbnQgdG8gYmUgY29tcHV0ZWQu
CiAgICAgSlNCaWdJbnQqIHEgPSBudWxscHRyOwotICAgIGlmIChxdW90aWVudCAhPSBudWxscHRy
KQotICAgICAgICBxID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbSArIDEpOworICAgIGlmIChxdW90
aWVudCAhPSBudWxscHRyKSB7CisgICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIG0g
KyAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocSk7CisgICAgfQogICAgIAogICAgIC8vIElu
IGVhY2ggaXRlcmF0aW9uLCB7cWhhdHZ9IGhvbGRzIHtkaXZpc29yfSAqIHtjdXJyZW50IHF1b3Rp
ZW50IGRpZ2l0fS4KICAgICAvLyAidiIgaXMgdGhlIGJvb2sncyBuYW1lIGZvciB7ZGl2aXNvcn0s
ICJxaGF0IiB0aGUgY3VycmVudCBxdW90aWVudCBkaWdpdC4KLSAgICBKU0JpZ0ludCogcWhhdHYg
PSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBuICsgMSk7CisgICAgSlNCaWdJbnQqIHFoYXR2ID0gY3Jl
YXRlV2l0aExlbmd0aChleGVjLCBuICsgMSk7CisgICAgUkVMRUFTRV9BU1NFUlQocWhhdHYpOwog
ICAgIAogICAgIC8vIEQxLgogICAgIC8vIExlZnQtc2hpZnQgaW5wdXRzIHNvIHRoYXQgdGhlIGRp
dmlzb3IncyBNU0IgaXMgc2V0LiBUaGlzIGlzIG5lY2Vzc2FyeQpAQCAtODk4LDEyICs5MjMsMTUg
QEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpT
QmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICBEaWdpdCBsYXN0RGlnaXQgPSBkaXZpc29y
LT5kaWdpdChuIC0gMSk7CiAgICAgdW5zaWduZWQgc2hpZnQgPSBzaXplb2YobGFzdERpZ2l0KSA9
PSA4ID8gY2x6NjQobGFzdERpZ2l0KSA6IGNsejMyKGxhc3REaWdpdCk7CiAKLSAgICBpZiAoc2hp
ZnQgPiAwKQotICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZt
LCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQpOworICAgIGlm
IChzaGlmdCA+IDApIHsKKyAgICAgICAgZGl2aXNvciA9IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlz
Q29weShleGVjLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChkaXZpc29yKTsKKyAgICB9CiAKICAgICAvLyBIb2xk
cyB0aGUgKGNvbnRpbnVvdXNseSB1cGRhdGVkKSByZW1haW5pbmcgcGFydCBvZiB0aGUgZGl2aWRl
bmQsIHdoaWNoCiAgICAgLy8gZXZlbnR1YWxseSBiZWNvbWVzIHRoZSByZW1haW5kZXIuCi0gICAg
SlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkodm0sIGRpdmlkZW5kLCBz
aGlmdCwgTGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQpOworICAgIEpTQmlnSW50KiB1
ID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KGV4ZWMsIGRpdmlkZW5kLCBzaGlmdCwgTGVm
dFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQpOworICAgIFJFTEVBU0VfQVNTRVJUKHUpOwog
CiAgICAgLy8gRDIuCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBkaXZpZGVuZCdzIGRpZ2l0IChs
aWtlIHRoZSAiZ3JhZCBzY2hvb2wiIGFsZ29yaXRobSkuCkBAIC0xMDMxLDE0ICsxMDU5LDE2IEBA
IHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VSaWdodFNoaWZ0KHVuc2lnbmVkIHNoaWZ0KQogfQogCiAv
LyBBbHdheXMgY29waWVzIHRoZSBpbnB1dCwgZXZlbiB3aGVuIHtzaGlmdH0gPT0gMC4KLUpTQmln
SW50KiBKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KFZNJiB2bSwgSlNCaWdJ
bnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUpCitKU0JpZ0ludCogSlNC
aWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3RhdGUqIGV4ZWMsIEpTQmln
SW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2RlKQogewogICAgIEFTU0VS
VChzaGlmdCA8IGRpZ2l0Qml0cyk7CiAgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CiAKICAgICB1
bnNpZ25lZCBuID0geC0+bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gbW9k
ZSA9PSBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCA/IG4gKyAxIDogbjsKLSAgICBK
U0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgp
OworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICgh
c2hpZnQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47IGkrKykKQEAgLTEw
ODAsNyArMTExMCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdh
eXNDb3B5KFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoCiAvLyAgICAgICAgICAgICAg
ICAgICB2ICAgICB2ICAgICB2ICAgICB2CiAvLyByZXN1bHQ6IFsgIDAgXVsgeDMgXVsgcjIgXVsg
cjEgXVsgcjAgXQogdGVtcGxhdGU8dHlwZW5hbWUgQml0d2lzZU9wPgotaW5saW5lIEpTQmlnSW50
KiBKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNlT3AoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHksIEV4dHJhRGlnaXRzSGFuZGxpbmcgZXh0cmFEaWdpdHMsIFN5bW1ldHJpY09wIHN5bW1l
dHJpYywgQml0d2lzZU9wJiYgb3ApCitpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0
ZUJpdHdpc2VPcChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgRXh0
cmFEaWdpdHNIYW5kbGluZyBleHRyYURpZ2l0cywgU3ltbWV0cmljT3Agc3ltbWV0cmljLCBCaXR3
aXNlT3AmJiBvcCkKIHsKICAgICB1bnNpZ25lZCB4TGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAg
dW5zaWduZWQgeUxlbmd0aCA9IHktPmxlbmd0aCgpOwpAQCAtMTA5NSw3ICsxMTI1LDcgQEAgaW5s
aW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNlT3AoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHksIEUKIAogICAgIEFTU0VSVChudW1QYWlycyA9PSBzdGQ6Om1pbih4
TGVuZ3RoLCB5TGVuZ3RoKSk7CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gZXh0cmFEaWdp
dHMgPT0gRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSA/IHhMZW5ndGggOiBudW1QYWlyczsKLSAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsK
KyAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5n
dGgpOwogCiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCBudW1QYWlyczsgaSsr
KQpAQCAtMTEwOSw0MiArMTEzOSw0MiBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNv
bHV0ZUJpdHdpc2VPcChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgRQogICAgIGZv
ciAoOyBpIDwgcmVzdWx0TGVuZ3RoOyBpKyspCiAgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQoaSwg
MCk7CiAKLSAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgIHJldHVybiByZXN1
bHQtPnJpZ2h0VHJpbShleGVjLT52bSgpKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNv
bHV0ZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6YWJzb2x1dGVBbmQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpCiB7CiAgICAgYXV0byBkaWdpdE9wZXJhdGlvbiA9IFtdKERpZ2l0IGEsIERpZ2l0IGIpIHsK
ICAgICAgICAgcmV0dXJuIGEgJiBiOwogICAgIH07Ci0gICAgcmV0dXJuIGFic29sdXRlQml0d2lz
ZU9wKHZtLCB4LCB5LCBFeHRyYURpZ2l0c0hhbmRsaW5nOjpTa2lwLCBTeW1tZXRyaWNPcDo6U3lt
bWV0cmljLCBkaWdpdE9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFic29sdXRlQml0d2lzZU9wKGV4
ZWMsIHgsIHksIEV4dHJhRGlnaXRzSGFuZGxpbmc6OlNraXAsIFN5bW1ldHJpY09wOjpTeW1tZXRy
aWMsIGRpZ2l0T3BlcmF0aW9uKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZU9y
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50Ojph
YnNvbHV0ZU9yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewog
ICAgIGF1dG8gZGlnaXRPcGVyYXRpb24gPSBbXShEaWdpdCBhLCBEaWdpdCBiKSB7CiAgICAgICAg
IHJldHVybiBhIHwgYjsKICAgICB9OwotICAgIHJldHVybiBhYnNvbHV0ZUJpdHdpc2VPcCh2bSwg
eCwgeSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0cmljT3A6OlN5bW1ldHJpYywg
ZGlnaXRPcGVyYXRpb24pOworICAgIHJldHVybiBhYnNvbHV0ZUJpdHdpc2VPcChleGVjLCB4LCB5
LCBFeHRyYURpZ2l0c0hhbmRsaW5nOjpDb3B5LCBTeW1tZXRyaWNPcDo6U3ltbWV0cmljLCBkaWdp
dE9wZXJhdGlvbik7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBbmROb3QoVk0m
IHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlQW5kTm90KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewog
ICAgIGF1dG8gZGlnaXRPcGVyYXRpb24gPSBbXShEaWdpdCBhLCBEaWdpdCBiKSB7CiAgICAgICAg
IHJldHVybiBhICYgfmI7CiAgICAgfTsKLSAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0s
IHgsIHksIEV4dHJhRGlnaXRzSGFuZGxpbmc6OkNvcHksIFN5bW1ldHJpY09wOjpOb3RTeW1tZXRy
aWMsIGRpZ2l0T3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3AoZXhlYywg
eCwgeSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0cmljT3A6Ok5vdFN5bW1ldHJp
YywgZGlnaXRPcGVyYXRpb24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlWG9y
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50Ojph
YnNvbHV0ZVhvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsK
ICAgICBhdXRvIGRpZ2l0T3BlcmF0aW9uID0gW10oRGlnaXQgYSwgRGlnaXQgYikgewogICAgICAg
ICByZXR1cm4gYSBeIGI7CiAgICAgfTsKLSAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0s
IHgsIHksIEV4dHJhRGlnaXRzSGFuZGxpbmc6OkNvcHksIFN5bW1ldHJpY09wOjpTeW1tZXRyaWMs
IGRpZ2l0T3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3AoZXhlYywgeCwg
eSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0cmljT3A6OlN5bW1ldHJpYywgZGln
aXRPcGVyYXRpb24pOwogfQogICAgIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9u
ZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCitKU0JpZ0ludCog
SlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIFNp
Z25PcHRpb24gc2lnbk9wdGlvbikKIHsKICAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IHgtPmxl
bmd0aCgpOwogICAgIC8vIFRoZSBhZGRpdGlvbiB3aWxsIG92ZXJmbG93IGludG8gYSBuZXcgZGln
aXQgaWYgYWxsIGV4aXN0aW5nIGRpZ2l0cyBhcmUKQEAgLTExNTgsNyArMTE4OCw5IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2lnbk9w
dGlvbiBzaWduT3B0aW9uKQogICAgIH0KIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IGlu
cHV0TGVuZ3RoICsgd2lsbE92ZXJmbG93OwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVX
aXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVh
dGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRGlnaXQgY2FycnkgPSAxOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgaSsrKSB7CkBAIC0xMTcyLDE2ICsxMjA0LDE4
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCog
eCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQogICAgICAgICBBU1NFUlQoIWNhcnJ5KTsKIAogICAg
IHJlc3VsdC0+c2V0U2lnbihzaWduT3B0aW9uID09IFNpZ25PcHRpb246OlNpZ25lZCk7Ci0gICAg
cmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRy
aW0oZXhlYy0+dm0oKSk7CiB9CiAKIC8vIExpa2UgdGhlIGFib3ZlLCBidXQgeW91IGNhbiBzcGVj
aWZ5IHRoYXQgdGhlIGFsbG9jYXRlZCByZXN1bHQgc2hvdWxkIGhhdmUKIC8vIGxlbmd0aCB7cmVz
dWx0TGVuZ3RofSwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB7eC0+bGVuZ3Ro
KCl9LgotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShWTSYgdm0sIEpTQmlnSW50
KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRl
U3ViT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0
aCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKICAgICBBU1NFUlQocmVzdWx0TGVuZ3Ro
ID49IHgtPmxlbmd0aCgpKTsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0
aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExl
bmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgpOwogICAgIERp
Z2l0IGJvcnJvdyA9IDE7CkBAIC0xMTk0LDcgKzEyMjgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlU3ViT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0
aCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkgPCByZXN1bHRMZW5ndGg7IGkrKykK
ICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBib3Jyb3cpOwogCi0gICAgcmV0dXJuIHJlc3Vs
dC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0oZXhlYy0+dm0o
KSk7CiB9CiAKIC8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMg
cmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCkBAIC0xMzUzLDcgKzEzODcsNyBAQCBTdHJpbmcg
SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1
bnNpZ25lZCByYWRpeCkKICAgICAgICAgSlNCaWdJbnQqKiBkaXZpZGVuZCA9ICZ4OwogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBEaWdpdCBjaHVuazsKLSAgICAgICAgICAgIGFic29sdXRlRGl2
V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVu
ayk7CisgICAgICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoZXhlYywgKmRpdmlk
ZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVuayk7CiAgICAgICAgICAgICBBU1NFUlQocmVz
dCk7CiAKICAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CkBAIC0xNDE0LDggKzE0NDgsNyBA
QCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAgICAgIHJldHVybiB0
aGlzOwogCiAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKLSAgICBK
U0JpZ0ludCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5ld0xlbmd0aCk7
Ci0gICAgUkVMRUFTRV9BU1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgSlNCaWdJbnQqIHRyaW1t
ZWRCaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdMZW5ndGgpOwogICAg
IHN0ZDo6Y29weShkYXRhU3RvcmFnZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3TGVuZ3RoLCB0cmlt
bWVkQmlnSW50LT5kYXRhU3RvcmFnZSgpKTsgCiAKICAgICB0cmltbWVkQmlnSW50LT5zZXRTaWdu
KHRoaXMtPnNpZ24oKSk7CkBAIC0xNDM5LDcgKzE0NzIsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OmFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25lZCByYWRpeCwgdW5z
aWduZQogICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4K
ICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IChiaXRzTWluICsgZGlnaXRCaXRzIC0gMSkg
LyBkaWdpdEJpdHM7CiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aCkgewotICAg
ICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aCh2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggYTYyZTEzOGFkNjYuLjZiZWU3NTg4MDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTUxLDcgKzUx
LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgc3RhdGljIEpTQmln
SW50KiBjcmVhdGVaZXJvKFZNJik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVu
Z3RoKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVdp
dGhMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAg
ICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKFZNJiwgaW50MzJfdCB2YWx1ZSk7CiAgICAg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKFZNJiwgdWludDMyX3QgdmFsdWUpOwpAQCAtMTA4
LDE1ICsxMDksMTUgQEAgcHVibGljOgogICAgIAogICAgIENvbXBhcmlzb25SZXN1bHQgc3RhdGlj
IGNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCogeCwgZG91YmxlIHkpOwogCi0gICAgc3RhdGljIEpT
QmlnSW50KiBhZGQoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBK
U0JpZ0ludCogc3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMg
SlNCaWdJbnQqIGFkZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAg
IHN0YXRpYyBKU0JpZ0ludCogc3ViKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBkaXZpZGUoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHJlbWFpbmRlcihFeGVjU3RhdGUq
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogdW5hcnlN
aW51cyhWTSYsIEpTQmlnSW50KiB4KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHVuYXJ5TWludXMo
RXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgpOwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNl
QW5kKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IGJpdHdpc2VPcihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpT
QmlnSW50KiBiaXR3aXNlWG9yKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBz
dGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VPcihFeGVjU3RhdGUqLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZVhvcihF
eGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiBwcml2YXRlOgogCkBAIC0x
MzYsMTcgKzEzNywxNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB1aW50NjRfdCBjYWxjdWxhdGVN
YXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgcmFkaXgs
IERpZ2l0IGxhc3REaWdpdCwgYm9vbCBzaWduKTsKICAgICAKICAgICBzdGF0aWMgQ29tcGFyaXNv
blJlc3VsdCBhYnNvbHV0ZUNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBz
dGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mLCBKU0JpZ0ludCogeCwg
RGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcik7Cisg
ICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKEV4ZWNTdGF0ZSosIEpT
QmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCYgcmVt
YWluZGVyKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBz
b3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgdW5zaWduZWQsIEpTQmlnSW50KiBy
ZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIG11bHRpcGx5QWNjdW11bGF0ZShKU0JpZ0ludCogbXVs
dGlwbGljYW5kLCBEaWdpdCBtdWx0aXBsaWVyLCBKU0JpZ0ludCogYWNjdW11bGF0b3IsIHVuc2ln
bmVkIGFjY3VtdWxhdG9ySW5kZXgpOwotICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0aEJp
Z0ludERpdmlzb3IoVk0mLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBK
U0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcik7CisgICAgc3RhdGljIHZv
aWQgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogZGl2
aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoq
IHJlbWFpbmRlcik7CiAgICAgCiAgICAgZW51bSBjbGFzcyBMZWZ0U2hpZnRNb2RlIHsKICAgICAg
ICAgU2FtZVNpemVSZXN1bHQsCiAgICAgICAgIEFsd2F5c0FkZE9uZURpZ2l0CiAgICAgfTsKICAg
ICAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYs
IEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSk7CisgICAgc3RhdGlj
IEpTQmlnSW50KiBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiwgSlNCaWdJ
bnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsKICAgICBzdGF0aWMgYm9vbCBw
cm9kdWN0R3JlYXRlclRoYW4oRGlnaXQgZmFjdG9yMSwgRGlnaXQgZmFjdG9yMiwgRGlnaXQgaGln
aCwgRGlnaXQgbG93KTsKIAogICAgIERpZ2l0IGFic29sdXRlSW5wbGFjZUFkZChKU0JpZ0ludCog
c3VtbWFuZCwgdW5zaWduZWQgc3RhcnRJbmRleCk7CkBAIC0xNjQsMjAgKzE2NSwyMCBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXR3aXNlT3A+Ci0gICAgc3Rh
dGljIEpTQmlnSW50KiBhYnNvbHV0ZUJpdHdpc2VPcChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSwgRXh0cmFEaWdpdHNIYW5kbGluZywgU3ltbWV0cmljT3AsIEJpdHdpc2VPcCYmKTsKKyAg
ICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQml0d2lzZU9wKEV4ZWNTdGF0ZSosIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSwgRXh0cmFEaWdpdHNIYW5kbGluZywgU3ltbWV0cmljT3AsIEJpdHdp
c2VPcCYmKTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBbmQoVk0mLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVPcihWTSYs
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0
ZUFuZE5vdChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpTQmln
SW50KiBhYnNvbHV0ZVhvcihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3Rh
dGljIEpTQmlnSW50KiBhYnNvbHV0ZUFuZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVPcihFeGVjU3RhdGUqLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBbmRO
b3QoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNC
aWdJbnQqIGFic29sdXRlWG9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7
CiAKICAgICBlbnVtIGNsYXNzIFNpZ25PcHRpb24gewogICAgICAgICBTaWduZWQsCiAgICAgICAg
IFVuc2lnbmVkCiAgICAgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGRPbmUo
Vk0mLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNv
bHV0ZVN1Yk9uZShWTSYsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpOworICAg
IHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGRPbmUoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgs
IFNpZ25PcHRpb24pOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoRXhlY1N0
YXRlKiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7CiAKICAgICAvLyBEaWdp
dCBhcml0aG1ldGljIGhlbHBlcnMuCiAgICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEs
IERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7CkBAIC0xOTksMTIgKzIwMCwxMiBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIHVuc2ln
bmVkIHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBj
b3B5KFZNJiwgSlNCaWdJbnQqIHgpOworICAgIHN0YXRpYyBKU0JpZ0ludCogY29weShFeGVjU3Rh
dGUqLCBKU0JpZ0ludCogeCk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0VHJpbShWTSYpOwogCiAgICAg
dm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7Ci0g
ICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSwgYm9vbCByZXN1bHRTaWduKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3Vi
KFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOworICAgIHN0
YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5LCBib29sIHJlc3VsdFNpZ24pOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVT
dWIoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24p
OwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3Ro
KTsKICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCBhMDg4YWQxY2JjMi4uZDBlMGEwYTY4
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAKICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6YWRkKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6YWRkKGNhbGxGcmFtZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYWRkaXRpb24uIl9zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKaW5kZXggNjFkNTMzY2Y0NWYuLjY3NzMxNWNiMmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0zNDksNyArMzQ5LDcg
QEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpOworICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZXhlYywgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353097</attachid>
            <date>2018-10-25 11:39:57 -0700</date>
            <delta_ts>2018-11-01 17:13:36 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>bug-190836-20181025153955.patch</filename>
            <type>text/plain</type>
            <size>39499</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2YxMWU5Mzc4MGMyMDcwYjhiYjgyYWExYzZhNmE5MmY0YmExM2Q0Li4zYWQwYzkxYjUxYTk1YmE4
ZDVkOWU4NGFlZjlhNjE4NzA5OTU2N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOC0xMC0yNSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlk
ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdWIp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhvcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURp
dldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxlZnRT
aGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNl
T3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgICogcnVudGltZS9K
U0JpZ0ludC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAg
ICAgICAoSlNDOjpqc1N1Yik6CisgICAgICAgIChKU0M6OmpzTXVsKToKKwogMjAxOC0xMC0yMiAg
S2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIExvY2F0aW9u
ID0gIlJlbGF0aXZlIHRvIEJ1aWxkIFByb2R1Y3RzIiByYXRoZXIgdGhhbiAiUmVsYXRpdmUgdG8g
R3JvdXAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCBkMzA0ODNiZTQ1M2Y0ZjNjMzIwZGY2NjkzOGQ3NDUwN2UzNTcyMzVlLi40ZDAxMmZkODA0ZWNk
MjFhNTE0NzhjOWFhMWMwOTRiMTMxYWMyMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFu
ZCgqdm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpiaXR3aXNlQW5kKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0Jp
Z0ludDo6Yml0d2lzZU9yKCp2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCog
cmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMjk0
LDcgKzEyOTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0
T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50
OjpzdWIoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJ
bnQ6OnN1YihleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9w
MSwgSlNDZWxsCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4o
b3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3Ay
KTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBsZWZ0T3BlcmFu
ZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywg
bGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRPckJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKQEAgLTEzMTYsNyArMTMxNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRPckJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqCiAgICAg
SlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0Jp
Z0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAKLSAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcigqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OworICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGV4ZWMsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXFDZWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYjVlMTkyYzBk
YTQ0Y2E4MTY3MDBmMDcwODU2NzZhYTkxMzE3NThkZS4uYmEyOTNkZjY3MTk5ZDc2ZjNlZmQxYWEx
ZDE3MWY0MWQ0ZjkwODdiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0yNzY0LDEwICsyNzY0LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2QK
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCi0gICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7Ci0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFy
eU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0g
cHJpbVZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGExMzI3YTQ3OWZlMTMzODcxYjg0NTExZDRhNWY5
YTNlNzQ2YTg2Ni4uMGJlNDk3ZWZjMWEyODUwOWMzNzY0YzY4OTdhMTUwMTVmNDljN2IwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC01MzQsNyArNTM0LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N1YikKIAogICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1YihleGVjLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKKyAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVUVVJO
X1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoZXhlYywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAg
ICAgICAgICAgfSk7CkBAIC02NjIsNyArNjYzLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2JpdGFuZCkKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
ICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVUVVJOX1BST0ZJ
TEVEKG9wX2JpdGFuZCwgcmVzdWx0KTsKICAgICAgICAgfQpAQCAtNjgyLDcgKzY4Myw3IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3Iodm0sIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3Io
ZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAg
ICAgICAgIFJFVFVSTl9QUk9GSUxFRChvcF9iaXRvciwgcmVzdWx0KTsKICAgICAgICAgfQpAQCAt
NzAyLDcgKzcwMyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0
d2lzZVhvcih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmJpdHdpc2VYb3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggNGFiNWE1MjM1
M2ZkMWFlOTIwZDExYmIzNGJjMDZlYjU0ZmY4OGVlNy4uNmQ1YzZjYzM4Yzg2MjQ5NTJhZmIxZGM0
MjUxOTcxMTk2YjExY2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcApAQCAtODEsNyArODEsNyBAQCBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbAogCiBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oVk0mIHZtKQogewotICAgIEpTQmlnSW50KiB6ZXJv
QmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMCk7CisgICAgSlNCaWdJbnQqIHplcm9CaWdJ
bnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAwKTsKICAgICByZXR1cm4gemVyb0Jp
Z0ludDsKIH0KIApAQCAtOTEsOSArOTEsMjMgQEAgaW5saW5lIHNpemVfdCBKU0JpZ0ludDo6YWxs
b2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBzaXplV2l0aFBhZGRpbmcg
KyBsZW5ndGggKiBzaXplb2YoRGlnaXQpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCitKU0JpZ0ludCogSlNCaWdJbnQ6
OmNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBsZW5ndGgpCit7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIGlmIChsZW5ndGggPiBtYXhMZW5ndGgpIHsK
KyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVu
Z3RoKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2Vk
KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUo
bGVuZ3RoKSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYmlnSW50KTsKICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTAzLDggKzExNyw3IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAKKyAgICBKU0JpZ0ludCog
YmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgaWYgKHZhbHVl
IDwgMCkgewogICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pigt
MSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwogICAgICAgICBiaWdJbnQtPnNldFNp
Z24odHJ1ZSk7CkBAIC0xMTksNyArMTMyLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVG
cm9tKFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVX
aXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxE
aWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTMwLDggKzE0Myw3IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAg
ICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKICAgICBpZiAoc2l6ZW9mKERpZ2l0
KSA9PSA4KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZt
LCAxKTsKLSAgICAgICAgCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVu
Z3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICAg
ICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24o
dHJ1ZSk7CkBAIC0xNDEsOCArMTUzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9t
KFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGJpZ0ludDsKICAgICB9CiAg
ICAgCi0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDIpOwotICAg
IAorICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAy
KTsKICAgICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAgICAgYm9vbCBzaWduID0gZmFsc2U7CiAgICAg
aWYgKHZhbHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3Nyw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6
Y3JlYXRlRnJvbShWTSYgdm0sIGJvb2wgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAg
cmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZCh2bSwgMSk7CisgICAgQVNTRVJUKGJpZ0ludCk7CiAgICAgYmlnSW50LT5z
ZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50
OwogfQpAQCAtMjM0LDYgKzI0Niw3IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFk
ZChEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQpCiBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRp
cGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgaWYgKHgtPmlzWmVybygpKQogICAgICAgICByZXR1cm4geDsKQEAgLTI0MSw3
ICsyNTQsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywg
SlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICByZXR1cm4geTsKIAogICAgIHVuc2ln
bmVkIHJlc3VsdExlbmd0aCA9IHgtPmxlbmd0aCgpICsgeS0+bGVuZ3RoKCk7Ci0gICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgp
OworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aChleGVj
LCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsrKQpAQCAtMjc3
LDggKzI5MSwxMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmRpdmlkZShFeGVjU3RhdGUqIGV4ZWMs
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIAogICAgICAgICBEaWdpdCByZW1haW5kZXI7CiAg
ICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgeCwgZGl2aXNvciwgJnF1b3Rp
ZW50LCByZW1haW5kZXIpOwotICAgIH0gZWxzZQotICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJ
bnREaXZpc29yKHZtLCB4LCB5LCAmcXVvdGllbnQsIG51bGxwdHIpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoZXhlYywgeCwgeSwgJnF1b3RpZW50
LCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgfQogCiAgICAgcXVvdGllbnQtPnNldFNpZ24ocmVzdWx0U2lnbik7CiAgICAgcmV0dXJu
IHF1b3RpZW50LT5yaWdodFRyaW0odm0pOwpAQCAtMjg4LDcgKzMwNCw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6Y29weShWTSYgdm0sIEpTQmlnSW50KiB4KQogewogICAgIEFTU0VSVCgheC0+aXNa
ZXJvKCkpOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVu
Z3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpj
cmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5sZW5ndGgoKSk7CiAgICAgc3RkOjpjb3B5
KHgtPmRhdGFTdG9yYWdlKCksIHgtPmRhdGFTdG9yYWdlKCkgKyB4LT5sZW5ndGgoKSwgcmVzdWx0
LT5kYXRhU3RvcmFnZSgpKTsKICAgICByZXN1bHQtPnNldFNpZ24oeC0+c2lnbigpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMzAwLDYgKzMxNiw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6dW5h
cnlNaW51cyhWTSYgdm0sIEpTQmlnSW50KiB4KQogICAgICAgICByZXR1cm4geDsKIAogICAgIEpT
QmlnSW50KiByZXN1bHQgPSBjb3B5KHZtLCB4KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKICAgICBy
ZXN1bHQtPnNldFNpZ24oIXgtPnNpZ24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTMz
MSwyMyArMzQ4LDI2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBpZiAoIXJlbWFpbmRlckRp
Z2l0KQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogCi0gICAgICAgIHJlbWFp
bmRlciA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgICAgICByZW1haW5kZXIgPSBjcmVh
dGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAgcmVtYWluZGVyLT5zZXREaWdp
dCgwLCByZW1haW5kZXJEaWdpdCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFic29sdXRlRGl2V2l0
aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksIG51bGxwdHIsICZyZW1haW5kZXIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoZXhlYywgeCwgeSwgbnVs
bHB0ciwgJnJlbWFpbmRlcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOworICAgIH0KIAogICAgIHJlbWFpbmRlci0+c2V0U2lnbih4LT5zaWduKCkpOwogICAg
IHJldHVybiByZW1haW5kZXItPnJpZ2h0VHJpbSh2bSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0lu
dDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmln
SW50OjphZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHhTaWduID0geC0+c2lnbigpOwogCiAg
ICAgLy8geCArIHkgPT0geCArIHkKICAgICAvLyAteCArIC15ID09IC0oeCArIHkpCiAgICAgaWYg
KHhTaWduID09IHktPnNpZ24oKSkKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKHZtLCB4LCB5
LCB4U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZChleGVjLCB4LCB5LCB4U2lnbik7
CiAKICAgICAvLyB4ICsgLXkgPT0geCAtIHkgPT0gLSh5IC0geCkKICAgICAvLyAteCArIHkgPT0g
eSAtIHggPT0gLSh4IC0geSkKQEAgLTM1OCwxMyArMzc4LDE0IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNv
bHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIo
Vk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OnN1
YihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24gPSB4LT5zaWduKCk7CiAgICAgaWYgKHhT
aWduICE9IHktPnNpZ24oKSkgewogICAgICAgICAvLyB4IC0gKC15KSA9PSB4ICsgeQogICAgICAg
ICAvLyAoLXgpIC0geSA9PSAtKHggKyB5KQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0s
IHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHgsIHksIHhT
aWduKTsKICAgICB9CiAgICAgLy8geCAtIHkgPT0gLSh5IC0geCkKICAgICAvLyAoLXgpIC0gKC15
KSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzc1LDggKzM5NiwxMSBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICByZXR1cm4g
YWJzb2x1dGVTdWIodm0sIHksIHgsICF4U2lnbik7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6
Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBK
U0JpZ0ludDo6Yml0d2lzZUFuZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkp
CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZUFuZCh2bSwgeCwgeSk7CiAgICAgCkBAIC0zODQsMTEg
KzQwOCwxMiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGludCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4
LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpICsgMTsKICAgICAgICAgLy8gKC14KSAmICgteSkgPT0g
fih4LTEpICYgfih5LTEpID09IH4oKHgtMSkgfCAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgt
MSkgfCAoeS0xKSkgKyAxKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJP
bmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRl
U3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7Ci0gICAgICAgIHJlc3VsdCA9IGFic29sdXRlT3Io
dm0sIHJlc3VsdCwgeTEpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJP
bmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1
bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRl
U3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVP
cih2bSwgcmVzdWx0LCB5MSk7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCBy
ZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiAgICAgfQogCiAgICAgQVNTRVJUKHgtPnNpZ24o
KSAhPSB5LT5zaWduKCkpOwpAQCAtMzk3LDExICs0MjIsMTMgQEAgSlNCaWdJbnQqIEpTQmlnSW50
OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBz
dGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCAmICgteSkgPT0geCAmIH4oeS0xKSA9PSB4
ICYgfih5LTEpCi0gICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCBhYnNvbHV0ZVN1Yk9u
ZSh2bSwgeSwgeS0+bGVuZ3RoKCkpKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgs
IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKSk7CiB9CiAKLUpTQmlnSW50KiBK
U0JpZ0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNC
aWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKwogICAgIHVuc2lnbmVk
IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAKICAg
ICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQpAQCAtNDEwLDEwICs0MzcsMTAgQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpCiAgICAgaWYgKHgtPnNpZ24oKSAmJiB5LT5zaWduKCkpIHsKICAgICAgICAgLy8gKC14KSB8
ICgteSkgPT0gfih4LTEpIHwgfih5LTEpID09IH4oKHgtMSkgJiAoeS0xKSkKICAgICAgICAgLy8g
PT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAxKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJz
b2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9
IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBK
U0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5sZW5ndGgoKSk7CiAgICAg
ICAgIHJlc3VsdCA9IGFic29sdXRlQW5kKHZtLCByZXN1bHQsIHkxKTsKLSAgICAgICAgcmV0dXJu
IGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgICAg
IHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7
CiAgICAgfQogICAgIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTQy
MywxMyArNDUwLDE2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAg
ICAgLy8geCB8ICgteSkgPT0geCB8IH4oeS0xKSA9PSB+KCh5LTEpICZ+IHgpID09IC0oKCh5LTEp
ICZ+IHgpICsgMSkKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHks
IHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4
ZWMsIHksIHJlc3VsdExlbmd0aCk7CiAgICAgcmVzdWx0ID0gYWJzb2x1dGVBbmROb3Qodm0sIHJl
c3VsdCwgeCk7Ci0gICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRp
b246OlNpZ25lZCk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2ln
bk9wdGlvbjo6U2lnbmVkKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKFZN
JiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlWG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkKICAgICAgICAgcmV0
dXJuIGFic29sdXRlWG9yKHZtLCB4LCB5KTsKICAgICAKQEAgLTQzNyw4ICs0NjcsOCBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmJpdHdpc2VYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpCiAgICAgICAgIGludCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+
bGVuZ3RoKCkpOwogICAgICAgICAKICAgICAgICAgLy8gKC14KSBeICgteSkgPT0gfih4LTEpIF4g
fih5LTEpID09ICh4LTEpIF4gKHktMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29s
dXRlU3ViT25lKHZtLCB4LCByZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBh
YnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgSlNC
aWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOwogICAgICAg
ICByZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeTEpOwogICAgIH0KICAgICBBU1NFUlQo
eC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00NDksOSArNDc5LDExIEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAg
ICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggXiAoLXkpID09IHggXiB+KHkt
MSkgPT0gfih4IF4gKHktMSkpID09IC0oKHggXiAoeS0xKSkgKyAxKQotICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgIHJlc3VsdCA9IGFic29s
dXRlWG9yKHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVz
dWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVj
LCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQpAQCAtNzUxLDEwICs3ODMsMTIgQEAgaW5saW5lIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0
IEpTQmlnSW50OjphYnNvbHV0ZUNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW4KICAgICByZXR1
cm4geC0+ZGlnaXQoaSkgPiB5LT5kaWdpdChpKSA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJU
aGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0lu
dDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVz
dWx0U2lnbikKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoRXhlY1N0YXRlKiBleGVj
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworCiAgICAgaWYgKHgtPmxlbmd0aCgpIDwgeS0+bGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeSwgeCwgcmVzdWx0U2lnbik7CisgICAgICAg
IHJldHVybiBhYnNvbHV0ZUFkZChleGVjLCB5LCB4LCByZXN1bHRTaWduKTsKIAogICAgIGlmICh4
LT5pc1plcm8oKSkgewogICAgICAgICBBU1NFUlQoeS0+aXNaZXJvKCkpOwpAQCAtNzY0LDggKzc5
OCw5IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnCiAgICAgaWYgKHktPmlzWmVybygpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4IDogdW5hcnlNaW51cyh2bSwg
eCk7CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgo
dm0sIHgtPmxlbmd0aCgpICsgMSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHgtPmxlbmd0aCgpICsg
MSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIERpZ2l0
IGNhcnJ5ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxlbmd0
aCgpOyBpKyspIHsKQEAgLTgwNiw3ICs4NDEsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlU3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwog
ICAgIGlmIChjb21wYXJpc29uUmVzdWx0ID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsKQogICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwogCi0gICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZt
LCB4LT5sZW5ndGgoKSk7CisKICAgICBEaWdpdCBib3Jyb3cgPSAwOwogICAgIHVuc2lnbmVkIGkg
PSAwOwogICAgIGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODUxLDcgKzg4Nyw3
IEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpT
QmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVu
Z3RoKCk7CiAgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKICAgICAgICAgaWYgKCpxdW90
aWVudCA9PSBudWxscHRyKQotICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGgodm0sIGxlbmd0aCk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsgCiAKICAgICAgICAgZm9y
IChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICBEaWdpdCBx
ID0gZGlnaXREaXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsK
QEAgLTg2OSw3ICs5MDUsNyBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhEaWdpdERp
dmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSgogLy8gQm90aCB7cXVv
dGllbnR9IGFuZCB7cmVtYWluZGVyfSBhcmUgb3B0aW9uYWwsIGZvciBjYWxsZXJzIHRoYXQgYXJl
IG9ubHkKIC8vIGludGVyZXN0ZWQgaW4gb25lIG9mIHRoZW0uCiAvLyBTZWUgS251dGgsIFZvbHVt
ZSAyLCBzZWN0aW9uIDQuMy4xLCBBbGdvcml0aG0gRC4KLXZvaWQgSlNCaWdJbnQ6OmFic29sdXRl
RGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50
KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcikKK3Zv
aWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoRXhlY1N0YXRlKiBleGVj
LCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3Rp
ZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcikKIHsKICAgICBBU1NFUlQoZGl2aXNvci0+bGVuZ3Ro
KCkgPj0gMik7CiAgICAgQVNTRVJUKGRpdmlkZW5kLT5sZW5ndGgoKSA+PSBkaXZpc29yLT5sZW5n
dGgoKSk7CkBAIC04ODMsMTIgKzkxOSwxNiBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldp
dGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludAogICAg
IAogICAgIC8vIFRoZSBxdW90aWVudCB0byBiZSBjb21wdXRlZC4KICAgICBKU0JpZ0ludCogcSA9
IG51bGxwdHI7Ci0gICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCi0gICAgICAgIHEgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCBtICsgMSk7CisgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsK
KyAgICAgICAgcSA9IGNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgbSArIDEpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChxKTsKKyAgICB9CiAgICAgCiAgICAgLy8gSW4gZWFjaCBpdGVyYXRpb24sIHtx
aGF0dn0gaG9sZHMge2Rpdmlzb3J9ICoge2N1cnJlbnQgcXVvdGllbnQgZGlnaXR9LgogICAgIC8v
ICJ2IiBpcyB0aGUgYm9vaydzIG5hbWUgZm9yIHtkaXZpc29yfSwgInFoYXQiIHRoZSBjdXJyZW50
IHF1b3RpZW50IGRpZ2l0LgotICAgIEpTQmlnSW50KiBxaGF0diA9IGNyZWF0ZVdpdGhMZW5ndGgo
dm0sIG4gKyAxKTsKKyAgICBKU0JpZ0ludCogcWhhdHYgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMs
IG4gKyAxKTsKKyAgICBpZiAoIXFoYXR2KQorICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8g
RDEuCiAgICAgLy8gTGVmdC1zaGlmdCBpbnB1dHMgc28gdGhhdCB0aGUgZGl2aXNvcidzIE1TQiBp
cyBzZXQuIFRoaXMgaXMgbmVjZXNzYXJ5CkBAIC04OTgsMTIgKzkzOCwxNiBAQCB2b2lkIEpTQmln
SW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlk
ZW5kLCBKU0JpZ0ludAogICAgIERpZ2l0IGxhc3REaWdpdCA9IGRpdmlzb3ItPmRpZ2l0KG4gLSAx
KTsKICAgICB1bnNpZ25lZCBzaGlmdCA9IHNpemVvZihsYXN0RGlnaXQpID09IDggPyBjbHo2NChs
YXN0RGlnaXQpIDogY2x6MzIobGFzdERpZ2l0KTsKIAotICAgIGlmIChzaGlmdCA+IDApCi0gICAg
ICAgIGRpdmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkodm0sIGRpdmlzb3IsIHNo
aWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7CisgICAgaWYgKHNoaWZ0ID4gMCkg
eworICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KGV4ZWMsIGRp
dmlzb3IsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGRpdmlzb3IpOworICAgIH0KIAogICAgIC8vIEhvbGRzIHRoZSAoY29udGlu
dW91c2x5IHVwZGF0ZWQpIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBkaXZpZGVuZCwgd2hpY2gKICAg
ICAvLyBldmVudHVhbGx5IGJlY29tZXMgdGhlIHJlbWFpbmRlci4KLSAgICBKU0JpZ0ludCogdSA9
IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hp
ZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCk7CisgICAgSlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkoZXhlYywgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpB
bHdheXNBZGRPbmVEaWdpdCk7CisgICAgaWYgKCF1KQorICAgICAgICByZXR1cm47CiAKICAgICAv
LyBEMi4KICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGRpdmlkZW5kJ3MgZGlnaXQgKGxpa2UgdGhl
ICJncmFkIHNjaG9vbCIgYWxnb3JpdGhtKS4KQEAgLTEwMzEsMTQgKzEwNzUsMTYgQEAgdm9pZCBK
U0JpZ0ludDo6aW5wbGFjZVJpZ2h0U2hpZnQodW5zaWduZWQgc2hpZnQpCiB9CiAKIC8vIEFsd2F5
cyBjb3BpZXMgdGhlIGlucHV0LCBldmVuIHdoZW4ge3NoaWZ0fSA9PSAwLgotSlNCaWdJbnQqIEpT
QmlnSW50OjphYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoVk0mIHZtLCBKU0JpZ0ludCogeCwg
dW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6
YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgs
IHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKHNoaWZ0
IDwgZGlnaXRCaXRzKTsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKIAogICAgIHVuc2lnbmVk
IG4gPSB4LT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBtb2RlID09IExl
ZnRTaGlmdE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0ID8gbiArIDEgOiBuOwotICAgIEpTQmlnSW50
KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmln
SW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFzaGlmdCkg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgaSsrKQpAQCAtMTA5NSw4ICsx
MTQxLDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNlT3AoVk0m
IHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIEUKIAogICAgIEFTU0VSVChudW1QYWlycyA9
PSBzdGQ6Om1pbih4TGVuZ3RoLCB5TGVuZ3RoKSk7CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3Ro
ID0gZXh0cmFEaWdpdHMgPT0gRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSA/IHhMZW5ndGggOiBu
dW1QYWlyczsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVz
dWx0TGVuZ3RoKTsKLQorICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKHZtLCByZXN1bHRMZW5ndGgpOwogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAo
OyBpIDwgbnVtUGFpcnM7IGkrKykKICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBvcCh4LT5k
aWdpdChpKSwgeS0+ZGlnaXQoaSkpKTsKQEAgLTExNDQsNyArMTE4OSw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6YWJzb2x1dGVYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAg
ICAgcmV0dXJuIGFic29sdXRlQml0d2lzZU9wKHZtLCB4LCB5LCBFeHRyYURpZ2l0c0hhbmRsaW5n
OjpDb3B5LCBTeW1tZXRyaWNPcDo6U3ltbWV0cmljLCBkaWdpdE9wZXJhdGlvbik7CiB9CiAgICAg
Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgs
IFNpZ25PcHRpb24gc2lnbk9wdGlvbikKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRP
bmUoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQog
ewogICAgIHVuc2lnbmVkIGlucHV0TGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgLy8gVGhlIGFk
ZGl0aW9uIHdpbGwgb3ZlcmZsb3cgaW50byBhIG5ldyBkaWdpdCBpZiBhbGwgZXhpc3RpbmcgZGln
aXRzIGFyZQpAQCAtMTE1OCw3ICsxMjAzLDkgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0
ZUFkZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCiAgICAg
fQogCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gaW5wdXRMZW5ndGggKyB3aWxsT3ZlcmZs
b3c7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExl
bmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVz
dWx0TGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBEaWdpdCBjYXJyeSA9IDE7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0
TGVuZ3RoOyBpKyspIHsKQEAgLTExNzIsMTYgKzEyMTksMTYgQEAgSlNCaWdJbnQqIEpTQmlnSW50
OjphYnNvbHV0ZUFkZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRp
b24pCiAgICAgICAgIEFTU0VSVCghY2FycnkpOwogCiAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ25P
cHRpb24gPT0gU2lnbk9wdGlvbjo6U2lnbmVkKTsKLSAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRy
aW0odm0pOworICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShleGVjLT52bSgpKTsKIH0KIAot
Ly8gTGlrZSB0aGUgYWJvdmUsIGJ1dCB5b3UgY2FuIHNwZWNpZnkgdGhhdCB0aGUgYWxsb2NhdGVk
IHJlc3VsdCBzaG91bGQgaGF2ZQotLy8gbGVuZ3RoIHtyZXN1bHRMZW5ndGh9LCB3aGljaCBtdXN0
IGJlIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHt4LT5sZW5ndGgoKX0uCi1KU0JpZ0ludCogSlNCaWdJ
bnQ6OmFic29sdXRlU3ViT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExl
bmd0aCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUoRXhlY1N0YXRlKiBleGVj
LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKQogewogICAgIEFTU0VSVCgheC0+
aXNaZXJvKCkpOwogICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPj0geC0+bGVuZ3RoKCkpOwotICAg
IEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOwor
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0
aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgRGlnaXQgYm9ycm93ID0gMTsKQEAgLTEx
OTQsNyArMTI0MSw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZt
LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKQogICAgIGZvciAodW5zaWduZWQg
aSA9IGxlbmd0aDsgaSA8IHJlc3VsdExlbmd0aDsgaSsrKQogICAgICAgICByZXN1bHQtPnNldERp
Z2l0KGksIGJvcnJvdyk7CiAKLSAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAg
IHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShleGVjLT52bSgpKTsKIH0KIAogLy8gTG9va3VwIHRh
YmxlIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2YgYml0cyByZXF1aXJlZCBwZXIgY2hhcmFjdGVy
IG9mIGEKQEAgLTEzNTQsOCArMTQwMSw2IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5l
cmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJhZGl4KQogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBEaWdpdCBjaHVuazsKICAgICAgICAgICAgIGFic29sdXRlRGl2
V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVu
ayk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdCk7Ci0KICAgICAgICAgICAgIGRpdmlkZW5kID0g
JnJlc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2h1bmtDaGFyczsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tj
aHVuayAlIHJhZGl4XSk7CkBAIC0xNDE0LDggKzE0NTksNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAgICAgIHJldHVybiB0aGlzOwogCiAgICAgdW5zaWduZWQg
bmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKLSAgICBKU0JpZ0ludCogdHJpbW1lZEJpZ0lu
dCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5ld0xlbmd0aCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
dHJpbW1lZEJpZ0ludCk7CisgICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVXaXRo
TGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdMZW5ndGgpOwogICAgIHN0ZDo6Y29weShkYXRhU3RvcmFn
ZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3TGVuZ3RoLCB0cmltbWVkQmlnSW50LT5kYXRhU3RvcmFn
ZSgpKTsgCiAKICAgICB0cmltbWVkQmlnSW50LT5zZXRTaWduKHRoaXMtPnNpZ24oKSk7CkBAIC0x
NDM5LDcgKzE0ODMsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEV4ZWNTdGF0
ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZQogICAgICAgICAgICAgLy8g
RGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KICAgICAgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IChiaXRzTWluICsgZGlnaXRCaXRzIC0gMSkgLyBkaWdpdEJpdHM7CiAgICAgICAg
ICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aCkgewotICAgICAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhV
bmNoZWNrZWQodm0sIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKaW5kZXggYTYyZTEzOGFkNjY1NTNjOTM5NTg2YmU2OTVhMWRlMTVhZTM4ZTQ1MC4uYmYz
NGVmM2MyYWRiZGNlNmI4NWJmMjcxMTgxYjQ4MTE0OTE2Yjk4NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBwcm90b3R5cGUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhWTSYp
OwotICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aChWTSYsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3Ro
VW5jaGVja2VkKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbShWTSYsIGludDMyX3QgdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3Jl
YXRlRnJvbShWTSYsIHVpbnQzMl90IHZhbHVlKTsKQEAgLTEwOCwxNSArMTA5LDE1IEBAIHB1Ymxp
YzoKICAgICAKICAgICBDb21wYXJpc29uUmVzdWx0IHN0YXRpYyBjb21wYXJlVG9Eb3VibGUoSlNC
aWdJbnQqIHgsIGRvdWJsZSB5KTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWRkKFZNJiwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHN1YihWTSYsIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBhZGQoRXhlY1N0
YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHN1
YihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0Jp
Z0ludCogZGl2aWRlKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAgICAg
c3RhdGljIEpTQmlnSW50KiByZW1haW5kZXIoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHVuYXJ5TWludXMoVk0mLCBKU0JpZ0ludCog
eCk7CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoVk0mLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKFZNJiwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VYb3IoVk0m
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lz
ZUFuZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBK
U0JpZ0ludCogYml0d2lzZU9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7
CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlWG9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSk7CiAKIHByaXZhdGU6CiAKQEAgLTEzOSwxNCArMTQwLDE0IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZNJiwgSlNC
aWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1h
aW5kZXIpOwogICAgIHN0YXRpYyB2b2lkIGludGVybmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNv
dXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCB1bnNpZ25lZCwgSlNCaWdJbnQqIHJl
c3VsdCk7CiAgICAgc3RhdGljIHZvaWQgbXVsdGlwbHlBY2N1bXVsYXRlKEpTQmlnSW50KiBtdWx0
aXBsaWNhbmQsIERpZ2l0IG11bHRpcGxpZXIsIEpTQmlnSW50KiBhY2N1bXVsYXRvciwgdW5zaWdu
ZWQgYWNjdW11bGF0b3JJbmRleCk7Ci0gICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoQmln
SW50RGl2aXNvcihWTSYsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpT
QmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgdm9p
ZCBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiBkaXZp
ZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50Kiog
cmVtYWluZGVyKTsKICAgICAKICAgICBlbnVtIGNsYXNzIExlZnRTaGlmdE1vZGUgewogICAgICAg
ICBTYW1lU2l6ZVJlc3VsdCwKICAgICAgICAgQWx3YXlzQWRkT25lRGlnaXQKICAgICB9OwogICAg
IAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KFZNJiwg
SlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsKKyAgICBzdGF0aWMg
SlNCaWdJbnQqIGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3RhdGUqLCBKU0JpZ0lu
dCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUpOwogICAgIHN0YXRpYyBib29sIHBy
b2R1Y3RHcmVhdGVyVGhhbihEaWdpdCBmYWN0b3IxLCBEaWdpdCBmYWN0b3IyLCBEaWdpdCBoaWdo
LCBEaWdpdCBsb3cpOwogCiAgICAgRGlnaXQgYWJzb2x1dGVJbnBsYWNlQWRkKEpTQmlnSW50KiBz
dW1tYW5kLCB1bnNpZ25lZCBzdGFydEluZGV4KTsKQEAgLTE3Niw4ICsxNzcsOCBAQCBwcml2YXRl
OgogICAgICAgICBVbnNpZ25lZAogICAgIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29s
dXRlQWRkT25lKFZNJiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24pOwotICAgIHN0YXRpYyBKU0Jp
Z0ludCogYWJzb2x1dGVTdWJPbmUoVk0mLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSosIEpT
QmlnSW50KiB4LCBTaWduT3B0aW9uKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3Vi
T25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpOwogCiAg
ICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJzLgogICAgIHN0YXRpYyBEaWdpdCBkaWdpdEFk
ZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpOwpAQCAtMjAzLDcgKzIwNCw3IEBAIHBy
aXZhdGU6CiAgICAgSlNCaWdJbnQqIHJpZ2h0VHJpbShWTSYpOwogCiAgICAgdm9pZCBpbnBsYWNl
TXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7Ci0gICAgc3RhdGljIEpT
QmlnSW50KiBhYnNvbHV0ZUFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCBy
ZXN1bHRTaWduKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkKEV4ZWNTdGF0ZSos
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKICAgICBzdGF0aWMg
SlNCaWdJbnQqIGFic29sdXRlU3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29s
IHJlc3VsdFNpZ24pOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUodW5z
aWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAKaW5kZXggYTA4OGFkMWNiYzIwNzhkNjIwNWFmZjBhYmFkM2RhNzNhOTZmNWIyNi4uODhh
MmI3ZTA4YzVmNzYyYjU4NjIzNDFiNjBkMWE1ZjEzY2U3N2ZiMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTY5LDggKzY5LDExIEBAIE5FVkVS
X0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjphZGQoY2FsbEZyYW1lLCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYWRkaXRpb24uIl9zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKaW5kZXggNjFkNTMzY2Y0NWY2YmQwMzJkYjk4ZWI2ZDRlMjQwNDJh
YjRhNTJiMy4uYjM2OTc5YTIxZjM5ZmRkNjZiNWIwZGQ4MWNkMjg2MTVlNDcyYTZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtMzQ4LDggKzM0OCwx
MSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdWIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAg
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKKyAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3Vi
dHJhY3Rpb24uIl9zKTsKICAgICB9CkBAIC0zNjgsOCArMzcxLDExIEBAIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBqc011bChFeGVjU3RhdGUqIHN0YXRlLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6bXVsdGlwbHkoc3RhdGUsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjptdWx0aXBseShzdGF0ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQogCiAgICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlv
bi4iX3MpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5N2E1ZTNhZGUxODY2NjdmMmJkZmFhODBkMTAy
YWZmMDhiMmU2MzY2Li45MmNiOTgwZjAxZWU2NTM0NTI5MTAxMTBjZDg2NzUzZjAwNjNjMmZjIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE4LTEwLTI1ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KKworICAgICAgICBbQmlnSW50XSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCBzaG91bGQg
dGhyb3cgd2hlbiBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIEpTQmlnSW50OjptYXhMZW5ndGgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDgzNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2Jp
Zy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qczogQWRkZWQuCisKIDIwMTgtMTAtMjIgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIERGR0Fic3RyYWN0VmFsdWU6Om1f
YXJyYXlNb2RlcyBleHBlY3RzIEluZGV4aW5nTW9kZSB2YWx1ZXMsIG5vdCBJbmRleGluZ1R5cGUu
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWMzOTM4N2JhMTA4NzM1OTdkYTk5MDE1MTBmMDcyYzE1N2VhOWQ5NwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpA
QCAtMCwwICsxLDYzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZURGR0pJVD1mYWxzZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYg
KCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGxz
aGlmdCh5KSB7CisgICAgbGV0IG91dCA9IDFuOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeTsg
aSsrKSB7CisgICAgICAgIG91dCAqPSAybjsKKyAgICB9CisKKyAgICByZXR1cm4gb3V0OworfQor
CitsZXQgYSA9IGxzaGlmdCgxNjM4NCAqIDYzKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBp
KyspIHsKKyAgICBhICo9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1bjsKK30KKwordHJ5IHsKKyAgICBs
ZXQgYiA9IGEgKyAxbjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsK
KyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9m
TWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEg
LSAoLTFuKTsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJv
ciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBh
c3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5
RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgKiAoLTFu
KTsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0
IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQo
ZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3Is
IGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgLyBhOworICAgIGFz
c2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2Ug
PT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDog
IiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gLWEgJiAtMW47CisgICAgYXNzZXJ0KGZh
bHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0
IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7
Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSBhIF4gLTFuOworICAgIGFzc2VydChmYWxzZSwgIlNo
b3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRp
b24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1v
cnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353664</attachid>
            <date>2018-11-01 17:13:40 -0700</date>
            <delta_ts>2018-11-08 06:59:01 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>bug-190836-20181101211338.patch</filename>
            <type>text/plain</type>
            <size>39474</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODdmZTk5YjljY2NmYWZhZWUyYWM0NWQ3YTQ5MzIwYTM0YzEzMWUyLi42MzM2YTU2MTFkZTJmNjkx
YzViOWMxOTUxNzFhNWNkZjZlYzc0ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNy
ZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRp
dmlkZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhv
cik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVE
aXZXaXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3
aXNlT3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTEwLTMxICBU
YWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkanVzdCBpbmxp
bmluZyB0aHJlc2hvbGQgZm9yIG5ldyBieXRlY29kZSBmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGQzMDQ4M2JlNDUzZjRmM2MzMjBkZjY2
OTM4ZDc0NTA3ZTM1NzIzNWUuLjRkMDEyZmQ4MDRlY2QyMWE1MTQ3OGM5YWExYzA5NGIxMzFhYzIx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
MzQ5LDcgKzM0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVCaXRBbmQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1CiAKICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKCp2bSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICAgICAgfQpAQCAtMzc2LDcgKzM3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVCaXRPcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlCiAK
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3IoKnZtLCBXVEY6
OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lz
ZU9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTEyOTQsNyArMTI5NCw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50
Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4o
b3AyKTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OnN1Yigqdm0sIGxlZnRPcGVyYW5kLCBy
aWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGV4ZWMsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
QW5kQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQpAQCAt
MTMwNSw3ICsxMzA1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJp
Z0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwKICAgICBKU0JpZ0ludCog
bGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdo
dE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwogICAgIAotICAgIHJldHVybiBKU0Jp
Z0ludDo6Yml0d2lzZUFuZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJl
dHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQpAQCAtMTMxNiw3ICsxMzE2LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCoKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBq
c0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nh
c3Q8SlNCaWdJbnQqPihvcDIpOwogICAgIAotICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9y
KCp2bSwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50Ojpi
aXR3aXNlT3IoZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCAxZThmZTAwNDUwNDFlYjM5MmRhZGM5Y2U0M2Y0ODE1MjEy
ZTM5MWQyLi41MTFjNDJmM2Q0ZjExYzM5YThiODVjZDJkMzYyMDcxYjIxOWQ1ZGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTI3NjYsMTAgKzI3
NjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0g
b3BlcmFuZC50b1ByaW1pdGl2ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
IHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBh
c0JpZ0ludChwcmltVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwotICAgIH0KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1W
YWx1ZSkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZXhlYyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCA3MGUzNDQ5MjQ5MWFiZWE1NzcxNzU2MzQ2YTcxNWRiZWM1ZTllMTI3Li5lNzRlODAwNzI5ZmVk
ZGVhNTdjNGQ3ZmVjYTc2MzczZTc1YTU0NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTU1OSw3ICs1NTksOCBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6c3ViKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6c3ViKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7
CiAgICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChleGVj
LCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICB9KTsKQEAgLTY5NSw3ICs2
OTYsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0YW5kKQogICAgIENIRUNLX0VYQ0VQ
VElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQo
dm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
OjpiaXR3aXNlQW5kKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKICAgICAgICAgfQpA
QCAtNzE2LDcgKzcxNyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKICAgICBD
SEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpi
aXR3aXNlT3Iodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogICAg
ICAgICB9CkBAIC03MzcsNyArNzM4LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhv
cikKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpiaXR3aXNlWG9yKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZVhvcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAg
ICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRl
eCA0YWI1YTUyMzUzZmQxYWU5MjBkMTFiYjM0YmMwNmViNTRmZjg4ZWU3Li5iYmU1YTk5OGY5NDAz
YmJlYWQyOGZmODA0MDE2ODM4ZmE3ZmZmZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFN0cnVjdHVyZSogSlNCaWdJbnQ6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYgdm0pCiB7Ci0gICAgSlNC
aWdJbnQqIHplcm9CaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAwKTsKKyAgICBKU0JpZ0lu
dCogemVyb0JpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDApOwogICAgIHJl
dHVybiB6ZXJvQmlnSW50OwogfQogCkBAIC05MSw5ICs5MSwyMyBAQCBpbmxpbmUgc2l6ZV90IEpT
QmlnSW50OjphbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHNpemVX
aXRoUGFkZGluZyArIGxlbmd0aCAqIHNpemVvZihEaWdpdCk7CiB9CiAKLUpTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlV2l0aExlbmd0aChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKK0pTQmlnSW50
KiBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgaWYgKGxlbmd0aCA+
IG1heExlbmd0aCkgeworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKHZtLCBsZW5ndGgpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhM
ZW5ndGhVbmNoZWNrZWQoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgSlNCaWdJbnQq
IGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZShsZW5ndGgpKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5n
ZXQoKSwgbGVuZ3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChiaWdJbnQpOwogICAgIGJpZ0ludC0+
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBiaWdJbnQ7CiB9CkBAIC0xMDMsOCArMTE3
LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgaW50MzJfdCB2YWx1
ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAg
Ci0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOwotICAgIAor
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsK
ICAgICBpZiAodmFsdWUgPCAwKSB7CiAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGlj
X2Nhc3Q8RGlnaXQ+KC0xICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7CiAgICAgICAg
IGJpZ0ludC0+c2V0U2lnbih0cnVlKTsKQEAgLTExOSw3ICsxMzIsNyBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCB1aW50MzJfdCB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAgCi0gICAgSlNCaWdJbnQqIGJp
Z0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBj
cmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICBiaWdJbnQtPnNldERpZ2l0KDAs
IHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOwogICAgIHJldHVybiBiaWdJbnQ7CiB9CkBAIC0x
MzAsOCArMTQzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgaW50
NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAogICAgIGlm
IChzaXplb2YoRGlnaXQpID09IDgpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0
ZVdpdGhMZW5ndGgodm0sIDEpOwotICAgICAgICAKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9
IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICBpZiAodmFsdWUgPCAw
KSB7CiAgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4oLSh2YWx1ZSArIDEpKSArIDEpKTsKICAgICAgICAgICAgIGJp
Z0ludC0+c2V0U2lnbih0cnVlKTsKQEAgLTE0MSw4ICsxNTMsNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQogICAgICAgICByZXR1cm4gYmln
SW50OwogICAgIH0KICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aCh2bSwgMik7Ci0gICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhV
bmNoZWNrZWQodm0sIDIpOwogICAgIHVpbnQ2NF90IHRlbXBWYWx1ZTsKICAgICBib29sIHNpZ24g
PSBmYWxzZTsKICAgICBpZiAodmFsdWUgPCAwKSB7CkBAIC0xNjYsNyArMTc3LDggQEAgSlNCaWdJ
bnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgYm9vbCB2YWx1ZSkKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAgCi0gICAgSlNCaWdJbnQq
IGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKKyAgICBBU1NFUlQoYmlnSW50KTsK
ICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOwogICAg
IHJldHVybiBiaWdJbnQ7CiB9CkBAIC0yMzQsNiArMjQ2LDcgQEAgdm9pZCBKU0JpZ0ludDo6aW5w
bGFjZU11bHRpcGx5QWRkKERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCkKIEpTQmlnSW50KiBK
U0JpZ0ludDo6bXVsdGlwbHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoeC0+aXNaZXJvKCkpCiAgICAgICAgIHJldHVy
biB4OwpAQCAtMjQxLDcgKzI1NCw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6bXVsdGlwbHkoRXhl
Y1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHJldHVybiB5
OwogCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0geC0+bGVuZ3RoKCkgKyB5LT5sZW5ndGgo
KTsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0s
IHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp0cnlDcmVh
dGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CiAgICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9u
VHlwZTo6V2l0aFplcm8pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHgtPmxlbmd0
aCgpOyBpKyspCkBAIC0yNzcsOCArMjkxLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6ZGl2aWRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogCiAgICAgICAgIERp
Z2l0IHJlbWFpbmRlcjsKICAgICAgICAgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKHZtLCB4
LCBkaXZpc29yLCAmcXVvdGllbnQsIHJlbWFpbmRlcik7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFi
c29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksICZxdW90aWVudCwgbnVsbHB0cik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihleGVj
LCB4LCB5LCAmcXVvdGllbnQsIG51bGxwdHIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKKyAgICB9CiAKICAgICBxdW90aWVudC0+c2V0U2lnbihyZXN1bHRT
aWduKTsKICAgICByZXR1cm4gcXVvdGllbnQtPnJpZ2h0VHJpbSh2bSk7CkBAIC0yODgsNyArMzA0
LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojpjb3B5KFZNJiB2bSwgSlNCaWdJbnQqIHgpCiB7CiAg
ICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxlbmd0aCgpKTsKKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIHgtPmxlbmd0aCgp
KTsKICAgICBzdGQ6OmNvcHkoeC0+ZGF0YVN0b3JhZ2UoKSwgeC0+ZGF0YVN0b3JhZ2UoKSArIHgt
Pmxlbmd0aCgpLCByZXN1bHQtPmRhdGFTdG9yYWdlKCkpOwogICAgIHJlc3VsdC0+c2V0U2lnbih4
LT5zaWduKCkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMDAsNiArMzE2LDcgQEAgSlNCaWdJ
bnQqIEpTQmlnSW50Ojp1bmFyeU1pbnVzKFZNJiB2bSwgSlNCaWdJbnQqIHgpCiAgICAgICAgIHJl
dHVybiB4OwogCiAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNvcHkodm0sIHgpOworICAgIEFTU0VS
VChyZXN1bHQpOwogICAgIHJlc3VsdC0+c2V0U2lnbigheC0+c2lnbigpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMzMxLDIzICszNDgsMjYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1h
aW5kZXIoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAg
IGlmICghcmVtYWluZGVyRGlnaXQpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7
CiAKLSAgICAgICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgICAg
IHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICBy
ZW1haW5kZXItPnNldERpZ2l0KDAsIHJlbWFpbmRlckRpZ2l0KTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcih2bSwgeCwgeSwgbnVsbHB0ciwgJnJlbWFp
bmRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNv
cihleGVjLCB4LCB5LCBudWxscHRyLCAmcmVtYWluZGVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgfQogCiAgICAgcmVtYWluZGVyLT5zZXRTaWdu
KHgtPnNpZ24oKSk7CiAgICAgcmV0dXJuIHJlbWFpbmRlci0+cmlnaHRUcmltKHZtKTsKIH0KIAot
SlNCaWdJbnQqIEpTQmlnSW50OjphZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
CitKU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24g
PSB4LT5zaWduKCk7CiAKICAgICAvLyB4ICsgeSA9PSB4ICsgeQogICAgIC8vIC14ICsgLXkgPT0g
LSh4ICsgeSkKICAgICBpZiAoeFNpZ24gPT0geS0+c2lnbigpKQotICAgICAgICByZXR1cm4gYWJz
b2x1dGVBZGQodm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4
ZWMsIHgsIHksIHhTaWduKTsKIAogICAgIC8vIHggKyAteSA9PSB4IC0geSA9PSAtKHkgLSB4KQog
ICAgIC8vIC14ICsgeSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzU4LDEzICszNzgsMTQgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjphZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
CiAgICAgcmV0dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAheFNpZ24pOwogfQogCi1KU0JpZ0lu
dCogSlNCaWdJbnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmln
SW50KiBKU0JpZ0ludDo6c3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCB4U2lnbiA9IHgtPnNp
Z24oKTsKICAgICBpZiAoeFNpZ24gIT0geS0+c2lnbigpKSB7CiAgICAgICAgIC8vIHggLSAoLXkp
ID09IHggKyB5CiAgICAgICAgIC8vICgteCkgLSB5ID09IC0oeCArIHkpCi0gICAgICAgIHJldHVy
biBhYnNvbHV0ZUFkZCh2bSwgeCwgeSwgeFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVB
ZGQoZXhlYywgeCwgeSwgeFNpZ24pOwogICAgIH0KICAgICAvLyB4IC0geSA9PSAtKHkgLSB4KQog
ICAgIC8vICgteCkgLSAoLXkpID09IHkgLSB4ID09IC0oeCAtIHkpCkBAIC0zNzUsOCArMzk2LDEx
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6c3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAotSlNC
aWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF4LT5zaWdu
KCkgJiYgIXktPnNpZ24oKSkKICAgICAgICAgcmV0dXJuIGFic29sdXRlQW5kKHZtLCB4LCB5KTsK
ICAgICAKQEAgLTM4NCwxMSArNDA4LDEyIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgaW50IHJlc3VsdExl
bmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSkgKyAxOwogICAgICAgICAv
LyAoLXgpICYgKC15KSA9PSB+KHgtMSkgJiB+KHktMSkgPT0gfigoeC0xKSB8ICh5LTEpKQogICAg
ICAgICAvLyA9PSAtKCgoeC0xKSB8ICh5LTEpKSArIDEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJ
bnQqIHkxID0gYWJzb2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKTsKLSAgICAgICAgcmVz
dWx0ID0gYWJzb2x1dGVPcih2bSwgcmVzdWx0LCB5MSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgICAgICByZXR1cm4gYWJzb2x1
dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAgICAgICAgSlNCaWdJ
bnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBy
ZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkxKTsKKyAgICAgICAgcmV0dXJuIGFic29s
dXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKICAgICB9CiAKICAg
ICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC0zOTcsMTEgKzQyMiwxMyBAQCBK
U0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAKICAgICAvLyB4ICYgKC15KSA9
PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKLSAgICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0s
IHgsIGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSkpOworICAgIHJldHVybiBhYnNv
bHV0ZUFuZE5vdCh2bSwgeCwgYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpKTsK
IH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoVk0mIHZtLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihFeGVjU3RhdGUqIGV4
ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHkt
Pmxlbmd0aCgpKTsKIAogICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCkBAIC00MTAs
MTAgKzQzNywxMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKICAgICBpZiAoeC0+c2lnbigpICYmIHktPnNpZ24oKSkgewog
ICAgICAgICAvLyAoLXgpIHwgKC15KSA9PSB+KHgtMSkgfCB+KHktMSkgPT0gfigoeC0xKSAmICh5
LTEpKQogICAgICAgICAvLyA9PSAtKCgoeC0xKSAmICh5LTEpKSArIDEpCi0gICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAg
ICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKTsKKyAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHgsIHJlc3VsdExl
bmd0aCk7CisgICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHkt
Pmxlbmd0aCgpKTsKICAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVBbmQodm0sIHJlc3VsdCwgeTEp
OwotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6
U2lnbmVkKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2ln
bk9wdGlvbjo6U2lnbmVkKTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHgtPnNpZ24oKSAhPSB5
LT5zaWduKCkpOwpAQCAtNDIzLDEzICs0NTAsMTYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlT3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHN0ZDo6c3dh
cCh4LCB5KTsKICAgICAKICAgICAvLyB4IHwgKC15KSA9PSB4IHwgfih5LTEpID09IH4oKHktMSkg
Jn4geCkgPT0gLSgoKHktMSkgJn4geCkgKyAxKQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNv
bHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
YWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsKICAgICByZXN1bHQgPSBhYnNv
bHV0ZUFuZE5vdCh2bSwgcmVzdWx0LCB4KTsKLSAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0s
IHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUo
ZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJ
bnQ6OmJpdHdpc2VYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmJpdHdpc2VYb3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2ln
bigpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHgsIHkpOwogICAgIApAQCAtNDM3
LDggKzQ2Nyw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4
KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAgICAgICAgIAogICAgICAgICAvLyAoLXgpIF4g
KC15KSA9PSB+KHgtMSkgXiB+KHktMSkgPT0gKHgtMSkgXiAoeS0xKQotICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAg
IEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7CisgICAg
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5n
dGgpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5s
ZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhvcih2bSwgcmVzdWx0LCB5MSk7CiAg
ICAgfQogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTQ0OSw5ICs0Nzks
MTEgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKFZNJiB2bSwgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCBe
ICgteSkgPT0geCBeIH4oeS0xKSA9PSB+KHggXiAoeS0xKSkgPT0gLSgoeCBeICh5LTEpKSArIDEp
Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB5LCByZXN1bHRMZW5n
dGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCByZXN1
bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCiAg
ICAgcmVzdWx0ID0gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeCk7Ci0gICAgcmV0dXJuIGFic29s
dXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgcmV0dXJuIGFi
c29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCkBAIC03NTEsMTAgKzc4MywxMiBAQCBpbmxpbmUgSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJbnQ6OmFic29sdXRlQ29tcGFyZShKU0JpZ0ludCogeCwg
SlNCaWdJbgogICAgIHJldHVybiB4LT5kaWdpdChpKSA+IHktPmRpZ2l0KGkpID8gQ29tcGFyaXNv
blJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbjsKIH0KIAot
SlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0Jp
Z0ludCogeSwgYm9vbCByZXN1bHRTaWduKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFk
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRT
aWduKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKICAgICBpZiAoeC0+bGVuZ3RoKCkg
PCB5LT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKHZtLCB5LCB4LCByZXN1
bHRTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHksIHgsIHJlc3VsdFNp
Z24pOwogCiAgICAgaWYgKHgtPmlzWmVybygpKSB7CiAgICAgICAgIEFTU0VSVCh5LT5pc1plcm8o
KSk7CkBAIC03NjQsOCArNzk4LDkgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZChW
TSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWcKICAgICBpZiAo
eS0+aXNaZXJvKCkpCiAgICAgICAgIHJldHVybiByZXN1bHRTaWduID09IHgtPnNpZ24oKSA/IHgg
OiB1bmFyeU1pbnVzKHZtLCB4KTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkgKyAxKTsKLSAgICBBU1NFUlQocmVzdWx0
KTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGgo
ZXhlYywgeC0+bGVuZ3RoKCkgKyAxKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgRGlnaXQgY2FycnkgPSAwOwogICAgIHVuc2lnbmVkIGkgPSAwOwogICAg
IGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODA2LDcgKzg0MSw4IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHksIGJvb2wgcmVzdWx0U2lnCiAgICAgaWYgKGNvbXBhcmlzb25SZXN1bHQgPT0gQ29tcGFyaXNv
blJlc3VsdDo6RXF1YWwpCiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7
CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0s
IHgtPmxlbmd0aCgpKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIHgtPmxlbmd0aCgpKTsKKwogICAgIERpZ2l0IGJvcnJvdyA9
IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCB5LT5sZW5ndGgoKTsgaSsr
KSB7CkBAIC04NTEsNyArODg3LDcgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoRGln
aXREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEoKICAgICB1bnNp
Z25lZCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikg
ewogICAgICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIpCi0gICAgICAgICAgICAqcXVvdGll
bnQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAg
ICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBsZW5n
dGgpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgewog
ICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KHJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRp
dmlzb3IsIHJlbWFpbmRlcik7CkBAIC04NjksNyArOTA1LDcgQEAgdm9pZCBKU0JpZ0ludDo6YWJz
b2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlz
b3IsIEoKIC8vIEJvdGgge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0gYXJlIG9wdGlvbmFsLCBm
b3IgY2FsbGVycyB0aGF0IGFyZSBvbmx5CiAvLyBpbnRlcmVzdGVkIGluIG9uZSBvZiB0aGVtLgog
Ly8gU2VlIEtudXRoLCBWb2x1bWUgMiwgc2VjdGlvbiA0LjMuMSwgQWxnb3JpdGhtIEQuCi12b2lk
IEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQq
IGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJ
bnQqKiByZW1haW5kZXIpCit2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZp
c29yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNv
ciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpCiB7CiAgICAgQVNT
RVJUKGRpdmlzb3ItPmxlbmd0aCgpID49IDIpOwogICAgIEFTU0VSVChkaXZpZGVuZC0+bGVuZ3Ro
KCkgPj0gZGl2aXNvci0+bGVuZ3RoKCkpOwpAQCAtODg0LDExICs5MjAsMTMgQEAgdm9pZCBKU0Jp
Z0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZp
ZGVuZCwgSlNCaWdJbnQKICAgICAvLyBUaGUgcXVvdGllbnQgdG8gYmUgY29tcHV0ZWQuCiAgICAg
SlNCaWdJbnQqIHEgPSBudWxscHRyOwogICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKQotICAg
ICAgICBxID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbSArIDEpOworICAgICAgICBxID0gY3JlYXRl
V2l0aExlbmd0aFVuY2hlY2tlZChleGVjLT52bSgpLCBtICsgMSk7CiAgICAgCiAgICAgLy8gSW4g
ZWFjaCBpdGVyYXRpb24sIHtxaGF0dn0gaG9sZHMge2Rpdmlzb3J9ICoge2N1cnJlbnQgcXVvdGll
bnQgZGlnaXR9LgogICAgIC8vICJ2IiBpcyB0aGUgYm9vaydzIG5hbWUgZm9yIHtkaXZpc29yfSwg
InFoYXQiIHRoZSBjdXJyZW50IHF1b3RpZW50IGRpZ2l0LgotICAgIEpTQmlnSW50KiBxaGF0diA9
IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG4gKyAxKTsKKyAgICBKU0JpZ0ludCogcWhhdHYgPSB0cnlD
cmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIG4gKyAxKTsKKyAgICBpZiAoIXFoYXR2KQorICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgLy8gRDEuCiAgICAgLy8gTGVmdC1zaGlmdCBpbnB1dHMgc28gdGhh
dCB0aGUgZGl2aXNvcidzIE1TQiBpcyBzZXQuIFRoaXMgaXMgbmVjZXNzYXJ5CkBAIC04OTgsMTIg
KzkzNiwxNiBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZN
JiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludAogICAgIERpZ2l0IGxhc3REaWdpdCA9
IGRpdmlzb3ItPmRpZ2l0KG4gLSAxKTsKICAgICB1bnNpZ25lZCBzaGlmdCA9IHNpemVvZihsYXN0
RGlnaXQpID09IDggPyBjbHo2NChsYXN0RGlnaXQpIDogY2x6MzIobGFzdERpZ2l0KTsKIAotICAg
IGlmIChzaGlmdCA+IDApCi0gICAgICAgIGRpdmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5
c0NvcHkodm0sIGRpdmlzb3IsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7
CisgICAgaWYgKHNoaWZ0ID4gMCkgeworICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hp
ZnRBbHdheXNDb3B5KGV4ZWMsIGRpdmlzb3IsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6
ZVJlc3VsdCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpdmlzb3IpOworICAgIH0KIAogICAg
IC8vIEhvbGRzIHRoZSAoY29udGludW91c2x5IHVwZGF0ZWQpIHJlbWFpbmluZyBwYXJ0IG9mIHRo
ZSBkaXZpZGVuZCwgd2hpY2gKICAgICAvLyBldmVudHVhbGx5IGJlY29tZXMgdGhlIHJlbWFpbmRl
ci4KLSAgICBKU0JpZ0ludCogdSA9IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2
aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCk7CisgICAgSlNC
aWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoZXhlYywgZGl2aWRlbmQsIHNo
aWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCk7CisgICAgaWYgKCF1KQorICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBEMi4KICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGRpdmlk
ZW5kJ3MgZGlnaXQgKGxpa2UgdGhlICJncmFkIHNjaG9vbCIgYWxnb3JpdGhtKS4KQEAgLTEwMzEs
MTQgKzEwNzMsMTYgQEAgdm9pZCBKU0JpZ0ludDo6aW5wbGFjZVJpZ2h0U2hpZnQodW5zaWduZWQg
c2hpZnQpCiB9CiAKIC8vIEFsd2F5cyBjb3BpZXMgdGhlIGlucHV0LCBldmVuIHdoZW4ge3NoaWZ0
fSA9PSAwLgotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHko
Vk0mIHZtLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkK
K0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KEV4ZWNTdGF0
ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUp
CiB7CiAgICAgQVNTRVJUKHNoaWZ0IDwgZGlnaXRCaXRzKTsKICAgICBBU1NFUlQoIXgtPmlzWmVy
bygpKTsKIAogICAgIHVuc2lnbmVkIG4gPSB4LT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCByZXN1
bHRMZW5ndGggPSBtb2RlID09IExlZnRTaGlmdE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0ID8gbiAr
IDEgOiBuOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1
bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4
ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKCFzaGlmdCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbjsgaSsrKQpAQCAtMTA5NSw4ICsxMTM5LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0lu
dDo6YWJzb2x1dGVCaXR3aXNlT3AoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIEUK
IAogICAgIEFTU0VSVChudW1QYWlycyA9PSBzdGQ6Om1pbih4TGVuZ3RoLCB5TGVuZ3RoKSk7CiAg
ICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gZXh0cmFEaWdpdHMgPT0gRXh0cmFEaWdpdHNIYW5k
bGluZzo6Q29weSA/IHhMZW5ndGggOiBudW1QYWlyczsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0g
Y3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKLQorICAgIEpTQmlnSW50KiByZXN1
bHQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCByZXN1bHRMZW5ndGgpOwogICAgIHVu
c2lnbmVkIGkgPSAwOwogICAgIGZvciAoOyBpIDwgbnVtUGFpcnM7IGkrKykKICAgICAgICAgcmVz
dWx0LT5zZXREaWdpdChpLCBvcCh4LT5kaWdpdChpKSwgeS0+ZGlnaXQoaSkpKTsKQEAgLTExNDQs
NyArMTE4Nyw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVYb3IoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlQml0d2lzZU9wKHZtLCB4
LCB5LCBFeHRyYURpZ2l0c0hhbmRsaW5nOjpDb3B5LCBTeW1tZXRyaWNPcDo6U3ltbWV0cmljLCBk
aWdpdE9wZXJhdGlvbik7CiB9CiAgICAgCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRk
T25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKK0pTQmlnSW50
KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwg
U2lnbk9wdGlvbiBzaWduT3B0aW9uKQogewogICAgIHVuc2lnbmVkIGlucHV0TGVuZ3RoID0geC0+
bGVuZ3RoKCk7CiAgICAgLy8gVGhlIGFkZGl0aW9uIHdpbGwgb3ZlcmZsb3cgaW50byBhIG5ldyBk
aWdpdCBpZiBhbGwgZXhpc3RpbmcgZGlnaXRzIGFyZQpAQCAtMTE1OCw3ICsxMjAxLDkgQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWdu
T3B0aW9uIHNpZ25PcHRpb24pCiAgICAgfQogCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0g
aW5wdXRMZW5ndGggKyB3aWxsT3ZlcmZsb3c7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0
ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IHRy
eUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBEaWdpdCBjYXJyeSA9IDE7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyBpKyspIHsKQEAgLTExNzIsMTYgKzEy
MTcsMTYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9uZShWTSYgdm0sIEpTQmln
SW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCiAgICAgICAgIEFTU0VSVCghY2FycnkpOwog
CiAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ25PcHRpb24gPT0gU2lnbk9wdGlvbjo6U2lnbmVkKTsK
LSAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgIHJldHVybiByZXN1bHQtPnJp
Z2h0VHJpbShleGVjLT52bSgpKTsKIH0KIAotLy8gTGlrZSB0aGUgYWJvdmUsIGJ1dCB5b3UgY2Fu
IHNwZWNpZnkgdGhhdCB0aGUgYWxsb2NhdGVkIHJlc3VsdCBzaG91bGQgaGF2ZQotLy8gbGVuZ3Ro
IHtyZXN1bHRMZW5ndGh9LCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHt4LT5s
ZW5ndGgoKX0uCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViT25lKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWJz
b2x1dGVTdWJPbmUoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0
TGVuZ3RoKQogewogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogICAgIEFTU0VSVChyZXN1bHRM
ZW5ndGggPj0geC0+bGVuZ3RoKCkpOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRo
TGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSB0cnlDcmVh
dGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7
CiAgICAgRGlnaXQgYm9ycm93ID0gMTsKQEAgLTExOTQsNyArMTIzOSw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVz
dWx0TGVuZ3RoKQogICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaSA8IHJlc3VsdExlbmd0
aDsgaSsrKQogICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGJvcnJvdyk7CiAKLSAgICByZXR1
cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShl
eGVjLT52bSgpKTsKIH0KIAogLy8gTG9va3VwIHRhYmxlIGZvciB0aGUgbWF4aW11bSBudW1iZXIg
b2YgYml0cyByZXF1aXJlZCBwZXIgY2hhcmFjdGVyIG9mIGEKQEAgLTEzNTQsOCArMTM5OSw2IEBA
IFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIHVuc2lnbmVkIHJhZGl4KQogICAgICAgICBkbyB7CiAgICAgICAgICAgICBEaWdpdCBj
aHVuazsKICAgICAgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRpdmlk
ZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVuayk7Ci0gICAgICAgICAgICBBU1NFUlQocmVz
dCk7Ci0KICAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2h1bmtDaGFyczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgcmVz
dWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tjaHVuayAlIHJhZGl4XSk7CkBAIC0xNDE0LDgg
KzE0NTcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAgICAg
IHJldHVybiB0aGlzOwogCiAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsg
MTsKLSAgICBKU0JpZ0ludCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5l
d0xlbmd0aCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgSlNCaWdJ
bnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdMZW5n
dGgpOwogICAgIHN0ZDo6Y29weShkYXRhU3RvcmFnZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3TGVu
Z3RoLCB0cmltbWVkQmlnSW50LT5kYXRhU3RvcmFnZSgpKTsgCiAKICAgICB0cmltbWVkQmlnSW50
LT5zZXRTaWduKHRoaXMtPnNpZ24oKSk7CkBAIC0xNDM5LDcgKzE0ODEsNyBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25lZCBy
YWRpeCwgdW5zaWduZQogICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3Vu
ZGluZyB1cC4KICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IChiaXRzTWluICsgZGlnaXRC
aXRzIC0gMSkgLyBkaWdpdEJpdHM7CiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0
aCkgewotICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRl
V2l0aExlbmd0aCh2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggYTYyZTEzOGFkNjY1NTNj
OTM5NTg2YmU2OTVhMWRlMTVhZTM4ZTQ1MC4uYWI4ZmY1YWY1ZDY3ZjRiNjcwNDFiMjY1Y2EyNTk3
ZjgwYmM1NDQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBA
IC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhWTSYpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogY3Jl
YXRlV2l0aExlbmd0aChWTSYsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50
KiB0cnlDcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKFZNJiwgdW5zaWduZWQg
bGVuZ3RoKTsKIAogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIGludDMyX3Qg
dmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIHVpbnQzMl90IHZh
bHVlKTsKQEAgLTEwOCwxNSArMTA5LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBDb21wYXJpc29u
UmVzdWx0IHN0YXRpYyBjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KTsKIAot
ICAgIHN0YXRpYyBKU0JpZ0ludCogYWRkKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsK
LSAgICBzdGF0aWMgSlNCaWdJbnQqIHN1YihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7
CisgICAgc3RhdGljIEpTQmlnSW50KiBhZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHN1YihFeGVjU3RhdGUqLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogZGl2aWRlKEV4ZWNTdGF0ZSos
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiByZW1haW5k
ZXIoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNC
aWdJbnQqIHVuYXJ5TWludXMoVk0mLCBKU0JpZ0ludCogeCk7CiAKLSAgICBzdGF0aWMgSlNCaWdJ
bnQqIGJpdHdpc2VBbmQoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRp
YyBKU0JpZ0ludCogYml0d2lzZU9yKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAg
ICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VYb3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZUFuZChFeGVjU3RhdGUqLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKEV4ZWNT
dGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBi
aXR3aXNlWG9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKIHByaXZh
dGU6CiAKQEAgLTEzOSwxNCArMTQwLDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWJz
b2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZNJiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3Is
IEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpOwogICAgIHN0YXRpYyB2b2lk
IGludGVybmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdp
dCBzdW1tYW5kLCB1bnNpZ25lZCwgSlNCaWdJbnQqIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQg
bXVsdGlwbHlBY2N1bXVsYXRlKEpTQmlnSW50KiBtdWx0aXBsaWNhbmQsIERpZ2l0IG11bHRpcGxp
ZXIsIEpTQmlnSW50KiBhY2N1bXVsYXRvciwgdW5zaWduZWQgYWNjdW11bGF0b3JJbmRleCk7Ci0g
ICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYsIEpTQmlnSW50
KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmln
SW50KiogcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJbnRE
aXZpc29yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3Is
IEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsKICAgICAKICAgICBl
bnVtIGNsYXNzIExlZnRTaGlmdE1vZGUgewogICAgICAgICBTYW1lU2l6ZVJlc3VsdCwKICAgICAg
ICAgQWx3YXlzQWRkT25lRGlnaXQKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBKU0JpZ0ludCog
YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KFZNJiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNo
aWZ0LCBMZWZ0U2hpZnRNb2RlKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVmdFNo
aWZ0QWx3YXlzQ29weShFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExl
ZnRTaGlmdE1vZGUpOwogICAgIHN0YXRpYyBib29sIHByb2R1Y3RHcmVhdGVyVGhhbihEaWdpdCBm
YWN0b3IxLCBEaWdpdCBmYWN0b3IyLCBEaWdpdCBoaWdoLCBEaWdpdCBsb3cpOwogCiAgICAgRGln
aXQgYWJzb2x1dGVJbnBsYWNlQWRkKEpTQmlnSW50KiBzdW1tYW5kLCB1bnNpZ25lZCBzdGFydElu
ZGV4KTsKQEAgLTE3Niw4ICsxNzcsOCBAQCBwcml2YXRlOgogICAgICAgICBVbnNpZ25lZAogICAg
IH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkT25lKFZNJiwgSlNCaWdJbnQq
IHgsIFNpZ25PcHRpb24pOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoVk0m
LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uKTsK
KyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViT25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50
KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpOwogCiAgICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBo
ZWxwZXJzLgogICAgIHN0YXRpYyBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdp
dCYgY2FycnkpOwpAQCAtMjAzLDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgSlNCaWdJbnQqIHJp
Z2h0VHJpbShWTSYpOwogCiAgICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlw
bGllciwgRGlnaXQgcGFydCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChWTSYs
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKKyAgICBzdGF0aWMg
SlNCaWdJbnQqIGFic29sdXRlQWRkKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSwgYm9vbCByZXN1bHRTaWduKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViKFZN
JiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOwogICAgIAogICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggYTA4OGFkMWNiYzIw
NzhkNjIwNWFmZjBhYmFkM2RhNzNhOTZmNWIyNi4uODhhMmI3ZTA4YzVmNzYyYjU4NjIzNDFiNjBk
MWE1ZjEzY2U3N2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5jcHAKQEAgLTY5LDggKzY5LDExIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xv
d0Nhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjphZGQodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjphZGQoY2FsbEZyYW1lLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUs
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXgg
NjFkNTMzY2Y0NWY2YmQwMzJkYjk4ZWI2ZDRlMjQwNDJhYjRhNTJiMy4uYjM2OTc5YTIxZjM5ZmRk
NjZiNWIwZGQ4MWNkMjg2MTVlNDcyYTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaApAQCAtMzQ4LDggKzM0OCwxMSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTdWIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
c3ViKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0Jp
Z0ludDo6c3ViKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsKICAgICB9CkBA
IC0zNjgsOCArMzcxLDExIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChFeGVjU3RhdGUq
IHN0YXRlLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoc3RhdGUsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjptdWx0
aXBseShzdGF0ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogCiAg
ICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwogICAgICAgICByZXR1cm4g
eyB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA4NDAzMTMzNWUzMDIxYzA3YTYyNjUzMDUzMzI2ODcwODRhNGVmNzhiLi43OGNkMjEzMTZi
NzQyYThjNzk1MzA5M2E3NmI3ZWZlZTQ3YTk2NDNjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTExLTAx
ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbQmlnSW50XSBK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCBzaG91bGQgdGhyb3cgd2hlbiBsZW5ndGggaXMgZ3Jl
YXRlciB0aGFuIEpTQmlnSW50OjptYXhMZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0
cy5qczogQWRkZWQuCisKIDIwMTgtMTAtMzEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjM3NTQ3KTogRXhjZXB0aW9uIGhhbmRsZXJz
IHNob3VsZCBiZSBhd2FyZSBvZiB3aWRlIG9wY29kZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM5Mzg3YmExMDg3MzU5N2Rh
OTkwMTUxMGYwNzJjMTU3ZWE5ZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1vdXQtb2YtbWVtb3J5LXRlc3RzLmpzCkBAIC0wLDAgKzEsNjMgQEAKKy8vQCBydW5E
ZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZHSklUPWZhbHNlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gbHNoaWZ0KHkpIHsKKyAgICBsZXQgb3V0ID0g
MW47CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB5OyBpKyspIHsKKyAgICAgICAgb3V0ICo9IDJu
OworICAgIH0KKworICAgIHJldHVybiBvdXQ7Cit9CisKK2xldCBhID0gbHNoaWZ0KDE2Mzg0ICog
NjMpOworZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgIGEgKj0gMTg0NDY3NDQw
NzM3MDk1NTE2MTVuOworfQorCit0cnkgeworICAgIGxldCBiID0gYSArIDFuOworICAgIGFzc2Vy
dChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0
aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0g
Ik91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiAr
IGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAtICgtMW4pOworICAgIGFzc2VydChmYWxz
ZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBv
ZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOwor
fQorCit0cnkgeworICAgIGxldCBiID0gYSAqICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNo
b3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRp
b24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1v
cnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0
cnkgeworICAgIGxldCBiID0gYSAvIGE7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93
IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBj
YXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBl
Y3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAg
bGV0IGIgPSAtYSAmIC0xbjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZN
ZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUp
IHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91
dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9
IGEgXiAtMW47CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJy
b3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAg
YXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9y
eUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354237</attachid>
            <date>2018-11-08 06:59:07 -0800</date>
            <delta_ts>2018-11-12 11:25:55 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>bug-190836-20181108115905.patch</filename>
            <type>text/plain</type>
            <size>39806</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi40OGI2NGIzZWFkNjc2ZGE3
NDNiMWNkNjQwNzIyNDg5YmRiNzgwNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNy
ZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRp
dmlkZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhv
cik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVE
aXZXaXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3
aXNlT3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTA3ICBD
YWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBbQmlnSW50XSBBZGQg
c3VwcG9ydCB0byBCaWdJbnQgaW50byBWYWx1ZUFkZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZGYzZmQxZTU2ZWU5OWUwNjM5ZmJiMzg5ZThhNTVl
NmQ2ZTIxYjI4MC4uNTQxN2ZiMGRmY2QyNzQwMzgyZjA0ZWM2MmI1ZmIxZjBiZGIwZmRiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zNDksNyAr
MzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFu
ZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKIAogICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAg
ICB9CkBAIC0zNzYsNyArMzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUJpdE9yKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUKIAogICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcigqdm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3IoZXhl
YywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKICAgICAgICAgfQpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblN1YkJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG8KICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEp
OwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwog
ICAgIAotICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKCp2bSwgbGVmdE9wZXJhbmQsIHJpZ2h0T3Bl
cmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJ
bnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzA1LDcg
KzEzMDUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbAogICAgIEpTQmlnSW50KiBsZWZ0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFu
ZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdp
c2VBbmQoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0lu
dCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+
KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjphZGQoKnZtLCBsZWZ0T3BlcmFuZCwg
cmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChleGVjLCBsZWZ0T3BlcmFu
ZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dE9yQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQpAQCAt
MTMyNyw3ICsxMzI3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmln
SW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCoKICAgICBKU0JpZ0ludCog
bGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdo
dE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwogICAgIAotICAgIHJldHVybiBKU0Jp
Z0ludDo6Yml0d2lzZU9yKCp2bSwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CisgICAgcmV0
dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7
CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwo
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAxZThmZTAwNDUwNDFlYjM5MmRh
ZGM5Y2U0M2Y0ODE1MjEyZTM5MWQyLi41MTFjNDJmM2Q0ZjExYzM5YThiODVjZDJkMzYyMDcxYjIx
OWQ1ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
QEAgLTI3NjYsMTAgKzI3NjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZAogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShleGVjKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKLSAgICBpZiAocHJpbVZh
bHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1
bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwotICAgIH0KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0s
IGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUu
dG9OdW1iZXIoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCA1MTYzYzMzZWU5MGZjNDhiNzU4NmUyNzgyOTMxMGQ0NDIyZjY3YzA4
Li5lZTVhZGEyNzk1MGNlOTRjMTFiODg1MjI1YTNiZjAyOGU3NTZhYWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTU2Myw3
ICs1NjMsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogCiAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAg
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9G
SUxJTkcocmVzdWx0LCB7CiAgICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmlu
YXJ5QXJpdGhPcChleGVjLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTY5OSw3ICs3MDAsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0YW5kKQog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKICAgICAgICAgfQpAQCAtNzIwLDcgKzcyMSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9iaXRvcikKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpiaXR3aXNlT3Iodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAg
ICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxF
RChyZXN1bHQpOwogICAgICAgICB9CkBAIC03NDEsNyArNzQyLDcgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2JpdHhvcikKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZVhvcihleGVjLCBXVEY6
OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVU
VVJOKHJlc3VsdCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAppbmRleCA0YWI1YTUyMzUzZmQxYWU5MjBkMTFiYjM0YmMwNmViNTRmZjg4ZWU3
Li41NWEzYmFlMjRiNGRiZTdhOTM0MjA1YzgxNDUwMTkzMmE0MTU0Nzk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFN0cnVj
dHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYg
dm0pCiB7Ci0gICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAw
KTsKKyAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQo
dm0sIDApOwogICAgIHJldHVybiB6ZXJvQmlnSW50OwogfQogCkBAIC05MSw5ICs5MSwyMyBAQCBp
bmxpbmUgc2l6ZV90IEpTQmlnSW50OjphbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBsZW5ndGgpCiAg
ICAgcmV0dXJuIHNpemVXaXRoUGFkZGluZyArIGxlbmd0aCAqIHNpemVvZihEaWdpdCk7CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aChWTSYgdm0sIHVuc2lnbmVkIGxl
bmd0aCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisg
ICAgaWYgKGxlbmd0aCA+IG1heExlbmd0aCkgeworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVh
dGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBsZW5ndGgpOworfQorCitKU0JpZ0ludCogSlNCaWdJ
bnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmln
SW50Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKSkgSlNCaWdJbnQodm0sIHZtLmJp
Z0ludFN0cnVjdHVyZS5nZXQoKSwgbGVuZ3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChiaWdJbnQp
OwogICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBiaWdJbnQ7CiB9
CkBAIC0xMDMsOCArMTE3LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2
bSwgaW50MzJfdCB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRl
WmVybyh2bSk7CiAgICAgCi0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgo
dm0sIDEpOwotICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKHZtLCAxKTsKICAgICBpZiAodmFsdWUgPCAwKSB7CiAgICAgICAgIGJpZ0ludC0+c2V0
RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KC0xICogc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFs
dWUpKSk7CiAgICAgICAgIGJpZ0ludC0+c2V0U2lnbih0cnVlKTsKQEAgLTExOSw3ICsxMzIsNyBA
QCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCB1aW50MzJfdCB2YWx1ZSkK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAgCi0g
ICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgIEpTQmln
SW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICBiaWdJ
bnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOwogICAgIHJldHVybiBi
aWdJbnQ7CiB9CkBAIC0xMzAsOCArMTQzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVG
cm9tKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0p
OwogICAgIAogICAgIGlmIChzaXplb2YoRGlnaXQpID09IDgpIHsKLSAgICAgICAgSlNCaWdJbnQq
IGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOwotICAgICAgICAKKyAgICAgICAgSlNC
aWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAg
ICBpZiAodmFsdWUgPCAwKSB7CiAgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRp
Y19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4oLSh2YWx1ZSArIDEpKSArIDEpKTsK
ICAgICAgICAgICAgIGJpZ0ludC0+c2V0U2lnbih0cnVlKTsKQEAgLTE0MSw4ICsxNTMsNyBAQCBK
U0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQogICAg
ICAgICByZXR1cm4gYmlnSW50OwogICAgIH0KICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0g
Y3JlYXRlV2l0aExlbmd0aCh2bSwgMik7Ci0gICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNy
ZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDIpOwogICAgIHVpbnQ2NF90IHRlbXBWYWx1ZTsK
ICAgICBib29sIHNpZ24gPSBmYWxzZTsKICAgICBpZiAodmFsdWUgPCAwKSB7CkBAIC0xNjYsNyAr
MTc3LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgYm9vbCB2YWx1
ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAg
Ci0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgIEpT
QmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICBi
aWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOwogICAgIHJldHVy
biBiaWdJbnQ7CiB9CkBAIC0yMzQsNiArMjQ1LDcgQEAgdm9pZCBKU0JpZ0ludDo6aW5wbGFjZU11
bHRpcGx5QWRkKERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCkKIEpTQmlnSW50KiBKU0JpZ0lu
dDo6bXVsdGlwbHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBpZiAoeC0+aXNaZXJvKCkpCiAgICAgICAgIHJldHVybiB4OwpA
QCAtMjQxLDcgKzI1Myw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6bXVsdGlwbHkoRXhlY1N0YXRl
KiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHJldHVybiB5OwogCiAg
ICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0geC0+bGVuZ3RoKCkgKyB5LT5sZW5ndGgoKTsKLSAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3Vs
dExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRo
TGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAgICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6
V2l0aFplcm8pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHgtPmxlbmd0aCgpOyBp
KyspCkBAIC0yNzcsOCArMjkwLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6ZGl2aWRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogCiAgICAgICAgIERpZ2l0IHJl
bWFpbmRlcjsKICAgICAgICAgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKHZtLCB4LCBkaXZp
c29yLCAmcXVvdGllbnQsIHJlbWFpbmRlcik7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFic29sdXRl
RGl2V2l0aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksICZxdW90aWVudCwgbnVsbHB0cik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihleGVjLCB4LCB5
LCAmcXVvdGllbnQsIG51bGxwdHIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKKyAgICB9CiAKICAgICBxdW90aWVudC0+c2V0U2lnbihyZXN1bHRTaWduKTsK
ICAgICByZXR1cm4gcXVvdGllbnQtPnJpZ2h0VHJpbSh2bSk7CkBAIC0yODgsNyArMzAzLDcgQEAg
SlNCaWdJbnQqIEpTQmlnSW50Ojpjb3B5KFZNJiB2bSwgSlNCaWdJbnQqIHgpCiB7CiAgICAgQVNT
RVJUKCF4LT5pc1plcm8oKSk7CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNy
ZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxlbmd0aCgpKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIHgtPmxlbmd0aCgpKTsKICAg
ICBzdGQ6OmNvcHkoeC0+ZGF0YVN0b3JhZ2UoKSwgeC0+ZGF0YVN0b3JhZ2UoKSArIHgtPmxlbmd0
aCgpLCByZXN1bHQtPmRhdGFTdG9yYWdlKCkpOwogICAgIHJlc3VsdC0+c2V0U2lnbih4LT5zaWdu
KCkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzEsMjMgKzM0NiwyNiBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OnJlbWFpbmRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKICAgICAgICAgaWYgKCFyZW1haW5kZXJEaWdpdCkKICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVaZXJvKHZtKTsKIAotICAgICAgICByZW1haW5kZXIgPSBjcmVhdGVXaXRoTGVuZ3RoKHZt
LCAxKTsKKyAgICAgICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwg
MSk7CiAgICAgICAgIHJlbWFpbmRlci0+c2V0RGlnaXQoMCwgcmVtYWluZGVyRGlnaXQpOwotICAg
IH0gZWxzZQotICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKHZtLCB4LCB5LCBu
dWxscHRyLCAmcmVtYWluZGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhYnNvbHV0ZURpdldp
dGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksIG51bGxwdHIsICZyZW1haW5kZXIpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICB9CiAKICAgICByZW1h
aW5kZXItPnNldFNpZ24oeC0+c2lnbigpKTsKICAgICByZXR1cm4gcmVtYWluZGVyLT5yaWdodFRy
aW0odm0pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWRkKEV4ZWNTdGF0ZSogZXhlYywg
SlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKIAogICAgIC8vIHggKyB5ID09IHggKyB5CiAgICAg
Ly8gLXggKyAteSA9PSAtKHggKyB5KQogICAgIGlmICh4U2lnbiA9PSB5LT5zaWduKCkpCi0gICAg
ICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeCwgeSwgeFNpZ24pOworICAgICAgICByZXR1cm4g
YWJzb2x1dGVBZGQoZXhlYywgeCwgeSwgeFNpZ24pOwogCiAgICAgLy8geCArIC15ID09IHggLSB5
ID09IC0oeSAtIHgpCiAgICAgLy8gLXggKyB5ID09IHkgLSB4ID09IC0oeCAtIHkpCkBAIC0zNTgs
MTMgKzM3NiwxNCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKICAgICByZXR1cm4gYWJzb2x1dGVTdWIodm0sIHksIHgsICF4U2lnbik7
CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29s
IHhTaWduID0geC0+c2lnbigpOwogICAgIGlmICh4U2lnbiAhPSB5LT5zaWduKCkpIHsKICAgICAg
ICAgLy8geCAtICgteSkgPT0geCArIHkKICAgICAgICAgLy8gKC14KSAtIHkgPT0gLSh4ICsgeSkK
LSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJl
dHVybiBhYnNvbHV0ZUFkZChleGVjLCB4LCB5LCB4U2lnbik7CiAgICAgfQogICAgIC8vIHggLSB5
ID09IC0oeSAtIHgpCiAgICAgLy8gKC14KSAtICgteSkgPT0geSAtIHggPT0gLSh4IC0geSkKQEAg
LTM3NSw4ICszOTQsMTEgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAheFNp
Z24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoRXhlY1N0
YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVB
bmQodm0sIHgsIHkpOwogICAgIApAQCAtMzg0LDExICs0MDYsMTMgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAg
ICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgpKSAr
IDE7CiAgICAgICAgIC8vICgteCkgJiAoLXkpID09IH4oeC0xKSAmIH4oeS0xKSA9PSB+KCh4LTEp
IHwgKHktMSkpCiAgICAgICAgIC8vID09IC0oKCh4LTEpIHwgKHktMSkpICsgMSkKLSAgICAgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB4LCByZXN1bHRMZW5ndGgpOwot
ICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkp
OwotICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkxKTsKKyAgICAgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHgsIHJlc3VsdExlbmd0aCk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgICAg
IHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwor
ICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5sZW5ndGgo
KSk7CisgICAgICAgIEFTU0VSVCh5MSk7CisgICAgICAgIHJlc3VsdCA9IGFic29sdXRlT3Iodm0s
IHJlc3VsdCwgeTEpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0
LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0g
eS0+c2lnbigpKTsKQEAgLTM5NywxMSArNDIxLDE1IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0
d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpz
d2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4o
eS0xKQotICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgYWJzb2x1dGVTdWJPbmUodm0s
IHksIHktPmxlbmd0aCgpKSk7CisgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhl
YywgeSwgeS0+bGVuZ3RoKCkpOworICAgIEFTU0VSVCh5MSk7CisgICAgcmV0dXJuIGFic29sdXRl
QW5kTm90KHZtLCB4LCB5MSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZN
JiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlT3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHN0ZDo6
bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAKICAgICBpZiAoIXgtPnNpZ24oKSAmJiAh
eS0+c2lnbigpKQpAQCAtNDEwLDEwICs0MzgsMTIgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlT3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgaWYgKHgtPnNpZ24o
KSAmJiB5LT5zaWduKCkpIHsKICAgICAgICAgLy8gKC14KSB8ICgteSkgPT0gfih4LTEpIHwgfih5
LTEpID09IH4oKHgtMSkgJiAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgJiAoeS0xKSkg
KyAxKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJl
c3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5
LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9u
ZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAg
ICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOwor
ICAgICAgICBBU1NFUlQoeTEpOwogICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZUFuZCh2bSwgcmVz
dWx0LCB5MSk7Ci0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWdu
T3B0aW9uOjpTaWduZWQpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVz
dWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoeC0+c2ln
bigpICE9IHktPnNpZ24oKSk7CkBAIC00MjMsMTMgKzQ1MywxNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAg
c3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggfCAoLXkpID09IHggfCB+KHktMSkgPT0g
figoeS0xKSAmfiB4KSA9PSAtKCgoeS0xKSAmfiB4KSArIDEpCi0gICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IGFic29sdXRlU3ViT25lKHZtLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEFTU0VS
VChyZXN1bHQpOwogICAgIHJlc3VsdCA9IGFic29sdXRlQW5kTm90KHZtLCByZXN1bHQsIHgpOwot
ICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQp
OworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNp
Z25lZCk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCiAgICAgICAgIHJldHVybiBhYnNvbHV0
ZVhvcih2bSwgeCwgeSk7CiAgICAgCkBAIC00MzcsOCArNDcxLDEwIEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAg
ICAgaW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7
CiAgICAgICAgIAogICAgICAgICAvLyAoLXgpIF4gKC15KSA9PSB+KHgtMSkgXiB+KHktMSkgPT0g
KHgtMSkgXiAoeS0xKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUo
dm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3Vi
T25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNv
bHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBBU1NFUlQocmVzdWx0
KTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVu
Z3RoKCkpOworICAgICAgICBBU1NFUlQoeTEpOwogICAgICAgICByZXR1cm4gYWJzb2x1dGVYb3Io
dm0sIHJlc3VsdCwgeTEpOwogICAgIH0KICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24o
KSk7CkBAIC00NDksOSArNDg1LDExIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihW
TSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkp
OwogICAgIAogICAgIC8vIHggXiAoLXkpID09IHggXiB+KHktMSkgPT0gfih4IF4gKHktMSkpID09
IC0oKHggXiAoeS0xKSkgKyAxKQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9u
ZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVT
dWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKwogICAgIHJlc3VsdCA9IGFic29sdXRlWG9yKHZtLCByZXN1bHQsIHgp
OwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWdu
ZWQpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246
OlNpZ25lZCk7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNzUxLDEwICs3ODksMTIg
QEAgaW5saW5lIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50OjphYnNvbHV0ZUNv
bXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW4KICAgICByZXR1cm4geC0+ZGlnaXQoaSkgPiB5LT5k
aWdpdChpKSA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3Vs
dDo6TGVzc1RoYW47CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoVk0mIHZt
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKK0pTQmlnSW50KiBK
U0JpZ0ludDo6YWJzb2x1dGVBZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHksIGJvb2wgcmVzdWx0U2lnbikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCiAg
ICAgaWYgKHgtPmxlbmd0aCgpIDwgeS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0
ZUFkZCh2bSwgeSwgeCwgcmVzdWx0U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZChl
eGVjLCB5LCB4LCByZXN1bHRTaWduKTsKIAogICAgIGlmICh4LT5pc1plcm8oKSkgewogICAgICAg
ICBBU1NFUlQoeS0+aXNaZXJvKCkpOwpAQCAtNzY0LDggKzgwNCw5IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wg
cmVzdWx0U2lnCiAgICAgaWYgKHktPmlzWmVybygpKQogICAgICAgICByZXR1cm4gcmVzdWx0U2ln
biA9PSB4LT5zaWduKCkgPyB4IDogdW5hcnlNaW51cyh2bSwgeCk7CiAKLSAgICBKU0JpZ0ludCog
cmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxlbmd0aCgpICsgMSk7
Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp0
cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHgtPmxlbmd0aCgpICsgMSk7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIERpZ2l0IGNhcnJ5ID0gMDsKICAgICB1
bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBpKyspIHsKQEAgLTgw
Niw3ICs4NDcsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlmIChjb21wYXJpc29u
UmVzdWx0ID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsKQogICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmNyZWF0ZVplcm8odm0pOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpj
cmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5sZW5ndGgoKSk7CisK
ICAgICBEaWdpdCBib3Jyb3cgPSAwOwogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAoOyBp
IDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODUxLDcgKzg5Myw3IEBAIHZvaWQgSlNCaWdJbnQ6
OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBEaWdpdCBk
aXZpc29yLCBKCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgaWYgKHF1
b3RpZW50ICE9IG51bGxwdHIpIHsKICAgICAgICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRyKQot
ICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIGxl
bmd0aCk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsKIAogICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0g
MTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdpdERpdihyZW1haW5k
ZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOwpAQCAtODY5LDcgKzkxMSw3IEBA
IHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmln
SW50KiB4LCBEaWdpdCBkaXZpc29yLCBKCiAvLyBCb3RoIHtxdW90aWVudH0gYW5kIHtyZW1haW5k
ZXJ9IGFyZSBvcHRpb25hbCwgZm9yIGNhbGxlcnMgdGhhdCBhcmUgb25seQogLy8gaW50ZXJlc3Rl
ZCBpbiBvbmUgb2YgdGhlbS4KIC8vIFNlZSBLbnV0aCwgVm9sdW1lIDIsIHNlY3Rpb24gNC4zLjEs
IEFsZ29yaXRobSBELgotdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNv
cihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50
KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQordm9pZCBKU0JpZ0ludDo6YWJzb2x1
dGVEaXZXaXRoQmlnSW50RGl2aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiBkaXZpZGVu
ZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVt
YWluZGVyKQogewogICAgIEFTU0VSVChkaXZpc29yLT5sZW5ndGgoKSA+PSAyKTsKICAgICBBU1NF
UlQoZGl2aWRlbmQtPmxlbmd0aCgpID49IGRpdmlzb3ItPmxlbmd0aCgpKTsKQEAgLTg4NCwxMSAr
OTI2LDEzIEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoVk0m
IHZtLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50CiAgICAgLy8gVGhlIHF1b3RpZW50IHRv
IGJlIGNvbXB1dGVkLgogICAgIEpTQmlnSW50KiBxID0gbnVsbHB0cjsKICAgICBpZiAocXVvdGll
bnQgIT0gbnVsbHB0cikKLSAgICAgICAgcSA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG0gKyAxKTsK
KyAgICAgICAgcSA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoZXhlYy0+dm0oKSwgbSArIDEp
OwogICAgIAogICAgIC8vIEluIGVhY2ggaXRlcmF0aW9uLCB7cWhhdHZ9IGhvbGRzIHtkaXZpc29y
fSAqIHtjdXJyZW50IHF1b3RpZW50IGRpZ2l0fS4KICAgICAvLyAidiIgaXMgdGhlIGJvb2sncyBu
YW1lIGZvciB7ZGl2aXNvcn0sICJxaGF0IiB0aGUgY3VycmVudCBxdW90aWVudCBkaWdpdC4KLSAg
ICBKU0JpZ0ludCogcWhhdHYgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBuICsgMSk7CisgICAgSlNC
aWdJbnQqIHFoYXR2ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCBuICsgMSk7CisgICAgaWYg
KCFxaGF0dikKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIEQxLgogICAgIC8vIExlZnQt
c2hpZnQgaW5wdXRzIHNvIHRoYXQgdGhlIGRpdmlzb3IncyBNU0IgaXMgc2V0LiBUaGlzIGlzIG5l
Y2Vzc2FyeQpAQCAtODk4LDEyICs5NDIsMTYgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAg
ICBEaWdpdCBsYXN0RGlnaXQgPSBkaXZpc29yLT5kaWdpdChuIC0gMSk7CiAgICAgdW5zaWduZWQg
c2hpZnQgPSBzaXplb2YobGFzdERpZ2l0KSA9PSA4ID8gY2x6NjQobGFzdERpZ2l0KSA6IGNsejMy
KGxhc3REaWdpdCk7CiAKLSAgICBpZiAoc2hpZnQgPiAwKQotICAgICAgICBkaXZpc29yID0gYWJz
b2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9k
ZTo6U2FtZVNpemVSZXN1bHQpOworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgZGl2aXNv
ciA9IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBkaXZpc29yLCBzaGlmdCwgTGVm
dFNoaWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChkaXZp
c29yKTsKKyAgICB9CiAKICAgICAvLyBIb2xkcyB0aGUgKGNvbnRpbnVvdXNseSB1cGRhdGVkKSBy
ZW1haW5pbmcgcGFydCBvZiB0aGUgZGl2aWRlbmQsIHdoaWNoCiAgICAgLy8gZXZlbnR1YWxseSBi
ZWNvbWVzIHRoZSByZW1haW5kZXIuCi0gICAgSlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlm
dEFsd2F5c0NvcHkodm0sIGRpdmlkZW5kLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRk
T25lRGlnaXQpOworICAgIEpTQmlnSW50KiB1ID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5
KGV4ZWMsIGRpdmlkZW5kLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQp
OworICAgIGlmICghdSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRDIuCiAgICAgLy8gSXRl
cmF0ZSBvdmVyIHRoZSBkaXZpZGVuZCdzIGRpZ2l0IChsaWtlIHRoZSAiZ3JhZCBzY2hvb2wiIGFs
Z29yaXRobSkuCkBAIC0xMDMxLDE0ICsxMDc5LDE2IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VS
aWdodFNoaWZ0KHVuc2lnbmVkIHNoaWZ0KQogfQogCiAvLyBBbHdheXMgY29waWVzIHRoZSBpbnB1
dCwgZXZlbiB3aGVuIHtzaGlmdH0gPT0gMC4KLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVM
ZWZ0U2hpZnRBbHdheXNDb3B5KFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBM
ZWZ0U2hpZnRNb2RlIG1vZGUpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0
QWx3YXlzQ29weShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwg
TGVmdFNoaWZ0TW9kZSBtb2RlKQogewogICAgIEFTU0VSVChzaGlmdCA8IGRpZ2l0Qml0cyk7CiAg
ICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CiAKICAgICB1bnNpZ25lZCBuID0geC0+bGVuZ3RoKCk7
CiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gbW9kZSA9PSBMZWZ0U2hpZnRNb2RlOjpBbHdh
eXNBZGRPbmVEaWdpdCA/IG4gKyAxIDogbjsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRl
V2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5
Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghc2hpZnQpIHsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG47IGkrKykKQEAgLTEwOTUsOCArMTE0NSw3IEBAIGlubGlu
ZSBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQml0d2lzZU9wKFZNJiB2bSwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5LCBFCiAKICAgICBBU1NFUlQobnVtUGFpcnMgPT0gc3RkOjptaW4oeExl
bmd0aCwgeUxlbmd0aCkpOwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IGV4dHJhRGlnaXRz
ID09IEV4dHJhRGlnaXRzSGFuZGxpbmc6OkNvcHkgPyB4TGVuZ3RoIDogbnVtUGFpcnM7Ci0gICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7Ci0K
KyAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgcmVz
dWx0TGVuZ3RoKTsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IG51bVBhaXJz
OyBpKyspCiAgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQoaSwgb3AoeC0+ZGlnaXQoaSksIHktPmRp
Z2l0KGkpKSk7CkBAIC0xMTQ0LDcgKzExOTMsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlWG9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNv
bHV0ZUJpdHdpc2VPcCh2bSwgeCwgeSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0
cmljT3A6OlN5bW1ldHJpYywgZGlnaXRPcGVyYXRpb24pOwogfQogICAgIAotSlNCaWdJbnQqIEpT
QmlnSW50OjphYnNvbHV0ZUFkZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNp
Z25PcHRpb24pCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSog
ZXhlYywgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKIHsKICAgICB1bnNpZ25l
ZCBpbnB1dExlbmd0aCA9IHgtPmxlbmd0aCgpOwogICAgIC8vIFRoZSBhZGRpdGlvbiB3aWxsIG92
ZXJmbG93IGludG8gYSBuZXcgZGlnaXQgaWYgYWxsIGV4aXN0aW5nIGRpZ2l0cyBhcmUKQEAgLTEx
NTgsNyArMTIwNyw5IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZt
LCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQogICAgIH0KIAogICAgIHVuc2ln
bmVkIHJlc3VsdExlbmd0aCA9IGlucHV0TGVuZ3RoICsgd2lsbE92ZXJmbG93OwotICAgIEpTQmln
SW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpT
QmlnSW50KiByZXN1bHQgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRGlnaXQg
Y2FycnkgPSAxOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgaSsr
KSB7CkBAIC0xMTcyLDE2ICsxMjIzLDE2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVB
ZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQogICAgICAg
ICBBU1NFUlQoIWNhcnJ5KTsKIAogICAgIHJlc3VsdC0+c2V0U2lnbihzaWduT3B0aW9uID09IFNp
Z25PcHRpb246OlNpZ25lZCk7Ci0gICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAg
ICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0oZXhlYy0+dm0oKSk7CiB9CiAKLS8vIExpa2UgdGhl
IGFib3ZlLCBidXQgeW91IGNhbiBzcGVjaWZ5IHRoYXQgdGhlIGFsbG9jYXRlZCByZXN1bHQgc2hv
dWxkIGhhdmUKLS8vIGxlbmd0aCB7cmVzdWx0TGVuZ3RofSwgd2hpY2ggbXVzdCBiZSBhdCBsZWFz
dCBhcyBsYXJnZSBhcyB7eC0+bGVuZ3RoKCl9LgotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0
ZVN1Yk9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCitKU0Jp
Z0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQq
IHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsK
ICAgICBBU1NFUlQocmVzdWx0TGVuZ3RoID49IHgtPmxlbmd0aCgpKTsKLSAgICBKU0JpZ0ludCog
cmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHgtPmxlbmd0aCgpOwogICAgIERpZ2l0IGJvcnJvdyA9IDE7CkBAIC0xMTk0LDcgKzEy
NDUsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViT25lKFZNJiB2bSwgSlNCaWdJ
bnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5n
dGg7IGkgPCByZXN1bHRMZW5ndGg7IGkrKykKICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBi
b3Jyb3cpOwogCi0gICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4g
cmVzdWx0LT5yaWdodFRyaW0oZXhlYy0+dm0oKSk7CiB9CiAKIC8vIExvb2t1cCB0YWJsZSBmb3Ig
dGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCkBA
IC0xMzU0LDggKzE0MDUsNiBAQCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkKICAgICAgICAgZG8gewog
ICAgICAgICAgICAgRGlnaXQgY2h1bms7CiAgICAgICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdp
dERpdmlzb3Iodm0sICpkaXZpZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwgY2h1bmspOwotICAg
ICAgICAgICAgQVNTRVJUKHJlc3QpOwotCiAgICAgICAgICAgICBkaXZpZGVuZCA9ICZyZXN0Owog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgewog
ICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbY2h1bmsgJSBy
YWRpeF0pOwpAQCAtMTQxNCw4ICsxNDYzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyaWdodFRy
aW0oVk0mIHZtKQogICAgICAgICByZXR1cm4gdGhpczsKIAogICAgIHVuc2lnbmVkIG5ld0xlbmd0
aCA9IG5vblplcm9JbmRleCArIDE7Ci0gICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCBuZXdMZW5ndGgpOwotICAgIFJFTEVBU0VfQVNTRVJUKHRyaW1tZWRC
aWdJbnQpOworICAgIEpTQmlnSW50KiB0cmltbWVkQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCh2bSwgbmV3TGVuZ3RoKTsKICAgICBzdGQ6OmNvcHkoZGF0YVN0b3JhZ2UoKSwgZGF0
YVN0b3JhZ2UoKSArIG5ld0xlbmd0aCwgdHJpbW1lZEJpZ0ludC0+ZGF0YVN0b3JhZ2UoKSk7IAog
CiAgICAgdHJpbW1lZEJpZ0ludC0+c2V0U2lnbih0aGlzLT5zaWduKCkpOwpAQCAtMTQzOSw3ICsx
NDg3LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgdW5zaWduZWQgcmFkaXgsIHVuc2lnbmUKICAgICAgICAgICAgIC8vIERpdmlkZSBi
eSBrRGlnaXRzQml0cywgcm91bmRpbmcgdXAuCiAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSAoYml0c01pbiArIGRpZ2l0Qml0cyAtIDEpIC8gZGlnaXRCaXRzOwogICAgICAgICAgICAgaWYg
KGxlbmd0aCA8PSBtYXhMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIGxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2Vk
KHZtLCBsZW5ndGgpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmlu
ZGV4IGE2MmUxMzhhZDY2NTUzYzkzOTU4NmJlNjk1YTFkZTE1YWUzOGU0NTAuLmFiOGZmNWFmNWQ2
N2Y0YjY3MDQxYjI2NWNhMjU5N2Y4MGJjNTQ0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVplcm8oVk0mKTsKLSAgICBz
dGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVdpdGhMZW5ndGgoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBKU0JpZ0ludCogdHJ5Q3JlYXRlV2l0aExlbmd0aChFeGVjU3RhdGUqLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aFVuY2hl
Y2tlZChWTSYsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0
ZUZyb20oVk0mLCBpbnQzMl90IHZhbHVlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZy
b20oVk0mLCB1aW50MzJfdCB2YWx1ZSk7CkBAIC0xMDgsMTUgKzEwOSwxNSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgQ29tcGFyaXNvblJlc3VsdCBzdGF0aWMgY29tcGFyZVRvRG91YmxlKEpTQmlnSW50
KiB4LCBkb3VibGUgeSk7CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFkZChWTSYsIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdWIoVk0mLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWRkKEV4ZWNTdGF0ZSos
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBzdWIoRXhl
Y1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQq
IGRpdmlkZShFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRp
YyBKU0JpZ0ludCogcmVtYWluZGVyKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiB1bmFyeU1pbnVzKFZNJiwgSlNCaWdJbnQqIHgpOwog
Ci0gICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlQW5kKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VPcihWTSYsIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlWG9yKFZNJiwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQo
RXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGJpdHdpc2VPcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAg
IHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZVhvcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpOwogCiBwcml2YXRlOgogCkBAIC0xMzksMTQgKzE0MCwxNCBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYsIEpTQmlnSW50
KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVy
KTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2Us
IERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgdW5zaWduZWQsIEpTQmlnSW50KiByZXN1bHQp
OwogICAgIHN0YXRpYyB2b2lkIG11bHRpcGx5QWNjdW11bGF0ZShKU0JpZ0ludCogbXVsdGlwbGlj
YW5kLCBEaWdpdCBtdWx0aXBsaWVyLCBKU0JpZ0ludCogYWNjdW11bGF0b3IsIHVuc2lnbmVkIGFj
Y3VtdWxhdG9ySW5kZXgpOwotICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0aEJpZ0ludERp
dmlzb3IoVk0mLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0lu
dCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcik7CisgICAgc3RhdGljIHZvaWQgYWJz
b2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogZGl2aWRlbmQs
IEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFp
bmRlcik7CiAgICAgCiAgICAgZW51bSBjbGFzcyBMZWZ0U2hpZnRNb2RlIHsKICAgICAgICAgU2Ft
ZVNpemVSZXN1bHQsCiAgICAgICAgIEFsd2F5c0FkZE9uZURpZ2l0CiAgICAgfTsKICAgICAKLSAg
ICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYsIEpTQmln
SW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSk7CisgICAgc3RhdGljIEpTQmln
SW50KiBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgs
IHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwcm9kdWN0
R3JlYXRlclRoYW4oRGlnaXQgZmFjdG9yMSwgRGlnaXQgZmFjdG9yMiwgRGlnaXQgaGlnaCwgRGln
aXQgbG93KTsKIAogICAgIERpZ2l0IGFic29sdXRlSW5wbGFjZUFkZChKU0JpZ0ludCogc3VtbWFu
ZCwgdW5zaWduZWQgc3RhcnRJbmRleCk7CkBAIC0xNzYsOCArMTc3LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgVW5zaWduZWQKICAgICB9OwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFk
ZE9uZShWTSYsIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IGFic29sdXRlU3ViT25lKFZNJiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7
CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZE9uZShFeGVjU3RhdGUqLCBKU0JpZ0lu
dCogeCwgU2lnbk9wdGlvbik7CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVN1Yk9uZShF
eGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKTsKIAogICAgIC8v
IERpZ2l0IGFyaXRobWV0aWMgaGVscGVycy4KICAgICBzdGF0aWMgRGlnaXQgZGlnaXRBZGQoRGln
aXQgYSwgRGlnaXQgYiwgRGlnaXQmIGNhcnJ5KTsKQEAgLTIwMyw3ICsyMDQsNyBAQCBwcml2YXRl
OgogICAgIEpTQmlnSW50KiByaWdodFRyaW0oVk0mKTsKIAogICAgIHZvaWQgaW5wbGFjZU11bHRp
cGx5QWRkKERpZ2l0IG11bHRpcGxpZXIsIERpZ2l0IHBhcnQpOwotICAgIHN0YXRpYyBKU0JpZ0lu
dCogYWJzb2x1dGVBZGQoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0
U2lnbik7CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChFeGVjU3RhdGUqLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbik7CiAgICAgc3RhdGljIEpTQmln
SW50KiBhYnNvbHV0ZVN1YihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1
bHRTaWduKTsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVk
IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3Bw
CmluZGV4IGEwODhhZDFjYmMyMDc4ZDYyMDVhZmYwYWJhZDNkYTczYTk2ZjViMjYuLjg4YTJiN2Uw
OGM1Zjc2MmI1ODYyMzQxYjYwZDFhNWYxM2NlNzdmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC02OSw4ICs2OSwxMSBAQCBORVZFUl9JTkxJ
TkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKKyAgICAgICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6YWRkKGNhbGxGcmFtZSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGFkZGl0aW9uLiJfcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5oCmluZGV4IDYxZDUzM2NmNDVmNmJkMDMyZGI5OGViNmQ0ZTI0MDQyYWI0YTUy
YjMuLmIzNjk3OWEyMWYzOWZkZDY2YjViMGRkODFjZDI4NjE1ZTQ3MmE2YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTM0OCw4ICszNDgsMTEgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CisgICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0
aW9uLiJfcyk7CiAgICAgfQpAQCAtMzY4LDggKzM3MSwxMSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNNdWwoRXhlY1N0YXRlKiBzdGF0ZSwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
Om11bHRpcGx5KHN0YXRlLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6bXVsdGlwbHkoc3RhdGUsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KIAogICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9z
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDJjMTc5MTg1YjA3N2NiMGRmNTczM2M3YmY4NTEwNmY5
MWYzYmFiNy4uMDkzODU5OWY4ZTdhMDUxZGZjNWEyNjhjNDRkYmEwZDM4OTVmY2Y3MSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRocm93
IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50
LW91dC1vZi1tZW1vcnktdGVzdHMuanM6IEFkZGVkLgorCiAyMDE4LTExLTA3ICBDYWlvIExpbWEg
IDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBbQmlnSW50XSBBZGQgc3VwcG9ydCB0
byBCaWdJbnQgaW50byBWYWx1ZUFkZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1vdXQtb2YtbWVtb3J5LXRlc3RzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vdXQtb2Yt
bWVtb3J5LXRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzkzODdiYTEwODczNTk3ZGE5OTAxNTEwZjA3
MmMxNTdlYTlkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91
dC1vZi1tZW1vcnktdGVzdHMuanMKQEAgLTAsMCArMSw2MyBAQAorLy9AIHJ1bkRlZmF1bHQoIi0t
dXNlQmlnSW50PXRydWUiLCAiLS11c2VERkdKSVQ9ZmFsc2UiKQorCitmdW5jdGlvbiBhc3NlcnQo
YSwgbWVzc2FnZSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3Nh
Z2UpOworfQorCitmdW5jdGlvbiBsc2hpZnQoeSkgeworICAgIGxldCBvdXQgPSAxbjsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHk7IGkrKykgeworICAgICAgICBvdXQgKj0gMm47CisgICAgfQor
CisgICAgcmV0dXJuIG91dDsKK30KKworbGV0IGEgPSBsc2hpZnQoMTYzODQgKiA2Myk7Citmb3Ig
KGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisgICAgYSAqPSAxODQ0Njc0NDA3MzcwOTU1MTYx
NW47Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSBhICsgMW47CisgICAgYXNzZXJ0KGZhbHNlLCAi
U2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2Vw
dGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1l
bW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisK
K3RyeSB7CisgICAgbGV0IGIgPSBhIC0gKC0xbik7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxk
IHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIp
OworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIs
ICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7
CisgICAgbGV0IGIgPSBhICogKC0xbik7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93
IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBj
YXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBl
Y3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAg
bGV0IGIgPSBhIC8gYTsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsK
KyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9m
TWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IC1h
ICYgLTFuOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9y
LCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFz
c2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlF
cnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSBeIC0xbjsK
KyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4
ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5t
ZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1
dCBnb3Q6ICIgKyBlKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354572</attachid>
            <date>2018-11-12 11:26:00 -0800</date>
            <delta_ts>2018-11-12 11:39:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181112162558.patch</filename>
            <type>text/plain</type>
            <size>39450</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NWMzYmVmZGY3Yzc1MWJhNjgwZWFhOTMyOWQ2MWEwM2U3NmJiNGM2Li4zYTZkNjRmOWIyYTRhZDdi
OTc5N2VhNzg3NTg0OWRlY2QzYTYwYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNy
ZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRp
dmlkZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhv
cik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVE
aXZXaXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3
aXNlT3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTExICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYSBm
aXhtZTogcmVuYW1lIHd0Zk9iamNNc2dTZW5kIHRvIHd0Zk9iakNNc2dTZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkZjNmZDFlNTZlZTk5ZTA2
MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41ZTQwNmNhOWZiOWZkNGY2NjVlM2FjZGY4YjM3M2Ex
MzM4ZmZjODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4
ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2
bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxK
U0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0Jp
Z0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBsZWZ0
T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAgICAgSlNC
aWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0lu
dCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKIAotICAgIHJldHVybiBK
U0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAg
IHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMjcsNyArMTMyNyw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0g
anNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganND
YXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VP
cigqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6
Yml0d2lzZU9yKGV4ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCiBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMWU4ZmUwMDQ1MDQxZWIzOTJkYWRjOWNlNDNmNDgxNTIx
MmUzOTFkMi4uNTExYzQyZjNkNGYxMWMzOWE4Yjg1Y2QyZDM2MjA3MWIyMTlkNWRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNzY2LDEwICsy
NzY2LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZU9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2QKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IG9wZXJhbmQudG9QcmltaXRpdmUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwg
YXNCaWdJbnQocHJpbVZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKLSAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmlt
VmFsdWUpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGV4ZWMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggNTE2M2MzM2VlOTBmYzQ4Yjc1ODZlMjc4MjkzMTBkNDQyMmY2N2MwOC4uZWU1YWRhMjc5NTBj
ZTk0YzExYjg4NTIyNWEzYmYwMjhlNzU2YWFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC01NjMsNyArNTYzLDggQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3N1YikKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIENIRUNL
X0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwg
ewogICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZXhl
YywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgfSk7CkBAIC02OTksNyAr
NzAwLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5k
KHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZUFuZChleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwogICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAgICAgICAgIH0K
QEAgLTcyMCw3ICs3MjEsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0b3IpCiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
Yml0d2lzZU9yKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Yml0d2lzZU9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKICAg
ICAgICAgfQpAQCAtNzQxLDcgKzc0Miw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4
b3IpCiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6Yml0d2lzZVhvcih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAg
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5k
ZXggNGFiNWE1MjM1M2ZkMWFlOTIwZDExYmIzNGJjMDZlYjU0ZmY4OGVlNy4uYmJlNWE5OThmOTQw
M2JiZWFkMjhmZjgwNDAxNjgzOGZhN2ZmZmQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcApAQCAtODEsNyArODEsNyBAQCBTdHJ1Y3R1cmUqIEpTQmlnSW50
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbAogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oVk0mIHZtKQogewotICAgIEpT
QmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMCk7CisgICAgSlNCaWdJ
bnQqIHplcm9CaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAwKTsKICAgICBy
ZXR1cm4gemVyb0JpZ0ludDsKIH0KIApAQCAtOTEsOSArOTEsMjMgQEAgaW5saW5lIHNpemVfdCBK
U0JpZ0ludDo6YWxsb2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBzaXpl
V2l0aFBhZGRpbmcgKyBsZW5ndGggKiBzaXplb2YoRGlnaXQpOwogfQogCi1KU0JpZ0ludCogSlNC
aWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIGlmIChsZW5ndGgg
PiBtYXhMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCh2bSwgbGVuZ3RoKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRo
TGVuZ3RoVW5jaGVja2VkKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemUobGVuZ3RoKSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUu
Z2V0KCksIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmlnSW50KTsKICAgICBiaWdJbnQt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTAzLDggKzEx
Nyw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDMyX3QgdmFs
dWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAg
IAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAK
KyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7
CiAgICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRp
Y19jYXN0PERpZ2l0PigtMSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwogICAgICAg
ICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7CkBAIC0xMTksNyArMTMyLDcgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBi
aWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0g
Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgw
LCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAt
MTMwLDggKzE0Myw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGlu
dDY0X3QgdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKICAgICBp
ZiAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAgICAgCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwg
MCkgewogICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4o
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAgICAgICAgICAgICBi
aWdJbnQtPnNldFNpZ24odHJ1ZSk7CkBAIC0xNDEsOCArMTUzLDcgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGJp
Z0ludDsKICAgICB9CiAgICAgCi0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5n
dGgodm0sIDIpOwotICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3Ro
VW5jaGVja2VkKHZtLCAyKTsKICAgICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAgICAgYm9vbCBzaWdu
ID0gZmFsc2U7CiAgICAgaWYgKHZhbHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3Nyw4IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGJvb2wgdmFsdWUpCiAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CisgICAgQVNTRVJUKGJpZ0ludCk7
CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAg
ICByZXR1cm4gYmlnSW50OwogfQpAQCAtMjM0LDYgKzI0Niw3IEBAIHZvaWQgSlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZChEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQpCiBKU0JpZ0ludCog
SlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHgtPmlzWmVybygpKQogICAgICAgICByZXR1
cm4geDsKQEAgLTI0MSw3ICsyNTQsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4
ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICByZXR1cm4g
eTsKIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHgtPmxlbmd0aCgpICsgeS0+bGVuZ3Ro
KCk7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZt
LCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dHJ5Q3Jl
YXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlv
blR5cGU6OldpdGhaZXJvKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB4LT5sZW5n
dGgoKTsgaSsrKQpAQCAtMjc3LDggKzI5MSwxMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmRpdmlk
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIAogICAgICAgICBE
aWdpdCByZW1haW5kZXI7CiAgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwg
eCwgZGl2aXNvciwgJnF1b3RpZW50LCByZW1haW5kZXIpOwotICAgIH0gZWxzZQotICAgICAgICBh
YnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKHZtLCB4LCB5LCAmcXVvdGllbnQsIG51bGxwdHIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoZXhl
YywgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CisgICAgfQogCiAgICAgcXVvdGllbnQtPnNldFNpZ24ocmVzdWx0
U2lnbik7CiAgICAgcmV0dXJuIHF1b3RpZW50LT5yaWdodFRyaW0odm0pOwpAQCAtMjg4LDcgKzMw
NCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y29weShWTSYgdm0sIEpTQmlnSW50KiB4KQogewog
ICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5sZW5ndGgo
KSk7CiAgICAgc3RkOjpjb3B5KHgtPmRhdGFTdG9yYWdlKCksIHgtPmRhdGFTdG9yYWdlKCkgKyB4
LT5sZW5ndGgoKSwgcmVzdWx0LT5kYXRhU3RvcmFnZSgpKTsKICAgICByZXN1bHQtPnNldFNpZ24o
eC0+c2lnbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzAwLDYgKzMxNiw3IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6dW5hcnlNaW51cyhWTSYgdm0sIEpTQmlnSW50KiB4KQogICAgICAgICBy
ZXR1cm4geDsKIAogICAgIEpTQmlnSW50KiByZXN1bHQgPSBjb3B5KHZtLCB4KTsKKyAgICBBU1NF
UlQocmVzdWx0KTsKICAgICByZXN1bHQtPnNldFNpZ24oIXgtPnNpZ24oKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTMzMSwyMyArMzQ4LDI2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVt
YWluZGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAg
ICBpZiAoIXJlbWFpbmRlckRpZ2l0KQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0p
OwogCi0gICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgICAg
ICByZW1haW5kZXIgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAg
cmVtYWluZGVyLT5zZXREaWdpdCgwLCByZW1haW5kZXJEaWdpdCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksIG51bGxwdHIsICZyZW1h
aW5kZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlz
b3IoZXhlYywgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIH0KIAogICAgIHJlbWFpbmRlci0+c2V0U2ln
bih4LT5zaWduKCkpOwogICAgIHJldHVybiByZW1haW5kZXItPnJpZ2h0VHJpbSh2bSk7CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQorSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHhTaWdu
ID0geC0+c2lnbigpOwogCiAgICAgLy8geCArIHkgPT0geCArIHkKICAgICAvLyAteCArIC15ID09
IC0oeCArIHkpCiAgICAgaWYgKHhTaWduID09IHktPnNpZ24oKSkKLSAgICAgICAgcmV0dXJuIGFi
c29sdXRlQWRkKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZChl
eGVjLCB4LCB5LCB4U2lnbik7CiAKICAgICAvLyB4ICsgLXkgPT0geCAtIHkgPT0gLSh5IC0geCkK
ICAgICAvLyAteCArIHkgPT0geSAtIHggPT0gLSh4IC0geSkKQEAgLTM1OCwxMyArMzc4LDE0IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQogICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAotSlNCaWdJ
bnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0Jp
Z0ludCogSlNCaWdJbnQ6OnN1YihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24gPSB4LT5z
aWduKCk7CiAgICAgaWYgKHhTaWduICE9IHktPnNpZ24oKSkgewogICAgICAgICAvLyB4IC0gKC15
KSA9PSB4ICsgeQogICAgICAgICAvLyAoLXgpIC0geSA9PSAtKHggKyB5KQotICAgICAgICByZXR1
cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRl
QWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKICAgICB9CiAgICAgLy8geCAtIHkgPT0gLSh5IC0geCkK
ICAgICAvLyAoLXgpIC0gKC15KSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzc1LDggKzM5Niwx
MSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKICAgICByZXR1cm4gYWJzb2x1dGVTdWIodm0sIHksIHgsICF4U2lnbik7CiB9CiAKLUpT
QmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChFeGVjU3RhdGUqIGV4ZWMsIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICgheC0+c2ln
bigpICYmICF5LT5zaWduKCkpCiAgICAgICAgIHJldHVybiBhYnNvbHV0ZUFuZCh2bSwgeCwgeSk7
CiAgICAgCkBAIC0zODQsMTEgKzQwOCwxMiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VB
bmQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGludCByZXN1bHRM
ZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpICsgMTsKICAgICAgICAg
Ly8gKC14KSAmICgteSkgPT0gfih4LTEpICYgfih5LTEpID09IH4oKHgtMSkgfCAoeS0xKSkKICAg
ICAgICAgLy8gPT0gLSgoKHgtMSkgfCAoeS0xKSkgKyAxKQotICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmln
SW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7Ci0gICAgICAgIHJl
c3VsdCA9IGFic29sdXRlT3Iodm0sIHJlc3VsdCwgeTEpOworICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICAgICAgcmV0dXJuIGFic29s
dXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgICAgIEpTQmln
SW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAg
cmVzdWx0ID0gYWJzb2x1dGVPcih2bSwgcmVzdWx0LCB5MSk7CisgICAgICAgIHJldHVybiBhYnNv
bHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKHgtPnNpZ24oKSAhPSB5LT5zaWduKCkpOwpAQCAtMzk3LDExICs0MjIsMTMgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCAmICgteSkg
PT0geCAmIH4oeS0xKSA9PSB4ICYgfih5LTEpCi0gICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZt
LCB4LCBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpKTsKKyAgICByZXR1cm4gYWJz
b2x1dGVBbmROb3Qodm0sIHgsIGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKSk7
CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5
LT5sZW5ndGgoKSk7CiAKICAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQpAQCAtNDEw
LDEwICs0MzcsMTAgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgaWYgKHgtPnNpZ24oKSAmJiB5LT5zaWduKCkpIHsK
ICAgICAgICAgLy8gKC14KSB8ICgteSkgPT0gfih4LTEpIHwgfih5LTEpID09IH4oKHgtMSkgJiAo
eS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAxKQotICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAg
ICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7Cisg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRM
ZW5ndGgpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5
LT5sZW5ndGgoKSk7CiAgICAgICAgIHJlc3VsdCA9IGFic29sdXRlQW5kKHZtLCByZXN1bHQsIHkx
KTsKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246
OlNpZ25lZCk7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNp
Z25PcHRpb246OlNpZ25lZCk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0g
eS0+c2lnbigpKTsKQEAgLTQyMywxMyArNDUwLDE2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0
d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3
YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCB8ICgteSkgPT0geCB8IH4oeS0xKSA9PSB+KCh5LTEp
ICZ+IHgpID09IC0oKCh5LTEpICZ+IHgpICsgMSkKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJz
b2x1dGVTdWJPbmUodm0sIHksIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHJlc3VsdExlbmd0aCk7CiAgICAgcmVzdWx0ID0gYWJz
b2x1dGVBbmROb3Qodm0sIHJlc3VsdCwgeCk7Ci0gICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZt
LCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25l
KGV4ZWMsIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAotSlNCaWdJbnQqIEpTQmln
SW50OjpiaXR3aXNlWG9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJ
bnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNp
Z24oKSkKICAgICAgICAgcmV0dXJuIGFic29sdXRlWG9yKHZtLCB4LCB5KTsKICAgICAKQEAgLTQz
Nyw4ICs0NjcsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VYb3IoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGludCByZXN1bHRMZW5ndGggPSBzdGQ6Om1h
eCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpOwogICAgICAgICAKICAgICAgICAgLy8gKC14KSBe
ICgteSkgPT0gfih4LTEpIF4gfih5LTEpID09ICh4LTEpIF4gKHktMSkKLSAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB4LCByZXN1bHRMZW5ndGgpOwotICAgICAg
ICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpOworICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVu
Z3RoKTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+
bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeTEpOwog
ICAgIH0KICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00NDksOSArNDc5
LDExIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHgg
XiAoLXkpID09IHggXiB+KHktMSkgPT0gfih4IF4gKHktMSkpID09IC0oKHggXiAoeS0xKSkgKyAx
KQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVu
Z3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVz
dWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwog
ICAgIHJlc3VsdCA9IGFic29sdXRlWG9yKHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNv
bHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHJldHVybiBh
YnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNzUxLDEwICs3ODMsMTIgQEAgaW5saW5lIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50OjphYnNvbHV0ZUNvbXBhcmUoSlNCaWdJbnQqIHgs
IEpTQmlnSW4KICAgICByZXR1cm4geC0+ZGlnaXQoaSkgPiB5LT5kaWdpdChpKSA/IENvbXBhcmlz
b25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVB
ZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0
U2lnbikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCiAgICAgaWYgKHgtPmxlbmd0aCgp
IDwgeS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeSwgeCwgcmVz
dWx0U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZChleGVjLCB5LCB4LCByZXN1bHRT
aWduKTsKIAogICAgIGlmICh4LT5pc1plcm8oKSkgewogICAgICAgICBBU1NFUlQoeS0+aXNaZXJv
KCkpOwpAQCAtNzY0LDggKzc5OCw5IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQo
Vk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnCiAgICAgaWYg
KHktPmlzWmVybygpKQogICAgICAgICByZXR1cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4
IDogdW5hcnlNaW51cyh2bSwgeCk7CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxlbmd0aCgpICsgMSk7Ci0gICAgQVNTRVJUKHJlc3Vs
dCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVuZ3Ro
KGV4ZWMsIHgtPmxlbmd0aCgpICsgMSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIERpZ2l0IGNhcnJ5ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAg
ICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBpKyspIHsKQEAgLTgwNiw3ICs4NDEsOCBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlmIChjb21wYXJpc29uUmVzdWx0ID09IENvbXBhcmlz
b25SZXN1bHQ6OkVxdWFsKQogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0p
OwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZt
LCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVX
aXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5sZW5ndGgoKSk7CisKICAgICBEaWdpdCBib3Jyb3cg
PSAwOwogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkr
KykgewpAQCAtODUxLDcgKzg4Nyw3IEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERp
Z2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIp
IHsKICAgICAgICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRyKQotICAgICAgICAgICAgKnF1b3Rp
ZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIGxlbmd0aCk7CisgICAgICAgICAg
ICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVu
Z3RoKTsKIAogICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsK
ICAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdpdERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBk
aXZpc29yLCByZW1haW5kZXIpOwpAQCAtODY5LDcgKzkwNSw3IEBAIHZvaWQgSlNCaWdJbnQ6OmFi
c29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZp
c29yLCBKCiAvLyBCb3RoIHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9IGFyZSBvcHRpb25hbCwg
Zm9yIGNhbGxlcnMgdGhhdCBhcmUgb25seQogLy8gaW50ZXJlc3RlZCBpbiBvbmUgb2YgdGhlbS4K
IC8vIFNlZSBLbnV0aCwgVm9sdW1lIDIsIHNlY3Rpb24gNC4zLjEsIEFsZ29yaXRobSBELgotdm9p
ZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50
KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmln
SW50KiogcmVtYWluZGVyKQordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2
aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlz
b3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQogewogICAgIEFT
U0VSVChkaXZpc29yLT5sZW5ndGgoKSA+PSAyKTsKICAgICBBU1NFUlQoZGl2aWRlbmQtPmxlbmd0
aCgpID49IGRpdmlzb3ItPmxlbmd0aCgpKTsKQEAgLTg4NCwxMSArOTIwLDEzIEBAIHZvaWQgSlNC
aWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogZGl2
aWRlbmQsIEpTQmlnSW50CiAgICAgLy8gVGhlIHF1b3RpZW50IHRvIGJlIGNvbXB1dGVkLgogICAg
IEpTQmlnSW50KiBxID0gbnVsbHB0cjsKICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikKLSAg
ICAgICAgcSA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG0gKyAxKTsKKyAgICAgICAgcSA9IGNyZWF0
ZVdpdGhMZW5ndGhVbmNoZWNrZWQoZXhlYy0+dm0oKSwgbSArIDEpOwogICAgIAogICAgIC8vIElu
IGVhY2ggaXRlcmF0aW9uLCB7cWhhdHZ9IGhvbGRzIHtkaXZpc29yfSAqIHtjdXJyZW50IHF1b3Rp
ZW50IGRpZ2l0fS4KICAgICAvLyAidiIgaXMgdGhlIGJvb2sncyBuYW1lIGZvciB7ZGl2aXNvcn0s
ICJxaGF0IiB0aGUgY3VycmVudCBxdW90aWVudCBkaWdpdC4KLSAgICBKU0JpZ0ludCogcWhhdHYg
PSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBuICsgMSk7CisgICAgSlNCaWdJbnQqIHFoYXR2ID0gdHJ5
Q3JlYXRlV2l0aExlbmd0aChleGVjLCBuICsgMSk7CisgICAgaWYgKCFxaGF0dikKKyAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIC8vIEQxLgogICAgIC8vIExlZnQtc2hpZnQgaW5wdXRzIHNvIHRo
YXQgdGhlIGRpdmlzb3IncyBNU0IgaXMgc2V0LiBUaGlzIGlzIG5lY2Vzc2FyeQpAQCAtODk4LDEy
ICs5MzYsMTYgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihW
TSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICBEaWdpdCBsYXN0RGlnaXQg
PSBkaXZpc29yLT5kaWdpdChuIC0gMSk7CiAgICAgdW5zaWduZWQgc2hpZnQgPSBzaXplb2YobGFz
dERpZ2l0KSA9PSA4ID8gY2x6NjQobGFzdERpZ2l0KSA6IGNsejMyKGxhc3REaWdpdCk7CiAKLSAg
ICBpZiAoc2hpZnQgPiAwKQotICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdh
eXNDb3B5KHZtLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQp
OworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgZGl2aXNvciA9IGFic29sdXRlTGVmdFNo
aWZ0QWx3YXlzQ29weShleGVjLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNp
emVSZXN1bHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChkaXZpc29yKTsKKyAgICB9CiAKICAg
ICAvLyBIb2xkcyB0aGUgKGNvbnRpbnVvdXNseSB1cGRhdGVkKSByZW1haW5pbmcgcGFydCBvZiB0
aGUgZGl2aWRlbmQsIHdoaWNoCiAgICAgLy8gZXZlbnR1YWxseSBiZWNvbWVzIHRoZSByZW1haW5k
ZXIuCi0gICAgSlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkodm0sIGRp
dmlkZW5kLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQpOworICAgIEpT
QmlnSW50KiB1ID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KGV4ZWMsIGRpdmlkZW5kLCBz
aGlmdCwgTGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQpOworICAgIGlmICghdSkKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRDIuCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBkaXZp
ZGVuZCdzIGRpZ2l0IChsaWtlIHRoZSAiZ3JhZCBzY2hvb2wiIGFsZ29yaXRobSkuCkBAIC0xMDMx
LDE0ICsxMDczLDE2IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VSaWdodFNoaWZ0KHVuc2lnbmVk
IHNoaWZ0KQogfQogCiAvLyBBbHdheXMgY29waWVzIHRoZSBpbnB1dCwgZXZlbiB3aGVuIHtzaGlm
dH0gPT0gMC4KLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUp
CitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChzaGlmdCA8IGRpZ2l0Qml0cyk7CiAgICAgQVNTRVJUKCF4LT5pc1pl
cm8oKSk7CiAKICAgICB1bnNpZ25lZCBuID0geC0+bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcmVz
dWx0TGVuZ3RoID0gbW9kZSA9PSBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCA/IG4g
KyAxIDogbjsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVz
dWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChl
eGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICghc2hpZnQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG47IGkrKykKQEAgLTEwOTUsOCArMTEzOSw3IEBAIGlubGluZSBKU0JpZ0ludCogSlNCaWdJ
bnQ6OmFic29sdXRlQml0d2lzZU9wKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBF
CiAKICAgICBBU1NFUlQobnVtUGFpcnMgPT0gc3RkOjptaW4oeExlbmd0aCwgeUxlbmd0aCkpOwog
ICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IGV4dHJhRGlnaXRzID09IEV4dHJhRGlnaXRzSGFu
ZGxpbmc6OkNvcHkgPyB4TGVuZ3RoIDogbnVtUGFpcnM7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9
IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7Ci0KKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgcmVzdWx0TGVuZ3RoKTsKICAgICB1
bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IG51bVBhaXJzOyBpKyspCiAgICAgICAgIHJl
c3VsdC0+c2V0RGlnaXQoaSwgb3AoeC0+ZGlnaXQoaSksIHktPmRpZ2l0KGkpKSk7CkBAIC0xMTQ0
LDcgKzExODcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlWG9yKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZUJpdHdpc2VPcCh2bSwg
eCwgeSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0cmljT3A6OlN5bW1ldHJpYywg
ZGlnaXRPcGVyYXRpb24pOwogfQogICAgIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFk
ZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgs
IFNpZ25PcHRpb24gc2lnbk9wdGlvbikKIHsKICAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IHgt
Pmxlbmd0aCgpOwogICAgIC8vIFRoZSBhZGRpdGlvbiB3aWxsIG92ZXJmbG93IGludG8gYSBuZXcg
ZGlnaXQgaWYgYWxsIGV4aXN0aW5nIGRpZ2l0cyBhcmUKQEAgLTExNTgsNyArMTIwMSw5IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2ln
bk9wdGlvbiBzaWduT3B0aW9uKQogICAgIH0KIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9
IGlucHV0TGVuZ3RoICsgd2lsbE92ZXJmbG93OwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSB0
cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRGlnaXQgY2FycnkgPSAxOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgaSsrKSB7CkBAIC0xMTcyLDE2ICsx
MjE3LDE2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQogICAgICAgICBBU1NFUlQoIWNhcnJ5KTsK
IAogICAgIHJlc3VsdC0+c2V0U2lnbihzaWduT3B0aW9uID09IFNpZ25PcHRpb246OlNpZ25lZCk7
Ci0gICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0LT5y
aWdodFRyaW0oZXhlYy0+dm0oKSk7CiB9CiAKLS8vIExpa2UgdGhlIGFib3ZlLCBidXQgeW91IGNh
biBzcGVjaWZ5IHRoYXQgdGhlIGFsbG9jYXRlZCByZXN1bHQgc2hvdWxkIGhhdmUKLS8vIGxlbmd0
aCB7cmVzdWx0TGVuZ3RofSwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB7eC0+
bGVuZ3RoKCl9LgotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShWTSYgdm0sIEpT
QmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFi
c29sdXRlU3ViT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3Vs
dExlbmd0aCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKICAgICBBU1NFUlQocmVzdWx0
TGVuZ3RoID49IHgtPmxlbmd0aCgpKTsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0
aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3Jl
YXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgp
OwogICAgIERpZ2l0IGJvcnJvdyA9IDE7CkBAIC0xMTk0LDcgKzEyMzksNyBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OmFic29sdXRlU3ViT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJl
c3VsdExlbmd0aCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkgPCByZXN1bHRMZW5n
dGg7IGkrKykKICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBib3Jyb3cpOwogCi0gICAgcmV0
dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0o
ZXhlYy0+dm0oKSk7CiB9CiAKIC8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVy
IG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCkBAIC0xMzU0LDggKzEzOTksNiBA
QCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmln
SW50KiB4LCB1bnNpZ25lZCByYWRpeCkKICAgICAgICAgZG8gewogICAgICAgICAgICAgRGlnaXQg
Y2h1bms7CiAgICAgICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sICpkaXZp
ZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwgY2h1bmspOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3QpOwotCiAgICAgICAgICAgICBkaXZpZGVuZCA9ICZyZXN0OwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgewogICAgICAgICAgICAgICAgIHJl
c3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbY2h1bmsgJSByYWRpeF0pOwpAQCAtMTQxNCw4
ICsxNDU3LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQogICAgICAg
ICByZXR1cm4gdGhpczsKIAogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IG5vblplcm9JbmRleCAr
IDE7Ci0gICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBu
ZXdMZW5ndGgpOwotICAgIFJFTEVBU0VfQVNTRVJUKHRyaW1tZWRCaWdJbnQpOworICAgIEpTQmln
SW50KiB0cmltbWVkQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbmV3TGVu
Z3RoKTsKICAgICBzdGQ6OmNvcHkoZGF0YVN0b3JhZ2UoKSwgZGF0YVN0b3JhZ2UoKSArIG5ld0xl
bmd0aCwgdHJpbW1lZEJpZ0ludC0+ZGF0YVN0b3JhZ2UoKSk7IAogCiAgICAgdHJpbW1lZEJpZ0lu
dC0+c2V0U2lnbih0aGlzLT5zaWduKCkpOwpAQCAtMTQzOSw3ICsxNDgxLDcgQEAgSlNCaWdJbnQq
IEpTQmlnSW50OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgdW5zaWduZWQg
cmFkaXgsIHVuc2lnbmUKICAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91
bmRpbmcgdXAuCiAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAoYml0c01pbiArIGRpZ2l0
Qml0cyAtIDEpIC8gZGlnaXRCaXRzOwogICAgICAgICAgICAgaWYgKGxlbmd0aCA8PSBtYXhMZW5n
dGgpIHsKLSAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGgodm0sIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBsZW5ndGgpOwogICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IGE2MmUxMzhhZDY2NTUz
YzkzOTU4NmJlNjk1YTFkZTE1YWUzOGU0NTAuLmFiOGZmNWFmNWQ2N2Y0YjY3MDQxYjI2NWNhMjU5
N2Y4MGJjNTQ0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApA
QCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICBz
dGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVplcm8oVk0mKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGNy
ZWF0ZVdpdGhMZW5ndGgoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0lu
dCogdHJ5Q3JlYXRlV2l0aExlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChWTSYsIHVuc2lnbmVk
IGxlbmd0aCk7CiAKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oVk0mLCBpbnQzMl90
IHZhbHVlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oVk0mLCB1aW50MzJfdCB2
YWx1ZSk7CkBAIC0xMDgsMTUgKzEwOSwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ29tcGFyaXNv
blJlc3VsdCBzdGF0aWMgY29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSk7CiAK
LSAgICBzdGF0aWMgSlNCaWdJbnQqIGFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7
Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdWIoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
OworICAgIHN0YXRpYyBKU0JpZ0ludCogYWRkKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0Jp
Z0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBzdWIoRXhlY1N0YXRlKiwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGRpdmlkZShFeGVjU3RhdGUq
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogcmVtYWlu
ZGVyKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGljIEpT
QmlnSW50KiB1bmFyeU1pbnVzKFZNJiwgSlNCaWdJbnQqIHgpOwogCi0gICAgc3RhdGljIEpTQmln
SW50KiBiaXR3aXNlQW5kKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0
aWMgSlNCaWdJbnQqIGJpdHdpc2VPcihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0g
ICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlWG9yKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoRXhlY1N0YXRlKiwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VPcihFeGVj
U3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCog
Yml0d2lzZVhvcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiBwcml2
YXRlOgogCkBAIC0xMzksMTQgKzE0MCwxNCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFi
c29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29y
LCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVyKTsKICAgICBzdGF0aWMgdm9p
ZCBpbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGln
aXQgc3VtbWFuZCwgdW5zaWduZWQsIEpTQmlnSW50KiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lk
IG11bHRpcGx5QWNjdW11bGF0ZShKU0JpZ0ludCogbXVsdGlwbGljYW5kLCBEaWdpdCBtdWx0aXBs
aWVyLCBKU0JpZ0ludCogYWNjdW11bGF0b3IsIHVuc2lnbmVkIGFjY3VtdWxhdG9ySW5kZXgpOwot
ICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mLCBKU0JpZ0lu
dCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0Jp
Z0ludCoqIHJlbWFpbmRlcik7CisgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoQmlnSW50
RGl2aXNvcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29y
LCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcik7CiAgICAgCiAgICAg
ZW51bSBjbGFzcyBMZWZ0U2hpZnRNb2RlIHsKICAgICAgICAgU2FtZVNpemVSZXN1bHQsCiAgICAg
ICAgIEFsd2F5c0FkZE9uZURpZ2l0CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBz
aGlmdCwgTGVmdFNoaWZ0TW9kZSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUxlZnRT
aGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBM
ZWZ0U2hpZnRNb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwcm9kdWN0R3JlYXRlclRoYW4oRGlnaXQg
ZmFjdG9yMSwgRGlnaXQgZmFjdG9yMiwgRGlnaXQgaGlnaCwgRGlnaXQgbG93KTsKIAogICAgIERp
Z2l0IGFic29sdXRlSW5wbGFjZUFkZChKU0JpZ0ludCogc3VtbWFuZCwgdW5zaWduZWQgc3RhcnRJ
bmRleCk7CkBAIC0xNzYsOCArMTc3LDggQEAgcHJpdmF0ZToKICAgICAgICAgVW5zaWduZWQKICAg
ICB9OwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZE9uZShWTSYsIEpTQmlnSW50
KiB4LCBTaWduT3B0aW9uKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViT25lKFZN
JiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7CisgICAgc3RhdGljIEpTQmln
SW50KiBhYnNvbHV0ZUFkZE9uZShFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbik7
CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVN1Yk9uZShFeGVjU3RhdGUqLCBKU0JpZ0lu
dCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKTsKIAogICAgIC8vIERpZ2l0IGFyaXRobWV0aWMg
aGVscGVycy4KICAgICBzdGF0aWMgRGlnaXQgZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGln
aXQmIGNhcnJ5KTsKQEAgLTIwMyw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIEpTQmlnSW50KiBy
aWdodFRyaW0oVk0mKTsKIAogICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0IG11bHRp
cGxpZXIsIERpZ2l0IHBhcnQpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGQoVk0m
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbik7CisgICAgc3RhdGlj
IEpTQmlnSW50KiBhYnNvbHV0ZUFkZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHksIGJvb2wgcmVzdWx0U2lnbik7CiAgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVN1YihW
TSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKICAgICAKICAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IGEwODhhZDFjYmMy
MDc4ZDYyMDVhZmYwYWJhZDNkYTczYTk2ZjViMjYuLjg4YTJiN2UwOGM1Zjc2MmI1ODYyMzQxYjYw
ZDFhNWYxM2NlNzdmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuY3BwCkBAIC02OSw4ICs2OSwxMSBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNs
b3dDYXNlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6YWRkKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6YWRkKGNhbGxGcmFtZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3Bl
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4
IDYxZDUzM2NmNDVmNmJkMDMyZGI5OGViNmQ0ZTI0MDQyYWI0YTUyYjMuLmIzNjk3OWEyMWYzOWZk
ZDY2YjViMGRkODFjZDI4NjE1ZTQ3MmE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKQEAgLTM0OCw4ICszNDgsMTEgQEAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzU3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiAgICAgfQpA
QCAtMzY4LDggKzM3MSwxMSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNNdWwoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5KHN0YXRlLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6bXVs
dGlwbHkoc3RhdGUsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KIAog
ICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNzdkYzY2NjRiNDE2YzE2NDY4MmM1NjUyYzI5ZjQyNmU5N2VlZTQ2ZS4uZTcwMjg5MTU1
MjZlZGI1MTM1OTVjOGQ0ZGNmMWE0MWI1NTlkZjg2NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0w
MSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0JpZ0ludF0g
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRocm93IHdoZW4gbGVuZ3RoIGlzIGdy
ZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVz
dHMuanM6IEFkZGVkLgorCiAyMDE4LTExLTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KIAogICAgICAgICBVKzE4MEUgaXMgbm8gbG9uZ2VyIGEgd2hpdGVzcGFjZSBj
aGFyYWN0ZXIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9y
eS10ZXN0cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYzM5Mzg3YmExMDg3MzU5N2RhOTkwMTUxMGYwNzJjMTU3ZWE5ZDk3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vdXQtb2YtbWVtb3J5LXRl
c3RzLmpzCkBAIC0wLDAgKzEsNjMgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10cnVl
IiwgIi0tdXNlREZHSklUPWZhbHNlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIG1lc3NhZ2UpIHsK
KyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK30KKworZnVu
Y3Rpb24gbHNoaWZ0KHkpIHsKKyAgICBsZXQgb3V0ID0gMW47CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCB5OyBpKyspIHsKKyAgICAgICAgb3V0ICo9IDJuOworICAgIH0KKworICAgIHJldHVybiBv
dXQ7Cit9CisKK2xldCBhID0gbHNoaWZ0KDE2Mzg0ICogNjMpOworZm9yIChsZXQgaSA9IDA7IGkg
PCAyNTY7IGkrKykgeworICAgIGEgKj0gMTg0NDY3NDQwNzM3MDk1NTE2MTVuOworfQorCit0cnkg
eworICAgIGxldCBiID0gYSArIDFuOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBP
dXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0
Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0
ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxl
dCBiID0gYSAtICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1l
bW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkg
eworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0
T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0g
YSAqICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVy
cm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAg
IGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAvIGE7
CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUu
bWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBi
dXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSAtYSAmIC0xbjsKKyAgICBh
c3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVk
IHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdl
ID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6
ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgXiAtMW47CisgICAgYXNzZXJ0KGZh
bHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0
IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7
Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354573</attachid>
            <date>2018-11-12 11:39:58 -0800</date>
            <delta_ts>2018-11-12 15:46:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181112163956.patch</filename>
            <type>text/plain</type>
            <size>39877</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NWMzYmVmZGY3Yzc1MWJhNjgwZWFhOTMyOWQ2MWEwM2U3NmJiNGM2Li4zYTZkNjRmOWIyYTRhZDdi
OTc5N2VhNzg3NTg0OWRlY2QzYTYwYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNy
ZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRp
dmlkZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhv
cik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVE
aXZXaXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3
aXNlT3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTExICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYSBm
aXhtZTogcmVuYW1lIHd0Zk9iamNNc2dTZW5kIHRvIHd0Zk9iakNNc2dTZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkZjNmZDFlNTZlZTk5ZTA2
MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41NDE3ZmIwZGZjZDI3NDAzODJmMDRlYzYyYjVmYjFm
MGJkYjBmZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4
ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2
bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxK
U0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0Jp
Z0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBsZWZ0
T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAgICAgSlNC
aWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0lu
dCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKIAotICAgIHJldHVybiBK
U0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAg
IHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMTYsNyArMTMxNiw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0g
anNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganND
YXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZCgqdm0s
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGV4
ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKgog
ICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAg
SlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0g
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBsZWZ0T3BlcmFuZCwg
cmlnaHRPcGVyYW5kKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlOGZl
MDA0NTA0MWViMzkyZGFkYzljZTQzZjQ4MTUyMTJlMzkxZDIuLjUxMWM0MmYzZDRmMTFjMzlhOGI4
NWNkMmQzNjIwNzFiMjE5ZDVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMjc2NiwxMCArMjc2Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAot
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQorICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOwogCiAgICAgZG91YmxlIG51bWJl
ciA9IHByaW1WYWx1ZS50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDUxNjNjMzNlZTkwZmM0OGI3NTg2ZTI3ODI5
MzEwZDQ0MjJmNjdjMDguLmVlNWFkYTI3OTUwY2U5NGMxMWI4ODUyMjVhM2JmMDI4ZTc1NmFhY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNTYzLDcgKzU2Myw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAK
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZXhlYywgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJF
VFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgICAgICB1cGRhdGVBcml0
aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIH0pOwpAQCAtNjk5LDcgKzcwMCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9CkBAIC03MjAsNyArNzIxLDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcih2bSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTc0MSw3ICs3NDIsNyBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwog
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3Iodm0sIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNl
WG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAg
ICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRhYjVhNTIzNTNmZDFhZTkyMGQxMWJiMzRi
YzA2ZWI1NGZmODhlZTcuLmJiZTVhOTk4Zjk0MDNiYmVhZDI4ZmY4MDQwMTY4MzhmYTdmZmZkOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKIAogSlNCaWdJbnQqIEpTQmlnSW50Ojpj
cmVhdGVaZXJvKFZNJiB2bSkKIHsKLSAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdp
dGhMZW5ndGgodm0sIDApOworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZCh2bSwgMCk7CiAgICAgcmV0dXJuIHplcm9CaWdJbnQ7CiB9CiAKQEAgLTkx
LDkgKzkxLDIzIEBAIGlubGluZSBzaXplX3QgSlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKHVuc2ln
bmVkIGxlbmd0aCkKICAgICByZXR1cm4gc2l6ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9m
KERpZ2l0KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2
bSwgdW5zaWduZWQgbGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisKKyAgICBpZiAobGVuZ3RoID4gbWF4TGVuZ3RoKSB7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgcmV0dXJuIGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7Cit9CisKK0pT
QmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChWTSYgdm0sIHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBKU0Jp
Z0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGJpZ0ludCk7CiAgICAgYmlnSW50LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0
dXJuIGJpZ0ludDsKIH0KQEAgLTEwMyw4ICsxMTcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20oVk0mIHZtLCBpbnQzMl90IHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAg
IHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3Jl
YXRlV2l0aExlbmd0aCh2bSwgMSk7Ci0gICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0
ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAg
ICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oLTEgKiBzdGF0aWNfY2Fz
dDxpbnQ2NF90Pih2YWx1ZSkpKTsKICAgICAgICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAt
MTE5LDcgKzEzMiw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIHVp
bnQzMl90IHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJv
KHZtKTsKICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwg
MSk7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0s
IDEpOwogICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7
CiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KQEAgLTEzMCw4ICsxNDMsNyBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQogICAgICAgICByZXR1cm4g
Y3JlYXRlWmVybyh2bSk7CiAgICAgCiAgICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCkgewotICAg
ICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7Ci0gICAgICAg
IAorICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2
bSwgMSk7CiAgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAgIGJpZ0ludC0+c2V0
RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKHZhbHVl
ICsgMSkpICsgMSkpOwogICAgICAgICAgICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTQx
LDggKzE1Myw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0
X3QgdmFsdWUpCiAgICAgICAgIHJldHVybiBiaWdJbnQ7CiAgICAgfQogICAgIAotICAgIEpTQmln
SW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAyKTsKLSAgICAKKyAgICBKU0JpZ0lu
dCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMik7CiAgICAgdWludDY0
X3QgdGVtcFZhbHVlOwogICAgIGJvb2wgc2lnbiA9IGZhbHNlOwogICAgIGlmICh2YWx1ZSA8IDAp
IHsKQEAgLTE2Niw3ICsxNzcsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0m
IHZtLCBib29sIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVa
ZXJvKHZtKTsKICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2
bSwgMSk7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQo
dm0sIDEpOworICAgIEFTU0VSVChiaWdJbnQpOwogICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3Rh
dGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KQEAgLTIzNCw2
ICsyNDYsNyBAQCB2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgZmFjdG9y
LCBEaWdpdCBzdW1tYW5kKQogSlNCaWdJbnQqIEpTQmlnSW50OjptdWx0aXBseShFeGVjU3RhdGUq
IGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlm
ICh4LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHg7CkBAIC0yNDEsNyArMjU0LDggQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjptdWx0aXBseShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKICAgICAgICAgcmV0dXJuIHk7CiAKICAgICB1bnNpZ25lZCByZXN1bHRMZW5n
dGggPSB4LT5sZW5ndGgoKSArIHktPmxlbmd0aCgpOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVu
Z3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICByZXN1
bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykKQEAgLTI3Nyw4ICsyOTEsMTAg
QEAgSlNCaWdJbnQqIEpTQmlnSW50OjpkaXZpZGUoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHkpCiAKICAgICAgICAgRGlnaXQgcmVtYWluZGVyOwogICAgICAgICBhYnNv
bHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sIHgsIGRpdmlzb3IsICZxdW90aWVudCwgcmVtYWlu
ZGVyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcih2
bSwgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhYnNv
bHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksICZxdW90aWVudCwgbnVsbHB0cik7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIH0KIAog
ICAgIHF1b3RpZW50LT5zZXRTaWduKHJlc3VsdFNpZ24pOwogICAgIHJldHVybiBxdW90aWVudC0+
cmlnaHRUcmltKHZtKTsKQEAgLTI4OCw3ICszMDQsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNv
cHkoVk0mIHZtLCBKU0JpZ0ludCogeCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKIAot
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+
bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOwogICAgIHN0ZDo6Y29weSh4LT5kYXRhU3Rv
cmFnZSgpLCB4LT5kYXRhU3RvcmFnZSgpICsgeC0+bGVuZ3RoKCksIHJlc3VsdC0+ZGF0YVN0b3Jh
Z2UoKSk7CiAgICAgcmVzdWx0LT5zZXRTaWduKHgtPnNpZ24oKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTMwMCw2ICszMTYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnVuYXJ5TWludXMoVk0m
IHZtLCBKU0JpZ0ludCogeCkKICAgICAgICAgcmV0dXJuIHg7CiAKICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gY29weSh2bSwgeCk7CisgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgcmVzdWx0LT5zZXRT
aWduKCF4LT5zaWduKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMzEsMjMgKzM0OCwy
NiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJlbWFpbmRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgaWYgKCFyZW1haW5kZXJEaWdpdCkKICAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKIAotICAgICAgICByZW1haW5kZXIgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICAgICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgICAgIHJlbWFpbmRlci0+c2V0RGlnaXQoMCwgcmVtYWlu
ZGVyRGlnaXQpOwotICAgIH0gZWxzZQotICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZp
c29yKHZtLCB4LCB5LCBudWxscHRyLCAmcmVtYWluZGVyKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksIG51bGxwdHIsICZyZW1h
aW5kZXIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAg
ICB9CiAKICAgICByZW1haW5kZXItPnNldFNpZ24oeC0+c2lnbigpKTsKICAgICByZXR1cm4gcmVt
YWluZGVyLT5yaWdodFRyaW0odm0pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChWTSYg
dm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWRkKEV4
ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKIAogICAgIC8vIHggKyB5
ID09IHggKyB5CiAgICAgLy8gLXggKyAteSA9PSAtKHggKyB5KQogICAgIGlmICh4U2lnbiA9PSB5
LT5zaWduKCkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeCwgeSwgeFNpZ24pOwor
ICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeCwgeSwgeFNpZ24pOwogCiAgICAgLy8g
eCArIC15ID09IHggLSB5ID09IC0oeSAtIHgpCiAgICAgLy8gLXggKyB5ID09IHkgLSB4ID09IC0o
eCAtIHkpCkBAIC0zNTgsMTMgKzM3OCwxNCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChWTSYg
dm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICByZXR1cm4gYWJzb2x1dGVTdWIodm0s
IHksIHgsICF4U2lnbik7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3ViKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoRXhlY1N0YXRl
KiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBib29sIHhTaWduID0geC0+c2lnbigpOwogICAgIGlmICh4U2lnbiAhPSB5LT5z
aWduKCkpIHsKICAgICAgICAgLy8geCAtICgteSkgPT0geCArIHkKICAgICAgICAgLy8gKC14KSAt
IHkgPT0gLSh4ICsgeSkKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKHZtLCB4LCB5LCB4U2ln
bik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZChleGVjLCB4LCB5LCB4U2lnbik7CiAgICAg
fQogICAgIC8vIHggLSB5ID09IC0oeSAtIHgpCiAgICAgLy8gKC14KSAtICgteSkgPT0geSAtIHgg
PT0gLSh4IC0geSkKQEAgLTM3NSw4ICszOTYsMTEgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIo
Vk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlU3Vi
KHZtLCB5LCB4LCAheFNpZ24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQo
Vk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VBbmQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQogICAgICAgICBy
ZXR1cm4gYWJzb2x1dGVBbmQodm0sIHgsIHkpOwogICAgIApAQCAtMzg0LDExICs0MDgsMTIgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQogICAgICAgICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCks
IHktPmxlbmd0aCgpKSArIDE7CiAgICAgICAgIC8vICgteCkgJiAoLXkpID09IH4oeC0xKSAmIH4o
eS0xKSA9PSB+KCh4LTEpIHwgKHktMSkpCiAgICAgICAgIC8vID09IC0oKCh4LTEpIHwgKHktMSkp
ICsgMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB4LCBy
ZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwg
eSwgeS0+bGVuZ3RoKCkpOwotICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQs
IHkxKTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHgs
IHJlc3VsdExlbmd0aCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0
aW9uOjpTaWduZWQpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVj
LCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIHJlc3VsdCA9IGFic29sdXRlT3Iodm0sIHJlc3Vs
dCwgeTEpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWdu
T3B0aW9uOjpTaWduZWQpOwogICAgIH0KIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2ln
bigpKTsKQEAgLTM5NywxMSArNDIyLDEzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgs
IHkpOwogICAgIAogICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQot
ICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgYWJzb2x1dGVTdWJPbmUodm0sIHksIHkt
Pmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCBhYnNvbHV0ZVN1
Yk9uZShleGVjLCB5LCB5LT5sZW5ndGgoKSkpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZU9yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKICAgICB1bnNpZ25lZCByZXN1bHRMZW5n
dGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpOwogCiAgICAgaWYgKCF4LT5z
aWduKCkgJiYgIXktPnNpZ24oKSkKQEAgLTQxMCwxMCArNDM3LDEwIEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIGlm
ICh4LT5zaWduKCkgJiYgeS0+c2lnbigpKSB7CiAgICAgICAgIC8vICgteCkgfCAoLXkpID09IH4o
eC0xKSB8IH4oeS0xKSA9PSB+KCh4LTEpICYgKHktMSkpCiAgICAgICAgIC8vID09IC0oKCh4LTEp
ICYgKHktMSkpICsgMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25l
KHZtLCB4LCByZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1
Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJz
b2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgSlNCaWdJbnQqIHkx
ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOwogICAgICAgICByZXN1bHQg
PSBhYnNvbHV0ZUFuZCh2bSwgcmVzdWx0LCB5MSk7Ci0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFk
ZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgICAgICByZXR1cm4gYWJz
b2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KICAg
ICAKICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00MjMsMTMgKzQ1MCwx
NiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggfCAo
LXkpID09IHggfCB+KHktMSkgPT0gfigoeS0xKSAmfiB4KSA9PSAtKCgoeS0xKSAmfiB4KSArIDEp
Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB5LCByZXN1bHRMZW5n
dGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCByZXN1
bHRMZW5ndGgpOwogICAgIHJlc3VsdCA9IGFic29sdXRlQW5kTm90KHZtLCByZXN1bHQsIHgpOwot
ICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQp
OworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNp
Z25lZCk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCiAgICAgICAgIHJldHVybiBhYnNvbHV0
ZVhvcih2bSwgeCwgeSk7CiAgICAgCkBAIC00MzcsOCArNDY3LDggQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpiaXR3aXNlWG9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAg
ICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vICgteCkgXiAoLXkpID09IH4oeC0xKSBeIH4oeS0xKSA9PSAo
eC0xKSBeICh5LTEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2
bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJP
bmUodm0sIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29s
dXRlU3ViT25lKGV4ZWMsIHgsIHJlc3VsdExlbmd0aCk7CisgICAgICAgIEpTQmlnSW50KiB5MSA9
IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIGFi
c29sdXRlWG9yKHZtLCByZXN1bHQsIHkxKTsKICAgICB9CiAgICAgQVNTRVJUKHgtPnNpZ24oKSAh
PSB5LT5zaWduKCkpOwpAQCAtNDQ5LDkgKzQ3OSwxMSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHN0ZDo6
c3dhcCh4LCB5KTsKICAgICAKICAgICAvLyB4IF4gKC15KSA9PSB4IF4gfih5LTEpID09IH4oeCBe
ICh5LTEpKSA9PSAtKCh4IF4gKHktMSkpICsgMSkKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJz
b2x1dGVTdWJPbmUodm0sIHksIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHJlc3VsdExlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKICAgICByZXN1bHQgPSBhYnNvbHV0ZVhvcih2bSwg
cmVzdWx0LCB4KTsKLSAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9w
dGlvbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBT
aWduT3B0aW9uOjpTaWduZWQpOwogfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSwx
MCArNzgzLDEyIEBAIGlubGluZSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6
YWJzb2x1dGVDb21wYXJlKEpTQmlnSW50KiB4LCBKU0JpZ0luCiAgICAgcmV0dXJuIHgtPmRpZ2l0
KGkpID4geS0+ZGlnaXQoaSkgPyBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBh
cmlzb25SZXN1bHQ6Okxlc3NUaGFuOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRl
QWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pCitK
U0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKwogICAgIGlmICh4LT5sZW5ndGgoKSA8IHktPmxlbmd0aCgpKQotICAgICAgICByZXR1
cm4gYWJzb2x1dGVBZGQodm0sIHksIHgsIHJlc3VsdFNpZ24pOworICAgICAgICByZXR1cm4gYWJz
b2x1dGVBZGQoZXhlYywgeSwgeCwgcmVzdWx0U2lnbik7CiAKICAgICBpZiAoeC0+aXNaZXJvKCkp
IHsKICAgICAgICAgQVNTRVJUKHktPmlzWmVybygpKTsKQEAgLTc2NCw4ICs3OTgsOSBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlmICh5LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdFNpZ24gPT0geC0+c2lnbigpID8geCA6IHVuYXJ5TWludXModm0sIHgpOwogCi0gICAg
SlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5n
dGgoKSArIDEpOwotICAgIEFTU0VSVChyZXN1bHQpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCB4LT5sZW5ndGgoKSArIDEpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBEaWdpdCBjYXJyeSA9
IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCB5LT5sZW5ndGgoKTsgaSsr
KSB7CkBAIC04MDYsNyArODQxLDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1YihW
TSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWcKICAgICBpZiAo
Y29tcGFyaXNvblJlc3VsdCA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbCkKICAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJvKHZtKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVu
Z3RoKCkpOworCiAgICAgRGlnaXQgYm9ycm93ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAg
ICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBpKyspIHsKQEAgLTg1MSw3ICs4ODcsNyBAQCB2b2lk
IEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCog
eCwgRGlnaXQgZGl2aXNvciwgSgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgpOwog
ICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKSB7CiAgICAgICAgIGlmICgqcXVvdGllbnQgPT0g
bnVsbHB0cikKLSAgICAgICAgICAgICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVu
Z3RoKHZtLCBsZW5ndGgpOworICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9
IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXRE
aXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKQEAgLTg2OSw3
ICs5MDUsNyBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0m
IHZtLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSgogLy8gQm90aCB7cXVvdGllbnR9IGFu
ZCB7cmVtYWluZGVyfSBhcmUgb3B0aW9uYWwsIGZvciBjYWxsZXJzIHRoYXQgYXJlIG9ubHkKIC8v
IGludGVyZXN0ZWQgaW4gb25lIG9mIHRoZW0uCiAvLyBTZWUgS251dGgsIFZvbHVtZSAyLCBzZWN0
aW9uIDQuMy4xLCBBbGdvcml0aG0gRC4KLXZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aEJp
Z0ludERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29y
LCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcikKK3ZvaWQgSlNCaWdJ
bnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0Jp
Z0ludCoqIHJlbWFpbmRlcikKIHsKICAgICBBU1NFUlQoZGl2aXNvci0+bGVuZ3RoKCkgPj0gMik7
CiAgICAgQVNTRVJUKGRpdmlkZW5kLT5sZW5ndGgoKSA+PSBkaXZpc29yLT5sZW5ndGgoKSk7CkBA
IC04ODQsMTEgKzkyMCwxMyBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnRE
aXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludAogICAgIC8vIFRoZSBx
dW90aWVudCB0byBiZSBjb21wdXRlZC4KICAgICBKU0JpZ0ludCogcSA9IG51bGxwdHI7CiAgICAg
aWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCi0gICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoKHZt
LCBtICsgMSk7CisgICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKGV4ZWMtPnZt
KCksIG0gKyAxKTsKICAgICAKICAgICAvLyBJbiBlYWNoIGl0ZXJhdGlvbiwge3FoYXR2fSBob2xk
cyB7ZGl2aXNvcn0gKiB7Y3VycmVudCBxdW90aWVudCBkaWdpdH0uCiAgICAgLy8gInYiIGlzIHRo
ZSBib29rJ3MgbmFtZSBmb3Ige2Rpdmlzb3J9LCAicWhhdCIgdGhlIGN1cnJlbnQgcXVvdGllbnQg
ZGlnaXQuCi0gICAgSlNCaWdJbnQqIHFoYXR2ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbiArIDEp
OworICAgIEpTQmlnSW50KiBxaGF0diA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgbiArIDEp
OworICAgIGlmICghcWhhdHYpCisgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBEMS4KICAg
ICAvLyBMZWZ0LXNoaWZ0IGlucHV0cyBzbyB0aGF0IHRoZSBkaXZpc29yJ3MgTVNCIGlzIHNldC4g
VGhpcyBpcyBuZWNlc3NhcnkKQEAgLTg5OCwxMiArOTM2LDE2IEBAIHZvaWQgSlNCaWdJbnQ6OmFi
c29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpT
QmlnSW50CiAgICAgRGlnaXQgbGFzdERpZ2l0ID0gZGl2aXNvci0+ZGlnaXQobiAtIDEpOwogICAg
IHVuc2lnbmVkIHNoaWZ0ID0gc2l6ZW9mKGxhc3REaWdpdCkgPT0gOCA/IGNsejY0KGxhc3REaWdp
dCkgOiBjbHozMihsYXN0RGlnaXQpOwogCi0gICAgaWYgKHNoaWZ0ID4gMCkKLSAgICAgICAgZGl2
aXNvciA9IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2aXNvciwgc2hpZnQsIExl
ZnRTaGlmdE1vZGU6OlNhbWVTaXplUmVzdWx0KTsKKyAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAg
ICAgIGRpdmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoZXhlYywgZGl2aXNvciwg
c2hpZnQsIExlZnRTaGlmdE1vZGU6OlNhbWVTaXplUmVzdWx0KTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZGl2aXNvcik7CisgICAgfQogCiAgICAgLy8gSG9sZHMgdGhlIChjb250aW51b3VzbHkg
dXBkYXRlZCkgcmVtYWluaW5nIHBhcnQgb2YgdGhlIGRpdmlkZW5kLCB3aGljaAogICAgIC8vIGV2
ZW50dWFsbHkgYmVjb21lcyB0aGUgcmVtYWluZGVyLgotICAgIEpTQmlnSW50KiB1ID0gYWJzb2x1
dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpZGVuZCwgc2hpZnQsIExlZnRTaGlmdE1vZGU6
OkFsd2F5c0FkZE9uZURpZ2l0KTsKKyAgICBKU0JpZ0ludCogdSA9IGFic29sdXRlTGVmdFNoaWZ0
QWx3YXlzQ29weShleGVjLCBkaXZpZGVuZCwgc2hpZnQsIExlZnRTaGlmdE1vZGU6OkFsd2F5c0Fk
ZE9uZURpZ2l0KTsKKyAgICBpZiAoIXUpCisgICAgICAgIHJldHVybjsKIAogICAgIC8vIEQyLgog
ICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZGl2aWRlbmQncyBkaWdpdCAobGlrZSB0aGUgImdyYWQg
c2Nob29sIiBhbGdvcml0aG0pLgpAQCAtMTAzMSwxNCArMTA3MywxNiBAQCB2b2lkIEpTQmlnSW50
OjppbnBsYWNlUmlnaHRTaGlmdCh1bnNpZ25lZCBzaGlmdCkKIH0KIAogLy8gQWx3YXlzIGNvcGll
cyB0aGUgaW5wdXQsIGV2ZW4gd2hlbiB7c2hpZnR9ID09IDAuCi1KU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYgdm0sIEpTQmlnSW50KiB4LCB1bnNpZ25l
ZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2RlKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0
ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgdW5zaWdu
ZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoc2hpZnQgPCBkaWdp
dEJpdHMpOwogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCiAgICAgdW5zaWduZWQgbiA9IHgt
Pmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IG1vZGUgPT0gTGVmdFNoaWZ0
TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQgPyBuICsgMSA6IG47Ci0gICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXNoaWZ0KSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyBpKyspCkBAIC0xMDk1LDggKzExMzks
NyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUJpdHdpc2VPcChWTSYgdm0s
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgRQogCiAgICAgQVNTRVJUKG51bVBhaXJzID09IHN0
ZDo6bWluKHhMZW5ndGgsIHlMZW5ndGgpKTsKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBl
eHRyYURpZ2l0cyA9PSBFeHRyYURpZ2l0c0hhbmRsaW5nOjpDb3B5ID8geExlbmd0aCA6IG51bVBh
aXJzOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRM
ZW5ndGgpOwotCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNr
ZWQodm0sIHJlc3VsdExlbmd0aCk7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkg
PCBudW1QYWlyczsgaSsrKQogICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIG9wKHgtPmRpZ2l0
KGkpLCB5LT5kaWdpdChpKSkpOwpAQCAtMTE0NCw3ICsxMTg3LDcgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjphYnNvbHV0ZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICBy
ZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0sIHgsIHksIEV4dHJhRGlnaXRzSGFuZGxpbmc6OkNv
cHksIFN5bW1ldHJpY09wOjpTeW1tZXRyaWMsIGRpZ2l0T3BlcmF0aW9uKTsKIH0KICAgICAKLUpT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2ln
bk9wdGlvbiBzaWduT3B0aW9uKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9uZShF
eGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCiB7CiAg
ICAgdW5zaWduZWQgaW5wdXRMZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICAvLyBUaGUgYWRkaXRp
b24gd2lsbCBvdmVyZmxvdyBpbnRvIGEgbmV3IGRpZ2l0IGlmIGFsbCBleGlzdGluZyBkaWdpdHMg
YXJlCkBAIC0xMTU4LDcgKzEyMDEsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRk
T25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKICAgICB9CiAK
ICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBpbnB1dExlbmd0aCArIHdpbGxPdmVyZmxvdzsK
LSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3Ro
KTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1
bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIERpZ2l0IGNhcnJ5ID0gMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5wdXRM
ZW5ndGg7IGkrKykgewpAQCAtMTE3MiwxNiArMTIxNywxNiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlv
bikKICAgICAgICAgQVNTRVJUKCFjYXJyeSk7CiAKICAgICByZXN1bHQtPnNldFNpZ24oc2lnbk9w
dGlvbiA9PSBTaWduT3B0aW9uOjpTaWduZWQpOwotICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJp
bSh2bSk7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMtPnZtKCkpOwogfQogCi0v
LyBMaWtlIHRoZSBhYm92ZSwgYnV0IHlvdSBjYW4gc3BlY2lmeSB0aGF0IHRoZSBhbGxvY2F0ZWQg
cmVzdWx0IHNob3VsZCBoYXZlCi0vLyBsZW5ndGgge3Jlc3VsdExlbmd0aH0sIHdoaWNoIG11c3Qg
YmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMge3gtPmxlbmd0aCgpfS4KLUpTQmlnSW50KiBKU0JpZ0lu
dDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVu
Z3RoKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShFeGVjU3RhdGUqIGV4ZWMs
IEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCF4LT5p
c1plcm8oKSk7CiAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+PSB4LT5sZW5ndGgoKSk7Ci0gICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7Cisg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVu
Z3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB1
bnNpZ25lZCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICBEaWdpdCBib3Jyb3cgPSAxOwpAQCAt
MTE5NCw3ICsxMjM5LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShWTSYg
dm0sIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbGVuZ3RoOyBpIDwgcmVzdWx0TGVuZ3RoOyBpKyspCiAgICAgICAgIHJlc3VsdC0+c2V0
RGlnaXQoaSwgYm9ycm93KTsKIAotICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7Cisg
ICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMtPnZtKCkpOwogfQogCiAvLyBMb29rdXAg
dGFibGUgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVkIHBlciBjaGFyYWN0
ZXIgb2YgYQpAQCAtMTM1NCw4ICsxMzk5LDYgQEAgU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dl
bmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgIERpZ2l0IGNodW5rOwogICAgICAgICAgICAgYWJzb2x1dGVE
aXZXaXRoRGlnaXREaXZpc29yKHZtLCAqZGl2aWRlbmQsIGNodW5rRGl2aXNvciwgJnJlc3QsIGNo
dW5rKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN0KTsKLQogICAgICAgICAgICAgZGl2aWRlbmQg
PSAmcmVzdDsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaHVua0NoYXJz
OyBpKyspIHsKICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRz
W2NodW5rICUgcmFkaXhdKTsKQEAgLTE0MTQsOCArMTQ1Nyw3IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6cmlnaHRUcmltKFZNJiB2bSkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAKICAgICB1bnNpZ25l
ZCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAxOwotICAgIEpTQmlnSW50KiB0cmltbWVkQmln
SW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbmV3TGVuZ3RoKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCh0cmltbWVkQmlnSW50KTsKKyAgICBKU0JpZ0ludCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIG5ld0xlbmd0aCk7CiAgICAgc3RkOjpjb3B5KGRhdGFTdG9y
YWdlKCksIGRhdGFTdG9yYWdlKCkgKyBuZXdMZW5ndGgsIHRyaW1tZWRCaWdJbnQtPmRhdGFTdG9y
YWdlKCkpOyAKIAogICAgIHRyaW1tZWRCaWdJbnQtPnNldFNpZ24odGhpcy0+c2lnbigpKTsKQEAg
LTE0MzksNyArMTQ4MSw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0
YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lCiAgICAgICAgICAgICAv
LyBEaXZpZGUgYnkga0RpZ2l0c0JpdHMsIHJvdW5kaW5nIHVwLgogICAgICAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gKGJpdHNNaW4gKyBkaWdpdEJpdHMgLSAxKSAvIGRpZ2l0Qml0czsKICAgICAg
ICAgICAgIGlmIChsZW5ndGggPD0gbWF4TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCBsZW5ndGgpOworICAg
ICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaAppbmRleCBhNjJlMTM4YWQ2NjU1M2M5Mzk1ODZiZTY5NWExZGUxNWFlMzhlNDUwLi5h
YjhmZjVhZjVkNjdmNGI2NzA0MWIyNjVjYTI1OTdmODBiYzU0NDY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTUxLDcgKzUxLDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKFZN
Jik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoKFZNJiwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHRyeUNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0
YXRlKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVdpdGhM
ZW5ndGhVbmNoZWNrZWQoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgc3RhdGljIEpTQmln
SW50KiBjcmVhdGVGcm9tKFZNJiwgaW50MzJfdCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGVGcm9tKFZNJiwgdWludDMyX3QgdmFsdWUpOwpAQCAtMTA4LDE1ICsxMDksMTUgQEAg
cHVibGljOgogICAgIAogICAgIENvbXBhcmlzb25SZXN1bHQgc3RhdGljIGNvbXBhcmVUb0RvdWJs
ZShKU0JpZ0ludCogeCwgZG91YmxlIHkpOwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBhZGQoVk0m
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogc3ViKFZN
JiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFkZChF
eGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0lu
dCogc3ViKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGlj
IEpTQmlnSW50KiBkaXZpZGUoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsK
ICAgICBzdGF0aWMgSlNCaWdJbnQqIHJlbWFpbmRlcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogdW5hcnlNaW51cyhWTSYsIEpTQmln
SW50KiB4KTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZUFuZChWTSYsIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlT3IoVk0mLCBK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZVhv
cihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBi
aXR3aXNlQW5kKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3Rh
dGljIEpTQmlnSW50KiBiaXR3aXNlT3IoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VYb3IoRXhlY1N0YXRlKiwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KTsKIAogcHJpdmF0ZToKIApAQCAtMTM5LDE0ICsxNDAsMTQgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0m
LCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQm
IHJlbWFpbmRlcik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0lu
dCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIHVuc2lnbmVkLCBKU0JpZ0lu
dCogcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBtdWx0aXBseUFjY3VtdWxhdGUoSlNCaWdJbnQq
IG11bHRpcGxpY2FuZCwgRGlnaXQgbXVsdGlwbGllciwgSlNCaWdJbnQqIGFjY3VtdWxhdG9yLCB1
bnNpZ25lZCBhY2N1bXVsYXRvckluZGV4KTsKLSAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldp
dGhCaWdJbnREaXZpc29yKFZNJiwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNv
ciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpOworICAgIHN0YXRp
YyB2b2lkIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoRXhlY1N0YXRlKiwgSlNCaWdJbnQq
IGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJ
bnQqKiByZW1haW5kZXIpOwogICAgIAogICAgIGVudW0gY2xhc3MgTGVmdFNoaWZ0TW9kZSB7CiAg
ICAgICAgIFNhbWVTaXplUmVzdWx0LAogICAgICAgICBBbHdheXNBZGRPbmVEaWdpdAogICAgIH07
CiAgICAgCi0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHko
Vk0mLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUpOworICAgIHN0
YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KEV4ZWNTdGF0ZSosIEpT
QmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSk7CiAgICAgc3RhdGljIGJv
b2wgcHJvZHVjdEdyZWF0ZXJUaGFuKERpZ2l0IGZhY3RvcjEsIERpZ2l0IGZhY3RvcjIsIERpZ2l0
IGhpZ2gsIERpZ2l0IGxvdyk7CiAKICAgICBEaWdpdCBhYnNvbHV0ZUlucGxhY2VBZGQoSlNCaWdJ
bnQqIHN1bW1hbmQsIHVuc2lnbmVkIHN0YXJ0SW5kZXgpOwpAQCAtMTc2LDggKzE3Nyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIFVuc2lnbmVkCiAgICAgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCog
YWJzb2x1dGVBZGRPbmUoVk0mLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbik7Ci0gICAgc3RhdGlj
IEpTQmlnSW50KiBhYnNvbHV0ZVN1Yk9uZShWTSYsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1
bHRMZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGRPbmUoRXhlY1N0YXRl
KiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24pOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1
dGVTdWJPbmUoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7
CiAKICAgICAvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCiAgICAgc3RhdGljIERpZ2l0IGRp
Z2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7CkBAIC0yMDMsNyArMjA0LDcg
QEAgcHJpdmF0ZToKICAgICBKU0JpZ0ludCogcmlnaHRUcmltKFZNJik7CiAKICAgICB2b2lkIGlu
cGxhY2VNdWx0aXBseUFkZChEaWdpdCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKLSAgICBzdGF0
aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBi
b29sIHJlc3VsdFNpZ24pOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGQoRXhlY1N0
YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOwogICAgIHN0
YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWIoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHks
IGJvb2wgcmVzdWx0U2lnbik7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZSh1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmNwcAppbmRleCBhMDg4YWQxY2JjMjA3OGQ2MjA1YWZmMGFiYWQzZGE3M2E5NmY1YjI2
Li44OGEyYjdlMDhjNWY3NjJiNTg2MjM0MWI2MGQxYTVmMTNjZTc3ZmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtNjksOCArNjksMTEgQEAg
TkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CisgICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmFkZChjYWxsRnJhbWUsIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA2MWQ1MzNjZjQ1ZjZiZDAzMmRiOThlYjZkNGUy
NDA0MmFiNGE1MmIzLi5iMzY5NzlhMjFmMzlmZGQ2NmI1YjBkZDgxY2QyODYxNWU0NzJhNmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0zNDgsOCAr
MzQ4LDExIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQot
ICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZXhlYywgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBzdWJ0cmFjdGlvbi4iX3MpOwogICAgIH0KQEAgLTM2OCw4ICszNzEsMTEgQEAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzTXVsKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjptdWx0aXBseShzdGF0ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CisgICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6Om11bHRpcGx5KHN0YXRlLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAKICAgICAgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIG11bHRpcGxp
Y2F0aW9uLiJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3ZGM2NjY0YjQxNmMxNjQ2ODJjNTY1
MmMyOWY0MjZlOTdlZWU0NmUuLmU3MDI4OTE1NTI2ZWRiNTEzNTk1YzhkNGRjZjFhNDFiNTU5ZGY4
NjQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMDEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtCaWdJbnRdIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoIHNo
b3VsZCB0aHJvdyB3aGVuIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gSlNCaWdJbnQ6Om1heExlbmd0
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJl
c3MvYmlnLWludC1vdXQtb2YtbWVtb3J5LXRlc3RzLmpzOiBBZGRlZC4KKwogMjAxOC0xMS0wOCAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVSsxODBF
IGlzIG5vIGxvbmdlciBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMzOTM4N2JhMTA4NzM1
OTdkYTk5MDE1MTBmMDcyYzE1N2VhOWQ5NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpAQCAtMCwwICsxLDYzIEBACisvL0Ag
cnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD1mYWxzZSIpCisKK2Z1
bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGxzaGlmdCh5KSB7CisgICAgbGV0IG91
dCA9IDFuOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeTsgaSsrKSB7CisgICAgICAgIG91dCAq
PSAybjsKKyAgICB9CisKKyAgICByZXR1cm4gb3V0OworfQorCitsZXQgYSA9IGxzaGlmdCgxNjM4
NCAqIDYzKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKyAgICBhICo9IDE4NDQ2
NzQ0MDczNzA5NTUxNjE1bjsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgKyAxbjsKKyAgICBh
c3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVk
IHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdl
ID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6
ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgLSAoLTFuKTsKKyAgICBhc3NlcnQo
ZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhv
dXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJP
dXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBl
KTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgKiAoLTFuKTsKKyAgICBhc3NlcnQoZmFsc2Us
ICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhj
ZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2Yg
bWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30K
KwordHJ5IHsKKyAgICBsZXQgYiA9IGEgLyBhOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0
aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsK
K30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAi
RXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgewor
ICAgIGxldCBiID0gLWEgJiAtMW47CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91
dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRj
aChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3Rl
ZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAgbGV0
IGIgPSBhIF4gLTFuOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9y
eUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgewor
ICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZN
ZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354602</attachid>
            <date>2018-11-12 15:46:53 -0800</date>
            <delta_ts>2018-11-12 15:54:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181112204650.patch</filename>
            <type>text/plain</type>
            <size>39951</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NWMzYmVmZGY3Yzc1MWJhNjgwZWFhOTMyOWQ2MWEwM2U3NmJiNGM2Li4zYTZkNjRmOWIyYTRhZDdi
OTc5N2VhNzg3NTg0OWRlY2QzYTYwYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNy
ZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRp
dmlkZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhv
cik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVE
aXZXaXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3
aXNlT3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTExICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYSBm
aXhtZTogcmVuYW1lIHd0Zk9iamNNc2dTZW5kIHRvIHd0Zk9iakNNc2dTZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkZjNmZDFlNTZlZTk5ZTA2
MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41NDE3ZmIwZGZjZDI3NDAzODJmMDRlYzYyYjVmYjFm
MGJkYjBmZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4
ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2
bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxK
U0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0Jp
Z0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBsZWZ0
T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAgICAgSlNC
aWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0lu
dCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKIAotICAgIHJldHVybiBK
U0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAg
IHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMTYsNyArMTMxNiw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0g
anNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganND
YXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZCgqdm0s
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGV4
ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKgog
ICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAg
SlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0g
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBsZWZ0T3BlcmFuZCwg
cmlnaHRPcGVyYW5kKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlOGZl
MDA0NTA0MWViMzkyZGFkYzljZTQzZjQ4MTUyMTJlMzkxZDIuLjUxMWM0MmYzZDRmMTFjMzlhOGI4
NWNkMmQzNjIwNzFiMjE5ZDVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMjc2NiwxMCArMjc2Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAot
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQorICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOwogCiAgICAgZG91YmxlIG51bWJl
ciA9IHByaW1WYWx1ZS50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDUxNjNjMzNlZTkwZmM0OGI3NTg2ZTI3ODI5
MzEwZDQ0MjJmNjdjMDguLmVlNWFkYTI3OTUwY2U5NGMxMWI4ODUyMjVhM2JmMDI4ZTc1NmFhY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNTYzLDcgKzU2Myw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAK
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZXhlYywgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJF
VFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgICAgICB1cGRhdGVBcml0
aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIH0pOwpAQCAtNjk5LDcgKzcwMCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9CkBAIC03MjAsNyArNzIxLDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcih2bSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTc0MSw3ICs3NDIsNyBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwog
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3Iodm0sIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNl
WG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAg
ICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRhYjVhNTIzNTNmZDFhZTkyMGQxMWJiMzRi
YzA2ZWI1NGZmODhlZTcuLjFkYWEyNDZhMTY3MmY4MjNkMmZlZmViMGFjNDhmZWI5NzFmZjg1ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKIAogSlNCaWdJbnQqIEpTQmlnSW50Ojpj
cmVhdGVaZXJvKFZNJiB2bSkKIHsKLSAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdp
dGhMZW5ndGgodm0sIDApOworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZCh2bSwgMCk7CiAgICAgcmV0dXJuIHplcm9CaWdJbnQ7CiB9CiAKQEAgLTkx
LDkgKzkxLDI1IEBAIGlubGluZSBzaXplX3QgSlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKHVuc2ln
bmVkIGxlbmd0aCkKICAgICByZXR1cm4gc2l6ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9m
KERpZ2l0KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2
bSwgdW5zaWduZWQgbGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgaWYgKGxlbmd0aCA+IG1heExlbmd0aCkgeworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBz
Y29wZS5yZWxlYXNlKCk7CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2
bSwgbGVuZ3RoKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCwgYWxsb2NhdGlv
blNpemUobGVuZ3RoKSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIGxl
bmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmlnSW50KTsKICAgICBiaWdJbnQtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTAzLDggKzExOSw3IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDMyX3QgdmFsdWUpCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpT
QmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAKKyAgICBKU0Jp
Z0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgaWYg
KHZhbHVlIDwgMCkgewogICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERp
Z2l0PigtMSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwogICAgICAgICBiaWdJbnQt
PnNldFNpZ24odHJ1ZSk7CkBAIC0xMTksNyArMTM0LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojpj
cmVhdGVGcm9tKFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBj
cmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNf
Y2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTMwLDggKzE0
NSw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFs
dWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKICAgICBpZiAoc2l6ZW9m
KERpZ2l0KSA9PSA4KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVu
Z3RoKHZtLCAxKTsKLSAgICAgICAgCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVX
aXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkgewogICAg
ICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAgICAgICAgICAgICBiaWdJbnQtPnNl
dFNpZ24odHJ1ZSk7CkBAIC0xNDEsOCArMTU1LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVh
dGVGcm9tKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGJpZ0ludDsKICAg
ICB9CiAgICAgCi0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDIp
OwotICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2Vk
KHZtLCAyKTsKICAgICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAgICAgYm9vbCBzaWduID0gZmFsc2U7
CiAgICAgaWYgKHZhbHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3OSw3IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGJvb2wgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRl
V2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0
aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMjM0LDYg
KzI0Nyw3IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBmYWN0b3Is
IERpZ2l0IHN1bW1hbmQpCiBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgaWYg
KHgtPmlzWmVybygpKQogICAgICAgICByZXR1cm4geDsKQEAgLTI0MSw3ICsyNTUsOCBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KQogICAgICAgICByZXR1cm4geTsKIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0
aCA9IHgtPmxlbmd0aCgpICsgeS0+bGVuZ3RoKCk7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5n
dGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJlc3Vs
dC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsrKQpAQCAtMjc3LDggKzI5MiwxMCBA
QCBKU0JpZ0ludCogSlNCaWdJbnQ6OmRpdmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKIAogICAgICAgICBEaWdpdCByZW1haW5kZXI7CiAgICAgICAgIGFic29s
dXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgeCwgZGl2aXNvciwgJnF1b3RpZW50LCByZW1haW5k
ZXIpOwotICAgIH0gZWxzZQotICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKHZt
LCB4LCB5LCAmcXVvdGllbnQsIG51bGxwdHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29s
dXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoZXhlYywgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgfQogCiAg
ICAgcXVvdGllbnQtPnNldFNpZ24ocmVzdWx0U2lnbik7CiAgICAgcmV0dXJuIHF1b3RpZW50LT5y
aWdodFRyaW0odm0pOwpAQCAtMjg4LDcgKzMwNSw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y29w
eShWTSYgdm0sIEpTQmlnSW50KiB4KQogewogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCi0g
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5s
ZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVu
Z3RoVW5jaGVja2VkKHZtLCB4LT5sZW5ndGgoKSk7CiAgICAgc3RkOjpjb3B5KHgtPmRhdGFTdG9y
YWdlKCksIHgtPmRhdGFTdG9yYWdlKCkgKyB4LT5sZW5ndGgoKSwgcmVzdWx0LT5kYXRhU3RvcmFn
ZSgpKTsKICAgICByZXN1bHQtPnNldFNpZ24oeC0+c2lnbigpKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMzMxLDIzICszNDgsMjYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGlmICghcmVt
YWluZGVyRGlnaXQpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAKLSAgICAg
ICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgICAgIHJlbWFpbmRl
ciA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICByZW1haW5kZXIt
PnNldERpZ2l0KDAsIHJlbWFpbmRlckRpZ2l0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1
dGVEaXZXaXRoQmlnSW50RGl2aXNvcih2bSwgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihleGVjLCB4
LCB5LCBudWxscHRyLCAmcmVtYWluZGVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisgICAgfQogCiAgICAgcmVtYWluZGVyLT5zZXRTaWduKHgtPnNpZ24o
KSk7CiAgICAgcmV0dXJuIHJlbWFpbmRlci0+cmlnaHRUcmltKHZtKTsKIH0KIAotSlNCaWdJbnQq
IEpTQmlnSW50OjphZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24gPSB4LT5zaWdu
KCk7CiAKICAgICAvLyB4ICsgeSA9PSB4ICsgeQogICAgIC8vIC14ICsgLXkgPT0gLSh4ICsgeSkK
ICAgICBpZiAoeFNpZ24gPT0geS0+c2lnbigpKQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQo
dm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHgsIHks
IHhTaWduKTsKIAogICAgIC8vIHggKyAteSA9PSB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vIC14
ICsgeSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzU4LDEzICszNzgsMTQgQEAgSlNCaWdJbnQq
IEpTQmlnSW50OjphZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0
dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAheFNpZ24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJ
bnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6c3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKICAg
ICBpZiAoeFNpZ24gIT0geS0+c2lnbigpKSB7CiAgICAgICAgIC8vIHggLSAoLXkpID09IHggKyB5
CiAgICAgICAgIC8vICgteCkgLSB5ID09IC0oeCArIHkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0
ZUFkZCh2bSwgeCwgeSwgeFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywg
eCwgeSwgeFNpZ24pOwogICAgIH0KICAgICAvLyB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vICgt
eCkgLSAoLXkpID09IHkgLSB4ID09IC0oeCAtIHkpCkBAIC0zNzUsOCArMzk2LDExIEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6c3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAg
IHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAotSlNCaWdJbnQqIEpT
QmlnSW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNC
aWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXkt
PnNpZ24oKSkKICAgICAgICAgcmV0dXJuIGFic29sdXRlQW5kKHZtLCB4LCB5KTsKICAgICAKQEAg
LTM4NCwxMSArNDA4LDE1IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChWTSYgdm0s
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHN0
ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSkgKyAxOwogICAgICAgICAvLyAoLXgpICYg
KC15KSA9PSB+KHgtMSkgJiB+KHktMSkgPT0gfigoeC0xKSB8ICh5LTEpKQogICAgICAgICAvLyA9
PSAtKCgoeC0xKSB8ICh5LTEpKSArIDEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNv
bHV0ZVN1Yk9uZSh2bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0g
YWJzb2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKTsKLSAgICAgICAgcmVzdWx0ID0gYWJz
b2x1dGVPcih2bSwgcmVzdWx0LCB5MSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNv
bHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUo
dm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0g
YWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoeTEp
OworICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkxKTsKKyAgICAgICAg
cmVzdWx0ID0gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24o
KSk7CkBAIC0zOTcsMTEgKzQyNSwxNSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQo
Vk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5
KTsKICAgICAKICAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKLSAg
ICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5s
ZW5ndGgoKSkpOworICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHkt
Pmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoeTEpOworICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2
bSwgeCwgeTEpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5s
ZW5ndGgoKSwgeS0+bGVuZ3RoKCkpOwogCiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24o
KSkKQEAgLTQxMCwxMCArNDQyLDEyIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZN
JiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIGlmICh4LT5zaWduKCkgJiYgeS0+
c2lnbigpKSB7CiAgICAgICAgIC8vICgteCkgfCAoLXkpID09IH4oeC0xKSB8IH4oeS0xKSA9PSB+
KCh4LTEpICYgKHktMSkpCiAgICAgICAgIC8vID09IC0oKCh4LTEpICYgKHktMSkpICsgMSkKLSAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB4LCByZXN1bHRMZW5n
dGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVu
Z3RoKCkpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywg
eCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIEpTQmln
SW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAg
QVNTRVJUKHkxKTsKICAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVBbmQodm0sIHJlc3VsdCwgeTEp
OwotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6
U2lnbmVkKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2ln
bk9wdGlvbjo6U2lnbmVkKTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHgtPnNpZ24oKSAhPSB5
LT5zaWduKCkpOwpAQCAtNDIzLDEzICs0NTcsMTcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlT3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHN0ZDo6c3dh
cCh4LCB5KTsKICAgICAKICAgICAvLyB4IHwgKC15KSA9PSB4IHwgfih5LTEpID09IH4oKHktMSkg
Jn4geCkgPT0gLSgoKHktMSkgJn4geCkgKyAxKQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNv
bHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
YWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBBU1NFUlQocmVzdWx0
KTsKICAgICByZXN1bHQgPSBhYnNvbHV0ZUFuZE5vdCh2bSwgcmVzdWx0LCB4KTsKLSAgICByZXR1
cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAgICBy
ZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwog
fQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VYb3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKICAgICBpZiAo
IXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVYb3Iodm0s
IHgsIHkpOwogICAgIApAQCAtNDM3LDggKzQ3NSwxMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGludCBy
ZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpOwogICAgICAg
ICAKICAgICAgICAgLy8gKC14KSBeICgteSkgPT0gfih4LTEpIF4gfih5LTEpID09ICh4LTEpIF4g
KHktMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB4LCBy
ZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwg
eSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJP
bmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAg
ICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsK
KyAgICAgICAgQVNTRVJUKHkxKTsKICAgICAgICAgcmV0dXJuIGFic29sdXRlWG9yKHZtLCByZXN1
bHQsIHkxKTsKICAgICB9CiAgICAgQVNTRVJUKHgtPnNpZ24oKSAhPSB5LT5zaWduKCkpOwpAQCAt
NDQ5LDkgKzQ4OSwxMyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VYb3IoVk0mIHZtLCBK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAK
ICAgICAvLyB4IF4gKC15KSA9PSB4IF4gfih5LTEpID09IH4oeCBeICh5LTEpKSA9PSAtKCh4IF4g
KHktMSkpICsgMSkKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHks
IHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4
ZWMsIHksIHJlc3VsdExlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisKICAgICByZXN1bHQgPSBhYnNvbHV0ZVhvcih2bSwgcmVzdWx0LCB4KTsKLSAgICBy
ZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAg
ICByZXN1bHQgPSBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25l
ZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC03NTEsMTAgKzc5NSwxMiBA
QCBpbmxpbmUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJbnQ6OmFic29sdXRlQ29t
cGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbgogICAgIHJldHVybiB4LT5kaWdpdChpKSA+IHktPmRp
Z2l0KGkpID8gQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21wYXJpc29uUmVzdWx0
OjpMZXNzVGhhbjsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZChWTSYgdm0s
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKQorSlNCaWdJbnQqIEpT
QmlnSW50OjphYnNvbHV0ZUFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSwgYm9vbCByZXN1bHRTaWduKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKICAg
ICBpZiAoeC0+bGVuZ3RoKCkgPCB5LT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGFic29sdXRl
QWRkKHZtLCB5LCB4LCByZXN1bHRTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4
ZWMsIHksIHgsIHJlc3VsdFNpZ24pOwogCiAgICAgaWYgKHgtPmlzWmVybygpKSB7CiAgICAgICAg
IEFTU0VSVCh5LT5pc1plcm8oKSk7CkBAIC03NjQsOCArODEwLDkgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjphYnNvbHV0ZUFkZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCBy
ZXN1bHRTaWcKICAgICBpZiAoeS0+aXNaZXJvKCkpCiAgICAgICAgIHJldHVybiByZXN1bHRTaWdu
ID09IHgtPnNpZ24oKSA/IHggOiB1bmFyeU1pbnVzKHZtLCB4KTsKIAotICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkgKyAxKTsK
LSAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnRy
eUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgeC0+bGVuZ3RoKCkgKyAxKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgRGlnaXQgY2FycnkgPSAwOwogICAgIHVu
c2lnbmVkIGkgPSAwOwogICAgIGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODA2
LDcgKzg1Myw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWIoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnCiAgICAgaWYgKGNvbXBhcmlzb25S
ZXN1bHQgPT0gQ29tcGFyaXNvblJlc3VsdDo6RXF1YWwpCiAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6Y3JlYXRlWmVybyh2bSk7CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNy
ZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxlbmd0aCgpKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIHgtPmxlbmd0aCgpKTsKKwog
ICAgIERpZ2l0IGJvcnJvdyA9IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkg
PCB5LT5sZW5ndGgoKTsgaSsrKSB7CkBAIC04NTEsNyArODk5LDcgQEAgdm9pZCBKU0JpZ0ludDo6
YWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIERpZ2l0IGRp
dmlzb3IsIEoKICAgICB1bnNpZ25lZCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICBpZiAocXVv
dGllbnQgIT0gbnVsbHB0cikgewogICAgICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIpCi0g
ICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3Ro
VW5jaGVja2VkKHZtLCBsZW5ndGgpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAx
OyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KHJlbWFpbmRl
ciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CkBAIC04NjksMTAgKzkxNywxMiBA
QCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgRGlnaXQgZGl2aXNvciwgSgogLy8gQm90aCB7cXVvdGllbnR9IGFuZCB7cmVtYWlu
ZGVyfSBhcmUgb3B0aW9uYWwsIGZvciBjYWxsZXJzIHRoYXQgYXJlIG9ubHkKIC8vIGludGVyZXN0
ZWQgaW4gb25lIG9mIHRoZW0uCiAvLyBTZWUgS251dGgsIFZvbHVtZSAyLCBzZWN0aW9uIDQuMy4x
LCBBbGdvcml0aG0gRC4KLXZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlz
b3IoVk0mIHZtLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0lu
dCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcikKK3ZvaWQgSlNCaWdJbnQ6OmFic29s
dXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogZGl2aWRl
bmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJl
bWFpbmRlcikKIHsKICAgICBBU1NFUlQoZGl2aXNvci0+bGVuZ3RoKCkgPj0gMik7CiAgICAgQVNT
RVJUKGRpdmlkZW5kLT5sZW5ndGgoKSA+PSBkaXZpc29yLT5sZW5ndGgoKSk7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAKICAgICAvLyBUaGUgdW51c3VhbCB2YXJpYWJsZSBuYW1lcyBpbnNpZGUgdGhpcyBmdW5jdGlv
biBhcmUgY29uc2lzdGVudCB3aXRoCiAgICAgLy8gS251dGgncyBib29rLCBhcyB3ZWxsIGFzIHdp
dGggR28ncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGFsZ29yaXRobS4KQEAgLTg4NCwxMSArOTM0
LDEyIEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mIHZt
LCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50CiAgICAgLy8gVGhlIHF1b3RpZW50IHRvIGJl
IGNvbXB1dGVkLgogICAgIEpTQmlnSW50KiBxID0gbnVsbHB0cjsKICAgICBpZiAocXVvdGllbnQg
IT0gbnVsbHB0cikKLSAgICAgICAgcSA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG0gKyAxKTsKKyAg
ICAgICAgcSA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoZXhlYy0+dm0oKSwgbSArIDEpOwog
ICAgIAogICAgIC8vIEluIGVhY2ggaXRlcmF0aW9uLCB7cWhhdHZ9IGhvbGRzIHtkaXZpc29yfSAq
IHtjdXJyZW50IHF1b3RpZW50IGRpZ2l0fS4KICAgICAvLyAidiIgaXMgdGhlIGJvb2sncyBuYW1l
IGZvciB7ZGl2aXNvcn0sICJxaGF0IiB0aGUgY3VycmVudCBxdW90aWVudCBkaWdpdC4KLSAgICBK
U0JpZ0ludCogcWhhdHYgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBuICsgMSk7CisgICAgSlNCaWdJ
bnQqIHFoYXR2ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCBuICsgMSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAKICAgICAvLyBEMS4KICAgICAvLyBM
ZWZ0LXNoaWZ0IGlucHV0cyBzbyB0aGF0IHRoZSBkaXZpc29yJ3MgTVNCIGlzIHNldC4gVGhpcyBp
cyBuZWNlc3NhcnkKQEAgLTg5OCwxMiArOTQ5LDE1IEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRl
RGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50
CiAgICAgRGlnaXQgbGFzdERpZ2l0ID0gZGl2aXNvci0+ZGlnaXQobiAtIDEpOwogICAgIHVuc2ln
bmVkIHNoaWZ0ID0gc2l6ZW9mKGxhc3REaWdpdCkgPT0gOCA/IGNsejY0KGxhc3REaWdpdCkgOiBj
bHozMihsYXN0RGlnaXQpOwogCi0gICAgaWYgKHNoaWZ0ID4gMCkKLSAgICAgICAgZGl2aXNvciA9
IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2aXNvciwgc2hpZnQsIExlZnRTaGlm
dE1vZGU6OlNhbWVTaXplUmVzdWx0KTsKKyAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgIGRp
dmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoZXhlYywgZGl2aXNvciwgc2hpZnQs
IExlZnRTaGlmdE1vZGU6OlNhbWVTaXplUmVzdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CiAKICAgICAvLyBIb2xkcyB0aGUgKGNvbnRpbnVv
dXNseSB1cGRhdGVkKSByZW1haW5pbmcgcGFydCBvZiB0aGUgZGl2aWRlbmQsIHdoaWNoCiAgICAg
Ly8gZXZlbnR1YWxseSBiZWNvbWVzIHRoZSByZW1haW5kZXIuCi0gICAgSlNCaWdJbnQqIHUgPSBh
YnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkodm0sIGRpdmlkZW5kLCBzaGlmdCwgTGVmdFNoaWZ0
TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQpOworICAgIEpTQmlnSW50KiB1ID0gYWJzb2x1dGVMZWZ0
U2hpZnRBbHdheXNDb3B5KGV4ZWMsIGRpdmlkZW5kLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6QWx3
YXlzQWRkT25lRGlnaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAKICAgICAvLyBEMi4KICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGRpdmlkZW5kJ3MgZGlnaXQg
KGxpa2UgdGhlICJncmFkIHNjaG9vbCIgYWxnb3JpdGhtKS4KQEAgLTEwMzEsMTQgKzEwODUsMTYg
QEAgdm9pZCBKU0JpZ0ludDo6aW5wbGFjZVJpZ2h0U2hpZnQodW5zaWduZWQgc2hpZnQpCiB9CiAK
IC8vIEFsd2F5cyBjb3BpZXMgdGhlIGlucHV0LCBldmVuIHdoZW4ge3NoaWZ0fSA9PSAwLgotSlNC
aWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkKK0pTQmlnSW50KiBK
U0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUpCiB7CiAgICAgQVNT
RVJUKHNoaWZ0IDwgZGlnaXRCaXRzKTsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKIAogICAg
IHVuc2lnbmVkIG4gPSB4LT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBt
b2RlID09IExlZnRTaGlmdE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0ID8gbiArIDEgOiBuOwotICAg
IEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOwor
ICAgIEpTQmlnSW50KiByZXN1bHQgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExl
bmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFzaGlmdCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgaSsrKQpA
QCAtMTA5NSw4ICsxMTUxLDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVC
aXR3aXNlT3AoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIEUKIAogICAgIEFTU0VS
VChudW1QYWlycyA9PSBzdGQ6Om1pbih4TGVuZ3RoLCB5TGVuZ3RoKSk7CiAgICAgdW5zaWduZWQg
cmVzdWx0TGVuZ3RoID0gZXh0cmFEaWdpdHMgPT0gRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSA/
IHhMZW5ndGggOiBudW1QYWlyczsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExl
bmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKLQorICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVX
aXRoTGVuZ3RoVW5jaGVja2VkKHZtLCByZXN1bHRMZW5ndGgpOwogICAgIHVuc2lnbmVkIGkgPSAw
OwogICAgIGZvciAoOyBpIDwgbnVtUGFpcnM7IGkrKykKICAgICAgICAgcmVzdWx0LT5zZXREaWdp
dChpLCBvcCh4LT5kaWdpdChpKSwgeS0+ZGlnaXQoaSkpKTsKQEAgLTExNDQsNyArMTE5OSw3IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVYb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlQml0d2lzZU9wKHZtLCB4LCB5LCBFeHRyYURp
Z2l0c0hhbmRsaW5nOjpDb3B5LCBTeW1tZXRyaWNPcDo6U3ltbWV0cmljLCBkaWdpdE9wZXJhdGlv
bik7CiB9CiAgICAgCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKFZNJiB2bSwg
SlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKK0pTQmlnSW50KiBKU0JpZ0ludDo6
YWJzb2x1dGVBZGRPbmUoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbiBz
aWduT3B0aW9uKQogewogICAgIHVuc2lnbmVkIGlucHV0TGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAg
ICAgLy8gVGhlIGFkZGl0aW9uIHdpbGwgb3ZlcmZsb3cgaW50byBhIG5ldyBkaWdpdCBpZiBhbGwg
ZXhpc3RpbmcgZGlnaXRzIGFyZQpAQCAtMTE1OCw3ICsxMjEzLDkgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjphYnNvbHV0ZUFkZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25P
cHRpb24pCiAgICAgfQogCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gaW5wdXRMZW5ndGgg
KyB3aWxsT3ZlcmZsb3c7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgo
dm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IHRyeUNyZWF0ZVdpdGhM
ZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBEaWdpdCBjYXJyeSA9IDE7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGlucHV0TGVuZ3RoOyBpKyspIHsKQEAgLTExNzIsMTYgKzEyMjksMTggQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWdu
T3B0aW9uIHNpZ25PcHRpb24pCiAgICAgICAgIEFTU0VSVCghY2FycnkpOwogCiAgICAgcmVzdWx0
LT5zZXRTaWduKHNpZ25PcHRpb24gPT0gU2lnbk9wdGlvbjo6U2lnbmVkKTsKLSAgICByZXR1cm4g
cmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShleGVj
LT52bSgpKTsKIH0KIAotLy8gTGlrZSB0aGUgYWJvdmUsIGJ1dCB5b3UgY2FuIHNwZWNpZnkgdGhh
dCB0aGUgYWxsb2NhdGVkIHJlc3VsdCBzaG91bGQgaGF2ZQotLy8gbGVuZ3RoIHtyZXN1bHRMZW5n
dGh9LCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHt4LT5sZW5ndGgoKX0uCi1K
U0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVu
c2lnbmVkIHJlc3VsdExlbmd0aCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUo
RXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKQogewog
ICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPj0geC0+
bGVuZ3RoKCkpOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBy
ZXN1bHRMZW5ndGgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IHRyeUNy
ZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgp
OwogICAgIERpZ2l0IGJvcnJvdyA9IDE7CkBAIC0xMzU0LDggKzE0MTMsNiBAQCBTdHJpbmcgSlNC
aWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNp
Z25lZCByYWRpeCkKICAgICAgICAgZG8gewogICAgICAgICAgICAgRGlnaXQgY2h1bms7CiAgICAg
ICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sICpkaXZpZGVuZCwgY2h1bmtE
aXZpc29yLCAmcmVzdCwgY2h1bmspOwotICAgICAgICAgICAgQVNTRVJUKHJlc3QpOwotCiAgICAg
ICAgICAgICBkaXZpZGVuZCA9ICZyZXN0OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgewogICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5h
cHBlbmQocmFkaXhEaWdpdHNbY2h1bmsgJSByYWRpeF0pOwpAQCAtMTQxNCw4ICsxNDcxLDcgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQogICAgICAgICByZXR1cm4gdGhp
czsKIAogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IG5vblplcm9JbmRleCArIDE7Ci0gICAgSlNC
aWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBuZXdMZW5ndGgpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHRyaW1tZWRCaWdJbnQpOworICAgIEpTQmlnSW50KiB0cmltbWVk
QmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbmV3TGVuZ3RoKTsKICAgICBz
dGQ6OmNvcHkoZGF0YVN0b3JhZ2UoKSwgZGF0YVN0b3JhZ2UoKSArIG5ld0xlbmd0aCwgdHJpbW1l
ZEJpZ0ludC0+ZGF0YVN0b3JhZ2UoKSk7IAogCiAgICAgdHJpbW1lZEJpZ0ludC0+c2V0U2lnbih0
aGlzLT5zaWduKCkpOwpAQCAtMTQzOSw3ICsxNDk1LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojph
bGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgdW5zaWduZWQgcmFkaXgsIHVuc2ln
bmUKICAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91bmRpbmcgdXAuCiAg
ICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAoYml0c01pbiArIGRpZ2l0Qml0cyAtIDEpIC8g
ZGlnaXRCaXRzOwogICAgICAgICAgICAgaWYgKGxlbmd0aCA8PSBtYXhMZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgo
dm0sIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBsZW5ndGgpOwogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IGE2MmUxMzhhZDY2NTUzYzkzOTU4NmJlNjk1
YTFkZTE1YWUzOGU0NTAuLmFiOGZmNWFmNWQ2N2Y0YjY3MDQxYjI2NWNhMjU5N2Y4MGJjNTQ0Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtNTEsNyArNTEs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICBzdGF0aWMgSlNCaWdJ
bnQqIGNyZWF0ZVplcm8oVk0mKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVdpdGhMZW5n
dGgoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0ludCogdHJ5Q3JlYXRl
V2l0aExlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChWTSYsIHVuc2lnbmVkIGxlbmd0aCk7CiAK
ICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oVk0mLCBpbnQzMl90IHZhbHVlKTsKICAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oVk0mLCB1aW50MzJfdCB2YWx1ZSk7CkBAIC0x
MDgsMTUgKzEwOSwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ29tcGFyaXNvblJlc3VsdCBzdGF0
aWMgY29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSk7CiAKLSAgICBzdGF0aWMg
SlNCaWdJbnQqIGFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGlj
IEpTQmlnSW50KiBzdWIoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRp
YyBKU0JpZ0ludCogYWRkKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Cisg
ICAgc3RhdGljIEpTQmlnSW50KiBzdWIoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGRpdmlkZShFeGVjU3RhdGUqLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogcmVtYWluZGVyKEV4ZWNTdGF0
ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiB1bmFy
eU1pbnVzKFZNJiwgSlNCaWdJbnQqIHgpOwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNl
QW5kKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IGJpdHdpc2VPcihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGljIEpT
QmlnSW50KiBiaXR3aXNlWG9yKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBz
dGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VPcihFeGVjU3RhdGUqLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZVhvcihF
eGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiBwcml2YXRlOgogCkBAIC0x
MzksMTQgKzE0MCwxNCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0
aERpZ2l0RGl2aXNvcihWTSYsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoq
IHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVyKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbE11
bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwg
dW5zaWduZWQsIEpTQmlnSW50KiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIG11bHRpcGx5QWNj
dW11bGF0ZShKU0JpZ0ludCogbXVsdGlwbGljYW5kLCBEaWdpdCBtdWx0aXBsaWVyLCBKU0JpZ0lu
dCogYWNjdW11bGF0b3IsIHVuc2lnbmVkIGFjY3VtdWxhdG9ySW5kZXgpOwotICAgIHN0YXRpYyB2
b2lkIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoVk0mLCBKU0JpZ0ludCogZGl2aWRlbmQs
IEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFp
bmRlcik7CisgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihFeGVj
U3RhdGUqLCBKU0JpZ0ludCogZGl2aWRlbmQsIEpTQmlnSW50KiBkaXZpc29yLCBKU0JpZ0ludCoq
IHF1b3RpZW50LCBKU0JpZ0ludCoqIHJlbWFpbmRlcik7CiAgICAgCiAgICAgZW51bSBjbGFzcyBM
ZWZ0U2hpZnRNb2RlIHsKICAgICAgICAgU2FtZVNpemVSZXN1bHQsCiAgICAgICAgIEFsd2F5c0Fk
ZE9uZURpZ2l0CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVm
dFNoaWZ0QWx3YXlzQ29weShWTSYsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNo
aWZ0TW9kZSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0Nv
cHkoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2Rl
KTsKICAgICBzdGF0aWMgYm9vbCBwcm9kdWN0R3JlYXRlclRoYW4oRGlnaXQgZmFjdG9yMSwgRGln
aXQgZmFjdG9yMiwgRGlnaXQgaGlnaCwgRGlnaXQgbG93KTsKIAogICAgIERpZ2l0IGFic29sdXRl
SW5wbGFjZUFkZChKU0JpZ0ludCogc3VtbWFuZCwgdW5zaWduZWQgc3RhcnRJbmRleCk7CkBAIC0x
NzYsOCArMTc3LDggQEAgcHJpdmF0ZToKICAgICAgICAgVW5zaWduZWQKICAgICB9OwogCi0gICAg
c3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZE9uZShWTSYsIEpTQmlnSW50KiB4LCBTaWduT3B0
aW9uKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViT25lKFZNJiwgSlNCaWdJbnQq
IHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0
ZUFkZE9uZShFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbik7CisgICAgc3RhdGlj
IEpTQmlnSW50KiBhYnNvbHV0ZVN1Yk9uZShFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgdW5zaWdu
ZWQgcmVzdWx0TGVuZ3RoKTsKIAogICAgIC8vIERpZ2l0IGFyaXRobWV0aWMgaGVscGVycy4KICAg
ICBzdGF0aWMgRGlnaXQgZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGNhcnJ5KTsK
QEAgLTIwMyw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIEpTQmlnSW50KiByaWdodFRyaW0oVk0m
KTsKIAogICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0IG11bHRpcGxpZXIsIERpZ2l0
IHBhcnQpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGQoVk0mLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbik7CisgICAgc3RhdGljIEpTQmlnSW50KiBh
YnNvbHV0ZUFkZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVz
dWx0U2lnbik7CiAgICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVN1YihWTSYsIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKICAgICAKICAgICBzdGF0aWMgc2l6
ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IGEwODhhZDFjYmMyMDc4ZDYyMDVhZmYw
YWJhZDNkYTczYTk2ZjViMjYuLjg4YTJiN2UwOGM1Zjc2MmI1ODYyMzQxYjYwZDFhNWYxM2NlNzdm
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBA
IC02OSw4ICs2OSwxMSBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKHZtLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6YWRk
KGNhbGxGcmFtZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDYxZDUzM2NmNDVm
NmJkMDMyZGI5OGViNmQ0ZTI0MDQyYWI0YTUyYjMuLmIzNjk3OWEyMWYzOWZkZDY2YjViMGRkODFj
ZDI4NjE1ZTQ3MmE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKQEAgLTM0OCw4ICszNDgsMTEgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1Yih2bSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1Yihl
eGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiAgICAgfQpAQCAtMzY4LDggKzM3
MSwxMSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNNdWwoRXhlY1N0YXRlKiBzdGF0ZSwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0g
ICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5KHN0YXRlLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
KyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
KyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6bXVsdGlwbHkoc3RhdGUs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KIAogICAgICAgICB0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzdkYzY2
NjRiNDE2YzE2NDY4MmM1NjUyYzI5ZjQyNmU5N2VlZTQ2ZS4uZTcwMjg5MTU1MjZlZGI1MTM1OTVj
OGQ0ZGNmMWE0MWI1NTlkZjg2NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1h
ICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNy
ZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRocm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBK
U0JpZ0ludDo6bWF4TGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTA4MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanM6IEFkZGVk
LgorCiAyMDE4LTExLTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBVKzE4MEUgaXMgbm8gbG9uZ2VyIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hYzM5Mzg3YmExMDg3MzU5N2RhOTkwMTUxMGYwNzJjMTU3ZWE5ZDk3Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vdXQtb2YtbWVtb3J5LXRlc3RzLmpzCkBAIC0w
LDAgKzEsNjMgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZH
SklUPWZhbHNlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gbHNoaWZ0
KHkpIHsKKyAgICBsZXQgb3V0ID0gMW47CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB5OyBpKysp
IHsKKyAgICAgICAgb3V0ICo9IDJuOworICAgIH0KKworICAgIHJldHVybiBvdXQ7Cit9CisKK2xl
dCBhID0gbHNoaWZ0KDE2Mzg0ICogNjMpOworZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7IGkrKykg
eworICAgIGEgKj0gMTg0NDY3NDQwNzM3MDk1NTE2MTVuOworfQorCit0cnkgeworICAgIGxldCBi
ID0gYSArIDFuOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVy
cm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAg
IGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAtICgt
MW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBi
dXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2Vy
dChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJv
ciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAqICgtMW4pOwor
ICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhl
Y3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1l
c3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0
IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAvIGE7CisgICAgYXNzZXJ0
KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRo
b3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAi
T3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsg
ZSk7Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSAtYSAmIC0xbjsKKyAgICBhc3NlcnQoZmFsc2Us
ICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhj
ZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2Yg
bWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30K
KwordHJ5IHsKKyAgICBsZXQgYiA9IGEgXiAtMW47CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxk
IHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIp
OworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIs
ICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354604</attachid>
            <date>2018-11-12 15:54:08 -0800</date>
            <delta_ts>2018-11-13 06:28:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181112205406.patch</filename>
            <type>text/plain</type>
            <size>39961</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NWMzYmVmZGY3Yzc1MWJhNjgwZWFhOTMyOWQ2MWEwM2U3NmJiNGM2Li4zYTZkNjRmOWIyYTRhZDdi
OTc5N2VhNzg3NTg0OWRlY2QzYTYwYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNo
IHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1
c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlz
IGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAg
ICAgICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNC
aWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhh
biBtYXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAg
ICAgVGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9w
ZXJhdGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0m
YC4gV2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVj
YXVzZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRo
cm93aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0
bHkgaXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAg
ZXhjZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNy
ZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRp
dmlkZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhv
cik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVE
aXZXaXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxl
ZnRTaGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3
aXNlT3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTExICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYSBm
aXhtZTogcmVuYW1lIHd0Zk9iamNNc2dTZW5kIHRvIHd0Zk9iakNNc2dTZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkZjNmZDFlNTZlZTk5ZTA2
MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41NDE3ZmIwZGZjZDI3NDAzODJmMDRlYzYyYjVmYjFm
MGJkYjBmZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4
ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2
bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxK
U0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0Jp
Z0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBsZWZ0
T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAgICAgSlNC
aWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0lu
dCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKIAotICAgIHJldHVybiBK
U0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAg
IHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMTYsNyArMTMxNiw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0g
anNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganND
YXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZCgqdm0s
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGV4
ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKgog
ICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAg
SlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0g
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBsZWZ0T3BlcmFuZCwg
cmlnaHRPcGVyYW5kKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlOGZl
MDA0NTA0MWViMzkyZGFkYzljZTQzZjQ4MTUyMTJlMzkxZDIuLjUxMWM0MmYzZDRmMTFjMzlhOGI4
NWNkMmQzNjIwNzFiMjE5ZDVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMjc2NiwxMCArMjc2Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAot
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQorICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOwogCiAgICAgZG91YmxlIG51bWJl
ciA9IHByaW1WYWx1ZS50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDUxNjNjMzNlZTkwZmM0OGI3NTg2ZTI3ODI5
MzEwZDQ0MjJmNjdjMDguLmVlNWFkYTI3OTUwY2U5NGMxMWI4ODUyMjVhM2JmMDI4ZTc1NmFhY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNTYzLDcgKzU2Myw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAK
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZXhlYywgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJF
VFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgICAgICB1cGRhdGVBcml0
aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIH0pOwpAQCAtNjk5LDcgKzcwMCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9CkBAIC03MjAsNyArNzIxLDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcih2bSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTc0MSw3ICs3NDIsNyBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwog
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3Iodm0sIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNl
WG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAg
ICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRhYjVhNTIzNTNmZDFhZTkyMGQxMWJiMzRi
YzA2ZWI1NGZmODhlZTcuLjBmMjQzMmU2MTAzN2EyODI4NjAwNzNmOGE4MjhjNjAzNTRmOGUzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKIAogSlNCaWdJbnQqIEpTQmlnSW50Ojpj
cmVhdGVaZXJvKFZNJiB2bSkKIHsKLSAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdp
dGhMZW5ndGgodm0sIDApOworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZCh2bSwgMCk7CiAgICAgcmV0dXJuIHplcm9CaWdJbnQ7CiB9CiAKQEAgLTkx
LDkgKzkxLDI1IEBAIGlubGluZSBzaXplX3QgSlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKHVuc2ln
bmVkIGxlbmd0aCkKICAgICByZXR1cm4gc2l6ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9m
KERpZ2l0KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2
bSwgdW5zaWduZWQgbGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heExlbmd0aCkpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgcmV0dXJuIGNyZWF0ZVdpdGhMZW5ndGhV
bmNoZWNrZWQodm0sIGxlbmd0aCk7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBKU0JpZ0lu
dCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAs
IGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJl
LmdldCgpLCBsZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKGJpZ0ludCk7CiAgICAgYmlnSW50
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KQEAgLTEwMyw4ICsx
MTksNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBpbnQzMl90IHZh
bHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAg
ICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7Ci0gICAg
CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEp
OwogICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0
aWNfY2FzdDxEaWdpdD4oLTEgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKICAgICAg
ICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTE5LDcgKzEzNCw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIHVpbnQzMl90IHZhbHVlKQogICAgIGlmICghdmFs
dWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKLSAgICBKU0JpZ0ludCog
YmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9
IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgIGJpZ0ludC0+c2V0RGlnaXQo
MCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KQEAg
LTEzMCw4ICsxNDUsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBp
bnQ2NF90IHZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAgCiAgICAg
aWYgKHNpemVvZihEaWdpdCkgPT0gOCkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3Jl
YXRlV2l0aExlbmd0aCh2bSwgMSk7Ci0gICAgICAgIAorICAgICAgICBKU0JpZ0ludCogYmlnSW50
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgICAgIGlmICh2YWx1ZSA8
IDApIHsKICAgICAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+
KHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKHZhbHVlICsgMSkpICsgMSkpOwogICAgICAgICAgICAg
YmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTQxLDggKzE1NSw3IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAgICAgICAgIHJldHVybiBi
aWdJbnQ7CiAgICAgfQogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVu
Z3RoKHZtLCAyKTsKLSAgICAKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCh2bSwgMik7CiAgICAgdWludDY0X3QgdGVtcFZhbHVlOwogICAgIGJvb2wgc2ln
biA9IGZhbHNlOwogICAgIGlmICh2YWx1ZSA8IDApIHsKQEAgLTE2Niw3ICsxNzksNyBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBib29sIHZhbHVlKQogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKLSAgICBKU0JpZ0lu
dCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgSlNCaWdJbnQqIGJpZ0lu
dCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgIGJpZ0ludC0+c2V0RGln
aXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGJpZ0ludDsKIH0K
QEAgLTIzNCw2ICsyNDcsNyBAQCB2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQoRGln
aXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kKQogSlNCaWdJbnQqIEpTQmlnSW50OjptdWx0aXBseShF
eGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
IAogICAgIGlmICh4LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHg7CkBAIC0yNDEsNyArMjU1
LDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjptdWx0aXBseShFeGVjU3RhdGUqIGV4ZWMsIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgcmV0dXJuIHk7CiAKICAgICB1bnNpZ25lZCBy
ZXN1bHRMZW5ndGggPSB4LT5sZW5ndGgoKSArIHktPmxlbmd0aCgpOwotICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywg
cmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
ICAgICByZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykKQEAgLTI3Nyw4
ICsyOTIsMTAgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpkaXZpZGUoRXhlY1N0YXRlKiBleGVjLCBK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAKICAgICAgICAgRGlnaXQgcmVtYWluZGVyOwogICAg
ICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sIHgsIGRpdmlzb3IsICZxdW90aWVu
dCwgcmVtYWluZGVyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50
RGl2aXNvcih2bSwgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksICZxdW90aWVudCwg
bnVsbHB0cik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
ICAgIH0KIAogICAgIHF1b3RpZW50LT5zZXRTaWduKHJlc3VsdFNpZ24pOwogICAgIHJldHVybiBx
dW90aWVudC0+cmlnaHRUcmltKHZtKTsKQEAgLTI4OCw3ICszMDUsNyBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OmNvcHkoVk0mIHZtLCBKU0JpZ0ludCogeCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVy
bygpKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3Jl
YXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOwogICAgIHN0ZDo6Y29weSh4
LT5kYXRhU3RvcmFnZSgpLCB4LT5kYXRhU3RvcmFnZSgpICsgeC0+bGVuZ3RoKCksIHJlc3VsdC0+
ZGF0YVN0b3JhZ2UoKSk7CiAgICAgcmVzdWx0LT5zZXRTaWduKHgtPnNpZ24oKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTMzMSwyMyArMzQ4LDI2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVt
YWluZGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAg
ICBpZiAoIXJlbWFpbmRlckRpZ2l0KQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0p
OwogCi0gICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOworICAgICAg
ICByZW1haW5kZXIgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAg
cmVtYWluZGVyLT5zZXREaWdpdCgwLCByZW1haW5kZXJEaWdpdCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksIG51bGxwdHIsICZyZW1h
aW5kZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlz
b3IoZXhlYywgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIH0KIAogICAgIHJlbWFpbmRlci0+c2V0U2ln
bih4LT5zaWduKCkpOwogICAgIHJldHVybiByZW1haW5kZXItPnJpZ2h0VHJpbSh2bSk7CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQorSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHhTaWdu
ID0geC0+c2lnbigpOwogCiAgICAgLy8geCArIHkgPT0geCArIHkKICAgICAvLyAteCArIC15ID09
IC0oeCArIHkpCiAgICAgaWYgKHhTaWduID09IHktPnNpZ24oKSkKLSAgICAgICAgcmV0dXJuIGFi
c29sdXRlQWRkKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZChl
eGVjLCB4LCB5LCB4U2lnbik7CiAKICAgICAvLyB4ICsgLXkgPT0geCAtIHkgPT0gLSh5IC0geCkK
ICAgICAvLyAteCArIHkgPT0geSAtIHggPT0gLSh4IC0geSkKQEAgLTM1OCwxMyArMzc4LDE0IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQogICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAotSlNCaWdJ
bnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0Jp
Z0ludCogSlNCaWdJbnQ6OnN1YihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24gPSB4LT5z
aWduKCk7CiAgICAgaWYgKHhTaWduICE9IHktPnNpZ24oKSkgewogICAgICAgICAvLyB4IC0gKC15
KSA9PSB4ICsgeQogICAgICAgICAvLyAoLXgpIC0geSA9PSAtKHggKyB5KQotICAgICAgICByZXR1
cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRl
QWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKICAgICB9CiAgICAgLy8geCAtIHkgPT0gLSh5IC0geCkK
ICAgICAvLyAoLXgpIC0gKC15KSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzc1LDggKzM5Niwx
MSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKICAgICByZXR1cm4gYWJzb2x1dGVTdWIodm0sIHksIHgsICF4U2lnbik7CiB9CiAKLUpT
QmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChFeGVjU3RhdGUqIGV4ZWMsIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKwogICAgIGlmICgheC0+c2ln
bigpICYmICF5LT5zaWduKCkpCiAgICAgICAgIHJldHVybiBhYnNvbHV0ZUFuZCh2bSwgeCwgeSk7
CiAgICAgCkBAIC0zODQsMTEgKzQwOCwxNSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VB
bmQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGludCByZXN1bHRM
ZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpICsgMTsKICAgICAgICAg
Ly8gKC14KSAmICgteSkgPT0gfih4LTEpICYgfih5LTEpID09IH4oKHgtMSkgfCAoeS0xKSkKICAg
ICAgICAgLy8gPT0gLSgoKHgtMSkgfCAoeS0xKSkgKyAxKQotICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmln
SW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7Ci0gICAgICAgIHJl
c3VsdCA9IGFic29sdXRlT3Iodm0sIHJlc3VsdCwgeTEpOworICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICAgICAgcmV0dXJuIGFic29s
dXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgICAgIEpTQmln
SW50KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAg
QVNTRVJUKHkxKTsKKyAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVPcih2bSwgcmVzdWx0LCB5MSk7
CisgICAgICAgIHJlc3VsdCA9IGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2lnbk9wdGlv
bjo6U2lnbmVkKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgQVNTRVJUKHgtPnNpZ24oKSAh
PSB5LT5zaWduKCkpOwpAQCAtMzk3LDExICs0MjUsMTUgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojpi
aXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6
OnN3YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCAmICgteSkgPT0geCAmIH4oeS0xKSA9PSB4ICYg
fih5LTEpCi0gICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCBhYnNvbHV0ZVN1Yk9uZSh2
bSwgeSwgeS0+bGVuZ3RoKCkpKTsKKyAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShl
eGVjLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgQVNTRVJUKHkxKTsKKyAgICByZXR1cm4gYWJzb2x1
dGVBbmROb3Qodm0sIHgsIHkxKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3Io
Vk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VPcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gc3Rk
OjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgpKTsKIAogICAgIGlmICgheC0+c2lnbigpICYm
ICF5LT5zaWduKCkpCkBAIC00MTAsMTAgKzQ0MiwxMiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICBpZiAoeC0+c2ln
bigpICYmIHktPnNpZ24oKSkgewogICAgICAgICAvLyAoLXgpIHwgKC15KSA9PSB+KHgtMSkgfCB+
KHktMSkgPT0gfigoeC0xKSAmICh5LTEpKQogICAgICAgICAvLyA9PSAtKCgoeC0xKSAmICh5LTEp
KSArIDEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeCwg
cmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUodm0s
IHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3Vi
T25lKGV4ZWMsIHgsIHJlc3VsdExlbmd0aCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAg
ICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5sZW5ndGgoKSk7
CisgICAgICAgIEFTU0VSVCh5MSk7CiAgICAgICAgIHJlc3VsdCA9IGFic29sdXRlQW5kKHZtLCBy
ZXN1bHQsIHkxKTsKLSAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNp
Z25PcHRpb246OlNpZ25lZCk7CisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCBy
ZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVCh4LT5z
aWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTQyMywxMyArNDU3LDE3IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAg
ICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCB8ICgteSkgPT0geCB8IH4oeS0xKSA9
PSB+KCh5LTEpICZ+IHgpID09IC0oKCh5LTEpICZ+IHgpICsgMSkKLSAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHksIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHJlc3VsdExlbmd0aCk7CisgICAgQVNT
RVJUKHJlc3VsdCk7CiAgICAgcmVzdWx0ID0gYWJzb2x1dGVBbmROb3Qodm0sIHJlc3VsdCwgeCk7
Ci0gICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25l
ZCk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2lnbk9wdGlvbjo6
U2lnbmVkKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwor
CiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkKICAgICAgICAgcmV0dXJuIGFic29s
dXRlWG9yKHZtLCB4LCB5KTsKICAgICAKQEAgLTQzNyw4ICs0NzUsMTAgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpiaXR3aXNlWG9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAg
ICAgICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgp
KTsKICAgICAgICAgCiAgICAgICAgIC8vICgteCkgXiAoLXkpID09IH4oeC0xKSBeIH4oeS0xKSA9
PSAoeC0xKSBeICh5LTEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9u
ZSh2bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVT
dWJPbmUodm0sIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFi
c29sdXRlU3ViT25lKGV4ZWMsIHgsIHJlc3VsdExlbmd0aCk7CisgICAgICAgIEFTU0VSVChyZXN1
bHQpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5s
ZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVCh5MSk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhv
cih2bSwgcmVzdWx0LCB5MSk7CiAgICAgfQogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2ln
bigpKTsKQEAgLTQ0OSw5ICs0ODksMTMgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9y
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwg
eSk7CiAgICAgCiAgICAgLy8geCBeICgteSkgPT0geCBeIH4oeS0xKSA9PSB+KHggXiAoeS0xKSkg
PT0gLSgoeCBeICh5LTEpKSArIDEpCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3Vi
T25lKHZtLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0
ZVN1Yk9uZShleGVjLCB5LCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworCiAgICAgcmVzdWx0ID0gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwg
eCk7Ci0gICAgcmV0dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNp
Z25lZCk7CisgICAgcmVzdWx0ID0gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0
aW9uOjpTaWduZWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNzUxLDEw
ICs3OTUsMTIgQEAgaW5saW5lIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojph
YnNvbHV0ZUNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW4KICAgICByZXR1cm4geC0+ZGlnaXQo
aSkgPiB5LT5kaWdpdChpKSA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFy
aXNvblJlc3VsdDo6TGVzc1RoYW47CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVB
ZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKK0pT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworCiAgICAgaWYgKHgtPmxlbmd0aCgpIDwgeS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVy
biBhYnNvbHV0ZUFkZCh2bSwgeSwgeCwgcmVzdWx0U2lnbik7CisgICAgICAgIHJldHVybiBhYnNv
bHV0ZUFkZChleGVjLCB5LCB4LCByZXN1bHRTaWduKTsKIAogICAgIGlmICh4LT5pc1plcm8oKSkg
ewogICAgICAgICBBU1NFUlQoeS0+aXNaZXJvKCkpOwpAQCAtNzY0LDggKzgxMCw5IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHksIGJvb2wgcmVzdWx0U2lnCiAgICAgaWYgKHktPmlzWmVybygpKQogICAgICAgICByZXR1cm4g
cmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4IDogdW5hcnlNaW51cyh2bSwgeCk7CiAKLSAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxlbmd0
aCgpICsgMSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHgtPmxlbmd0aCgpICsgMSk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIERpZ2l0IGNhcnJ5ID0g
MDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBpKysp
IHsKQEAgLTgwNiw3ICs4NTMsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3ViKFZN
JiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlmIChj
b21wYXJpc29uUmVzdWx0ID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsKQogICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5sZW5n
dGgoKSk7CisKICAgICBEaWdpdCBib3Jyb3cgPSAwOwogICAgIHVuc2lnbmVkIGkgPSAwOwogICAg
IGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODUxLDcgKzg5OSw3IEBAIHZvaWQg
SlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4
LCBEaWdpdCBkaXZpc29yLCBKCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAg
ICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKICAgICAgICAgaWYgKCpxdW90aWVudCA9PSBu
dWxscHRyKQotICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5n
dGgodm0sIGxlbmd0aCk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
V2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsKIAogICAgICAgICBmb3IgKGludCBpID0g
bGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdpdERp
dihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOwpAQCAtODY5LDEw
ICs5MTcsMTIgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZN
JiB2bSwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEoKIC8vIEJvdGgge3F1b3RpZW50fSBh
bmQge3JlbWFpbmRlcn0gYXJlIG9wdGlvbmFsLCBmb3IgY2FsbGVycyB0aGF0IGFyZSBvbmx5CiAv
LyBpbnRlcmVzdGVkIGluIG9uZSBvZiB0aGVtLgogLy8gU2VlIEtudXRoLCBWb2x1bWUgMiwgc2Vj
dGlvbiA0LjMuMSwgQWxnb3JpdGhtIEQuCi12b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhC
aWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNv
ciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpCit2b2lkIEpTQmln
SW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNC
aWdJbnQqKiByZW1haW5kZXIpCiB7CiAgICAgQVNTRVJUKGRpdmlzb3ItPmxlbmd0aCgpID49IDIp
OwogICAgIEFTU0VSVChkaXZpZGVuZC0+bGVuZ3RoKCkgPj0gZGl2aXNvci0+bGVuZ3RoKCkpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwogCiAgICAgLy8gVGhlIHVudXN1YWwgdmFyaWFibGUgbmFtZXMgaW5zaWRlIHRo
aXMgZnVuY3Rpb24gYXJlIGNvbnNpc3RlbnQgd2l0aAogICAgIC8vIEtudXRoJ3MgYm9vaywgYXMg
d2VsbCBhcyB3aXRoIEdvJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBhbGdvcml0aG0uCkBAIC04
ODQsMTEgKzkzNCwxMiBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZp
c29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludAogICAgIC8vIFRoZSBxdW90
aWVudCB0byBiZSBjb21wdXRlZC4KICAgICBKU0JpZ0ludCogcSA9IG51bGxwdHI7CiAgICAgaWYg
KHF1b3RpZW50ICE9IG51bGxwdHIpCi0gICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBt
ICsgMSk7CisgICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKGV4ZWMtPnZtKCks
IG0gKyAxKTsKICAgICAKICAgICAvLyBJbiBlYWNoIGl0ZXJhdGlvbiwge3FoYXR2fSBob2xkcyB7
ZGl2aXNvcn0gKiB7Y3VycmVudCBxdW90aWVudCBkaWdpdH0uCiAgICAgLy8gInYiIGlzIHRoZSBi
b29rJ3MgbmFtZSBmb3Ige2Rpdmlzb3J9LCAicWhhdCIgdGhlIGN1cnJlbnQgcXVvdGllbnQgZGln
aXQuCi0gICAgSlNCaWdJbnQqIHFoYXR2ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbiArIDEpOwor
ICAgIEpTQmlnSW50KiBxaGF0diA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgbiArIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgCiAgICAgLy8gRDEu
CiAgICAgLy8gTGVmdC1zaGlmdCBpbnB1dHMgc28gdGhhdCB0aGUgZGl2aXNvcidzIE1TQiBpcyBz
ZXQuIFRoaXMgaXMgbmVjZXNzYXJ5CkBAIC04OTgsMTIgKzk0OSwxNSBAQCB2b2lkIEpTQmlnSW50
OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5k
LCBKU0JpZ0ludAogICAgIERpZ2l0IGxhc3REaWdpdCA9IGRpdmlzb3ItPmRpZ2l0KG4gLSAxKTsK
ICAgICB1bnNpZ25lZCBzaGlmdCA9IHNpemVvZihsYXN0RGlnaXQpID09IDggPyBjbHo2NChsYXN0
RGlnaXQpIDogY2x6MzIobGFzdERpZ2l0KTsKIAotICAgIGlmIChzaGlmdCA+IDApCi0gICAgICAg
IGRpdmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkodm0sIGRpdmlzb3IsIHNoaWZ0
LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7CisgICAgaWYgKHNoaWZ0ID4gMCkgewor
ICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KGV4ZWMsIGRpdmlz
b3IsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQogCiAgICAgLy8gSG9sZHMgdGhl
IChjb250aW51b3VzbHkgdXBkYXRlZCkgcmVtYWluaW5nIHBhcnQgb2YgdGhlIGRpdmlkZW5kLCB3
aGljaAogICAgIC8vIGV2ZW50dWFsbHkgYmVjb21lcyB0aGUgcmVtYWluZGVyLgotICAgIEpTQmln
SW50KiB1ID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpZGVuZCwgc2hpZnQs
IExlZnRTaGlmdE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0KTsKKyAgICBKU0JpZ0ludCogdSA9IGFi
c29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBkaXZpZGVuZCwgc2hpZnQsIExlZnRTaGlm
dE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogCiAgICAgLy8gRDIuCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBkaXZpZGVu
ZCdzIGRpZ2l0IChsaWtlIHRoZSAiZ3JhZCBzY2hvb2wiIGFsZ29yaXRobSkuCkBAIC0xMDMxLDE0
ICsxMDg1LDE2IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VSaWdodFNoaWZ0KHVuc2lnbmVkIHNo
aWZ0KQogfQogCiAvLyBBbHdheXMgY29waWVzIHRoZSBpbnB1dCwgZXZlbiB3aGVuIHtzaGlmdH0g
PT0gMC4KLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KFZN
JiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUpCitK
U0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3RhdGUq
IGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2RlKQog
ewogICAgIEFTU0VSVChzaGlmdCA8IGRpZ2l0Qml0cyk7CiAgICAgQVNTRVJUKCF4LT5pc1plcm8o
KSk7CiAKICAgICB1bnNpZ25lZCBuID0geC0+bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcmVzdWx0
TGVuZ3RoID0gbW9kZSA9PSBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCA/IG4gKyAx
IDogbjsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0
TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVj
LCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmICghc2hpZnQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG47IGkrKykKQEAgLTEwOTUsOCArMTE1MSw3IEBAIGlubGluZSBKU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlQml0d2lzZU9wKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBFCiAK
ICAgICBBU1NFUlQobnVtUGFpcnMgPT0gc3RkOjptaW4oeExlbmd0aCwgeUxlbmd0aCkpOwogICAg
IHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IGV4dHJhRGlnaXRzID09IEV4dHJhRGlnaXRzSGFuZGxp
bmc6OkNvcHkgPyB4TGVuZ3RoIDogbnVtUGFpcnM7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNy
ZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7Ci0KKyAgICBKU0JpZ0ludCogcmVzdWx0
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgcmVzdWx0TGVuZ3RoKTsKICAgICB1bnNp
Z25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IG51bVBhaXJzOyBpKyspCiAgICAgICAgIHJlc3Vs
dC0+c2V0RGlnaXQoaSwgb3AoeC0+ZGlnaXQoaSksIHktPmRpZ2l0KGkpKSk7CkBAIC0xMTQ0LDcg
KzExOTksNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlWG9yKFZNJiB2bSwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZUJpdHdpc2VPcCh2bSwgeCwg
eSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0cmljT3A6OlN5bW1ldHJpYywgZGln
aXRPcGVyYXRpb24pOwogfQogICAgIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9u
ZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCitKU0JpZ0ludCog
SlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIFNp
Z25PcHRpb24gc2lnbk9wdGlvbikKIHsKICAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IHgtPmxl
bmd0aCgpOwogICAgIC8vIFRoZSBhZGRpdGlvbiB3aWxsIG92ZXJmbG93IGludG8gYSBuZXcgZGln
aXQgaWYgYWxsIGV4aXN0aW5nIGRpZ2l0cyBhcmUKQEAgLTExNTgsNyArMTIxMyw5IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2lnbk9w
dGlvbiBzaWduT3B0aW9uKQogICAgIH0KIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IGlu
cHV0TGVuZ3RoICsgd2lsbE92ZXJmbG93OwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVX
aXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSB0cnlD
cmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRGlnaXQgY2FycnkgPSAxOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgaSsrKSB7CkBAIC0xMTcyLDE2ICsxMjI5
LDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQogICAgICAgICBBU1NFUlQoIWNhcnJ5KTsKIAog
ICAgIHJlc3VsdC0+c2V0U2lnbihzaWduT3B0aW9uID09IFNpZ25PcHRpb246OlNpZ25lZCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0LT5yaWdo
dFRyaW0oZXhlYy0+dm0oKSk7CiB9CiAKLS8vIExpa2UgdGhlIGFib3ZlLCBidXQgeW91IGNhbiBz
cGVjaWZ5IHRoYXQgdGhlIGFsbG9jYXRlZCByZXN1bHQgc2hvdWxkIGhhdmUKLS8vIGxlbmd0aCB7
cmVzdWx0TGVuZ3RofSwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB7eC0+bGVu
Z3RoKCl9LgotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShWTSYgdm0sIEpTQmln
SW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlU3ViT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3VsdExl
bmd0aCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKICAgICBBU1NFUlQocmVzdWx0TGVu
Z3RoID49IHgtPmxlbmd0aCgpKTsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExl
bmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTQmlnSW50KiByZXN1
bHQgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB4
LT5sZW5ndGgoKTsKICAgICBEaWdpdCBib3Jyb3cgPSAxOwpAQCAtMTM1NCw4ICsxNDEzLDYgQEAg
U3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgdW5zaWduZWQgcmFkaXgpCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIERpZ2l0IGNo
dW5rOwogICAgICAgICAgICAgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKHZtLCAqZGl2aWRl
bmQsIGNodW5rRGl2aXNvciwgJnJlc3QsIGNodW5rKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN0
KTsKLQogICAgICAgICAgICAgZGl2aWRlbmQgPSAmcmVzdDsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjaHVua0NoYXJzOyBpKyspIHsKICAgICAgICAgICAgICAgICByZXN1
bHRTdHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRzW2NodW5rICUgcmFkaXhdKTsKQEAgLTE0MTQsOCAr
MTQ3MSw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmlnaHRUcmltKFZNJiB2bSkKICAgICAgICAg
cmV0dXJuIHRoaXM7CiAKICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAx
OwotICAgIEpTQmlnSW50KiB0cmltbWVkQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbmV3
TGVuZ3RoKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh0cmltbWVkQmlnSW50KTsKKyAgICBKU0JpZ0lu
dCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIG5ld0xlbmd0
aCk7CiAgICAgc3RkOjpjb3B5KGRhdGFTdG9yYWdlKCksIGRhdGFTdG9yYWdlKCkgKyBuZXdMZW5n
dGgsIHRyaW1tZWRCaWdJbnQtPmRhdGFTdG9yYWdlKCkpOyAKIAogICAgIHRyaW1tZWRCaWdJbnQt
PnNldFNpZ24odGhpcy0+c2lnbigpKTsKQEAgLTE0MzksNyArMTQ5NSw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHJh
ZGl4LCB1bnNpZ25lCiAgICAgICAgICAgICAvLyBEaXZpZGUgYnkga0RpZ2l0c0JpdHMsIHJvdW5k
aW5nIHVwLgogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gKGJpdHNNaW4gKyBkaWdpdEJp
dHMgLSAxKSAvIGRpZ2l0Qml0czsKICAgICAgICAgICAgIGlmIChsZW5ndGggPD0gbWF4TGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVX
aXRoTGVuZ3RoKHZtLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCBhNjJlMTM4YWQ2NjU1M2M5
Mzk1ODZiZTY5NWExZGUxNWFlMzhlNDUwLi5hYjhmZjVhZjVkNjdmNGI2NzA0MWIyNjVjYTI1OTdm
ODBiYzU0NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAg
LTUxLDcgKzUxLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgc3Rh
dGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKFZNJik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVXaXRoTGVuZ3RoKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQq
IHRyeUNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoVk0mLCB1bnNpZ25lZCBs
ZW5ndGgpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKFZNJiwgaW50MzJfdCB2
YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKFZNJiwgdWludDMyX3QgdmFs
dWUpOwpAQCAtMTA4LDE1ICsxMDksMTUgQEAgcHVibGljOgogICAgIAogICAgIENvbXBhcmlzb25S
ZXN1bHQgc3RhdGljIGNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCogeCwgZG91YmxlIHkpOwogCi0g
ICAgc3RhdGljIEpTQmlnSW50KiBhZGQoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwot
ICAgIHN0YXRpYyBKU0JpZ0ludCogc3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsK
KyAgICBzdGF0aWMgSlNCaWdJbnQqIGFkZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogc3ViKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBkaXZpZGUoRXhlY1N0YXRlKiwg
SlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHJlbWFpbmRl
cihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0Jp
Z0ludCogdW5hcnlNaW51cyhWTSYsIEpTQmlnSW50KiB4KTsKIAotICAgIHN0YXRpYyBKU0JpZ0lu
dCogYml0d2lzZUFuZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3RhdGlj
IEpTQmlnSW50KiBiaXR3aXNlT3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAg
IHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZVhvcihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlQW5kKEV4ZWNTdGF0ZSosIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlT3IoRXhlY1N0
YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGJp
dHdpc2VYb3IoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKIAogcHJpdmF0
ZToKIApAQCAtMTM5LDE0ICsxNDAsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhYnNv
bHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwg
SlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcik7CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0
IHN1bW1hbmQsIHVuc2lnbmVkLCBKU0JpZ0ludCogcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBt
dWx0aXBseUFjY3VtdWxhdGUoSlNCaWdJbnQqIG11bHRpcGxpY2FuZCwgRGlnaXQgbXVsdGlwbGll
ciwgSlNCaWdJbnQqIGFjY3VtdWxhdG9yLCB1bnNpZ25lZCBhY2N1bXVsYXRvckluZGV4KTsKLSAg
ICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiwgSlNCaWdJbnQq
IGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJ
bnQqKiByZW1haW5kZXIpOworICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0aEJpZ0ludERp
dmlzb3IoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwg
SlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpOwogICAgIAogICAgIGVu
dW0gY2xhc3MgTGVmdFNoaWZ0TW9kZSB7CiAgICAgICAgIFNhbWVTaXplUmVzdWx0LAogICAgICAg
ICBBbHdheXNBZGRPbmVEaWdpdAogICAgIH07CiAgICAgCi0gICAgc3RhdGljIEpTQmlnSW50KiBh
YnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoVk0mLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hp
ZnQsIExlZnRTaGlmdE1vZGUpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0U2hp
ZnRBbHdheXNDb3B5KEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVm
dFNoaWZ0TW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHJvZHVjdEdyZWF0ZXJUaGFuKERpZ2l0IGZh
Y3RvcjEsIERpZ2l0IGZhY3RvcjIsIERpZ2l0IGhpZ2gsIERpZ2l0IGxvdyk7CiAKICAgICBEaWdp
dCBhYnNvbHV0ZUlucGxhY2VBZGQoSlNCaWdJbnQqIHN1bW1hbmQsIHVuc2lnbmVkIHN0YXJ0SW5k
ZXgpOwpAQCAtMTc2LDggKzE3Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIFVuc2lnbmVkCiAgICAg
fTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGRPbmUoVk0mLCBKU0JpZ0ludCog
eCwgU2lnbk9wdGlvbik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVN1Yk9uZShWTSYs
IEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0lu
dCogYWJzb2x1dGVBZGRPbmUoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24pOwor
ICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoRXhlY1N0YXRlKiwgSlNCaWdJbnQq
IHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7CiAKICAgICAvLyBEaWdpdCBhcml0aG1ldGljIGhl
bHBlcnMuCiAgICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0
JiBjYXJyeSk7CkBAIC0yMDMsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBKU0JpZ0ludCogcmln
aHRUcmltKFZNJik7CiAKICAgICB2b2lkIGlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBtdWx0aXBs
aWVyLCBEaWdpdCBwYXJ0KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkKFZNJiwg
SlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOworICAgIHN0YXRpYyBK
U0JpZ0ludCogYWJzb2x1dGVBZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
LCBib29sIHJlc3VsdFNpZ24pOwogICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWIoVk0m
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbik7CiAgICAgCiAgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCBhMDg4YWQxY2JjMjA3
OGQ2MjA1YWZmMGFiYWQzZGE3M2E5NmY1YjI2Li44OGEyYjdlMDhjNWY3NjJiNTg2MjM0MWI2MGQx
YTVmMTNjZTc3ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmNwcApAQCAtNjksOCArNjksMTEgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93
Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmFkZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmFkZChjYWxsRnJhbWUsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA2
MWQ1MzNjZjQ1ZjZiZDAzMmRiOThlYjZkNGUyNDA0MmFiNGE1MmIzLi5iMzY5NzlhMjFmMzlmZGQ2
NmI1YjBkZDgxY2QyODYxNWU0NzJhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCkBAIC0zNDgsOCArMzQ4LDExIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1N1YihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpz
dWIodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpzdWIoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogICAgIH0KQEAg
LTM2OCw4ICszNzEsMTEgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShzdGF0ZSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6Om11bHRp
cGx5KHN0YXRlLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIG11bHRpcGxpY2F0aW9uLiJfcyk7CiAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDc3ZGM2NjY0YjQxNmMxNjQ2ODJjNTY1MmMyOWY0MjZlOTdlZWU0NmUuLmU3MDI4OTE1NTI2
ZWRiNTEzNTk1YzhkNGRjZjFhNDFiNTU5ZGY4NjQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMDEg
IENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtCaWdJbnRdIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoIHNob3VsZCB0aHJvdyB3aGVuIGxlbmd0aCBpcyBncmVh
dGVyIHRoYW4gSlNCaWdJbnQ6Om1heExlbmd0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1vdXQtb2YtbWVtb3J5LXRlc3Rz
LmpzOiBBZGRlZC4KKwogMjAxOC0xMS0wOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdA
c29ueS5jb20+CiAKICAgICAgICAgVSsxODBFIGlzIG5vIGxvbmdlciBhIHdoaXRlc3BhY2UgY2hh
cmFjdGVyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnkt
dGVzdHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWMzOTM4N2JhMTA4NzM1OTdkYTk5MDE1MTBmMDcyYzE1N2VhOWQ5NwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0
cy5qcwpAQCAtMCwwICsxLDYzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIs
ICItLXVzZURGR0pJVD1mYWxzZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7Cisg
ICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2Z1bmN0
aW9uIGxzaGlmdCh5KSB7CisgICAgbGV0IG91dCA9IDFuOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgeTsgaSsrKSB7CisgICAgICAgIG91dCAqPSAybjsKKyAgICB9CisKKyAgICByZXR1cm4gb3V0
OworfQorCitsZXQgYSA9IGxzaGlmdCgxNjM4NCAqIDYzKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MjU2OyBpKyspIHsKKyAgICBhICo9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1bjsKK30KKwordHJ5IHsK
KyAgICBsZXQgYiA9IGEgKyAxbjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0
T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNo
KGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVk
IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQg
YiA9IGEgLSAoLTFuKTsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsK
KyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9m
TWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEg
KiAoLTFuKTsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJv
ciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBh
c3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5
RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgLyBhOwor
ICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhl
Y3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1l
c3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0
IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gLWEgJiAtMW47CisgICAgYXNz
ZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3
aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9
PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAi
ICsgZSk7Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSBhIF4gLTFuOworICAgIGFzc2VydChmYWxz
ZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBv
ZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOwor
fQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354670</attachid>
            <date>2018-11-13 06:28:22 -0800</date>
            <delta_ts>2018-11-13 19:27:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181113112820.patch</filename>
            <type>text/plain</type>
            <size>39540</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDE1OGQ0MjcyYjQ4NzRkYWE1OGIxNWM3NWE1MDFhYzUwN2UzMjhhLi5mOGU1OWI2ZmYyNTQxMTcy
NTJhMzA1ZTVlZjRhY2NjNmQ0MTRlZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0xMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdl
IGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1c3Rp
bmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlzIGFk
ZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAgICAg
ICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNCaWdJ
bnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBt
YXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAgICAg
VGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9wZXJh
dGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0mYC4g
V2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVjYXVz
ZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRocm93
aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0bHkg
aXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAgZXhj
ZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNyZWF0
ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlk
ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdWIp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhvcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURp
dldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxlZnRT
aGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNl
T3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAg
IChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTEyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBO
ZXR3b3JrOiBzaG93IHNlY3VyZSBjZXJ0aWZpY2F0ZSBkZXRhaWxzIHBlci1yZXF1ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkZjNmZDFlNTZl
ZTk5ZTA2MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41NDE3ZmIwZGZjZDI3NDAzODJmMDRlYzYy
YjVmYjFmMGJkYjBmZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNl
QW5kKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lz
ZU9yKCp2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2Fz
dDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBs
ZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVj
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAg
ICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBK
U0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKIAotICAgIHJl
dHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OworICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChleGVjLCBsZWZ0T3BlcmFuZCwgcmln
aHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0lu
dChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMTYsNyAr
MTMxNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVy
YW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5k
ID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAKLSAgICByZXR1cm4gSlNCaWdJbnQ6OmFk
ZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6
YWRkKGV4ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKgogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7
CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAg
ICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmln
aHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4
IDFlOGZlMDA0NTA0MWViMzkyZGFkYzljZTQzZjQ4MTUyMTJlMzkxZDIuLjUxMWM0MmYzZDRmMTFj
MzlhOGI4NWNkMmQzNjIwNzFiMjE5ZDVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjc2NiwxMCArMjc2Niw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGV4
ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCog
cmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOwot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQorICAgIGlmIChw
cmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOwogCiAgICAgZG91Ymxl
IG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDUxNjNjMzNlZTkwZmM0OGI3NTg2
ZTI3ODI5MzEwZDQ0MjJmNjdjMDguLmVlNWFkYTI3OTUwY2U5NGMxMWI4ODUyMjVhM2JmMDI4ZTc1
NmFhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtNTYzLDcgKzU2Myw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9z
dWIpCiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIodm0sIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZXhl
YywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAg
ICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgICAgICB1cGRh
dGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNjk5LDcgKzcwMCw3IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9CkBAIC03MjAsNyArNzIxLDcgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcih2bSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihl
eGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAg
ICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTc0MSw3ICs3NDIs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogICAgIENIRUNLX0VYQ0VQVElP
TigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3Iodm0s
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpi
aXR3aXNlWG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRhYjVhNTIzNTNmZDFhZTkyMGQx
MWJiMzRiYzA2ZWI1NGZmODhlZTcuLjBjNmY0MGRlMDJkNjliNGY2MTAwMmVkNTlmZGI4N2FmZTlk
NWU4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAg
LTgxLDcgKzgxLDcgQEAgU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKIAogSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKIHsKLSAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNy
ZWF0ZVdpdGhMZW5ndGgodm0sIDApOworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRl
V2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMCk7CiAgICAgcmV0dXJuIHplcm9CaWdJbnQ7CiB9CiAK
QEAgLTkxLDcgKzkxLDIyIEBAIGlubGluZSBzaXplX3QgSlNCaWdJbnQ6OmFsbG9jYXRpb25TaXpl
KHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gc2l6ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICog
c2l6ZW9mKERpZ2l0KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3Ro
KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50Ojp0cnlDcmVhdGVX
aXRoTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heExlbmd0aCkpIHsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgcmV0dXJuIGNyZWF0ZVdpdGhM
ZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3Jl
YXRlV2l0aExlbmd0aFVuY2hlY2tlZChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBK
U0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZt
LmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3Ry
dWN0dXJlLmdldCgpLCBsZW5ndGgpOwogICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24odm0pOwpA
QCAtMTAzLDggKzExOCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0s
IGludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVpl
cm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZt
LCAxKTsKLSAgICAKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hl
Y2tlZCh2bSwgMSk7CiAgICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICBiaWdJbnQtPnNldERp
Z2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVl
KSkpOwogICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7CkBAIC0xMTksNyArMTMzLDcgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCiAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0lu
dCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50
LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4gYmln
SW50OwogfQpAQCAtMTMwLDggKzE0NCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJv
bShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsK
ICAgICAKICAgICBpZiAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7Ci0gICAgICAgIEpTQmlnSW50KiBi
aWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAgICAgCisgICAgICAgIEpTQmln
SW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAg
aWYgKHZhbHVlIDwgMCkgewogICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNf
Y2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAg
ICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7CkBAIC0xNDEsOCArMTU0LDcgQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIGJpZ0ludDsKICAgICB9CiAgICAgCi0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNy
ZWF0ZVdpdGhMZW5ndGgodm0sIDIpOwotICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAyKTsKICAgICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAg
ICAgYm9vbCBzaWduID0gZmFsc2U7CiAgICAgaWYgKHZhbHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3
OCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGJvb2wgdmFsdWUp
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAot
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKKyAgICBKU0Jp
Z0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKICAgICByZXR1cm4g
YmlnSW50OwogfQpAQCAtMjM0LDYgKzI0Niw3IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0
aXBseUFkZChEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQpCiBKU0JpZ0ludCogSlNCaWdJbnQ6
Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwogCiAgICAgaWYgKHgtPmlzWmVybygpKQogICAgICAgICByZXR1cm4geDsKQEAg
LTI0MSw3ICsyNTQsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICByZXR1cm4geTsKIAogICAg
IHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHgtPmxlbmd0aCgpICsgeS0+bGVuZ3RoKCk7Ci0gICAg
SlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRM
ZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExl
bmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6Oldp
dGhaZXJvKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsr
KQpAQCAtMjc3LDggKzI5MSwxMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmRpdmlkZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIAogICAgICAgICBEaWdpdCByZW1h
aW5kZXI7CiAgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgeCwgZGl2aXNv
ciwgJnF1b3RpZW50LCByZW1haW5kZXIpOwotICAgIH0gZWxzZQotICAgICAgICBhYnNvbHV0ZURp
dldpdGhCaWdJbnREaXZpc29yKHZtLCB4LCB5LCAmcXVvdGllbnQsIG51bGxwdHIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IoZXhlYywgeCwgeSwg
JnF1b3RpZW50LCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisgICAgfQogCiAgICAgcXVvdGllbnQtPnNldFNpZ24ocmVzdWx0U2lnbik7CiAg
ICAgcmV0dXJuIHF1b3RpZW50LT5yaWdodFRyaW0odm0pOwpAQCAtMjg4LDcgKzMwNCw3IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6Y29weShWTSYgdm0sIEpTQmlnSW50KiB4KQogewogICAgIEFTU0VS
VCgheC0+aXNaZXJvKCkpOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVh
dGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5sZW5ndGgoKSk7CiAgICAg
c3RkOjpjb3B5KHgtPmRhdGFTdG9yYWdlKCksIHgtPmRhdGFTdG9yYWdlKCkgKyB4LT5sZW5ndGgo
KSwgcmVzdWx0LT5kYXRhU3RvcmFnZSgpKTsKICAgICByZXN1bHQtPnNldFNpZ24oeC0+c2lnbigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMxLDIzICszNDcsMjYgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpyZW1haW5kZXIoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpCiAgICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQpCiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlWmVybyh2bSk7CiAKLSAgICAgICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aCh2bSwg
MSk7CisgICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEp
OwogICAgICAgICByZW1haW5kZXItPnNldERpZ2l0KDAsIHJlbWFpbmRlckRpZ2l0KTsKLSAgICB9
IGVsc2UKLSAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcih2bSwgeCwgeSwgbnVs
bHB0ciwgJnJlbWFpbmRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWJzb2x1dGVEaXZXaXRo
QmlnSW50RGl2aXNvcihleGVjLCB4LCB5LCBudWxscHRyLCAmcmVtYWluZGVyKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgfQogCiAgICAgcmVtYWlu
ZGVyLT5zZXRTaWduKHgtPnNpZ24oKSk7CiAgICAgcmV0dXJuIHJlbWFpbmRlci0+cmlnaHRUcmlt
KHZtKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGJvb2wgeFNpZ24gPSB4LT5zaWduKCk7CiAKICAgICAvLyB4ICsgeSA9PSB4ICsgeQogICAgIC8v
IC14ICsgLXkgPT0gLSh4ICsgeSkKICAgICBpZiAoeFNpZ24gPT0geS0+c2lnbigpKQotICAgICAg
ICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFi
c29sdXRlQWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKIAogICAgIC8vIHggKyAteSA9PSB4IC0geSA9
PSAtKHkgLSB4KQogICAgIC8vIC14ICsgeSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzU4LDEz
ICszNzcsMTQgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAheFNpZ24pOwog
fQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6c3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCB4
U2lnbiA9IHgtPnNpZ24oKTsKICAgICBpZiAoeFNpZ24gIT0geS0+c2lnbigpKSB7CiAgICAgICAg
IC8vIHggLSAoLXkpID09IHggKyB5CiAgICAgICAgIC8vICgteCkgLSB5ID09IC0oeCArIHkpCi0g
ICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeCwgeSwgeFNpZ24pOworICAgICAgICByZXR1
cm4gYWJzb2x1dGVBZGQoZXhlYywgeCwgeSwgeFNpZ24pOwogICAgIH0KICAgICAvLyB4IC0geSA9
PSAtKHkgLSB4KQogICAgIC8vICgteCkgLSAoLXkpID09IHkgLSB4ID09IC0oeCAtIHkpCkBAIC0z
NzUsOCArMzk1LDExIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6c3ViKFZNJiB2bSwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWdu
KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKEV4ZWNTdGF0
ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkKICAgICAgICAgcmV0dXJuIGFic29sdXRlQW5k
KHZtLCB4LCB5KTsKICAgICAKQEAgLTM4NCwxMSArNDA3LDE0IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAg
aW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSkgKyAx
OwogICAgICAgICAvLyAoLXgpICYgKC15KSA9PSB+KHgtMSkgJiB+KHktMSkgPT0gfigoeC0xKSB8
ICh5LTEpKQogICAgICAgICAvLyA9PSAtKCgoeC0xKSB8ICh5LTEpKSArIDEpCi0gICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAg
ICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKTsK
LSAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVPcih2bSwgcmVzdWx0LCB5MSk7CisgICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgICAgICBy
ZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAg
ICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkp
OworICAgICAgICBBU1NFUlQoeTEpOworICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCBy
ZXN1bHQsIHkxKTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWJz
b2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KIAog
ICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTM5NywxMSArNDIzLDE1IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0Jp
Z0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggJiAoLXkp
ID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQotICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2
bSwgeCwgYWJzb2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKSk7CisgICAgSlNCaWdJbnQq
IHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgIEFTU0VSVCh5
MSk7CisgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CiB9CiAKLUpTQmlnSW50
KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQor
SlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCog
eCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKwogICAgIHVuc2ln
bmVkIHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAK
ICAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQpAQCAtNDEwLDEwICs0NDAsMTIgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHkpCiAgICAgaWYgKHgtPnNpZ24oKSAmJiB5LT5zaWduKCkpIHsKICAgICAgICAgLy8gKC14
KSB8ICgteSkgPT0gfih4LTEpIHwgfih5LTEpID09IH4oKHgtMSkgJiAoeS0xKSkKICAgICAgICAg
Ly8gPT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAxKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
YWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5
MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAg
ICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUo
ZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoeTEpOwogICAgICAgICByZXN1
bHQgPSBhYnNvbHV0ZUFuZCh2bSwgcmVzdWx0LCB5MSk7Ci0gICAgICAgIHJldHVybiBhYnNvbHV0
ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgICAgICByZXR1cm4g
YWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0K
ICAgICAKICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00MjMsMTMgKzQ1
NSwxNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHgg
fCAoLXkpID09IHggfCB+KHktMSkgPT0gfigoeS0xKSAmfiB4KSA9PSAtKCgoeS0xKSAmfiB4KSAr
IDEpCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB5LCByZXN1bHRM
ZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCBy
ZXN1bHRMZW5ndGgpOworICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJlc3VsdCA9IGFic29sdXRl
QW5kTm90KHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVz
dWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVj
LCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6
Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBK
U0JpZ0ludDo6Yml0d2lzZVhvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkp
CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhvcih2bSwgeCwgeSk7CiAgICAgCkBAIC00MzcsOCAr
NDczLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgt
Pmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAgICAgICAgIAogICAgICAgICAvLyAoLXgpIF4gKC15
KSA9PSB+KHgtMSkgXiB+KHktMSkgPT0gKHgtMSkgXiAoeS0xKQotICAgICAgICBKU0JpZ0ludCog
cmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpT
QmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRMZW5ndGgp
OworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1
dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoeTEpOwogICAg
ICAgICByZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeTEpOwogICAgIH0KICAgICBBU1NF
UlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00NDksOSArNDg3LDEyIEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkK
ICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggXiAoLXkpID09IHggXiB+
KHktMSkgPT0gfih4IF4gKHktMSkpID09IC0oKHggXiAoeS0xKSkgKyAxKQotICAgIEpTQmlnSW50
KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgIHJlc3VsdCA9IGFi
c29sdXRlWG9yKHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwg
cmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwog
fQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSwxMCArNzkyLDEyIEBAIGlubGluZSBK
U0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6YWJzb2x1dGVDb21wYXJlKEpTQmln
SW50KiB4LCBKU0JpZ0luCiAgICAgcmV0dXJuIHgtPmRpZ2l0KGkpID4geS0+ZGlnaXQoaSkgPyBD
b21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFu
OwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFi
c29sdXRlQWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29s
IHJlc3VsdFNpZ24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKwogICAgIGlmICh4LT5s
ZW5ndGgoKSA8IHktPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHks
IHgsIHJlc3VsdFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeSwgeCwg
cmVzdWx0U2lnbik7CiAKICAgICBpZiAoeC0+aXNaZXJvKCkpIHsKICAgICAgICAgQVNTRVJUKHkt
PmlzWmVybygpKTsKQEAgLTc2NCw4ICs4MDcsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwog
ICAgIGlmICh5LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdFNpZ24gPT0geC0+c2ln
bigpID8geCA6IHVuYXJ5TWludXModm0sIHgpOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSArIDEpOwotICAgIEFTU0VS
VChyZXN1bHQpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0
aExlbmd0aChleGVjLCB4LT5sZW5ndGgoKSArIDEpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBEaWdpdCBjYXJyeSA9IDA7CiAgICAgdW5zaWduZWQgaSA9
IDA7CiAgICAgZm9yICg7IGkgPCB5LT5sZW5ndGgoKTsgaSsrKSB7CkBAIC04MDYsNyArODUwLDgg
QEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWcKICAgICBpZiAoY29tcGFyaXNvblJlc3VsdCA9PSBD
b21wYXJpc29uUmVzdWx0OjpFcXVhbCkKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVa
ZXJvKHZtKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOworCiAgICAgRGlnaXQg
Ym9ycm93ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxlbmd0
aCgpOyBpKyspIHsKQEAgLTg1MSw3ICs4OTYsNyBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURp
dldpdGhEaWdpdERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSgog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgpOwogICAgIGlmIChxdW90aWVudCAhPSBu
dWxscHRyKSB7CiAgICAgICAgIGlmICgqcXVvdGllbnQgPT0gbnVsbHB0cikKLSAgICAgICAgICAg
ICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCBsZW5ndGgpOworICAg
ICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQo
dm0sIGxlbmd0aCk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsg
aS0tKSB7CiAgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXREaXYocmVtYWluZGVyLCB4LT5kaWdp
dChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKQEAgLTg2OSwxMCArOTE0LDEyIEBAIHZvaWQgSlNC
aWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBE
aWdpdCBkaXZpc29yLCBKCiAvLyBCb3RoIHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9IGFyZSBv
cHRpb25hbCwgZm9yIGNhbGxlcnMgdGhhdCBhcmUgb25seQogLy8gaW50ZXJlc3RlZCBpbiBvbmUg
b2YgdGhlbS4KIC8vIFNlZSBLbnV0aCwgVm9sdW1lIDIsIHNlY3Rpb24gNC4zLjEsIEFsZ29yaXRo
bSBELgotdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0s
IEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGll
bnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRo
QmlnSW50RGl2aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJ
bnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQog
ewogICAgIEFTU0VSVChkaXZpc29yLT5sZW5ndGgoKSA+PSAyKTsKICAgICBBU1NFUlQoZGl2aWRl
bmQtPmxlbmd0aCgpID49IGRpdmlzb3ItPmxlbmd0aCgpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIC8v
IFRoZSB1bnVzdWFsIHZhcmlhYmxlIG5hbWVzIGluc2lkZSB0aGlzIGZ1bmN0aW9uIGFyZSBjb25z
aXN0ZW50IHdpdGgKICAgICAvLyBLbnV0aCdzIGJvb2ssIGFzIHdlbGwgYXMgd2l0aCBHbydzIGlt
cGxlbWVudGF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtLgpAQCAtODg0LDExICs5MzEsMTIgQEAgdm9p
ZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50
KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICAvLyBUaGUgcXVvdGllbnQgdG8gYmUgY29tcHV0ZWQu
CiAgICAgSlNCaWdJbnQqIHEgPSBudWxscHRyOwogICAgIGlmIChxdW90aWVudCAhPSBudWxscHRy
KQotICAgICAgICBxID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbSArIDEpOworICAgICAgICBxID0g
Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChleGVjLT52bSgpLCBtICsgMSk7CiAgICAgCiAgICAg
Ly8gSW4gZWFjaCBpdGVyYXRpb24sIHtxaGF0dn0gaG9sZHMge2Rpdmlzb3J9ICoge2N1cnJlbnQg
cXVvdGllbnQgZGlnaXR9LgogICAgIC8vICJ2IiBpcyB0aGUgYm9vaydzIG5hbWUgZm9yIHtkaXZp
c29yfSwgInFoYXQiIHRoZSBjdXJyZW50IHF1b3RpZW50IGRpZ2l0LgotICAgIEpTQmlnSW50KiBx
aGF0diA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG4gKyAxKTsKKyAgICBKU0JpZ0ludCogcWhhdHYg
PSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIG4gKyAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIAogICAgIC8vIEQxLgogICAgIC8vIExlZnQtc2hpZnQg
aW5wdXRzIHNvIHRoYXQgdGhlIGRpdmlzb3IncyBNU0IgaXMgc2V0LiBUaGlzIGlzIG5lY2Vzc2Fy
eQpAQCAtODk4LDEyICs5NDYsMTUgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmln
SW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICBEaWdp
dCBsYXN0RGlnaXQgPSBkaXZpc29yLT5kaWdpdChuIC0gMSk7CiAgICAgdW5zaWduZWQgc2hpZnQg
PSBzaXplb2YobGFzdERpZ2l0KSA9PSA4ID8gY2x6NjQobGFzdERpZ2l0KSA6IGNsejMyKGxhc3RE
aWdpdCk7CiAKLSAgICBpZiAoc2hpZnQgPiAwKQotICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVM
ZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2Ft
ZVNpemVSZXN1bHQpOworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgZGl2aXNvciA9IGFi
c29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0
TW9kZTo6U2FtZVNpemVSZXN1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIH0KIAogICAgIC8vIEhvbGRzIHRoZSAoY29udGludW91c2x5IHVwZGF0
ZWQpIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBkaXZpZGVuZCwgd2hpY2gKICAgICAvLyBldmVudHVh
bGx5IGJlY29tZXMgdGhlIHJlbWFpbmRlci4KLSAgICBKU0JpZ0ludCogdSA9IGFic29sdXRlTGVm
dFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdh
eXNBZGRPbmVEaWdpdCk7CisgICAgSlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5
c0NvcHkoZXhlYywgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVE
aWdpdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIC8v
IEQyLgogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZGl2aWRlbmQncyBkaWdpdCAobGlrZSB0aGUg
ImdyYWQgc2Nob29sIiBhbGdvcml0aG0pLgpAQCAtMTAzMSwxNCArMTA4MiwxNiBAQCB2b2lkIEpT
QmlnSW50OjppbnBsYWNlUmlnaHRTaGlmdCh1bnNpZ25lZCBzaGlmdCkKIH0KIAogLy8gQWx3YXlz
IGNvcGllcyB0aGUgaW5wdXQsIGV2ZW4gd2hlbiB7c2hpZnR9ID09IDAuCi1KU0JpZ0ludCogSlNC
aWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYgdm0sIEpTQmlnSW50KiB4LCB1
bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2RlKQorSlNCaWdJbnQqIEpTQmlnSW50Ojph
YnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwg
dW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoc2hpZnQg
PCBkaWdpdEJpdHMpOwogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCiAgICAgdW5zaWduZWQg
biA9IHgtPmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IG1vZGUgPT0gTGVm
dFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQgPyBuICsgMSA6IG47Ci0gICAgSlNCaWdJbnQq
IHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXNoaWZ0
KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyBpKyspCkBAIC0xMDk1LDgg
KzExNDgsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUJpdHdpc2VPcChW
TSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgRQogCiAgICAgQVNTRVJUKG51bVBhaXJz
ID09IHN0ZDo6bWluKHhMZW5ndGgsIHlMZW5ndGgpKTsKICAgICB1bnNpZ25lZCByZXN1bHRMZW5n
dGggPSBleHRyYURpZ2l0cyA9PSBFeHRyYURpZ2l0c0hhbmRsaW5nOjpDb3B5ID8geExlbmd0aCA6
IG51bVBhaXJzOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCBy
ZXN1bHRMZW5ndGgpOwotCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhV
bmNoZWNrZWQodm0sIHJlc3VsdExlbmd0aCk7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9y
ICg7IGkgPCBudW1QYWlyczsgaSsrKQogICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIG9wKHgt
PmRpZ2l0KGkpLCB5LT5kaWdpdChpKSkpOwpAQCAtMTE0NCw3ICsxMTk2LDcgQEAgSlNCaWdJbnQq
IEpTQmlnSW50OjphYnNvbHV0ZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkK
ICAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0sIHgsIHksIEV4dHJhRGlnaXRzSGFuZGxp
bmc6OkNvcHksIFN5bW1ldHJpY09wOjpTeW1tZXRyaWMsIGRpZ2l0T3BlcmF0aW9uKTsKIH0KICAg
ICAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCog
eCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFk
ZE9uZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24p
CiB7CiAgICAgdW5zaWduZWQgaW5wdXRMZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICAvLyBUaGUg
YWRkaXRpb24gd2lsbCBvdmVyZmxvdyBpbnRvIGEgbmV3IGRpZ2l0IGlmIGFsbCBleGlzdGluZyBk
aWdpdHMgYXJlCkBAIC0xMTU4LDcgKzEyMTAsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKICAg
ICB9CiAKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBpbnB1dExlbmd0aCArIHdpbGxPdmVy
ZmxvdzsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0
TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVj
LCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIERpZ2l0IGNhcnJ5ID0gMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aW5wdXRMZW5ndGg7IGkrKykgewpAQCAtMTE3MiwxNiArMTIyNiwxOCBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2ln
bk9wdGlvbikKICAgICAgICAgQVNTRVJUKCFjYXJyeSk7CiAKICAgICByZXN1bHQtPnNldFNpZ24o
c2lnbk9wdGlvbiA9PSBTaWduT3B0aW9uOjpTaWduZWQpOwotICAgIHJldHVybiByZXN1bHQtPnJp
Z2h0VHJpbSh2bSk7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMtPnZtKCkpOwog
fQogCi0vLyBMaWtlIHRoZSBhYm92ZSwgYnV0IHlvdSBjYW4gc3BlY2lmeSB0aGF0IHRoZSBhbGxv
Y2F0ZWQgcmVzdWx0IHNob3VsZCBoYXZlCi0vLyBsZW5ndGgge3Jlc3VsdExlbmd0aH0sIHdoaWNo
IG11c3QgYmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMge3gtPmxlbmd0aCgpfS4KLUpTQmlnSW50KiBK
U0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVz
dWx0TGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShFeGVjU3RhdGUq
IGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCiB7CiAgICAgQVNTRVJU
KCF4LT5pc1plcm8oKSk7CiAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+PSB4LT5sZW5ndGgoKSk7
Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0
aCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExl
bmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgRGln
aXQgYm9ycm93ID0gMTsKQEAgLTEzNTQsOCArMTQxMCw2IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJhZGl4
KQogICAgICAgICBkbyB7CiAgICAgICAgICAgICBEaWdpdCBjaHVuazsKICAgICAgICAgICAgIGFi
c29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZy
ZXN0LCBjaHVuayk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdCk7Ci0KICAgICAgICAgICAgIGRp
dmlkZW5kID0gJnJlc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2h1
bmtDaGFyczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRp
eERpZ2l0c1tjaHVuayAlIHJhZGl4XSk7CkBAIC0xNDE0LDggKzE0NjgsNyBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAgICAgIHJldHVybiB0aGlzOwogCiAgICAg
dW5zaWduZWQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKLSAgICBKU0JpZ0ludCogdHJp
bW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5ld0xlbmd0aCk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBj
cmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdMZW5ndGgpOwogICAgIHN0ZDo6Y29weShk
YXRhU3RvcmFnZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3TGVuZ3RoLCB0cmltbWVkQmlnSW50LT5k
YXRhU3RvcmFnZSgpKTsgCiAKICAgICB0cmltbWVkQmlnSW50LT5zZXRTaWduKHRoaXMtPnNpZ24o
KSk7CkBAIC0xNDM5LDcgKzE0OTIsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9y
KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZQogICAgICAg
ICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IChiaXRzTWluICsgZGlnaXRCaXRzIC0gMSkgLyBkaWdpdEJpdHM7
CiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aCkgewotICAgICAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmgKaW5kZXggYTYyZTEzOGFkNjY1NTNjOTM5NTg2YmU2OTVhMWRlMTVhZTM4
ZTQ1MC4uYWI4ZmY1YWY1ZDY3ZjRiNjcwNDFiMjY1Y2EyNTk3ZjgwYmM1NDQ2OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC01MSw3ICs1MSw4IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRl
WmVybyhWTSYpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aChWTSYsIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiB0cnlDcmVhdGVXaXRoTGVuZ3Ro
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVXaXRoTGVuZ3RoVW5jaGVja2VkKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIHN0YXRp
YyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIGludDMyX3QgdmFsdWUpOwogICAgIHN0YXRpYyBK
U0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIHVpbnQzMl90IHZhbHVlKTsKQEAgLTEwOCwxNSArMTA5
LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBDb21wYXJpc29uUmVzdWx0IHN0YXRpYyBjb21wYXJl
VG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCog
YWRkKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IHN1YihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50
KiBhZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMg
SlNCaWdJbnQqIHN1YihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAg
IHN0YXRpYyBKU0JpZ0ludCogZGl2aWRlKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiByZW1haW5kZXIoRXhlY1N0YXRlKiwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHVuYXJ5TWludXMoVk0m
LCBKU0JpZ0ludCogeCk7CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoVk0mLCBK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9y
KFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJp
dHdpc2VYb3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0Jp
Z0ludCogYml0d2lzZUFuZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwor
ICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlWG9yKEV4ZWNTdGF0ZSos
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKIHByaXZhdGU6CiAKQEAgLTEzOSwxNCArMTQw
LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZp
c29yKFZNJiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQs
IERpZ2l0JiByZW1haW5kZXIpOwogICAgIHN0YXRpYyB2b2lkIGludGVybmFsTXVsdGlwbHlBZGQo
SlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCB1bnNpZ25lZCwg
SlNCaWdJbnQqIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgbXVsdGlwbHlBY2N1bXVsYXRlKEpT
QmlnSW50KiBtdWx0aXBsaWNhbmQsIERpZ2l0IG11bHRpcGxpZXIsIEpTQmlnSW50KiBhY2N1bXVs
YXRvciwgdW5zaWduZWQgYWNjdW11bGF0b3JJbmRleCk7Ci0gICAgc3RhdGljIHZvaWQgYWJzb2x1
dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQq
IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsKKyAg
ICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKEV4ZWNTdGF0ZSosIEpT
QmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQs
IEpTQmlnSW50KiogcmVtYWluZGVyKTsKICAgICAKICAgICBlbnVtIGNsYXNzIExlZnRTaGlmdE1v
ZGUgewogICAgICAgICBTYW1lU2l6ZVJlc3VsdCwKICAgICAgICAgQWx3YXlzQWRkT25lRGlnaXQK
ICAgICB9OwogICAgIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0U2hpZnRBbHdh
eXNDb3B5KFZNJiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsK
KyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3Rh
dGUqLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUpOwogICAgIHN0
YXRpYyBib29sIHByb2R1Y3RHcmVhdGVyVGhhbihEaWdpdCBmYWN0b3IxLCBEaWdpdCBmYWN0b3Iy
LCBEaWdpdCBoaWdoLCBEaWdpdCBsb3cpOwogCiAgICAgRGlnaXQgYWJzb2x1dGVJbnBsYWNlQWRk
KEpTQmlnSW50KiBzdW1tYW5kLCB1bnNpZ25lZCBzdGFydEluZGV4KTsKQEAgLTE3Niw4ICsxNzcs
OCBAQCBwcml2YXRlOgogICAgICAgICBVbnNpZ25lZAogICAgIH07CiAKLSAgICBzdGF0aWMgSlNC
aWdJbnQqIGFic29sdXRlQWRkT25lKFZNJiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24pOwotICAg
IHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoVk0mLCBKU0JpZ0ludCogeCwgdW5zaWdu
ZWQgcmVzdWx0TGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkT25lKEV4
ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQq
IGFic29sdXRlU3ViT25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRM
ZW5ndGgpOwogCiAgICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJzLgogICAgIHN0YXRpYyBE
aWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpOwpAQCAtMjAzLDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAgICAgSlNCaWdJbnQqIHJpZ2h0VHJpbShWTSYpOwogCiAgICAg
dm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7Ci0g
ICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSwgYm9vbCByZXN1bHRTaWduKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRk
KEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsK
ICAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5LCBib29sIHJlc3VsdFNpZ24pOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUodW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggYTA4OGFkMWNiYzIwNzhkNjIwNWFmZjBhYmFkM2RhNzNh
OTZmNWIyNi4uODM2Zjk1M2MzYTg3YzU3ZDVjNjIyZmJmNGM3MDUwOTA1MDc1MWJlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTY5LDggKzY5
LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQodm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
eworICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEpTQmln
SW50OjphZGQoY2FsbEZyYW1lLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDYxZDUzM2NmNDVmNmJkMDMyZGI5
OGViNmQ0ZTI0MDQyYWI0YTUyYjMuLjBlYTk4MjkxYmI2ODg3M2JiM2JhYjEwNDYxODYxZTkxNThh
ODdiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAg
LTM0OCw4ICszNDgsMTAgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogICAgIH0KQEAgLTM2OCw4ICszNzAsMTAgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQorICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBs
eShzdGF0ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIH0KIAogICAgICAgICB0aHJvd1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
bXVsdGlwbGljYXRpb24uIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzdkYzY2NjRiNDE2YzE2
NDY4MmM1NjUyYzI5ZjQyNmU5N2VlZTQ2ZS4uNjBkZmI2MmYyMmI1MmEwMjk5N2I3ODU0NDgyOGM0
NWU5NzAxM2Q4YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0wMSAgQ2FpbyBMaW1hICA8dGljYWlv
bGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhM
ZW5ndGggc2hvdWxkIHRocm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6
bWF4TGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA4MzYKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAq
IHN0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanM6IEFkZGVkLgorCiAyMDE4LTEx
LTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBV
KzE4MEUgaXMgbm8gbG9uZ2VyIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM5Mzg3YmEx
MDg3MzU5N2RhOTkwMTUxMGYwNzJjMTU3ZWE5ZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1vdXQtb2YtbWVtb3J5LXRlc3RzLmpzCkBAIC0wLDAgKzEsNjMgQEAK
Ky8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZHSklUPWZhbHNlIikK
KworZnVuY3Rpb24gYXNzZXJ0KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gbHNoaWZ0KHkpIHsKKyAgICBs
ZXQgb3V0ID0gMW47CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB5OyBpKyspIHsKKyAgICAgICAg
b3V0ICo9IDJuOworICAgIH0KKworICAgIHJldHVybiBvdXQ7Cit9CisKK2xldCBhID0gbHNoaWZ0
KDE2Mzg0ICogNjMpOworZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgIGEgKj0g
MTg0NDY3NDQwNzM3MDk1NTE2MTVuOworfQorCit0cnkgeworICAgIGxldCBiID0gYSArIDFuOwor
ICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhl
Y3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1l
c3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0
IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAtICgtMW4pOworICAgIGFz
c2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2Ug
PT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDog
IiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAqICgtMW4pOworICAgIGFzc2VydChm
YWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91
dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91
dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUp
OworfQorCit0cnkgeworICAgIGxldCBiID0gYSAvIGE7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hv
dWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlv
biIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9y
eSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3Ry
eSB7CisgICAgbGV0IGIgPSAtYSAmIC0xbjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhy
b3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9
IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4
cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAg
ICBsZXQgYiA9IGEgXiAtMW47CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9m
TWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChl
KSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBP
dXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354755</attachid>
            <date>2018-11-13 19:27:53 -0800</date>
            <delta_ts>2018-11-14 04:49:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181114002751.patch</filename>
            <type>text/plain</type>
            <size>39525</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZmJiMDk5MmY5NzU1OTNmOTAyMGM3MzEwOTA5MmIxMWM3ZGUxMmM2Li5jYmQ3OTk4Zjk0YWM3ZDU0
YmU2MzUzODM5NzFiODYwNDdmZTZlMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0xMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdl
IGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1c3Rp
bmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlzIGFk
ZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAgICAg
ICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNCaWdJ
bnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBt
YXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAgICAg
VGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9wZXJh
dGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0mYC4g
V2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVjYXVz
ZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRocm93
aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0bHkg
aXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAgZXhj
ZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNyZWF0
ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlk
ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdWIp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhvcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURp
dldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxlZnRT
aGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNl
T3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAg
IChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTEzICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMzgxMzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCBkZjNmZDFlNTZlZTk5ZTA2MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41
NDE3ZmIwZGZjZDI3NDAzODJmMDRlYzYyYjVmYjFmMGJkYjBmZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3
ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAg
ICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpT
QmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJ
bnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0
dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICBy
ZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0K
IAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0
PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpT
QmlnSW50Kj4ob3AyKTsKIAotICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxl
ZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKQEAgLTEzMTYsNyArMTMxNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
CiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAg
ICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAK
LSAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OworICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGV4ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJh
bmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzI3LDcgKzEzMjcs
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKgogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNl
T3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6
OmJpdHdpc2VPcihleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlOGZlMDA0NTA0MWViMzkyZGFkYzljZTQzZjQ4MTUy
MTJlMzkxZDIuLjUxMWM0MmYzZDRmMTFjMzlhOGI4NWNkMmQzNjIwNzFiMjE5ZDVkYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjc2NiwxMCAr
Mjc2Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUg
PSBvcGVyYW5kLnRvUHJpbWl0aXZlKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQo
KSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0s
IGFzQmlnSW50KHByaW1WYWx1ZSkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Ci0gICAgfQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJp
bVZhbHVlKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihleGVj
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmlu
ZGV4IDUxNjNjMzNlZTkwZmM0OGI3NTg2ZTI3ODI5MzEwZDQ0MjJmNjdjMDguLmVlNWFkYTI3OTUw
Y2U5NGMxMWI4ODUyMjVhM2JmMDI4ZTc1NmFhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNTYzLDcgKzU2Myw4IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpzdWIoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQs
IHsKICAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4
ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNjk5LDcg
KzcwMCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFu
ZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9
CkBAIC03MjAsNyArNzIxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQogICAg
IENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmJpdHdpc2VPcih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAg
ICAgICAgIH0KQEAgLTc0MSw3ICs3NDIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0
eG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmJpdHdpc2VYb3Iodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAg
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmlu
ZGV4IDRhYjVhNTIzNTNmZDFhZTkyMGQxMWJiMzRiYzA2ZWI1NGZmODhlZTcuLjI3NDI5YmI4ZTkz
YjkwNWU2ODA5MzU5M2QyNmE1YzJiMTA5NjhlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU3RydWN0dXJlKiBKU0JpZ0lu
dDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWwKIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKIHsKLSAgICBK
U0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDApOworICAgIEpTQmln
SW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMCk7CiAgICAg
cmV0dXJuIHplcm9CaWdJbnQ7CiB9CiAKQEAgLTkxLDcgKzkxLDIyIEBAIGlubGluZSBzaXplX3Qg
SlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gc2l6
ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KTsKIH0KIAotSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQorSlNCaWdJ
bnQqIEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1h
eExlbmd0aCkpIHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOwor
CisgICAgcmV0dXJuIGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7Cit9CisK
K0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChWTSYgdm0sIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBK
U0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOwogICAgIGJpZ0lu
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtMTAzLDggKzExOCw3IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAKKyAgICBKU0JpZ0ludCogYmlnSW50
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgaWYgKHZhbHVlIDwgMCkg
ewogICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAqIHN0
YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwogICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1
ZSk7CkBAIC0xMTksNyArMTMzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZN
JiB2bSwgdWludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVu
Z3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hl
Y2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4o
dmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTMwLDggKzE0NCw3IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAgICAgICAg
IHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKICAgICBpZiAoc2l6ZW9mKERpZ2l0KSA9PSA4
KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsK
LSAgICAgICAgCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7
CkBAIC0xNDEsOCArMTU0LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2
bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGJpZ0ludDsKICAgICB9CiAgICAgCi0g
ICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDIpOwotICAgIAorICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAyKTsKICAg
ICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAgICAgYm9vbCBzaWduID0gZmFsc2U7CiAgICAgaWYgKHZh
bHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbShWTSYgdm0sIGJvb2wgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRo
TGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdp
dD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMjM0LDYgKzI0Niw3IEBAIHZv
aWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1h
bmQpCiBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHgtPmlzWmVybygp
KQogICAgICAgICByZXR1cm4geDsKQEAgLTI0MSw3ICsyNTQsOCBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQog
ICAgICAgICByZXR1cm4geTsKIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHgtPmxlbmd0
aCgpICsgeS0+bGVuZ3RoKCk7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVh
dGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6
ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsrKQpAQCAtMjc3LDggKzI5MSwxMCBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OmRpdmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKIAogICAgICAgICBEaWdpdCByZW1haW5kZXI7CiAgICAgICAgIGFic29sdXRlRGl2V2l0aERp
Z2l0RGl2aXNvcih2bSwgeCwgZGl2aXNvciwgJnF1b3RpZW50LCByZW1haW5kZXIpOwotICAgIH0g
ZWxzZQotICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKHZtLCB4LCB5LCAmcXVv
dGllbnQsIG51bGxwdHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJp
Z0ludERpdmlzb3IoZXhlYywgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgfQogCiAgICAgcXVvdGllbnQt
PnNldFNpZ24ocmVzdWx0U2lnbik7CiAgICAgcmV0dXJuIHF1b3RpZW50LT5yaWdodFRyaW0odm0p
OwpAQCAtMjg4LDcgKzMwNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y29weShWTSYgdm0sIEpT
QmlnSW50KiB4KQogewogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCi0gICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7Cisg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2Vk
KHZtLCB4LT5sZW5ndGgoKSk7CiAgICAgc3RkOjpjb3B5KHgtPmRhdGFTdG9yYWdlKCksIHgtPmRh
dGFTdG9yYWdlKCkgKyB4LT5sZW5ndGgoKSwgcmVzdWx0LT5kYXRhU3RvcmFnZSgpKTsKICAgICBy
ZXN1bHQtPnNldFNpZ24oeC0+c2lnbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMxLDIz
ICszNDcsMjYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIoRXhlY1N0YXRlKiBleGVj
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQp
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAKLSAgICAgICAgcmVtYWluZGVy
ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICByZW1haW5kZXItPnNldERpZ2l0KDAs
IHJlbWFpbmRlckRpZ2l0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmln
SW50RGl2aXNvcih2bSwgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihleGVjLCB4LCB5LCBudWxscHRy
LCAmcmVtYWluZGVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgfQogCiAgICAgcmVtYWluZGVyLT5zZXRTaWduKHgtPnNpZ24oKSk7CiAgICAgcmV0
dXJuIHJlbWFpbmRlci0+cmlnaHRUcmltKHZtKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50Ojph
ZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6
OmFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24gPSB4LT5zaWduKCk7CiAKICAgICAv
LyB4ICsgeSA9PSB4ICsgeQogICAgIC8vIC14ICsgLXkgPT0gLSh4ICsgeSkKICAgICBpZiAoeFNp
Z24gPT0geS0+c2lnbigpKQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhT
aWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKIAog
ICAgIC8vIHggKyAteSA9PSB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vIC14ICsgeSA9PSB5IC0g
eCA9PSAtKHggLSB5KQpAQCAtMzU4LDEzICszNzcsMTQgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojph
ZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRl
U3ViKHZtLCB5LCB4LCAheFNpZ24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihWTSYg
dm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6c3ViKEV4
ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKICAgICBpZiAoeFNpZ24g
IT0geS0+c2lnbigpKSB7CiAgICAgICAgIC8vIHggLSAoLXkpID09IHggKyB5CiAgICAgICAgIC8v
ICgteCkgLSB5ID09IC0oeCArIHkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeCwg
eSwgeFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeCwgeSwgeFNpZ24p
OwogICAgIH0KICAgICAvLyB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vICgteCkgLSAoLXkpID09
IHkgLSB4ID09IC0oeCAtIHkpCkBAIC0zNzUsOCArMzk1LDExIEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6c3ViKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNv
bHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlQW5kKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmln
SW50OjpiaXR3aXNlQW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkKICAg
ICAgICAgcmV0dXJuIGFic29sdXRlQW5kKHZtLCB4LCB5KTsKICAgICAKQEAgLTM4NCwxMSArNDA3
LDE0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKICAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxl
bmd0aCgpLCB5LT5sZW5ndGgoKSkgKyAxOwogICAgICAgICAvLyAoLXgpICYgKC15KSA9PSB+KHgt
MSkgJiB+KHktMSkgPT0gfigoeC0xKSB8ICh5LTEpKQogICAgICAgICAvLyA9PSAtKCgoeC0xKSB8
ICh5LTEpKSArIDEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2
bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJP
bmUodm0sIHksIHktPmxlbmd0aCgpKTsKLSAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVPcih2bSwg
cmVzdWx0LCB5MSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShl
eGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKIAotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwg
U2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJP
bmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoeTEpOworICAgICAgICBy
ZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkxKTsKKyAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0
aW9uOjpTaWduZWQpOwogICAgIH0KIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2lnbigp
KTsKQEAgLTM5NywxMSArNDIzLDE1IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChW
TSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkp
OwogICAgIAogICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQotICAg
IHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgYWJzb2x1dGVTdWJPbmUodm0sIHksIHktPmxl
bmd0aCgpKSk7CisgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+
bGVuZ3RoKCkpOworICAgIEFTU0VSVCh5MSk7CisgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZt
LCB4LCB5MSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoRXhl
Y1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxl
bmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAKICAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigp
KQpAQCAtNDEwLDEwICs0NDAsMTIgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlT3IoVk0m
IHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgaWYgKHgtPnNpZ24oKSAmJiB5LT5z
aWduKCkpIHsKICAgICAgICAgLy8gKC14KSB8ICgteSkgPT0gfih4LTEpIHwgfih5LTEpID09IH4o
KHgtMSkgJiAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAxKQotICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0
aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5n
dGgoKSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4
LCByZXN1bHRMZW5ndGgpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgSlNCaWdJ
bnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBB
U1NFUlQoeTEpOwogICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZUFuZCh2bSwgcmVzdWx0LCB5MSk7
Ci0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpT
aWduZWQpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWdu
T3B0aW9uOjpTaWduZWQpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHkt
PnNpZ24oKSk7CkBAIC00MjMsMTMgKzQ1NSwxNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdp
c2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2Fw
KHgsIHkpOwogICAgIAogICAgIC8vIHggfCAoLXkpID09IHggfCB+KHktMSkgPT0gfigoeS0xKSAm
fiB4KSA9PSAtKCgoeS0xKSAmfiB4KSArIDEpCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29s
dXRlU3ViT25lKHZtLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBh
YnNvbHV0ZVN1Yk9uZShleGVjLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEFTU0VSVChyZXN1bHQp
OwogICAgIHJlc3VsdCA9IGFic29sdXRlQW5kTm90KHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVy
biBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHJl
dHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9
CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICgh
eC0+c2lnbigpICYmICF5LT5zaWduKCkpCiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhvcih2bSwg
eCwgeSk7CiAgICAgCkBAIC00MzcsOCArNDczLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0
d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgaW50IHJl
c3VsdExlbmd0aCA9IHN0ZDo6bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAgICAgICAg
IAogICAgICAgICAvLyAoLXgpIF4gKC15KSA9PSB+KHgtMSkgXiB+KHktMSkgPT0gKHgtMSkgXiAo
eS0xKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJl
c3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5
LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9u
ZShleGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAg
ICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOwor
ICAgICAgICBBU1NFUlQoeTEpOwogICAgICAgICByZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHJlc3Vs
dCwgeTEpOwogICAgIH0KICAgICBBU1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00
NDksOSArNDg3LDEyIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAog
ICAgIC8vIHggXiAoLXkpID09IHggXiB+KHktMSkgPT0gfih4IF4gKHktMSkpID09IC0oKHggXiAo
eS0xKSkgKyAxKQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwg
cmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhl
YywgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKKwogICAgIHJlc3VsdCA9IGFic29sdXRlWG9yKHZtLCByZXN1bHQsIHgpOwotICAgIHJl
dHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0
LCBTaWduT3B0aW9uOjpTaWduZWQpOwogfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1
MSwxMCArNzkyLDEyIEBAIGlubGluZSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0lu
dDo6YWJzb2x1dGVDb21wYXJlKEpTQmlnSW50KiB4LCBKU0JpZ0luCiAgICAgcmV0dXJuIHgtPmRp
Z2l0KGkpID4geS0+ZGlnaXQoaSkgPyBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENv
bXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29s
dXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24p
CitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKwogICAgIGlmICh4LT5sZW5ndGgoKSA8IHktPmxlbmd0aCgpKQotICAgICAgICBy
ZXR1cm4gYWJzb2x1dGVBZGQodm0sIHksIHgsIHJlc3VsdFNpZ24pOworICAgICAgICByZXR1cm4g
YWJzb2x1dGVBZGQoZXhlYywgeSwgeCwgcmVzdWx0U2lnbik7CiAKICAgICBpZiAoeC0+aXNaZXJv
KCkpIHsKICAgICAgICAgQVNTRVJUKHktPmlzWmVybygpKTsKQEAgLTc2NCw4ICs4MDcsOSBAQCBK
U0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlmICh5LT5pc1plcm8oKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdFNpZ24gPT0geC0+c2lnbigpID8geCA6IHVuYXJ5TWludXModm0sIHgpOwogCi0g
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5s
ZW5ndGgoKSArIDEpOwotICAgIEFTU0VSVChyZXN1bHQpOworICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCB4LT5sZW5ndGgoKSArIDEpOwor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBEaWdpdCBjYXJy
eSA9IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCB5LT5sZW5ndGgoKTsg
aSsrKSB7CkBAIC04MDYsNyArODUwLDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1
YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWcKICAgICBp
ZiAoY29tcGFyaXNvblJlc3VsdCA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbCkKICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJvKHZtKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+
bGVuZ3RoKCkpOworCiAgICAgRGlnaXQgYm9ycm93ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsK
ICAgICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBpKyspIHsKQEAgLTg1MSw3ICs4OTYsNyBAQCB2
b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgRGlnaXQgZGl2aXNvciwgSgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgp
OwogICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKSB7CiAgICAgICAgIGlmICgqcXVvdGllbnQg
PT0gbnVsbHB0cikKLSAgICAgICAgICAgICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRo
TGVuZ3RoKHZtLCBsZW5ndGgpOworICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNy
ZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAKICAgICAgICAgZm9yIChpbnQg
aSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICBEaWdpdCBxID0gZGln
aXREaXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKQEAgLTg2
OSwxMCArOTE0LDEyIEBAIHZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNv
cihWTSYgdm0sIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKCiAvLyBCb3RoIHtxdW90aWVu
dH0gYW5kIHtyZW1haW5kZXJ9IGFyZSBvcHRpb25hbCwgZm9yIGNhbGxlcnMgdGhhdCBhcmUgb25s
eQogLy8gaW50ZXJlc3RlZCBpbiBvbmUgb2YgdGhlbS4KIC8vIFNlZSBLbnV0aCwgVm9sdW1lIDIs
IHNlY3Rpb24gNC4zLjEsIEFsZ29yaXRobSBELgotdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRp
dmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQordm9pZCBK
U0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
QmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQs
IEpTQmlnSW50KiogcmVtYWluZGVyKQogewogICAgIEFTU0VSVChkaXZpc29yLT5sZW5ndGgoKSA+
PSAyKTsKICAgICBBU1NFUlQoZGl2aWRlbmQtPmxlbmd0aCgpID49IGRpdmlzb3ItPmxlbmd0aCgp
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFRoZSB1bnVzdWFsIHZhcmlhYmxlIG5hbWVzIGluc2lk
ZSB0aGlzIGZ1bmN0aW9uIGFyZSBjb25zaXN0ZW50IHdpdGgKICAgICAvLyBLbnV0aCdzIGJvb2ss
IGFzIHdlbGwgYXMgd2l0aCBHbydzIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtLgpA
QCAtODg0LDExICs5MzEsMTIgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50
RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICAvLyBUaGUg
cXVvdGllbnQgdG8gYmUgY29tcHV0ZWQuCiAgICAgSlNCaWdJbnQqIHEgPSBudWxscHRyOwogICAg
IGlmIChxdW90aWVudCAhPSBudWxscHRyKQotICAgICAgICBxID0gY3JlYXRlV2l0aExlbmd0aCh2
bSwgbSArIDEpOworICAgICAgICBxID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChleGVjLT52
bSgpLCBtICsgMSk7CiAgICAgCiAgICAgLy8gSW4gZWFjaCBpdGVyYXRpb24sIHtxaGF0dn0gaG9s
ZHMge2Rpdmlzb3J9ICoge2N1cnJlbnQgcXVvdGllbnQgZGlnaXR9LgogICAgIC8vICJ2IiBpcyB0
aGUgYm9vaydzIG5hbWUgZm9yIHtkaXZpc29yfSwgInFoYXQiIHRoZSBjdXJyZW50IHF1b3RpZW50
IGRpZ2l0LgotICAgIEpTQmlnSW50KiBxaGF0diA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG4gKyAx
KTsKKyAgICBKU0JpZ0ludCogcWhhdHYgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIG4gKyAx
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIAogICAgIC8v
IEQxLgogICAgIC8vIExlZnQtc2hpZnQgaW5wdXRzIHNvIHRoYXQgdGhlIGRpdmlzb3IncyBNU0Ig
aXMgc2V0LiBUaGlzIGlzIG5lY2Vzc2FyeQpAQCAtODk4LDEyICs5NDYsMTUgQEAgdm9pZCBKU0Jp
Z0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZp
ZGVuZCwgSlNCaWdJbnQKICAgICBEaWdpdCBsYXN0RGlnaXQgPSBkaXZpc29yLT5kaWdpdChuIC0g
MSk7CiAgICAgdW5zaWduZWQgc2hpZnQgPSBzaXplb2YobGFzdERpZ2l0KSA9PSA4ID8gY2x6NjQo
bGFzdERpZ2l0KSA6IGNsejMyKGxhc3REaWdpdCk7CiAKLSAgICBpZiAoc2hpZnQgPiAwKQotICAg
ICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpc29yLCBz
aGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQpOworICAgIGlmIChzaGlmdCA+IDAp
IHsKKyAgICAgICAgZGl2aXNvciA9IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBk
aXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KIAogICAgIC8vIEhvbGRz
IHRoZSAoY29udGludW91c2x5IHVwZGF0ZWQpIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBkaXZpZGVu
ZCwgd2hpY2gKICAgICAvLyBldmVudHVhbGx5IGJlY29tZXMgdGhlIHJlbWFpbmRlci4KLSAgICBK
U0JpZ0ludCogdSA9IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2aWRlbmQsIHNo
aWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCk7CisgICAgSlNCaWdJbnQqIHUg
PSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoZXhlYywgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0
U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKIAogICAgIC8vIEQyLgogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZGl2
aWRlbmQncyBkaWdpdCAobGlrZSB0aGUgImdyYWQgc2Nob29sIiBhbGdvcml0aG0pLgpAQCAtMTAz
MSwxNCArMTA4MiwxNiBAQCB2b2lkIEpTQmlnSW50OjppbnBsYWNlUmlnaHRTaGlmdCh1bnNpZ25l
ZCBzaGlmdCkKIH0KIAogLy8gQWx3YXlzIGNvcGllcyB0aGUgaW5wdXQsIGV2ZW4gd2hlbiB7c2hp
ZnR9ID09IDAuCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29w
eShWTSYgdm0sIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2Rl
KQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0
YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9k
ZSkKIHsKICAgICBBU1NFUlQoc2hpZnQgPCBkaWdpdEJpdHMpOwogICAgIEFTU0VSVCgheC0+aXNa
ZXJvKCkpOwogCiAgICAgdW5zaWduZWQgbiA9IHgtPmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHJl
c3VsdExlbmd0aCA9IG1vZGUgPT0gTGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQgPyBu
ICsgMSA6IG47Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJl
c3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgo
ZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBpZiAoIXNoaWZ0KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuOyBpKyspCkBAIC0xMDk1LDggKzExNDgsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmln
SW50OjphYnNvbHV0ZUJpdHdpc2VPcChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwg
RQogCiAgICAgQVNTRVJUKG51bVBhaXJzID09IHN0ZDo6bWluKHhMZW5ndGgsIHlMZW5ndGgpKTsK
ICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBleHRyYURpZ2l0cyA9PSBFeHRyYURpZ2l0c0hh
bmRsaW5nOjpDb3B5ID8geExlbmd0aCA6IG51bVBhaXJzOwotICAgIEpTQmlnSW50KiByZXN1bHQg
PSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOwotCisgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIHJlc3VsdExlbmd0aCk7CiAgICAg
dW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCBudW1QYWlyczsgaSsrKQogICAgICAgICBy
ZXN1bHQtPnNldERpZ2l0KGksIG9wKHgtPmRpZ2l0KGkpLCB5LT5kaWdpdChpKSkpOwpAQCAtMTE0
NCw3ICsxMTk2LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVhvcihWTSYgdm0sIEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0s
IHgsIHksIEV4dHJhRGlnaXRzSGFuZGxpbmc6OkNvcHksIFN5bW1ldHJpY09wOjpTeW1tZXRyaWMs
IGRpZ2l0T3BlcmF0aW9uKTsKIH0KICAgICAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVB
ZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQorSlNCaWdJ
bnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9uZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4
LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCiB7CiAgICAgdW5zaWduZWQgaW5wdXRMZW5ndGggPSB4
LT5sZW5ndGgoKTsKICAgICAvLyBUaGUgYWRkaXRpb24gd2lsbCBvdmVyZmxvdyBpbnRvIGEgbmV3
IGRpZ2l0IGlmIGFsbCBleGlzdGluZyBkaWdpdHMgYXJlCkBAIC0xMTU4LDcgKzEyMTAsOSBAQCBK
U0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNp
Z25PcHRpb24gc2lnbk9wdGlvbikKICAgICB9CiAKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGgg
PSBpbnB1dExlbmd0aCArIHdpbGxPdmVyZmxvdzsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3Jl
YXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
dHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIERpZ2l0IGNhcnJ5ID0gMTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5wdXRMZW5ndGg7IGkrKykgewpAQCAtMTE3MiwxNiAr
MTIyNiwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKICAgICAgICAgQVNTRVJUKCFjYXJyeSk7
CiAKICAgICByZXN1bHQtPnNldFNpZ24oc2lnbk9wdGlvbiA9PSBTaWduT3B0aW9uOjpTaWduZWQp
OwotICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CisgICAgcmV0dXJuIHJlc3VsdC0+
cmlnaHRUcmltKGV4ZWMtPnZtKCkpOwogfQogCi0vLyBMaWtlIHRoZSBhYm92ZSwgYnV0IHlvdSBj
YW4gc3BlY2lmeSB0aGF0IHRoZSBhbGxvY2F0ZWQgcmVzdWx0IHNob3VsZCBoYXZlCi0vLyBsZW5n
dGgge3Jlc3VsdExlbmd0aH0sIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMge3gt
Pmxlbmd0aCgpfS4KLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZtLCBK
U0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50Ojph
YnNvbHV0ZVN1Yk9uZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1
bHRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CiAgICAgQVNTRVJUKHJlc3Vs
dExlbmd0aCA+PSB4LT5sZW5ndGgoKSk7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdp
dGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU0JpZ0ludCog
cmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0geC0+bGVuZ3RoKCk7CiAgICAgRGlnaXQgYm9ycm93ID0gMTsKQEAgLTEzNTQsOCArMTQxMCw2
IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIHgsIHVuc2lnbmVkIHJhZGl4KQogICAgICAgICBkbyB7CiAgICAgICAgICAgICBEaWdp
dCBjaHVuazsKICAgICAgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRp
dmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVuayk7Ci0gICAgICAgICAgICBBU1NFUlQo
cmVzdCk7Ci0KICAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2h1bmtDaGFyczsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
cmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tjaHVuayAlIHJhZGl4XSk7CkBAIC0xNDE0
LDggKzE0NjgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAg
ICAgIHJldHVybiB0aGlzOwogCiAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4
ICsgMTsKLSAgICBKU0JpZ0ludCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0s
IG5ld0xlbmd0aCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgSlNC
aWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdM
ZW5ndGgpOwogICAgIHN0ZDo6Y29weShkYXRhU3RvcmFnZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3
TGVuZ3RoLCB0cmltbWVkQmlnSW50LT5kYXRhU3RvcmFnZSgpKTsgCiAKICAgICB0cmltbWVkQmln
SW50LT5zZXRTaWduKHRoaXMtPnNpZ24oKSk7CkBAIC0xNDM5LDcgKzE0OTIsNyBAQCBKU0JpZ0lu
dCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25l
ZCByYWRpeCwgdW5zaWduZQogICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCBy
b3VuZGluZyB1cC4KICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IChiaXRzTWluICsgZGln
aXRCaXRzIC0gMSkgLyBkaWdpdEJpdHM7CiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExl
bmd0aCkgewotICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3Jl
YXRlV2l0aExlbmd0aCh2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggYTYyZTEzOGFkNjY1
NTNjOTM5NTg2YmU2OTVhMWRlMTVhZTM4ZTQ1MC4uYWI4ZmY1YWY1ZDY3ZjRiNjcwNDFiMjY1Y2Ey
NTk3ZjgwYmM1NDQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5o
CkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAg
IHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhWTSYpOwotICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlV2l0aExlbmd0aChWTSYsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmln
SW50KiB0cnlDcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKFZNJiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIAogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIGludDMy
X3QgdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIHVpbnQzMl90
IHZhbHVlKTsKQEAgLTEwOCwxNSArMTA5LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBDb21wYXJp
c29uUmVzdWx0IHN0YXRpYyBjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KTsK
IAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWRkKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHN1YihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBhZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHN1YihFeGVjU3RhdGUqLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogZGl2aWRlKEV4ZWNTdGF0
ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiByZW1h
aW5kZXIoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMg
SlNCaWdJbnQqIHVuYXJ5TWludXMoVk0mLCBKU0JpZ0ludCogeCk7CiAKLSAgICBzdGF0aWMgSlNC
aWdJbnQqIGJpdHdpc2VBbmQoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0
YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsK
LSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VYb3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZUFuZChFeGVjU3RhdGUqLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKEV4
ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50
KiBiaXR3aXNlWG9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKIHBy
aXZhdGU6CiAKQEAgLTEzOSwxNCArMTQwLDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
YWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZNJiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlz
b3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpOwogICAgIHN0YXRpYyB2
b2lkIGludGVybmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBE
aWdpdCBzdW1tYW5kLCB1bnNpZ25lZCwgSlNCaWdJbnQqIHJlc3VsdCk7CiAgICAgc3RhdGljIHZv
aWQgbXVsdGlwbHlBY2N1bXVsYXRlKEpTQmlnSW50KiBtdWx0aXBsaWNhbmQsIERpZ2l0IG11bHRp
cGxpZXIsIEpTQmlnSW50KiBhY2N1bXVsYXRvciwgdW5zaWduZWQgYWNjdW11bGF0b3JJbmRleCk7
Ci0gICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYsIEpTQmln
SW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpT
QmlnSW50KiogcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJ
bnREaXZpc29yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlz
b3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsKICAgICAKICAg
ICBlbnVtIGNsYXNzIExlZnRTaGlmdE1vZGUgewogICAgICAgICBTYW1lU2l6ZVJlc3VsdCwKICAg
ICAgICAgQWx3YXlzQWRkT25lRGlnaXQKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBKU0JpZ0lu
dCogYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KFZNJiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVk
IHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVm
dFNoaWZ0QWx3YXlzQ29weShFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQs
IExlZnRTaGlmdE1vZGUpOwogICAgIHN0YXRpYyBib29sIHByb2R1Y3RHcmVhdGVyVGhhbihEaWdp
dCBmYWN0b3IxLCBEaWdpdCBmYWN0b3IyLCBEaWdpdCBoaWdoLCBEaWdpdCBsb3cpOwogCiAgICAg
RGlnaXQgYWJzb2x1dGVJbnBsYWNlQWRkKEpTQmlnSW50KiBzdW1tYW5kLCB1bnNpZ25lZCBzdGFy
dEluZGV4KTsKQEAgLTE3Niw4ICsxNzcsOCBAQCBwcml2YXRlOgogICAgICAgICBVbnNpZ25lZAog
ICAgIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkT25lKFZNJiwgSlNCaWdJ
bnQqIHgsIFNpZ25PcHRpb24pOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUo
Vk0mLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNC
aWdJbnQqIGFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBTaWduT3B0aW9u
KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViT25lKEV4ZWNTdGF0ZSosIEpTQmln
SW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpOwogCiAgICAgLy8gRGlnaXQgYXJpdGhtZXRp
YyBoZWxwZXJzLgogICAgIHN0YXRpYyBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBE
aWdpdCYgY2FycnkpOwpAQCAtMjAzLDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgSlNCaWdJbnQq
IHJpZ2h0VHJpbShWTSYpOwogCiAgICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVs
dGlwbGllciwgRGlnaXQgcGFydCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChW
TSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKKyAgICBzdGF0
aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSwgYm9vbCByZXN1bHRTaWduKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3Vi
KFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOwogICAgIAog
ICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggYTA4OGFkMWNi
YzIwNzhkNjIwNWFmZjBhYmFkM2RhNzNhOTZmNWIyNi4uODM2Zjk1M2MzYTg3YzU3ZDVjNjIyZmJm
NGM3MDUwOTA1MDc1MWJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKQEAgLTY5LDggKzY5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRk
U2xvd0Nhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmln
SW50OjphZGQodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoY2FsbEZyYW1lLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
KyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJf
cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmlu
ZGV4IDYxZDUzM2NmNDVmNmJkMDMyZGI5OGViNmQ0ZTI0MDQyYWI0YTUyYjMuLjBlYTk4MjkxYmI2
ODg3M2JiM2JhYjEwNDYxODYxZTkxNThhODdiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTM0OCw4ICszNDgsMTAgQEAgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3ViKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogICAg
IH0KQEAgLTM2OCw4ICszNzAsMTAgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKQorICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgeworICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShzdGF0ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIH0K
IAogICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYjgwYjg3ZDYyNDRjYzVkMGRjZDAxOGIwNTQ0MWI3ZDU1NjdiMWMxYi4uNzFmOGJl
NzkwYjJmYjE1ZDJhMmE5NGMzYzhiYTg1ZmU2OTA0NDA1YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0x
MS0xMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0JpZ0lu
dF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRocm93IHdoZW4gbGVuZ3RoIGlz
IGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAgICAgICBSZXZpZXdlZCBieSBT
YWFtIEJhcmF0aS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVz
dHMuanM6IEFkZGVkLgorCiAyMDE4LTExLTEzICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzgxMzIuCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWRjZmQ2Zjg0Y2MyNmU5ZGI5NDlhYWVjZWUzNmJiMmFjOTI2NzEzOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpAQCAtMCww
ICsxLDYzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJ
VD1mYWxzZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGxzaGlmdCh5
KSB7CisgICAgbGV0IG91dCA9IDFuOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeTsgaSsrKSB7
CisgICAgICAgIG91dCAqPSAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZu
OworICAgIH0KKworICAgIHJldHVybiBvdXQ7Cit9CisKK2xldCBhID0gbHNoaWZ0KDgwNjQpOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgIGEgKj0gMTg0NDY3NDQwNzM3MDk1
NTE2MTVuOworfQorCit0cnkgeworICAgIGxldCBiID0gYSArIDFuOworICAgIGFzc2VydChmYWxz
ZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBv
ZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOwor
fQorCit0cnkgeworICAgIGxldCBiID0gYSAtICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNo
b3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRp
b24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1v
cnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0
cnkgeworICAgIGxldCBiID0gYSAqICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0
aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsK
K30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAi
RXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgewor
ICAgIGxldCBiID0gYSAvIGE7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9m
TWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChl
KSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBP
dXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAgbGV0IGIg
PSAtYSAmIC0xbjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlF
cnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAg
ICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVt
b3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgXiAt
MW47CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1
dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0
KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9y
LCBidXQgZ290OiAiICsgZSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354797</attachid>
            <date>2018-11-14 04:50:00 -0800</date>
            <delta_ts>2018-11-18 16:10:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181114094958.patch</filename>
            <type>text/plain</type>
            <size>39923</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZmJiMDk5MmY5NzU1OTNmOTAyMGM3MzEwOTA5MmIxMWM3ZGUxMmM2Li5jMmY4ZTg5YmQ5NDkwYTYy
NzY3ZDcyOGFlZDgwMjYzNGVkY2Y4YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0xNCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdl
IGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1c3Rp
bmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlzIGFk
ZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAgICAg
ICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNCaWdJ
bnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBt
YXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAgICAg
VGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9wZXJh
dGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0mYC4g
V2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVjYXVz
ZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRocm93
aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0bHkg
aXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAgZXhj
ZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNyZWF0
ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlk
ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnVuYXJ5TWludXMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVyKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdWIp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpiaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZVhvcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjphYnNvbHV0ZVN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURp
dldpdGhEaWdpdERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZUxlZnRT
aGlmdEFsd2F5c0NvcHkpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVCaXR3aXNl
T3ApOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVXaXRoTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAg
IChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorCiAyMDE4LTExLTEzICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMzgxMzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCBkZjNmZDFlNTZlZTk5ZTA2MzlmYmIzODllOGE1NWU2ZDZlMjFiMjgwLi41
NDE3ZmIwZGZjZDI3NDAzODJmMDRlYzYyYjVmYjFmMGJkYjBmZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZUFuZCgqdm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTM3Niw3
ICszNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
T3IoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogCiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAg
ICB9CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U3ViQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpT
QmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJ
bnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0
dXJuIEpTQmlnSW50OjpzdWIoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICBy
ZXR1cm4gSlNCaWdJbnQ6OnN1YihleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0K
IAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKQEAgLTEzMDUsNyArMTMwNSw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIG9wMSwgSlNDZWxsCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0
PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpT
QmlnSW50Kj4ob3AyKTsKIAotICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZCgqdm0sIGxl
ZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKQEAgLTEzMTYsNyArMTMxNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25BZGRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
CiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAg
ICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKICAgICAK
LSAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZCgqdm0sIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OworICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGV4ZWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJh
bmQpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzI3LDcgKzEzMjcs
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKgogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNl
T3IoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6
OmJpdHdpc2VPcihleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlOGZlMDA0NTA0MWViMzkyZGFkYzljZTQzZjQ4MTUy
MTJlMzkxZDIuLjUxMWM0MmYzZDRmMTFjMzlhOGI4NWNkMmQzNjIwNzFiMjE5ZDVkYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjc2NiwxMCAr
Mjc2Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUg
PSBvcGVyYW5kLnRvUHJpbWl0aXZlKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQo
KSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0s
IGFzQmlnSW50KHByaW1WYWx1ZSkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Ci0gICAgfQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJp
bVZhbHVlKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihleGVj
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmlu
ZGV4IDUxNjNjMzNlZTkwZmM0OGI3NTg2ZTI3ODI5MzEwZDQ0MjJmNjdjMDguLmVlNWFkYTI3OTUw
Y2U5NGMxMWI4ODUyMjVhM2JmMDI4ZTc1NmFhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNTYzLDcgKzU2Myw4IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpzdWIodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpzdWIoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQs
IHsKICAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGV4
ZWMsIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIH0pOwpAQCAtNjk5LDcg
KzcwMCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFu
ZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9
CkBAIC03MjAsNyArNzIxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQogICAg
IENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmJpdHdpc2VPcih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiAg
ICAgICAgIH0KQEAgLTc0MSw3ICs3NDIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0
eG9yKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmJpdHdpc2VYb3Iodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAg
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmlu
ZGV4IDRhYjVhNTIzNTNmZDFhZTkyMGQxMWJiMzRiYzA2ZWI1NGZmODhlZTcuLmQ4ODNhZDNjODBi
N2M2MGY4OGQ4MDM3MGM4NWNmNWY5YmViYzFlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU3RydWN0dXJlKiBKU0JpZ0lu
dDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWwKIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKIHsKLSAgICBK
U0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDApOworICAgIEpTQmln
SW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMCk7CiAgICAg
cmV0dXJuIHplcm9CaWdJbnQ7CiB9CiAKQEAgLTkxLDcgKzkxLDIyIEBAIGlubGluZSBzaXplX3Qg
SlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gc2l6
ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KTsKIH0KIAotSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQorSlNCaWdJ
bnQqIEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1h
eExlbmd0aCkpIHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOwor
CisgICAgcmV0dXJuIGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7Cit9CisK
K0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChWTSYgdm0sIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBK
U0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOwogICAgIGJpZ0lu
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtMTAzLDggKzExOCw3IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsKLSAgICAKKyAgICBKU0JpZ0ludCogYmlnSW50
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgaWYgKHZhbHVlIDwgMCkg
ewogICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAqIHN0
YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwogICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1
ZSk7CkBAIC0xMTksNyArMTMzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZN
JiB2bSwgdWludDMyX3QgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVu
Z3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hl
Y2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4o
dmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMTMwLDggKzE0NCw3IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAgICAgICAg
IHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKICAgICBpZiAoc2l6ZW9mKERpZ2l0KSA9PSA4
KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAxKTsK
LSAgICAgICAgCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5j
aGVja2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KC0odmFsdWUgKyAxKSkgKyAxKSk7CiAgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7
CkBAIC0xNDEsOCArMTU0LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2
bSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGJpZ0ludDsKICAgICB9CiAgICAgCi0g
ICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDIpOwotICAgIAorICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAyKTsKICAg
ICB1aW50NjRfdCB0ZW1wVmFsdWU7CiAgICAgYm9vbCBzaWduID0gZmFsc2U7CiAgICAgaWYgKHZh
bHVlIDwgMCkgewpAQCAtMTY2LDcgKzE3OCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbShWTSYgdm0sIGJvb2wgdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVplcm8odm0pOwogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRo
TGVuZ3RoKHZtLCAxKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCh2bSwgMSk7CiAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdp
dD4odmFsdWUpKTsKICAgICByZXR1cm4gYmlnSW50OwogfQpAQCAtMjM0LDYgKzI0Niw3IEBAIHZv
aWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1h
bmQpCiBKU0JpZ0ludCogSlNCaWdJbnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHgtPmlzWmVybygp
KQogICAgICAgICByZXR1cm4geDsKQEAgLTI0MSw3ICsyNTQsOCBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQog
ICAgICAgICByZXR1cm4geTsKIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHgtPmxlbmd0
aCgpICsgeS0+bGVuZ3RoKCk7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVh
dGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6
ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsrKQpAQCAtMjc3LDggKzI5MSwxMCBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OmRpdmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKIAogICAgICAgICBEaWdpdCByZW1haW5kZXI7CiAgICAgICAgIGFic29sdXRlRGl2V2l0aERp
Z2l0RGl2aXNvcih2bSwgeCwgZGl2aXNvciwgJnF1b3RpZW50LCByZW1haW5kZXIpOwotICAgIH0g
ZWxzZQotICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKHZtLCB4LCB5LCAmcXVv
dGllbnQsIG51bGxwdHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJp
Z0ludERpdmlzb3IoZXhlYywgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgfQogCiAgICAgcXVvdGllbnQt
PnNldFNpZ24ocmVzdWx0U2lnbik7CiAgICAgcmV0dXJuIHF1b3RpZW50LT5yaWdodFRyaW0odm0p
OwpAQCAtMjg4LDcgKzMwNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y29weShWTSYgdm0sIEpT
QmlnSW50KiB4KQogewogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCi0gICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7Cisg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2Vk
KHZtLCB4LT5sZW5ndGgoKSk7CiAgICAgc3RkOjpjb3B5KHgtPmRhdGFTdG9yYWdlKCksIHgtPmRh
dGFTdG9yYWdlKCkgKyB4LT5sZW5ndGgoKSwgcmVzdWx0LT5kYXRhU3RvcmFnZSgpKTsKICAgICBy
ZXN1bHQtPnNldFNpZ24oeC0+c2lnbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMxLDIz
ICszNDcsMjYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIoRXhlY1N0YXRlKiBleGVj
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQp
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAKLSAgICAgICAgcmVtYWluZGVy
ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICByZW1haW5kZXItPnNldERpZ2l0KDAs
IHJlbWFpbmRlckRpZ2l0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmln
SW50RGl2aXNvcih2bSwgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihleGVjLCB4LCB5LCBudWxscHRy
LCAmcmVtYWluZGVyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgfQogCiAgICAgcmVtYWluZGVyLT5zZXRTaWduKHgtPnNpZ24oKSk7CiAgICAgcmV0
dXJuIHJlbWFpbmRlci0+cmlnaHRUcmltKHZtKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50Ojph
ZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6
OmFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24gPSB4LT5zaWduKCk7CiAKICAgICAv
LyB4ICsgeSA9PSB4ICsgeQogICAgIC8vIC14ICsgLXkgPT0gLSh4ICsgeSkKICAgICBpZiAoeFNp
Z24gPT0geS0+c2lnbigpKQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhT
aWduKTsKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKIAog
ICAgIC8vIHggKyAteSA9PSB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vIC14ICsgeSA9PSB5IC0g
eCA9PSAtKHggLSB5KQpAQCAtMzU4LDEzICszNzcsMTQgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojph
ZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRl
U3ViKHZtLCB5LCB4LCAheFNpZ24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihWTSYg
dm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6c3ViKEV4
ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKICAgICBpZiAoeFNpZ24g
IT0geS0+c2lnbigpKSB7CiAgICAgICAgIC8vIHggLSAoLXkpID09IHggKyB5CiAgICAgICAgIC8v
ICgteCkgLSB5ID09IC0oeCArIHkpCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZCh2bSwgeCwg
eSwgeFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeCwgeSwgeFNpZ24p
OwogICAgIH0KICAgICAvLyB4IC0geSA9PSAtKHkgLSB4KQogICAgIC8vICgteCkgLSAoLXkpID09
IHkgLSB4ID09IC0oeCAtIHkpCkBAIC0zNzUsMjAgKzM5NSwyOCBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OnN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICByZXR1cm4gYWJz
b2x1dGVTdWIodm0sIHksIHgsICF4U2lnbik7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0
d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZUFuZChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKIHsKLSAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKQorICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkgeworICAgICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZUFuZCh2bSwgeCwgeSk7CisgICAgfQogICAgIAog
ICAgIGlmICh4LT5zaWduKCkgJiYgeS0+c2lnbigpKSB7CiAgICAgICAgIGludCByZXN1bHRMZW5n
dGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkpICsgMTsKICAgICAgICAgLy8g
KC14KSAmICgteSkgPT0gfih4LTEpICYgfih5LTEpID09IH4oKHgtMSkgfCAoeS0xKSkKICAgICAg
ICAgLy8gPT0gLSgoKHgtMSkgfCAoeS0xKSkgKyAxKQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50
KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7Ci0gICAgICAgIHJlc3Vs
dCA9IGFic29sdXRlT3Iodm0sIHJlc3VsdCwgeTEpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICAgICAgcmV0dXJuIGFic29sdXRl
QWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAgICAgIEpTQmlnSW50
KiB5MSA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IGFic29s
dXRlT3Iodm0sIHJlc3VsdCwgeTEpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAg
IHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7
CiAgICAgfQogCiAgICAgQVNTRVJUKHgtPnNpZ24oKSAhPSB5LT5zaWduKCkpOwpAQCAtMzk3LDIz
ICs0MjUsMzUgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKFZNJiB2bSwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAgICAg
Ly8geCAmICgteSkgPT0geCAmIH4oeS0xKSA9PSB4ICYgfih5LTEpCi0gICAgcmV0dXJuIGFic29s
dXRlQW5kTm90KHZtLCB4LCBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpKTsKKyAg
ICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5sZW5ndGgoKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgcmV0dXJuIGFic29s
dXRlQW5kTm90KHZtLCB4LCB5MSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9y
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50Ojpi
aXR3aXNlT3IoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5n
dGgoKSwgeS0+bGVuZ3RoKCkpOwogCi0gICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkK
KyAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigpKSB7CisgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICAgICAgcmV0dXJuIGFic29sdXRlT3Iodm0sIHgsIHkpOworICAgIH0KICAgICAK
ICAgICBpZiAoeC0+c2lnbigpICYmIHktPnNpZ24oKSkgewogICAgICAgICAvLyAoLXgpIHwgKC15
KSA9PSB+KHgtMSkgfCB+KHktMSkgPT0gfigoeC0xKSAmICh5LTEpKQogICAgICAgICAvLyA9PSAt
KCgoeC0xKSAmICh5LTEpKSArIDEpCi0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0
ZVN1Yk9uZSh2bSwgeCwgcmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJz
b2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHgsIHJlc3VsdExlbmd0aCk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBh
YnNvbHV0ZVN1Yk9uZShleGVjLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZUFuZCh2
bSwgcmVzdWx0LCB5MSk7Ci0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0
LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKKworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBh
YnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiAgICAgfQog
ICAgIAogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTQyMywyMiArNDYz
LDM0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKFZNJiB2bSwgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAgICAgLy8geCB8
ICgteSkgPT0geCB8IH4oeS0xKSA9PSB+KCh5LTEpICZ+IHgpID09IC0oKCh5LTEpICZ+IHgpICsg
MSkKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHksIHJlc3VsdExl
bmd0aCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHJl
c3VsdExlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAg
ICAgcmVzdWx0ID0gYWJzb2x1dGVBbmROb3Qodm0sIHJlc3VsdCwgeCk7Ci0gICAgcmV0dXJuIGFi
c29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisKKyAgICBzY29w
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGV4ZWMsIHJlc3VsdCwgU2ln
bk9wdGlvbjo6U2lnbmVkKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKFZN
JiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlWG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogewotICAg
IGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIXgt
PnNpZ24oKSAmJiAheS0+c2lnbigpKSB7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAg
ICAgcmV0dXJuIGFic29sdXRlWG9yKHZtLCB4LCB5KTsKKyAgICB9CiAgICAgCiAgICAgaWYgKHgt
PnNpZ24oKSAmJiB5LT5zaWduKCkpIHsKICAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHN0ZDo6
bWF4KHgtPmxlbmd0aCgpLCB5LT5sZW5ndGgoKSk7CiAgICAgICAgIAogICAgICAgICAvLyAoLXgp
IF4gKC15KSA9PSB+KHgtMSkgXiB+KHktMSkgPT0gKHgtMSkgXiAoeS0xKQotICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7Ci0gICAg
ICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgoKSk7Cisg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCByZXN1bHRM
ZW5ndGgpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAg
ICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhvcih2bSwgcmVzdWx0
LCB5MSk7CiAgICAgfQogICAgIEFTU0VSVCh4LT5zaWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTQ0
OSw5ICs1MDEsMTIgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlWG9yKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCiAg
ICAgLy8geCBeICgteSkgPT0geCBeIH4oeS0xKSA9PSB+KHggXiAoeS0xKSkgPT0gLSgoeCBeICh5
LTEpKSArIDEpCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB5LCBy
ZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVj
LCB5LCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOworCiAgICAgcmVzdWx0ID0gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeCk7Ci0gICAgcmV0
dXJuIGFic29sdXRlQWRkT25lKHZtLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CisgICAg
c2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQs
IFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNzUx
LDEwICs4MDYsMTIgQEAgaW5saW5lIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50
OjphYnNvbHV0ZUNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW4KICAgICByZXR1cm4geC0+ZGln
aXQoaSkgPiB5LT5kaWdpdChpKSA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29t
cGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1
dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikK
K0pTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbikKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworCiAgICAgaWYgKHgtPmxlbmd0aCgpIDwgeS0+bGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBhYnNvbHV0ZUFkZCh2bSwgeSwgeCwgcmVzdWx0U2lnbik7CisgICAgICAgIHJldHVybiBh
YnNvbHV0ZUFkZChleGVjLCB5LCB4LCByZXN1bHRTaWduKTsKIAogICAgIGlmICh4LT5pc1plcm8o
KSkgewogICAgICAgICBBU1NFUlQoeS0+aXNaZXJvKCkpOwpAQCAtNzY0LDggKzgyMSw5IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGQoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJ
bnQqIHksIGJvb2wgcmVzdWx0U2lnCiAgICAgaWYgKHktPmlzWmVybygpKQogICAgICAgICByZXR1
cm4gcmVzdWx0U2lnbiA9PSB4LT5zaWduKCkgPyB4IDogdW5hcnlNaW51cyh2bSwgeCk7CiAKLSAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgodm0sIHgtPmxl
bmd0aCgpICsgMSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHgtPmxlbmd0aCgpICsgMSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIERpZ2l0IGNhcnJ5
ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBp
KyspIHsKQEAgLTgwNiw3ICs4NjQsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlU3Vi
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlm
IChjb21wYXJpc29uUmVzdWx0ID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsKQogICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSk7CisgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4LT5s
ZW5ndGgoKSk7CisKICAgICBEaWdpdCBib3Jyb3cgPSAwOwogICAgIHVuc2lnbmVkIGkgPSAwOwog
ICAgIGZvciAoOyBpIDwgeS0+bGVuZ3RoKCk7IGkrKykgewpAQCAtODUxLDcgKzkxMCw3IEBAIHZv
aWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50
KiB4LCBEaWdpdCBkaXZpc29yLCBKCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7
CiAgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKICAgICAgICAgaWYgKCpxdW90aWVudCA9
PSBudWxscHRyKQotICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhM
ZW5ndGgodm0sIGxlbmd0aCk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3Jl
YXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsKIAogICAgICAgICBmb3IgKGludCBp
ID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdp
dERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOwpAQCAtODY5
LDEwICs5MjgsMTIgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29y
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEoKIC8vIEJvdGgge3F1b3RpZW50
fSBhbmQge3JlbWFpbmRlcn0gYXJlIG9wdGlvbmFsLCBmb3IgY2FsbGVycyB0aGF0IGFyZSBvbmx5
CiAvLyBpbnRlcmVzdGVkIGluIG9uZSBvZiB0aGVtLgogLy8gU2VlIEtudXRoLCBWb2x1bWUgMiwg
c2VjdGlvbiA0LjMuMSwgQWxnb3JpdGhtIEQuCi12b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldp
dGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2
aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpCit2b2lkIEpT
QmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwg
SlNCaWdJbnQqKiByZW1haW5kZXIpCiB7CiAgICAgQVNTRVJUKGRpdmlzb3ItPmxlbmd0aCgpID49
IDIpOwogICAgIEFTU0VSVChkaXZpZGVuZC0+bGVuZ3RoKCkgPj0gZGl2aXNvci0+bGVuZ3RoKCkp
OworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gVGhlIHVudXN1YWwgdmFyaWFibGUgbmFtZXMgaW5zaWRl
IHRoaXMgZnVuY3Rpb24gYXJlIGNvbnNpc3RlbnQgd2l0aAogICAgIC8vIEtudXRoJ3MgYm9vaywg
YXMgd2VsbCBhcyB3aXRoIEdvJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBhbGdvcml0aG0uCkBA
IC04ODQsMTEgKzk0NSwxMiBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnRE
aXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludAogICAgIC8vIFRoZSBx
dW90aWVudCB0byBiZSBjb21wdXRlZC4KICAgICBKU0JpZ0ludCogcSA9IG51bGxwdHI7CiAgICAg
aWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCi0gICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoKHZt
LCBtICsgMSk7CisgICAgICAgIHEgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKGV4ZWMtPnZt
KCksIG0gKyAxKTsKICAgICAKICAgICAvLyBJbiBlYWNoIGl0ZXJhdGlvbiwge3FoYXR2fSBob2xk
cyB7ZGl2aXNvcn0gKiB7Y3VycmVudCBxdW90aWVudCBkaWdpdH0uCiAgICAgLy8gInYiIGlzIHRo
ZSBib29rJ3MgbmFtZSBmb3Ige2Rpdmlzb3J9LCAicWhhdCIgdGhlIGN1cnJlbnQgcXVvdGllbnQg
ZGlnaXQuCi0gICAgSlNCaWdJbnQqIHFoYXR2ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbiArIDEp
OworICAgIEpTQmlnSW50KiBxaGF0diA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgbiArIDEp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgCiAgICAgLy8g
RDEuCiAgICAgLy8gTGVmdC1zaGlmdCBpbnB1dHMgc28gdGhhdCB0aGUgZGl2aXNvcidzIE1TQiBp
cyBzZXQuIFRoaXMgaXMgbmVjZXNzYXJ5CkBAIC04OTgsMTIgKzk2MCwxNSBAQCB2b2lkIEpTQmln
SW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiB2bSwgSlNCaWdJbnQqIGRpdmlk
ZW5kLCBKU0JpZ0ludAogICAgIERpZ2l0IGxhc3REaWdpdCA9IGRpdmlzb3ItPmRpZ2l0KG4gLSAx
KTsKICAgICB1bnNpZ25lZCBzaGlmdCA9IHNpemVvZihsYXN0RGlnaXQpID09IDggPyBjbHo2NChs
YXN0RGlnaXQpIDogY2x6MzIobGFzdERpZ2l0KTsKIAotICAgIGlmIChzaGlmdCA+IDApCi0gICAg
ICAgIGRpdmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkodm0sIGRpdmlzb3IsIHNo
aWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7CisgICAgaWYgKHNoaWZ0ID4gMCkg
eworICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KGV4ZWMsIGRp
dmlzb3IsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpTYW1lU2l6ZVJlc3VsdCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQogCiAgICAgLy8gSG9sZHMg
dGhlIChjb250aW51b3VzbHkgdXBkYXRlZCkgcmVtYWluaW5nIHBhcnQgb2YgdGhlIGRpdmlkZW5k
LCB3aGljaAogICAgIC8vIGV2ZW50dWFsbHkgYmVjb21lcyB0aGUgcmVtYWluZGVyLgotICAgIEpT
QmlnSW50KiB1ID0gYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpZGVuZCwgc2hp
ZnQsIExlZnRTaGlmdE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0KTsKKyAgICBKU0JpZ0ludCogdSA9
IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBkaXZpZGVuZCwgc2hpZnQsIExlZnRT
aGlmdE1vZGU6OkFsd2F5c0FkZE9uZURpZ2l0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogCiAgICAgLy8gRDIuCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBkaXZp
ZGVuZCdzIGRpZ2l0IChsaWtlIHRoZSAiZ3JhZCBzY2hvb2wiIGFsZ29yaXRobSkuCkBAIC0xMDMx
LDE0ICsxMDk2LDE2IEBAIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VSaWdodFNoaWZ0KHVuc2lnbmVk
IHNoaWZ0KQogfQogCiAvLyBBbHdheXMgY29waWVzIHRoZSBpbnB1dCwgZXZlbiB3aGVuIHtzaGlm
dH0gPT0gMC4KLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlIG1vZGUp
CitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChzaGlmdCA8IGRpZ2l0Qml0cyk7CiAgICAgQVNTRVJUKCF4LT5pc1pl
cm8oKSk7CiAKICAgICB1bnNpZ25lZCBuID0geC0+bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcmVz
dWx0TGVuZ3RoID0gbW9kZSA9PSBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCA/IG4g
KyAxIDogbjsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVz
dWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChl
eGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICghc2hpZnQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG47IGkrKykKQEAgLTEwOTUsOCArMTE2Miw3IEBAIGlubGluZSBKU0JpZ0ludCogSlNCaWdJ
bnQ6OmFic29sdXRlQml0d2lzZU9wKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBF
CiAKICAgICBBU1NFUlQobnVtUGFpcnMgPT0gc3RkOjptaW4oeExlbmd0aCwgeUxlbmd0aCkpOwog
ICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IGV4dHJhRGlnaXRzID09IEV4dHJhRGlnaXRzSGFu
ZGxpbmc6OkNvcHkgPyB4TGVuZ3RoIDogbnVtUGFpcnM7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9
IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7Ci0KKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgcmVzdWx0TGVuZ3RoKTsKICAgICB1
bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IG51bVBhaXJzOyBpKyspCiAgICAgICAgIHJl
c3VsdC0+c2V0RGlnaXQoaSwgb3AoeC0+ZGlnaXQoaSksIHktPmRpZ2l0KGkpKSk7CkBAIC0xMTQ0
LDcgKzEyMTAsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlWG9yKFZNJiB2bSwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZUJpdHdpc2VPcCh2bSwg
eCwgeSwgRXh0cmFEaWdpdHNIYW5kbGluZzo6Q29weSwgU3ltbWV0cmljT3A6OlN5bW1ldHJpYywg
ZGlnaXRPcGVyYXRpb24pOwogfQogICAgIAotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFk
ZE9uZShWTSYgdm0sIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgs
IFNpZ25PcHRpb24gc2lnbk9wdGlvbikKIHsKICAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IHgt
Pmxlbmd0aCgpOwogICAgIC8vIFRoZSBhZGRpdGlvbiB3aWxsIG92ZXJmbG93IGludG8gYSBuZXcg
ZGlnaXQgaWYgYWxsIGV4aXN0aW5nIGRpZ2l0cyBhcmUKQEAgLTExNTgsNyArMTIyNCw5IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2ln
bk9wdGlvbiBzaWduT3B0aW9uKQogICAgIH0KIAogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9
IGlucHV0TGVuZ3RoICsgd2lsbE92ZXJmbG93OwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSB0
cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRGlnaXQgY2FycnkgPSAxOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgaSsrKSB7CkBAIC0xMTcyLDE2ICsx
MjQwLDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQogICAgICAgICBBU1NFUlQoIWNhcnJ5KTsK
IAogICAgIHJlc3VsdC0+c2V0U2lnbihzaWduT3B0aW9uID09IFNpZ25PcHRpb246OlNpZ25lZCk7
Ci0gICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0LT5y
aWdodFRyaW0oZXhlYy0+dm0oKSk7CiB9CiAKLS8vIExpa2UgdGhlIGFib3ZlLCBidXQgeW91IGNh
biBzcGVjaWZ5IHRoYXQgdGhlIGFsbG9jYXRlZCByZXN1bHQgc2hvdWxkIGhhdmUKLS8vIGxlbmd0
aCB7cmVzdWx0TGVuZ3RofSwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB7eC0+
bGVuZ3RoKCl9LgotSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShWTSYgdm0sIEpT
QmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFi
c29sdXRlU3ViT25lKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJlc3Vs
dExlbmd0aCkKIHsKICAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKICAgICBBU1NFUlQocmVzdWx0
TGVuZ3RoID49IHgtPmxlbmd0aCgpKTsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0
aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHJlc3VsdExlbmd0aCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSB4LT5sZW5ndGgoKTsKICAgICBEaWdpdCBib3Jyb3cgPSAxOwpAQCAtMTM1NCw4ICsxNDI0LDYg
QEAgU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0Jp
Z0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIERpZ2l0
IGNodW5rOwogICAgICAgICAgICAgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKHZtLCAqZGl2
aWRlbmQsIGNodW5rRGl2aXNvciwgJnJlc3QsIGNodW5rKTsKLSAgICAgICAgICAgIEFTU0VSVChy
ZXN0KTsKLQogICAgICAgICAgICAgZGl2aWRlbmQgPSAmcmVzdDsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjaHVua0NoYXJzOyBpKyspIHsKICAgICAgICAgICAgICAgICBy
ZXN1bHRTdHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRzW2NodW5rICUgcmFkaXhdKTsKQEAgLTE0MTQs
OCArMTQ4Miw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmlnaHRUcmltKFZNJiB2bSkKICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAKICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXgg
KyAxOwotICAgIEpTQmlnSW50KiB0cmltbWVkQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwg
bmV3TGVuZ3RoKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh0cmltbWVkQmlnSW50KTsKKyAgICBKU0Jp
Z0ludCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIG5ld0xl
bmd0aCk7CiAgICAgc3RkOjpjb3B5KGRhdGFTdG9yYWdlKCksIGRhdGFTdG9yYWdlKCkgKyBuZXdM
ZW5ndGgsIHRyaW1tZWRCaWdJbnQtPmRhdGFTdG9yYWdlKCkpOyAKIAogICAgIHRyaW1tZWRCaWdJ
bnQtPnNldFNpZ24odGhpcy0+c2lnbigpKTsKQEAgLTE0MzksNyArMTUwNiw3IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVk
IHJhZGl4LCB1bnNpZ25lCiAgICAgICAgICAgICAvLyBEaXZpZGUgYnkga0RpZ2l0c0JpdHMsIHJv
dW5kaW5nIHVwLgogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gKGJpdHNNaW4gKyBkaWdp
dEJpdHMgLSAxKSAvIGRpZ2l0Qml0czsKICAgICAgICAgICAgIGlmIChsZW5ndGggPD0gbWF4TGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVh
dGVXaXRoTGVuZ3RoKHZtLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCBhNjJlMTM4YWQ2NjU1
M2M5Mzk1ODZiZTY5NWExZGUxNWFlMzhlNDUwLi5hYjhmZjVhZjVkNjdmNGI2NzA0MWIyNjVjYTI1
OTdmODBiYzU0NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
QEAgLTUxLDcgKzUxLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKFZNJik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBj
cmVhdGVXaXRoTGVuZ3RoKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIHRyeUNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoVk0mLCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKFZNJiwgaW50MzJf
dCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKFZNJiwgdWludDMyX3Qg
dmFsdWUpOwpAQCAtMTA4LDE1ICsxMDksMTUgQEAgcHVibGljOgogICAgIAogICAgIENvbXBhcmlz
b25SZXN1bHQgc3RhdGljIGNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCogeCwgZG91YmxlIHkpOwog
Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhZGQoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
OwotICAgIHN0YXRpYyBKU0JpZ0ludCogc3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFkZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCogc3ViKEV4ZWNTdGF0ZSosIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBkaXZpZGUoRXhlY1N0YXRl
KiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHJlbWFp
bmRlcihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRpYyBK
U0JpZ0ludCogdW5hcnlNaW51cyhWTSYsIEpTQmlnSW50KiB4KTsKIAotICAgIHN0YXRpYyBKU0Jp
Z0ludCogYml0d2lzZUFuZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7Ci0gICAgc3Rh
dGljIEpTQmlnSW50KiBiaXR3aXNlT3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwot
ICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZVhvcihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlQW5kKEV4ZWNTdGF0ZSosIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlT3IoRXhl
Y1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQq
IGJpdHdpc2VYb3IoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKIAogcHJp
dmF0ZToKIApAQCAtMTM5LDE0ICsxNDAsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBh
YnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNv
ciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcik7CiAgICAgc3RhdGljIHZv
aWQgaW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERp
Z2l0IHN1bW1hbmQsIHVuc2lnbmVkLCBKU0JpZ0ludCogcmVzdWx0KTsKICAgICBzdGF0aWMgdm9p
ZCBtdWx0aXBseUFjY3VtdWxhdGUoSlNCaWdJbnQqIG11bHRpcGxpY2FuZCwgRGlnaXQgbXVsdGlw
bGllciwgSlNCaWdJbnQqIGFjY3VtdWxhdG9yLCB1bnNpZ25lZCBhY2N1bXVsYXRvckluZGV4KTsK
LSAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKFZNJiwgSlNCaWdJ
bnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNC
aWdJbnQqKiByZW1haW5kZXIpOworICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2V2l0aEJpZ0lu
dERpdmlzb3IoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNv
ciwgSlNCaWdJbnQqKiBxdW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpOwogICAgIAogICAg
IGVudW0gY2xhc3MgTGVmdFNoaWZ0TW9kZSB7CiAgICAgICAgIFNhbWVTaXplUmVzdWx0LAogICAg
ICAgICBBbHdheXNBZGRPbmVEaWdpdAogICAgIH07CiAgICAgCi0gICAgc3RhdGljIEpTQmlnSW50
KiBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoVk0mLCBKU0JpZ0ludCogeCwgdW5zaWduZWQg
c2hpZnQsIExlZnRTaGlmdE1vZGUpOworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0
U2hpZnRBbHdheXNDb3B5KEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBzaGlmdCwg
TGVmdFNoaWZ0TW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHJvZHVjdEdyZWF0ZXJUaGFuKERpZ2l0
IGZhY3RvcjEsIERpZ2l0IGZhY3RvcjIsIERpZ2l0IGhpZ2gsIERpZ2l0IGxvdyk7CiAKICAgICBE
aWdpdCBhYnNvbHV0ZUlucGxhY2VBZGQoSlNCaWdJbnQqIHN1bW1hbmQsIHVuc2lnbmVkIHN0YXJ0
SW5kZXgpOwpAQCAtMTc2LDggKzE3Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIFVuc2lnbmVkCiAg
ICAgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVBZGRPbmUoVk0mLCBKU0JpZ0lu
dCogeCwgU2lnbk9wdGlvbik7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVN1Yk9uZShW
TSYsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpOworICAgIHN0YXRpYyBKU0Jp
Z0ludCogYWJzb2x1dGVBZGRPbmUoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24p
OworICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoRXhlY1N0YXRlKiwgSlNCaWdJ
bnQqIHgsIHVuc2lnbmVkIHJlc3VsdExlbmd0aCk7CiAKICAgICAvLyBEaWdpdCBhcml0aG1ldGlj
IGhlbHBlcnMuCiAgICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERp
Z2l0JiBjYXJyeSk7CkBAIC0yMDMsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBKU0JpZ0ludCog
cmlnaHRUcmltKFZNJik7CiAKICAgICB2b2lkIGlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBtdWx0
aXBsaWVyLCBEaWdpdCBwYXJ0KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkKFZN
JiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOworICAgIHN0YXRp
YyBKU0JpZ0ludCogYWJzb2x1dGVBZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5LCBib29sIHJlc3VsdFNpZ24pOwogICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWIo
Vk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHksIGJvb2wgcmVzdWx0U2lnbik7CiAgICAgCiAg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCBhMDg4YWQxY2Jj
MjA3OGQ2MjA1YWZmMGFiYWQzZGE3M2E5NmY1YjI2Li44MzZmOTUzYzNhODdjNTdkNWM2MjJmYmY0
YzcwNTA5MDUwNzUxYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmNwcApAQCAtNjksOCArNjksMTAgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRT
bG93Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmFkZCh2bSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChjYWxsRnJhbWUsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwor
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9z
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5k
ZXggNjFkNTMzY2Y0NWY2YmQwMzJkYjk4ZWI2ZDRlMjQwNDJhYjRhNTJiMy4uMGVhOTgyOTFiYjY4
ODczYmIzYmFiMTA0NjE4NjFlOTE1OGE4N2JkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaApAQCAtMzQ4LDggKzM0OCwxMCBAQCBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTdWIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6c3ViKHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiAgICAg
fQpAQCAtMzY4LDggKzM3MCwxMCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNNdWwoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpCisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5KHN0YXRlLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQog
CiAgICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwogICAgICAgICByZXR1
cm4geyB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBiODBiODdkNjI0NGNjNWQwZGNkMDE4YjA1NDQxYjdkNTU2N2IxYzFiLi40MGM2MjY0
ZGU3NjJhYTZkYjE2NDdiNWY2OWU1NTBjMDMxMzE2ODk3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTEx
LTE0ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbQmlnSW50
XSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCBzaG91bGQgdGhyb3cgd2hlbiBsZW5ndGggaXMg
Z3JlYXRlciB0aGFuIEpTQmlnSW50OjptYXhMZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDgzNgorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
YW0gQmFyYXRpLgorCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0
cy5qczogQWRkZWQuCisKIDIwMTgtMTEtMTMgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzODEzMi4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZGNmZDZmODRjYzI2ZTlkYjk0OWFhZWNlZTM2YmIyYWM5MjY3MTM5Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vdXQtb2YtbWVtb3J5LXRlc3RzLmpzCkBAIC0wLDAg
KzEsNjMgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZHSklU
PWZhbHNlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gbHNoaWZ0KHkp
IHsKKyAgICBsZXQgb3V0ID0gMW47CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB5OyBpKyspIHsK
KyAgICAgICAgb3V0ICo9IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm47
CisgICAgfQorCisgICAgcmV0dXJuIG91dDsKK30KKworbGV0IGEgPSBsc2hpZnQoODA2NCk7Citm
b3IgKGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisgICAgYSAqPSAxODQ0Njc0NDA3MzcwOTU1
MTYxNW47Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSBhICsgMW47CisgICAgYXNzZXJ0KGZhbHNl
LCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4
Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9m
IG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9
CisKK3RyeSB7CisgICAgbGV0IGIgPSBhIC0gKC0xbik7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hv
dWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlv
biIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9y
eSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3Ry
eSB7CisgICAgbGV0IGIgPSBhICogKC0xbik7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRo
cm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOwor
fSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJF
eHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7Cisg
ICAgbGV0IGIgPSBhIC8gYTsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZN
ZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUp
IHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91
dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9
IC1hICYgLTFuOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVy
cm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAg
IGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSBeIC0x
bjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0
IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQo
ZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3Is
IGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355242</attachid>
            <date>2018-11-18 16:10:22 -0800</date>
            <delta_ts>2018-11-21 09:45:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181118211019.patch</filename>
            <type>text/plain</type>
            <size>39921</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZjZmZTU1NTc0ZmJjZTVmYWNlZDU5YjBiNzRlMTFlNWQ0NGZkZjQyLi5hOTEyNTAxZjI5MzM1MDRm
NWQxODM1ODExYjQwNjAzMWY3NmQ0MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOC0xMS0xOCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdl
IGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2NhdGUgYSBCaWdJbnQgdHJ1c3Rp
bmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAgICAgICAgV2l0aCB0aGlzIGFk
ZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3RoIHBhc3NlZCB0bworICAgICAg
ICBgSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5vdCBncmVhdGVyIHRoYW4gSlNCaWdJ
bnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBt
YXhMZW5ndGgsIHdlIHRoZW4gdGhyb3cgT09NCisgICAgICAgIGV4Y2VwdGlvbi4KKyAgICAgICAg
VGhpcyByZXF1aXJlZCBjaGFuZ2UgdGhlIGludGVyZmFjZSBvZiBzb21lIEpTQmlnSW50IG9wZXJh
dGlvbnMgdG8KKyAgICAgICAgcmVjZWl2ZSBgRXhlY1N0YXRlKmAgaW5zdGVhZCBvZiBgVk0mYC4g
V2UgY2hhbmdlZCBvbmx5IG9wZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gdGhyb3cgYmVjYXVz
ZSBvZiBPT00uCisgICAgICAgIFdlIGJlbGVpdmUgdGhhdCB0aGlzIGFwcHJvYWNoIG9mIHRocm93
aW5nIGluc3RlYWQgb2YgZmluaXNoaW5nIHRoZQorICAgICAgICBleGVjdXRpb24gYWJydXB0bHkg
aXMgYmV0dGVyIGJlY2F1c2UgSlMgcHJvZ3JhbXMgY2FuIGNhdGNoIHN1Y2gKKyAgICAgICAgZXhj
ZXB0aW9uIGFuZCBoYW5kbGUgdGhpcyBpc3N1ZSBwcm9wZXJseS4KKworICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRyeUNyZWF0
ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVu
Y2hlY2tlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6Om11bHRpcGx5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlk
ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb3B5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnJlbWFpbmRlcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphZGQpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6c3ViKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmJpdHdpc2VBbmQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZU9yKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmJpdHdpc2VYb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVBZGQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWIpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmFic29sdXRlQml0d2lzZU9wKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRl
QWRkT25lKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRlU3ViT25lKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU0JpZ0ludC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvT3Bl
cmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1N1Yik6CisgICAgICAgIChKU0M6OmpzTXVsKToK
KwogMjAxOC0xMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgaW4gdGhlIHJlc3Qgb2YgcjIzNzI1NApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYjEyM2U4
MDJmM2QzYzY0OTg2OGQ1NzA2NTNmMmZkY2UxYWFlMjc1NC4uN2YzNzI1MjhhODA1NzEzMDE0MzRi
MzJkNjVhNzg3NTAwMGU4NzU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUK
IAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAg
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0
d2lzZUFuZChleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0zNzYsNyArMzc2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJp
dHdpc2VPcigqdm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTI5NCw3ICsxMjk0
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG8KICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQg
PSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBq
c0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwogICAgIAotICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKCp2
bSwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIo
ZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0QW5kQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2Vs
bAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAg
ICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAKLSAg
ICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgbGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRC
aWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzE2
LDcgKzEzMTYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0
T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50
OjphZGQoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJ
bnQ6OmFkZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEs
IEpTQ2VsbCoKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihv
cDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIp
OwogICAgIAotICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2bSwgbGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCAwYzY3ZWQ0NjYwNDg3OWI2NjUyYjI1YjAwNGI4ODE4Y2IxMjRkNDljLi5mODBiMGUxNmM0
NzQzNTFjOTEwODBmM2QzMjJmNzY0ZjUwMmQ2MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTI3NjYsMTAgKzI3NjYsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2
ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUp
KTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgIH0KKyAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKIAogICAgIGRv
dWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4YmM5MWIzY2YwZGJiYjZl
NTA5ZmMwNmY1ZGZiZmM0ZDA3Y2EyNTk0Li43Nzg3MjU2ZmU4OWYxM2ZhNDBlNzhmN2U4ZjI0YjNh
NWRmYjJjMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTU2Myw3ICs1NjMsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfc3ViKQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKHZtLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3Vi
KGV4ZWMsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAg
ICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgICAgICAgICAg
dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChleGVjLCBwYywgcmVzdWx0LCBsZWZ0
LCByaWdodCk7CiAgICAgICAgICAgICB9KTsKQEAgLTY5OSw3ICs3MDAsNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfYml0YW5kKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQodm0sIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwor
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4ZWMs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAg
ICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtNzIwLDcgKzcyMSw3IEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKICAgICBDSEVDS19FWENFUFRJT04oKTsK
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3Iodm0sIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNl
T3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAg
ICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9CkBAIC03NDEsNyAr
NzQyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9y
KHZtLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZVhvcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwogICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCA0YWI1YTUyMzUzZmQxYWU5
MjBkMTFiYjM0YmMwNmViNTRmZjg4ZWU3Li5kODgzYWQzYzgwYjdjNjBmODhkODAzNzBjODVjZjVm
OWJlYmMxZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIFN0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsCiAKIEpTQmlnSW50KiBK
U0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYgdm0pCiB7Ci0gICAgSlNCaWdJbnQqIHplcm9CaWdJbnQg
PSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAwKTsKKyAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNy
ZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDApOwogICAgIHJldHVybiB6ZXJvQmlnSW50Owog
fQogCkBAIC05MSw3ICs5MSwyMiBAQCBpbmxpbmUgc2l6ZV90IEpTQmlnSW50OjphbGxvY2F0aW9u
U2l6ZSh1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHNpemVXaXRoUGFkZGluZyArIGxlbmd0
aCAqIHNpemVvZihEaWdpdCk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6dHJ5Q3Jl
YXRlV2l0aExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBtYXhMZW5ndGgpKSB7CisgICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIHJldHVybiBjcmVhdGVX
aXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBsZW5ndGgpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6
OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50
Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0lu
dFN0cnVjdHVyZS5nZXQoKSwgbGVuZ3RoKTsKICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKHZt
KTsKQEAgLTEwMyw4ICsxMTgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0m
IHZtLCBpbnQzMl90IHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVh
dGVaZXJvKHZtKTsKICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aCh2bSwgMSk7Ci0gICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhV
bmNoZWNrZWQodm0sIDEpOwogICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgYmlnSW50LT5z
ZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oLTEgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2
YWx1ZSkpKTsKICAgICAgICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTE5LDcgKzEzMyw3
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIHVpbnQzMl90IHZhbHVl
KQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAK
LSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgSlNC
aWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgIGJp
Z0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0dXJu
IGJpZ0ludDsKIH0KQEAgLTEzMCw4ICsxNDQsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZUZyb20oVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2
bSk7CiAgICAgCiAgICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCkgewotICAgICAgICBKU0JpZ0lu
dCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7Ci0gICAgICAgIAorICAgICAgICBK
U0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAg
ICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3Rh
dGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKHZhbHVlICsgMSkpICsgMSkp
OwogICAgICAgICAgICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTQxLDggKzE1NCw3IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAg
ICAgICAgIHJldHVybiBiaWdJbnQ7CiAgICAgfQogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCAyKTsKLSAgICAKKyAgICBKU0JpZ0ludCogYmlnSW50ID0g
Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMik7CiAgICAgdWludDY0X3QgdGVtcFZhbHVl
OwogICAgIGJvb2wgc2lnbiA9IGZhbHNlOwogICAgIGlmICh2YWx1ZSA8IDApIHsKQEAgLTE2Niw3
ICsxNzgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBib29sIHZh
bHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAg
ICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAg
SlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAg
IGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0
dXJuIGJpZ0ludDsKIH0KQEAgLTIzNCw2ICsyNDYsNyBAQCB2b2lkIEpTQmlnSW50OjppbnBsYWNl
TXVsdGlwbHlBZGQoRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kKQogSlNCaWdJbnQqIEpTQmln
SW50OjptdWx0aXBseShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICh4LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHg7
CkBAIC0yNDEsNyArMjU0LDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjptdWx0aXBseShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgcmV0dXJuIHk7CiAK
ICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSB4LT5sZW5ndGgoKSArIHktPmxlbmd0aCgpOwot
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgcmVz
dWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnRyeUNyZWF0ZVdp
dGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKICAgICByZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBl
OjpXaXRoWmVybyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7
IGkrKykKQEAgLTI3Nyw4ICsyOTEsMTAgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpkaXZpZGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAKICAgICAgICAgRGlnaXQg
cmVtYWluZGVyOwogICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sIHgsIGRp
dmlzb3IsICZxdW90aWVudCwgcmVtYWluZGVyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1
dGVEaXZXaXRoQmlnSW50RGl2aXNvcih2bSwgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgs
IHksICZxdW90aWVudCwgbnVsbHB0cik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgIH0KIAogICAgIHF1b3RpZW50LT5zZXRTaWduKHJlc3VsdFNpZ24p
OwogICAgIHJldHVybiBxdW90aWVudC0+cmlnaHRUcmltKHZtKTsKQEAgLTI4OCw3ICszMDQsNyBA
QCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNvcHkoVk0mIHZtLCBKU0JpZ0ludCogeCkKIHsKICAgICBB
U1NFUlQoIXgtPmlzWmVybygpKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
Y3JlYXRlV2l0aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOwog
ICAgIHN0ZDo6Y29weSh4LT5kYXRhU3RvcmFnZSgpLCB4LT5kYXRhU3RvcmFnZSgpICsgeC0+bGVu
Z3RoKCksIHJlc3VsdC0+ZGF0YVN0b3JhZ2UoKSk7CiAgICAgcmVzdWx0LT5zZXRTaWduKHgtPnNp
Z24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMSwyMyArMzQ3LDI2IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6cmVtYWluZGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQogICAgICAgICBpZiAoIXJlbWFpbmRlckRpZ2l0KQogICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZVplcm8odm0pOwogCi0gICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGgo
dm0sIDEpOworICAgICAgICByZW1haW5kZXIgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZt
LCAxKTsKICAgICAgICAgcmVtYWluZGVyLT5zZXREaWdpdCgwLCByZW1haW5kZXJEaWdpdCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3Iodm0sIHgsIHks
IG51bGxwdHIsICZyZW1haW5kZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2
V2l0aEJpZ0ludERpdmlzb3IoZXhlYywgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIH0KIAogICAgIHJl
bWFpbmRlci0+c2V0U2lnbih4LT5zaWduKCkpOwogICAgIHJldHVybiByZW1haW5kZXItPnJpZ2h0
VHJpbSh2bSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoRXhlY1N0YXRlKiBleGVj
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBib29sIHhTaWduID0geC0+c2lnbigpOwogCiAgICAgLy8geCArIHkgPT0geCArIHkKICAg
ICAvLyAteCArIC15ID09IC0oeCArIHkpCiAgICAgaWYgKHhTaWduID09IHktPnNpZ24oKSkKLSAg
ICAgICAgcmV0dXJuIGFic29sdXRlQWRkKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJldHVy
biBhYnNvbHV0ZUFkZChleGVjLCB4LCB5LCB4U2lnbik7CiAKICAgICAvLyB4ICsgLXkgPT0geCAt
IHkgPT0gLSh5IC0geCkKICAgICAvLyAteCArIHkgPT0geSAtIHggPT0gLSh4IC0geSkKQEAgLTM1
OCwxMyArMzc3LDE0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWdu
KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihFeGVjU3RhdGUqIGV4ZWMsIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJv
b2wgeFNpZ24gPSB4LT5zaWduKCk7CiAgICAgaWYgKHhTaWduICE9IHktPnNpZ24oKSkgewogICAg
ICAgICAvLyB4IC0gKC15KSA9PSB4ICsgeQogICAgICAgICAvLyAoLXgpIC0geSA9PSAtKHggKyB5
KQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAg
cmV0dXJuIGFic29sdXRlQWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKICAgICB9CiAgICAgLy8geCAt
IHkgPT0gLSh5IC0geCkKICAgICAvLyAoLXgpIC0gKC15KSA9PSB5IC0geCA9PSAtKHggLSB5KQpA
QCAtMzc1LDIwICszOTUsMjggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAh
eFNpZ24pOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoVk0mIHZtLCBKU0Jp
Z0ludCogeCwgSlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoRXhl
Y1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7Ci0gICAgaWYgKCF4LT5z
aWduKCkgJiYgIXktPnNpZ24oKSkKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICgheC0+c2lnbigpICYm
ICF5LT5zaWduKCkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4g
YWJzb2x1dGVBbmQodm0sIHgsIHkpOworICAgIH0KICAgICAKICAgICBpZiAoeC0+c2lnbigpICYm
IHktPnNpZ24oKSkgewogICAgICAgICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVu
Z3RoKCksIHktPmxlbmd0aCgpKSArIDE7CiAgICAgICAgIC8vICgteCkgJiAoLXkpID09IH4oeC0x
KSAmIH4oeS0xKSA9PSB+KCh4LTEpIHwgKHktMSkpCiAgICAgICAgIC8vID09IC0oKCh4LTEpIHwg
KHktMSkpICsgMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZt
LCB4LCByZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9u
ZSh2bSwgeSwgeS0+bGVuZ3RoKCkpOwotICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCBy
ZXN1bHQsIHkxKTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4
ZWMsIHgsIHJlc3VsdExlbmd0aCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBT
aWduT3B0aW9uOjpTaWduZWQpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9u
ZShleGVjLCB5LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkx
KTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRP
bmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KIAogICAgIEFTU0VS
VCh4LT5zaWduKCkgIT0geS0+c2lnbigpKTsKQEAgLTM5NywyMyArNDI1LDM1IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkK
ICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggJiAoLXkpID09IHggJiB+
KHktMSkgPT0geCAmIH4oeS0xKQotICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgYWJz
b2x1dGVTdWJPbmUodm0sIHksIHktPmxlbmd0aCgpKSk7CisgICAgSlNCaWdJbnQqIHkxID0gYWJz
b2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOworICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgeTEp
OwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgdW5z
aWduZWQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgpKTsK
IAotICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCisgICAgaWYgKCF4LT5zaWduKCkg
JiYgIXktPnNpZ24oKSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVy
biBhYnNvbHV0ZU9yKHZtLCB4LCB5KTsKKyAgICB9CiAgICAgCiAgICAgaWYgKHgtPnNpZ24oKSAm
JiB5LT5zaWduKCkpIHsKICAgICAgICAgLy8gKC14KSB8ICgteSkgPT0gfih4LTEpIHwgfih5LTEp
ID09IH4oKHgtMSkgJiAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAx
KQotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3Vs
dExlbmd0aCk7Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5
LT5sZW5ndGgoKSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShl
eGVjLCB4LCByZXN1bHRMZW5ndGgpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywg
eSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKICAgICAgICAgcmVzdWx0ID0gYWJzb2x1dGVBbmQodm0sIHJlc3VsdCwgeTEpOwotICAg
ICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVk
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywg
cmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoeC0+
c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00MjMsMjIgKzQ2MywzNCBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAg
ICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggfCAoLXkpID09IHggfCB+KHktMSkg
PT0gfigoeS0xKSAmfiB4KSA9PSAtKCgoeS0xKSAmfiB4KSArIDEpCi0gICAgSlNCaWdJbnQqIHJl
c3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50
KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCByZXN1bHRMZW5ndGgpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJlc3VsdCA9IGFic29sdXRl
QW5kTm90KHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVz
dWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJl
dHVybiBhYnNvbHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9
CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKLSAgICBpZiAoIXgtPnNpZ24oKSAmJiAh
eS0+c2lnbigpKQorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24o
KSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhv
cih2bSwgeCwgeSk7CisgICAgfQogICAgIAogICAgIGlmICh4LT5zaWduKCkgJiYgeS0+c2lnbigp
KSB7CiAgICAgICAgIGludCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+
bGVuZ3RoKCkpOwogICAgICAgICAKICAgICAgICAgLy8gKC14KSBeICgteSkgPT0gfih4LTEpIF4g
fih5LTEpID09ICh4LTEpIF4gKHktMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29s
dXRlU3ViT25lKHZtLCB4LCByZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBh
YnNvbHV0ZVN1Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgIEpTQmlnSW50KiB5MSA9
IGFic29sdXRlU3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICByZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeTEpOwogICAgIH0KICAgICBB
U1NFUlQoeC0+c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00NDksOSArNTAxLDEyIEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggXiAoLXkpID09IHgg
XiB+KHktMSkgPT0gfih4IF4gKHktMSkpID09IC0oKHggXiAoeS0xKSkgKyAxKQotICAgIEpTQmln
SW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBK
U0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgIHJlc3VsdCA9
IGFic29sdXRlWG9yKHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2
bSwgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQp
OwogfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSwxMCArODA2LDEyIEBAIGlubGlu
ZSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6YWJzb2x1dGVDb21wYXJlKEpT
QmlnSW50KiB4LCBKU0JpZ0luCiAgICAgcmV0dXJuIHgtPmRpZ2l0KGkpID4geS0+ZGlnaXQoaSkg
PyBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NU
aGFuOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKFZNJiB2bSwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pCitKU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlQWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBi
b29sIHJlc3VsdFNpZ24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKwogICAgIGlmICh4
LT5sZW5ndGgoKSA8IHktPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0s
IHksIHgsIHJlc3VsdFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeSwg
eCwgcmVzdWx0U2lnbik7CiAKICAgICBpZiAoeC0+aXNaZXJvKCkpIHsKICAgICAgICAgQVNTRVJU
KHktPmlzWmVybygpKTsKQEAgLTc2NCw4ICs4MjEsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFi
c29sdXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNp
ZwogICAgIGlmICh5LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdFNpZ24gPT0geC0+
c2lnbigpID8geCA6IHVuYXJ5TWludXModm0sIHgpOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSArIDEpOwotICAgIEFT
U0VSVChyZXN1bHQpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dHJ5Q3JlYXRl
V2l0aExlbmd0aChleGVjLCB4LT5sZW5ndGgoKSArIDEpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBEaWdpdCBjYXJyeSA9IDA7CiAgICAgdW5zaWduZWQg
aSA9IDA7CiAgICAgZm9yICg7IGkgPCB5LT5sZW5ndGgoKTsgaSsrKSB7CkBAIC04MDYsNyArODY0
LDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1YihWTSYgdm0sIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWcKICAgICBpZiAoY29tcGFyaXNvblJlc3VsdCA9
PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbCkKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVh
dGVaZXJvKHZtKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOworCiAgICAgRGln
aXQgYm9ycm93ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxl
bmd0aCgpOyBpKyspIHsKQEAgLTg1MSw3ICs5MTAsNyBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0
ZURpdldpdGhEaWdpdERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwg
SgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgpOwogICAgIGlmIChxdW90aWVudCAh
PSBudWxscHRyKSB7CiAgICAgICAgIGlmICgqcXVvdGllbnQgPT0gbnVsbHB0cikKLSAgICAgICAg
ICAgICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCBsZW5ndGgpOwor
ICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNr
ZWQodm0sIGxlbmd0aCk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0g
MDsgaS0tKSB7CiAgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXREaXYocmVtYWluZGVyLCB4LT5k
aWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKQEAgLTg2OSwxMCArOTI4LDEyIEBAIHZvaWQg
SlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4
LCBEaWdpdCBkaXZpc29yLCBKCiAvLyBCb3RoIHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9IGFy
ZSBvcHRpb25hbCwgZm9yIGNhbGxlcnMgdGhhdCBhcmUgb25seQogLy8gaW50ZXJlc3RlZCBpbiBv
bmUgb2YgdGhlbS4KIC8vIFNlZSBLbnV0aCwgVm9sdW1lIDIsIHNlY3Rpb24gNC4zLjEsIEFsZ29y
aXRobSBELgotdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYg
dm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVv
dGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNC
aWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVy
KQogewogICAgIEFTU0VSVChkaXZpc29yLT5sZW5ndGgoKSA+PSAyKTsKICAgICBBU1NFUlQoZGl2
aWRlbmQtPmxlbmd0aCgpID49IGRpdmlzb3ItPmxlbmd0aCgpKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIFRoZSB1bnVzdWFsIHZhcmlhYmxlIG5hbWVzIGluc2lkZSB0aGlzIGZ1bmN0aW9uIGFyZSBj
b25zaXN0ZW50IHdpdGgKICAgICAvLyBLbnV0aCdzIGJvb2ssIGFzIHdlbGwgYXMgd2l0aCBHbydz
IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtLgpAQCAtODg0LDExICs5NDUsMTIgQEAg
dm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmln
SW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICAvLyBUaGUgcXVvdGllbnQgdG8gYmUgY29tcHV0
ZWQuCiAgICAgSlNCaWdJbnQqIHEgPSBudWxscHRyOwogICAgIGlmIChxdW90aWVudCAhPSBudWxs
cHRyKQotICAgICAgICBxID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbSArIDEpOworICAgICAgICBx
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZChleGVjLT52bSgpLCBtICsgMSk7CiAgICAgCiAg
ICAgLy8gSW4gZWFjaCBpdGVyYXRpb24sIHtxaGF0dn0gaG9sZHMge2Rpdmlzb3J9ICoge2N1cnJl
bnQgcXVvdGllbnQgZGlnaXR9LgogICAgIC8vICJ2IiBpcyB0aGUgYm9vaydzIG5hbWUgZm9yIHtk
aXZpc29yfSwgInFoYXQiIHRoZSBjdXJyZW50IHF1b3RpZW50IGRpZ2l0LgotICAgIEpTQmlnSW50
KiBxaGF0diA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG4gKyAxKTsKKyAgICBKU0JpZ0ludCogcWhh
dHYgPSB0cnlDcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIG4gKyAxKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIAogICAgIC8vIEQxLgogICAgIC8vIExlZnQtc2hp
ZnQgaW5wdXRzIHNvIHRoYXQgdGhlIGRpdmlzb3IncyBNU0IgaXMgc2V0LiBUaGlzIGlzIG5lY2Vz
c2FyeQpAQCAtODk4LDEyICs5NjAsMTUgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRo
QmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICBE
aWdpdCBsYXN0RGlnaXQgPSBkaXZpc29yLT5kaWdpdChuIC0gMSk7CiAgICAgdW5zaWduZWQgc2hp
ZnQgPSBzaXplb2YobGFzdERpZ2l0KSA9PSA4ID8gY2x6NjQobGFzdERpZ2l0KSA6IGNsejMyKGxh
c3REaWdpdCk7CiAKLSAgICBpZiAoc2hpZnQgPiAwKQotICAgICAgICBkaXZpc29yID0gYWJzb2x1
dGVMZWZ0U2hpZnRBbHdheXNDb3B5KHZtLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6
U2FtZVNpemVSZXN1bHQpOworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgZGl2aXNvciA9
IGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNo
aWZ0TW9kZTo6U2FtZVNpemVSZXN1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIH0KIAogICAgIC8vIEhvbGRzIHRoZSAoY29udGludW91c2x5IHVw
ZGF0ZWQpIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBkaXZpZGVuZCwgd2hpY2gKICAgICAvLyBldmVu
dHVhbGx5IGJlY29tZXMgdGhlIHJlbWFpbmRlci4KLSAgICBKU0JpZ0ludCogdSA9IGFic29sdXRl
TGVmdFNoaWZ0QWx3YXlzQ29weSh2bSwgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpB
bHdheXNBZGRPbmVEaWdpdCk7CisgICAgSlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlmdEFs
d2F5c0NvcHkoZXhlYywgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRP
bmVEaWdpdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAg
IC8vIEQyLgogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZGl2aWRlbmQncyBkaWdpdCAobGlrZSB0
aGUgImdyYWQgc2Nob29sIiBhbGdvcml0aG0pLgpAQCAtMTAzMSwxNCArMTA5NiwxNiBAQCB2b2lk
IEpTQmlnSW50OjppbnBsYWNlUmlnaHRTaGlmdCh1bnNpZ25lZCBzaGlmdCkKIH0KIAogLy8gQWx3
YXlzIGNvcGllcyB0aGUgaW5wdXQsIGV2ZW4gd2hlbiB7c2hpZnR9ID09IDAuCi1KU0JpZ0ludCog
SlNCaWdJbnQ6OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYgdm0sIEpTQmlnSW50KiB4
LCB1bnNpZ25lZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2RlKQorSlNCaWdJbnQqIEpTQmlnSW50
OjphYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCog
eCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoc2hp
ZnQgPCBkaWdpdEJpdHMpOwogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCiAgICAgdW5zaWdu
ZWQgbiA9IHgtPmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IG1vZGUgPT0g
TGVmdFNoaWZ0TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQgPyBuICsgMSA6IG47Ci0gICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXNo
aWZ0KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyBpKyspCkBAIC0xMDk1
LDggKzExNjIsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUJpdHdpc2VP
cChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgRQogCiAgICAgQVNTRVJUKG51bVBh
aXJzID09IHN0ZDo6bWluKHhMZW5ndGgsIHlMZW5ndGgpKTsKICAgICB1bnNpZ25lZCByZXN1bHRM
ZW5ndGggPSBleHRyYURpZ2l0cyA9PSBFeHRyYURpZ2l0c0hhbmRsaW5nOjpDb3B5ID8geExlbmd0
aCA6IG51bVBhaXJzOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZt
LCByZXN1bHRMZW5ndGgpOwotCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5n
dGhVbmNoZWNrZWQodm0sIHJlc3VsdExlbmd0aCk7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
Zm9yICg7IGkgPCBudW1QYWlyczsgaSsrKQogICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIG9w
KHgtPmRpZ2l0KGkpLCB5LT5kaWdpdChpKSkpOwpAQCAtMTE0NCw3ICsxMjEwLDcgQEAgSlNCaWdJ
bnQqIEpTQmlnSW50OjphYnNvbHV0ZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKICAgICByZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0sIHgsIHksIEV4dHJhRGlnaXRzSGFu
ZGxpbmc6OkNvcHksIFN5bW1ldHJpY09wOjpTeW1tZXRyaWMsIGRpZ2l0T3BlcmF0aW9uKTsKIH0K
ICAgICAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0lu
dCogeCwgU2lnbk9wdGlvbiBzaWduT3B0aW9uKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0
ZUFkZE9uZShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRp
b24pCiB7CiAgICAgdW5zaWduZWQgaW5wdXRMZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICAvLyBU
aGUgYWRkaXRpb24gd2lsbCBvdmVyZmxvdyBpbnRvIGEgbmV3IGRpZ2l0IGlmIGFsbCBleGlzdGlu
ZyBkaWdpdHMgYXJlCkBAIC0xMTU4LDcgKzEyMjQsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFi
c29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikK
ICAgICB9CiAKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBpbnB1dExlbmd0aCArIHdpbGxP
dmVyZmxvdzsKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVz
dWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChl
eGVjLCByZXN1bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIERpZ2l0IGNhcnJ5ID0gMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaW5wdXRMZW5ndGg7IGkrKykgewpAQCAtMTE3MiwxNiArMTI0MCwxOCBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24g
c2lnbk9wdGlvbikKICAgICAgICAgQVNTRVJUKCFjYXJyeSk7CiAKICAgICByZXN1bHQtPnNldFNp
Z24oc2lnbk9wdGlvbiA9PSBTaWduT3B0aW9uOjpTaWduZWQpOwotICAgIHJldHVybiByZXN1bHQt
PnJpZ2h0VHJpbSh2bSk7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMtPnZtKCkp
OwogfQogCi0vLyBMaWtlIHRoZSBhYm92ZSwgYnV0IHlvdSBjYW4gc3BlY2lmeSB0aGF0IHRoZSBh
bGxvY2F0ZWQgcmVzdWx0IHNob3VsZCBoYXZlCi0vLyBsZW5ndGgge3Jlc3VsdExlbmd0aH0sIHdo
aWNoIG11c3QgYmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMge3gtPmxlbmd0aCgpfS4KLUpTQmlnSW50
KiBKU0JpZ0ludDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgdW5zaWduZWQg
cmVzdWx0TGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCiB7CiAgICAgQVNT
RVJUKCF4LT5pc1plcm8oKSk7CiAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+PSB4LT5sZW5ndGgo
KSk7Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExl
bmd0aCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0
aExlbmd0aChleGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAg
RGlnaXQgYm9ycm93ID0gMTsKQEAgLTEzNTQsOCArMTQyNCw2IEBAIFN0cmluZyBKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJh
ZGl4KQogICAgICAgICBkbyB7CiAgICAgICAgICAgICBEaWdpdCBjaHVuazsKICAgICAgICAgICAg
IGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3Is
ICZyZXN0LCBjaHVuayk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdCk7Ci0KICAgICAgICAgICAg
IGRpdmlkZW5kID0gJnJlc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y2h1bmtDaGFyczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChy
YWRpeERpZ2l0c1tjaHVuayAlIHJhZGl4XSk7CkBAIC0xNDE0LDggKzE0ODIsNyBAQCBKU0JpZ0lu
dCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAgICAgIHJldHVybiB0aGlzOwogCiAg
ICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKLSAgICBKU0JpZ0ludCog
dHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5ld0xlbmd0aCk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQg
PSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdMZW5ndGgpOwogICAgIHN0ZDo6Y29w
eShkYXRhU3RvcmFnZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3TGVuZ3RoLCB0cmltbWVkQmlnSW50
LT5kYXRhU3RvcmFnZSgpKTsgCiAKICAgICB0cmltbWVkQmlnSW50LT5zZXRTaWduKHRoaXMtPnNp
Z24oKSk7CkBAIC0xNDM5LDcgKzE1MDYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRl
Rm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZQogICAg
ICAgICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IChiaXRzTWluICsgZGlnaXRCaXRzIC0gMSkgLyBkaWdpdEJp
dHM7CiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aCkgewotICAgICAgICAgICAg
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKaW5kZXggYTYyZTEzOGFkNjY1NTNjOTM5NTg2YmU2OTVhMWRlMTVh
ZTM4ZTQ1MC4uYWI4ZmY1YWY1ZDY3ZjRiNjcwNDFiMjY1Y2EyNTk3ZjgwYmM1NDQ2OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC01MSw3ICs1MSw4IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3Jl
YXRlWmVybyhWTSYpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aChWTSYs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiB0cnlDcmVhdGVXaXRoTGVu
Z3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiBj
cmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIGludDMyX3QgdmFsdWUpOwogICAgIHN0YXRp
YyBKU0JpZ0ludCogY3JlYXRlRnJvbShWTSYsIHVpbnQzMl90IHZhbHVlKTsKQEAgLTEwOCwxNSAr
MTA5LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBDb21wYXJpc29uUmVzdWx0IHN0YXRpYyBjb21w
YXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KTsKIAotICAgIHN0YXRpYyBKU0JpZ0lu
dCogYWRkKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJ
bnQqIHN1YihWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmln
SW50KiBhZGQoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0
aWMgSlNCaWdJbnQqIHN1YihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwog
ICAgIHN0YXRpYyBKU0JpZ0ludCogZGl2aWRlKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0Jp
Z0ludCogeSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiByZW1haW5kZXIoRXhlY1N0YXRlKiwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHVuYXJ5TWludXMo
Vk0mLCBKU0JpZ0ludCogeCk7CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoVk0m
LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lz
ZU9yKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IGJpdHdpc2VYb3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBK
U0JpZ0ludCogYml0d2lzZUFuZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
OworICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4
LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlWG9yKEV4ZWNTdGF0
ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKIHByaXZhdGU6CiAKQEAgLTEzOSwxNCAr
MTQwLDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoRGlnaXRE
aXZpc29yKFZNJiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGll
bnQsIERpZ2l0JiByZW1haW5kZXIpOwogICAgIHN0YXRpYyB2b2lkIGludGVybmFsTXVsdGlwbHlB
ZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCB1bnNpZ25l
ZCwgSlNCaWdJbnQqIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgbXVsdGlwbHlBY2N1bXVsYXRl
KEpTQmlnSW50KiBtdWx0aXBsaWNhbmQsIERpZ2l0IG11bHRpcGxpZXIsIEpTQmlnSW50KiBhY2N1
bXVsYXRvciwgdW5zaWduZWQgYWNjdW11bGF0b3JJbmRleCk7Ci0gICAgc3RhdGljIHZvaWQgYWJz
b2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJ
bnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsK
KyAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKEV4ZWNTdGF0ZSos
IEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGll
bnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsKICAgICAKICAgICBlbnVtIGNsYXNzIExlZnRTaGlm
dE1vZGUgewogICAgICAgICBTYW1lU2l6ZVJlc3VsdCwKICAgICAgICAgQWx3YXlzQWRkT25lRGln
aXQKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0U2hpZnRB
bHdheXNDb3B5KFZNJiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2Rl
KTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVj
U3RhdGUqLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUpOwogICAg
IHN0YXRpYyBib29sIHByb2R1Y3RHcmVhdGVyVGhhbihEaWdpdCBmYWN0b3IxLCBEaWdpdCBmYWN0
b3IyLCBEaWdpdCBoaWdoLCBEaWdpdCBsb3cpOwogCiAgICAgRGlnaXQgYWJzb2x1dGVJbnBsYWNl
QWRkKEpTQmlnSW50KiBzdW1tYW5kLCB1bnNpZ25lZCBzdGFydEluZGV4KTsKQEAgLTE3Niw4ICsx
NzcsOCBAQCBwcml2YXRlOgogICAgICAgICBVbnNpZ25lZAogICAgIH07CiAKLSAgICBzdGF0aWMg
SlNCaWdJbnQqIGFic29sdXRlQWRkT25lKFZNJiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24pOwot
ICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoVk0mLCBKU0JpZ0ludCogeCwgdW5z
aWduZWQgcmVzdWx0TGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkT25l
KEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uKTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGFic29sdXRlU3ViT25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1
bHRMZW5ndGgpOwogCiAgICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJzLgogICAgIHN0YXRp
YyBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpOwpAQCAtMjAz
LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgSlNCaWdJbnQqIHJpZ2h0VHJpbShWTSYpOwogCiAg
ICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7
Ci0gICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0Jp
Z0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRl
QWRkKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWdu
KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggYTA4OGFkMWNiYzIwNzhkNjIwNWFmZjBhYmFkM2Rh
NzNhOTZmNWIyNi4uODM2Zjk1M2MzYTg3YzU3ZDVjNjIyZmJmNGM3MDUwOTA1MDc1MWJlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTY5LDgg
KzY5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQodm0sIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgeworICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjphZGQoY2FsbEZyYW1lLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDYxZDUzM2NmNDVmNmJkMDMy
ZGI5OGViNmQ0ZTI0MDQyYWI0YTUyYjMuLjBlYTk4MjkxYmI2ODg3M2JiM2JhYjEwNDYxODYxZTkx
NThhODdiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
QEAgLTM0OCw4ICszNDgsMTAgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OnN1YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogICAgIH0KQEAgLTM2OCw4ICszNzAsMTAg
QEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQorICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0
aXBseShzdGF0ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgICAgIH0KIAogICAgICAgICB0aHJvd1R5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gbXVsdGlwbGljYXRpb24uIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGEzNGU0YWQ0YzA3
NzhkZDA4MWM2ZjA1ZWI3ZGE5ZTFkMThmZTc5ZS4uZDJiMDY4ZDVjZDEyOTUwMTFiZjM5MTEyMWJh
MmExY2JiZjkxOTMxYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0xOCAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGggc2hvdWxkIHRocm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0lu
dDo6bWF4TGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA4MzYKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAg
ICAqIHN0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanM6IEFkZGVkLgorCiAyMDE4
LTExLTE4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBpbiB0aGUgcmVzdCBvZiByMjM3MjU0CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRj
ZmQ2Zjg0Y2MyNmU5ZGI5NDlhYWVjZWUzNmJiMmFjOTI2NzEzOQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpAQCAtMCwwICsx
LDYzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD1m
YWxzZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGxzaGlmdCh5KSB7
CisgICAgbGV0IG91dCA9IDFuOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeTsgaSsrKSB7Cisg
ICAgICAgIG91dCAqPSAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuOwor
ICAgIH0KKworICAgIHJldHVybiBvdXQ7Cit9CisKK2xldCBhID0gbHNoaWZ0KDgwNjQpOworZm9y
IChsZXQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgIGEgKj0gMTg0NDY3NDQwNzM3MDk1NTE2
MTVuOworfQorCit0cnkgeworICAgIGxldCBiID0gYSArIDFuOworICAgIGFzc2VydChmYWxzZSwg
IlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNl
cHRpb24iKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBt
ZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQor
Cit0cnkgeworICAgIGxldCBiID0gYSAtICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3Vs
ZCB0aHJvdyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24i
KTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnki
LCAiRXhwZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkg
eworICAgIGxldCBiID0gYSAqICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJv
dyBPdXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30g
Y2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhw
ZWN0ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAg
IGxldCBiID0gYSAvIGE7CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVt
b3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7
CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRP
Zk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSAt
YSAmIC0xbjsKKyAgICBhc3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJv
ciwgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBh
c3NlcnQoZS5tZXNzYWdlID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5
RXJyb3IsIGJ1dCBnb3Q6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgXiAtMW47
CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUu
bWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBi
dXQgZ290OiAiICsgZSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355422</attachid>
            <date>2018-11-21 09:45:28 -0800</date>
            <delta_ts>2018-11-21 10:38:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190836-20181121144524.patch</filename>
            <type>text/plain</type>
            <size>40020</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
M2JjZGY1YzAwYmUyOGRhMjZjY2UzNGZmYjNmMWI1Y2ExNjk5MDVlLi40ZWRkYmMxNDMxNzgyYTYz
NGYxN2MwNjQ2Yzk3MjZiODc0MjgxZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOC0xMS0yMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGggc2hvdWxkIHRo
cm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgWXVzdWtlIFN1enVraS4KKworICAgICAg
ICBJbiB0aGlzIHBhdGNoIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBtZXRob2QgY2FsbGVkIGBKU0Jp
Z0ludDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZGAKKyAgICAgICAgd2hlcmUgd2UgYWxsb2Nh
dGUgYSBCaWdJbnQgdHJ1c3RpbmcgdGhlIGxlbmd0aCByZWNlaXZlZCBhcyBhcmd1bWVudC4KKyAg
ICAgICAgV2l0aCB0aGlzIGFkZGl0aW9uYWwgbWV0aG9kLCB3ZSBub3cgY2hlY2sgaWYgbGVuZ3Ro
IHBhc3NlZCB0bworICAgICAgICBgSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGhgIGlzIG5v
dCBncmVhdGVyIHRoYW4gSlNCaWdJbnQ6Om1heExlbmd0aC4KKyAgICAgICAgV2hlbiB0aGUgbGVu
Z3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVuZ3RoLCB3ZSB0aGVuIHRocm93IE9P
TQorICAgICAgICBleGNlcHRpb24uCisgICAgICAgIFRoaXMgcmVxdWlyZWQgdXMgdG8gY2hhbmdl
IHRoZSBpbnRlcmZhY2Ugb2Ygc29tZSBKU0JpZ0ludCBvcGVyYXRpb25zIHRvCisgICAgICAgIHJl
Y2VpdmUgYEV4ZWNTdGF0ZSpgIGluc3RlYWQgb2YgYFZNJmAuIFdlIGNoYW5nZWQgb25seSBvcGVy
YXRpb25zIHRoYXQKKyAgICAgICAgY2FuIHRocm93IGJlY2F1c2Ugb2YgT09NLgorICAgICAgICBX
ZSBiZWxlaXZlIHRoYXQgdGhpcyBhcHByb2FjaCBvZiB0aHJvd2luZyBpbnN0ZWFkIG9mIGZpbmlz
aGluZyB0aGUKKyAgICAgICAgZXhlY3V0aW9uIGFicnVwdGx5IGlzIGJldHRlciBiZWNhdXNlIEpT
IHByb2dyYW1zIGNhbiBjYXRjaCBzdWNoCisgICAgICAgIGV4Y2VwdGlvbiBhbmQgaGFuZGxlIHRo
aXMgaXNzdWUgcHJvcGVybHkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlWmVy
byk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlDcmVhdGVXaXRoTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjptdWx0
aXBseSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaXZpZGUpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6Y29weSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp1bmFyeU1pbnVzKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJlbWFpbmRlcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjphZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3ViKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmJpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZU9yKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmJpdHdpc2VYb3IpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6YWJzb2x1dGVBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWIp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3IpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5KToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRlQml0d2lzZU9wKToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmFic29sdXRlQWRkT25lKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29s
dXRlU3ViT25lKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6YWxsb2NhdGVGb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0
aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1N1Yik6CisgICAg
ICAgIChKU0M6OmpzTXVsKToKKwogMjAxOC0xMS0yMSAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVl
aHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBFbmFibGUgSklUIG9uIEFSTS9MaW51eApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYjEyM2U4MDJmM2Qz
YzY0OTg2OGQ1NzA2NTNmMmZkY2UxYWFlMjc1NC4uN2YzNzI1MjhhODA1NzEzMDE0MzRiMzJkNjVh
Nzg3NTAwMGU4NzU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdEFuZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKIAogICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogICAgICAgICB9CkBAIC0zNzYsNyArMzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VP
cigqdm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpiaXR3aXNlT3IoZXhlYywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTI5NCw3ICsxMjk0LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG8KICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nh
c3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8
SlNCaWdJbnQqPihvcDIpOwogICAgIAotICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKCp2bSwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZXhlYywg
bGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRBbmRCaWdJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpCkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0QW5kQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbAogICAg
IEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNC
aWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAKLSAgICByZXR1
cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoKnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
KyAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZXhlYywgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQo
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzE2LDcgKzEz
MTYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEV4ZWNTdGF0
ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2VsbCogbwogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFu
ZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CiAgICAgCi0gICAgcmV0dXJuIEpTQmlnSW50OjphZGQo
KnZtLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmFk
ZChleGVjLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdE9yQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCoKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwog
ICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwogICAg
IAotICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKCp2bSwgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CisgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZXhlYywgbGVmdE9wZXJh
bmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAw
YzY3ZWQ0NjYwNDg3OWI2NjUyYjI1YjAwNGI4ODE4Y2IxMjRkNDljLi5mODBiMGUxNmM0NzQzNTFj
OTEwODBmM2QzMjJmNzY0ZjUwMmQ2MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTI3NjYsMTAgKzI3NjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShleGVj
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgIH0KKyAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKIAogICAgIGRvdWJsZSBu
dW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4YmM5MWIzY2YwZGJiYjZlNTA5ZmMw
NmY1ZGZiZmM0ZDA3Y2EyNTk0Li43Nzg3MjU2ZmU4OWYxM2ZhNDBlNzhmN2U4ZjI0YjNhNWRmYjJj
Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTU2Myw3ICs1NjMsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3Vi
KQogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
ICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKHZtLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKGV4ZWMs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOworICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAg
ICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgICAgICAgICAgdXBkYXRl
QXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChleGVjLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICB9KTsKQEAgLTY5OSw3ICs3MDAsNyBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfYml0YW5kKQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CiAgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGV4ZWMsIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBSRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtNzIwLDcgKzcyMSw3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3Iodm0sIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3IoZXhl
YywgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAg
ICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogICAgICAgICB9CkBAIC03NDEsNyArNzQyLDcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKICAgICBDSEVDS19FWENFUFRJT04o
KTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewog
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKHZtLCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0
d2lzZVhvcihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwogICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCA0YWI1YTUyMzUzZmQxYWU5MjBkMTFi
YjM0YmMwNmViNTRmZjg4ZWU3Li43YmVkNzkxMDk2OTE4YmExOGU2YWNjNGMxODY0NTFlMDAzNjA2
NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIFN0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsCiAKIEpTQmlnSW50KiBKU0JpZ0lu
dDo6Y3JlYXRlWmVybyhWTSYgdm0pCiB7Ci0gICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKHZtLCAwKTsKKyAgICBKU0JpZ0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIDApOwogICAgIHJldHVybiB6ZXJvQmlnSW50OwogfQogCkBA
IC05MSw4ICs5MSwyNCBAQCBpbmxpbmUgc2l6ZV90IEpTQmlnSW50OjphbGxvY2F0aW9uU2l6ZSh1
bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHNpemVXaXRoUGFkZGluZyArIGxlbmd0aCAqIHNp
emVvZihEaWdpdCk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aChW
TSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0
aExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBtYXhMZW5ndGgpKSB7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIHJldHVybiBjcmVhdGVXaXRoTGVu
Z3RoVW5jaGVja2VkKHZtLCBsZW5ndGgpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZVdpdGhMZW5ndGhVbmNoZWNrZWQoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQVNT
RVJUKGxlbmd0aCA8PSBtYXhMZW5ndGgpOwogICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUobGVu
Z3RoKSkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7CiAg
ICAgYmlnSW50LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIGJpZ0ludDsKQEAgLTEw
Myw4ICsxMTksNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBpbnQz
Ml90IHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZt
KTsKICAgICAKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7
Ci0gICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQo
dm0sIDEpOwogICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgw
LCBzdGF0aWNfY2FzdDxEaWdpdD4oLTEgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsK
ICAgICAgICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTE5LDcgKzEzNCw3IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIHVpbnQzMl90IHZhbHVlKQogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKLSAgICBKU0Jp
Z0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgSlNCaWdJbnQqIGJp
Z0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgIGJpZ0ludC0+c2V0
RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGJpZ0ludDsK
IH0KQEAgLTEzMCw4ICsxNDUsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0m
IHZtLCBpbnQ2NF90IHZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7CiAgICAg
CiAgICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50
ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7Ci0gICAgICAgIAorICAgICAgICBKU0JpZ0ludCog
YmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgICAgIGlmICh2
YWx1ZSA8IDApIHsKICAgICAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8
RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKHZhbHVlICsgMSkpICsgMSkpOwogICAgICAg
ICAgICAgYmlnSW50LT5zZXRTaWduKHRydWUpOwpAQCAtMTQxLDggKzE1NSw3IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiAgICAgICAgIHJl
dHVybiBiaWdJbnQ7CiAgICAgfQogICAgIAotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVX
aXRoTGVuZ3RoKHZtLCAyKTsKLSAgICAKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0
aExlbmd0aFVuY2hlY2tlZCh2bSwgMik7CiAgICAgdWludDY0X3QgdGVtcFZhbHVlOwogICAgIGJv
b2wgc2lnbiA9IGZhbHNlOwogICAgIGlmICh2YWx1ZSA8IDApIHsKQEAgLTE2Niw3ICsxNzksNyBA
QCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oVk0mIHZtLCBib29sIHZhbHVlKQogICAg
IGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKICAgICAKLSAgICBK
U0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgMSk7CisgICAgSlNCaWdJbnQq
IGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgIGJpZ0ludC0+
c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGJpZ0lu
dDsKIH0KQEAgLTIzNCw2ICsyNDcsNyBAQCB2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlB
ZGQoRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kKQogSlNCaWdJbnQqIEpTQmlnSW50OjptdWx0
aXBseShFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIGlmICh4LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHg7CkBAIC0yNDEs
NyArMjU1LDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjptdWx0aXBseShFeGVjU3RhdGUqIGV4ZWMs
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgcmV0dXJuIHk7CiAKICAgICB1bnNp
Z25lZCByZXN1bHRMZW5ndGggPSB4LT5sZW5ndGgoKSArIHktPmxlbmd0aCgpOwotICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3Ro
KTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGgo
ZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKICAgICByZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVy
byk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykKQEAg
LTI3Nyw4ICsyOTIsMTAgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpkaXZpZGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiAKICAgICAgICAgRGlnaXQgcmVtYWluZGVy
OwogICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sIHgsIGRpdmlzb3IsICZx
dW90aWVudCwgcmVtYWluZGVyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWJzb2x1dGVEaXZXaXRo
QmlnSW50RGl2aXNvcih2bSwgeCwgeSwgJnF1b3RpZW50LCBudWxscHRyKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKGV4ZWMsIHgsIHksICZxdW90
aWVudCwgbnVsbHB0cik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOworICAgIH0KIAogICAgIHF1b3RpZW50LT5zZXRTaWduKHJlc3VsdFNpZ24pOwogICAgIHJl
dHVybiBxdW90aWVudC0+cmlnaHRUcmltKHZtKTsKQEAgLTI4OCw3ICszMDUsNyBAQCBKU0JpZ0lu
dCogSlNCaWdJbnQ6OmNvcHkoVk0mIHZtLCBKU0JpZ0ludCogeCkKIHsKICAgICBBU1NFUlQoIXgt
PmlzWmVybygpKTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0
aExlbmd0aCh2bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOwogICAgIHN0ZDo6
Y29weSh4LT5kYXRhU3RvcmFnZSgpLCB4LT5kYXRhU3RvcmFnZSgpICsgeC0+bGVuZ3RoKCksIHJl
c3VsdC0+ZGF0YVN0b3JhZ2UoKSk7CiAgICAgcmVzdWx0LT5zZXRTaWduKHgtPnNpZ24oKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMSwyMyArMzQ4LDI2IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6cmVtYWluZGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQog
ICAgICAgICBpZiAoIXJlbWFpbmRlckRpZ2l0KQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVpl
cm8odm0pOwogCi0gICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIDEpOwor
ICAgICAgICByZW1haW5kZXIgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAg
ICAgICAgcmVtYWluZGVyLT5zZXREaWdpdCgwLCByZW1haW5kZXJEaWdpdCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0ludERpdmlzb3Iodm0sIHgsIHksIG51bGxwdHIs
ICZyZW1haW5kZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFic29sdXRlRGl2V2l0aEJpZ0lu
dERpdmlzb3IoZXhlYywgeCwgeSwgbnVsbHB0ciwgJnJlbWFpbmRlcik7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIH0KIAogICAgIHJlbWFpbmRlci0+
c2V0U2lnbih4LT5zaWduKCkpOwogICAgIHJldHVybiByZW1haW5kZXItPnJpZ2h0VHJpbSh2bSk7
CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQorSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29s
IHhTaWduID0geC0+c2lnbigpOwogCiAgICAgLy8geCArIHkgPT0geCArIHkKICAgICAvLyAteCAr
IC15ID09IC0oeCArIHkpCiAgICAgaWYgKHhTaWduID09IHktPnNpZ24oKSkKLSAgICAgICAgcmV0
dXJuIGFic29sdXRlQWRkKHZtLCB4LCB5LCB4U2lnbik7CisgICAgICAgIHJldHVybiBhYnNvbHV0
ZUFkZChleGVjLCB4LCB5LCB4U2lnbik7CiAKICAgICAvLyB4ICsgLXkgPT0geCAtIHkgPT0gLSh5
IC0geCkKICAgICAvLyAteCArIHkgPT0geSAtIHggPT0gLSh4IC0geSkKQEAgLTM1OCwxMyArMzc4
LDE0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQogICAgIHJldHVybiBhYnNvbHV0ZVN1Yih2bSwgeSwgeCwgIXhTaWduKTsKIH0KIAot
SlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
CitKU0JpZ0ludCogSlNCaWdJbnQ6OnN1YihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgeFNpZ24g
PSB4LT5zaWduKCk7CiAgICAgaWYgKHhTaWduICE9IHktPnNpZ24oKSkgewogICAgICAgICAvLyB4
IC0gKC15KSA9PSB4ICsgeQogICAgICAgICAvLyAoLXgpIC0geSA9PSAtKHggKyB5KQotICAgICAg
ICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHgsIHksIHhTaWduKTsKKyAgICAgICAgcmV0dXJuIGFi
c29sdXRlQWRkKGV4ZWMsIHgsIHksIHhTaWduKTsKICAgICB9CiAgICAgLy8geCAtIHkgPT0gLSh5
IC0geCkKICAgICAvLyAoLXgpIC0gKC15KSA9PSB5IC0geCA9PSAtKHggLSB5KQpAQCAtMzc1LDIw
ICszOTYsMjggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpzdWIoVk0mIHZtLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCiAgICAgcmV0dXJuIGFic29sdXRlU3ViKHZtLCB5LCB4LCAheFNpZ24pOwog
fQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoVk0mIHZtLCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCitKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoRXhlY1N0YXRlKiBl
eGVjLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCiB7Ci0gICAgaWYgKCF4LT5zaWduKCkgJiYg
IXktPnNpZ24oKSkKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICgheC0+c2lnbigpICYmICF5LT5zaWdu
KCkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gYWJzb2x1dGVB
bmQodm0sIHgsIHkpOworICAgIH0KICAgICAKICAgICBpZiAoeC0+c2lnbigpICYmIHktPnNpZ24o
KSkgewogICAgICAgICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHkt
Pmxlbmd0aCgpKSArIDE7CiAgICAgICAgIC8vICgteCkgJiAoLXkpID09IH4oeC0xKSAmIH4oeS0x
KSA9PSB+KCh4LTEpIHwgKHktMSkpCiAgICAgICAgIC8vID09IC0oKCh4LTEpIHwgKHktMSkpICsg
MSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKHZtLCB4LCByZXN1
bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwg
eS0+bGVuZ3RoKCkpOwotICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkx
KTsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGV4ZWMsIHgsIHJl
c3VsdExlbmd0aCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogCi0gICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWduT3B0aW9u
OjpTaWduZWQpOworICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5
LCB5LT5sZW5ndGgoKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOworICAgICAgICByZXN1bHQgPSBhYnNvbHV0ZU9yKHZtLCByZXN1bHQsIHkxKTsKKyAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywg
cmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KIAogICAgIEFTU0VSVCh4LT5zaWdu
KCkgIT0geS0+c2lnbigpKTsKQEAgLTM5NywyMyArNDI2LDM1IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6Yml0d2lzZUFuZChWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAg
c3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0g
eCAmIH4oeS0xKQotICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgYWJzb2x1dGVTdWJP
bmUodm0sIHksIHktPmxlbmd0aCgpKSk7CisgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJP
bmUoZXhlYywgeSwgeS0+bGVuZ3RoKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgeTEpOwogfQogCi1K
U0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZU9yKEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgcmVz
dWx0TGVuZ3RoID0gc3RkOjptYXgoeC0+bGVuZ3RoKCksIHktPmxlbmd0aCgpKTsKIAotICAgIGlm
ICgheC0+c2lnbigpICYmICF5LT5zaWduKCkpCisgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNp
Z24oKSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0
ZU9yKHZtLCB4LCB5KTsKKyAgICB9CiAgICAgCiAgICAgaWYgKHgtPnNpZ24oKSAmJiB5LT5zaWdu
KCkpIHsKICAgICAgICAgLy8gKC14KSB8ICgteSkgPT0gfih4LTEpIHwgfih5LTEpID09IH4oKHgt
MSkgJiAoeS0xKSkKICAgICAgICAgLy8gPT0gLSgoKHgtMSkgJiAoeS0xKSkgKyAxKQotICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUodm0sIHgsIHJlc3VsdExlbmd0aCk7
Ci0gICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKHZtLCB5LCB5LT5sZW5ndGgo
KSk7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB4LCBy
ZXN1bHRMZW5ndGgpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKyAgICAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgeS0+bGVu
Z3RoKCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAg
ICAgICAgcmVzdWx0ID0gYWJzb2x1dGVBbmQodm0sIHJlc3VsdCwgeTEpOwotICAgICAgICByZXR1
cm4gYWJzb2x1dGVBZGRPbmUodm0sIHJlc3VsdCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBT
aWduT3B0aW9uOjpTaWduZWQpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoeC0+c2lnbigpICE9
IHktPnNpZ24oKSk7CkBAIC00MjMsMjIgKzQ2NCwzNCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJp
dHdpc2VPcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAgICAgc3RkOjpz
d2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggfCAoLXkpID09IHggfCB+KHktMSkgPT0gfigoeS0x
KSAmfiB4KSA9PSAtKCgoeS0xKSAmfiB4KSArIDEpCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFi
c29sdXRlU3ViT25lKHZtLCB5LCByZXN1bHRMZW5ndGgpOworICAgIEpTQmlnSW50KiByZXN1bHQg
PSBhYnNvbHV0ZVN1Yk9uZShleGVjLCB5LCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJlc3VsdCA9IGFic29sdXRlQW5kTm90KHZt
LCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0LCBTaWdu
T3B0aW9uOjpTaWduZWQpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBhYnNv
bHV0ZUFkZE9uZShleGVjLCByZXN1bHQsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKLUpTQmln
SW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKK0pTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZVhvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKIHsKLSAgICBpZiAoIXgtPnNpZ24oKSAmJiAheS0+c2lnbigp
KQorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKCF4LT5zaWduKCkgJiYgIXktPnNpZ24oKSkgeworICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVhvcih2bSwgeCwg
eSk7CisgICAgfQogICAgIAogICAgIGlmICh4LT5zaWduKCkgJiYgeS0+c2lnbigpKSB7CiAgICAg
ICAgIGludCByZXN1bHRMZW5ndGggPSBzdGQ6Om1heCh4LT5sZW5ndGgoKSwgeS0+bGVuZ3RoKCkp
OwogICAgICAgICAKICAgICAgICAgLy8gKC14KSBeICgteSkgPT0gfih4LTEpIF4gfih5LTEpID09
ICh4LTEpIF4gKHktMSkKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25l
KHZtLCB4LCByZXN1bHRMZW5ndGgpOwotICAgICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1
Yk9uZSh2bSwgeSwgeS0+bGVuZ3RoKCkpOworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJz
b2x1dGVTdWJPbmUoZXhlYywgeCwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRl
U3ViT25lKGV4ZWMsIHksIHktPmxlbmd0aCgpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CisKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICBy
ZXR1cm4gYWJzb2x1dGVYb3Iodm0sIHJlc3VsdCwgeTEpOwogICAgIH0KICAgICBBU1NFUlQoeC0+
c2lnbigpICE9IHktPnNpZ24oKSk7CkBAIC00NDksOSArNTAyLDEyIEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICAg
ICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAogICAgIC8vIHggXiAoLXkpID09IHggXiB+KHktMSkg
PT0gfih4IF4gKHktMSkpID09IC0oKHggXiAoeS0xKSkgKyAxKQotICAgIEpTQmlnSW50KiByZXN1
bHQgPSBhYnNvbHV0ZVN1Yk9uZSh2bSwgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBKU0JpZ0ludCog
cmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZXhlYywgeSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgIHJlc3VsdCA9IGFic29sdXRl
WG9yKHZtLCByZXN1bHQsIHgpOwotICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZSh2bSwgcmVzdWx0
LCBTaWduT3B0aW9uOjpTaWduZWQpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
YWJzb2x1dGVBZGRPbmUoZXhlYywgcmVzdWx0LCBTaWduT3B0aW9uOjpTaWduZWQpOwogfQogCiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSwxMCArODA3LDEyIEBAIGlubGluZSBKU0JpZ0lu
dDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6YWJzb2x1dGVDb21wYXJlKEpTQmlnSW50KiB4
LCBKU0JpZ0luCiAgICAgcmV0dXJuIHgtPmRpZ2l0KGkpID4geS0+ZGlnaXQoaSkgPyBDb21wYXJp
c29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOwogfQog
Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRkKFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5LCBib29sIHJlc3VsdFNpZ24pCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRl
QWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3Vs
dFNpZ24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKwogICAgIGlmICh4LT5sZW5ndGgo
KSA8IHktPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQodm0sIHksIHgsIHJl
c3VsdFNpZ24pOworICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGQoZXhlYywgeSwgeCwgcmVzdWx0
U2lnbik7CiAKICAgICBpZiAoeC0+aXNaZXJvKCkpIHsKICAgICAgICAgQVNTRVJUKHktPmlzWmVy
bygpKTsKQEAgLTc2NCw4ICs4MjIsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRk
KFZNJiB2bSwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5LCBib29sIHJlc3VsdFNpZwogICAgIGlm
ICh5LT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdFNpZ24gPT0geC0+c2lnbigpID8g
eCA6IHVuYXJ5TWludXModm0sIHgpOwogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCB4LT5sZW5ndGgoKSArIDEpOwotICAgIEFTU0VSVChyZXN1
bHQpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dHJ5Q3JlYXRlV2l0aExlbmd0
aChleGVjLCB4LT5sZW5ndGgoKSArIDEpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBEaWdpdCBjYXJyeSA9IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAg
ICAgZm9yICg7IGkgPCB5LT5sZW5ndGgoKTsgaSsrKSB7CkBAIC04MDYsNyArODY1LDggQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1YihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSwgYm9vbCByZXN1bHRTaWcKICAgICBpZiAoY29tcGFyaXNvblJlc3VsdCA9PSBDb21wYXJp
c29uUmVzdWx0OjpFcXVhbCkKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJvKHZt
KTsKIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2
bSwgeC0+bGVuZ3RoKCkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRl
V2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgeC0+bGVuZ3RoKCkpOworCiAgICAgRGlnaXQgYm9ycm93
ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHktPmxlbmd0aCgpOyBp
KyspIHsKQEAgLTg1MSw3ICs5MTEsNyBAQCB2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhE
aWdpdERpdmlzb3IoVk0mIHZtLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSgogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHgtPmxlbmd0aCgpOwogICAgIGlmIChxdW90aWVudCAhPSBudWxscHRy
KSB7CiAgICAgICAgIGlmICgqcXVvdGllbnQgPT0gbnVsbHB0cikKLSAgICAgICAgICAgICpxdW90
aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCBsZW5ndGgpOworICAgICAgICAg
ICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIGxl
bmd0aCk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7
CiAgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXREaXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwg
ZGl2aXNvciwgcmVtYWluZGVyKTsKQEAgLTg2OSwxMCArOTI5LDEyIEBAIHZvaWQgSlNCaWdJbnQ6
OmFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBEaWdpdCBk
aXZpc29yLCBKCiAvLyBCb3RoIHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9IGFyZSBvcHRpb25h
bCwgZm9yIGNhbGxlcnMgdGhhdCBhcmUgb25seQogLy8gaW50ZXJlc3RlZCBpbiBvbmUgb2YgdGhl
bS4KIC8vIFNlZSBLbnV0aCwgVm9sdW1lIDIsIHNlY3Rpb24gNC4zLjEsIEFsZ29yaXRobSBELgot
dm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmln
SW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpT
QmlnSW50KiogcmVtYWluZGVyKQordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50
RGl2aXNvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRp
dmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKQogewogICAg
IEFTU0VSVChkaXZpc29yLT5sZW5ndGgoKSA+PSAyKTsKICAgICBBU1NFUlQoZGl2aWRlbmQtPmxl
bmd0aCgpID49IGRpdmlzb3ItPmxlbmd0aCgpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFRoZSB1
bnVzdWFsIHZhcmlhYmxlIG5hbWVzIGluc2lkZSB0aGlzIGZ1bmN0aW9uIGFyZSBjb25zaXN0ZW50
IHdpdGgKICAgICAvLyBLbnV0aCdzIGJvb2ssIGFzIHdlbGwgYXMgd2l0aCBHbydzIGltcGxlbWVu
dGF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtLgpAQCAtODg0LDExICs5NDYsMTIgQEAgdm9pZCBKU0Jp
Z0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZp
ZGVuZCwgSlNCaWdJbnQKICAgICAvLyBUaGUgcXVvdGllbnQgdG8gYmUgY29tcHV0ZWQuCiAgICAg
SlNCaWdJbnQqIHEgPSBudWxscHRyOwogICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKQotICAg
ICAgICBxID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgbSArIDEpOworICAgICAgICBxID0gY3JlYXRl
V2l0aExlbmd0aFVuY2hlY2tlZChleGVjLT52bSgpLCBtICsgMSk7CiAgICAgCiAgICAgLy8gSW4g
ZWFjaCBpdGVyYXRpb24sIHtxaGF0dn0gaG9sZHMge2Rpdmlzb3J9ICoge2N1cnJlbnQgcXVvdGll
bnQgZGlnaXR9LgogICAgIC8vICJ2IiBpcyB0aGUgYm9vaydzIG5hbWUgZm9yIHtkaXZpc29yfSwg
InFoYXQiIHRoZSBjdXJyZW50IHF1b3RpZW50IGRpZ2l0LgotICAgIEpTQmlnSW50KiBxaGF0diA9
IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG4gKyAxKTsKKyAgICBKU0JpZ0ludCogcWhhdHYgPSB0cnlD
cmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIG4gKyAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgIAogICAgIC8vIEQxLgogICAgIC8vIExlZnQtc2hpZnQgaW5wdXRz
IHNvIHRoYXQgdGhlIGRpdmlzb3IncyBNU0IgaXMgc2V0LiBUaGlzIGlzIG5lY2Vzc2FyeQpAQCAt
ODk4LDEyICs5NjEsMTUgQEAgdm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2
aXNvcihWTSYgdm0sIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQKICAgICBEaWdpdCBsYXN0
RGlnaXQgPSBkaXZpc29yLT5kaWdpdChuIC0gMSk7CiAgICAgdW5zaWduZWQgc2hpZnQgPSBzaXpl
b2YobGFzdERpZ2l0KSA9PSA4ID8gY2x6NjQobGFzdERpZ2l0KSA6IGNsejMyKGxhc3REaWdpdCk7
CiAKLSAgICBpZiAoc2hpZnQgPiAwKQotICAgICAgICBkaXZpc29yID0gYWJzb2x1dGVMZWZ0U2hp
ZnRBbHdheXNDb3B5KHZtLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6U2FtZVNpemVS
ZXN1bHQpOworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgZGl2aXNvciA9IGFic29sdXRl
TGVmdFNoaWZ0QWx3YXlzQ29weShleGVjLCBkaXZpc29yLCBzaGlmdCwgTGVmdFNoaWZ0TW9kZTo6
U2FtZVNpemVSZXN1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgIH0KIAogICAgIC8vIEhvbGRzIHRoZSAoY29udGludW91c2x5IHVwZGF0ZWQpIHJl
bWFpbmluZyBwYXJ0IG9mIHRoZSBkaXZpZGVuZCwgd2hpY2gKICAgICAvLyBldmVudHVhbGx5IGJl
Y29tZXMgdGhlIHJlbWFpbmRlci4KLSAgICBKU0JpZ0ludCogdSA9IGFic29sdXRlTGVmdFNoaWZ0
QWx3YXlzQ29weSh2bSwgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRP
bmVEaWdpdCk7CisgICAgSlNCaWdJbnQqIHUgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHko
ZXhlYywgZGl2aWRlbmQsIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlOjpBbHdheXNBZGRPbmVEaWdpdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIC8vIEQyLgog
ICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZGl2aWRlbmQncyBkaWdpdCAobGlrZSB0aGUgImdyYWQg
c2Nob29sIiBhbGdvcml0aG0pLgpAQCAtMTAzMSwxNCArMTA5NywxNiBAQCB2b2lkIEpTQmlnSW50
OjppbnBsYWNlUmlnaHRTaGlmdCh1bnNpZ25lZCBzaGlmdCkKIH0KIAogLy8gQWx3YXlzIGNvcGll
cyB0aGUgaW5wdXQsIGV2ZW4gd2hlbiB7c2hpZnR9ID09IDAuCi1KU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShWTSYgdm0sIEpTQmlnSW50KiB4LCB1bnNpZ25l
ZCBzaGlmdCwgTGVmdFNoaWZ0TW9kZSBtb2RlKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0
ZUxlZnRTaGlmdEFsd2F5c0NvcHkoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgdW5zaWdu
ZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoc2hpZnQgPCBkaWdp
dEJpdHMpOwogICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwogCiAgICAgdW5zaWduZWQgbiA9IHgt
Pmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IG1vZGUgPT0gTGVmdFNoaWZ0
TW9kZTo6QWx3YXlzQWRkT25lRGlnaXQgPyBuICsgMSA6IG47Ci0gICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7CisgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IHRyeUNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgcmVzdWx0TGVuZ3RoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXNoaWZ0KSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyBpKyspCkBAIC0xMDk1LDggKzExNjMs
NyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUJpdHdpc2VPcChWTSYgdm0s
IEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgRQogCiAgICAgQVNTRVJUKG51bVBhaXJzID09IHN0
ZDo6bWluKHhMZW5ndGgsIHlMZW5ndGgpKTsKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBl
eHRyYURpZ2l0cyA9PSBFeHRyYURpZ2l0c0hhbmRsaW5nOjpDb3B5ID8geExlbmd0aCA6IG51bVBh
aXJzOwotICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoKHZtLCByZXN1bHRM
ZW5ndGgpOwotCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNr
ZWQodm0sIHJlc3VsdExlbmd0aCk7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkg
PCBudW1QYWlyczsgaSsrKQogICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIG9wKHgtPmRpZ2l0
KGkpLCB5LT5kaWdpdChpKSkpOwpAQCAtMTE0NCw3ICsxMjExLDcgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjphYnNvbHV0ZVhvcihWTSYgdm0sIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKICAgICBy
ZXR1cm4gYWJzb2x1dGVCaXR3aXNlT3Aodm0sIHgsIHksIEV4dHJhRGlnaXRzSGFuZGxpbmc6OkNv
cHksIFN5bW1ldHJpY09wOjpTeW1tZXRyaWMsIGRpZ2l0T3BlcmF0aW9uKTsKIH0KICAgICAKLUpT
QmlnSW50KiBKU0JpZ0ludDo6YWJzb2x1dGVBZGRPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgU2ln
bk9wdGlvbiBzaWduT3B0aW9uKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZUFkZE9uZShF
eGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uIHNpZ25PcHRpb24pCiB7CiAg
ICAgdW5zaWduZWQgaW5wdXRMZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICAvLyBUaGUgYWRkaXRp
b24gd2lsbCBvdmVyZmxvdyBpbnRvIGEgbmV3IGRpZ2l0IGlmIGFsbCBleGlzdGluZyBkaWdpdHMg
YXJlCkBAIC0xMTU4LDcgKzEyMjUsOSBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFic29sdXRlQWRk
T25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlvbikKICAgICB9CiAK
ICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSBpbnB1dExlbmd0aCArIHdpbGxPdmVyZmxvdzsK
LSAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlV2l0aExlbmd0aCh2bSwgcmVzdWx0TGVuZ3Ro
KTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChleGVjLCByZXN1
bHRMZW5ndGgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIERpZ2l0IGNhcnJ5ID0gMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5wdXRM
ZW5ndGg7IGkrKykgewpAQCAtMTE3MiwxNiArMTI0MSwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OmFic29sdXRlQWRkT25lKFZNJiB2bSwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24gc2lnbk9wdGlv
bikKICAgICAgICAgQVNTRVJUKCFjYXJyeSk7CiAKICAgICByZXN1bHQtPnNldFNpZ24oc2lnbk9w
dGlvbiA9PSBTaWduT3B0aW9uOjpTaWduZWQpOwotICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJp
bSh2bSk7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMtPnZtKCkpOwogfQogCi0v
LyBMaWtlIHRoZSBhYm92ZSwgYnV0IHlvdSBjYW4gc3BlY2lmeSB0aGF0IHRoZSBhbGxvY2F0ZWQg
cmVzdWx0IHNob3VsZCBoYXZlCi0vLyBsZW5ndGgge3Jlc3VsdExlbmd0aH0sIHdoaWNoIG11c3Qg
YmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMge3gtPmxlbmd0aCgpfS4KLUpTQmlnSW50KiBKU0JpZ0lu
dDo6YWJzb2x1dGVTdWJPbmUoVk0mIHZtLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVzdWx0TGVu
Z3RoKQorSlNCaWdJbnQqIEpTQmlnSW50OjphYnNvbHV0ZVN1Yk9uZShFeGVjU3RhdGUqIGV4ZWMs
IEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCF4LT5p
c1plcm8oKSk7CiAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+PSB4LT5sZW5ndGgoKSk7Ci0gICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIHJlc3VsdExlbmd0aCk7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gdHJ5Q3JlYXRlV2l0aExlbmd0aChl
eGVjLCByZXN1bHRMZW5ndGgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CiAgICAgRGlnaXQgYm9y
cm93ID0gMTsKQEAgLTEzNTQsOCArMTQyNSw2IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdH
ZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJhZGl4KQogICAg
ICAgICBkbyB7CiAgICAgICAgICAgICBEaWdpdCBjaHVuazsKICAgICAgICAgICAgIGFic29sdXRl
RGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBj
aHVuayk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdCk7Ci0KICAgICAgICAgICAgIGRpdmlkZW5k
ID0gJnJlc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2h1bmtDaGFy
czsgaSsrKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0
c1tjaHVuayAlIHJhZGl4XSk7CkBAIC0xNDE0LDggKzE0ODMsNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OnJpZ2h0VHJpbShWTSYgdm0pCiAgICAgICAgIHJldHVybiB0aGlzOwogCiAgICAgdW5zaWdu
ZWQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKLSAgICBKU0JpZ0ludCogdHJpbW1lZEJp
Z0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5ld0xlbmd0aCk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQodHJpbW1lZEJpZ0ludCk7CisgICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVX
aXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZXdMZW5ndGgpOwogICAgIHN0ZDo6Y29weShkYXRhU3Rv
cmFnZSgpLCBkYXRhU3RvcmFnZSgpICsgbmV3TGVuZ3RoLCB0cmltbWVkQmlnSW50LT5kYXRhU3Rv
cmFnZSgpKTsgCiAKICAgICB0cmltbWVkQmlnSW50LT5zZXRTaWduKHRoaXMtPnNpZ24oKSk7CkBA
IC0xNDM5LDcgKzE1MDcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZQogICAgICAgICAgICAg
Ly8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IChiaXRzTWluICsgZGlnaXRCaXRzIC0gMSkgLyBkaWdpdEJpdHM7CiAgICAg
ICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aCkgewotICAgICAgICAgICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5n
dGhVbmNoZWNrZWQodm0sIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKaW5kZXggYTYyZTEzOGFkNjY1NTNjOTM5NTg2YmU2OTVhMWRlMTVhZTM4ZTQ1MC4u
YWI4ZmY1YWY1ZDY3ZjRiNjcwNDFiMjY1Y2EyNTk3ZjgwYmM1NDQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhW
TSYpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aChWTSYsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiB0cnlDcmVhdGVXaXRoTGVuZ3RoKEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRo
TGVuZ3RoVW5jaGVja2VkKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlRnJvbShWTSYsIGludDMyX3QgdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0lu
dCogY3JlYXRlRnJvbShWTSYsIHVpbnQzMl90IHZhbHVlKTsKQEAgLTEwOCwxNSArMTA5LDE1IEBA
IHB1YmxpYzoKICAgICAKICAgICBDb21wYXJpc29uUmVzdWx0IHN0YXRpYyBjb21wYXJlVG9Eb3Vi
bGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWRkKFZN
JiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHN1YihW
TSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBhZGQo
RXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIHN1YihFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogICAgIHN0YXRp
YyBKU0JpZ0ludCogZGl2aWRlKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7
CiAgICAgc3RhdGljIEpTQmlnSW50KiByZW1haW5kZXIoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIHVuYXJ5TWludXMoVk0mLCBKU0Jp
Z0ludCogeCk7CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VBbmQoVk0mLCBKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKFZNJiwg
SlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIGJpdHdpc2VY
b3IoVk0mLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0YXRpYyBKU0JpZ0ludCog
Yml0d2lzZUFuZChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworICAgIHN0
YXRpYyBKU0JpZ0ludCogYml0d2lzZU9yKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSk7CisgICAgc3RhdGljIEpTQmlnSW50KiBiaXR3aXNlWG9yKEV4ZWNTdGF0ZSosIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSk7CiAKIHByaXZhdGU6CiAKQEAgLTEzOSwxNCArMTQwLDE0IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoRGlnaXREaXZpc29yKFZN
JiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0
JiByZW1haW5kZXIpOwogICAgIHN0YXRpYyB2b2lkIGludGVybmFsTXVsdGlwbHlBZGQoSlNCaWdJ
bnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCB1bnNpZ25lZCwgSlNCaWdJ
bnQqIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgbXVsdGlwbHlBY2N1bXVsYXRlKEpTQmlnSW50
KiBtdWx0aXBsaWNhbmQsIERpZ2l0IG11bHRpcGxpZXIsIEpTQmlnSW50KiBhY2N1bXVsYXRvciwg
dW5zaWduZWQgYWNjdW11bGF0b3JJbmRleCk7Ci0gICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZX
aXRoQmlnSW50RGl2aXNvcihWTSYsIEpTQmlnSW50KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlz
b3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmlnSW50KiogcmVtYWluZGVyKTsKKyAgICBzdGF0
aWMgdm9pZCBhYnNvbHV0ZURpdldpdGhCaWdJbnREaXZpc29yKEV4ZWNTdGF0ZSosIEpTQmlnSW50
KiBkaXZpZGVuZCwgSlNCaWdJbnQqIGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIEpTQmln
SW50KiogcmVtYWluZGVyKTsKICAgICAKICAgICBlbnVtIGNsYXNzIExlZnRTaGlmdE1vZGUgewog
ICAgICAgICBTYW1lU2l6ZVJlc3VsdCwKICAgICAgICAgQWx3YXlzQWRkT25lRGlnaXQKICAgICB9
OwogICAgIAotICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVMZWZ0U2hpZnRBbHdheXNDb3B5
KFZNJiwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsKKyAgICBz
dGF0aWMgSlNCaWdJbnQqIGFic29sdXRlTGVmdFNoaWZ0QWx3YXlzQ29weShFeGVjU3RhdGUqLCBK
U0JpZ0ludCogeCwgdW5zaWduZWQgc2hpZnQsIExlZnRTaGlmdE1vZGUpOwogICAgIHN0YXRpYyBi
b29sIHByb2R1Y3RHcmVhdGVyVGhhbihEaWdpdCBmYWN0b3IxLCBEaWdpdCBmYWN0b3IyLCBEaWdp
dCBoaWdoLCBEaWdpdCBsb3cpOwogCiAgICAgRGlnaXQgYWJzb2x1dGVJbnBsYWNlQWRkKEpTQmln
SW50KiBzdW1tYW5kLCB1bnNpZ25lZCBzdGFydEluZGV4KTsKQEAgLTE3Niw4ICsxNzcsOCBAQCBw
cml2YXRlOgogICAgICAgICBVbnNpZ25lZAogICAgIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IGFic29sdXRlQWRkT25lKFZNJiwgSlNCaWdJbnQqIHgsIFNpZ25PcHRpb24pOwotICAgIHN0YXRp
YyBKU0JpZ0ludCogYWJzb2x1dGVTdWJPbmUoVk0mLCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmVz
dWx0TGVuZ3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkT25lKEV4ZWNTdGF0
ZSosIEpTQmlnSW50KiB4LCBTaWduT3B0aW9uKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29s
dXRlU3ViT25lKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByZXN1bHRMZW5ndGgp
OwogCiAgICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJzLgogICAgIHN0YXRpYyBEaWdpdCBk
aWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpOwpAQCAtMjAzLDcgKzIwNCw3
IEBAIHByaXZhdGU6CiAgICAgSlNCaWdJbnQqIHJpZ2h0VHJpbShWTSYpOwogCiAgICAgdm9pZCBp
bnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7Ci0gICAgc3Rh
dGljIEpTQmlnSW50KiBhYnNvbHV0ZUFkZChWTSYsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwg
Ym9vbCByZXN1bHRTaWduKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFic29sdXRlQWRkKEV4ZWNT
dGF0ZSosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSwgYm9vbCByZXN1bHRTaWduKTsKICAgICBz
dGF0aWMgSlNCaWdJbnQqIGFic29sdXRlU3ViKFZNJiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
LCBib29sIHJlc3VsdFNpZ24pOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNp
emUodW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKaW5kZXggYTA4OGFkMWNiYzIwNzhkNjIwNWFmZjBhYmFkM2RhNzNhOTZmNWIy
Ni4uODM2Zjk1M2MzYTg3YzU3ZDVjNjIyZmJmNGM3MDUwOTA1MDc1MWJlYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTY5LDggKzY5LDEwIEBA
IE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQodm0sIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojph
ZGQoY2FsbEZyYW1lLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDYxZDUzM2NmNDVmNmJkMDMyZGI5OGViNmQ0
ZTI0MDQyYWI0YTUyYjMuLjBlYTk4MjkxYmI2ODg3M2JiM2JhYjEwNDYxODYxZTkxNThhODdiZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTM0OCw4
ICszNDgsMTAgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1Yih2bSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7CisgICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1
YihleGVjLCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogICAgIH0KQEAgLTM2OCw4ICszNzAsMTAgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzTXVsKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQorICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgeworICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShzdGF0
ZSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgICAgIH0KIAogICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlw
bGljYXRpb24uIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTQ3YWUxZmRiYWM0MjI3MGNhMDZm
ZjNlZmNlMzg1NjAxYzcwZDEwZi4uYmI0MjhjNGZlODNlZTE0NTM1MjQ4ZDc1MGZmNjZhMTRhZTY1
MDBmMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0yMSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0JpZ0ludF0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgg
c2hvdWxkIHRocm93IHdoZW4gbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBKU0JpZ0ludDo6bWF4TGVu
Z3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4
MzYKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgWXVzdWtlIFN1enVraS4K
KworICAgICAgICAqIHN0cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanM6IEFkZGVk
LgorCiAyMDE4LTExLTIxICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVockBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEVuYWJsZSBKSVQgb24gQVJNL0xpbnV4CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LW91dC1vZi1tZW1vcnktdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRjZmQ2Zjg0Y2MyNmU5ZGI5
NDlhYWVjZWUzNmJiMmFjOTI2NzEzOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtb3V0LW9mLW1lbW9yeS10ZXN0cy5qcwpAQCAtMCwwICsxLDYzIEBACisvL0AgcnVu
RGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD1mYWxzZSIpCisKK2Z1bmN0
aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGxzaGlmdCh5KSB7CisgICAgbGV0IG91dCA9
IDFuOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeTsgaSsrKSB7CisgICAgICAgIG91dCAqPSAz
NDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuOworICAgIH0KKworICAgIHJl
dHVybiBvdXQ7Cit9CisKK2xldCBhID0gbHNoaWZ0KDgwNjQpOworZm9yIChsZXQgaSA9IDA7IGkg
PCAyNTY7IGkrKykgeworICAgIGEgKj0gMTg0NDY3NDQwNzM3MDk1NTE2MTVuOworfQorCit0cnkg
eworICAgIGxldCBiID0gYSArIDFuOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBP
dXRPZk1lbW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0
Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0
ZWQgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxl
dCBiID0gYSAtICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1l
bW9yeUVycm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkg
eworICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0
T2ZNZW1vcnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0g
YSAqICgtMW4pOworICAgIGFzc2VydChmYWxzZSwgIlNob3VsZCB0aHJvdyBPdXRPZk1lbW9yeUVy
cm9yLCBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKK30gY2F0Y2goZSkgeworICAg
IGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiLCAiRXhwZWN0ZWQgT3V0T2ZNZW1v
cnlFcnJvciwgYnV0IGdvdDogIiArIGUpOworfQorCit0cnkgeworICAgIGxldCBiID0gYSAvIGE7
CisgICAgYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUu
bWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBi
dXQgZ290OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAgbGV0IGIgPSAtYSAmIC0xbjsKKyAgICBh
c3NlcnQoZmFsc2UsICJTaG91bGQgdGhyb3cgT3V0T2ZNZW1vcnlFcnJvciwgYnV0IGV4ZWN1dGVk
IHdpdGhvdXQgZXhjZXB0aW9uIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdl
ID09ICJPdXQgb2YgbWVtb3J5IiwgIkV4cGVjdGVkIE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBnb3Q6
ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBsZXQgYiA9IGEgXiAtMW47CisgICAgYXNzZXJ0KGZh
bHNlLCAiU2hvdWxkIHRocm93IE91dE9mTWVtb3J5RXJyb3IsIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0
IG9mIG1lbW9yeSIsICJFeHBlY3RlZCBPdXRPZk1lbW9yeUVycm9yLCBidXQgZ290OiAiICsgZSk7
Cit9CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>