<?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>145673</bug_id>
          
          <creation_ts>2015-06-04 16:46:05 -0700</creation_ts>
          <short_desc>[JSC] Always track out-of-bounds array access explicitly instead of relying on the slow case</short_desc>
          <delta_ts>2015-06-08 08:21:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145754</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099674</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-04 16:46:05 -0700</bug_when>
    <thetext>[JSC] Always track out-of-bounds array access explicitly instead of relying on the slow case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099680</commentid>
    <comment_count>1</comment_count>
      <attachid>254317</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-04 17:06:44 -0700</bug_when>
    <thetext>Created attachment 254317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099690</commentid>
    <comment_count>2</comment_count>
      <attachid>254319</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-04 17:39:49 -0700</bug_when>
    <thetext>Created attachment 254319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099699</commentid>
    <comment_count>3</comment_count>
      <attachid>254319</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-04 18:02:43 -0700</bug_when>
    <thetext>Comment on attachment 254319
Patch

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

r=me

How much of a speedup is this worth?

&gt; Source/JavaScriptCore/ChangeLog:41
&gt; +        There are a few important cases that are still not covered correctly:

When you say &quot;correctly&quot; I think you might be talking about a bug. I think you meant &quot;optimally&quot;.

&gt; Source/JavaScriptCore/bytecode/ArrayProfile.h:213
&gt; +    void setOutOfBounds() { m_outOfBounds = true; }

When I first read this, I though &quot;out of bounds&quot; meant &quot;past length&quot;. But now I see that it actually means &quot;past length or a hole value&quot;. I wonder if we can use a clearer name for this. How about &quot;sawHole&quot;? Technically, things past length are holes, just like unfilled items within length.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1481
&gt; +static bool canUseFastArgumentAccess(JSObject&amp; object, uint32_t index)

I think I would call this &quot;canAccessArgumentIndexQuickly&quot; to match the function name in DirectArguments and ScopedArguments.

I agree that it&apos;s surprising that arguments objects have different notions of fast indexed access as compared to other objects, but I think it&apos;s probably OK.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1484
&gt; +    // For Arguments, we don&apos;t have holes creating out-of-bounds access, but we have &quot;overrodeThings()&quot; that
&gt; +    // moves us to slow path.

I think this comment is slightly inaccurate: see below.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1489
&gt; +        if (!directArguments-&gt;overrodeThings() &amp;&amp; index &lt; directArguments-&gt;internalLength())

Can we just call DirectArguments::canAccessIndexQuickly here instead? Seems like better encapsulation that way.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1495
&gt; +        if (!scopedArguments-&gt;overrodeThings() &amp;&amp; index &lt; scopedArguments-&gt;internalLength())

Same comment. In this case, from reading ScopedArguments::canAccessIndexQuickly, I think this test is slightly wrong from an optimization perspective. ScopeArguments much check m_table to verify that an argument is stored inside the ScopedArguments object. In the DFG, failing this check will cause an OSR exit. So, it would be good to use a generic byVal operation instead of optimized access in the case where the m_table entry was present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099707</commentid>
    <comment_count>4</comment_count>
      <attachid>254319</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-04 18:23:00 -0700</bug_when>
    <thetext>Comment on attachment 254319
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1489
&gt;&gt; +        if (!directArguments-&gt;overrodeThings() &amp;&amp; index &lt; directArguments-&gt;internalLength())
&gt; 
&gt; Can we just call DirectArguments::canAccessIndexQuickly here instead? Seems like better encapsulation that way.

After discussing with Geoff, looks like we should have Arguments::canAccessArgumentIndexQuicklyInDFG()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099763</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-04 22:21:09 -0700</bug_when>
    <thetext>Committed r185240: &lt;http://trac.webkit.org/changeset/185240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100366</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-08 08:21:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Committed r185240: &lt;http://trac.webkit.org/changeset/185240&gt;

It broke the ARM Linux build, new bug report with the fix: bug145754 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254317</attachid>
            <date>2015-06-04 17:06:44 -0700</date>
            <delta_ts>2015-06-04 17:39:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145673-20150604170623.patch</filename>
            <type>text/plain</type>
            <size>63822</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NTlhOTIwZDA1MDkxNjJmODhlNGYzOGMzN2ExZmVkMmY2NThjZTdhLi5hYzg4NGQxOWM1ZWE1YTIx
ZWJmMmNjNjc3ODMxNDBjYzJjMDk0YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMTUtMDYtMDQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWx3YXlzIHRyYWNrIG91dC1vZi1ib3VuZHMgYXJyYXkg
YWNjZXNzIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBzbG93IGNhc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTY3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHks
IHdlIHdlcmUgZGVjaWRpbmcgdG8gdXNlIG91dC1vZi1ib3VuZHMgc3BlY3VsYXRpb24gYmFzZWQg
b24gdHdvIGluZm9ybWF0aW9uczoKKyAgICAgICAgLUV4cGxpY2l0bHkgZGV0ZWN0ZWQgb3V0LW9m
LWJvdW5kcyBhY2Nlc3NlcyB0cmFja2VkIG9uIEFycmF5UHJvZmlsZS4KKyAgICAgICAgLVRoZSBu
dW1iZXIgb2YgdGltZSB3ZSB0b29rIHRoZSBzbG93IGNhc2VzIGluIHRoZSBiYXNlbGluZSBKSVQu
CisKKyAgICAgICAgVGhlIGhldXJpc3RpYyBiYXNlZCBvbiBzbG93IGNhc2VzIHdhcyBhIGxpdHRs
ZSB0b28gZnJhZ2lsZS4KKworICAgICAgICBJbiBzb21lIGNhc2VzLCB3ZSB3ZXJlIHJ1bm5pbmcg
aW50byB0aGF0IGxpbWl0IGp1c3QgYmVjYXVzZSB0aGUgaW5kZXhpbmcgdHlwZSBjaGFuZ2VzIGJl
dHdlZW4KKyAgICAgICAgdHdvIHZhbHVlcyAodHlwaWNhbGx5IEludDMyQXJyYXkgYW5kIERvdWJs
ZUFycmF5KS4gU29tZXRpbWVzIHdlIHdlcmUganVzdCB1bmx1Y2t5IG9uIHdoYXQKKyAgICAgICAg
d2UgdXNlZCBmb3IgdGhlIGlubGluZSBjYWNoZS4KKworICAgICAgICBJbiBLcmFrZW4sIHRoaXMg
d2FzIGh1cnRpbmcgdXMgb24gImF1ZGlvLWJlYXQtZGV0ZWN0aW9uIiBhbmQgImF1ZGlvLWZmdCIu
IFRoZSBhcnJheSB0eXBlcyB3ZSBzZWUKKyAgICAgICAgY2hhbmdlIGJldHdlZW4gSW50MzIgYW5k
IERvdWJsZS4gV2UgcnVuIGludG8gdGhlIHNsb3cgcGF0aCBhIGJpdCBidXQgbmV2ZXIgaGl0Cisg
ICAgICAgIG91dC1vZi1ib3VuZHMuCisKKyAgICAgICAgQnkgdGhlIHRpbWUgd2UgY29tcGlsZSBp
biBERkcsIHdlIGhhdmUgc3RhYmxlIERvdWJsZSBBcnJheXMgYnV0IHdlIHNwZWN1bGF0ZSBvdXQt
b2YtYm91bmRzIGJhc2VkCisgICAgICAgIG9uIHRoZSBudW1iZXIgb2Ygc2xvdyBjYXNlcyB3ZSB0
b29rLiBCZWNhdXNlIG9mIHRoYXQsIHdlIHN0YXJ0IGJveGluZyB0aGUgZG91YmxlIG9uIEdldEJ5
VmFsLAorICAgICAgICB1c2luZyBEb3VibGVSZXAsIGV0Yy4gYWRkaW5nIGEgdG9uIG9mIG92ZXJo
ZWFkIG92ZXIgb3RoZXJ3aXNlIHZlcnkgc2ltcGxlIG9wZXJhdGlvbnMuCisKKyAgICAgICAgV2Vi
WFBSVCB3YXMgYWxzbyBzdWZmZXJpbmcgZnJvbSB0aGlzIHByb2JsZW0gYnV0IHRoZSBvdGhlciB3
YXkgYXJyb3VuZDogd2Ugd2VyZSBtaXNzaW5nCisgICAgICAgIHRoZSBvdXQtb2YtYm91bmRzIGFj
Y2Vzc2VzIGR1ZSB0byBjaGFuZ2VzIGluIGluZGV4aW5nIHR5cGVzLCB3ZSB3ZXJlIGJlbG93IHRo
ZSB0aHJlc2hvbGQKKyAgICAgICAgb2Ygc2xvdy1wYXRoIGFjY2VzcywgdGh1cyB3ZSBwcmVkaWN0
ZWQgaW4tYm91bmRzIGFjY2Vzc2VzIGZvciBjb2RlIHRoYXQgd2FzIGRvaW5nIHBsZW50eQorICAg
ICAgICBvZiBvdXQtb2YtYmFuZHMuCisKKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBw
cm9ibGVtIGJ5IHRyYWNraW5nIHRoZSBvdXQtb2YtYm91bmRzIGFjY2VzcyBleHBsaWNpdGx5IGFu
eSB0aW1lIHdlIGdvCisgICAgICAgIGludG8gdGhlIHNsb3cgcGF0aCBpbiBiYXNlbGluZSBKSVQu
IFNpbmNlIHdlIG5vIGxvbmdlciBtaXNzIGFueSBvdXQtb2YtYm91bmRzLCB3ZSBjYW4gcmVtb3Zl
CisgICAgICAgIHRoZSBzbG93LXBhdGggaGV1cmlzdGljLgorCisgICAgICAgIFRoZXJlIGlzIG5l
dyBhZGRpdGlvbmFsIHNwZWNpYWwgY2FzZSBpbiB0aGUgQyBjb2RlIHJlZ2FyZGluZyBvdXQtb2Yt
Ym91bmRzOiBBcmd1bWVudHMgYWNjZXNzLgorICAgICAgICBNaXNwcmVkaWN0aW5nIG91dC1vZi1i
b3VuZHMgYWNjZXNzZXMgb24gYXJndW1lbnRzIGlzIGEgZGlzYXN0ZXIgZm9yIHBlcmZvcm1hbmNl
LCBzbyB0aG9zZSBhcmUKKyAgICAgICAgdHJhY2tlZCBpbiB0aGUgd2F5IERGRyBleHBlY3QgaXQu
CisKKworICAgICAgICBUaGVyZSBhcmUgYSBmZXcgaW1wb3J0YW50IGNhc2VzIHRoYXQgYXJlIHN0
aWxsIG5vdCBjb3ZlcmVkIGNvcnJlY3RseToKKyAgICAgICAgLVB1dEJ5VmFsIG9uIEFyZ3VtZW50
cy4KKyAgICAgICAgLUdldC9QdXQgQnlWYWwgb24gVHlwZWRBcnJheS4KKyAgICAgICAgVGhvc2Ug
YXJlIHNpbXBseSBub3QgdXNlZCBieSBERkcgaW4gYW55IHdheS4gVHlwZWRBcnJheXMgc2hvdWxk
IHByb2JhYmx5IGJlIGxvb2tlZCBhdCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICBUaGUgaW5saW5lLWNhY2hlIHJlcGF0Y2ggY2Fz
ZXMgbm93IHVwZGF0ZSB0aGUgQXJyYXlQcm9maWxlIGluZm9ybWF0aW9uLiBUaGlzIGhhcyBubyB2
YWx1ZSBpbiBiYXNlbGluZQorICAgICAgICBKSVQgYnV0IGl0IGhlbHBzIGF2b2lkaW5nIG9uZSBy
ZWNvbXBpbGUgaW4gREZHIGZvciB0aGUgbWlzc2luZyBBcnJheVByb2ZpbGUgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm9maWxlOjpzZXRPdXRPZkJvdW5kcyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFycmF5TW9kZUNvbnNpZGVyaW5nU2xv
d1BhdGgpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FuVXNlRmFzdEFyZ3VtZW50QWNjZXNzKToKKyAgICAgICAg
VGhpcyBpcyBub3QgbXkgZmF2b3JpdGUgcGFydCBvZiB0aGlzIHBhdGNoLgorCisgICAgICAgIEkg
dHJpZWQgaGF2aW5nIEpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHkoKSBoYW5kbGUgYXJndW1l
bnRzIHdoaWNoIHdvdWxkIHB1dCBldmVyeXRoaW5nCisgICAgICAgIG9uIHRoZSBnZW5lcmljIHBh
dGguIFVuZm9ydHVuYXRlbHksIHRoYXQgY29kZSBpcyB2ZXJ5IHBlcmZvcm1hbmNlIHNlbnNpdGl2
ZSBhbmQgc29tZSBiZW5jaG1hcmtzIHdlcmUKKyAgICAgICAgaW1wYWN0ZWQgYnkgb3ZlciAxMCUK
KworICAgICAgICBJIGxlZnQgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseSgpIGFsb25lLCBh
bmQgSSBhZGRlZCB0aGUgY2FuVXNlRmFzdEFyZ3VtZW50QWNjZXNzKCkgbWlycm9yaW5nCisgICAg
ICAgIGhvdyBERkcgdXNlcyBvdXQtb2YtYm91bmRzIGZvciBBcmd1bWVudHMuCisKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VGdW5j
dGlvbnMuY3BwOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMtYmFzaWNzLmpzOiBBZGRlZC4KKyAgICAgICAgKG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5
RWFybHlPdXRPZkJvdW5kcyk6CisgICAgICAgICh0ZXN0SW50MzJBcnJheUVhcmx5T3V0T2ZCb3Vu
ZHMpOgorICAgICAgICAodGVzdEluZGV4aW5nVHlwZUNoYW5nZXNPbkludDMyQXJyYXkpOgorICAg
ICAgICAob3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMpOgorICAgICAg
ICAodGVzdFN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMpOgorICAgICAgICAodGVzdEluZGV4aW5n
VHlwZUNoYW5nZXNPblN0cmluZ0FycmF5KToKKyAgICAgICAgKG9wYXF1ZUdldEJ5VmFsT25TdHJp
bmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMpOgorICAgICAgICAodGVzdFN0cmluZ0FuZElu
dDMyQXJyYXlIb3RPdXRPZkJvdW5kcyk6CisgICAgICAgIChvcGFxdWVHZXRCeVZhbE9uRG91Ymxl
QXJyYXlIb3RPdXRPZkJvdW5kcyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3B1dC1ieS12YWwt
b3V0LW9mLWJvdW5kcy1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAob3BhcXVlUHV0QnlWYWxP
bkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKToKKyAgICAgICAgKHRlc3RJbnQzMkFycmF5RWFy
bHlPdXRPZkJvdW5kcyk6CisgICAgICAgIChvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RP
dXRPZkJvdW5kcyk6CisgICAgICAgICh0ZXN0U3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcyk6CisK
IDIwMTUtMDYtMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdh
cmRlbmluZzogZml4IGJyb2tlbiBDTG9vcCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKaW5kZXggMWMwMGMyMzNlYWYxZTRkOWU0MjM0
NTFlMWExOTA0ZTk0ZjkwZWFlMi4uYjhhZGUyMjIzOTQ1ZTkxOGFhNjQwMmFjYTkxMWI4MTUyZWNk
YjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5jcHAKQEAgLTk0LDEyICs5NCwxOCBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFycmF5TW9kZXMgYXJyYXlNb2RlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
RmxvYXQ2NEFycmF5TW9kZSIpOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaykKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAg
ICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBjb2RlQmxvY2stPmhlYXAoKS0+c3RydWN0
dXJlSURUYWJsZSgpLmdldChtX2xhc3RTZWVuU3RydWN0dXJlSUQpOworICAgIGNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAg
IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7Cit9CisKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQorewogICAgIG1fb2Jz
ZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1
cmUpOwogICAgIAogICAgIGlmICghbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCkBAIC0xMTQs
NyArMTIwLDYgQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2MKICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQogICAgICAgICAm
JiAhZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0
cnVjdHVyZSkpCiAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7
Ci0gICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAogQ1N0cmluZyBBcnJheVByb2Zp
bGU6OmJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuaAppbmRleCA3MGEzODZlZmEzZWRlNGQ2MDM4ZjhjMzEwZjg5MmRjOTFlMDJm
YTUzLi5jMjhhY2E0MDhiNWQ5NGRlM2EwYjhlMjVmNjBjM2QzYjg2ZGJkZTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0yMDksNiArMjA5
LDggQEAgcHVibGljOgogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVy
ZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5TW9kZXMq
IGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0K
ICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3Jl
VG9Ib2xlOyB9CisKKyAgICB2b2lkIHNldE91dE9mQm91bmRzKCkgeyBtX291dE9mQm91bmRzID0g
dHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyByZXR1cm4gJm1fb3V0
T2ZCb3VuZHM7IH0KICAgICAKICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkBAIC0yMTcsNiArMjE5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB2
b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwg
Q29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1
cmUpOwogICAgIAogICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQog
ICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA1ZjI0MTU2MWY3YjgwYmFiMzUxZWEwZDViNWE1ODRmYmVjODBkNjQ3Li5iMTIyOTNjOWRiNGRk
ODA2MTg1Mzc2MWYxMTRlNTY0MDkxNDkzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzQ1LDcgKzc0NSw4IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ayk7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsIHByb2Zp
bGUsIGFjdGlvbiwgZmFsc2UpOworICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS0+b3V0
T2ZCb3VuZHMobG9ja2VyKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVk
KGxvY2tlciwgcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgfQogICAgIAogICAgIEFy
cmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXlQcm9maWxlKiBwcm9maWxlKQpAQCAtNzUzLDIxICs3
NTQsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZ2V0QXJyYXlNb2RlKHByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZUNvbnNp
ZGVyaW5nU2xvd1BhdGgoQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlv
bikKLSAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgCi0gICAgICAgIHByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jayk7Ci0gICAgICAgIAotICAgICAgICBib29sIG1ha2VTYWZlID0KLSAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICB8fCBwcm9maWxlLT5vdXRPZkJvdW5k
cyhsb2NrZXIpOwotICAgICAgICAKLSAgICAgICAgQXJyYXlNb2RlIHJlc3VsdCA9IEFycmF5TW9k
ZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKICAgICBOb2RlKiBtYWtl
U2FmZShOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKQEAgLTMw
OTksNyArMzA4NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGlj
dGlvbldpdGhvdXRPU1JFeGl0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGVDb25zaWRl
cmluZ1Nsb3dQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6
OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAg
ICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRv
R3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGlj
dGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGdldEJ5VmFsKTsKQEAgLTMxMTEsNyAr
MzA5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwog
Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlQ29uc2lkZXJp
bmdTbG93UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpX
cml0ZSk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KSk7CkBAIC0zODY0LDcgKzM4NTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6
IHsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1v
ZGUgPSBnZXRBcnJheU1vZGVDb25zaWRlcmluZ1Nsb3dQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbls0
XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAg
ICBOb2RlKiBoYXNJdGVyYWJsZVByb3BlcnR5ID0gYWRkVG9HcmFwaChIYXNJbmRleGVkUHJvcGVy
dHksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCBoYXNJdGVyYWJsZVByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCmluZGV4IDI1NWUzOGFmOWZlNWJlMDJmZGNlYzRmOGUzNzczMjQ1OTYzZjBkYzAuLmU0
NzY2Mjc1NDc5ODJhZmJlMTIzNWViNGUyOTk1ZjBlMDM3NTU2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNzM0LDYgKzczNCwxOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc2KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgR1BSUmVnIGFyZzYsIFRy
dXN0ZWRJbW1QdHIgYXJnNykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzYpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNyk7CisgICAgfQor
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKQEAgLTE0NjYsNiArMTQ3OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAg
eworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAg
IHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAg
cG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CkBAIC0xNzI2LDYgKzE3NDYsMTUgQEAg
cHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCwgR1BSUmVnIGFyZzUsIEdQUlJlZyBhcmc2LCBUcnVzdGVkSW1tUHRyIGFyZzcpCisgICAg
eworICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMyk7CisgICAgICAg
IHBva2UoYXJnNiwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKKyAgICAgICAgcG9rZShhcmc1
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRy
IGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7CiAgICAgICAgIHBva2UoYXJn
NSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKQEAgLTE4MzAsNiArMTg1OSwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHNldHVwVGhyZWVTdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmcz
LCBhcmc0KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0
ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwVGhyZWVTdHViQXJnc0dQUjxHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzPihhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjph
cmd1bWVudEdQUjQpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBU
d29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
ND4oYXJnMSwgYXJnNCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmZWY1YTIxZjdjY2Q5
N2UxYjYxNGYyZjBiYjQyZDRlMmZhYjk1NzE4Li4zNjIwOGYxNTQ5OGY3NDk3M2U0ZWQ0ZmE2MGE0
Zjk5NDcwNmUyMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcwMiw2ICs3MDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSWRjLCBpbnQsIEdQUlJlZywgY29uc3QgSWRl
bnRpZmllciopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKSiwgaW50LCBHUFJSZWcsIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQXAsIGludCwgR1BS
UmVnLCBHUFJSZWcsIEFycmF5UHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJlZyk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0MsIGlu
dCwgR1BSUmVnLCBKU0NlbGwqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiwgR1BSUmVnLCBpbnQzMl90KTsKQEAgLTc0Myw2
ICs3NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FSkpKQXAsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIEFy
cmF5UHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKWkosIFJlZ2lzdGVySUQsIGludDMyX3QsIFJlZ2lzdGVySUQpOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VKWiwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBjLCBJbnN0cnVjdGlvbiopOwpAQCAtNzU4
LDEyICs3NjAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUosIGludCwgR1BSUmVnLCBHUFJSZWcp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSWRjLCBpbnQsIEdQUlJlZywgR1BSUmVnLCBjb25zdCBJZGVudGlmaWVyKik7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
LCBpbnQsIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQXAsIGludCwgR1BS
UmVnLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBBcnJheVByb2ZpbGUqKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJl
ZywgR1BSUmVnLCBzaXplX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkos
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaU3lt
dGFiSiwgaW50LCBTeW1ib2xUYWJsZSosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKLCBS
ZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBS
ZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKQXAs
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIEFycmF5UHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKWiwgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9KSVRPcGVyYXRpb25fRUpaSiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCwg
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVpKLCBpbnQzMl90LCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMGZlNzI5
MGRkNTc0Y2I5NDg3NDVkYmFkMTE4ZDY1ODgyYWU2MGRlNS4uYTIxYzgwODhkNzhhMGU4YzZiNTA4
MThjNmJhMWY1YWE2MGQ1OTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKQEAgLTM5OSw2ICszOTksMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSiBvcGVyYXQKICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCitBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FSkpKQXAgb3BlcmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdP
cDIsIFJlZ2lzdGVySUQgcmVnT3AzLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxLCByZWdPcDIsIHJlZ09wMywgVHJ1
c3RlZEltbVB0cihhcnJheVByb2ZpbGUpKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkogb3BlcmF0aW9uLCBp
bnQgZHN0LCBHUFJSZWcgYXJnKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIoZHN0KSwgYXJnKTsKQEAgLTQ0MSw2ICs0NDcsMTIgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpKIG9wZXJhdGkKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpBcCBvcGVy
YXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIFRydXN0ZWRJbW1QdHIoYXJyYXlQcm9maWxlKSk7CisgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKwog
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb25Ob0V4
Y2VwdGlvbkNoZWNrKFZfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEpCiB7
CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwpAQCAtNTcwLDYgKzU4Miwx
MiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aQogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKSkFwIG9wZXJhdGlvbiwgaW50IGRzdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgQXJyYXlQcm9m
aWxlKiBhcnJheVByb2ZpbGUpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlf
QVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRyKGFycmF5UHJvZmlsZSkpOwor
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChv
cGVyYXRpb24sIGRzdCk7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VK
SiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiB7CiAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFn
LCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKQEAgLTYzMCw2ICs2
NDgsMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSiBvcGVyYXQKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKQXAgb3Bl
cmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMVRhZywgUmVnaXN0ZXJJRCByZWdPcDFQYXlsb2FkLCBS
ZWdpc3RlcklEIHJlZ09wMlRhZywgUmVnaXN0ZXJJRCByZWdPcDJQYXlsb2FkLCBSZWdpc3RlcklE
IHJlZ09wM1RhZywgUmVnaXN0ZXJJRCByZWdPcDNQYXlsb2FkLCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgcmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIHJl
Z09wMlBheWxvYWQsIHJlZ09wMlRhZywgcmVnT3AzUGF5bG9hZCwgcmVnT3AzVGFnLCBUcnVzdGVk
SW1tUHRyKGFycmF5UHJvZmlsZSkpOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaSiBvcGVyYXRpb24sIGludCBk
c3QsIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdpc3RlcklEIHJlZ09wMVBheWxvYWQpCiB7CiAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihkc3QpLCByZWdPcDFQ
YXlsb2FkLCByZWdPcDFUYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKaW5kZXggNzMwMzYxYWJkYzk1NTg4NTE1M2MwMzA5YWI3YzZjMTljM2Q5ODExMS4uMDUyYWU4
MzkxNjRhYmIwMWM1ZjNjYWQxMTZkMWEzZmQ5ZjM4YWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMTI1LDIxICsxMTI1LDE0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0CiAgICAgCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFz
ZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBh
cnJheSBjaGVjawotICAgIAotICAgIEp1bXAgc2tpcFByb2ZpbGluZyA9IGp1bXAoKTsKLSAgICAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHZlY3RvciBsZW5ndGggY2hlY2sKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGVtcHR5IHZhbHVlCiAgICAgCi0gICAgZW1pdEFycmF5UHJvZmls
ZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgCi0gICAgc2tpcFByb2ZpbGlu
Zy5saW5rKHRoaXMpOwotICAgIAogICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKICAgICAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIHJlZ1QwLCByZWdU
MSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlEZWZhdWx0LCBkc3QsIHJlZ1QwLCByZWdUMSwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9
IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9u
SW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDE5MjAyMjU3NDMwMmE4MWM0OTQ5MjMyNzdmZjNk
MWU3ZTc2OGIwODUuLjVmOTA0MGQ3ODJkMjZjNjY2YzM4NWNkM2RiMGYxZmE1YThmZDkxZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTEx
MjIsMjEgKzExMjIsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19pbmRleGVkX3Byb3Bl
cnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3QKICAgICAKICAgICBsaW5r
U2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBiYXNlKTsgLy8gYmFzZSBjZWxsIGNoZWNrCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgCi0gICAgSnVtcCBz
a2lwUHJvZmlsaW5nID0ganVtcCgpOwotICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
dmVjdG9yIGxlbmd0aCBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZW1wdHkgdmFs
dWUKLSAgICAKLSAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9m
aWxlKTsKLSAgICAKLSAgICBza2lwUHJvZmlsaW5nLmxpbmsodGhpcyk7Ci0gICAgCisKICAgICBM
YWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAgICAgCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEs
IHJlZ1QwKTsKICAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQs
IGRzdCwgcmVnVDEsIHJlZ1QwLCByZWdUMywgcmVnVDIpOworICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCByZWdUMSwg
cmVnVDAsIHJlZ1QzLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25J
bmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwog
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVy
bkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggMTE0YzdiNzg3OTA3NzNkZWQ2NTcxM2ViOTEwOTc1OTFhZGQ5ZTQxZS4uYTdm
Yzk0MDE4YTlkZGE4ZTNlYTg5ODlkNmE5ZGI5MzBhMzI4OTE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgorI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6
ei5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1
ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCisjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgpAQCAtNDc0LDcg
KzQ3Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFu
ZEZpbmlzaFB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAgYmFzZS0+cHV0RGlyZWN0KHZt
LCBvZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCi1zdGF0aWMgdm9pZCBwdXRC
eVZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vi
c2NyaXB0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2
YWx1ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZy
YW1lLT52bSgpOwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CkBAIC00
ODMsOCArNDg1LDEwIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsCiAgICAgICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmNhblNldEluZGV4UXVpY2tseShpKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPnNldElu
ZGV4UXVpY2tseShjYWxsRnJhbWUtPnZtKCksIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0
T2ZCb3VuZHMoKTsKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
QnlJbmRleChvYmplY3QsIGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChjYWxsRnJhbWUsIGksIHZhbHVlLCBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTQ5Niwx
MyArNTAwLDIwIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsCiAgICAgfQogfQogCi1zdGF0aWMg
dm9pZCBkaXJlY3RQdXRCeVZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIHZvaWQgZGly
ZWN0UHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBK
U1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUpCiB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKTsKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewog
ICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJldHVy
biB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1ZXMg
YXJlIHZhbGlkIGFycmF5IGluZGljZXMuCi0gICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNjcmlw
dC5hc1VJbnQzMigpKSk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGNhbGxG
cmFtZSwgc3Vic2NyaXB0LmFzVUludDMyKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Cisg
ICAgICAgIHVpbnQzMl90IGluZGV4ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIEFT
U0VSVChpc0luZGV4KGluZGV4KSk7CisgICAgICAgIGlmIChiYXNlT2JqZWN0LT5jYW5TZXRJbmRl
eFF1aWNrbHlGb3JQdXREaXJlY3QoaW5kZXgpKSB7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkoY2FsbEZyYW1lLT52bSgpLCBpbmRleCwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJv
dW5kcygpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGlu
ZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6
IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC01MjcsNyArNTM4LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHMKICAgICAgICAgYmFz
ZU9iamVjdC0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKICAgICB9CiB9Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwpAQCAtNTQ2LDEwICs1NTcsMTUgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+
Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlWYWxJ
bmZvLnN0dWJSb3V0aW5lKTsKIAotICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhv
YmplY3QtPnN0cnVjdHVyZSh2bSkpKSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
b2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGlu
ZyhzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvIG9wdGltaXplLgotICAg
ICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVy
ZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5
TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGppdEFycmF5TW9kZVBlcm1pdHNQdXQoYXJyYXlNb2RlKSAmJiBhcnJheU1vZGUgIT0gYnlW
YWxJbmZvLmFycmF5TW9kZSkgeworICAgICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OworCiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWwoJnZtLCBleGVjLT5jb2Rl
QmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTU2OSwxMCArNTg1LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBwdXRCeVZhbChleGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlw
dCwgdmFsdWUpOworICAgIHB1dEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1
ZSwgYXJyYXlQcm9maWxlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsKEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWwo
RXhlY1N0YXRlKiBjYWxsRnJhbWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1l
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBjYWxsRnJhbWUp
OwpAQCAtNTkwLDExICs2MDYsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsKEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICBB
U1NFUlQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBCeVZhbEluZm8mIGJ5VmFsSW5mbyA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmdldEJ5VmFsSW5mbyhieXRlY29kZU9mZnNldCAtIDEpOwog
ICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby5zdHViUm91dGluZSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhvYmplY3QtPnN0cnVjdHVyZSh2bSkpKSB7CisK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKHN0cnVjdHVyZSkpIHsKICAgICAgICAg
ICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJy
YXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKHZtKSk7
CisgICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoaml0QXJyYXlNb2RlUGVybWl0c1B1
dChhcnJheU1vZGUpICYmIGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CisgICAg
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKKwogICAgICAgICAgICAgICAg
IEpJVDo6Y29tcGlsZURpcmVjdFB1dEJ5VmFsKCZ2bSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwg
JmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJheU1v
ZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
QEAgLTYxMywxMCArNjM0LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbChFeGVjU3RhdGUqIGNhbGxGcmFtZSwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KLSAgICBkaXJlY3RQdXRCeVZhbChjYWxsRnJhbWUsIG9iamVj
dCwgc3Vic2NyaXB0LCB2YWx1ZSk7CisgICAgZGlyZWN0UHV0QnlWYWwoY2FsbEZyYW1lLCBvYmpl
Y3QsIHN1YnNjcmlwdCwgdmFsdWUsIGFycmF5UHJvZmlsZSk7CiB9CiAKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKQEAgLTYyNSwxMSArNjQ2LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvCiAgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0gICAgcHV0
QnlWYWwoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlKTsKKyAgICBwdXRCeVZhbChl
eGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGFycmF5UHJvZmlsZSk7CiB9CiAKIAot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtNjM4LDcgKzY1OSw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsK
LSAgICBkaXJlY3RQdXRCeVZhbChleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQs
IHZhbHVlKTsKKyAgICBkaXJlY3RQdXRCeVZhbChleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBz
dWJzY3JpcHQsIHZhbHVlLCBhcnJheVByb2ZpbGUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEV4ZWNTdGF0ZSogZXhlYywgRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlKQpAQCAtMTQ1Nyw3ICsxNDc4LDMxIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogY3VycmVu
CiAKIH0KIAotc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKK3N0YXRpYyBib29sIGNhblVzZUZhc3RBcmd1bWVudEFjY2VzcyhKU09iamVjdCYgb2Jq
ZWN0LCB1aW50MzJfdCBpbmRleCkKK3sKKyAgICAvLyBGb3IgQXJndW1lbnRzLCB3ZSBkb24ndCBo
YXZlIGhvbGVzIGNyZWF0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBidXQgd2UgaGF2ZSAib3Zl
cnJvZGVUaGluZ3MoKSIgdGhhdAorICAgIC8vIG1vdmVzIHVzIHRvIHNsb3cgcGF0aC4KKworICAg
IHN3aXRjaCAob2JqZWN0LnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIGNh
c2UgRGlyZWN0QXJndW1lbnRzVHlwZTogeworICAgICAgICBEaXJlY3RBcmd1bWVudHMqIGRpcmVj
dEFyZ3VtZW50cyA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVudHMqPigmb2JqZWN0KTsKKyAgICAgICAg
aWYgKCFkaXJlY3RBcmd1bWVudHMtPm92ZXJyb2RlVGhpbmdzKCkgJiYgaW5kZXggPCBkaXJlY3RB
cmd1bWVudHMtPmludGVybmFsTGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzVHlwZTogeworICAg
ICAgICBTY29wZWRBcmd1bWVudHMqIHNjb3BlZEFyZ3VtZW50cyA9IGpzQ2FzdDxTY29wZWRBcmd1
bWVudHMqPigmb2JqZWN0KTsKKyAgICAgICAgaWYgKCFzY29wZWRBcmd1bWVudHMtPm92ZXJyb2Rl
VGhpbmdzKCkgJiYgaW5kZXggPCBzY29wZWRBcmd1bWVudHMtPmludGVybmFsTGVuZ3RoKCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3Vic2NyaXB0LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
ICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpAQCAtMTQ3MiwxMCArMTUxNywyMSBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgUgogCiAgICAg
aWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3Jp
cHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0
cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewotICAgICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGV4ZWMtPmNvZGVCbG9jaygpLCByZXR1cm5BZGRyZXNzLCBGdW5j
dGlvblB0cihvcGVyYXRpb25HZXRCeVZhbFN0cmluZykpOwotICAgICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICBpZiAoaXNKU1N0
cmluZyhiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+
Y2FuR2V0SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoZXhlYy0+Y29kZUJsb2NrKCksIHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKG9wZXJh
dGlvbkdldEJ5VmFsU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9IGVsc2UgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2ts
eShpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7
CisKKyAgICAgICAgICAgIGlmICghY2FuVXNlRmFzdEFyZ3VtZW50QWNjZXNzKCpvYmplY3QsIGkp
KQorICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAg
ICAgfQorCiAgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOwogICAgIH0KIApA
QCAtMTQ5MCwxOCArMTU0NiwxOCBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgUgogCiBleHRlcm4g
IkMiIHsKICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlW
YWxHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGdldEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUykpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0QnlWYWwo
ZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGFycmF5UHJvZmlsZSwgUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxE
ZWZhdWx0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKQEAgLTE1MjAsOCArMTU3NiwxNSBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKUwogICAgICAgICAKICAgICAgICAgaWYgKGhhc09wdGlt
aXphYmxlSW5kZXhpbmcob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAgICAgLy8g
QXR0ZW1wdCB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUg
PSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVy
ZShzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJy
YXlNb2RlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIGNhc2UsIHdl
IGdvdCBhbiBpbnRlcmVzdGluZyBhcnJheSBtb2RlIHdlIGRpZCBub3QgZXhwZWN0IHdoZW4gd2Ug
Y29tcGlsZWQuCisgICAgICAgICAgICAgICAgLy8gTGV0J3MgdXBkYXRlIHRoZSBwcm9maWxlIHRv
IGRvIGJldHRlciBuZXh0IHRpbWUuCisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgYXJyYXlQcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSk7CisKICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVHZXRCeVZhbCgmdm0sIGV4ZWMtPmNv
ZGVCbG9jaygpLCAmYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVT
UyksIGFycmF5TW9kZSk7CiAgICAgICAgICAgICAgICAgZGlkT3B0aW1pemUgPSB0cnVlOwogICAg
ICAgICAgICAgfQpAQCAtMTU0MSwxMSArMTYwNCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
UwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0QnlWYWwo
ZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRCeVZhbChleGVjLCBiYXNlVmFsdWUs
IHN1YnNjcmlwdCwgYXJyYXlQcm9maWxlLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KICAgICAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVm
YXVsdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtMTU4NCwxMSAr
MTY0NywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eURlZmF1bHQoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGV4ZWMtPmNvZGVCbG9jaygpLCBSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMpKTsgCiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQuYXNV
SW50MzIoKSkpKTsKKworICAgIHVpbnQzMl90IGluZGV4ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7
CisgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkpOworCisgICAgaWYg
KCFjYW5Vc2VGYXN0QXJndW1lbnRBY2Nlc3MoKm9iamVjdCwgaW5kZXgpKQorICAgICAgICBhcnJh
eVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpbmRleCkpKTsKIH0KICAgICAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtMTU5OSw2ICsx
NjY4LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQVNTRVJUKHN1YnNjcmlwdC5p
c1VJbnQzMigpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OworICAgIHVpbnQzMl90IGluZGV4ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgaWYgKG9i
amVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkpOworCisgICAgaWYgKCFjYW5Vc2VGYXN0
QXJndW1lbnRBY2Nlc3MoKm9iamVjdCwgaW5kZXgpKQorICAgICAgICBhcnJheVByb2ZpbGUtPnNl
dE91dE9mQm91bmRzKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2Jq
ZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQuYXNVSW50MzIoKSkpKTsKIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDZjOTM1MzFi
MWQwN2ZjOWY5N2JkNzc2NjNmMjE4NmE3Y2ViZjZkZC4uNDM0ZWExZmJiZGU0MWRkMzUyMGEzMjU1
NzEwZTRjNTNmZTAyZTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTU3LDYgKzU3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgS2V5OgogICAgIEE6IEpT
QXJyYXkqCiAgICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgorICAgIEFwOiBBcnJheVBy
b2ZpbGUqCiAgICAgQzogSlNDZWxsKgogICAgIENiOiBDb2RlQmxvY2sqCiAgICAgQ2xpOiBDYWxs
TGlua0luZm8qCkBAIC0xMTAsNiArMTExLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpDKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKQSko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKQXApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNzWikoRXhlY1N0YXRlKiwgSlNTdHJp
bmcqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpf
SklUT3BlcmF0aW9uX0VKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQKShF
eGVjU3RhdGUqLCB2b2lkKik7CkBAIC0xOTAsNiArMTkyLDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9P
UEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgSlMKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpJZEop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSklkSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRp
b25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9u
X0VKSkpBcCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCB2b2lkKiwg
dm9pZCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlpK
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwog
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKQEAgLTI1MywxMCArMjU2LDEwIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBK
U09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEFycmF5UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEFycmF5
UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQXJyYXlQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChFeGVjU3RhdGUqLCBFeGVj
U3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtD
YWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0zMTMsMTEgKzMxNiwxMSBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHJvZmlsZURpZENhbGwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVXaWxsQ2FsbChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiBjdXJyZW50U2NvcGUpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlWYWxEZWZhdWx0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJO
QUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
YyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbERlZmF1bHQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEFycmF5UHJvZmls
ZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWxHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBBcnJheVByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5n
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBBcnJheVByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEFycmF5UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VP
ZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIFdURl9J
TlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKaW5kZXggMzgyM2MxN2RkZDhhNTQzZWNlYTA4MTMxMzE4OTNmNTEyNTMzZTExNS4uMTIz
OTBhZmMxYmMzNDBhM2Q0ZDI4ZDViODM4ZjdkMGM3NDY2Nzk5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTIxNywyMCArMjE3LDE0
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAg
ICAgbm9uQ2VsbC5saW5rKHRoaXMpOwogICAgIAotICAgIEp1bXAgc2tpcFByb2ZpbGluZyA9IGp1
bXAoKTsKLSAgICAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHZlY3RvciBsZW5ndGggY2hl
Y2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGVtcHR5IHZhbHVlCiAgICAgCi0gICAgZW1p
dEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgCi0gICAg
c2tpcFByb2ZpbGluZy5saW5rKHRoaXMpOwotICAgIAogICAgIExhYmVsIHNsb3dQYXRoID0gbGFi
ZWwoKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbERlZmF1bHQsIGRzdCwgcmVnVDAsIHJl
Z1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsRGVm
YXVsdCwgZHN0LCByZWdUMCwgcmVnVDEsIHByb2ZpbGUpOwogCiAgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0
aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5y
ZXR1cm5BZGRyZXNzID0gY2FsbDsKQEAgLTQzMCw3ICs0MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0NhcwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7CiAgICAgYm9vbCBpc0RpcmVj
dCA9IG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNv
ZGUpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbCA6IG9wZXJhdGlvblB1dEJ5VmFs
LCByZWdUMCwgcmVnVDEsIHJlZ1QyKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlz
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWwgOiBvcGVyYXRpb25QdXRCeVZhbCwgcmVn
VDAsIHJlZ1QxLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFk
ZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggMDkwMTFiMTFhMmY2MTNjMTg0MzEwMDRkZjc1ODFm
Zjg5OTFkZWU4OS4uNmU2NDU0OGViNjVmNmJhNGY2MGVjOWQyYjUxNTQ0NmQyOWNmZmYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0yNTcsMjEgKzI1NywxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogICAg
IGZhaWxlZC5saW5rKHRoaXMpOwogICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogICAgIG5vbkNl
bGwubGluayh0aGlzKTsKLSAgICAKLSAgICBKdW1wIHNraXBQcm9maWxpbmcgPSBqdW1wKCk7CiAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHZlY3RvciBsZW5ndGggY2hlY2sKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGVtcHR5IHZhbHVlCiAgICAgCi0gICAgZW1pdEFycmF5UHJvZmls
ZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgCi0gICAgc2tpcFByb2ZpbGlu
Zy5saW5rKHRoaXMpOwotICAgIAogICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKICAgICAK
ICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRMb2FkKHByb3BlcnR5
LCByZWdUMywgcmVnVDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0QnlWYWxEZWZhdWx0LCBkc3QsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIHJlZ1QyKTsKKyAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdCwgZHN0LCBy
ZWdUMSwgcmVnVDAsIHJlZ1QzLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFsQ29tcGls
YXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQ
YXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhd
LnJldHVybkFkZHJlc3MgPSBjYWxsOwpAQCAtNDY0LDYgKzQ1OCw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QwLCByZWdUMSk7CiAgICAgYWRkQ2Fs
bEFyZ3VtZW50KHJlZ1QxKTsKICAgICBhZGRDYWxsQXJndW1lbnQocmVnVDApOworICAgIGFkZENh
bGxBcmd1bWVudChyZWdUNSk7CiAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsIDogb3BlcmF0aW9uUHV0
QnlWYWwpOwogI2Vsc2UKICAgICAvLyBUaGUgcmVnaXN0ZXIgc2VsZWN0aW9uIGJlbG93IGlzIGNo
b3NlbiB0byByZWR1Y2UgcmVnaXN0ZXIgc3dhcHBpbmcgb24gQVJNLgpAQCAtNDcxLDcgKzQ2Niw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDIsIHJl
Z1QxKTsKICAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QwKTsKICAgICBlbWl0TG9h
ZCh2YWx1ZSwgcmVnVDUsIHJlZ1Q0KTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlz
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWwgOiBvcGVyYXRpb25QdXRCeVZhbCwgcmVn
VDIsIHJlZ1QxLCByZWdUMywgcmVnVDAsIHJlZ1Q1LCByZWdUNCk7CisgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsIDogb3BlcmF0
aW9uUHV0QnlWYWwsIHJlZ1QyLCByZWdUMSwgcmVnVDMsIHJlZ1QwLCByZWdUNSwgcmVnVDQsIHBy
b2ZpbGUpOwogI2VuZGlmCiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0
cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUZ1bmN0aW9ucy5jcHAKaW5kZXggYjhk
ODJmMjM2ZWE2Y2JiMzgyY2FmZDkwYTkxODg3MDE0M2ZjOGRkYy4uMGFmMjlhMGYyZWQ2MTE2YTAx
NDUzZThjZmI0ZGM3ZDJmZWFiN2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VGdW5jdGlvbnMuY3BwCkBAIC0yOSw4ICsyOSw3IEBACiAjaWYg
RU5BQkxFKFBST01JU0VTKQogCiAjaW5jbHVkZSAiRXJyb3IuaCIKLSNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMtYmFzaWNzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtYnkt
dmFsLW91dC1vZi1ib3VuZHMtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNzBmZDQ3Y2Q3OGQyZGY5
OWI2NWQ2ZWZmNzdhNDAxNTg4ZTU5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1iYXNpY3MuanMK
QEAgLTAsMCArMSwyMjEgQEAKKy8vIEdldCBlYXJseSBvdXQtb2YtYm91bmQgZGF0YS4KK2Z1bmN0
aW9uIG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhhcnJheSwgaW5k
ZXgpCit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKG9wYXF1ZUdldEJ5
VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyk7CisKK2Z1bmN0aW9uIHRlc3RJbnQzMkFy
cmF5RWFybHlPdXRPZkJvdW5kcygpCit7CisgICAgLy8gV2FybSB1cCB3aXRoIGFuIGltbWVkaWF0
ZSBvdXQgb2YgYm91bmRzLgorICAgIHZhciBpbnQzMkFycmF5ID0gWzAsIDEsIDIsIDMsIDQsIDUs
IDYsIDcsIDgsIDldOworICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDEwOyArK2kpIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRz
KGludDMyQXJyYXksIGkpOworICAgICAgICBpZiAoKGkgPCAxMCAmJiB2YWx1ZSAhPT0gaSkgfHwg
KGkgPj0gMTAgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkpCisgICAgICAgICAgICB0aHJvdyAiRmFp
bGVkIG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhpbnQzMkFycmF5
LCBpKSB3YXJtdXAgd2l0aCBpID0gIiArIGkgKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgIH0K
KworICAgIC8vIFdlIHRoZW4gZG8gcGxlbnR5IG9mIGluLWJvdW5kcyBhY2Nlc3Nlcy4KKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgMTA7ICsraikgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPbklu
dDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGludDMyQXJyYXksIGopOworICAgICAgICAgICAgaWYg
KGogPCAxMCAmJiB2YWx1ZSAhPT0gaikKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9w
YXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhpbnQzMkFycmF5LCBqKSBp
bi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gRm9sbG93ZWQgYnkgcGxlbnR5IG9mIG91dC1vZi1ib3VuZHMgYWNj
ZXNzZXMuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8PSAxMDsgKytqKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFx
dWVHZXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaik7Cisg
ICAgICAgICAgICBpZiAoKGogPCAxMCAmJiB2YWx1ZSAhPT0gaikgfHwgKGogPj0gMTAgJiYgdmFs
dWUgIT09IHVuZGVmaW5lZCkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVH
ZXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaikgb3V0LW9m
LWJvdW5kcyB3aXRoIGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAgICAgIH0K
KyAgICB9Cit9Cit0ZXN0SW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoKTsKKworLy8gT25lIG1v
cmUgYWNjZXNzLCB3aXRoIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYXJyYXkgdHlwZS4KK2Z1bmN0
aW9uIHRlc3RJbmRleGluZ1R5cGVDaGFuZ2VzT25JbnQzMkFycmF5KCkKK3sKKyAgICB2YXIgZG91
YmxlQXJyYXkgPSBbLTAsIDUuNSwgLTQyLjFdOworICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5
VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwgMCk7CisgICAgaWYg
KHZhbHVlIHx8IDEgLyB2YWx1ZSAhPT0gLUluZmluaXR5KQorICAgICAgICB0aHJvdyAiRmFpbGVk
IG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwg
MCkiOworICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRP
ZkJvdW5kcyhkb3VibGVBcnJheSwgMSk7CisgICAgaWYgKHZhbHVlICE9PSA1LjUpCisgICAgICAg
IHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRz
KGRvdWJsZUFycmF5LCAxKSI7CisgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPbkludDMy
QXJyYXlFYXJseU91dE9mQm91bmRzKGRvdWJsZUFycmF5LCAyKTsKKyAgICBpZiAodmFsdWUgIT09
IC00Mi4xKQorICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5
RWFybHlPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwgMikiOworfQordGVzdEluZGV4aW5nVHlwZUNo
YW5nZXNPbkludDMyQXJyYXkoKTsKKworCisKKy8vIEdldCBvdXQtb2YtYm91bmQgZGF0YSBhZnRl
ciBhIHRob3VzYW5kIHJ1bi4KK2Z1bmN0aW9uIG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdBcnJheUhv
dE91dE9mQm91bmRzKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOwor
fQorbm9JbmxpbmUob3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMpOwor
CitmdW5jdGlvbiB0ZXN0U3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcygpCit7CisgICAgLy8gV2Fy
bSB1cCB3aXRoIGluIGJvdW5kcyBhY2Nlc3MuCisgICAgdmFyIHN0cmluZ0FycmF5ID0gWyIwIiwg
IjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIsICI5Il07CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDEw
OyArK2opIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdB
cnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZSAhPT0gIiIgKyBqKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlW
YWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGopIGluLWJvdW5kcyB3
aXRoIGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBEbyBhIHNpbmdsZSBvdXQgb2YgYm91bmRzIGFmdGVyIHdhcm11cC4KKyAgICB2YXIg
dmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcyhzdHJpbmdB
cnJheSwgMTApOworICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAi
RmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0Fy
cmF5LCAxMCkgd2l0aCBpID0gIiArIGkgKyAiIHZhbHVlID0gIiArIHZhbHVlOworCisgICAgLy8g
V2UgdGhlbiBkbyBwbGVudHkgb2YgaW4tYm91bmRzIGFjY2Vzc2VzLgorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDsgKytq
KSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJyYXlI
b3RPdXRPZkJvdW5kcyhzdHJpbmdBcnJheSwgaik7CisgICAgICAgICAgICBpZiAodmFsdWUgIT09
ICIiICsgaikKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25T
dHJpbmdBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKSBpbi1ib3VuZHMgd2l0aCBq
ID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gRm9sbG93ZWQgYnkgcGxlbnR5IG9mIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
PSAxMDsgKytqKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3Ry
aW5nQXJyYXlIb3RPdXRPZkJvdW5kcyhzdHJpbmdBcnJheSwgaik7CisgICAgICAgICAgICBpZiAo
KGogPCAxMCAmJiB2YWx1ZSAhPT0gIiIgKyBqKSB8fCAoaiA+PSAxMCAmJiB2YWx1ZSAhPT0gdW5k
ZWZpbmVkKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25T
dHJpbmdBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKSBvdXQtb2YtYm91bmRzIHdp
dGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KK30K
K3Rlc3RTdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKCk7CisKK2Z1bmN0aW9uIHRlc3RJbmRleGlu
Z1R5cGVDaGFuZ2VzT25TdHJpbmdBcnJheSgpCit7CisgICAgdmFyIGRvdWJsZUFycmF5ID0gWy0w
LCA1LjUsIC00Mi4xXTsKKyAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJy
YXlIb3RPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwgMCk7CisgICAgaWYgKHZhbHVlIHx8IDEgLyB2
YWx1ZSAhPT0gLUluZmluaXR5KQorICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFs
T25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKGRvdWJsZUFycmF5LCAwKSI7CisgICAgdmFyIHZh
bHVlID0gb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJy
YXksIDEpOworICAgIGlmICh2YWx1ZSAhPT0gNS41KQorICAgICAgICB0aHJvdyAiRmFpbGVkIG9w
YXF1ZUdldEJ5VmFsT25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKGRvdWJsZUFycmF5LCAxKSI7
CisgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3Vu
ZHMoZG91YmxlQXJyYXksIDIpOworICAgIGlmICh2YWx1ZSAhPT0gLTQyLjEpCisgICAgICAgIHRo
cm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoZG91
YmxlQXJyYXksIDIpIjsKK30KK3Rlc3RJbmRleGluZ1R5cGVDaGFuZ2VzT25TdHJpbmdBcnJheSgp
OworCisKKworLy8gR2V0IG91dC1vZi1ib3VuZCBkYXRhIGFmdGVyIGEgdGhvdXNhbmQgcnVuLCBi
dXQgZnJvbSBhIGRpZmZlcmVudCBhcnJheSB0eXBlLgorZnVuY3Rpb24gb3BhcXVlR2V0QnlWYWxP
blN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyhhcnJheSwgaW5kZXgpCit7CisgICAg
cmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdB
bmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMpOworCitmdW5jdGlvbiB0ZXN0U3RyaW5nQW5kSW50
MzJBcnJheUhvdE91dE9mQm91bmRzKCkKK3sKKyAgICAvLyBXYXJtIHVwIHdpdGggaW4gYm91bmRz
IGFjY2Vzcy4KKyAgICB2YXIgc3RyaW5nQXJyYXkgPSBbIjAiLCAiMSIsICIyIiwgIjMiLCAiNCIs
ICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsg
KytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTA7ICsraikgeworICAgICAgICAg
ICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRP
ZkJvdW5kcyhzdHJpbmdBcnJheSwgaik7CisgICAgICAgICAgICBpZiAodmFsdWUgIT09ICIiICsg
aikKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdB
bmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGopIGluLWJvdW5kcyB3aXRo
IGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBEbyBhIHNpbmdsZSBvdXQgb2YgYm91bmRzIGFmdGVyIHdhcm11cC4KKyAgICB2YXIgaW50
MzJBcnJheSA9IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XTsKKyAgICB2YXIgdmFsdWUg
PSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5kSW50MzJBcnJheUhvdE91dE9mQm91bmRzKGludDMy
QXJyYXksIDEwKTsKKyAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cg
IkZhaWxlZCBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5kSW50MzJBcnJheUhvdE91dE9mQm91bmRz
KHN0cmluZ0FycmF5LCAxMCkgd2l0aCBpID0gIiArIGkgKyAiIHZhbHVlID0gIiArIHZhbHVlOwor
CisgICAgLy8gV2UgdGhlbiBkbyBwbGVudHkgb2YgaW4tYm91bmRzIGFjY2Vzc2VzLgorICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCAxMDsgKytqKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3Ry
aW5nQW5kSW50MzJBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPT0gIiIgKyBqKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
b3BhcXVlR2V0QnlWYWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyhzdHJpbmdB
cnJheSwgaikgaW4tYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsK
KworICAgICAgICAgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FuZEludDMy
QXJyYXlIb3RPdXRPZkJvdW5kcyhpbnQzMkFycmF5LCBqKTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZSAhPT0gaikKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25T
dHJpbmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaikgaW4tYm91bmRz
IHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIEZvbGxvd2VkIGJ5IHBsZW50eSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLgor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPD0gMTA7ICsraikgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlW
YWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyhpbnQzMkFycmF5LCBqKTsKKyAg
ICAgICAgICAgIGlmICgoaiA8IDEwICYmIHZhbHVlICE9PSBqKSB8fCAoaiA+PSAxMCAmJiB2YWx1
ZSAhPT0gdW5kZWZpbmVkKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdl
dEJ5VmFsT25TdHJpbmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaikg
b3V0LW9mLWJvdW5kcyB3aXRoIGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisKKyAg
ICAgICAgICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdBbmRJbnQzMkFycmF5
SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGopOworICAgICAgICAgICAgaWYgKChqIDwgMTAg
JiYgdmFsdWUgIT09ICIiICsgaikgfHwgKGogPj0gMTAgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkp
CisgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5k
SW50MzJBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKSBvdXQtb2YtYm91bmRzIHdp
dGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KK30K
K3Rlc3RTdHJpbmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoKTsKKworCisvLyBHZXQgb3V0
LW9mLWJvdW5kIGRhdGEgZnJvbSBhIGhvbGUgYWZ0ZXIgYSB0aG91c2FuZCBydW4uCitmdW5jdGlv
biBvcGFxdWVHZXRCeVZhbE9uRG91YmxlQXJyYXlIb3RPdXRPZkJvdW5kcyhhcnJheSwgaW5kZXgp
Cit7CisgICAgcmV0dXJuIGFycmF5W2luZGV4XTsKK30KK25vSW5saW5lKG9wYXF1ZUdldEJ5VmFs
T25Eb3VibGVBcnJheUhvdE91dE9mQm91bmRzKTsKKworZnVuY3Rpb24gdGVzdFN0cmluZ0FycmF5
SG90T3V0T2ZCb3VuZHMoKQoreworICAgIC8vIFdhcm0gdXAgd2l0aCBpbiBib3VuZHMgYWNjZXNz
LgorICAgIHZhciBkb3VibGVBcnJheSA9IG5ldyBBcnJheSgxMCk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIGlmIChpICE9PSA1KQorICAgICAgICAgICAgZG91
YmxlQXJyYXlbaV0gPSBpICsgMC41OworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
MjsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTA7ICsraikgeworICAgICAg
ICAgICAgaWYgKGogIT09IDUpIHsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVH
ZXRCeVZhbE9uRG91YmxlQXJyYXlIb3RPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwgaik7CisgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBqICsgMC41KQorICAgICAgICAgICAgICAgICAgICB0
aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25Eb3VibGVBcnJheUhvdE91dE9mQm91bmRzKGRv
dWJsZUFycmF5LCBqKSBpbi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZh
bHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRG8gYSBzaW5n
bGUgb3V0IG9mIGJvdW5kcyBhZnRlciB3YXJtdXAuCisgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0
QnlWYWxPbkRvdWJsZUFycmF5SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXksIDUpOworICAgIGlm
ICh2YWx1ZSAhPT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5
VmFsT25Eb3VibGVBcnJheUhvdE91dE9mQm91bmRzKGRvdWJsZUFycmF5LCA1KSB3aXRoIGkgPSAi
ICsgaSArICIgdmFsdWUgPSAiICsgdmFsdWU7CisKKyAgICAvLyBXZSB0aGVuIGRvIHBsZW50eSBv
ZiBpbi1ib3VuZHMgYWNjZXNzZXMuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDEwOyArK2opIHsKKyAgICAgICAgICAgIGlm
IChqICE9PSA1KSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxP
bkRvdWJsZUFycmF5SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXksIGopOworICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPT0gaiArIDAuNSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZh
aWxlZCBvcGFxdWVHZXRCeVZhbE9uRG91YmxlQXJyYXlIb3RPdXRPZkJvdW5kcyhkb3VibGVBcnJh
eSwgaikgaW4tYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZvbGxvd2VkIGJ5IHBsZW50
eSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUz
OyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDsgKytqKSB7CisgICAgICAg
ICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uRG91YmxlQXJyYXlIb3RPdXRPZkJvdW5k
cyhkb3VibGVBcnJheSwgaik7CisgICAgICAgICAgICBpZiAoKGogIT09IDUgJiYgdmFsdWUgIT09
IGogKyAwLjUpIHx8IChqID09PSAxMCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25Eb3VibGVBcnJheUhvdE91dE9m
Qm91bmRzKGRvdWJsZUFycmF5LCBqKSBvdXQtb2YtYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2
YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KK30KK3Rlc3RTdHJpbmdBcnJheUhv
dE91dE9mQm91bmRzKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMtYmFzaWNzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wdXQtYnkt
dmFsLW91dC1vZi1ib3VuZHMtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmM5ZmJkNTI3NDk0NWRj
YjE3ZGI4MGVhY2UwMzc1YjcyNDY5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtb3V0LW9mLWJvdW5kcy1iYXNpY3MuanMK
QEAgLTAsMCArMSw4NyBAQAorLy8gUHV0IGVhcmx5IG91dC1vZi1ib3VuZCBkYXRhLgorZnVuY3Rp
b24gb3BhcXVlUHV0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGFycmF5LCBpbmRl
eCwgdmFsdWUpCit7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShvcGFx
dWVQdXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMpOworCitmdW5jdGlvbiB0ZXN0
SW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoKQoreworICAgIC8vIFdhcm0gdXAgd2l0aCBhbiBp
bW1lZGlhdGUgb3V0IG9mIGJvdW5kcy4KKyAgICB2YXIgaW50MzJBcnJheSA9IG5ldyBBcnJheSgx
MCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIG9wYXF1ZVB1
dEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhpbnQzMkFycmF5LCBpLCBpKTsKKyAg
ICAgICAgdmFyIHZhbHVlID0gaW50MzJBcnJheVtpXTsKKyAgICAgICAgaWYgKHZhbHVlICE9PSBp
KQorICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVQdXRCeVZhbE9uSW50MzJBcnJheUVh
cmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaSwgaSkgd2FybXVwIHdpdGggaSA9ICIgKyBpICsg
IiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICB9CisgICAgb3BhcXVlUHV0QnlWYWxPbkludDMyQXJy
YXlFYXJseU91dE9mQm91bmRzKGludDMyQXJyYXksIDEwNDIsIDEpOworICAgIHZhciB2YWx1ZSA9
IGludDMyQXJyYXlbMTA0Ml07CisgICAgaWYgKHZhbHVlICE9PSAxKQorICAgICAgICB0aHJvdyAi
RmFpbGVkIG9wYXF1ZVB1dEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhpbnQzMkFy
cmF5LCAxMDQyLCAxKSB2YWx1ZSA9ICIgKyB2YWx1ZTsKKworICAgIHZhciBsZW5ndGggPSBpbnQz
MkFycmF5Lmxlbmd0aDsKKyAgICBpZiAoaW50MzJBcnJheS5sZW5ndGggIT09IDEwNDMpCisgICAg
ICAgIHRocm93ICJJbmNvcnJlY3QgaW50MzJBcnJheS5sZW5ndGgsIGxlbmd0aCA9ICIgKyBsZW5n
dGg7CisKKworICAgIC8vIFdlIHRoZW4gZG8gcGxlbnR5IG9mIGluLWJvdW5kcyBhY2Nlc3Nlcy4K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgMTA7ICsraikgeworICAgICAgICAgICAgb3BhcXVlUHV0QnlWYWxPbkludDMyQXJy
YXlFYXJseU91dE9mQm91bmRzKGludDMyQXJyYXksIGosIGkpOworICAgICAgICAgICAgdmFyIHZh
bHVlID0gaW50MzJBcnJheVtqXTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gaSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZVB1dEJ5VmFsT25JbnQzMkFycmF5RWFybHlP
dXRPZkJvdW5kcyhpbnQzMkFycmF5LCBqLCBpKSBpbi1ib3VuZHMgd2l0aCBpID0gIiArIGkgKyAi
IGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAgICAgIH0KKyAgICB9Cit9Cit0
ZXN0SW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoKTsKKworCisvLyBHZXQgb3V0LW9mLWJvdW5k
IGRhdGEgYWZ0ZXIgYSB0aG91c2FuZCBydW4uCitmdW5jdGlvbiBvcGFxdWVQdXRCeVZhbE9uU3Ry
aW5nQXJyYXlIb3RPdXRPZkJvdW5kcyhhcnJheSwgaW5kZXgsIHZhbHVlKQoreworICAgIGFycmF5
W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUob3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5
SG90T3V0T2ZCb3VuZHMpOworCitmdW5jdGlvbiB0ZXN0U3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5k
cygpCit7CisgICAgLy8gV2FybSB1cCB3aXRoIGluIGJvdW5kcyBhY2Nlc3MuCisgICAgdmFyIHN0
cmluZ0FycmF5ID0gbmV3IEFycmF5KDEwKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsg
KytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTA7ICsraikgeworICAgICAgICAg
ICAgb3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXks
IGosICIiICsgaSk7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdBcnJheVtqXTsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSAhPT0gIiIgKyBpKQorICAgICAgICAgICAgICAgIHRocm93ICJG
YWlsZWQgb3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJy
YXksIGosIGkpIGluLWJvdW5kcyB3aXRoIGkgPSAiICsgaSArICIgaiA9ICIgKyBqICsgIiB2YWx1
ZSA9ICIgKyB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIERvIGEgc2luZ2xlIG91
dCBvZiBib3VuZHMgYWZ0ZXIgd2FybXVwLgorICAgIG9wYXF1ZVB1dEJ5VmFsT25TdHJpbmdBcnJh
eUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCA1MTMsIDQyKTsKKyAgICB2YXIgdmFsdWUgPSBz
dHJpbmdBcnJheVs1MTNdOworICAgIGlmICh2YWx1ZSAhPT0gNDIpCisgICAgICAgIHRocm93ICJG
YWlsZWQgb3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJy
YXksIDUxMywgNDIpLCB2YWx1ZSA9ICIgKyB2YWx1ZTsKKworICAgIC8vIFdlIHRoZW4gZG8gcGxl
bnR5IG9mIGluLWJvdW5kcyBhY2Nlc3Nlcy4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTA7ICsraikgeworICAgICAgICAg
ICAgb3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXks
IGosICIiICsgaSk7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdBcnJheVtqXTsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSAhPT0gIiIgKyBpKQorICAgICAgICAgICAgICAgIHRocm93ICJG
YWlsZWQgb3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJy
YXksIGosIGkpIGluLWJvdW5kcyB3aXRoIGkgPSAiICsgaSArICIgaiA9ICIgKyBqICsgIiB2YWx1
ZSA9ICIgKyB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZvbGxvd2VkIGJ5IHBs
ZW50eSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLgorICAgIGZvciAodmFyIGogPSA1MTQ7IGog
PD0gMTAyNTsgKytqKQorICAgICAgICBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRP
ZkJvdW5kcyhzdHJpbmdBcnJheSwgaiwgIiIgKyBqKTsKKworICAgIGZvciAodmFyIGogPSA1MTQ7
IGogPD0gMTAyNTsgKytqKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IHN0cmluZ0FycmF5W2pdOwor
ICAgICAgICBpZiAodmFsdWUgIT09ICIiICsgaikKKyAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
b3BhcXVlUHV0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGos
IGopIGluLWJvdW5kcyB3aXRoIGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAg
fQorfQordGVzdFN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254319</attachid>
            <date>2015-06-04 17:39:49 -0700</date>
            <delta_ts>2015-06-04 18:02:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145673-20150604173928.patch</filename>
            <type>text/plain</type>
            <size>63839</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NTlhOTIwZDA1MDkxNjJmODhlNGYzOGMzN2ExZmVkMmY2NThjZTdhLi5hYzg4NGQxOWM1ZWE1YTIx
ZWJmMmNjNjc3ODMxNDBjYzJjMDk0YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMTUtMDYtMDQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWx3YXlzIHRyYWNrIG91dC1vZi1ib3VuZHMgYXJyYXkg
YWNjZXNzIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBzbG93IGNhc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTY3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHks
IHdlIHdlcmUgZGVjaWRpbmcgdG8gdXNlIG91dC1vZi1ib3VuZHMgc3BlY3VsYXRpb24gYmFzZWQg
b24gdHdvIGluZm9ybWF0aW9uczoKKyAgICAgICAgLUV4cGxpY2l0bHkgZGV0ZWN0ZWQgb3V0LW9m
LWJvdW5kcyBhY2Nlc3NlcyB0cmFja2VkIG9uIEFycmF5UHJvZmlsZS4KKyAgICAgICAgLVRoZSBu
dW1iZXIgb2YgdGltZSB3ZSB0b29rIHRoZSBzbG93IGNhc2VzIGluIHRoZSBiYXNlbGluZSBKSVQu
CisKKyAgICAgICAgVGhlIGhldXJpc3RpYyBiYXNlZCBvbiBzbG93IGNhc2VzIHdhcyBhIGxpdHRs
ZSB0b28gZnJhZ2lsZS4KKworICAgICAgICBJbiBzb21lIGNhc2VzLCB3ZSB3ZXJlIHJ1bm5pbmcg
aW50byB0aGF0IGxpbWl0IGp1c3QgYmVjYXVzZSB0aGUgaW5kZXhpbmcgdHlwZSBjaGFuZ2VzIGJl
dHdlZW4KKyAgICAgICAgdHdvIHZhbHVlcyAodHlwaWNhbGx5IEludDMyQXJyYXkgYW5kIERvdWJs
ZUFycmF5KS4gU29tZXRpbWVzIHdlIHdlcmUganVzdCB1bmx1Y2t5IG9uIHdoYXQKKyAgICAgICAg
d2UgdXNlZCBmb3IgdGhlIGlubGluZSBjYWNoZS4KKworICAgICAgICBJbiBLcmFrZW4sIHRoaXMg
d2FzIGh1cnRpbmcgdXMgb24gImF1ZGlvLWJlYXQtZGV0ZWN0aW9uIiBhbmQgImF1ZGlvLWZmdCIu
IFRoZSBhcnJheSB0eXBlcyB3ZSBzZWUKKyAgICAgICAgY2hhbmdlIGJldHdlZW4gSW50MzIgYW5k
IERvdWJsZS4gV2UgcnVuIGludG8gdGhlIHNsb3cgcGF0aCBhIGJpdCBidXQgbmV2ZXIgaGl0Cisg
ICAgICAgIG91dC1vZi1ib3VuZHMuCisKKyAgICAgICAgQnkgdGhlIHRpbWUgd2UgY29tcGlsZSBp
biBERkcsIHdlIGhhdmUgc3RhYmxlIERvdWJsZSBBcnJheXMgYnV0IHdlIHNwZWN1bGF0ZSBvdXQt
b2YtYm91bmRzIGJhc2VkCisgICAgICAgIG9uIHRoZSBudW1iZXIgb2Ygc2xvdyBjYXNlcyB3ZSB0
b29rLiBCZWNhdXNlIG9mIHRoYXQsIHdlIHN0YXJ0IGJveGluZyB0aGUgZG91YmxlIG9uIEdldEJ5
VmFsLAorICAgICAgICB1c2luZyBEb3VibGVSZXAsIGV0Yy4gYWRkaW5nIGEgdG9uIG9mIG92ZXJo
ZWFkIG92ZXIgb3RoZXJ3aXNlIHZlcnkgc2ltcGxlIG9wZXJhdGlvbnMuCisKKyAgICAgICAgV2Vi
WFBSVCB3YXMgYWxzbyBzdWZmZXJpbmcgZnJvbSB0aGlzIHByb2JsZW0gYnV0IHRoZSBvdGhlciB3
YXkgYXJyb3VuZDogd2Ugd2VyZSBtaXNzaW5nCisgICAgICAgIHRoZSBvdXQtb2YtYm91bmRzIGFj
Y2Vzc2VzIGR1ZSB0byBjaGFuZ2VzIGluIGluZGV4aW5nIHR5cGVzLCB3ZSB3ZXJlIGJlbG93IHRo
ZSB0aHJlc2hvbGQKKyAgICAgICAgb2Ygc2xvdy1wYXRoIGFjY2VzcywgdGh1cyB3ZSBwcmVkaWN0
ZWQgaW4tYm91bmRzIGFjY2Vzc2VzIGZvciBjb2RlIHRoYXQgd2FzIGRvaW5nIHBsZW50eQorICAg
ICAgICBvZiBvdXQtb2YtYmFuZHMuCisKKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBw
cm9ibGVtIGJ5IHRyYWNraW5nIHRoZSBvdXQtb2YtYm91bmRzIGFjY2VzcyBleHBsaWNpdGx5IGFu
eSB0aW1lIHdlIGdvCisgICAgICAgIGludG8gdGhlIHNsb3cgcGF0aCBpbiBiYXNlbGluZSBKSVQu
IFNpbmNlIHdlIG5vIGxvbmdlciBtaXNzIGFueSBvdXQtb2YtYm91bmRzLCB3ZSBjYW4gcmVtb3Zl
CisgICAgICAgIHRoZSBzbG93LXBhdGggaGV1cmlzdGljLgorCisgICAgICAgIFRoZXJlIGlzIG5l
dyBhZGRpdGlvbmFsIHNwZWNpYWwgY2FzZSBpbiB0aGUgQyBjb2RlIHJlZ2FyZGluZyBvdXQtb2Yt
Ym91bmRzOiBBcmd1bWVudHMgYWNjZXNzLgorICAgICAgICBNaXNwcmVkaWN0aW5nIG91dC1vZi1i
b3VuZHMgYWNjZXNzZXMgb24gYXJndW1lbnRzIGlzIGEgZGlzYXN0ZXIgZm9yIHBlcmZvcm1hbmNl
LCBzbyB0aG9zZSBhcmUKKyAgICAgICAgdHJhY2tlZCBpbiB0aGUgd2F5IERGRyBleHBlY3QgaXQu
CisKKworICAgICAgICBUaGVyZSBhcmUgYSBmZXcgaW1wb3J0YW50IGNhc2VzIHRoYXQgYXJlIHN0
aWxsIG5vdCBjb3ZlcmVkIGNvcnJlY3RseToKKyAgICAgICAgLVB1dEJ5VmFsIG9uIEFyZ3VtZW50
cy4KKyAgICAgICAgLUdldC9QdXQgQnlWYWwgb24gVHlwZWRBcnJheS4KKyAgICAgICAgVGhvc2Ug
YXJlIHNpbXBseSBub3QgdXNlZCBieSBERkcgaW4gYW55IHdheS4gVHlwZWRBcnJheXMgc2hvdWxk
IHByb2JhYmx5IGJlIGxvb2tlZCBhdCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICBUaGUgaW5saW5lLWNhY2hlIHJlcGF0Y2ggY2Fz
ZXMgbm93IHVwZGF0ZSB0aGUgQXJyYXlQcm9maWxlIGluZm9ybWF0aW9uLiBUaGlzIGhhcyBubyB2
YWx1ZSBpbiBiYXNlbGluZQorICAgICAgICBKSVQgYnV0IGl0IGhlbHBzIGF2b2lkaW5nIG9uZSBy
ZWNvbXBpbGUgaW4gREZHIGZvciB0aGUgbWlzc2luZyBBcnJheVByb2ZpbGUgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm9maWxlOjpzZXRPdXRPZkJvdW5kcyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFycmF5TW9kZUNvbnNpZGVyaW5nU2xv
d1BhdGgpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FuVXNlRmFzdEFyZ3VtZW50QWNjZXNzKToKKyAgICAgICAg
VGhpcyBpcyBub3QgbXkgZmF2b3JpdGUgcGFydCBvZiB0aGlzIHBhdGNoLgorCisgICAgICAgIEkg
dHJpZWQgaGF2aW5nIEpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHkoKSBoYW5kbGUgYXJndW1l
bnRzIHdoaWNoIHdvdWxkIHB1dCBldmVyeXRoaW5nCisgICAgICAgIG9uIHRoZSBnZW5lcmljIHBh
dGguIFVuZm9ydHVuYXRlbHksIHRoYXQgY29kZSBpcyB2ZXJ5IHBlcmZvcm1hbmNlIHNlbnNpdGl2
ZSBhbmQgc29tZSBiZW5jaG1hcmtzIHdlcmUKKyAgICAgICAgaW1wYWN0ZWQgYnkgb3ZlciAxMCUK
KworICAgICAgICBJIGxlZnQgSlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseSgpIGFsb25lLCBh
bmQgSSBhZGRlZCB0aGUgY2FuVXNlRmFzdEFyZ3VtZW50QWNjZXNzKCkgbWlycm9yaW5nCisgICAg
ICAgIGhvdyBERkcgdXNlcyBvdXQtb2YtYm91bmRzIGZvciBBcmd1bWVudHMuCisKKyAgICAgICAg
KEpTQzo6Z2V0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VGdW5j
dGlvbnMuY3BwOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMtYmFzaWNzLmpzOiBBZGRlZC4KKyAgICAgICAgKG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5
RWFybHlPdXRPZkJvdW5kcyk6CisgICAgICAgICh0ZXN0SW50MzJBcnJheUVhcmx5T3V0T2ZCb3Vu
ZHMpOgorICAgICAgICAodGVzdEluZGV4aW5nVHlwZUNoYW5nZXNPbkludDMyQXJyYXkpOgorICAg
ICAgICAob3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMpOgorICAgICAg
ICAodGVzdFN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMpOgorICAgICAgICAodGVzdEluZGV4aW5n
VHlwZUNoYW5nZXNPblN0cmluZ0FycmF5KToKKyAgICAgICAgKG9wYXF1ZUdldEJ5VmFsT25TdHJp
bmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMpOgorICAgICAgICAodGVzdFN0cmluZ0FuZElu
dDMyQXJyYXlIb3RPdXRPZkJvdW5kcyk6CisgICAgICAgIChvcGFxdWVHZXRCeVZhbE9uRG91Ymxl
QXJyYXlIb3RPdXRPZkJvdW5kcyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3B1dC1ieS12YWwt
b3V0LW9mLWJvdW5kcy1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAob3BhcXVlUHV0QnlWYWxP
bkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKToKKyAgICAgICAgKHRlc3RJbnQzMkFycmF5RWFy
bHlPdXRPZkJvdW5kcyk6CisgICAgICAgIChvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RP
dXRPZkJvdW5kcyk6CisgICAgICAgICh0ZXN0U3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcyk6CisK
IDIwMTUtMDYtMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdh
cmRlbmluZzogZml4IGJyb2tlbiBDTG9vcCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKaW5kZXggMWMwMGMyMzNlYWYxZTRkOWU0MjM0
NTFlMWExOTA0ZTk0ZjkwZWFlMi4uYjhhZGUyMjIzOTQ1ZTkxOGFhNjQwMmFjYTkxMWI4MTUyZWNk
YjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5jcHAKQEAgLTk0LDEyICs5NCwxOCBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFycmF5TW9kZXMgYXJyYXlNb2RlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
RmxvYXQ2NEFycmF5TW9kZSIpOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaykKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAg
ICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBjb2RlQmxvY2stPmhlYXAoKS0+c3RydWN0
dXJlSURUYWJsZSgpLmdldChtX2xhc3RTZWVuU3RydWN0dXJlSUQpOworICAgIGNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAg
IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7Cit9CisKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQorewogICAgIG1fb2Jz
ZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1
cmUpOwogICAgIAogICAgIGlmICghbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCkBAIC0xMTQs
NyArMTIwLDYgQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2MKICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQogICAgICAgICAm
JiAhZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0
cnVjdHVyZSkpCiAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7
Ci0gICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAogQ1N0cmluZyBBcnJheVByb2Zp
bGU6OmJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuaAppbmRleCA3MGEzODZlZmEzZWRlNGQ2MDM4ZjhjMzEwZjg5MmRjOTFlMDJm
YTUzLi5jMjhhY2E0MDhiNWQ5NGRlM2EwYjhlMjVmNjBjM2QzYjg2ZGJkZTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCkBAIC0yMDksNiArMjA5
LDggQEAgcHVibGljOgogICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVy
ZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5TW9kZXMq
IGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0K
ICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3Jl
VG9Ib2xlOyB9CisKKyAgICB2b2lkIHNldE91dE9mQm91bmRzKCkgeyBtX291dE9mQm91bmRzID0g
dHJ1ZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyByZXR1cm4gJm1fb3V0
T2ZCb3VuZHM7IH0KICAgICAKICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkBAIC0yMTcsNiArMjE5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB2
b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwg
Q29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1
cmUpOwogICAgIAogICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQog
ICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA1ZjI0MTU2MWY3YjgwYmFiMzUxZWEwZDViNWE1ODRmYmVjODBkNjQ3Li5iMTIyOTNjOWRiNGRk
ODA2MTg1Mzc2MWYxMTRlNTY0MDkxNDkzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzQ1LDcgKzc0NSw4IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ayk7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsIHByb2Zp
bGUsIGFjdGlvbiwgZmFsc2UpOworICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS0+b3V0
T2ZCb3VuZHMobG9ja2VyKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVk
KGxvY2tlciwgcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgfQogICAgIAogICAgIEFy
cmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXlQcm9maWxlKiBwcm9maWxlKQpAQCAtNzUzLDIxICs3
NTQsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZ2V0QXJyYXlNb2RlKHByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZUNvbnNp
ZGVyaW5nU2xvd1BhdGgoQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlv
bikKLSAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgCi0gICAgICAgIHByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jayk7Ci0gICAgICAgIAotICAgICAgICBib29sIG1ha2VTYWZlID0KLSAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICB8fCBwcm9maWxlLT5vdXRPZkJvdW5k
cyhsb2NrZXIpOwotICAgICAgICAKLSAgICAgICAgQXJyYXlNb2RlIHJlc3VsdCA9IEFycmF5TW9k
ZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKICAgICBOb2RlKiBtYWtl
U2FmZShOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKQEAgLTMw
OTksNyArMzA4NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGlj
dGlvbldpdGhvdXRPU1JFeGl0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGVDb25zaWRl
cmluZ1Nsb3dQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6
OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAg
ICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRv
R3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGlj
dGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGdldEJ5VmFsKTsKQEAgLTMxMTEsNyAr
MzA5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwog
Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlQ29uc2lkZXJp
bmdTbG93UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpX
cml0ZSk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KSk7CkBAIC0zODY0LDcgKzM4NTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6
IHsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1v
ZGUgPSBnZXRBcnJheU1vZGVDb25zaWRlcmluZ1Nsb3dQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbls0
XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAg
ICBOb2RlKiBoYXNJdGVyYWJsZVByb3BlcnR5ID0gYWRkVG9HcmFwaChIYXNJbmRleGVkUHJvcGVy
dHksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCBoYXNJdGVyYWJsZVByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCmluZGV4IDI1NWUzOGFmOWZlNWJlMDJmZGNlYzRmOGUzNzczMjQ1OTYzZjBkYzAuLmU0
NzY2Mjc1NDc5ODJhZmJlMTIzNWViNGUyOTk1ZjBlMDM3NTU2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNzM0LDYgKzczNCwxOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc2KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgR1BSUmVnIGFyZzYsIFRy
dXN0ZWRJbW1QdHIgYXJnNykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzYpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNyk7CisgICAgfQor
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKQEAgLTE0NjYsNiArMTQ3OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAg
eworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAg
IHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAg
cG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CkBAIC0xNzI2LDYgKzE3NDYsMTUgQEAg
cHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCwgR1BSUmVnIGFyZzUsIEdQUlJlZyBhcmc2LCBUcnVzdGVkSW1tUHRyIGFyZzcpCisgICAg
eworICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMyk7CisgICAgICAg
IHBva2UoYXJnNiwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKKyAgICAgICAgcG9rZShhcmc1
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRy
IGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7CiAgICAgICAgIHBva2UoYXJn
NSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKQEAgLTE4MzAsNiArMTg1OSwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHNldHVwVGhyZWVTdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmcz
LCBhcmc0KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0
ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwVGhyZWVTdHViQXJnc0dQUjxHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzPihhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmc0LCBHUFJJbmZvOjph
cmd1bWVudEdQUjQpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBU
d29TdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
ND4oYXJnMSwgYXJnNCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmZWY1YTIxZjdjY2Q5
N2UxYjYxNGYyZjBiYjQyZDRlMmZhYjk1NzE4Li4zNjIwOGYxNTQ5OGY3NDk3M2U0ZWQ0ZmE2MGE0
Zjk5NDcwNmUyMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcwMiw2ICs3MDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSWRjLCBpbnQsIEdQUlJlZywgY29uc3QgSWRl
bnRpZmllciopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKSiwgaW50LCBHUFJSZWcsIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQXAsIGludCwgR1BS
UmVnLCBHUFJSZWcsIEFycmF5UHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2MsIEdQUlJlZyk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0MsIGlu
dCwgR1BSUmVnLCBKU0NlbGwqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiwgR1BSUmVnLCBpbnQzMl90KTsKQEAgLTc0Myw2
ICs3NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FSkpKQXAsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIEFy
cmF5UHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKWkosIFJlZ2lzdGVySUQsIGludDMyX3QsIFJlZ2lzdGVySUQpOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VKWiwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBjLCBJbnN0cnVjdGlvbiopOwpAQCAtNzU4
LDEyICs3NjAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUosIGludCwgR1BSUmVnLCBHUFJSZWcp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSWRjLCBpbnQsIEdQUlJlZywgR1BSUmVnLCBjb25zdCBJZGVudGlmaWVyKik7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
LCBpbnQsIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQXAsIGludCwgR1BS
UmVnLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBBcnJheVByb2ZpbGUqKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJl
ZywgR1BSUmVnLCBzaXplX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkos
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaU3lt
dGFiSiwgaW50LCBTeW1ib2xUYWJsZSosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKLCBS
ZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBS
ZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKQXAs
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIEFycmF5UHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKWiwgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9KSVRPcGVyYXRpb25fRUpaSiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCwg
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVpKLCBpbnQzMl90LCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMGZlNzI5
MGRkNTc0Y2I5NDg3NDVkYmFkMTE4ZDY1ODgyYWU2MGRlNS4uYTIxYzgwODhkNzhhMGU4YzZiNTA4
MThjNmJhMWY1YWE2MGQ1OTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKQEAgLTM5OSw2ICszOTksMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSiBvcGVyYXQKICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCitBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FSkpKQXAgb3BlcmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdP
cDIsIFJlZ2lzdGVySUQgcmVnT3AzLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxLCByZWdPcDIsIHJlZ09wMywgVHJ1
c3RlZEltbVB0cihhcnJheVByb2ZpbGUpKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkogb3BlcmF0aW9uLCBp
bnQgZHN0LCBHUFJSZWcgYXJnKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIoZHN0KSwgYXJnKTsKQEAgLTQ0MSw2ICs0NDcsMTIgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpKIG9wZXJhdGkKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpBcCBvcGVy
YXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIFRydXN0ZWRJbW1QdHIoYXJyYXlQcm9maWxlKSk7CisgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKK30KKwog
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb25Ob0V4
Y2VwdGlvbkNoZWNrKFZfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEpCiB7
CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwpAQCAtNTcwLDYgKzU4Miwx
MiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aQogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKSkFwIG9wZXJhdGlvbiwgaW50IGRzdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgQXJyYXlQcm9m
aWxlKiBhcnJheVByb2ZpbGUpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlf
QVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRyKGFycmF5UHJvZmlsZSkpOwor
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChv
cGVyYXRpb24sIGRzdCk7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VK
SiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiB7CiAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFn
LCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKQEAgLTYzMCw2ICs2
NDgsMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSiBvcGVyYXQKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKQXAgb3Bl
cmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMVRhZywgUmVnaXN0ZXJJRCByZWdPcDFQYXlsb2FkLCBS
ZWdpc3RlcklEIHJlZ09wMlRhZywgUmVnaXN0ZXJJRCByZWdPcDJQYXlsb2FkLCBSZWdpc3RlcklE
IHJlZ09wM1RhZywgUmVnaXN0ZXJJRCByZWdPcDNQYXlsb2FkLCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgcmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIHJl
Z09wMlBheWxvYWQsIHJlZ09wMlRhZywgcmVnT3AzUGF5bG9hZCwgcmVnT3AzVGFnLCBUcnVzdGVk
SW1tUHRyKGFycmF5UHJvZmlsZSkpOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaSiBvcGVyYXRpb24sIGludCBk
c3QsIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdpc3RlcklEIHJlZ09wMVBheWxvYWQpCiB7CiAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihkc3QpLCByZWdPcDFQ
YXlsb2FkLCByZWdPcDFUYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKaW5kZXggNzMwMzYxYWJkYzk1NTg4NTE1M2MwMzA5YWI3YzZjMTljM2Q5ODExMS4uMDUyYWU4
MzkxNjRhYmIwMWM1ZjNjYWQxMTZkMWEzZmQ5ZjM4YWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMTI1LDIxICsxMTI1LDE0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0CiAgICAgCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFz
ZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBh
cnJheSBjaGVjawotICAgIAotICAgIEp1bXAgc2tpcFByb2ZpbGluZyA9IGp1bXAoKTsKLSAgICAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHZlY3RvciBsZW5ndGggY2hlY2sKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGVtcHR5IHZhbHVlCiAgICAgCi0gICAgZW1pdEFycmF5UHJvZmls
ZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgCi0gICAgc2tpcFByb2ZpbGlu
Zy5saW5rKHRoaXMpOwotICAgIAogICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKICAgICAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIHJlZ1QwLCByZWdU
MSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlEZWZhdWx0LCBkc3QsIHJlZ1QwLCByZWdUMSwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9
IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9u
SW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDE5MjAyMjU3NDMwMmE4MWM0OTQ5MjMyNzdmZjNk
MWU3ZTc2OGIwODUuLjVmOTA0MGQ3ODJkMjZjNjY2YzM4NWNkM2RiMGYxZmE1YThmZDkxZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTEx
MjIsMjEgKzExMjIsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19pbmRleGVkX3Byb3Bl
cnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3QKICAgICAKICAgICBsaW5r
U2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBiYXNlKTsgLy8gYmFzZSBjZWxsIGNoZWNrCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgCi0gICAgSnVtcCBz
a2lwUHJvZmlsaW5nID0ganVtcCgpOwotICAgIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
dmVjdG9yIGxlbmd0aCBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZW1wdHkgdmFs
dWUKLSAgICAKLSAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9m
aWxlKTsKLSAgICAKLSAgICBza2lwUHJvZmlsaW5nLmxpbmsodGhpcyk7Ci0gICAgCisKICAgICBM
YWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAgICAgCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEs
IHJlZ1QwKTsKICAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQs
IGRzdCwgcmVnVDEsIHJlZ1QwLCByZWdUMywgcmVnVDIpOworICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCByZWdUMSwg
cmVnVDAsIHJlZ1QzLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25J
bmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwog
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVy
bkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggMTE0YzdiNzg3OTA3NzNkZWQ2NTcxM2ViOTEwOTc1OTFhZGQ5ZTQxZS4uYTdm
Yzk0MDE4YTlkZGE4ZTNlYTg5ODlkNmE5ZGI5MzBhMzI4OTE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgorI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6
ei5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1
ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCisjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgpAQCAtNDc0LDcg
KzQ3Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFu
ZEZpbmlzaFB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAgYmFzZS0+cHV0RGlyZWN0KHZt
LCBvZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCi1zdGF0aWMgdm9pZCBwdXRC
eVZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vi
c2NyaXB0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2
YWx1ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZy
YW1lLT52bSgpOwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CkBAIC00
ODMsOCArNDg1LDEwIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsCiAgICAgICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmNhblNldEluZGV4UXVpY2tseShpKSkKICAgICAgICAgICAgICAgICBvYmplY3QtPnNldElu
ZGV4UXVpY2tseShjYWxsRnJhbWUtPnZtKCksIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0
T2ZCb3VuZHMoKTsKICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
QnlJbmRleChvYmplY3QsIGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChjYWxsRnJhbWUsIGksIHZhbHVlLCBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTQ5Niwx
MyArNTAwLDIwIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsCiAgICAgfQogfQogCi1zdGF0aWMg
dm9pZCBkaXJlY3RQdXRCeVZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIHZvaWQgZGly
ZWN0UHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBK
U1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUpCiB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKTsKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewog
ICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJldHVy
biB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1ZXMg
YXJlIHZhbGlkIGFycmF5IGluZGljZXMuCi0gICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNjcmlw
dC5hc1VJbnQzMigpKSk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGNhbGxG
cmFtZSwgc3Vic2NyaXB0LmFzVUludDMyKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Cisg
ICAgICAgIHVpbnQzMl90IGluZGV4ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIEFT
U0VSVChpc0luZGV4KGluZGV4KSk7CisgICAgICAgIGlmIChiYXNlT2JqZWN0LT5jYW5TZXRJbmRl
eFF1aWNrbHlGb3JQdXREaXJlY3QoaW5kZXgpKSB7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5z
ZXRJbmRleFF1aWNrbHkoY2FsbEZyYW1lLT52bSgpLCBpbmRleCwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJv
dW5kcygpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGlu
ZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6
IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC01MjcsNyArNTM4LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHMKICAgICAgICAgYmFz
ZU9iamVjdC0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKICAgICB9CiB9Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwpAQCAtNTQ2LDEwICs1NTcsMTUgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+
Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlWYWxJ
bmZvLnN0dWJSb3V0aW5lKTsKIAotICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhv
YmplY3QtPnN0cnVjdHVyZSh2bSkpKSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
b2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGlu
ZyhzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvIG9wdGltaXplLgotICAg
ICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVy
ZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5
TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGppdEFycmF5TW9kZVBlcm1pdHNQdXQoYXJyYXlNb2RlKSAmJiBhcnJheU1vZGUgIT0gYnlW
YWxJbmZvLmFycmF5TW9kZSkgeworICAgICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OworCiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWwoJnZtLCBleGVjLT5jb2Rl
QmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTU2OSwxMCArNTg1LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBwdXRCeVZhbChleGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlw
dCwgdmFsdWUpOworICAgIHB1dEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1
ZSwgYXJyYXlQcm9maWxlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsKEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWwo
RXhlY1N0YXRlKiBjYWxsRnJhbWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1l
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBjYWxsRnJhbWUp
OwpAQCAtNTkwLDExICs2MDYsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsKEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICBB
U1NFUlQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBCeVZhbEluZm8mIGJ5VmFsSW5mbyA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmdldEJ5VmFsSW5mbyhieXRlY29kZU9mZnNldCAtIDEpOwog
ICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby5zdHViUm91dGluZSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhvYmplY3QtPnN0cnVjdHVyZSh2bSkpKSB7CisK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKHN0cnVjdHVyZSkpIHsKICAgICAgICAg
ICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJy
YXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKHZtKSk7
CisgICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoaml0QXJyYXlNb2RlUGVybWl0c1B1
dChhcnJheU1vZGUpICYmIGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CisgICAg
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKKwogICAgICAgICAgICAgICAg
IEpJVDo6Y29tcGlsZURpcmVjdFB1dEJ5VmFsKCZ2bSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwg
JmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJheU1v
ZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
QEAgLTYxMywxMCArNjM0LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbChFeGVjU3RhdGUqIGNhbGxGcmFtZSwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KLSAgICBkaXJlY3RQdXRCeVZhbChjYWxsRnJhbWUsIG9iamVj
dCwgc3Vic2NyaXB0LCB2YWx1ZSk7CisgICAgZGlyZWN0UHV0QnlWYWwoY2FsbEZyYW1lLCBvYmpl
Y3QsIHN1YnNjcmlwdCwgdmFsdWUsIGFycmF5UHJvZmlsZSk7CiB9CiAKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKQEAgLTYyNSwxMSArNjQ2LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvCiAgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0gICAgcHV0
QnlWYWwoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlKTsKKyAgICBwdXRCeVZhbChl
eGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGFycmF5UHJvZmlsZSk7CiB9CiAKIAot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtNjM4LDcgKzY1OSw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsK
LSAgICBkaXJlY3RQdXRCeVZhbChleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQs
IHZhbHVlKTsKKyAgICBkaXJlY3RQdXRCeVZhbChleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBz
dWJzY3JpcHQsIHZhbHVlLCBhcnJheVByb2ZpbGUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEV4ZWNTdGF0ZSogZXhlYywgRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlKQpAQCAtMTQ1Nyw3ICsxNDc4LDMxIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogY3VycmVu
CiAKIH0KIAotc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKK3N0YXRpYyBib29sIGNhblVzZUZhc3RBcmd1bWVudEFjY2VzcyhKU09iamVjdCYgb2Jq
ZWN0LCB1aW50MzJfdCBpbmRleCkKK3sKKyAgICAvLyBGb3IgQXJndW1lbnRzLCB3ZSBkb24ndCBo
YXZlIGhvbGVzIGNyZWF0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBidXQgd2UgaGF2ZSAib3Zl
cnJvZGVUaGluZ3MoKSIgdGhhdAorICAgIC8vIG1vdmVzIHVzIHRvIHNsb3cgcGF0aC4KKworICAg
IHN3aXRjaCAob2JqZWN0LnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIGNh
c2UgRGlyZWN0QXJndW1lbnRzVHlwZTogeworICAgICAgICBEaXJlY3RBcmd1bWVudHMqIGRpcmVj
dEFyZ3VtZW50cyA9IGpzQ2FzdDxEaXJlY3RBcmd1bWVudHMqPigmb2JqZWN0KTsKKyAgICAgICAg
aWYgKCFkaXJlY3RBcmd1bWVudHMtPm92ZXJyb2RlVGhpbmdzKCkgJiYgaW5kZXggPCBkaXJlY3RB
cmd1bWVudHMtPmludGVybmFsTGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzVHlwZTogeworICAg
ICAgICBTY29wZWRBcmd1bWVudHMqIHNjb3BlZEFyZ3VtZW50cyA9IGpzQ2FzdDxTY29wZWRBcmd1
bWVudHMqPigmb2JqZWN0KTsKKyAgICAgICAgaWYgKCFzY29wZWRBcmd1bWVudHMtPm92ZXJyb2Rl
VGhpbmdzKCkgJiYgaW5kZXggPCBzY29wZWRBcmd1bWVudHMtPmludGVybmFsTGVuZ3RoKCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3Vic2NyaXB0LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
ICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpAQCAtMTQ3MiwxMCArMTUxNywyMSBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgUgogCiAgICAg
aWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3Jp
cHQuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0
cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewotICAgICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGV4ZWMtPmNvZGVCbG9jaygpLCByZXR1cm5BZGRyZXNzLCBGdW5j
dGlvblB0cihvcGVyYXRpb25HZXRCeVZhbFN0cmluZykpOwotICAgICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICBpZiAoaXNKU1N0
cmluZyhiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+
Y2FuR2V0SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoZXhlYy0+Y29kZUJsb2NrKCksIHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKG9wZXJh
dGlvbkdldEJ5VmFsU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9IGVsc2UgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2ts
eShpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSk7
CisKKyAgICAgICAgICAgIGlmICghY2FuVXNlRmFzdEFyZ3VtZW50QWNjZXNzKCpvYmplY3QsIGkp
KQorICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAg
ICAgfQorCiAgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOwogICAgIH0KIApA
QCAtMTQ5MCwxOCArMTU0NiwxOCBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgUgogCiBleHRlcm4g
IkMiIHsKICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlW
YWxHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGdldEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUykpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0QnlWYWwo
ZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGFycmF5UHJvZmlsZSwgUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxE
ZWZhdWx0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKQEAgLTE1MjAsOCArMTU3NiwxNSBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKUwogICAgICAgICAKICAgICAgICAgaWYgKGhhc09wdGlt
aXphYmxlSW5kZXhpbmcob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAgICAgLy8g
QXR0ZW1wdCB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUg
PSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVy
ZShzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJy
YXlNb2RlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIGNhc2UsIHdl
IGdvdCBhbiBpbnRlcmVzdGluZyBhcnJheSBtb2RlIHdlIGRpZCBub3QgZXhwZWN0IHdoZW4gd2Ug
Y29tcGlsZWQuCisgICAgICAgICAgICAgICAgLy8gTGV0J3MgdXBkYXRlIHRoZSBwcm9maWxlIHRv
IGRvIGJldHRlciBuZXh0IHRpbWUuCisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgYXJyYXlQcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSk7CisKICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVHZXRCeVZhbCgmdm0sIGV4ZWMtPmNv
ZGVCbG9jaygpLCAmYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVT
UyksIGFycmF5TW9kZSk7CiAgICAgICAgICAgICAgICAgZGlkT3B0aW1pemUgPSB0cnVlOwogICAg
ICAgICAgICAgfQpAQCAtMTU0MSwxMSArMTYwNCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
UwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0QnlWYWwo
ZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRCeVZhbChleGVjLCBiYXNlVmFsdWUs
IHN1YnNjcmlwdCwgYXJyYXlQcm9maWxlLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KICAgICAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVm
YXVsdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtMTU4NCwxMSAr
MTY0NywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eURlZmF1bHQoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGV4ZWMtPmNvZGVCbG9jaygpLCBSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMpKTsgCiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQuYXNV
SW50MzIoKSkpKTsKKworICAgIHVpbnQzMl90IGluZGV4ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7
CisgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkpOworCisgICAgaWYg
KCFjYW5Vc2VGYXN0QXJndW1lbnRBY2Nlc3MoKm9iamVjdCwgaW5kZXgpKQorICAgICAgICBhcnJh
eVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpbmRleCkpKTsKIH0KICAgICAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtMTU5OSw2ICsx
NjY4LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsCiAgICAgQVNTRVJUKHN1YnNjcmlwdC5p
c1VJbnQzMigpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OworICAgIHVpbnQzMl90IGluZGV4ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgaWYgKG9i
amVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkpOworCisgICAgaWYgKCFjYW5Vc2VGYXN0
QXJndW1lbnRBY2Nlc3MoKm9iamVjdCwgaW5kZXgpKQorICAgICAgICBhcnJheVByb2ZpbGUtPnNl
dE91dE9mQm91bmRzKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2Jq
ZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQuYXNVSW50MzIoKSkpKTsKIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDZjOTM1MzFi
MWQwN2ZjOWY5N2JkNzc2NjNmMjE4NmE3Y2ViZjZkZC4uNDM0ZWExZmJiZGU0MWRkMzUyMGEzMjU1
NzEwZTRjNTNmZTAyZTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTU3LDYgKzU3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgS2V5OgogICAgIEE6IEpT
QXJyYXkqCiAgICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgorICAgIEFwOiBBcnJheVBy
b2ZpbGUqCiAgICAgQzogSlNDZWxsKgogICAgIENiOiBDb2RlQmxvY2sqCiAgICAgQ2xpOiBDYWxs
TGlua0luZm8qCkBAIC0xMTAsNiArMTExLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpDKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKQSko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKQXApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNzWikoRXhlY1N0YXRlKiwgSlNTdHJp
bmcqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpf
SklUT3BlcmF0aW9uX0VKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQKShF
eGVjU3RhdGUqLCB2b2lkKik7CkBAIC0xOTAsNiArMTkyLDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9P
UEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgSlMKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpJZEop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSklkSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRp
b25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9u
X0VKSkpBcCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQXJyYXlQcm9maWxlKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCB2b2lkKiwg
dm9pZCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlpK
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwog
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKQEAgLTI1MywxMCArMjU2LDEwIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBK
U09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEFycmF5UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEFycmF5
UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQXJyYXlQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChFeGVjU3RhdGUqLCBFeGVj
U3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtD
YWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0zMTMsMTEgKzMxNiwxMSBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHJvZmlsZURpZENhbGwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVXaWxsQ2FsbChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiBjdXJyZW50U2NvcGUpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlWYWxEZWZhdWx0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJO
QUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
YyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbERlZmF1bHQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEFycmF5UHJvZmls
ZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWxHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBBcnJheVByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5n
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBBcnJheVByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEFycmF5UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VP
ZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIFdURl9J
TlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKaW5kZXggMzgyM2MxN2RkZDhhNTQzZWNlYTA4MTMxMzE4OTNmNTEyNTMzZTExNS4uMTIz
OTBhZmMxYmMzNDBhM2Q0ZDI4ZDViODM4ZjdkMGM3NDY2Nzk5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTIxNywyMCArMjE3LDE0
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAg
ICAgbm9uQ2VsbC5saW5rKHRoaXMpOwogICAgIAotICAgIEp1bXAgc2tpcFByb2ZpbGluZyA9IGp1
bXAoKTsKLSAgICAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHZlY3RvciBsZW5ndGggY2hl
Y2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGVtcHR5IHZhbHVlCiAgICAgCi0gICAgZW1p
dEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgCi0gICAg
c2tpcFByb2ZpbGluZy5saW5rKHRoaXMpOwotICAgIAogICAgIExhYmVsIHNsb3dQYXRoID0gbGFi
ZWwoKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbERlZmF1bHQsIGRzdCwgcmVnVDAsIHJl
Z1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsRGVm
YXVsdCwgZHN0LCByZWdUMCwgcmVnVDEsIHByb2ZpbGUpOwogCiAgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0
aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5y
ZXR1cm5BZGRyZXNzID0gY2FsbDsKQEAgLTQzMCw3ICs0MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0NhcwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7CiAgICAgYm9vbCBpc0RpcmVj
dCA9IG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNv
ZGUpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbCA6IG9wZXJhdGlvblB1dEJ5VmFs
LCByZWdUMCwgcmVnVDEsIHJlZ1QyKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlz
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWwgOiBvcGVyYXRpb25QdXRCeVZhbCwgcmVn
VDAsIHJlZ1QxLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFk
ZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggMDkwMTFiMTFhMmY2MTNjMTg0MzEwMDRkZjc1ODFm
Zjg5OTFkZWU4OS4uMWJlYmI5MmE5NDIxMThiYjY4OTk0OTI3Nzg3MDdmYjAzNDFkZWFlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0yNTcsMjEgKzI1NywxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogICAg
IGZhaWxlZC5saW5rKHRoaXMpOwogICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogICAgIG5vbkNl
bGwubGluayh0aGlzKTsKLSAgICAKLSAgICBKdW1wIHNraXBQcm9maWxpbmcgPSBqdW1wKCk7CiAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHZlY3RvciBsZW5ndGggY2hlY2sKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGVtcHR5IHZhbHVlCiAgICAgCi0gICAgZW1pdEFycmF5UHJvZmls
ZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgCi0gICAgc2tpcFByb2ZpbGlu
Zy5saW5rKHRoaXMpOwotICAgIAogICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKICAgICAK
ICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRMb2FkKHByb3BlcnR5
LCByZWdUMywgcmVnVDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0QnlWYWxEZWZhdWx0LCBkc3QsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIHJlZ1QyKTsKKyAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsRGVmYXVsdCwgZHN0LCBy
ZWdUMSwgcmVnVDAsIHJlZ1QzLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBtX2J5VmFsQ29tcGls
YXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQ
YXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhd
LnJldHVybkFkZHJlc3MgPSBjYWxsOwpAQCAtNDY0LDYgKzQ1OCw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QwLCByZWdUMSk7CiAgICAgYWRkQ2Fs
bEFyZ3VtZW50KHJlZ1QxKTsKICAgICBhZGRDYWxsQXJndW1lbnQocmVnVDApOworICAgIGFkZENh
bGxBcmd1bWVudChUcnVzdGVkSW1tUHRyKHByb2ZpbGUpKTsKICAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWwgOiBvcGVyYXRpb25QdXRCeVZhbCk7CiAjZWxzZQogICAgIC8vIFRoZSByZWdpc3RlciBzZWxl
Y3Rpb24gYmVsb3cgaXMgY2hvc2VuIHRvIHJlZHVjZSByZWdpc3RlciBzd2FwcGluZyBvbiBBUk0u
CkBAIC00NzEsNyArNDY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMKICAgICBlbWl0TG9h
ZChiYXNlLCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5LCByZWdUMywgcmVn
VDApOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwotICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbCA6IG9wZXJh
dGlvblB1dEJ5VmFsLCByZWdUMiwgcmVnVDEsIHJlZ1QzLCByZWdUMCwgcmVnVDUsIHJlZ1Q0KTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWwgOiBvcGVyYXRpb25QdXRCeVZhbCwgcmVnVDIsIHJlZ1QxLCByZWdUMywgcmVnVDAs
IHJlZ1Q1LCByZWdUNCwgcHJvZmlsZSk7CiAjZW5kaWYKIAogICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRnVuY3Rp
b25zLmNwcAppbmRleCBiOGQ4MmYyMzZlYTZjYmIzODJjYWZkOTBhOTE4ODcwMTQzZmM4ZGRjLi4w
YWYyOWEwZjJlZDYxMTZhMDE0NTNlOGNmYjRkYzdkMmZlYWI3ZDJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUZ1bmN0aW9ucy5jcHAKQEAgLTI5
LDggKzI5LDcgQEAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAKICNpbmNsdWRlICJFcnJvci5oIgot
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNs
dWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVk
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1i
eS12YWwtb3V0LW9mLWJvdW5kcy1iYXNpY3MuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGQ3MGZkNDdjZDc4ZDJkZjk5YjY1ZDZlZmY3N2E0MDE1ODhlNTk5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1vdXQtb2Yt
Ym91bmRzLWJhc2ljcy5qcwpAQCAtMCwwICsxLDIyMSBAQAorLy8gR2V0IGVhcmx5IG91dC1vZi1i
b3VuZCBkYXRhLgorZnVuY3Rpb24gb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9m
Qm91bmRzKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9J
bmxpbmUob3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKTsKKworZnVu
Y3Rpb24gdGVzdEludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKCkKK3sKKyAgICAvLyBXYXJtIHVw
IHdpdGggYW4gaW1tZWRpYXRlIG91dCBvZiBib3VuZHMuCisgICAgdmFyIGludDMyQXJyYXkgPSBb
MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0g
MTA7ICsraSkgeworICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uSW50MzJBcnJh
eUVhcmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaSk7CisgICAgICAgIGlmICgoaSA8IDEwICYm
IHZhbHVlICE9PSBpKSB8fCAoaSA+PSAxMCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkKKyAgICAg
ICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9m
Qm91bmRzKGludDMyQXJyYXksIGkpIHdhcm11cCB3aXRoIGkgPSAiICsgaSArICIgdmFsdWUgPSAi
ICsgdmFsdWU7CisgICAgfQorCisgICAgLy8gV2UgdGhlbiBkbyBwbGVudHkgb2YgaW4tYm91bmRz
IGFjY2Vzc2VzLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCAxMDsgKytqKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBv
cGFxdWVHZXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaik7
CisgICAgICAgICAgICBpZiAoaiA8IDEwICYmIHZhbHVlICE9PSBqKQorICAgICAgICAgICAgICAg
IHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRz
KGludDMyQXJyYXksIGopIGluLWJvdW5kcyB3aXRoIGogPSAiICsgaiArICIgdmFsdWUgPSAiICsg
dmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGb2xsb3dlZCBieSBwbGVudHkgb2Yg
b3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDEwOyArK2opIHsKKyAgICAgICAgICAg
IHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhp
bnQzMkFycmF5LCBqKTsKKyAgICAgICAgICAgIGlmICgoaiA8IDEwICYmIHZhbHVlICE9PSBqKSB8
fCAoaiA+PSAxMCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkKKyAgICAgICAgICAgICAgICB0aHJv
dyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhpbnQz
MkFycmF5LCBqKSBvdXQtb2YtYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2
YWx1ZTsKKyAgICAgICAgfQorICAgIH0KK30KK3Rlc3RJbnQzMkFycmF5RWFybHlPdXRPZkJvdW5k
cygpOworCisvLyBPbmUgbW9yZSBhY2Nlc3MsIHdpdGggYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBh
cnJheSB0eXBlLgorZnVuY3Rpb24gdGVzdEluZGV4aW5nVHlwZUNoYW5nZXNPbkludDMyQXJyYXko
KQoreworICAgIHZhciBkb3VibGVBcnJheSA9IFstMCwgNS41LCAtNDIuMV07CisgICAgdmFyIHZh
bHVlID0gb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGRvdWJsZUFy
cmF5LCAwKTsKKyAgICBpZiAodmFsdWUgfHwgMSAvIHZhbHVlICE9PSAtSW5maW5pdHkpCisgICAg
ICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91
bmRzKGRvdWJsZUFycmF5LCAwKSI7CisgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPbklu
dDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGRvdWJsZUFycmF5LCAxKTsKKyAgICBpZiAodmFsdWUg
IT09IDUuNSkKKyAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVHZXRCeVZhbE9uSW50MzJBcnJh
eUVhcmx5T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXksIDEpIjsKKyAgICB2YXIgdmFsdWUgPSBvcGFx
dWVHZXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXksIDIpOwor
ICAgIGlmICh2YWx1ZSAhPT0gLTQyLjEpCisgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0
QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGRvdWJsZUFycmF5LCAyKSI7Cit9Cit0
ZXN0SW5kZXhpbmdUeXBlQ2hhbmdlc09uSW50MzJBcnJheSgpOworCisKKworLy8gR2V0IG91dC1v
Zi1ib3VuZCBkYXRhIGFmdGVyIGEgdGhvdXNhbmQgcnVuLgorZnVuY3Rpb24gb3BhcXVlR2V0QnlW
YWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoYXJyYXksIGluZGV4KQoreworICAgIHJldHVy
biBhcnJheVtpbmRleF07Cit9Citub0lubGluZShvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJyYXlI
b3RPdXRPZkJvdW5kcyk7CisKK2Z1bmN0aW9uIHRlc3RTdHJpbmdBcnJheUhvdE91dE9mQm91bmRz
KCkKK3sKKyAgICAvLyBXYXJtIHVwIHdpdGggaW4gYm91bmRzIGFjY2Vzcy4KKyAgICB2YXIgc3Ry
aW5nQXJyYXkgPSBbIjAiLCAiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4Iiwg
IjkiXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgMTA7ICsraikgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gb3BhcXVl
R2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGopOworICAg
ICAgICAgICAgaWYgKHZhbHVlICE9PSAiIiArIGopCisgICAgICAgICAgICAgICAgdGhyb3cgIkZh
aWxlZCBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcyhzdHJpbmdBcnJh
eSwgaikgaW4tYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIERvIGEgc2luZ2xlIG91dCBvZiBib3VuZHMgYWZ0ZXIg
d2FybXVwLgorICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdBcnJheUhvdE91
dE9mQm91bmRzKHN0cmluZ0FycmF5LCAxMCk7CisgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQp
CisgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0
T2ZCb3VuZHMoc3RyaW5nQXJyYXksIDEwKSB3aXRoIGkgPSAiICsgaSArICIgdmFsdWUgPSAiICsg
dmFsdWU7CisKKyAgICAvLyBXZSB0aGVuIGRvIHBsZW50eSBvZiBpbi1ib3VuZHMgYWNjZXNzZXMu
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBmb3IgKHZhciBq
ID0gMDsgaiA8IDEwOyArK2opIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5
VmFsT25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPT0gIiIgKyBqKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
b3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGop
IGluLWJvdW5kcyB3aXRoIGogPSAiICsgaiArICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBGb2xsb3dlZCBieSBwbGVudHkgb2Ygb3V0LW9mLWJvdW5kcyBh
Y2Nlc3Nlcy4KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDw9IDEwOyArK2opIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9w
YXF1ZUdldEJ5VmFsT25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKTsK
KyAgICAgICAgICAgIGlmICgoaiA8IDEwICYmIHZhbHVlICE9PSAiIiArIGopIHx8IChqID49IDEw
ICYmIHZhbHVlICE9PSB1bmRlZmluZWQpKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
b3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGop
IG91dC1vZi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAg
ICAgICB9CisgICAgfQorfQordGVzdFN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoKTsKKworZnVu
Y3Rpb24gdGVzdEluZGV4aW5nVHlwZUNoYW5nZXNPblN0cmluZ0FycmF5KCkKK3sKKyAgICB2YXIg
ZG91YmxlQXJyYXkgPSBbLTAsIDUuNSwgLTQyLjFdOworICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdl
dEJ5VmFsT25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKGRvdWJsZUFycmF5LCAwKTsKKyAgICBp
ZiAodmFsdWUgfHwgMSAvIHZhbHVlICE9PSAtSW5maW5pdHkpCisgICAgICAgIHRocm93ICJGYWls
ZWQgb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXks
IDApIjsKKyAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRP
ZkJvdW5kcyhkb3VibGVBcnJheSwgMSk7CisgICAgaWYgKHZhbHVlICE9PSA1LjUpCisgICAgICAg
IHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMo
ZG91YmxlQXJyYXksIDEpIjsKKyAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5n
QXJyYXlIb3RPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwgMik7CisgICAgaWYgKHZhbHVlICE9PSAt
NDIuMSkKKyAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQXJyYXlI
b3RPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwgMikiOworfQordGVzdEluZGV4aW5nVHlwZUNoYW5n
ZXNPblN0cmluZ0FycmF5KCk7CisKKworCisvLyBHZXQgb3V0LW9mLWJvdW5kIGRhdGEgYWZ0ZXIg
YSB0aG91c2FuZCBydW4sIGJ1dCBmcm9tIGEgZGlmZmVyZW50IGFycmF5IHR5cGUuCitmdW5jdGlv
biBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5kSW50MzJBcnJheUhvdE91dE9mQm91bmRzKGFycmF5
LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9JbmxpbmUob3BhcXVl
R2V0QnlWYWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyk7CisKK2Z1bmN0aW9u
IHRlc3RTdHJpbmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoKQoreworICAgIC8vIFdhcm0g
dXAgd2l0aCBpbiBib3VuZHMgYWNjZXNzLgorICAgIHZhciBzdHJpbmdBcnJheSA9IFsiMCIsICIx
IiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSJdOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDsg
KytqKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5k
SW50MzJBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKTsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSAhPT0gIiIgKyBqKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVl
R2V0QnlWYWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyhzdHJpbmdBcnJheSwg
aikgaW4tYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIERvIGEgc2luZ2xlIG91dCBvZiBib3VuZHMgYWZ0ZXIgd2Fy
bXVwLgorICAgIHZhciBpbnQzMkFycmF5ID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDld
OworICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdBbmRJbnQzMkFycmF5SG90
T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgMTApOworICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVk
KQorICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25TdHJpbmdBbmRJbnQzMkFy
cmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIDEwKSB3aXRoIGkgPSAiICsgaSArICIgdmFs
dWUgPSAiICsgdmFsdWU7CisKKyAgICAvLyBXZSB0aGVuIGRvIHBsZW50eSBvZiBpbi1ib3VuZHMg
YWNjZXNzZXMuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IDEwOyArK2opIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9w
YXF1ZUdldEJ5VmFsT25TdHJpbmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJy
YXksIGopOworICAgICAgICAgICAgaWYgKHZhbHVlICE9PSAiIiArIGopCisgICAgICAgICAgICAg
ICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5kSW50MzJBcnJheUhvdE91
dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqKSBpbi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZh
bHVlID0gIiArIHZhbHVlOworCisgICAgICAgICAgICB2YXIgdmFsdWUgPSBvcGFxdWVHZXRCeVZh
bE9uU3RyaW5nQW5kSW50MzJBcnJheUhvdE91dE9mQm91bmRzKGludDMyQXJyYXksIGopOworICAg
ICAgICAgICAgaWYgKHZhbHVlICE9PSBqKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
b3BhcXVlR2V0QnlWYWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyhpbnQzMkFy
cmF5LCBqKSBpbi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRm9sbG93ZWQgYnkgcGxlbnR5IG9mIG91dC1vZi1i
b3VuZHMgYWNjZXNzZXMuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAg
ICAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAxMDsgKytqKSB7CisgICAgICAgICAgICB2YXIgdmFs
dWUgPSBvcGFxdWVHZXRCeVZhbE9uU3RyaW5nQW5kSW50MzJBcnJheUhvdE91dE9mQm91bmRzKGlu
dDMyQXJyYXksIGopOworICAgICAgICAgICAgaWYgKChqIDwgMTAgJiYgdmFsdWUgIT09IGopIHx8
IChqID49IDEwICYmIHZhbHVlICE9PSB1bmRlZmluZWQpKQorICAgICAgICAgICAgICAgIHRocm93
ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPblN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5k
cyhpbnQzMkFycmF5LCBqKSBvdXQtb2YtYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9
ICIgKyB2YWx1ZTsKKworICAgICAgICAgICAgdmFyIHZhbHVlID0gb3BhcXVlR2V0QnlWYWxPblN0
cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcyhzdHJpbmdBcnJheSwgaik7CisgICAgICAg
ICAgICBpZiAoKGogPCAxMCAmJiB2YWx1ZSAhPT0gIiIgKyBqKSB8fCAoaiA+PSAxMCAmJiB2YWx1
ZSAhPT0gdW5kZWZpbmVkKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdl
dEJ5VmFsT25TdHJpbmdBbmRJbnQzMkFycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIGop
IG91dC1vZi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAg
ICAgICB9CisgICAgfQorfQordGVzdFN0cmluZ0FuZEludDMyQXJyYXlIb3RPdXRPZkJvdW5kcygp
OworCisKKy8vIEdldCBvdXQtb2YtYm91bmQgZGF0YSBmcm9tIGEgaG9sZSBhZnRlciBhIHRob3Vz
YW5kIHJ1bi4KK2Z1bmN0aW9uIG9wYXF1ZUdldEJ5VmFsT25Eb3VibGVBcnJheUhvdE91dE9mQm91
bmRzKGFycmF5LCBpbmRleCkKK3sKKyAgICByZXR1cm4gYXJyYXlbaW5kZXhdOworfQorbm9Jbmxp
bmUob3BhcXVlR2V0QnlWYWxPbkRvdWJsZUFycmF5SG90T3V0T2ZCb3VuZHMpOworCitmdW5jdGlv
biB0ZXN0U3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcygpCit7CisgICAgLy8gV2FybSB1cCB3aXRo
IGluIGJvdW5kcyBhY2Nlc3MuCisgICAgdmFyIGRvdWJsZUFycmF5ID0gbmV3IEFycmF5KDEwKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgaWYgKGkgIT09IDUp
CisgICAgICAgICAgICBkb3VibGVBcnJheVtpXSA9IGkgKyAwLjU7CisgICAgfQorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAx
MDsgKytqKSB7CisgICAgICAgICAgICBpZiAoaiAhPT0gNSkgeworICAgICAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25Eb3VibGVBcnJheUhvdE91dE9mQm91bmRzKGRvdWJs
ZUFycmF5LCBqKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IGogKyAwLjUpCisgICAg
ICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPbkRvdWJsZUFycmF5
SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXksIGopIGluLWJvdW5kcyB3aXRoIGogPSAiICsgaiAr
ICIgdmFsdWUgPSAiICsgdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBEbyBhIHNpbmdsZSBvdXQgb2YgYm91bmRzIGFmdGVyIHdhcm11cC4KKyAgICB2YXIg
dmFsdWUgPSBvcGFxdWVHZXRCeVZhbE9uRG91YmxlQXJyYXlIb3RPdXRPZkJvdW5kcyhkb3VibGVB
cnJheSwgNSk7CisgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93ICJG
YWlsZWQgb3BhcXVlR2V0QnlWYWxPbkRvdWJsZUFycmF5SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJy
YXksIDUpIHdpdGggaSA9ICIgKyBpICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKworICAgIC8vIFdl
IHRoZW4gZG8gcGxlbnR5IG9mIGluLWJvdW5kcyBhY2Nlc3Nlcy4KKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTA7ICsraikg
eworICAgICAgICAgICAgaWYgKGogIT09IDUpIHsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUg
PSBvcGFxdWVHZXRCeVZhbE9uRG91YmxlQXJyYXlIb3RPdXRPZkJvdW5kcyhkb3VibGVBcnJheSwg
aik7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBqICsgMC41KQorICAgICAgICAgICAg
ICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZUdldEJ5VmFsT25Eb3VibGVBcnJheUhvdE91dE9m
Qm91bmRzKGRvdWJsZUFycmF5LCBqKSBpbi1ib3VuZHMgd2l0aCBqID0gIiArIGogKyAiIHZhbHVl
ID0gIiArIHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8g
Rm9sbG93ZWQgYnkgcGxlbnR5IG9mIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDEw
OyArK2opIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9wYXF1ZUdldEJ5VmFsT25Eb3VibGVB
cnJheUhvdE91dE9mQm91bmRzKGRvdWJsZUFycmF5LCBqKTsKKyAgICAgICAgICAgIGlmICgoaiAh
PT0gNSAmJiB2YWx1ZSAhPT0gaiArIDAuNSkgfHwgKGogPT09IDEwICYmIHZhbHVlICE9PSB1bmRl
ZmluZWQpKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlR2V0QnlWYWxPbkRv
dWJsZUFycmF5SG90T3V0T2ZCb3VuZHMoZG91YmxlQXJyYXksIGopIG91dC1vZi1ib3VuZHMgd2l0
aCBqID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgICAgICB9CisgICAgfQorfQor
dGVzdFN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3B1dC1i
eS12YWwtb3V0LW9mLWJvdW5kcy1iYXNpY3MuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3B1dC1ieS12YWwtb3V0LW9mLWJvdW5kcy1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTg2YzlmYmQ1Mjc0OTQ1ZGNiMTdkYjgwZWFjZTAzNzViNzI0Njk5NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1vdXQtb2Yt
Ym91bmRzLWJhc2ljcy5qcwpAQCAtMCwwICsxLDg3IEBACisvLyBQdXQgZWFybHkgb3V0LW9mLWJv
dW5kIGRhdGEuCitmdW5jdGlvbiBvcGFxdWVQdXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZC
b3VuZHMoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTsK
K30KK25vSW5saW5lKG9wYXF1ZVB1dEJ5VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyk7
CisKK2Z1bmN0aW9uIHRlc3RJbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcygpCit7CisgICAgLy8g
V2FybSB1cCB3aXRoIGFuIGltbWVkaWF0ZSBvdXQgb2YgYm91bmRzLgorICAgIHZhciBpbnQzMkFy
cmF5ID0gbmV3IEFycmF5KDEwKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsK
KyAgICAgICAgb3BhcXVlUHV0QnlWYWxPbkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGludDMy
QXJyYXksIGksIGkpOworICAgICAgICB2YXIgdmFsdWUgPSBpbnQzMkFycmF5W2ldOworICAgICAg
ICBpZiAodmFsdWUgIT09IGkpCisgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIG9wYXF1ZVB1dEJ5
VmFsT25JbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcyhpbnQzMkFycmF5LCBpLCBpKSB3YXJtdXAg
d2l0aCBpID0gIiArIGkgKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgIH0KKyAgICBvcGFxdWVQ
dXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgMTA0MiwgMSk7
CisgICAgdmFyIHZhbHVlID0gaW50MzJBcnJheVsxMDQyXTsKKyAgICBpZiAodmFsdWUgIT09IDEp
CisgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlUHV0QnlWYWxPbkludDMyQXJyYXlFYXJseU91
dE9mQm91bmRzKGludDMyQXJyYXksIDEwNDIsIDEpIHZhbHVlID0gIiArIHZhbHVlOworCisgICAg
dmFyIGxlbmd0aCA9IGludDMyQXJyYXkubGVuZ3RoOworICAgIGlmIChpbnQzMkFycmF5Lmxlbmd0
aCAhPT0gMTA0MykKKyAgICAgICAgdGhyb3cgIkluY29ycmVjdCBpbnQzMkFycmF5Lmxlbmd0aCwg
bGVuZ3RoID0gIiArIGxlbmd0aDsKKworCisgICAgLy8gV2UgdGhlbiBkbyBwbGVudHkgb2YgaW4t
Ym91bmRzIGFjY2Vzc2VzLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDsgKytqKSB7CisgICAgICAgICAgICBvcGFxdWVQ
dXRCeVZhbE9uSW50MzJBcnJheUVhcmx5T3V0T2ZCb3VuZHMoaW50MzJBcnJheSwgaiwgaSk7Cisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSBpbnQzMkFycmF5W2pdOworICAgICAgICAgICAgaWYgKHZh
bHVlICE9PSBpKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgb3BhcXVlUHV0QnlWYWxP
bkludDMyQXJyYXlFYXJseU91dE9mQm91bmRzKGludDMyQXJyYXksIGosIGkpIGluLWJvdW5kcyB3
aXRoIGkgPSAiICsgaSArICIgaiA9ICIgKyBqICsgIiB2YWx1ZSA9ICIgKyB2YWx1ZTsKKyAgICAg
ICAgfQorICAgIH0KK30KK3Rlc3RJbnQzMkFycmF5RWFybHlPdXRPZkJvdW5kcygpOworCisKKy8v
IEdldCBvdXQtb2YtYm91bmQgZGF0YSBhZnRlciBhIHRob3VzYW5kIHJ1bi4KK2Z1bmN0aW9uIG9w
YXF1ZVB1dEJ5VmFsT25TdHJpbmdBcnJheUhvdE91dE9mQm91bmRzKGFycmF5LCBpbmRleCwgdmFs
dWUpCit7CisgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7Cit9Citub0lubGluZShvcGFxdWVQdXRC
eVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcyk7CisKK2Z1bmN0aW9uIHRlc3RTdHJpbmdB
cnJheUhvdE91dE9mQm91bmRzKCkKK3sKKyAgICAvLyBXYXJtIHVwIHdpdGggaW4gYm91bmRzIGFj
Y2Vzcy4KKyAgICB2YXIgc3RyaW5nQXJyYXkgPSBuZXcgQXJyYXkoMTApOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDsg
KytqKSB7CisgICAgICAgICAgICBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRPZkJv
dW5kcyhzdHJpbmdBcnJheSwgaiwgIiIgKyBpKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0
cmluZ0FycmF5W2pdOworICAgICAgICAgICAgaWYgKHZhbHVlICE9PSAiIiArIGkpCisgICAgICAg
ICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRP
ZkJvdW5kcyhzdHJpbmdBcnJheSwgaiwgaSkgaW4tYm91bmRzIHdpdGggaSA9ICIgKyBpICsgIiBq
ID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gRG8gYSBzaW5nbGUgb3V0IG9mIGJvdW5kcyBhZnRlciB3YXJtdXAuCisgICAgb3BhcXVlUHV0
QnlWYWxPblN0cmluZ0FycmF5SG90T3V0T2ZCb3VuZHMoc3RyaW5nQXJyYXksIDUxMywgNDIpOwor
ICAgIHZhciB2YWx1ZSA9IHN0cmluZ0FycmF5WzUxM107CisgICAgaWYgKHZhbHVlICE9PSA0MikK
KyAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRP
ZkJvdW5kcyhzdHJpbmdBcnJheSwgNTEzLCA0MiksIHZhbHVlID0gIiArIHZhbHVlOworCisgICAg
Ly8gV2UgdGhlbiBkbyBwbGVudHkgb2YgaW4tYm91bmRzIGFjY2Vzc2VzLgorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMDsg
KytqKSB7CisgICAgICAgICAgICBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRPZkJv
dW5kcyhzdHJpbmdBcnJheSwgaiwgIiIgKyBpKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0
cmluZ0FycmF5W2pdOworICAgICAgICAgICAgaWYgKHZhbHVlICE9PSAiIiArIGkpCisgICAgICAg
ICAgICAgICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRP
ZkJvdW5kcyhzdHJpbmdBcnJheSwgaiwgaSkgaW4tYm91bmRzIHdpdGggaSA9ICIgKyBpICsgIiBq
ID0gIiArIGogKyAiIHZhbHVlID0gIiArIHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gRm9sbG93ZWQgYnkgcGxlbnR5IG9mIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCisgICAgZm9y
ICh2YXIgaiA9IDUxNDsgaiA8PSAxMDI1OyArK2opCisgICAgICAgIG9wYXF1ZVB1dEJ5VmFsT25T
dHJpbmdBcnJheUhvdE91dE9mQm91bmRzKHN0cmluZ0FycmF5LCBqLCAiIiArIGopOworCisgICAg
Zm9yICh2YXIgaiA9IDUxNDsgaiA8PSAxMDI1OyArK2opIHsKKyAgICAgICAgdmFyIHZhbHVlID0g
c3RyaW5nQXJyYXlbal07CisgICAgICAgIGlmICh2YWx1ZSAhPT0gIiIgKyBqKQorICAgICAgICAg
ICAgdGhyb3cgIkZhaWxlZCBvcGFxdWVQdXRCeVZhbE9uU3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5k
cyhzdHJpbmdBcnJheSwgaiwgaikgaW4tYm91bmRzIHdpdGggaiA9ICIgKyBqICsgIiB2YWx1ZSA9
ICIgKyB2YWx1ZTsKKyAgICB9Cit9Cit0ZXN0U3RyaW5nQXJyYXlIb3RPdXRPZkJvdW5kcygpOwo=
</data>
<flag name="review"
          id="279301"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>