<?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>235720</bug_id>
          
          <creation_ts>2022-01-27 10:04:00 -0800</creation_ts>
          <short_desc>Reland StructureID overhaul</short_desc>
          <delta_ts>2022-02-13 11:56:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=233379</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1834572</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-01-27 10:04:00 -0800</bug_when>
    <thetext>Reland StructureID overhaul</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834607</commentid>
    <comment_count>1</comment_count>
      <attachid>450155</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-01-27 10:38:12 -0800</bug_when>
    <thetext>Created attachment 450155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834617</commentid>
    <comment_count>2</comment_count>
      <attachid>450155</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-27 10:47:22 -0800</bug_when>
    <thetext>Comment on attachment 450155
Patch

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

r=me

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:105
&gt; +        MarkedBlock* block = reinterpret_cast&lt;MarkedBlock*&gt;(g_jscConfig.startOfStructureHeap) + freeIndex * MarkedBlock::blockSize;
&gt; +        constexpr bool writable = true;
&gt; +        constexpr bool executable = false;
&gt; +        OSAllocator::commit(block, MarkedBlock::blockSize, writable, executable);

Let&apos;s mprotect READ | WRITE in debug build.

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:111
&gt; +        OSAllocator::decommit(blockPtr, MarkedBlock::blockSize);

Let&apos;s mprotect NONE in debug build.

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:149
&gt; +void StructureAlignedMemoryAllocator::commitBlock(void* block)
&gt; +{
&gt; +    constexpr bool writable = true;
&gt; +    constexpr bool executable = false;
&gt; +    OSAllocator::commit(block, MarkedBlock::blockSize, writable, executable);
&gt; +}

Let&apos;s mprotect READ | WRITE in debug build.

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:154
&gt; +void StructureAlignedMemoryAllocator::decommitBlock(void* block)
&gt; +{
&gt; +    OSAllocator::decommit(block, MarkedBlock::blockSize);
&gt; +}

Let&apos;s mprotect NONE in debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835522</commentid>
    <comment_count>3</comment_count>
      <attachid>450407</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-01-31 07:03:33 -0800</bug_when>
    <thetext>Created attachment 450407
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835538</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-31 08:06:42 -0800</bug_when>
    <thetext>Committed r288815 (246591@main): &lt;https://commits.webkit.org/246591@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450407.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835540</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-31 08:07:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88270829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841044</commentid>
    <comment_count>6</comment_count>
      <attachid>450407</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-13 11:43:23 -0800</bug_when>
    <thetext>Comment on attachment 450407
Patch for landing

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

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:85
&gt; +        ASSERT((g_jscConfig.startOfStructureHeap &amp; ~structureIDMask) == g_jscConfig.startOfStructureHeap);

nits:
- Should be RELEASE_ASSERT
- And let&apos;s also RELEASE_ASSERT that startOfStructureHeap isn&apos;t null.

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:95
&gt; +            ASSERT(freeIndex &lt;= m_usedBlocks.bitCount());

This code is also quite subtle. You grow the bit vector by &quot;not finding a bit&quot;, and having find return bitCount(). Might be worth a comment.

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:102
&gt; +        MarkedBlock* block = reinterpret_cast&lt;MarkedBlock*&gt;(g_jscConfig.startOfStructureHeap) + freeIndex * MarkedBlock::blockSize;

same nit from last patch: use uint8_t* here instead of MarkedBlocked*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841053</commentid>
    <comment_count>7</comment_count>
      <attachid>450407</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-13 11:56:25 -0800</bug_when>
    <thetext>Comment on attachment 450407
Patch for landing

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

&gt; Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:92
&gt; +            Locker locker(m_lock);

Not sure we need a lock here, given the IsoMemoryAllocatorBase already locks. We could pass around a locker if we wanted to indicate this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450155</attachid>
            <date>2022-01-27 10:38:12 -0800</date>
            <delta_ts>2022-01-31 07:03:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235720-20220127133810.patch</filename>
            <type>text/plain</type>
            <size>278823</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NjY0OTQwY2Q3ZTg5ZmNjY2RiMWU1Yjc4N2UxODI1YmU1MWRlYjY1Li4yMjM1YTI3M2Q1NTBmODg1
NzFlMjUxYmQxMjg4NDkwZjY0YzlkYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMzcgQEAKKzIwMjItMDEtMjcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVsYW5kIFN0cnVjdHVyZUlEIG92ZXJoYXVsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIHNpbmNlIHJldmVy
dDoKKworICAgICAgICBIYXZlIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Iga2VlcCBo
YWx2aW5nIHRoZSBzaXplIG9mIFZBCisgICAgICAgIHBvb2wgaXQgd2lsbCBhbGxvY2F0ZSBmcm9t
IHVudGlsIGl0IHN1Y2Nlc3NmdWxseSByZXNlcnZlcyB0aGUKKyAgICAgICAgYWRkcmVzcyBzcGFj
ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6
OkFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50
Q2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Y2FuQmVTaGFyZWQpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
aDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcm9wYWdhdGVUcmFu
c2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZGV0ZXJtaW5lTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmg6CisgICAgICAgIChKU0M6OkdldEJ5SWRN
b2RlTWV0YWRhdGE6OkdldEJ5SWRNb2RlTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
TW9kZU1ldGFkYXRhOjpjbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2FjaGUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNv
bXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKToKKyAg
ICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1
Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmls
ZTo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Q
cm9maWxlOjpjbGVhcik6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblByb2ZpbGU6OmNyZWF0ZUFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSk6Cisg
ICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0No
YWluLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNzQ2hhaW46Om5lZWRJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0Fj
Y2Vzc0NoYWluLmg6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVN0
YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToK
KyAgICAgICAgKEpTQzo6UHV0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAg
ICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlv
bkZyb21DZWxsKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZFNlbGYpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYWNlKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRJbkJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbmxpbmVBY2Nlc3NCYXNlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5l
QWNjZXNzQmFzZVN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoV2Vha1N0
cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlBsYW46OmZpbmFsaXplKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JV
bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvQm9vbGVhbk9iamVjdE9yT3RoZXIpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQnJhbmNoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0
ZVByb21pc2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGhlYXAvQWJzdHJh
Y3RTbG90VmlzaXRvci5oOgorICAgICAgICAqIGhlYXAvQWJzdHJhY3RTbG90VmlzaXRvcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvcjo6YXBwZW5kKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6cnVuRW5kUGhhc2UpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlND
OjpIZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0lzb0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpJc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOjpJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6SXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IpOgorICAg
ICAgICAoSlNDOjpJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlNYWxsb2NCbG9jayk6Cisg
ICAgICAgIChKU0M6Oklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVCbG9jayk6CisgICAg
ICAgIChKU0M6Oklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmNvbW1pdEJsb2NrKToKKyAgICAg
ICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZGVjb21taXRCbG9jayk6CisgICAg
ICAgIChKU0M6Oklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeUFsbG9jYXRlQWxpZ25lZE1l
bW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6
OmZyZWVBbGlnbmVkTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0lzb0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2Uu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmNwcC4KKyAgICAgICAgKEpTQzo6SXNvTWVtb3J5QWxsb2NhdG9yQmFzZTo6
SXNvTWVtb3J5QWxsb2NhdG9yQmFzZSk6CisgICAgICAgIChKU0M6Oklzb01lbW9yeUFsbG9jYXRv
ckJhc2U6On5Jc29NZW1vcnlBbGxvY2F0b3JCYXNlKToKKyAgICAgICAgKEpTQzo6SXNvTWVtb3J5
QWxsb2NhdG9yQmFzZTo6cmVsZWFzZU1lbW9yeUZyb21TdWJjbGFzc0Rlc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpJc29NZW1vcnlBbGxvY2F0b3JCYXNlOjp0cnlBbGxvY2F0ZUFsaWduZWRNZW1v
cnkpOgorICAgICAgICAoSlNDOjpJc29NZW1vcnlBbGxvY2F0b3JCYXNlOjpmcmVlQWxpZ25lZE1l
bW9yeSk6CisgICAgICAgICogaGVhcC9Jc29NZW1vcnlBbGxvY2F0b3JCYXNlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aC4KKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vi
c3BhY2U6Oklzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OnRyeUFsbG9j
YXRlRnJvbUxvd2VyVGllcik6CisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZS5oOgorICAgICAg
ICAqIGhlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcmVjaXNlQWxs
b2NhdGlvbjo6dHJ5Q3JlYXRlRm9yTG93ZXJUaWVyKToKKyAgICAgICAgKEpTQzo6UHJlY2lzZUFs
bG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Q
cmVjaXNlQWxsb2NhdGlvbi5oOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcnkpOgorICAgICAg
ICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmFwcGVuZEhpZGRlbik6CisgICAgICAgICogaGVhcC9TdHJ1Y3R1cmVBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I6OlN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+U3RydWN0dXJl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVBbGln
bmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVNZW1vcnkpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlSZWFsbG9jYXRlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlTWVtb3J5TWFuYWdlcjo6U3RydWN0dXJlTWVtb3J5TWFu
YWdlcik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZU1lbW9yeU1hbmFnZXI6OnRyeU1hbGxvY1N0
cnVjdHVyZUJsb2NrKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlTWVtb3J5TWFuYWdlcjo6ZnJl
ZVN0cnVjdHVyZUJsb2NrKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6aW5pdGlhbGl6ZVN0cnVjdHVyZUFkZHJlc3NTcGFjZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeU1hbGxvY0Jsb2NrKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6Y29tbWl0QmxvY2sp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkZWNvbW1p
dEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1N0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1
cmVJRCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmFuZG9tVGh1bmspOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Om51a2VTdHJ1Y3R1cmVB
bmRTdG9yZUJ1dHRlcmZseSk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5j
cHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OmNvbXB1
dGVIYXNoKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3MpOgorICAgICAgICAoSlNDOjpK
SVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAg
ICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0
UGF0aCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdHlwZW9mX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJvdG90eXBl
X29mKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOgorICAgICAgICAqIGppdC9K
SVRTdHViUm91dGluZS5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFu
Y2U6OnNhbml0aXplZE1lc3NhZ2VTdHJpbmcpOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNl
OjpzYW5pdGl6ZWROYW1lU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2Fu
aXRpemVkVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVEYXRhOjp2aXNp
dENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmg6CisgICAgICAgICogcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1
Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmNsZWFyU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRC
dXR0ZXJmbHlJbXBsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRl
Y2lkZWQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEludDMyKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxEb3VibGUpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZl
cnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252
ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0
RG91YmxlVG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydENv
bnRpZ3VvdXNUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJl
Y3RDdXN0b21HZXR0ZXJTZXR0ZXJXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om51a2VT
dHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnRvVGhpc051bWJlcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b3R5cGVUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp+U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVu
RGljdGlvbmFyeVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZHVtcCBjb25z
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmlkIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVJRC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSUQ6Om51a2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRDo6aXNOdWtlZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZUlEOjpkZWNvbnRhbWluYXRlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlSUQ6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSUQ6OmJpdHMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRDo6U3RydWN0dXJlSUQpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVJRDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJRDo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
SUQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlESGFzaDo6aGFzaCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZUlESGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlSURCbG9iLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlUmFyZURhdGE6OlN0cnVjdHVyZVJhcmVEYXRhKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnRyeUNhY2hlUHJv
cGVydHlOYW1lRW51bWVyYXRvclZpYVdhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBy
dW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxv
Zzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OnZp
c2l0KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpnZXRTdHJ1
Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6dHJ5R2V0U3RydWN0dXJlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpX
cml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6V3JpdGVCYXJyaWVyU3RydWN0dXJlSUQpOgorICAgICAg
ICAoSlNDOjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6V3JpdGVCYXJyaWVyU3RydWN0dXJlSUQ6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChK
U0M6OldyaXRlQmFycmllclN0cnVjdHVyZUlEOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V3JpdGVCYXJyaWVyU3RydWN0dXJlSUQ6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6V3Jp
dGVCYXJyaWVyU3RydWN0dXJlSUQ6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlND
OjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6V3JpdGVCYXJyaWVyU3RydWN0dXJlSUQ6OnNldFdpdGhvdXRXcml0ZUJhcnJpZXIpOgorICAg
ICAgICAoSlNDOjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6dW52YWxpZGF0ZWRHZXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6dmFsdWUgY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpX
cml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6c2V0KToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQ6OnNldE1heUJlTnVsbCk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllclN0
cnVjdHVyZUlEOjpzZXRFYXJseVZhbHVlKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIu
Y3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlkYXRlSlNDZWxsKToKKyAgICAg
ICAgKiB0b29scy9JbnRlZ3JpdHkuY3BwOgorICAgICAgICAqIHRvb2xzL0ludGVncml0eS5oOgor
ICAgICAgICAqIHRvb2xzL0ludGVncml0eUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SW50ZWdy
aXR5OjphdWRpdFN0cnVjdHVyZUlEKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6
SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjp2
aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5oOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0R2xvYmFs
KToKKwogMjAyMi0wMS0yNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbV2ViIEluc3BlY3Rvcl0gVXBkYXRlIHJldHVybiB2YWx1ZSBuYW1lIGZvciBBbmlt
YXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJiNWZmMzg3ZWY4M2U0OThiYzBjMjQw
YmZjNjk4ODhmNjkwMDMxZjkuLjQwODY0ZjYzNjc4NWJhMWQ2MmU4NjVkMzA5Y2Q5YWYwNWE3NGNl
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjItMDEtMjcgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVsYW5kIFN0cnVjdHVyZUlEIG92ZXJoYXVs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2Vz
IHNpbmNlIHJldmVydDoKKworICAgICAgICBBZGQgYSB0cnkgdmVyc2lvbiBvZiByZXNlcnZlVW5j
b21taXR0ZWQgYW5kIHJlc2VydmVBbmRDb21taXQKKyAgICAgICAgc28gdHJ5UmVzZXJ2ZVVuY29t
bWl0dGVkIGNhbiBjYWxsIHRoZW0gaWYgbmVlZGVkLgorCisgICAgICAgICogd3RmL09TQWxsb2Nh
dG9yLmg6CisgICAgICAgICogd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjp0cnlSZXNlcnZlQW5kQ29tbWl0KToKKyAgICAgICAgKFdURjo6dHJ5UmVzZXJ2ZVVu
Y29tbWl0dGVkKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRl
ZCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjp0cnlSZXNlcnZlVW5jb21taXR0ZWRBbGln
bmVkKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQpOgorICAg
ICAgICAqIHd0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9j
YXRvcjo6dHJ5UmVzZXJ2ZVVuY29tbWl0dGVkQWxpZ25lZCk6CisKIDIwMjItMDEtMjYgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgQnVpbGQgZmFp
bHVyZSB3aXRoIEdDQyAxMjogTWVkaWFUaW1lLmg6MTY3OjcxOiBlcnJvcjogY2FsbCB0byBub24t
J2NvbnN0ZXhwcicgZnVuY3Rpb24gJ1dURjo6TWVkaWFUaW1lJiBXVEY6Ok1lZGlhVGltZTo6b3Bl
cmF0b3I9KGNvbnN0IFdURjo6TWVkaWFUaW1lJiknCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggMzdjZTc1Mzc0M2MzNTNkNThmNjYxMThiNzgzN2M4Nzg4ZTQ4MTk3ZS4uNzg4
Mzc3ZjY3MTM5OWExM2IwYjUxNTMxZTBjMjljMjQ3NDNkYjgyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNzQ3LDExICs3NDcsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aAogICAgIGhlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmgKLSAgICBoZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAogICAgIGhlYXAvSXNv
Q2VsbFNldC5oCiAgICAgaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAogICAgIGhlYXAvSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZS5oCiAgICAgaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5o
CisgICAgaGVhcC9Jc29NZW1vcnlBbGxvY2F0b3JCYXNlLmgKICAgICBoZWFwL0lzb1N1YnNwYWNl
LmgKICAgICBoZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZVBl
clZNLmgKQEAgLTc3OCw2ICs3NzgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGhlYXAvU3Ryb25nLmgKICAgICBoZWFwL1N0cm9uZ0ZvcndhcmQu
aAogICAgIGhlYXAvU3Ryb25nSW5saW5lcy5oCisgICAgaGVhcC9TdHJ1Y3R1cmVBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmgKICAgICBoZWFwL1N1YnNwYWNlLmgKICAgICBoZWFwL1N1YnNwYWNlSW5s
aW5lcy5oCiAgICAgaGVhcC9TeW5jaHJvbm91c25lc3MuaApAQCAtMTE2OSw4ICsxMTcwLDggQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L1N0cnVjdHVyZS5oCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCiAgICAgcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCisgICAgcnVudGltZS9TdHJ1Y3R1cmVJRC5oCiAgICAgcnVudGltZS9T
dHJ1Y3R1cmVJREJsb2IuaAotICAgIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCiAgICAgcnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKICAgICBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgK
ICAgICBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDZhNWNiMWU2YWJiYmRkNzZlZWY3YzVmMDBiMjVjY2Q1MjFlOTBmZGUu
LmQwMGI1ZjRhZjIxNzM5MTFjZjVlOWRkMjFhN2E2YjM3MGEzODU3OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC04NDksNyArODQ5LDYgQEAKIAkJMkFBQ0U2M0QxOENBNUEwMzAw
RUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0IxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJBRDJFREZCMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDJFREZBMTk3OTlF
MzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVh
cEl0ZXJhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
Ki87IH07Ci0JCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAv
KiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzExMUI4QjIzOTcy
NTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3
MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQg
LyogQjNFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwpAQCAtOTI4LDYgKzkyNyw3IEBACiAJCTUz
MzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhC
QjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKIAkJNTMzM0JC
REMyMTEwRjdEOTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUM5REMyMTMyOERGODIwMDJCMkFE
NyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi87IH07CiAJCTUzMzNCQkREMjExMEY3RTEwMDc2
MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCAqLzsgfTsKKwkJNTMzNjk5QjMyN0EzMDc5MjAwQzk1NjFEIC8qIElz
b01lbW9yeUFsbG9jYXRvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzMzY5OUIxMjdBMzA3ODYwMEM5NTYxRCAvKiBJc29NZW1vcnlBbGxvY2F0
b3JCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTMzOEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJB
NjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzM4RUJBMzIzQUIw
NEI4MDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAv
KiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovOyB9OwogCQk1MzNEMDc0NDIyQzJENzk3MDA0
RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUy
IC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTEwODgsNiAr
MTA4OCw4IEBACiAJCTUzNkIzMTlFMUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsK
IAkJNTM3MDgwNkIxRkUyMzJERjAwMjk5RTQ0IC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCQjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIw
NTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0
MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmggKi87IH07CisJCTUzN0ZFRUM5Mjc0MkJEQTMwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVJ
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM3RkVF
QzgyNzQyQkRBMzAwQzlFRkVFIC8qIFN0cnVjdHVyZUlELmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTM3RkVFRDAyNzQyQkRFMTAwQzlFRkVFIC8q
IFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzN0ZFRUNDMjc0MkJERTAwMEM5RUZFRSAvKiBTdHJ1
Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07CiAJCTUzODFCOTM5MUU2MEU5N0Qw
MDkwRjc5NCAvKiBXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzgxQjkzODFFNjBFOTdEMDA5MEY3OTQgLyogV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUzOEYxNUU3MjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNl
MTQ4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
OEYxNUREMjY4RkJCQjMwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ4LmNwcCAqLzsgfTsKIAkJ
NTM4RjE1RTgyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM4RjE1REUyNjhGQkJCMzAw
RDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTEuY3BwICovOyB9OwpAQCAtMzcxMyw4ICszNzE1LDYg
QEAKIAkJMkFEMkVERkExOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnVtZXJhdGlvbk1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVy
YXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0
aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFERkEyNjIxOEVGMzU0
MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHQ0xvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyQUY3
MzgyQTE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURU
YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4
QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0Yx
MUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVyZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
ODM0LDYgKzM4MzQsOCBAQAogCQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxRUU3QkMyMkRF
NkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyNjMxQjMyMTg3NzdBNTAwN0I4MTkxIC8qIEphdmFTY3Jp
cHRDb3JlLm1vZHVsZW1hcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLm1vZHVsZS1tYXAiOyBwYXRo
ID0gSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzM2OTlCMTI3QTMwNzg2MDBDOTU2MUQgLyogSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJc29NZW1vcnlBbGxvY2F0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzMzY5OUIyMjdBMzA3ODcwMEM5NTYxRCAvKiBJc29NZW1vcnlBbGxvY2F0
b3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzb01lbW9yeUFsbG9jYXRvckJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQg
LyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3Rh
YmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNlbGVjdFByZWRp
Y3RhYmlsaXR5Lmg7IHBhdGggPSBmdGwvRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21P
cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9wcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDAxMiw2ICs0MDE0LDkgQEAKIAkJNTM3MEI0RjQxQkYy
NUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzczQjREMzIyQUQ4QkY3MDA4MDM1NzIgLyogV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3M0I0RDQyMkFEQjMxNDAwODAzNTcyIC8qIFdlYWtPYmpl
Y3RSZWZDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrT2JqZWN0UmVmQ29u
c3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzdGRUVDODI3NDJC
REEzMDBDOUVGRUUgLyogU3RydWN0dXJlSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RydWN0dXJlSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM3RkVF
Q0IyNzQyQkRFMDAwQzlFRkVFIC8qIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzN0ZFRUND
Mjc0MkJERTAwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM4MUI5MzYxRTYwRTk2NjAw
OTBGNzk0IC8qIFdhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzODFCOTM4MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1bHRT
aWduYWxIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21GYXVs
dFNpZ25hbEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM4RjE1REQy
NjhGQkJCMzAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTE0OC5jcHA7IHBhdGggPSAiRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDgu
Y3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTU4MjMsOCArNTgy
OCw4IEBACiAJCQkJQTczMUIyNUExMzAwOTM4ODAwNDBBN0ZBIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJOTMyRjVCRDcwODIyQTFDNzAwNzM2OTc1IC8qIGxp
YmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk5MzJGNUJENjA4MjJBMUM3MDA3
MzY5NzUgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovLAotCQkJCUE1MDk4QjA0MUMx
NkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQlEREIwNEY0MjI3OEU1NkEyMDA4RDM2NzggLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLywK
KwkJCQlBNTA5OEIwNDFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC01OTE5LDYgKzU5MjQsNyBAQAogCQkJCTg2MDNDRUYwMTRDNzUzRUYw
MEFFNTlFMyAvKiB0b29scyAqLywKIAkJCQk3Qjk4RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2Fz
bSAqLywKIAkJCQk4NkVBQzQ4QzBGOTNFOEI5MDA4RUM5NDggLyogeWFyciAqLywKKwkJCQk1MzM2
OTlBRjI3QTMwNkY2MDBDOTU2MUQgLyogUmVjb3ZlcmVkIFJlZmVyZW5jZXMgKi8sCiAJCQkpOwog
CQkJbmFtZSA9IEphdmFTY3JpcHRDb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTY3MzIsNiArNjczOCw4IEBACiAJCQkJRTNCRjFCQUQyMzhBQUVEMTAwM0ExQzJCIC8qIElzb0hl
YXBDZWxsVHlwZS5oICovLAogCQkJCUUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmggKi8sCiAJCQkJRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElz
b0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmggKi8sCisJCQkJNTMzNjk5QjIyN0EzMDc4NzAw
Qzk1NjFEIC8qIElzb01lbW9yeUFsbG9jYXRvckJhc2UuY3BwICovLAorCQkJCTUzMzY5OUIxMjdB
MzA3ODYwMEM5NTYxRCAvKiBJc29NZW1vcnlBbGxvY2F0b3JCYXNlLmggKi8sCiAJCQkJMEZEQ0Ux
MkMxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmNwcCAqLywKIAkJCQkwRkRDRTEyQjFG
QUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCAqLywKIAkJCQkwRkQyRkQ5MjIwQjUyQkRD
MDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggKi8sCkBAIC02NzkxLDYgKzY3OTksOCBA
QAogCQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQlDRDFG
OUI0QTI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2FyZC5oICovLAogCQkJCTE0NTcyMjg1
MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggKi8sCisJCQkJNTM3RkVFQ0IyNzQy
QkRFMDAwQzlFRkVFIC8qIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovLAor
CQkJCTUzN0ZFRUNDMjc0MkJERTAwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmggKi8sCiAJCQkJMEY3REYxMzExRTI5NzBENTAwOTU5NTFCIC8qIFN1YnNwYWNlLmNw
cCAqLywKIAkJCQkwRjdERjEzMjFFMjk3MEQ1MDA5NTk1MUIgLyogU3Vic3BhY2UuaCAqLywKIAkJ
CQkwRjdERjEzMzFFMjk3MEQ1MDA5NTk1MUIgLyogU3Vic3BhY2VJbmxpbmVzLmggKi8sCkBAIC03
MzQ5LDExICs3MzU5LDExIEBACiAJCQkJRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21H
bG9iYWwuaCAqLywKIAkJCQkxNDg1MjFENTI2RUFFQkRGMDBDQzFEMUEgLyogV2FzbUhhbmRsZXJJ
bmZvLmNwcCAqLywKIAkJCQkxNDg1MjFENzI2RUFFQkZFMDBDQzFEMUEgLyogV2FzbUhhbmRsZXJJ
bmZvLmggKi8sCi0JCQkJNTJGREFCQzIyNzg4MDc2OTAwQzE1QjU5IC8qIFdhc21JUkdlbmVyYXRv
ckhlbHBlcnMuaCAqLywKIAkJCQlBRDhGRjM5NjFFQjVCRDg1MDA4N0ZGODIgLyogV2FzbUluZGV4
T3JOYW1lLmNwcCAqLywKIAkJCQlBRDhGRjM5NTFFQjVCRDg1MDA4N0ZGODIgLyogV2FzbUluZGV4
T3JOYW1lLmggKi8sCiAJCQkJQUQ1QzM2REUxRjY5OUVCNjAwMEJDQUFGIC8qIFdhc21JbnN0YW5j
ZS5jcHAgKi8sCiAJCQkJQUQ1QzM2REYxRjY5OUVCNjAwMEJDQUFGIC8qIFdhc21JbnN0YW5jZS5o
ICovLAorCQkJCTUyRkRBQkMyMjc4ODA3NjkwMEMxNUI1OSAvKiBXYXNtSVJHZW5lcmF0b3JIZWxw
ZXJzLmggKi8sCiAJCQkJQUQwMDY1OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAq
LywKIAkJCQkxNEM1QUQ2ODIyRjMzRkJGMDBGMUZCODMgLyogV2FzbUxMSW50R2VuZXJhdG9yLmNw
cCAqLywKIAkJCQkxNEM1QUQ2OTIyRjMzRkJGMDBGMUZCODMgLyogV2FzbUxMSW50R2VuZXJhdG9y
LmggKi8sCkBAIC04MTkyLDkgKzgyMDIsOCBAQAogCQkJCTc5ODY5NDNBMUY4QzBBQzgwMDkyMzJB
RSAvKiBTdHJ1Y3R1cmVDYWNoZS5oICovLAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAv
KiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8sCiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmggKi8sCisJCQkJNTM3RkVFQzgyNzQyQkRBMzAwQzlFRkVFIC8qIFN0
cnVjdHVyZUlELmggKi8sCiAJCQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oICovLAotCQkJCTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmNwcCAqLywKLQkJCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJl
SURUYWJsZS5oICovLAogCQkJCTBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJ
bmxpbmVzLmggKi8sCiAJCQkJQzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJh
cmVEYXRhLmNwcCAqLywKIAkJCQlDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJl
UmFyZURhdGEuaCAqLywKQEAgLTEwMDI0LDcgKzEwMDMzLDYgQEAKIAkJCQkwRkJFMEY3MzE2QzFE
QjA1MDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdEODlDRjYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdD
U0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJDQUVDNzUyNzkwQjhGQjAwRERCQUFGIC8q
IFNlY3VyZUFSTTY0RUhhc2hQaW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQzc3MzE2RTEy
Rjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkZBNUQw
MjFFODUzQTEwMDlDMEVCQSAvKiBERkdEZXNpcmVkR2xvYmFsUHJvcGVydHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmll
cnMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0NzcsNiArMTA0ODUsNyBAQAogCQkJCUUzQkYxQkFF
MjM4QUFFREIwMDNBMUMyQiAvKiBJc29IZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzQzhFRDQzMjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTY1QjE1MTI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhl
YXBDZWxsVHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMzY5OUIzMjdBMzA3OTIw
MEM5NTYxRCAvKiBJc29NZW1vcnlBbGxvY2F0b3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkRDRTEyRDFGQUZCNEU1MDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDJGRDk1MjBCNTJCRTIwMEYwOTQ0MSAvKiBJc29TdWJzcGFjZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBl
clZNLmggaW4gSGVhZGVycyAqLywKQEAgLTEwOTY4LDYgKzEwOTc3LDggQEAKIAkJCQlBNTRDRjJG
QTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTUxNjVENTFCREYxMzVBMDAzQjc1QzEgLyogU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTJDQUVDNzUyNzkwQjhGQjAwRERCQUFGIC8qIFNlY3VyZUFSTTY0
RUhhc2hQaW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkNBRUM3NjI3OTBCOTAxMDBEREJBQUYg
LyogU2VjdXJlQVJNNjRFSGFzaFBpbnNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5
OURBNjE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODY1REEwQzgyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVC
cmFuZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTAyNCwxMCArMTEwMzUsMTEgQEAKIAkJ
CQlDRDFGOUI0QjI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2FyZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ1NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBp
biBIZWFkZXJzICovLAorCQkJCTUzN0ZFRUQwMjc0MkJERTEwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTg2OTQzQjFGOEMw
QUNDMDA5MjMyQUUgLyogU3RydWN0dXJlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNEVF
NzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTM3RkVFQzkyNzQyQkRBMzAwQzlFRkVFIC8qIFN0cnVjdHVyZUlELmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4g
SGVhZGVycyAqLywKLQkJCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURU
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMkM5MjQxNkQwMUVFOTAwQzc4MDNGIC8qIFN0
cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkUxOEE0MTZCQUVDNDAwMEFG
MzA2MSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIwQkE5MkQx
NkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTE1Nyw2ICsxMTE2OSw3IEBACiAJCQkJMTQ4NTIxRDgyNkVBRUJGRTAwQ0MxRDFB
IC8qIFdhc21IYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ4RkYzOTgxRUI1QkRC
MjAwODdGRjgyIC8qIFdhc21JbmRleE9yTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ1QzM2
RTIxRjY5OUVDMDAwMEJDQUFGIC8qIFdhc21JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTJGREFCQzMyNzg4MDc2QjAwQzE1QjU5IC8qIFdhc21JUkdlbmVyYXRvckhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUFEMDA2NTlFMUVDQUM4MTIwMDBDQTkyNiAvKiBXYXNtTGltaXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDUwRkExRjIzNTdCRUM5MDA5M0NENEQgLyogV2FzbUxMSW50
VGllclVwQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFOUUwQUMxRUFFODNERjAwRkVF
MjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE4NCw3ICsx
MTE5Nyw2IEBACiAJCQkJRTMzQkJFMDkyNUJGQTA0MTAwNTM2OTBGIC8qIFdhc21TdHJlYW1pbmdD
b21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMDUzMUEyMTM0MkI2ODAwMjJFQzE0IC8q
IFdhc21TdHJlYW1pbmdQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQzczQTkxMjVCRkE3
M0IwMEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJD
QUVDNzYyNzkwQjkwMTAwRERCQUFGIC8qIFNlY3VyZUFSTTY0RUhhc2hQaW5zSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUQ1QzM2RTYxRjY5RUM5MTAwMEJDQUFGIC8qIFdhc21UYWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTREMDFCRjUyNkRFRUY1MzAwQ0FFMEQwIC8qIFdhc21UYWcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1
bmtzLmggaW4gSGVhZGVycyAqLywKQEAgLTExMjA4LDcgKzExMjIwLDYgQEAKIAkJCQlFM0EzMkJD
NzFGQzgzMTQ3MDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUz
OTNBREQ4MUZFNzAyRDAwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MkZEQUJDMzI3ODgwNzZCMDBDMTVCNTkgLyogV2FzbUlSR2Vu
ZXJhdG9ySGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM5OTMwQzgyMkFEM0I5QTAwNTFD
REUyIC8qIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM5
QkZCQUUyMkFEM0MzQTAwMjNGNEMwIC8qIFdlYWtPYmplY3RSZWZQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0RTg0RkExMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NzgxZmI0NzEwNDBlY2Vl
MDE4ZGM3MTFjNTRjZjZiNTMxNDk0NjU2Li4wZjU1ZWNiOTExYTg3Y2JlNzhiN2ViZjIxNmJhYzA3
MGU2NjVhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC01MzEsNiArNTMxLDcg
QEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb0hlYXBDZWxsVHlwZS5jcHAK
K2hlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5jcHAKIGhlYXAvSXNvU3Vic3BhY2UuY3BwCiBo
ZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCiBoZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcApAQCAt
NTUyLDYgKzU1Myw3IEBAIGhlYXAvU2xvdFZpc2l0b3IuY3BwCiBoZWFwL1NwYWNlVGltZU11dGF0
b3JTY2hlZHVsZXIuY3BwCiBoZWFwL1N0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVy
LmNwcAogaGVhcC9TdG9wSWZOZWNlc3NhcnlUaW1lci5jcHAKK2hlYXAvU3RydWN0dXJlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5jcHAKIGhlYXAvU3Vic3BhY2UuY3BwCiBoZWFwL1N5bmNocm9ub3Vz
U3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlci5jcHAKIGhlYXAvU3luY2hyb25vdXNuZXNzLmNw
cApAQCAtOTk5LDcgKzEwMDEsNiBAQCBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
CiBydW50aW1lL1N0cnVjdHVyZS5jcHAKIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwCiBydW50
aW1lL1N0cnVjdHVyZUNoYWluLmNwcAotcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAogcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKIHJ1bnRpbWUvU3ltYm9sLmNwcAogcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAppbmRleCA4MWQ3ZDA4Nzk5NTQ2MDQ1ZWRlZWIyNjU3ZjU0OTEzZGQxZmFk
NzBjLi5iZTgwZDhiZDAzNzIwMDA2MmMxMmNiOGYxNTdkYmMwYWFiNTYzMzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpCiAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWlu
KFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiB7Ci0gICAgbV9zdHJ1Y3R1cmUuc2V0TWF5QmVOdWxsKHZtLCBvd25lciwgc3RydWN0
dXJlKTsKKyAgICBtX3N0cnVjdHVyZUlELnNldE1heUJlTnVsbCh2bSwgb3duZXIsIHN0cnVjdHVy
ZSk7CiAgICAgbV9jb25kaXRpb25TZXQgPSBjb25kaXRpb25TZXQ7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9jb25kaXRpb25TZXQuaXNWYWxpZCgpKTsKIH0KQEAgLTUzNiwxNCArNTM2LDE0IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0m
IHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAordm9pZCBBY2Nlc3NDYXNlOjpmb3JF
YWNoRGVwZW5kZW50Q2VsbChWTSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiB7CiAg
ICAgbV9jb25kaXRpb25TZXQuZm9yRWFjaERlcGVuZGVudENlbGwoZnVuY3Rvcik7Ci0gICAgaWYg
KG1fc3RydWN0dXJlKQotICAgICAgICBmdW5jdG9yKG1fc3RydWN0dXJlLmdldCgpKTsKKyAgICBp
ZiAobV9zdHJ1Y3R1cmVJRCkKKyAgICAgICAgZnVuY3RvcihtX3N0cnVjdHVyZUlELmdldCgpKTsK
ICAgICBpZiAobV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikgewogICAgICAgICBmb3IgKFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEIDogbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+Y2hhaW4oKSkKLSAgICAg
ICAgICAgIGZ1bmN0b3Iodm0uZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKSk7CisgICAgICAgICAg
ICBmdW5jdG9yKHN0cnVjdHVyZUlELmRlY29kZSgpKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKHR5
cGUoKSkgewpAQCAtODc0LDggKzg3NCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90
eXBlID09IERlbGV0ZSB8fCBtX3R5cGUgPT0gU2V0UHJpdmF0ZUJyYW5kKQogICAgICAgICAgICAg
b3V0LnByaW50KCJcbiIsIGluZGVudCwgImZyb20gc3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
c3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAgICJcbiIsIGluZGVudCwgInRvIHN0cnVjdHVy
ZSA9ICIsIHBvaW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKG1f
c3RydWN0dXJlKQotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIsIGluZGVudCwgInN0cnVjdHVy
ZSA9ICIsIHBvaW50ZXJEdW1wKG1fc3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIGVsc2UgaWYg
KG1fc3RydWN0dXJlSUQpCisgICAgICAgICAgICBvdXQucHJpbnQoIlxuIiwgaW5kZW50LCAic3Ry
dWN0dXJlID0gIiwgcG9pbnRlckR1bXAobV9zdHJ1Y3R1cmVJRC5nZXQoKSkpOwogICAgIH0KIAog
ICAgIGlmICghbV9jb25kaXRpb25TZXQuaXNFbXB0eSgpKQpAQCAtOTA0LDE5ICs5MDQsMTkgQEAg
Ym9vbCBBY2Nlc3NDYXNlOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4KIHZvaWQgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRv
ciYgdmlzaXRvcikgY29uc3QKIHsKLSAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgIG1fc3Ry
dWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9zdHJ1Y3R1cmVJRCkKKyAg
ICAgICAgbV9zdHJ1Y3R1cmVJRC0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICBpZiAobV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbikgewogICAgICAgICBmb3IgKFN0cnVjdHVyZUlEIHN0cnVjdHVy
ZUlEIDogbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+Y2hhaW4oKSkKLSAgICAgICAgICAgIHZpc2l0
b3Iudm0oKS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsK
KyAgICAgICAgICAgIHN0cnVjdHVyZUlELmRlY29kZSgpLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsK
ICAgICB9CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHJhbnNpdGlvbjoKICAg
ICBjYXNlIERlbGV0ZToKLSAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQobV9zdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1f
c3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQobV9zdHJ1Y3R1
cmVJRC0+cHJldmlvdXNJRCgpKSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQobV9zdHJ1Y3R1cmVJRC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTcyMCw3ICsxNzIwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZVdpdGhHdWFyZCgKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyhzY3JhdGNoR1BS
LCBzY3JhdGNoMkdQUik7CiAjZW5kaWYKIAotICAgICAgICBqaXQuZW1pdExvYWRQcm90b3R5cGUo
dm0sIHZhbHVlR1BSLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSLCBmYWlsQW5kSWdub3JlKTsKKyAg
ICAgICAgaml0LmVtaXRMb2FkUHJvdG90eXBlKHZtLCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgZmFp
bEFuZElnbm9yZSk7CiAgICAgICAgIGppdC5tb3ZlKHNjcmF0Y2gyR1BSLCB2YWx1ZUdQUik7CiAg
ICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNJbnN0YW5jZSA9IGppdC5icmFu
Y2hQdHIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUik7CkBAIC0y
NjE1LDcgKzI2MTUsNyBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhbkJlU2hhcmVkKGNvbnN0IEFjY2Vz
c0Nhc2UmIGxocywgY29uc3QgQWNjZXNzQ2FzZSYgcmhzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGxocy5tX3ZpYVByb3h5ICE9IHJocy5tX3ZpYVByb3h5KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKGxocy5tX3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgaWYgKGxocy5tX3N0cnVjdHVyZUlELmdldCgpICE9IHJocy5tX3N0cnVj
dHVyZUlELmdldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGxocy5tX2lkZW50
aWZpZXIgIT0gcmhzLm1faWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggZmUxY2ZmYmM2NTk4
NWU4YzE0NzlhMmNiNTM0YTJmMzg4OGY3NTNhNi4uMWMxY2M3MTY4YWNlNGE0MzY3ZmM4ZGE0MjJm
YWQyZGVkNDRkNTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5oCkBAIC0xODQsMTUgKzE4NCwxNSBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8
IG1fdHlwZSA9PSBEZWxldGUgfHwgbV90eXBlID09IFNldFByaXZhdGVCcmFuZCkKLSAgICAgICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwotICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVJRC0+cHJldmlv
dXNJRCgpOworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVJRC5nZXQoKTsKICAgICB9CiAgICAg
Ym9vbCBndWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayhjb25zdCBTdHJ1Y3R1cmVTdHViSW5mbyYpIGNv
bnN0OwogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUgfHwgbV90
eXBlID09IFNldFByaXZhdGVCcmFuZCk7Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlSUQuZ2V0KCk7CiAgICAgfQogCiAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9j
b25kaXRpb25TZXQ7IH0KQEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRp
dGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5
LCBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLCBtX29mZnNldCk7CisgICAgICAgIHJldHVy
biBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZUlELnVudmFsaWRhdGVkR2V0KCksIG1f
b2Zmc2V0KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5CZVNoYXJlZChjb25zdCBBY2Nl
c3NDYXNlJiwgY29uc3QgQWNjZXNzQ2FzZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgLCBtX3N0YXRlKFdURk1vdmUob3RoZXIubV9zdGF0ZSkpCiAgICAgICAgICwg
bV92aWFQcm94eShXVEZNb3ZlKG90aGVyLm1fdmlhUHJveHkpKQogICAgICAgICAsIG1fb2Zmc2V0
KFdURk1vdmUob3RoZXIubV9vZmZzZXQpKQotICAgICAgICAsIG1fc3RydWN0dXJlKFdURk1vdmUo
b3RoZXIubV9zdHJ1Y3R1cmUpKQorICAgICAgICAsIG1fc3RydWN0dXJlSUQoV1RGTW92ZShvdGhl
ci5tX3N0cnVjdHVyZUlEKSkKICAgICAgICAgLCBtX2NvbmRpdGlvblNldChXVEZNb3ZlKG90aGVy
Lm1fY29uZGl0aW9uU2V0KSkKICAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWluKFdURk1v
dmUob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikpCiAgICAgICAgICwgbV9pZGVudGlmaWVy
KFdURk1vdmUob3RoZXIubV9pZGVudGlmaWVyKSkKQEAgLTI5NSw3ICsyOTUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQogICAgICAgICAsIG1fdmlhUHJv
eHkob3RoZXIubV92aWFQcm94eSkKICAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkK
LSAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX3N0
cnVjdHVyZUlEKG90aGVyLm1fc3RydWN0dXJlSUQpCiAgICAgICAgICwgbV9jb25kaXRpb25TZXQo
b3RoZXIubV9jb25kaXRpb25TZXQpCiAgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihv
dGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQogICAgICAgICAsIG1faWRlbnRpZmllcihvdGhl
ci5tX2lkZW50aWZpZXIpCkBAIC0zNDgsNyArMzQ4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBVc3Vh
bGx5IHRoaXMgaXMgdGhlIHN0cnVjdHVyZSB0aGF0IHdlIGV4cGVjdCB0aGUgYmFzZSBvYmplY3Qg
dG8gaGF2ZS4gQnV0LCB0aGlzIGlzIHRoZSAqbmV3KgogICAgIC8vIHN0cnVjdHVyZSBmb3IgYSB0
cmFuc2l0aW9uIGFuZCB3ZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgaXQgaGFzIGEgc3Ryb25nIHJl
ZmVyZW5jZSB0byB0aGUgb2xkCiAgICAgLy8gc3RydWN0dXJlLiBGb3IgcHJveGllcywgdGhpcyBp
cyB0aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QgYmVoaW5kIHRoZSBwcm94eS4KLSAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1
cmVJRCBtX3N0cnVjdHVyZUlEOwogCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9j
b25kaXRpb25TZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5jcHAKaW5kZXggOTQ1ZWE4OWE5ZGQ4ZjI0Y2Y4NzllNTViMmE0OTQyOGNhZjFjZGEy
YS4uNmIwYjhjYWI4OWZmZGY3ZmNlZWIxYWJhN2Y5YjBiMGE0NGNiOGUyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKQEAgLTEyMyw5ICsx
MjMsOSBAQCB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDbwogICAgIGlmICghbV9sYXN0U2VlblN0cnVj
dHVyZUlEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU3RydWN0dXJlKiBsYXN0U2VlblN0
cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IG1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyLCBjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKLSAgICBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgPSAwOworICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlE
KCk7CiB9CiAKIHZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSog
bGFzdFNlZW5TdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgKaW5kZXggMzZmZWIxNDRiYWQzODBkNTYxYjcwMDgyMjUzY2M1MDRjMDc4MDA1
Yy4uYTYxNTg3NTczYjMyODdhMjExNGM0ZDVmODMyNWRiN2ZkODNmMGViMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaApAQCAtMjQ5LDcgKzI0OSw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogcG9seW1vcnBoaWNTdHJ1
Y3R1cmUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihyZWludGVycHJldF9jYXN0
PHZvaWQqPigxKSk7IH0KICAgICAKLSAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJl
SUQgeyAwIH07CisgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEOwogICAgIGJv
b2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92
ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3Vu
dGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBl
LiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlw
ZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3Qg
bWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91
bmRzIHsgZmFsc2UgfTsKICNpZiBVU0UoTEFSR0VfVFlQRURfQVJSQVlTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5jcHAKaW5kZXggZDQxZGVjYWRlNTg5YjJjOTU1OTNkMWM2MzUyMDk4YmY2ZTUxNjNjMi4uMzgw
OTdhNDNjYWE0NmFmNWU1NmZiZTNjZjgxM2ZiMGU4ZGMwZGU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
Y3BwCkBAIC0xMDEsNyArMTAxLDYgQEAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2kKIAogICAgIGNh
c2UgQ2FjaGVUeXBlOjpTdHViOiB7CiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBsaXN0ID0g
c3R1YkluZm8tPm1fc3R1Yi5nZXQoKTsKLQogICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJbmRl
eCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKICAgICAgICAg
ICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNDM1MDE3
MTE2NTc2ZmFhY2ZiZDFkZTg3MTUzNjQwZGNmNjE3M2IyMy4uZGMyYTI5NGU5NGRmZjQwN2IyZDU3
MmFkMGE3ZWZjOWYwODJmYzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTExOTAsNyArMTE5MCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+CiB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVmlzaXRvciYgdmlzaXRvcikKIHsKICAgICB0eXBlbmFtZSBWaXNpdG9y
OjpTdXBwcmVzc0dDVmVyaWZpZXJTY29wZSBzdXBwcmVzc1Njb3BlKHZpc2l0b3IpOwotICAgIFZN
JiB2bSA9ICptX3ZtOwogCiAgICAgaWYgKGppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRl
clRodW5rKSB7CiAgICAgICAgIGlmIChtX21ldGFkYXRhKSB7CkBAIC0xMjAwLDkgKzExOTksOSBA
QCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVmlzaXRvciYgdmlzaXRvcgogICAgICAgICAgICAgICAgIGlmICghb2xkU3RydWN0
dXJlSUQgfHwgIW5ld1N0cnVjdHVyZUlEKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAg
ICAgICBpZiAodmlzaXRvci5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG5ld1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBuZXdTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0pOwpAQCAtMTIxOCw5ICsxMjE3LDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0
b3ImIHZpc2l0b3IKICAgICAgICAgICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQocHJvcGVy
dHkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRT
dHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBv
bGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgICAgICBpZiAodmlzaXRvci5pc01h
cmtlZChvbGRTdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlE
KTsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXdTdHJ1
Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0p
OwpAQCAtMTIzNiw5ICsxMjM1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRp
b25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImIHZpc2l0b3IKICAgICAgICAg
ICAgICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoYnJhbmQpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsK
ICAgICAgICAgICAgICAgICBpZiAodmlzaXRvci5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXdTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAg
ICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwpAQCAtMTI2Nyw3ICsxMjY2LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZpc2l0b3ImIHZpc2l0b3IKICAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1
c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogICAgICAgICAKICAgICAgICAgZm9yIChTdHJ1Y3R1
cmVJRCBzdHJ1Y3R1cmVJRCA6IGRmZ0NvbW1vbi0+bV93ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykK
LSAgICAgICAgICAgIHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCktPm1hcmtJZkNoZWFwKHZp
c2l0b3IpOworICAgICAgICAgICAgc3RydWN0dXJlSUQuZGVjb2RlKCktPm1hcmtJZkNoZWFwKHZp
c2l0b3IpOwogCiAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpdGlvbiA6IGRmZ0NvbW1vbi0+bV90
cmFuc2l0aW9ucykgewogICAgICAgICAgICAgaWYgKHNob3VsZE1hcmtUcmFuc2l0aW9uKHZpc2l0
b3IsIHRyYW5zaXRpb24pKSB7CkBAIC0xMzA3LDYgKzEzMDYsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYgdmlz
aXRvcikKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBWTSYgdm0gPSAqbV92bTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUodm0pOwogICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKHRoaXMpKQog
ICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xMzMxLDcgKzEzMzEsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYg
dmlzaXRvcikKICAgICB9CiAgICAgaWYgKGFsbEFyZUxpdmVTb0ZhcikgewogICAgICAgICBmb3Ig
KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIDogZGZnQ29tbW9uLT5tX3dlYWtTdHJ1Y3R1cmVSZWZl
cmVuY2VzKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVj
dHVyZShzdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0
cnVjdHVyZUlELmRlY29kZSgpOwogICAgICAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKHN0
cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICBhbGxBcmVMaXZlU29GYXIgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTEzNjUsNyArMTM2NSw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGlmIChtb2RlTWV0YWRh
dGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3Ry
dWN0dXJlSUQpKSkKKyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5p
c01hcmtlZChvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJp
bmcgIiwgb3BOYW1lLCAiIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKICAgICAgICAgICAgIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdl
dEJ5SWRDYWNoZShtb2RlTWV0YWRhdGEpOwpAQCAtMTM4NiwxOSArMTM4NiwxOSBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAKICAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxPcFRyeUdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsK
LSAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAg
IGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmVJRC5k
ZWNvZGUoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgdHJ5X2dldF9ieV9pZCBMTEludCBw
cm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0g
MDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwog
ICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwogICAgICAgICB9KTsKIAogICAgICAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZERpcmVjdD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X3N0cnVjdHVyZUlEOwotICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFw
LmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkp
KQorICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKG9s
ZFN0cnVjdHVyZUlELmRlY29kZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBnZXRfYnlf
aWRfZGlyZWN0IExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIG1ldGFkYXRh
Lm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9
IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CiAgICAg
ICAgIH0pOwogCkBAIC0xNDA2LDExICsxNDA2LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRh
ZGF0YS5tX3Byb3BlcnR5LmdldCgpOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOwogCi0gICAgICAgICAgICBpZiAoKCFwcm9wZXJ0
eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkgJiYgKCFzdHJ1Y3R1cmVJRCB8fCB2bS5o
ZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCkp
KSkKKyAgICAgICAgICAgIGlmICgoIXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQocHJvcGVy
dHkpKSAmJiAoIXN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQoc3RydWN0dXJlSUQuZGVj
b2RlKCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByaXZhdGUgcHJvcGVy
dHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJv
cGVydHkuY2xlYXIoKTsKICAgICAgICAgfSk7CkBAIC0xNDE5LDE0ICsxNDE5LDE0IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKICAgICAg
ICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1
cmVJRDsKICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG1ldGFkYXRhLm1fc3Ry
dWN0dXJlQ2hhaW4uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2
bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1
cmVJRCkpKQotICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5p
c01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkK
KyAgICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQob2xk
U3RydWN0dXJlSUQuZGVjb2RlKCkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZChuZXdTdHJ1Y3R1cmVJRC5kZWNvZGUoKSkpCiAgICAgICAg
ICAgICAgICAgJiYgKCFjaGFpbiB8fCB2bS5oZWFwLmlzTWFya2VkKGNoYWluKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHV0IHRyYW5zaXRpb24uIik7Ci0gICAgICAgICAgICBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xk
U3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZz
ZXQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAg
ICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgfSk7CiAK
QEAgLTE0MzQsMTUgKzE0MzQsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOwogICAgICAgICAgICAgSlNDZWxsKiBw
cm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoKCFv
bGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKSkpCiAgICAgICAg
ICAgICAgICAgJiYgKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKLSAg
ICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAg
ICAgICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZChuZXdTdHJ1Y3R1
cmVJRC5kZWNvZGUoKSkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHV0X3By
aXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gU3Ry
dWN0dXJlSUQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEu
bV9uZXdTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5t
X3Byb3BlcnR5LmNsZWFyKCk7CiAgICAgICAgIH0pOwogCkBAIC0xNDUwLDM3ICsxNDUwLDM3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsK
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIEpTQ2VsbCogYnJhbmQgPSBtZXRhZGF0YS5tX2JyYW5k
LmdldCgpOwotICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01h
cmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAg
ICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQob2xkU3Ry
dWN0dXJlSUQuZGVjb2RlKCkpKQogICAgICAgICAgICAgICAgICYmICghYnJhbmQgfHwgdm0uaGVh
cC5pc01hcmtlZChicmFuZCkpCi0gICAgICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8
fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1
Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQobmV3U3RydWN0dXJlSUQuZGVjb2RlKCkpKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwg
IkNsZWFyaW5nIExMSW50IHNldF9wcml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7Ci0gICAgICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKLSAgICAgICAgICAgIG1ldGFkYXRh
Lm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1
cmVJRCA9IFN0cnVjdHVyZUlEKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVy
ZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIo
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENoZWNrUHJp
dmF0ZUJyYW5kPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBKU0Nl
bGwqIGJyYW5kID0gbWV0YWRhdGEubV9icmFuZC5nZXQoKTsKLSAgICAgICAgICAgIGlmICgoIXN0
cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KHN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICBpZiAoKCFzdHJ1Y3R1cmVJRCB8fCB2bS5o
ZWFwLmlzTWFya2VkKHN0cnVjdHVyZUlELmRlY29kZSgpKSkKICAgICAgICAgICAgICAgICAmJiAo
IWJyYW5kIHx8IHZtLmhlYXAuaXNNYXJrZWQoYnJhbmQpKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IGNoZWNrX3ByaXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsKLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9z
dHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5k
LmNsZWFyKCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BU
b1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAg
ICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCht
ZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlELmRlY29kZSgpKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlELmRlY29kZSgp
OwogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGgg
c3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX3RvVGhpc1N0YXR1cyA9IG1lcmdlKG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzLCBUb1RoaXND
bGVhcmVkQnlHQyk7CiAgICAgICAgIH0pOwogCkBAIC0xNTY3LDcgKzE1NjcsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfTsKIAotICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0ZDo6Z2V0PDA+KHBhaXIua2V5KSkpKQorICAgICAg
ICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3RkOjpnZXQ8MD4ocGFpci5rZXkpLmRlY29kZSgpKSkK
ICAgICAgICAgICAgIHJldHVybiBjbGVhcigpOwogCiAgICAgICAgIGZvciAoY29uc3QgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50JiB3YXRjaHBvaW50IDogcGFp
ci52YWx1ZSkgewpAQCAtMTg4NCw3ICsxODg0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5
VmlzaXRXZWFrUmVmZXJlbmNlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWaXNpdG9yJgog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCh3ZWFrUmVmZXJlbmNlKTsKIAogICAgIGZvciAoU3RydWN0
dXJlSUQgc3RydWN0dXJlSUQgOiBkZmdDb21tb24tPm1fd2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmlzaXRvci52bSgpLmdldFN0cnVj
dHVyZShzdHJ1Y3R1cmVJRCkpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHN0
cnVjdHVyZUlELmRlY29kZSgpKTsKICNlbmRpZiAgICAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCmluZGV4IGE3ODc2YjNjYmQ1ZWI4
MWRhMTAyMDA0NTU4OTFhODYwNGFkNWI0ZGUuLmFiODZlZWYxNjVjZjg3NGQ2YmE2NGZkNGU4ZjY2
ZTZjZWE0NzYwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoR2V0
QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCkgPT0gMTYpOwogdW5pb24gR2V0QnlJZE1vZGVNZXRh
ZGF0YSB7CiAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YSgpCiAgICAgewotICAgICAgICBkZWZhdWx0
TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIGRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0g
U3RydWN0dXJlSUQoKTsKICAgICAgICAgZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKICAg
ICAgICAgZGVmYXVsdE1vZGUucGFkZGluZzEgPSAwOwogICAgICAgICBtb2RlID0gR2V0QnlJZE1v
ZGU6OkRlZmF1bHQ7CkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoR2V0
QnlJZE1vZGVNZXRhZGF0YSkgPT0gMTYpOwogc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRhdGEgewog
ICAgIEdldEJ5SWRNb2RlTWV0YWRhdGEoKQogICAgIHsKLSAgICAgICAgZGVmYXVsdE1vZGUuc3Ry
dWN0dXJlSUQgPSAwOworICAgICAgICBkZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IFN0cnVjdHVy
ZUlEKCk7CiAgICAgICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CiAgICAgICAgIGRl
ZmF1bHRNb2RlLnBhZGRpbmcxID0gMDsKICAgICAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZh
dWx0OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKIGlu
bGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRD
YWNoZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OwotICAgIGRlZmF1bHRN
b2RlLnN0cnVjdHVyZUlEID0gMDsKKyAgICBkZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IFN0cnVj
dHVyZUlEKCk7CiAgICAgZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXggYTE1YTli
NjkzYTIzMWY0MGU5NmUyMGNjZGFhYzg3MzgwODQ3ZTIyNS4uYzAzYWE3N2Y5MDcxNTYzYjFjYzNl
ZjdhOWE5YzZlYjA1ZjdiYjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29k
ZUluZGUKICAgICBpZiAoIXN0cnVjdHVyZUlEKQogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CiAKICAgICBpZiAoc3RydWN0dXJlLT50
YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSgpKQogICAgICAgICByZXR1cm4gR2V0
QnlTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAppbmRleCA3ZDE4YzRiYjJiZGY0NWQ2MTJiYmQ3
NGE3ZTBiM2UxM2RkYzc4ZWQ3Li5mYjVlZWEyZGNiYWYyYzQwYTA3ZmFjYjdkNTc5MzM4OGM1YzI3
NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNz
LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJCiAgICAgICAg
IH0KIAogICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7Ci0gICAgICAgIHN0dWJJ
bmZvLm1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSA9IDA7IC8vIENsZWFyIG91dCB0aGUgaW5s
aW5lIGFjY2VzcyBjb2RlLgorICAgICAgICBzdHViSW5mby5tX2lubGluZUFjY2Vzc0Jhc2VTdHJ1
Y3R1cmVJRC5jbGVhcigpOyAvLyBDbGVhciBvdXQgdGhlIGlubGluZSBhY2Nlc3MgY29kZS4KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgSW5saW5lQWNj
ZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluCiB7CiAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkgJiYgY29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKICAgICAgICAgc3R1YkluZm8u
bV9jb2RlUHRyID0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uOwotICAgICAgICBzdHVi
SW5mby5tX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSAwOyAvLyBDbGVhciBvdXQgdGhlIGlu
bGluZSBhY2Nlc3MgY29kZS4KKyAgICAgICAgc3R1YkluZm8ubV9pbmxpbmVBY2Nlc3NCYXNlU3Ry
dWN0dXJlSUQuY2xlYXIoKTsgLy8gQ2xlYXIgb3V0IHRoZSBpbmxpbmUgYWNjZXNzIGNvZGUuCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aAppbmRleCBkZjhmMzcxYWJkMWQxOTYwNzZkNzViNGJkYzEyNWVkMzlmMzgyNjBkLi5iMTc3ZmVm
ZDA2MzZlMjJlYjUwZmZmYjYyOWVjZTQxMTgxNGUyZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZS5oCkBAIC0zMywyMSArMzMsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLCBtX3N0cnVjdHVyZSk7
IH0KKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZUlEKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSwg
bV9zdHJ1Y3R1cmVJRCk7IH0KIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgeyByZXR1cm4g
bV9zdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fc3RydWN0dXJlSUQuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUFsbG9jYXRpb25T
dHJ1Y3R1cmVGcm9tQmFzZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvd25lciwgSlNP
YmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBiYXNlKTsKIAotICAgIHZvaWQgY2xlYXIoKSB7
IG1fc3RydWN0dXJlLmNsZWFyKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2
b2lkIHZpc2l0QWdncmVnYXRlKFZpc2l0b3ImIHZpc2l0b3IpIHsgdmlzaXRvci5hcHBlbmQobV9z
dHJ1Y3R1cmUpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9zdHJ1Y3R1cmVJRC5jbGVhcigpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCB2aXNpdEFnZ3JlZ2F0ZShWaXNp
dG9yJiB2aXNpdG9yKSB7IHZpc2l0b3IuYXBwZW5kKG1fc3RydWN0dXJlSUQpOyB9CiAKIHByaXZh
dGU6Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CisgICAgV3JpdGVC
YXJyaWVyU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKIH07CiAKIGlubGluZSBTdHJ1Y3R1cmUq
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6Y3JlYXRlQWxsb2NhdGlvblN0cnVj
dHVyZUZyb21CYXNlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGJhc2VHbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVy
ZSkKIHsKLSAgICBBU1NFUlQoIW1fc3RydWN0dXJlIHx8IG1fc3RydWN0dXJlLmdldCgpLT5jbGFz
c0luZm8oKSAhPSBiYXNlU3RydWN0dXJlLT5jbGFzc0luZm8oKSB8fCBtX3N0cnVjdHVyZS0+Z2xv
YmFsT2JqZWN0KCkgIT0gYmFzZVN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIEFTU0VS
VCghbV9zdHJ1Y3R1cmVJRCB8fCBtX3N0cnVjdHVyZUlELmdldCgpLT5jbGFzc0luZm8oKSAhPSBi
YXNlU3RydWN0dXJlLT5jbGFzc0luZm8oKSB8fCBtX3N0cnVjdHVyZUlELT5nbG9iYWxPYmplY3Qo
KSAhPSBiYXNlU3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGJhc2VTdHJ1
Y3R1cmUtPmhhc01vbm9Qcm90bygpKTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwpAQCAt
NjEsOCArNjEsOCBAQCBpbmxpbmUgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGU6OmNyZWF0ZUFsbG9jYXRpb25TdHJ1Y3R1cmVGcgogICAgIC8vIEVuc3VyZSB0aGF0
IGlmIGFub3RoZXIgdGhyZWFkIHNlZXMgdGhlIHN0cnVjdHVyZSwgaXQgd2lsbCBzZWUgaXQgcHJv
cGVybHkgY3JlYXRlZC4KICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogCi0gICAgbV9zdHJ1
Y3R1cmUuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgbV9zdHJ1Y3R1cmVJRC5zZXQodm0sIG93bmVyLCBzdHJ1Y3R1cmUpOworICAg
IHJldHVybiBzdHJ1Y3R1cmU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAK
aW5kZXggZTJiN2I2NjI4YWMwZmY1ZTQwNWU4OGIwNDY0M2E5M2FkNjFmZDZmZC4uNzZmZTZhZTQ0
YTExM2U1MmRiOGE1M2ViMzdkM2ZlYzEwMTQ0ZDcyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCkBAIC04MCwx
MCArODAsMTAgQEAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6dHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKGNoYWluKSkpOwogfQogCi1ib29sIFBv
bHlQcm90b0FjY2Vzc0NoYWluOjpuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFZNJiB2bSkg
Y29uc3QKK2Jvb2wgUG9seVByb3RvQWNjZXNzQ2hhaW46Om5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoVk0mKSBjb25zdAogewogICAgIGZvciAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgOiBt
X2NoYWluKSB7Ci0gICAgICAgIGlmICh2bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpLT5uZWVk
SW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmVJRC5kZWNv
ZGUoKS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggYTI5YjRiZjY5
ZGE3NDcxM2IxYzYyODRiNTAzYTY0MWU5NjNjN2M3OS4uMTA3ZTRiZjg3NzJkZjA0NDI2MWVjODU4
ZjBjOWZlN2M2MmZlZDVmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSUQuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU3LDIwICs1NywyMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFZNJikgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2goVk0mIHZtLCBTdHJ1Y3R1cmUq
IGJhc2VTdHJ1Y3R1cmUsIGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CisgICAgdm9pZCBmb3JFYWNo
KFZNJiwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlLCBjb25zdCBGdW5jJiBmdW5jKSBjb25zdAog
ICAgIHsKICAgICAgICAgYm9vbCBhdEVuZCA9ICFtX2NoYWluLnNpemUoKTsKICAgICAgICAgZnVu
YyhiYXNlU3RydWN0dXJlLCBhdEVuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2NoYWluLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBhdEVuZCA9IGkgKyAxID09IG1f
Y2hhaW4uc2l6ZSgpOwotICAgICAgICAgICAgZnVuYyh2bS5nZXRTdHJ1Y3R1cmUobV9jaGFpbltp
XSksIGF0RW5kKTsKKyAgICAgICAgICAgIGZ1bmMobV9jaGFpbltpXS5kZWNvZGUoKSwgYXRFbmQp
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBzbG90QmFzZVN0cnVjdHVyZShW
TSYgdm0sIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkgY29uc3QKKyAgICBTdHJ1Y3R1cmUqIHNs
b3RCYXNlU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKG1fY2hhaW4uc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLmdl
dFN0cnVjdHVyZShtX2NoYWluLmxhc3QoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9jaGFpbi5s
YXN0KCkuZGVjb2RlKCk7CiAgICAgICAgIHJldHVybiBiYXNlU3RydWN0dXJlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTQz
NzY4ZWVkOWE0MDc4MjAyY2JiMTRhM2I5Yzc0NWE2MTJiZTlmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0zODEs
NyArMzgxLDcgQEAgYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrKFZNJiB2bSkgY29u
c3QKICAgICB9CiAgICAgaWYgKG1fc3R1YlJvdXRpbmUpIHsKICAgICAgICAgZm9yIChTdHJ1Y3R1
cmVJRCB3ZWFrUmVmZXJlbmNlIDogbV9zdHViUm91dGluZS0+d2Vha1N0cnVjdHVyZXMoKSkgewot
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUod2Vha1Jl
ZmVyZW5jZSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHdlYWtSZWZlcmVu
Y2UuZGVjb2RlKCk7CiAgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3RydWN0dXJl
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAppbmRleCA4MWQ0NjcxOGE1Zjc1
OTk5YWNjZTljMTBmZjQ3MTc1NjI2NjgzZTM3Li4zZWFjMTMyOTQ3ZmNlOGFhYjg0ZTg1MzM3Zjlk
MzFmNTJmMGFhMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZEZsYWdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRGbGFncy5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkVD
TUFNb2RlLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5U3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0YXR1cy5jcHAK
aW5kZXggNzVjZWMyYjkwYTkxYTA0MGQ5ZDdjY2MyNDdmM2FhMzhhMzgyMzg2MS4uZTE5ZjcyNTY1
MTUzYmUzZjBiNjNiMTI4ZDkwN2U3ZjhlZDc2NTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlTdGF0dXMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFB1dEJ5U3Rh
dHVzIFB1dEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgQnl0ZWNvZGVJbmRlCiAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuIFB1
dEJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOwogICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwogCiAgICAgU3RydWN0dXJl
SUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOwogICAgIGlmICgh
bmV3U3RydWN0dXJlSUQpIHsKQEAgLTkyLDcgKzkyLDcgQEAgUHV0QnlTdGF0dXMgUHV0QnlTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZUlu
ZGUKICAgICAgICAgcmV0dXJuIFB1dEJ5VmFyaWFudDo6cmVwbGFjZShudWxscHRyLCBzdHJ1Y3R1
cmUsIG9mZnNldCk7CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gbmV3U3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgCiAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CiAgICAgCkBAIC0xODksNyArMTg5LDcgQEAgUHV0QnlTdGF0dXMgUHV0QnlTdGF0dXM6OmNv
bXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ28KICAg
ICAgICAgCiAgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKICAgICAgICAgUG9seW1vcnBoaWNB
Y2Nlc3MqIGxpc3QgPSBzdHViSW5mby0+bV9zdHViLmdldCgpOwotICAgICAgICAKKwogICAgICAg
ICBQdXRCeVN0YXR1cyByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDdmYjdkYjI5YWNkOWFmNzlmZTY2MGJiZmNhZWU4MTJmMTg3Y2MyY2Mu
LmE3NTlkZDBmMTE2ZTJmODZiMTQ3OWU0YThkYTQwNDZjZDk1Yjc0ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtNTk2LDEz
ICs1OTYsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCogY2Vs
bCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICB9Ci0gICAgLy8g
RklYTUU6IHJkYXI6Ly82OTAzNjg4ODogdW5kbyB0aGlzIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4K
LSAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBjZWxsLT52bSgpLnRyeUdldFN0cnVjdHVyZShjZWxsLT5z
dHJ1Y3R1cmVJRCgpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWlzU2FuZVBvaW50ZXIoc3RydWN0dXJl
KSkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBTcGVj
Tm9uZTsKLSAgICB9Ci0gICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1
cmUpOworICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJl
KCkpOwogfQogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKaW5kZXggODA5ODQ2ZDNkZmQ4YWQxOGE0MThlOWRjNmU4NzE4ODUwYmE1NDFl
Ni4uNWQyODdkYjU2OGRmYjk3NTMzNDBjMjA5NGFiNjA5YzIwMTczYTZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBA
IC00Nyw4ICs0Nyw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZihj
b25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvCiAgICAgQVNTRVJUKGhhc0Nv
bnN0YW50SWRlbnRpZmllcik7CiAgICAgc2V0Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBlOjpH
ZXRCeUlkU2VsZik7CiAgICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICBtX2lubGlu
ZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLT5pZCgpOwot
ICAgIGNvZGVCbG9jay0+dm0oKS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICBtX2lubGlu
ZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJRC5zZXQoY29kZUJsb2NrLT52bSgpLCBjb2RlQmxvY2ssIGlu
bGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUpOwogICAgIGJ5SWRTZWxmT2Zmc2V0ID0gb2Zmc2V0Owog
fQogCkBAIC02OSw4ICs2OCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlk
UmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsCiAgICAgQVNTRVJU
KG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6VW5zZXQpOwogICAgIHNldENhY2hlVHlwZShsb2Nr
ZXIsIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2UpOwogICAgIG1faWRlbnRpZmllciA9IGlkZW50
aWZpZXI7Ci0gICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlID0gaW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZS0+aWQoKTsKLSAgICBjb2RlQmxvY2stPnZtKCkud3JpdGVCYXJyaWVyKGNvZGVC
bG9jayk7CisgICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQuc2V0KGNvZGVCbG9jay0+
dm0oKSwgY29kZUJsb2NrLCBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKTsKICAgICBieUlkU2Vs
Zk9mZnNldCA9IG9mZnNldDsKIH0KIApAQCAtNzksOCArNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2Nr
ZXIsIENvZAogICAgIEFTU0VSVChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KTsKICAg
ICBzZXRDYWNoZVR5cGUobG9ja2VyLCBDYWNoZVR5cGU6OkluQnlJZFNlbGYpOwogICAgIG1faWRl
bnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlID0g
aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS0+aWQoKTsKLSAgICBjb2RlQmxvY2stPnZtKCkud3Jp
dGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQu
c2V0KGNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJl
KTsKICAgICBieUlkU2VsZk9mZnNldCA9IG9mZnNldDsKIH0KIApAQCAtMjE0LDExICsyMTEsMTEg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2Fz
ZSgKICAgICAgICAgLy8gYWNjZXNzIGNvZGUuIFRoYXQncyBiZWNhdXNlIHdoZW4gd2UgZmlyc3Qg
dHJhbnNpdGlvbiB0byBiZWNvbWluZyBhIFN0dWIsIHdlIG1heQogICAgICAgICAvLyBiZSBidWZm
ZXJlZCwgYW5kIHdlIGhhdmUgbm90IHlldCBnZW5lcmF0ZWQgYW55IGNvZGUuIE9uY2UgdGhlIFN0
dWIgZmluYWxseSBnZW5lcmF0ZXMKICAgICAgICAgLy8gY29kZSwgd2UncmUgbm8gbG9uZ2VyIHJ1
bm5pbmcgdGhlIGlubGluZSBhY2Nlc3MgY29kZSwgc28gd2UgY2FuIHRoZW4gY2xlYXIgb3V0Ci0g
ICAgICAgIC8vIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS4gVGhlIHJlYXNvbiB3ZSBkb24n
dCBjbGVhciBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgd2hpbGUKLSAgICAgICAgLy8gd2Un
cmUgYnVmZmVyZWQgaXMgYmVjYXVzZSB3ZSByZWx5IG9uIGl0IHRvIHJlc2V0IGR1cmluZyBHQyBp
ZiBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUKKyAgICAgICAgLy8gbV9pbmxpbmVBY2Nlc3NC
YXNlU3RydWN0dXJlSUQuIFRoZSByZWFzb24gd2UgZG9uJ3QgY2xlYXIgbV9pbmxpbmVBY2Nlc3NC
YXNlU3RydWN0dXJlSUQgd2hpbGUKKyAgICAgICAgLy8gd2UncmUgYnVmZmVyZWQgaXMgYmVjYXVz
ZSB3ZSByZWx5IG9uIGl0IHRvIHJlc2V0IGR1cmluZyBHQyBpZiBtX2lubGluZUFjY2Vzc0Jhc2VT
dHJ1Y3R1cmVJRAogICAgICAgICAvLyBpcyBjb2xsZWN0ZWQuCiAgICAgICAgIG1faWRlbnRpZmll
ciA9IG51bGxwdHI7Ci0gICAgICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSA9IDA7Cisg
ICAgICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlELmNsZWFyKCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBJZiB3ZSBnZW5lcmF0ZWQgc29tZSBjb2RlIHRoZW4gd2UgZG9uJ3Qgd2FudCB0
byBhdHRlbXB0IHRvIHJlcGF0Y2ggaW4gdGhlIGZ1dHVyZSB1bnRpbCB3ZQogICAgICAgICAvLyBn
YXRoZXIgZW5vdWdoIGNhc2VzLgpAQCAtMjMzLDcgKzIzMCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJs
b2NrKiBjCiB7CiAgICAgY2xlYXJCdWZmZXJlZFN0cnVjdHVyZXMoKTsKICAgICBtX2lkZW50aWZp
ZXIgPSBudWxscHRyOwotICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSA9IDA7CisgICAg
bV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQuY2xlYXIoKTsKIAogICAgIGlmIChtX2NhY2hl
VHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDQ0MzVm
YzMyMjYzOTE5YzMwYjNkOGM4NmYwMjE5ZjMwNWYyYTFmZDIuLjQ4MjQxNzgyYjdmMTQ5ODZkMWZh
YmNiNzY1ZTY3MWU0YWNmOWU5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC0yMTIsNiArMjEyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUs
IGltcGwpOwogICAgIH0KIAorICAgIFN0cnVjdHVyZSogaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVy
ZShWTSYpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJl
SUQuZ2V0KCk7CisgICAgfQogcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29uc2lk
ZXJDYWNoaW5nKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGltcGwpCiAgICAgewpAQCAtMzUyLDI0ICszNTYsMTcg
QEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCeUlk
U2VsZk9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywg
YnlJZFNlbGZPZmZzZXQpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZklubGluZUFj
Y2Vzc0Jhc2VTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1
YkluZm8sIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlEKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJ
RCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZVB0cigpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9jb2RlUHRyKTsgfQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZEb25lTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RydWN0dXJlU3R1YkluZm8sIGRvbmVMb2NhdGlvbik7IH0KICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24pOyB9CiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0KICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQ291bnRkb3duKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZVN0dWJJbmZvLCBjb3VudGRvd24pOyB9CiAKLSAgICBTdHJ1Y3R1cmUqIGlubGluZUFj
Y2Vzc0Jhc2VTdHJ1Y3R1cmUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUFj
Y2Vzc0Jhc2VTdHJ1Y3R1cmUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHZtLmdldFN0cnVjdHVyZShtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUpOwotICAg
IH0KLQogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKICAgICBQcm9wZXJ0eU9mZnNldCBieUlk
U2VsZk9mZnNldDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IG1fc3R1
YjsKLSAgICBTdHJ1Y3R1cmVJRCBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgeyAwIH07Cisg
ICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQ7
CiBwcml2YXRlOgogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIC8v
IFJlcHJlc2VudHMgdGhvc2Ugc3RydWN0dXJlcyB0aGF0IGFscmVhZHkgaGF2ZSBidWZmZXJlZCBB
Y2Nlc3NDYXNlcyBpbiB0aGUgUG9seW1vcnBoaWNBY2Nlc3MuCkBAIC00MjIsMTAgKzQxOSwxMSBA
QCBwdWJsaWM6CiAgICAgdWludDhfdCBjb3VudGRvd24geyAxIH07CiAgICAgdWludDhfdCByZXBh
dGNoQ291bnQgeyAwIH07CiAgICAgdWludDhfdCBudW1iZXJPZkNvb2xEb3ducyB7IDAgfTsKLQot
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleDsKLQogICAgIHVpbnQ4X3QgYnVmZmVyaW5n
Q291bnRkb3duOworcHJpdmF0ZToKKyAgICBMb2NrIG1fYnVmZmVyZWRTdHJ1Y3R1cmVzTG9jazsK
K3B1YmxpYzoKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXg7CiAgICAgYm9vbCByZXNl
dEJ5R0MgOiAxOwogICAgIGJvb2wgdG9va1Nsb3dQYXRoIDogMTsKICAgICBib29sIGV2ZXJDb25z
aWRlcmVkIDogMTsKQEAgLTQzNSw4ICs0MzMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9wZXJ0
eUlzU3RyaW5nIDogMTsKICAgICBib29sIHByb3BlcnR5SXNJbnQzMiA6IDE7CiAgICAgYm9vbCBw
cm9wZXJ0eUlzU3ltYm9sIDogMTsKLXByaXZhdGU6Ci0gICAgTG9jayBtX2J1ZmZlcmVkU3RydWN0
dXJlc0xvY2s7CiB9OwogCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0Nv
ZGVPcmlnaW4oU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IGViOGE5ZWY1YTg1MzZlYjBlNTZlZWY4MzFkMGZhYjNiMzYxMjdhNmIuLjMy
OTlmNWMzN2NjYzAzMGFmZTFkY2RlOWQwMmVkOTIzM2Y0MmExZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTIyMDEsNyArMjIwMSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
ICAgICAgICAgLy8gQW5kIHdlIGNoZWNrIHRoZSBpbmRleGluZyBtb2RlIG9mIHRoZSBzdHJ1Y3R1
cmUuIElmIHRoZSBpbmRleGluZyBtb2RlIGlzIENvVywgdGhlIGJ1dHRlcmZseSBpcwogICAgICAg
ICAgICAgICAgIC8vIGRlZmluaXRlbHkgSlNJbW11dGFibGVCdXR0ZXJmbHkuCiAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSURFYXJseSA9IGFycmF5LT5zdHJ1Y3R1cmVJRCgp
OwotICAgICAgICAgICAgICAgIGlmIChpc051a2VkKHN0cnVjdHVyZUlERWFybHkpKQorICAgICAg
ICAgICAgICAgIGlmIChzdHJ1Y3R1cmVJREVhcmx5LmlzTnVrZWQoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9k
ZSgpLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5KSB7CkBA
IC0yMjE1LDcgKzIyMTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlSURFYXJseSAhPSBzdHJ1Y3R1cmVJRExhdGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX3ZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRExhdGUpOwor
ICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlETGF0
ZS5kZWNvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUo
KS50eXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CkBAIC0yMjczLDcgKzIyNzMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZUlERWFybHkgIT0gc3RydWN0dXJlSURMYXRlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBtX3ZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRExhdGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRExh
dGUuZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0FueUFycmF5U3Rv
cmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZTQ5YzUyNGVjM2MwYzIzNzdhZWU4MGE2MWMwMjIyMzlh
N2Q0ZGFiZC4uMjhjZjcyNTYyNGRkMjdjOWI0Y2M5NTY3MGNjMTk2MzcwNWFiN2VjYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU1
MDQsNyArNTUwNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCi0g
ICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KGNhY2hlZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRTdHJ1
Y3R1cmUgPSBjYWNoZWRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgIGlmIChtZXRh
ZGF0YS5tX3RvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwogICAgICAgICAgICAgICAgIHx8ICFjYWNo
ZWRTdHJ1Y3R1cmUKICAgICAgICAgICAgICAgICB8fCBjYWNoZWRTdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZS50b1RoaXMgIT0gSlNPYmplY3Q6OmluZm8oKS0+bWV0aG9kVGFibGUu
dG9UaGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDhjNmFkZWM1
ZTM1OTQ2ZGUyNjBjM2NkYjJjYjYwMWQ0OWU5Y2YyNDUuLjE0NGNjMTkyODczZDA3NmUxZWZmYmY4
NGRkZTZlMTYxYTg1YzE3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBjaGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICBpZiAobm9k
ZS0+aGFzVHJhbnNpdGlvbigpKSB7CiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1
bXBJbkNvbnRleHQobm9kZS0+dHJhbnNpdGlvbigpLCBjb250ZXh0KSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgb3V0LnByaW50KCIsIElEOiIsIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4
dC0+aWQoKSk7CisgICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBub2RlLT50cmFuc2l0aW9uKCkt
Pm5leHQtPmlkKCkuYml0cygpKTsKICNlbHNlCiAgICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBS
YXdQb2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC5nZXQoKSkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggODk0N2NiZTlhM2M1
MjE3NmEyZDQ1MzQ3ODgyOTYyZTk1YzFlMzhmOS4uZGVkYTVkZWJhYTliMTc4NDlhMjJmMjA3N2E5
NDE1NjA2N2NmMWNmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaApAQCAtMjY4LDcgKzI2OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gd2Vha1N0cnVjdHVyZS5nZXQoKTsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihz
dHJ1Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBs
ZWZ0LCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpLmJpdHMoKSkpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogI2Vsc2UKICAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAKaW5kZXggYTQ5M2JlMzRhZjUxMzA4ZDJiZGYxOTM0MGQ5ODI5Y2VjMzQ2MzI4NS4uZjBlZjlh
ODk3MTI3NDQ4NWY0NDNjNTQ2YTc0NjllYjc4YjIxOGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCkBAIC01NjIsNyArNTYyLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgUGxh
bjo6ZmluYWxpemUoKQogICAgICAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8SlNDZWxsPiYgcmVm
ZXJlbmNlIDogbV9jb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fd2Vha1JlZmVy
ZW5jZXMpCiAgICAgICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKHJlZmVyZW5jZS5n
ZXQoKSk7CiAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIDogbV9jb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fd2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMp
Ci0gICAgICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKG1fdm0tPmdldFN0cnVjdHVy
ZShzdHJ1Y3R1cmVJRCkpOworICAgICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChz
dHJ1Y3R1cmVJRC5kZWNvZGUoKSk7CiAgICAgICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxVbmtu
b3duPiYgY29uc3RhbnQgOiBtX2NvZGVCbG9jay0+Y29uc3RhbnRzKCkpCiAgICAgICAgICAgICAg
ICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKGNvbnN0YW50LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzNDlmODdkMTM3
NDA5MjUxYTRmYjExMjNkYmRlNTBkZmUxMjVjMjJhLi5iOWY4MTg0NjBlNTRlYzkyMmYzOTRiNmNm
ZWQyMjdjNWI0YTZjMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtODUzMyw4ICs4NTMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEdsb2JhbE9iamVjdChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIG9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICBtX2pp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBvYmplY3QuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc2Ny
YXRjaC5ncHIoKSk7CisgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgb2JqZWN0Lmdw
cigpLCByZXN1bHQuZ3ByKCkpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVzdWx0
LmdwcigpKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CkBAIC0xMTA0
Miw3ICsxMTA0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0pTQ2FzdChO
b2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgb3RoZXJHUFIgPSBvdGhlci5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHNwZWNpZmllZEdQUiA9IHNwZWNpZmllZC5ncHIoKTsKIAotICAgICAgICBtX2pp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBiYXNlR1BSLCBvdGhlckdQUiwgc3BlY2lmaWVkR1BS
KTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgb3RoZXJH
UFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvdGhlckdQ
UiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIG90aGVyR1BSKTsKICAgICAgICAgbV9q
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJbmZvKCkpLCBz
cGVjaWZpZWRHUFIpOwogCkBAIC0xMTI1Myw3ICsxMTI1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKE5vZGUqIG5vZGUpCiAKICAgICBzcGVjdWxhdGVG
dW5jdGlvbihub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCkpOwogCi0gICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUodm0oKSwgZnVuY3Rpb24uZ3ByKCksIHJlc3VsdC5ncHIoKSwgZXhlY3V0
YWJsZS5ncHIoKSk7CisgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgZnVuY3Rpb24u
Z3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCByZXN1bHQu
Z3ByKCkpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTQm91bmRGdW5jdGlv
bj4sICJXZSBkb24ndCBoYW5kbGUgc3ViY2xhc3NlcyB3aGVuIGNvbXBhcmluZyBjbGFzc0luZm8g
YmVsb3ciKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBl
cnM6OkVxdWFsLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHIoSlNCb3VuZEZ1bmN0aW9uOjpp
bmZvKCkpKSk7CkBAIC0xNDI2OCwxMyArMTQyNjcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gQ2VsbE9yT3RoZXJVc2UpIHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhp
cyk7CiAKICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKIAogICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BS
UmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNo
MkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmVDYXNlczsKQEAg
LTE0MzI2LDcgKzE0MzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3Bl
cnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG9ubHlTdHJ1Y3R1cmUp
CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG9ubHlTdHJ1Y3R1cmUp
LCBzY3JhdGNoMUdQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDJHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJl
KHZtKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaDFHUFIpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cnVjdHVy
ZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJv
LCBzY3JhdGNoMUdQUikpOwogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hJZlN0cnVjdHVyZShzY3JhdGNoMUdQUikpOwpAQCAtMTQzMzgsNyArMTQzMzUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUp
CiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBzbG93
Q2FzZXMubGluaygmbV9qaXQpOwotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzY3Jh
dGNoMUdQUiwgc2NyYXRjaDJHUFIpOworICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoMUdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlF
bnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0xNDYwNSw3ICsxNDYwMiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9w
ZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+
Y2hpbGQxKCksIG9iamVjdEdQUik7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwotICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwg
b2JqZWN0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgb2JqZWN0R1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAKICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKQEAgLTE0ODIyLDggKzE0ODE5LDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90RnVuY3Rpb24oY2FsbGVlR1BSKSk7CiAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJhcmVEYXRhR1BSKTsKICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVE
YXRhR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRh
ZykpKTsKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BS
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVj
dHVyZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHN0
cnVjdHVyZUdQUikpOworICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJl
RGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGUoKSArIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0
T2ZTdHJ1Y3R1cmVJRCgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCBzdHJ1Y3R1cmVHUFIp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6
WmVybywgc3RydWN0dXJlR1BSKSk7CisgICAgbV9qaXQuZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1
cmVJRChzdHJ1Y3R1cmVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyKG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBKU0ludGVybmFsUHJvbWlzZTo6aW5m
bygpIDogSlNQcm9taXNlOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CkBAIC0xNDg3MCw4ICsx
NDg2OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxk
T2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZUdQUikpOwogICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGVPclJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUiwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKSk7Ci0gICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSAtIEpT
RnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgc3RydWN0dXJlR1BSKTsKLSAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIp
KTsKKyAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
KCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJl
SUQoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgc3RydWN0dXJlR1BSKTsKKyAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIHN0cnVj
dHVyZUdQUikpOworICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0
dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0Ns
YXNzOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7
CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CkBAIC0xNTMzMiwxNSArMTUzMzEsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVdlYWtNYXBTZXQoTm9kZSogbm9kZSkKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZihOb2RlKiBub2RlKQogewogICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsK
IAogICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICBHUFJSZWcgdGVtcDJHUFIg
PSB0ZW1wMi5ncHIoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyh0ZW1wR1BSKTsKICNlbHNlCi0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyh0ZW1w
MkdQUiwgdGVtcEdQUik7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3ModGVtcDIuZ3ByKCksIHRlbXBHUFIpOwogI2VuZGlmCiAKICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewpAQCAtMTUzNjUsNyArMTUzNjMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUodm0oKSwgb2JqZWN0R1BSLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CisgICAgICAgIG1f
aml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIG9iamVjdEdQUiwgdGVtcEdQUik7CiAKICAgICAg
ICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewpAQCAtMTU0MDQsNyArMTU0
MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSog
bm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIp
OwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgICAgIG1f
aml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCksIG9iamVjdEdQUiwgcmVzdWx0UmVncywgdGVtcDJH
UFIsIHNsb3dDYXNlcyk7CisgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCksIG9i
amVjdEdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBl
T2ZPYmplY3QsCiAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb2JqZWN0R1BSKSk7CiAKQEAgLTE1NDIxLDcgKzE1NDE5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsKIAotICAgICAgICBtX2pp
dC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgdGVtcDJHUFIs
IHNsb3dDYXNlcyk7CisgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCksIHZhbHVl
R1BSLCByZXN1bHRSZWdzLCBzbG93Q2FzZXMpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcm90b3R5cGVPZiwK
ICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggM2IxNTZkZjBmMjMyYzlhYWRjMDVhMDhlODAxODlmZjk3Yzg5YWE4
ZS4uYTkxMmViNTk4Yjk4MjJhMzU5NmExYzE4Y2UxZTYyM2U4YWFhNjgxMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yNDQs
NyArMjQ0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9s
ZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW4KICAgICB9IGVsc2UgewogICAgICAg
ICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGw7CiAgICAgICAg
IGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQpAQCAtMjU5LDcgKzI1OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbE9y
VW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQ
UiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFs
T2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEds
b2JhbE9iamVjdEdQUik7Ci0gICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFy
Z0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUodm0oKSwgYXJnR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmVQ
dHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFs
T2JqZWN0R1BSLCByZXN1bHRHUFIpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkp
OwpAQCAtMjk5LDcgKzI5OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
UGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5kLCBOCiAgICAgfSBlbHNl
IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwotICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxs
OwogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKQEAgLTMxMiw3ICsz
MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNo
TnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogICAgICAgICBHUFJSZWcgbG9jYWxHbG9i
YWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJl
bW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwotICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZSh2bSgpLCBhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xv
YmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFu
Y2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSLCB0YWtlbik7CiAKQEAgLTE5MDUsOCArMTkwMyw2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xlYW5PYmplY3RPck90aGVyKEVkZ2Ugbm9kZVVzZSwgYm9v
bCBpbnZlcnQpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJU
ZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BS
UmVnOwotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
SW52YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRWYWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGls
bFZhbGlkKCk7CkBAIC0xOTE1LDExICsxOTExLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvQm9vbGVhbk9iamVjdE9yT3RoZXIoRWRnZSBub2RlVXNlLCBib29sIGludmVydCkKICAg
ICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBz
dHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCiAgICAgICAgIC8vIERvIHRo
aXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBh
IHJlZ2lzdGVyIGFsbG9jYXRpb24uCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJl
KHRoaXMpOwotICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFNjcmF0Y2godGhpcyk7CiAgICAgICAg
IHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKLSAgICAgICAgc2NyYXRjaC5hZG9wdChy
ZWFsU2NyYXRjaCk7CiAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAg
ICAgICAgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2
YWx1ZUdQUikpOwpAQCAtMTkzNiw3ICsxOTI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvQm9vbGVhbk9iamVjdE9yT3RoZXIoRWRnZSBub2RlVXNlLCBib29sIGludmVydCkKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAotICAgICAgICBtX2ppdC5l
bWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BS
KTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBub2RlVXNlLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMjA5MSw3ICsyMDg0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goRWRnZSBub2RlVXNl
LCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmEKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAotICAgICAgICBtX2pp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBub2RlVXNlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0yMTg1LDcgKzIxNzgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJyYW5jaChFZGdlIG5vZGVVc2UsIEJh
c2ljQmxvY2sqIHRha2VuLCBCYXNpY0JsbwogICAgICAgICBib29sIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9ICFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3Rp
bGxWYWxpZCgpOwogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSB7CiAgICAgICAgICAgICBicmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCB0YWtlbik7Ci0gICAgICAg
ICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgdGVtcDFHUFIsIHRl
bXAyR1BSKTsKKyAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVl
R1BSLCB0ZW1wMUdQUik7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgdGVtcDJHUFIpOwogICAgICAgICAgICAg
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcDFHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCB0ZW1wMkdQUiwg
dGFrZW4pOwpAQCAtNDQ0Nyw3ICs0NDQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFN0cnVjdHVyZSwgb2xkU3Ry
dWN0dXJlLT5pbmRleGluZ01vZGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKTsK
ICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gbmV3U3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygp
LmlubGluZVR5cGVGbGFncygpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKG5ld1N0cnVjdHVyZS0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgICAgICBtX2pp
dC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobmV3U3RydWN0dXJlLT5pZCgp
LmJpdHMoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNDY2Niw3ICs0NjU5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0
LmJyYW5jaElmQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKIApAQCAtNDY5MCw3ICs0NjgyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
R1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAg
ICAgICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2Jq
ZWN0LmdwcigpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRM
b2FkU3RydWN0dXJlKHZtKCksIHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCksIHNjcmF0Y2guZ3By
KCkpOworICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWUuZ3By
KCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSks
IHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihK
SVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIsIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMzE1ZjkwZDRj
ZWEyMzk5NmRkMDcyOGI2YjZiZGNiNDg0YmJiMWU2MC4uYWIxZjViODY3NTlkMDU1NjlkMzhjMDQ4
ZGNjODNhYTdmZDVmYjBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTg0LDkgKzg0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfcHJvdG90
eXBlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mUHJvdG90eXBl
KCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfZXhlY3V0YWJsZSwgRnVu
Y3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpIFwKLSAgICBtYWNybyhGdW5jdGlv
blJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZV9zdHJ1Y3R1cmUsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
KCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJl
KCkpIFwKLSAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUs
IEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQm91bmRGdW5jdGlvblN0cnVjdHVyZSgpKSBcCi0g
ICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hw
b2ludCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5n
V2F0Y2hwb2ludCgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblByb2ZpbGVfc3RydWN0dXJlSUQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlSUQoKSkgXAogICAgIG1hY3JvKEdl
dHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAg
IG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIo
KSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA2MDllNmRkZjUxODE4YzVjMGE1MWRmNjk1ODA3MmRlNGVj
ODhkYzM4Li5lMDUwNmI0YWVlZjY2MDJmOTUzZGY3YjliZWRjMzRhNDdhOTcxYzQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03ODc3LDEw
ICs3ODc3LDExIEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhoYXNSYXJlRGF0YSwgaGFzU3RydWN0dXJlKTsKICAgICAgICAgTFZhbHVlIHJhcmVE
YXRhID0gbV9vdXQuc3ViKHJhcmVEYXRhVGFncywgbV9vdXQuY29uc3RJbnRQdHIoSlNGdW5jdGlv
bjo6cmFyZURhdGFUYWcpKTsKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQ
dHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGVfc3RydWN0dXJlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lmlz
WmVybzY0KHN0cnVjdHVyZSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoaGFzU3RydWN0dXJl
KSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihyYXJlRGF0YSwg
bV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmls
ZV9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm8zMihzdHJ1
Y3R1cmVJRCksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoaGFzU3RydWN0dXJlKSk7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzU3RydWN0dXJlLCBjaGVja0dsb2JhbE9iamVjdENhc2Up
OworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gZGVjb2RlTm9uTnVsbFN0cnVjdHVyZShzdHJ1
Y3R1cmVJRCk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRy
KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQ
dHIobV9ub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJbnRlcm5hbFByb21pc2U6OmluZm8o
KSA6IEpTUHJvbWlzZTo6aW5mbygpKSksIHVzdWFsbHkoY2hlY2tHbG9iYWxPYmplY3RDYXNlKSwg
cmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY2hlY2tHbG9iYWxP
YmplY3RDYXNlLCBmYXN0QWxsb2NhdGlvbkNhc2UpOwpAQCAtNzkzMiwxMCArNzkzMywxMSBAQCBJ
R05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFy
ZURhdGEsIGhhc1N0cnVjdHVyZSk7CiAgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0LnN1
YihyYXJlRGF0YVRhZ3MsIG1fb3V0LmNvbnN0SW50UHRyKEpTRnVuY3Rpb246OnJhcmVEYXRhVGFn
KSk7Ci0gICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBt
X2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
X3N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChzdHJ1Y3R1
cmUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1N0cnVjdHVyZSkpOworICAgICAgICBM
VmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rp
b25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVfc3RydWN0dXJlSUQp
OworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIoc3RydWN0dXJlSUQpLCByYXJl
bHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1N0cnVjdHVyZSkpOwogCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGhhc1N0cnVjdHVyZSwgY2hlY2tHbG9iYWxPYmplY3RDYXNlKTsKKyAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IGRlY29kZU5vbk51bGxTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpOwogICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1f
aGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRyKEpTQ2xhc3M6Omlu
Zm8oKSkpLCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkp
OwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSwgZmFzdEFs
bG9jYXRpb25DYXNlKTsKQEAgLTEzNzEwLDcgKzEzNzEyLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5J
TkdTX0VORAogICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQ7CiAgICAgICAgIGF1dG8gc3RydWN0
dXJlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlLm5vZGUoKSkubV9zdHJ1Y3R1cmUub25seVN0
cnVjdHVyZSgpOwogICAgICAgICBpZiAoc3RydWN0dXJlKQotICAgICAgICAgICAgc3RydWN0dXJl
SUQgPSBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKSk7CisgICAgICAgICAgICBzdHJ1
Y3R1cmVJRCA9IG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5pZCgpLmJpdHMoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGJhc2UsIG1f
aGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKIApAQCAtMTY3ODksNyArMTY3OTEsNyBAQCBJR05P
UkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgCiAgICAgdm9pZCBzdG9yZVN0cnVjdHVyZShMVmFs
dWUgb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIG1fb3V0LnN0
b3JlMzIobV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkpLCBvYmplY3QsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdElu
dDMyKHN0cnVjdHVyZS0+aWQoKS5iaXRzKCkpLCBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKTsKICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50MzIoc3RydWN0dXJlLT5vYmplY3RJbml0aWFsaXphdGlvbkJsb2IoKSksCiAgICAgICAgICAg
ICBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKQEAgLTE5NTcwLDcgKzE5NTcy
LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHByb3Zl
bjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9h
ZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKLSAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkuYml0cygpKSk7CiAgICAg
fQogICAgIAogICAgIExWYWx1ZSBpc1N0cmluZyhMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUg
dHlwZSA9IFNwZWNGdWxsVG9wKQpAQCAtMTk1NzksNyArMTk1ODEsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4g
bV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmlu
Z1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0
cmluZ1N0cnVjdHVyZS0+aWQoKS5iaXRzKCkpKTsKICAgICB9CiAKICAgICBMVmFsdWUgaXNSb3Bl
U3RyaW5nKExWYWx1ZSBzdHJpbmcsIEVkZ2UgZWRnZSA9IEVkZ2UoKSkKQEAgLTE5NjI2LDcgKzE5
NjI4LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHBy
b3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQu
bG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKLSAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50MzIodm0oKS5zeW1ib2xTdHJ1Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50MzIodm0oKS5zeW1ib2xTdHJ1Y3R1cmUtPmlkKCkuYml0cygpKSk7CiAg
ICAgfQogICAgIAogICAgIExWYWx1ZSBpc1N5bWJvbChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQpAQCAtMTk2MzUsNyArMTk2MzcsNyBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1
cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5K
U0NlbGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5
bWJvbFN0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgp
LnN5bWJvbFN0cnVjdHVyZS0+aWQoKS5iaXRzKCkpKTsKICAgICB9CiAKICAgICBMVmFsdWUgaXNO
b3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKExWYWx1ZSB2YWx1ZSwgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQpAQCAtMTk2NjQsNyArMTk2NjYsNyBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1
cm4gbV9vdXQubm90RXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgp
LmJpZ0ludFN0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2
bSgpLmJpZ0ludFN0cnVjdHVyZS0+aWQoKS5iaXRzKCkpKTsKICAgICB9CiAKICAgICBMVmFsdWUg
aXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxU
b3ApCkBAIC0xOTY3Myw3ICsxOTY3NSw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKICAg
ICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCks
Ci0gICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuYmlnSW50U3RydWN0dXJlLT5pZCgp
KSk7CisgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuYmlnSW50U3RydWN0dXJlLT5p
ZCgpLmJpdHMoKSkpOwogICAgIH0KIAogICAgIExWYWx1ZSBpc0FycmF5VHlwZUZvckFycmF5aWZ5
KExWYWx1ZSBjZWxsLCBBcnJheU1vZGUgYXJyYXlNb2RlKQpAQCAtMjA0MDAsNyArMjA0MDIsNyBA
QCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAog
ICAgICAgICAgICAgICAgIG1fb3V0LmJpdE9yKAogICAgICAgICAgICAgICAgICAgICBtX291dC5s
b2FkMzIob2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50MzIobnVrZWRTdHJ1Y3R1cmVJREJpdCgpKSksCisgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RydWN0dXJlSUQ6Om51a2VkU3RydWN0dXJl
SURCaXQpKSwKICAgICAgICAgICAgICAgICBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKICAgICAgICAgICAgIG1fb3V0LmZlbmNlKCZtX2hlYXBzLnJvb3QsIG51bGxwdHIpOwog
ICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoYnV0dGVyZmx5LCBvYmplY3QsIG1faGVhcHMuSlNP
YmplY3RfYnV0dGVyZmx5KTsKQEAgLTIwNDI4LDcgKzIwNDMwLDcgQEAgSUdOT1JFX0NMQU5HX1dB
Uk5JTkdTX0VORAogICAgICAgICBtX291dC5zdG9yZTMyKAogICAgICAgICAgICAgbV9vdXQuYml0
T3IoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKG9iamVjdCwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIobnVrZWRTdHJ1
Y3R1cmVJREJpdCgpKSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJ1Y3R1
cmVJRDo6bnVrZWRTdHJ1Y3R1cmVJREJpdCkpLAogICAgICAgICAgICAgb2JqZWN0LCBtX2hlYXBz
LkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIG1fb3V0LmZlbmNlKCZtX2hlYXBzLnJvb3Qs
IG51bGxwdHIpOwogICAgICAgICBtX291dC5zdG9yZVB0cihidXR0ZXJmbHksIG9iamVjdCwgbV9o
ZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpOwpAQCAtMjA5NzMsMTUgKzIwOTc1LDE2IEBAIElHTk9S
RV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgbV9ncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5j
ZXMoKS5hZGRMYXppbHkodGFyZ2V0KTsKICAgICB9CiAKKyAgICBMVmFsdWUgZGVjb2RlTm9uTnVs
bFN0cnVjdHVyZShMVmFsdWUgc3RydWN0dXJlSUQpCisgICAgeworICAgICAgICBMVmFsdWUgbWFz
a2VkU3RydWN0dXJlSUQgPSBtX291dC5iaXRBbmQoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0SW50
MzIoc3RydWN0dXJlSURNYXNrKSk7CisgICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQuY29u
c3RJbnRQdHIoZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXApLCBtX291dC56ZXJvRXh0
UHRyKG1hc2tlZFN0cnVjdHVyZUlEKSk7CisgICAgfQorCiAgICAgTFZhbHVlIGxvYWRTdHJ1Y3R1
cmUoTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEID0gbV9v
dXQubG9hZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Ci0gICAgICAgIExW
YWx1ZSB0YWJsZUJhc2UgPSBtX291dC5sb2FkUHRyKG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpKSk7Ci0gICAgICAgIExWYWx1ZSB0YWJsZUluZGV4ID0g
bV9vdXQuYVNocihzdHJ1Y3R1cmVJRCwgbV9vdXQuY29uc3RJbnQzMihTdHJ1Y3R1cmVJRFRhYmxl
OjpzX251bWJlck9mRW50cm9weUJpdHMpKTsKLSAgICAgICAgTFZhbHVlIGVudHJvcHlCaXRzID0g
bV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoc3RydWN0dXJlSUQpLCBtX291dC5jb25zdEludDMy
KFN0cnVjdHVyZUlEVGFibGU6OnNfZW50cm9weUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIp
KTsKLSAgICAgICAgVHlwZWRQb2ludGVyIGFkZHJlc3MgPSBtX291dC5iYXNlSW5kZXgobV9oZWFw
cy5zdHJ1Y3R1cmVUYWJsZSwgdGFibGVCYXNlLCBtX291dC56ZXJvRXh0UHRyKHRhYmxlSW5kZXgp
KTsKLSAgICAgICAgTFZhbHVlIGVuY29kZWRTdHJ1Y3R1cmVCaXRzID0gbV9vdXQubG9hZFB0cihh
ZGRyZXNzKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmJpdFhvcihlbmNvZGVkU3RydWN0dXJlQml0
cywgZW50cm9weUJpdHMpOworICAgICAgICByZXR1cm4gZGVjb2RlTm9uTnVsbFN0cnVjdHVyZShz
dHJ1Y3R1cmVJRCk7CiAgICAgfQogCiAgICAgTFZhbHVlIHdlYWtQb2ludGVyKEpTQ2VsbCogcG9p
bnRlcikKQEAgLTIwOTk3LDcgKzIxMDAwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAog
CiAgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmVJRChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQo
KSk7CisgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKS5iaXRz
KCkpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgd2Vha1N0cnVjdHVyZShSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Fic3RyYWN0U2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fic3Ry
YWN0U2xvdFZpc2l0b3IuaAppbmRleCBiYzI5Zjc0MTkzMzk4ZDE0Y2ZmNDI1M2Y2MjY4NmRmMTgy
NDc4MzBhLi5kNmY0MTYyZmZhYjlmY2RhMmI0YTJkYzZmMzg0M2RiZjY2ZTkyMTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BYnN0cmFjdFNsb3RWaXNpdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWJzdHJhY3RTbG90VmlzaXRvci5oCkBAIC00
OCw2ICs0OCw3IEBAIGNsYXNzIFZNOwogY2xhc3MgVmVyaWZpZXJTbG90VmlzaXRvcjsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBUcmFpdHM+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7CitjbGFzcyBXcml0ZUJhcnJpZXJTdHJ1
Y3R1cmVJRDsKIAogY2xhc3MgQWJzdHJhY3RTbG90VmlzaXRvciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQWJzdHJhY3RTbG90VmlzaXRvcik7CkBAIC0xNDMsNiArMTQ0LDggQEAgcHVibGlj
OgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPiB2b2lkIGFwcGVu
ZChjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4mKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IHZvaWQgYXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFy
cmllckJhc2U8VCwgVHJhaXRzPiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFdyaXRlQmFycmll
clN0cnVjdHVyZUlEJik7CisgICAgdm9pZCBhcHBlbmRIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4gdm9pZCBhcHBl
bmQoSXRlcmF0b3IgYmVnaW4gLCBJdGVyYXRvciBlbmQpOwogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBhcHBlbmRWYWx1ZXMoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duLCBSYXdWYWx1ZVRy
YWl0czxVbmtub3duPj4qLCBzaXplX3QgY291bnQpOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBh
cHBlbmRWYWx1ZXNIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duLCBSYXdWYWx1
ZVRyYWl0czxVbmtub3duPj4qLCBzaXplX3QgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0Fic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmgKaW5kZXggYWY2
NjAzODY0YzZlYmZlMmVmZTFkYzkwOGExYmQ4NTEzYzZlYmY1OC4uNjI4NDM4MmUwMDIxMTU2OThl
NTI5NTZiMmQzMWJkZjgxNjZkMmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oCkBAIC0xNTgsNiArMTU4LDE2
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBBYnN0cmFjdFNsb3RWaXNpdG9yOjphcHBlbmRIaWRkZW4o
Y29uc3QgV3JpdGVCYXJyaWVyQmFzZTxULCBUCiAgICAgYXBwZW5kSGlkZGVuVW5iYXJyaWVyZWQo
c2xvdC5nZXQoKSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBBYnN0cmFjdFNsb3RWaXNpdG9y
OjphcHBlbmQoY29uc3QgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQmIHNsb3QpCit7CisgICAgYXBw
ZW5kVW5iYXJyaWVyZWQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihzbG90LmdldCgpKSk7Cit9
CisKK0FMV0FZU19JTkxJTkUgdm9pZCBBYnN0cmFjdFNsb3RWaXNpdG9yOjphcHBlbmRIaWRkZW4o
Y29uc3QgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQmIHNsb3QpCit7CisgICAgYXBwZW5kSGlkZGVu
VW5iYXJyaWVyZWQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihzbG90LmdldCgpKSk7Cit9CisK
IEFMV0FZU19JTkxJTkUgdm9pZCBBYnN0cmFjdFNsb3RWaXNpdG9yOjphcHBlbmRIaWRkZW5VbmJh
cnJpZXJlZChKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMGM4ZDM1NTk2MDRhZWQwYjMzOGM0ZDk3N2Ez
ZDYwOTdkOTJjZWQ2My4uMzUzZmYwZGU4ZTc0N2I4NjliOGE1MTIzMDE1NTljNmIwOWVhNmNlMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNs
dWRlICJTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvY2hhc3RpY1Nw
YWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTdG9wSWZOZWNlc3NhcnlUaW1l
ci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNs
dWRlICJTd2VlcGluZ1Njb3BlLmgiCkBAIC0zODYsOCArMzg3LDggQEAgSGVhcDo6SGVhcChWTSYg
dm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgc3RyaW5nT2JqZWN0U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmluZ09iamVjdCkKICAgICAsIHN0
cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5
cGUsIFN0cnVjdHVyZUNoYWluKQogICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJl
UmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVy
ZSkKLSAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVjdHVyZSkKKyAgICAsIHN0
cnVjdHVyZVNwYWNlKCJJc29sYXRlZFN0cnVjdHVyZVNwYWNlIiwgKnRoaXMsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIHNpemVvZihTdHJ1Y3R1cmUpLCBTdHJ1Y3R1cmU6Om51bWJlck9m
TG93ZXJUaWVyQ2VsbHMsIG1ha2VVbmlxdWU8U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oIlN0cnVjdHVyZSIpKQorICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCJJc29sYXRlZEJy
YW5kZWRTdHJ1Y3R1cmVTcGFjZSIsICp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LCBzaXplb2YoQnJhbmRlZFN0cnVjdHVyZSksIEJyYW5kZWRTdHJ1Y3R1cmU6Om51bWJlck9mTG93
ZXJUaWVyQ2VsbHMsIG1ha2VVbmlxdWU8U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
IlN0cnVjdHVyZSIpKQogICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgq
dGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6
MHhjNTIxNWFmZAogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWlu
dHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQogICAgICwgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2Up
CkBAIC0xNjAyLDggKzE2MDMsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFz
ZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICBpZiAodm0oKS50eXBlUHJvZmlsZXIoKSkKICAg
ICAgICAgICAgIHZtKCkudHlwZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUodm0o
KSk7CiAKLSAgICAgICAgbV9zdHJ1Y3R1cmVJRFRhYmxlLmZsdXNoT2xkVGFibGVzKCk7Ci0KICAg
ICAgICAgcmVhcFdlYWtIYW5kbGVzKCk7CiAgICAgICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdl
YWtHQ0hhc2hUYWJsZXMoKTsKICAgICAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAppbmRleCA0ZGU4MmViODc0OTRjYzc5MDZhMzZlYzk1ODI5NjU1ZmQx
YmNkODBiLi4zN2ZhM2YxMTNjZThiNWI1NGIyNGUyYTg3NDQxNjg3NDEwNTEyYzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiTWFya2Vk
U3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgi
Ci0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlELmgi
CiAjaW5jbHVkZSAiU3luY2hyb25vdXNuZXNzLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0F1dG9tYXRpY1RocmVhZC5oPgpAQCAtMjc1LDggKzI3NSw2IEBA
IHB1YmxpYzoKICAgICAKICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiAhIW1f
ZGVmZXJyYWxEZXB0aDsgfQogCi0gICAgU3RydWN0dXJlSURUYWJsZSYgc3RydWN0dXJlSURUYWJs
ZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlSURUYWJsZTsgfQotCiAgICAgQ29kZUJsb2NrU2V0JiBj
b2RlQmxvY2tTZXQoKSB7IHJldHVybiAqbV9jb2RlQmxvY2tzOyB9CiAKICNpZiBVU0UoRk9VTkRB
VElPTikKQEAgLTU5Niw3ICs1OTQsNiBAQCBwcml2YXRlOgogICAgIE1hcmthYmxlPENvbGxlY3Rp
b25TY29wZSwgRW51bU1hcmthYmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1fbGFzdENvbGxl
Y3Rpb25TY29wZTsKICAgICBMb2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAKLSAgICBTdHJ1Y3R1
cmVJRFRhYmxlIG1fc3RydWN0dXJlSURUYWJsZTsKICAgICBNYXJrZWRTcGFjZSBtX29iamVjdFNw
YWNlOwogICAgIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PEFycmF5QnVmZmVyPiBtX2FycmF5QnVm
ZmVyczsKICAgICBzaXplX3QgbV9leHRyYU1lbW9yeVNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
CmluZGV4IGY3MjkzNzMxMTkzMTJiYzg2NDczNTEzODYyMmMwZGE0NDExMDI1ODkuLjQxOTU0YmE4
MDlkMTNkNTg5MDhlM2EzOTc0NTEyODUwMTg4NTcwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC0z
MCw3MiArMzAsMTMgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBJc29BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yOjpJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKENTdHJpbmcgbmFtZSkKLSNpZiBFTkFCTEUo
TUFMTE9DX0hFQVBfQlJFQUtET1dOKQotICAgIDogbV9kZWJ1Z0hlYXAobmFtZS5kYXRhKCkpCi0j
ZW5kaWYKKyAgICA6IEJhc2UobmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0obmFtZSk7CiB9CiAK
IElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkK
IHsKLSNpZiAhRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgdm9pZCogYmxvY2sg
PSBtX2Jsb2Nrc1tpXTsKLSAgICAgICAgaWYgKCFtX2NvbW1pdHRlZC5xdWlja0dldChpKSkKLSAg
ICAgICAgICAgIFdURjo6ZmFzdENvbW1pdEFsaWduZWRNZW1vcnkoYmxvY2ssIE1hcmtlZEJsb2Nr
OjpibG9ja1NpemUpOwotICAgICAgICBmYXN0QWxpZ25lZEZyZWUoYmxvY2spOwotICAgIH0KLSNl
bmRpZgotfQotCi12b2lkKiBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUFs
aWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCi17Ci0gICAgLy8gU2lu
Y2UgdGhpcyBpcyBkZXNpZ25lZCBzcGVjaWFsbHkgZm9yIElzb1N1YnNwYWNlLCB3ZSBrbm93IHRo
YXQgd2Ugd2lsbCBvbmx5IGJlIGFza2VkIHRvCi0gICAgLy8gYWxsb2NhdGUgTWFya2VkQmxvY2tz
LgotICAgIFJFTEVBU0VfQVNTRVJUKGFsaWdubWVudCA9PSBNYXJrZWRCbG9jazo6YmxvY2tTaXpl
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IE1hcmtlZEJsb2NrOjpibG9ja1NpemUpOwot
Ci0jaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKLSAgICByZXR1cm4gbV9kZWJ1Z0hl
YXAubWVtYWxpZ24oTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6OmJsb2NrU2l6
ZSwgdHJ1ZSk7Ci0jZWxzZQotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICAKLSAg
ICBtX2ZpcnN0VW5jb21taXR0ZWQgPSBtX2NvbW1pdHRlZC5maW5kQml0KG1fZmlyc3RVbmNvbW1p
dHRlZCwgZmFsc2UpOwotICAgIGlmIChtX2ZpcnN0VW5jb21taXR0ZWQgPCBtX2Jsb2Nrcy5zaXpl
KCkpIHsKLSAgICAgICAgbV9jb21taXR0ZWQucXVpY2tTZXQobV9maXJzdFVuY29tbWl0dGVkKTsK
LSAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9ibG9ja3NbbV9maXJzdFVuY29tbWl0dGVkXTsKLSAg
ICAgICAgV1RGOjpmYXN0Q29tbWl0QWxpZ25lZE1lbW9yeShyZXN1bHQsIE1hcmtlZEJsb2NrOjpi
bG9ja1NpemUpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICB2b2lk
KiByZXN1bHQgPSB0cnlGYXN0QWxpZ25lZE1hbGxvYyhNYXJrZWRCbG9jazo6YmxvY2tTaXplLCBN
YXJrZWRCbG9jazo6YmxvY2tTaXplKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7Ci0gICAgbV9i
bG9ja3MuYXBwZW5kKHJlc3VsdCk7Ci0gICAgbV9ibG9ja0luZGljZXMuYWRkKHJlc3VsdCwgaW5k
ZXgpOwotICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG1fY29tbWl0dGVkLnNpemUoKSkK
LSAgICAgICAgbV9jb21taXR0ZWQucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgIG1f
Y29tbWl0dGVkLnF1aWNrU2V0KGluZGV4KTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2VuZGlmCi19
Ci0KLXZvaWQgSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1vcnkodm9p
ZCogYmFzZVB0cikKLXsKLSNpZiBFTkFCTEUoTUFMTE9DX0hFQVBfQlJFQUtET1dOKQotICAgIG1f
ZGVidWdIZWFwLmZyZWUoYmFzZVB0cik7Ci0jZWxzZQotICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKLSAgICAKLSAgICBhdXRvIGl0ZXIgPSBtX2Jsb2NrSW5kaWNlcy5maW5kKGJhc2VQdHIp
OwotICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9ibG9ja0luZGljZXMuZW5kKCkpOwotICAg
IHVuc2lnbmVkIGluZGV4ID0gaXRlci0+dmFsdWU7Ci0gICAgbV9jb21taXR0ZWQucXVpY2tDbGVh
cihpbmRleCk7Ci0gICAgbV9maXJzdFVuY29tbWl0dGVkID0gc3RkOjptaW4oaW5kZXgsIG1fZmly
c3RVbmNvbW1pdHRlZCk7Ci0gICAgV1RGOjpmYXN0RGVjb21taXRBbGlnbmVkTWVtb3J5KGJhc2VQ
dHIsIE1hcmtlZEJsb2NrOjpibG9ja1NpemUpOwotI2VuZGlmCisgICAgcmVsZWFzZU1lbW9yeUZy
b21TdWJjbGFzc0Rlc3RydWN0b3IoKTsKIH0KIAogdm9pZCBJc29BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC0xMjcsNSArNjgsMjUgQEAgdm9p
ZCogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5UmVhbGxvY2F0ZU1lbW9yeSh2b2lkKiwg
c2l6ZV90KQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQqIElz
b0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeU1hbGxvY0Jsb2NrKCkKK3sKKyAgICByZXR1cm4g
dHJ5RmFzdEFsaWduZWRNYWxsb2MoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6
OmJsb2NrU2l6ZSk7Cit9CisKK3ZvaWQgSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUJs
b2NrKHZvaWQqIGJsb2NrKQoreworICAgIGZhc3RBbGlnbmVkRnJlZShibG9jayk7Cit9CisKK3Zv
aWQgSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6Y29tbWl0QmxvY2sodm9pZCogYmxvY2spCit7
CisgICAgV1RGOjpmYXN0Q29tbWl0QWxpZ25lZE1lbW9yeShibG9jaywgTWFya2VkQmxvY2s6OmJs
b2NrU2l6ZSk7Cit9CisKK3ZvaWQgSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZGVjb21taXRC
bG9jayh2b2lkKiBibG9jaykKK3sKKyAgICBXVEY6OmZhc3REZWNvbW1pdEFsaWduZWRNZW1vcnko
YmxvY2ssIE1hcmtlZEJsb2NrOjpibG9ja1NpemUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oCmluZGV4IDJiYjY1MTcwNDY3ZGQ2NWJhZjIzM2M2NTkyNjI2MWJjNzU1MDMz
Y2MuLmRmN2Q3N2RhMzhmYTgyYzM0OGYyMDRjYTNkMjBmMjkwYjAzZjJhYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRGVidWdIZWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM0LDMxICszNCwyNCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotY2xhc3MgSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvciBmaW5hbCA6IHB1YmxpYyBB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsKK2NsYXNzIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ig
ZmluYWwgOiBwdWJsaWMgSXNvTWVtb3J5QWxsb2NhdG9yQmFzZSB7CiBwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IElzb01lbW9yeUFsbG9jYXRvckJhc2U7CisKICAgICBJc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKENTdHJpbmcpOwogICAgIH5Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgZmlu
YWw7CiAKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZUFsaWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90IHNpemUpIGZpbmFsOwotICAgIHZvaWQgZnJlZUFsaWduZWRNZW1vcnkodm9pZCop
IGZpbmFsOwotCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7CiAKICAg
ICB2b2lkKiB0cnlBbGxvY2F0ZU1lbW9yeShzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZnJlZU1l
bW9yeSh2b2lkKikgZmluYWw7CiAgICAgdm9pZCogdHJ5UmVhbGxvY2F0ZU1lbW9yeSh2b2lkKiwg
c2l6ZV90KSBmaW5hbDsKIAotcHJpdmF0ZToKLSNpZiBFTkFCTEUoTUFMTE9DX0hFQVBfQlJFQUtE
T1dOKQotICAgIC8vIElmIGJyZWFrZG93biBpcyBlbmFibGVkLCB3ZSBkbyBub3QgZW5zdXJlIElz
by1mZWF0dXJlLiBUaGlzIGlzIHRvdGFsbHkgT0sgc2luY2UgYnJlYWtkb3duIGlzIG1lbW9yeSBi
bG9hdCBkZWJ1Z2dpbmcgZmVhdHVyZS4KLSAgICBXVEY6OkRlYnVnSGVhcCBtX2RlYnVnSGVhcDsK
LSNlbHNlCi0gICAgVmVjdG9yPHZvaWQqPiBtX2Jsb2NrczsKLSAgICBIYXNoTWFwPHZvaWQqLCB1
bnNpZ25lZD4gbV9ibG9ja0luZGljZXM7Ci0gICAgQml0VmVjdG9yIG1fY29tbWl0dGVkOwotICAg
IHVuc2lnbmVkIG1fZmlyc3RVbmNvbW1pdHRlZCB7IDAgfTsKLSAgICBMb2NrIG1fbG9jazsKLSNl
bmRpZgorcHJvdGVjdGVkOgorICAgIHZvaWQqIHRyeU1hbGxvY0Jsb2NrKCkgZmluYWw7CisgICAg
dm9pZCBmcmVlQmxvY2sodm9pZCogYmxvY2spIGZpbmFsOworICAgIHZvaWQgY29tbWl0QmxvY2so
dm9pZCogYmxvY2spIGZpbmFsOworICAgIHZvaWQgZGVjb21taXRCbG9jayh2b2lkKiBibG9jaykg
ZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIz
YmVlNWNiMjllMDJkODkxNzNlNDQ0ODI5MjEzMjg4ZGZlMWRhNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuY3BwCkBA
IC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklzb01lbW9yeUFsbG9j
YXRvckJhc2UuaCIKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitJc29NZW1vcnlBbGxvY2F0b3JCYXNlOjpJc29NZW1vcnlBbGxvY2F0b3JCYXNlKENTdHJp
bmcgbmFtZSkKKyNpZiBFTkFCTEUoTUFMTE9DX0hFQVBfQlJFQUtET1dOKQorICAgIDogbV9kZWJ1
Z0hlYXAobmFtZS5kYXRhKCkpCisjZW5kaWYKK3sKKyAgICBVTlVTRURfUEFSQU0obmFtZSk7Cit9
CisKK0lzb01lbW9yeUFsbG9jYXRvckJhc2U6On5Jc29NZW1vcnlBbGxvY2F0b3JCYXNlKCkKK3sK
K30KKworLy8gV2UgbmVlZCB0byBjYWxsIHRoaXMgZnJvbSB0aGUgZGVyaXZlZCBjbGFzcydzIGRl
c3RydWN0b3IgYmVjYXVzZSBpdCdzIHVuZGVmaW5lZCBiZWhhdmlvciB0byBjYWxsIHB1cmUgdmly
dHVhbCBtZXRob2RzIGZyb20gd2l0aGluIGEgZGVzdHJ1Y3Rvci4KK3ZvaWQgSXNvTWVtb3J5QWxs
b2NhdG9yQmFzZTo6cmVsZWFzZU1lbW9yeUZyb21TdWJjbGFzc0Rlc3RydWN0b3IoKQoreworI2lm
ICFFTkFCTEUoTUFMTE9DX0hFQVBfQlJFQUtET1dOKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkgeworICAgICAgICB2b2lkKiBibG9jayA9IG1fYmxv
Y2tzW2ldOworICAgICAgICBpZiAoIW1fY29tbWl0dGVkLnF1aWNrR2V0KGkpKQorICAgICAgICAg
ICAgY29tbWl0QmxvY2soYmxvY2spOworICAgICAgICBmcmVlQmxvY2soYmxvY2spOworICAgIH0K
KyNlbmRpZgorfQorCit2b2lkKiBJc29NZW1vcnlBbGxvY2F0b3JCYXNlOjp0cnlBbGxvY2F0ZUFs
aWduZWRNZW1vcnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCit7CisgICAgLy8gU2lu
Y2UgdGhpcyBpcyBkZXNpZ25lZCBzcGVjaWFsbHkgZm9yIElzb1N1YnNwYWNlLCB3ZSBrbm93IHRo
YXQgd2Ugd2lsbCBvbmx5IGJlIGFza2VkIHRvCisgICAgLy8gYWxsb2NhdGUgTWFya2VkQmxvY2tz
LgorICAgIFJFTEVBU0VfQVNTRVJUKGFsaWdubWVudCA9PSBNYXJrZWRCbG9jazo6YmxvY2tTaXpl
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IE1hcmtlZEJsb2NrOjpibG9ja1NpemUpOwor
CisjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKKyAgICByZXR1cm4gbV9kZWJ1Z0hl
YXAubWVtYWxpZ24oTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6OmJsb2NrU2l6
ZSwgdHJ1ZSk7CisjZWxzZQorICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAKKyAg
ICBtX2ZpcnN0VW5jb21taXR0ZWQgPSBtX2NvbW1pdHRlZC5maW5kQml0KG1fZmlyc3RVbmNvbW1p
dHRlZCwgZmFsc2UpOworICAgIGlmIChtX2ZpcnN0VW5jb21taXR0ZWQgPCBtX2Jsb2Nrcy5zaXpl
KCkpIHsKKyAgICAgICAgbV9jb21taXR0ZWQucXVpY2tTZXQobV9maXJzdFVuY29tbWl0dGVkKTsK
KyAgICAgICAgdm9pZCogcmVzdWx0ID0gbV9ibG9ja3NbbV9maXJzdFVuY29tbWl0dGVkXTsKKyAg
ICAgICAgY29tbWl0QmxvY2socmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisgICAgCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5TWFsbG9jQmxvY2soKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2Js
b2Nrcy5zaXplKCk7CisgICAgbV9ibG9ja3MuYXBwZW5kKHJlc3VsdCk7CisgICAgbV9ibG9ja0lu
ZGljZXMuYWRkKHJlc3VsdCwgaW5kZXgpOworICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9
IG1fY29tbWl0dGVkLnNpemUoKSkKKyAgICAgICAgbV9jb21taXR0ZWQucmVzaXplKG1fYmxvY2tz
LmNhcGFjaXR5KCkpOworICAgIG1fY29tbWl0dGVkLnF1aWNrU2V0KGluZGV4KTsKKyAgICByZXR1
cm4gcmVzdWx0OworI2VuZGlmCit9CisKK3ZvaWQgSXNvTWVtb3J5QWxsb2NhdG9yQmFzZTo6ZnJl
ZUFsaWduZWRNZW1vcnkodm9pZCogYmFzZVB0cikKK3sKKyNpZiBFTkFCTEUoTUFMTE9DX0hFQVBf
QlJFQUtET1dOKQorICAgIG1fZGVidWdIZWFwLmZyZWUoYmFzZVB0cik7CisjZWxzZQorICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAKKyAgICBhdXRvIGl0ZXIgPSBtX2Jsb2NrSW5k
aWNlcy5maW5kKGJhc2VQdHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9ibG9ja0lu
ZGljZXMuZW5kKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gaXRlci0+dmFsdWU7CisgICAgbV9j
b21taXR0ZWQucXVpY2tDbGVhcihpbmRleCk7CisgICAgbV9maXJzdFVuY29tbWl0dGVkID0gc3Rk
OjptaW4oaW5kZXgsIG1fZmlyc3RVbmNvbW1pdHRlZCk7CisgICAgZGVjb21taXRCbG9jayhiYXNl
UHRyKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVmZGI4ZmY1NTc3NDMyYjc3YWRhMzljYzE5NjYzYjViZjQ5OGNlMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29NZW1vcnlBbGxvY2F0b3JCYXNlLmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvRGVidWdI
ZWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElzb01lbW9yeUFsbG9jYXRvckJhc2UgOiBw
dWJsaWMgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgSXNvTWVtb3J5QWxs
b2NhdG9yQmFzZShDU3RyaW5nKTsKKyAgICB+SXNvTWVtb3J5QWxsb2NhdG9yQmFzZSgpIG92ZXJy
aWRlOworCisgICAgdm9pZCogdHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCBzaXplKSBmaW5hbDsKKyAgICB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQq
KSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgcmVsZWFzZU1lbW9yeUZyb21TdWJjbGFz
c0Rlc3RydWN0b3IoKTsKKyAgICB2aXJ0dWFsIHZvaWQqIHRyeU1hbGxvY0Jsb2NrKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBmcmVlQmxvY2sodm9pZCogYmxvY2spID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0QmxvY2sodm9pZCogYmxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
b21taXRCbG9jayh2b2lkKiBibG9jaykgPSAwOworCisjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JS
RUFLRE9XTikKK3Byb3RlY3RlZDoKKyAgICAvLyBJZiBicmVha2Rvd24gaXMgZW5hYmxlZCwgd2Ug
ZG8gbm90IGVuc3VyZSBJc28tZmVhdHVyZS4gVGhpcyBpcyB0b3RhbGx5IE9LIHNpbmNlIGJyZWFr
ZG93biBpcyBtZW1vcnkgYmxvYXQgZGVidWdnaW5nIGZlYXR1cmUuCisgICAgV1RGOjpEZWJ1Z0hl
YXAgbV9kZWJ1Z0hlYXA7CisjZWxzZQorcHJpdmF0ZToKKyAgICBWZWN0b3I8dm9pZCo+IG1fYmxv
Y2tzOworICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkPiBtX2Jsb2NrSW5kaWNlczsKKyAgICBC
aXRWZWN0b3IgbV9jb21taXR0ZWQ7CisgICAgdW5zaWduZWQgbV9maXJzdFVuY29tbWl0dGVkIHsg
MCB9OworICAgIExvY2sgbV9sb2NrOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IDkyZTJj
MWQwZmIxYzVlNmMyOTlmMDU5OWQ2MTZjNzg1NTA0ZDQ4YmIuLmZlYmIwYTI4OTVjNDk4OWRjZTEy
MmY3N2QzYmM4ZDk1ZjVmYjFjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5jcHAKQEAgLTMzLDExICszMywxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSXNv
U3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgY29uc3QgSGVh
cENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93
ZXJUaWVyQ2VsbHMpCitJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFw
JiBoZWFwLCBjb25zdCBIZWFwQ2VsbFR5cGUmIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUsIHVp
bnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscywgc3RkOjp1bmlxdWVfcHRyPElzb01lbW9yeUFs
bG9jYXRvckJhc2U+JiYgYWxsb2NhdG9yKQogICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCkKICAg
ICAsIG1fZGlyZWN0b3J5KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRv
bVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3RvcnkpCi0gICAg
LCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPihuYW1lKSkKKyAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihhbGxv
Y2F0b3IgPyBXVEZNb3ZlKGFsbG9jYXRvcikgOiBtYWtlVW5pcXVlPElzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KG5hbWUpKQogewogICAgIG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50ID0g
bnVtYmVyT2ZMb3dlclRpZXJDZWxsczsKICAgICBBU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CkBAIC05OSw4
ICs5OSw5IEBAIHZvaWQqIElzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKQog
ICAgICAgICByZXR1cm4gcmV2aXZlKGFsbG9jYXRpb24pOwogICAgIH0KICAgICBpZiAobV9yZW1h
aW5pbmdMb3dlclRpZXJDZWxsQ291bnQpIHsKLSAgICAgICAgUHJlY2lzZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gPSBQcmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKG1fc3BhY2Uu
aGVhcCgpLCBjZWxsU2l6ZSgpLCB0aGlzLCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50
KTsKLSAgICAgICAgcmV0dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKKyAgICAgICAgUHJlY2lzZUFs
bG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlRm9yTG93
ZXJUaWVyKG1fc3BhY2UuaGVhcCgpLCBjZWxsU2l6ZSgpLCB0aGlzLCAtLW1fcmVtYWluaW5nTG93
ZXJUaWVyQ2VsbENvdW50KTsKKyAgICAgICAgaWYgKGFsbG9jYXRpb24pCisgICAgICAgICAgICBy
ZXR1cm4gcmV2aXZlKGFsbG9jYXRpb24pOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCmluZGV4IDhjZDZiY2MzMjkw
NjNkZDgyNjgwMjBiNjYzZDYxMDRhOWU3Mzg3N2YuLjQ1MDc5OGE4MWE1M2YyNTllMDEzMmFkN2Mw
MmE0ZDNkZDE4ODkxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2Uu
aApAQCAtMjYsMTggKzI2LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2NrRGly
ZWN0b3J5LmgiCisjaW5jbHVkZSAiSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oIgogI2luY2x1ZGUg
IlN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VBY2Nlc3MuaCIKICNpbmNsdWRlIDx3dGYv
U2luZ2x5TGlua2VkTGlzdFdpdGhUYWlsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBJ
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogY2xhc3MgSXNvQ2VsbFNldDsKIAogY2xhc3MgSXNv
U3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIElzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIGNvbnN0IEhlYXBDZWxsVHlwZSYs
IHNpemVfdCwgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBjb25zdCBIZWFwQ2VsbFR5
cGUmLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzLCBzdGQ6OnVu
aXF1ZV9wdHI8SXNvTWVtb3J5QWxsb2NhdG9yQmFzZT4mJiA9IG51bGxwdHIpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZSgpIG92ZXJyaWRlOwogCiAgICAgc2l6ZV90IGNlbGxT
aXplKCkgeyByZXR1cm4gbV9kaXJlY3RvcnkuY2VsbFNpemUoKTsgfQpAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIEJsb2NrRGlyZWN0b3J5IG1fZGlyZWN0b3J5OwogICAgIExv
Y2FsQWxsb2NhdG9yIG1fbG9jYWxBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I+IG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvTWVtb3J5QWxsb2NhdG9yQmFzZT4gbV9pc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQcmVjaXNlQWxsb2NhdGlvbiwgUGFj
a2VkUmF3U2VudGluZWxOb2RlPFByZWNpc2VBbGxvY2F0aW9uPj4gbV9sb3dlclRpZXJGcmVlTGlz
dDsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8SXNvQ2VsbFNldCwgUGFja2VkUmF3U2VudGluZWxO
b2RlPElzb0NlbGxTZXQ+PiBtX2NlbGxTZXRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAppbmRleCBmYTFiZjNjM2RjMWMxNDE1YjRk
ZTQ5Mzk0NjFjYWU4MWU1MzA0NWEwLi44MzZlN2RhNjRhOThjNzJmMzNiZTYzNzZiOGIzMzQyNTMx
Nzc2YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9j
YXRpb24uY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VB
bGxvY2F0aW9uOjp0cnlSZWFsbG9jYXRlKHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3AKIH0K
IAogCi1QcmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2Vy
VGllcihIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1aW50OF90
IGxvd2VyVGllckluZGV4KQorUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VBbGxvY2F0aW9uOjp0
cnlDcmVhdGVGb3JMb3dlclRpZXIoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUsIFN1YnNwYWNlKiBz
dWJzcGFjZSwgdWludDhfdCBsb3dlclRpZXJJbmRleCkKIHsKICAgICBpZiBjb25zdGV4cHIgKHZh
bGlkYXRlREZHRG9lc0dDKQogICAgICAgICBoZWFwLnZtKCkudmVyaWZ5Q2FuR0MoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oCmluZGV4IDljZTNk
YThlZjNiYTUxODRiY2VkZmEyZDdhYjM2ZjAxNmQ2YmY1MWYuLmU3OWEyN2JiM2YyNDI0ZWQyYzFk
YTQ4OThjMTc5NGE1MmEzMDY5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
UHJlY2lzZUFsbG9jYXRpb24uaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgUHJlY2lzZUFsbG9jYXRpb24qIHRyeUNyZWF0ZShIZWFwJiwgc2l6ZV90LCBTdWJzcGFjZSos
IHVuc2lnbmVkIGluZGV4SW5TcGFjZSk7CiAKLSAgICBzdGF0aWMgUHJlY2lzZUFsbG9jYXRpb24q
IGNyZWF0ZUZvckxvd2VyVGllcihIZWFwJiwgc2l6ZV90LCBTdWJzcGFjZSosIHVpbnQ4X3QgbG93
ZXJUaWVySW5kZXgpOworICAgIHN0YXRpYyBQcmVjaXNlQWxsb2NhdGlvbiogdHJ5Q3JlYXRlRm9y
TG93ZXJUaWVyKEhlYXAmLCBzaXplX3QsIFN1YnNwYWNlKiwgdWludDhfdCBsb3dlclRpZXJJbmRl
eCk7CiAgICAgUHJlY2lzZUFsbG9jYXRpb24qIHJldXNlRm9yTG93ZXJUaWVyKCk7CiAKICAgICBQ
cmVjaXNlQWxsb2NhdGlvbiogdHJ5UmVhbGxvY2F0ZShzaXplX3QsIFN1YnNwYWNlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggNDk4MTc5NTc0NTI0
MGM4NDgyYzI5ZjlhMWM0ZDRlYTJmYmJjYzRjOS4uMGVkMDZiZTVmZDE4MmViOTAxMzMxMGEzZTU2
NGI1YjA3ZTQ3OTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcApAQCAtMTUyLDEwICsxNTIsOSBAQCB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRKU0NlbGxP
ckF1eGlsaWFyeShIZWFwQ2VsbCogaGVhcENlbGwpCiAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludCgiR0MgdHlwZTogIiwgaGVhcCgpLT5jb2xsZWN0aW9uU2NvcGUoKSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiT2JqZWN0IGF0OiAiLCBSYXdQb2ludGVyKGpzQ2Vs
bCksICJcbiIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgICAgIG91dC5w
cmludCgiU3RydWN0dXJlIElEOiAiLCBzdHJ1Y3R1cmVJRCwgIiAoMHgiLCBmb3JtYXQoIiV4Iiwg
c3RydWN0dXJlSUQpLCAiKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiU3Ry
dWN0dXJlIElEIHRhYmxlIHNpemU6ICIsIGhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLnNpemUo
KSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlIElEOiAi
LCBzdHJ1Y3R1cmVJRC5iaXRzKCksICIgKCIsIFJhd1BvaW50ZXIoc3RydWN0dXJlSUQuZGVjb2Rl
KCkpLCAiKVxuIik7CiAjZWxzZQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVj
dHVyZTogIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmVJRCksICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmVJRC5kZWNv
ZGUoKSksICJcbiIpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiT2Jq
ZWN0IGNvbnRlbnRzOiIpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgMjsgKytpKQpAQCAtMTg2LDEzICsxODUsMTMgQEAgdm9pZCBTbG90VmlzaXRvcjo6YXBw
ZW5kSlNDZWxsT3JBdXhpbGlhcnkoSGVhcENlbGwqIGhlYXBDZWxsKQogICAgICAgICAgICAgZGll
KCJHQyBzY2FuIGZvdW5kIGNvcnJ1cHQgb2JqZWN0OiBzdHJ1Y3R1cmVJRCBpcyB6ZXJvIVxuIik7
CiAgICAgICAgIAogICAgICAgICAvLyBJdCdzIG5vdCBPSyBmb3IgdGhlIHN0cnVjdHVyZSB0byBi
ZSBudWtlZCBhdCBhbnkgR0Mgc2NhbiBwb2ludC4KLSAgICAgICAgaWYgKGlzTnVrZWQoc3RydWN0
dXJlSUQpKQorICAgICAgICBpZiAoc3RydWN0dXJlSUQuaXNOdWtlZCgpKQogICAgICAgICAgICAg
ZGllKCJHQyBzY2FuIGZvdW5kIG9iamVjdCBpbiBiYWQgc3RhdGU6IHN0cnVjdHVyZUlEIGlzIG51
a2VkIVxuIik7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRoaXMgZGV0ZWN0cyB0aGUgd29yc3Qg
b2YgdGhlIGJhZG5lc3MuCi0gICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChoZWFw
KCktPnN0cnVjdHVyZUlEVGFibGUoKSwgc3RydWN0dXJlSUQpOworICAgICAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQoc3RydWN0dXJlSUQpOwogICAgIH07Ci0gICAgCisKICAgICAvLyBJ
biBkZWJ1ZyBtb2RlLCB3ZSB2YWxpZGF0ZSBiZWZvcmUgbWFya2luZyBzaW5jZSB0aGlzIG1ha2Vz
IGl0IGNsZWFyZXIgd2hhdCB0aGUgcHJvYmxlbQogICAgIC8vIHdhcy4gSXQncyBhbHNvIHNsb3dl
ciwgc28gd2UgZG9uJ3QgZG8gaXQgbm9ybWFsbHkuCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEICYm
IGlzSlNDZWxsS2luZChoZWFwQ2VsbC0+Y2VsbEtpbmQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaAppbmRleCA2MWU2OWFlNDQ3YTdjMzc4ODg2ZjZhNmE1MWNjZmYw
N2NkZGE0MTNlLi5hYjM0NzQxMGQ0MjUwZTgwNDAwYjNmZWZmM2E3N2M1NTQ4M2MyNmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKQEAgLTkyLDYgKzkyLDggQEAg
cHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPiB2b2lk
IGFwcGVuZChjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4mKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IHZvaWQgYXBwZW5kSGlkZGVuKGNvbnN0IFdy
aXRlQmFycmllckJhc2U8VCwgVHJhaXRzPiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFdyaXRl
QmFycmllclN0cnVjdHVyZUlEJik7CisgICAgdm9pZCBhcHBlbmRIaWRkZW4oY29uc3QgV3JpdGVC
YXJyaWVyU3RydWN0dXJlSUQmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4gdm9p
ZCBhcHBlbmQoSXRlcmF0b3IgYmVnaW4gLCBJdGVyYXRvciBlbmQpOwogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBhcHBlbmRWYWx1ZXMoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duLCBSYXdW
YWx1ZVRyYWl0czxVbmtub3duPj4qLCBzaXplX3QgY291bnQpOwogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBhcHBlbmRWYWx1ZXNIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duLCBS
YXdWYWx1ZVRyYWl0czxVbmtub3duPj4qLCBzaXplX3QgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAppbmRleCA0NGYyMDljNTk0ZTlm
NDhmOTRmOTk3NzRjZTY0NGU4ZmRkYmU4MWMyLi41NDIyM2E2NDc5NmFmZTk2MmRkNzZkYjIzOWMw
MWNjMmVmYjU3ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvcklubGluZXMuaApAQCAtMTE2LDYgKzExNiwxNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xv
dFZpc2l0b3I6OmFwcGVuZEhpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4m
CiAgICAgYXBwZW5kSGlkZGVuVW5iYXJyaWVyZWQoc2xvdC5nZXQoKSk7CiB9CiAKK0FMV0FZU19J
TkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kKGNvbnN0IFdyaXRlQmFycmllclN0cnVjdHVy
ZUlEJiBzbG90KQoreworICAgIGFwcGVuZFVuYmFycmllcmVkKHJlaW50ZXJwcmV0X2Nhc3Q8SlND
ZWxsKj4oc2xvdC5nZXQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6
OmFwcGVuZEhpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCYgc2xvdCkKK3sKKyAg
ICBhcHBlbmRIaWRkZW5VbmJhcnJpZXJlZChyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHNsb3Qu
Z2V0KCkpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CiBBTFdBWVNfSU5MSU5F
IHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZChJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3RydWN0dXJlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJ1Y3R1
cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTc3MWNlNjZhZmI4MmFj
NjQyZjRhNzQxYzk4NDA5OTNhMjBlNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKQEAgLTAs
MCArMSwxODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKKworI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6U3RydWN0dXJlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcihDU3RyaW5nIG5hbWUpCisgICAgOiBCYXNlKG5hbWUpCit7Cit9CisK
K1N0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5TdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCkKK3sKKyAgICByZWxlYXNlTWVtb3J5RnJvbVN1YmNsYXNzRGVzdHJ1Y3Rvcigp
OworfQorCit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIlN0cnVjdHVyZSgiLCBSYXdQb2lu
dGVyKHRoaXMpLCAiKSIpOworfQorCit2b2lkKiBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yOjp0cnlBbGxvY2F0ZU1lbW9yeShzaXplX3QpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3ZvaWQgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZU1lbW9yeSh2b2lk
KikKK3sKKyAgICAvLyBTdHJ1Y3R1cmVzIGRvIG5vdCBzdXBwb3J0IFByZWNpc2UgYWxsb2NhdGlv
bnMgcmlnaHQgbm93LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQqIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeVJlYWxsb2NhdGVNZW1vcnko
dm9pZCosIHNpemVfdCkKK3sKKyAgICAvLyBTdHJ1Y3R1cmVzIGRvIG5vdCBzdXBwb3J0IFByZWNp
c2UgYWxsb2NhdGlvbnMgcmlnaHQgbm93LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKKyNpZiBDUFUoQUREUkVTUzY0KQorCitjbGFzcyBTdHJ1Y3R1cmVNZW1vcnlNYW5h
Z2VyIHsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVNZW1vcnlNYW5hZ2VyKCkKKyAgICB7CisgICAg
ICAgIC8vIERvbid0IHVzZSB0aGUgZmlyc3QgcGFnZSBiZWNhdXNlIHplcm8gaXMgdXNlZCBhcyB0
aGUgZW1wdHkgU3RydWN0dXJlSUQgYW5kIHRoZSBmaXJzdCBhbGxvY2F0aW9uIHdpbGwgY29uZmxp
Y3QuCisgICAgICAgIG1fdXNlZEJsb2Nrcy5zZXQoMCk7CisKKyAgICAgICAgbV9tYXBwZWRIZWFw
U2l6ZSA9IHN0cnVjdHVyZUhlYXBBZGRyZXNzU2l6ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICAgICAgZ19qc2NDb25maWcuc3RhcnRPZlN0cnVj
dHVyZUhlYXAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oT1NBbGxvY2F0b3I6OnRyeVJl
c2VydmVVbmNvbW1pdHRlZEFsaWduZWQobV9tYXBwZWRIZWFwU2l6ZSwgT1NBbGxvY2F0b3I6OkZh
c3RNYWxsb2NQYWdlcykpOworICAgICAgICAgICAgaWYgKGdfanNjQ29uZmlnLnN0YXJ0T2ZTdHJ1
Y3R1cmVIZWFwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9tYXBwZWRI
ZWFwU2l6ZSAvPSAyOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKChnX2pzY0NvbmZpZy5z
dGFydE9mU3RydWN0dXJlSGVhcCAmIH5zdHJ1Y3R1cmVJRE1hc2spID09IGdfanNjQ29uZmlnLnN0
YXJ0T2ZTdHJ1Y3R1cmVIZWFwKTsKKyAgICB9CisKKyAgICB2b2lkKiB0cnlNYWxsb2NTdHJ1Y3R1
cmVCbG9jaygpCisgICAgeworICAgICAgICBzaXplX3QgZnJlZUluZGV4OworICAgICAgICB7Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBjb25zdGV4cHIg
c2l6ZV90IHN0YXJ0SW5kZXggPSAwOworICAgICAgICAgICAgZnJlZUluZGV4ID0gbV91c2VkQmxv
Y2tzLmZpbmRCaXQoc3RhcnRJbmRleCwgMCk7CisgICAgICAgICAgICBBU1NFUlQoZnJlZUluZGV4
IDw9IG1fdXNlZEJsb2Nrcy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fbWFwcGVkSGVhcFNpemUgPD0gc3RydWN0dXJlSGVhcEFkZHJlc3NTaXplKTsKKyAgICAgICAg
ICAgIGlmIChmcmVlSW5kZXggKiBNYXJrZWRCbG9jazo6YmxvY2tTaXplID49IG1fbWFwcGVkSGVh
cFNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBtX3Vz
ZWRCbG9ja3Muc2V0KGZyZWVJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICBNYXJrZWRCbG9j
ayogYmxvY2sgPSByZWludGVycHJldF9jYXN0PE1hcmtlZEJsb2NrKj4oZ19qc2NDb25maWcuc3Rh
cnRPZlN0cnVjdHVyZUhlYXApICsgZnJlZUluZGV4ICogTWFya2VkQmxvY2s6OmJsb2NrU2l6ZTsK
KyAgICAgICAgY29uc3RleHByIGJvb2wgd3JpdGFibGUgPSB0cnVlOworICAgICAgICBjb25zdGV4
cHIgYm9vbCBleGVjdXRhYmxlID0gZmFsc2U7CisgICAgICAgIE9TQWxsb2NhdG9yOjpjb21taXQo
YmxvY2ssIE1hcmtlZEJsb2NrOjpibG9ja1NpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAg
ICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0KKworICAgIHZvaWQgZnJlZVN0cnVjdHVyZUJsb2Nr
KHZvaWQqIGJsb2NrUHRyKQorICAgIHsKKyAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0KGJs
b2NrUHRyLCBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKKyAgICAgICAgdWludHB0cl90IGJsb2Nr
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGJsb2NrUHRyKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXAgPD0gYmxvY2sgJiYgYmxv
Y2sgPCBnX2pzY0NvbmZpZy5zdGFydE9mU3RydWN0dXJlSGVhcCArIG1fbWFwcGVkSGVhcFNpemUp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2Nr
OjpibG9ja1NpemU+KGJsb2NrKSA9PSBibG9jayk7CisKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgICAgICBtX3VzZWRCbG9ja3MucXVpY2tDbGVhcigoYmxvY2sgLSBnX2pzY0Nv
bmZpZy5zdGFydE9mU3RydWN0dXJlSGVhcCkgLyBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTG9jayBtX2xvY2s7CisgICAgc2l6ZV90IG1fbWFwcGVkSGVh
cFNpemU7CisgICAgQml0VmVjdG9yIG1fdXNlZEJsb2NrczsKK307CisKK3N0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8U3RydWN0dXJlTWVtb3J5TWFuYWdlcj4gc19zdHJ1Y3R1cmVNZW1vcnlNYW5h
Z2VyOworCit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmluaXRpYWxpemVT
dHJ1Y3R1cmVBZGRyZXNzU3BhY2UoKQoreworICAgIHN0YXRpY19hc3NlcnQoaGFzT25lQml0U2V0
KHN0cnVjdHVyZUhlYXBBZGRyZXNzU2l6ZSkpOworICAgIHNfc3RydWN0dXJlTWVtb3J5TWFuYWdl
ci5jb25zdHJ1Y3QoKTsKK30KKwordm9pZCogU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjo6dHJ5TWFsbG9jQmxvY2soKQoreworICAgIHJldHVybiBzX3N0cnVjdHVyZU1lbW9yeU1hbmFn
ZXItPnRyeU1hbGxvY1N0cnVjdHVyZUJsb2NrKCk7Cit9CisKK3ZvaWQgU3RydWN0dXJlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUJsb2NrKHZvaWQqIGJsb2NrKQoreworICAgIHNfc3RydWN0
dXJlTWVtb3J5TWFuYWdlci0+ZnJlZVN0cnVjdHVyZUJsb2NrKGJsb2NrKTsKK30KKwordm9pZCBT
dHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpjb21taXRCbG9jayh2b2lkKiBibG9jaykK
K3sKKyAgICBjb25zdGV4cHIgYm9vbCB3cml0YWJsZSA9IHRydWU7CisgICAgY29uc3RleHByIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlOworICAgIE9TQWxsb2NhdG9yOjpjb21taXQoYmxvY2ssIE1h
cmtlZEJsb2NrOjpibG9ja1NpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKK30KKwordm9pZCBT
dHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkZWNvbW1pdEJsb2NrKHZvaWQqIGJsb2Nr
KQoreworICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdChibG9jaywgTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSk7Cit9CisKKyNlbHNlIC8vIG5vdCBDUFUoQUREUkVTUzY0KQorCisvLyBGSVhNRTogVGhp
cyBpcyB0aGUgc2FtZSBhcyBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yIG1heWJlIHdlIHNob3Vs
ZCBqdXN0IHVzZSB0aGF0IGZvciAzMi1iaXQuCisKK3ZvaWQgU3RydWN0dXJlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcjo6aW5pdGlhbGl6ZVN0cnVjdHVyZUFkZHJlc3NTcGFjZSgpCit7CisgICAgZ19q
c2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXAgPSAwOworfQorCit2b2lkKiBTdHJ1Y3R1cmVB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlNYWxsb2NCbG9jaygpCit7CisgICAgcmV0dXJuIHRy
eUZhc3RBbGlnbmVkTWFsbG9jKE1hcmtlZEJsb2NrOjpibG9ja1NpemUsIE1hcmtlZEJsb2NrOjpi
bG9ja1NpemUpOworfQorCit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZy
ZWVCbG9jayh2b2lkKiBibG9jaykKK3sKKyAgICBmYXN0QWxpZ25lZEZyZWUoYmxvY2spOworfQor
Cit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmNvbW1pdEJsb2NrKHZvaWQq
IGJsb2NrKQoreworICAgIFdURjo6ZmFzdENvbW1pdEFsaWduZWRNZW1vcnkoYmxvY2ssIE1hcmtl
ZEJsb2NrOjpibG9ja1NpemUpOworfQorCit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I6OmRlY29tbWl0QmxvY2sodm9pZCogYmxvY2spCit7CisgICAgV1RGOjpmYXN0RGVjb21t
aXRBbGlnbmVkTWVtb3J5KGJsb2NrLCBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKK30KKworI2Vu
ZGlmIC8vIENQVShBRERSRVNTNjQpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI1NWNmYjI4YzIxMTkxODhhN2VmOTc3MDkyMjRlNzEw
OTVhOGMwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0
cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9HaWdhY2Fn
ZS5oPgorCisjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKKyNpbmNsdWRlIDx3dGYv
RGVidWdIZWFwLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVjdHVy
ZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IgZmluYWwgOiBwdWJsaWMgSXNvTWVtb3J5QWxsb2NhdG9y
QmFzZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IElzb01lbW9yeUFsbG9jYXRvckJhc2U7
CisKKyAgICBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKENTdHJpbmcpOworICAgIH5T
dHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgZmluYWw7CisgICAgCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7CisKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZU1l
bW9yeShzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZnJlZU1lbW9yeSh2b2lkKikgZmluYWw7Cisg
ICAgdm9pZCogdHJ5UmVhbGxvY2F0ZU1lbW9yeSh2b2lkKiwgc2l6ZV90KSBmaW5hbDsKKworICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdHJ1Y3R1cmVBZGRyZXNzU3BhY2UoKTsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQqIHRyeU1hbGxvY0Jsb2NrKCkgZmluYWw7CisgICAgdm9pZCBmcmVlQmxv
Y2sodm9pZCogYmxvY2spIGZpbmFsOworICAgIHZvaWQgY29tbWl0QmxvY2sodm9pZCogYmxvY2sp
IGZpbmFsOworICAgIHZvaWQgZGVjb21taXRCbG9jayh2b2lkKiBibG9jaykgZmluYWw7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCmluZGV4IGRlOGQ2NTNkZDgyYmE2Yzk3ODdiY2IwZDE5NWZlMmI1YzRj
ZTg3NDkuLmJkMzZlMjRiMjc4ZDA3YTRlN2IwNGE3MWMxMjAzYTQ5ZGNiMzkyNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTMyMCw3ICsz
MjAsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
aml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHN0cnVjdHVyZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAg
ICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKLSAgICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0g
aml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSk7
CisgICAgICAgIEp1bXAgY29ycmVjdFN0cnVjdHVyZSA9IGppdC5icmFuY2gzMihFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKS5iaXRzKCkpKTsKICAgICAgICAgaml0LmFi
b3J0V2l0aFJlYXNvbihBSFN0cnVjdHVyZUlESXNWYWxpZCk7CiAgICAgICAgIGNvcnJlY3RTdHJ1
Y3R1cmUubGluaygmaml0KTsKIApAQCAtMzg5LDQ0ICszODksMjkgQEAgdm9pZCBBc3NlbWJseUhl
bHBlcnM6OnN0b3JlUHJvcGVydHkoSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBvYmplY3QsIEdQ
UlJlZyBvZmYKICAgICAgICAgQmFzZUluZGV4KHNjcmF0Y2gsIG9mZnNldCwgVGltZXNFaWdodCwg
KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CiB9
CiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFN0cnVjdHVyZShWTSYgdm0sIFJlZ2lz
dGVySUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0Tm9uTnVsbERlY29kZVN0cnVjdHVyZUlEKFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QpCiB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSNpZiBDUFUo
QVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaDIgPSBkYXRhVGVt
cFJlZ2lzdGVyOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBSZWdpc3RlcklEIHNjcmF0Y2gyID0g
c2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBjcHUiCi0jZW5k
aWYKKyAgICBtb3ZlKHNvdXJjZSwgZGVzdCk7CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICAvLyBU
aGlzIGNvdWxkIHVzZSBCRkkgb24gYXJtNjQgYnV0IHRoYXQgb25seSBoZWxwcyBpZiB0aGUgc3Rh
cnQgb2Ygc3RydWN0dXJlIGhlYXAgaXMgZW5jb2RhYmxlIGFzIGEgbW92IGFuZCBub3QgYXMgYW4g
aW1tZWRpYXRlIGluIHRoZSBhZGQgc28gaXQncyBwcm9iYWJseSBub3Qgc3VwZXIgaW1wb3J0YW50
LgorICAgIGFuZDMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVJRE1hc2spLCBkZXN0KTsKKyAgICBh
ZGQ2NChUcnVzdGVkSW1tNjQoZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXApLCBkZXN0
KTsKKyNlbmRpZiAvLyBub3QgQ1BVKEFERFJFU1M2NCkKK30KIAotICAgIEFTU0VSVChkZXN0ICE9
IHNjcmF0Y2gpOwotICAgIEFTU0VSVChkZXN0ICE9IHNjcmF0Y2gyKTsKLSAgICBBU1NFUlQoc2Ny
YXRjaCAhPSBzY3JhdGNoMik7Ci0KLSAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c291cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMik7Ci0gICAgbG9h
ZFB0cih2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gpOwotICAgIHJz
aGlmdDMyKHNjcmF0Y2gyLCBUcnVzdGVkSW1tMzIoU3RydWN0dXJlSURUYWJsZTo6c19udW1iZXJP
ZkVudHJvcHlCaXRzKSwgZGVzdCk7Ci0gICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KHNjcmF0Y2gsIGRlc3QsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciksIGRlc3QpOwotICAg
IGxzaGlmdFB0cihUcnVzdGVkSW1tMzIoU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5Qml0c1No
aWZ0Rm9yU3RydWN0dXJlUG9pbnRlciksIHNjcmF0Y2gyKTsKLSAgICB4b3JQdHIoc2NyYXRjaDIs
IGRlc3QpOwotI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi0gICAgVU5VU0VEX1BBUkFNKHNj
cmF0Y2gpOwotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3QpOwot
I2VuZGlmIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRM
b2FkU3RydWN0dXJlKFZNJiwgUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCkKK3sK
KyAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291cmNlLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyAgICBlbWl0Tm9uTnVsbERlY29kZVN0cnVjdHVyZUlE
KGRlc3QsIGRlc3QpOwogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRQcm90b3R5
cGUoVk0mIHZtLCBHUFJSZWcgb2JqZWN0R1BSLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgSnVtcExpc3QmIHNsb3dQYXRoKQordm9pZCBBc3NlbWJseUhlbHBlcnM6
OmVtaXRMb2FkUHJvdG90eXBlKFZNJiB2bSwgR1BSUmVnIG9iamVjdEdQUiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncywgSnVtcExpc3QmIHNsb3dQYXRoKQogewogICAgIEFTU0VSVChyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSAhPSBvYmplY3RHUFIpOwotICAgIEFTU0VSVChyZXN1bHRSZWdzLnBheWxv
YWRHUFIoKSAhPSBzY3JhdGNoR1BSKTsKLSAgICBBU1NFUlQob2JqZWN0R1BSICE9IHNjcmF0Y2hH
UFIpOwogCi0gICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0sIG9iamVjdEdQUiwgcmVzdWx0UmVncy5w
YXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHZtLCBvYmpl
Y3RHUFIsIHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpKTsKIAotICAgIGxvYWQxNihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgU3RydWN0dXJlOjpvdXRPZkxp
bmVUeXBlRmxhZ3NPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgIGF1dG8gb3ZlcnJpZGVzR2V0
UHJvdG90eXBlID0gYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBzY3JhdGNo
R1BSLCBUcnVzdGVkSW1tMzIoT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lKSk7CisgICAg
YXV0byBvdmVycmlkZXNHZXRQcm90b3R5cGUgPSBicmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
LCBTdHJ1Y3R1cmU6Om91dE9mTGluZVR5cGVGbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE92
ZXJyaWRlc0dldFByb3RvdHlwZU91dE9mTGluZSkpOwogICAgIHNsb3dQYXRoLmFwcGVuZChvdmVy
cmlkZXNHZXRQcm90b3R5cGUpOwogCiAgICAgbG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgp
KSwgcmVzdWx0UmVncyk7CkBAIC01MjUsNyArNTEwLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmVtaXRSYW5kb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgc2Ny
YXQKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmFuZG9tVGh1bmsoVk0mIHZtLCBHUFJSZWcg
c2NyYXRjaDAsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLCBHUFJSZWcgc2NyYXRj
aDMsIEZQUlJlZyByZXN1bHQpCiB7CiAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBzY3JhdGNoMyk7Ci0gICAgZW1pdExvYWRTdHJ1Y3R1cmUo
dm0sIHNjcmF0Y2gzLCBzY3JhdGNoMywgc2NyYXRjaDApOworICAgIGVtaXRMb2FkU3RydWN0dXJl
KHZtLCBzY3JhdGNoMywgc2NyYXRjaDMpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoMywg
U3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHNjcmF0Y2gzKTsKICAgICAvLyBOb3cs
IHNjcmF0Y2gzIGhvbGRzIEpTR2xvYmFsT2JqZWN0Ki4KIApAQCAtODM4LDcgKzgyMyw3IEBAIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVj
a01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIEp1bXBM
aXN0IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsKICAgICAgICAgaXNOb3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLmFwcGVuZChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxv
YWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKLSAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHZh
bHVlLnBheWxvYWRHUFIoKSwgcmVzdWx0LCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpOworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSwgdmFsdWUucGF5bG9h
ZEdQUigpLCByZXN1bHQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0
KSwgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKTsKICAgICAgICAg
aXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVzdWx0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgc2NyYXRjaElm
U2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKQEAgLTkyOSw3ICs5MTQsNyBA
QCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1
ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBK
dW1wTGlzdCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ7CiAgICAgICAgIGlzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5hcHBlbmQoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyh2YWx1ZS5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7Ci0gICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKHZt
LCB2YWx1ZS5wYXlsb2FkR1BSKCksIHNjcmF0Y2gsIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCk7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKHZtLCB2YWx1ZS5w
YXlsb2FkR1BSKCksIHNjcmF0Y2gpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0dsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoc3RkOjpnZXQ8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKSwgc2NyYXRj
aElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKTsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjNlMDg3MThk
YmY4MjA0MjM1ZTM5OWFhNjVjYjBkOTkwODI5NzFlMC4uNzdhNGUwM2RkMTIyNzc3NzM4ZDUwZGNh
MTJmYjA4ZGI4NTUyZjViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hT
dHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tMzIoc3Ry
dWN0dXJlLT5pZCgpKSk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRI
YW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKS5iaXRzKCkpKTsKICNlbHNlCiAg
ICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSk7CiAjZW5kaWYKQEAgLTE2MDIsOCArMTYwMiw5IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFyZ3VtZW50Q291bnQoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUo
KSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoVk0mLCBSZWdpc3Rl
cklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAgIHZv
aWQgZW1pdExvYWRQcm90b3R5cGUoVk0mLCBHUFJSZWcgb2JqZWN0R1BSLCBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgSnVtcExpc3QmIHNsb3dQYXRoKTsKKyAgICB2
b2lkIGVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lz
dGVySUQgZGVzdCk7CisgICAgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShWTSYsIFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QpOworICAgIHZvaWQgZW1pdExvYWRQcm90b3R5cGUoVk0m
LCBHUFJSZWcgb2JqZWN0R1BSLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBKdW1wTGlzdCYgc2xv
d1BhdGgpOwogCiAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3Rl
ZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCkKICAgICB7CkBA
IC0xNjg4LDEzICsxNjg5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG51a2VTdHJ1Y3R1cmVBbmRT
dG9yZUJ1dHRlcmZseShWTSYgdm0sIEdQUlJlZyBidXR0ZXJmbHksIEdQUlJlZyBvYmplY3QpCiAg
ICAgewogICAgICAgICBpZiAoaXNYODYoKSkgewotICAgICAgICAgICAgb3IzMihUcnVzdGVkSW1t
MzIoYml0d2lzZV9jYXN0PGludDMyX3Q+KG51a2VkU3RydWN0dXJlSURCaXQoKSkpLCBBZGRyZXNz
KG9iamVjdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisgICAgICAgICAgICBvcjMy
KFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oU3RydWN0dXJlSUQ6Om51a2VkU3Ry
dWN0dXJlSURCaXQpKSwgQWRkcmVzcyhvYmplY3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOwogICAgICAgICAgICAgc3RvcmVQdHIoYnV0dGVyZmx5LCBBZGRyZXNzKG9iamVjdCwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBKdW1wIG9rID0ganVtcElmTXV0YXRvckZlbmNlTm90TmVlZGVkKHZtKTsK
LSAgICAgICAgb3IzMihUcnVzdGVkSW1tMzIoYml0d2lzZV9jYXN0PGludDMyX3Q+KG51a2VkU3Ry
dWN0dXJlSURCaXQoKSkpLCBBZGRyZXNzKG9iamVjdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSk7CisgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDxpbnQzMl90PihT
dHJ1Y3R1cmVJRDo6bnVrZWRTdHJ1Y3R1cmVJREJpdCkpLCBBZGRyZXNzKG9iamVjdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgICAgIHN0b3JlRmVuY2UoKTsKICAgICAgICAg
c3RvcmVQdHIoYnV0dGVyZmx5LCBBZGRyZXNzKG9iamVjdCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSk7CiAgICAgICAgIHN0b3JlRmVuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCA4NjVhZTU3ZDQxNTU3
MjY3MTU1NjBhN2IxNjlmNmRmYmFhODJiMmIxLi45ZjMyZjI3YjljYmJjYjg0MTU2YzAzMGQ1MzVk
MjQ3ZjAxZmVlODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHVuc2lnbmVkIFBvbHltb3Jw
aGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OmNvbXB1dGVIYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJl
ZlB0cjxBCiAgICAgZm9yIChhdXRvJiBrZXkgOiBjYXNlcykKICAgICAgICAgV1RGOjphZGQoaGFz
aGVyLCBrZXktPmhhc2goKSk7CiAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVJRCA6IHdlYWtTdHJ1
Y3R1cmVzKQotICAgICAgICBXVEY6OmFkZChoYXNoZXIsIHN0cnVjdHVyZUlEKTsKKyAgICAgICAg
V1RGOjphZGQoaGFzaGVyLCBzdHJ1Y3R1cmVJRC5iaXRzKCkpOwogICAgIHJldHVybiBoYXNoZXIu
aGFzaCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3ODI3
OGNmMjA3NGI0YmUuLjA0ZmYyMmU2ZTQyNWEwM2M2MTQxNDcwNTY3ZjM3ZGE2MzY1MzRhZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBzdGF0aWMgdm9pZCBnZW5lcmF0
ZUdldEJ5SWRJbmxpbmVBY2Nlc3MoSklUJiBqaXQsIEdQUlJlZyBzdHViSW5mb0dQUiwgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdEpTUikK
IHsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlSlNSLnBheWxvYWRH
UFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgYXV0
byBkb0lubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3Jh
dGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUoKSkpOworICAgIGF1dG8gZG9J
bmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQoKSkpOwogICAgIGppdC5mYXJKdW1w
KENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwogICAgIGRvSW5saW5lQWNj
ZXNzLmxpbmsoJmppdCk7CiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkJ5SWRTZWxmT2Zmc2V0KCkpLCBz
Y3JhdGNoR1BSKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1Ygog
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaDJHUFI7CiAKICAgICBq
aXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlSlNSLnBheWxvYWRHUFIoKSwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgYXV0byBkb0lubGlu
ZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUoKSkpOworICAgIGF1dG8gZG9JbmxpbmVBY2Nl
c3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJ
bmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQoKSkpOwogICAgIGppdC5mYXJKdW1wKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29k
ZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwogICAgIGRvSW5saW5lQWNjZXNzLmxpbmso
JmppdCk7CiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkJ5SWRTZWxmT2Zmc2V0KCkpLCBzY3JhdGNoR1BS
KTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIEpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVC
YXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViSQogICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgZG9uZTsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzY3JhdGNoR1BSKTsKLSAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNl
U3RydWN0dXJlKCkpKTsKKyAgICBhdXRvIHNraXBJbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNl
U3RydWN0dXJlSUQoKSkpOwogICAgIGppdC5ib3hCb29sZWFuKHRydWUsIHJlc3VsdEpTUik7CiAg
ICAgYXV0byBmaW5pc2hlZCA9IGppdC5qdW1wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCmluZGV4IDkwMzBiYjUzYjJhZGQ2MWFlMDhhMzBjODdjNzFhMzhmMWY2
NzRjYTQuLmU1NDA0ZmQ5ZDQ0ZjI1ZDdkNmVhMGQ2YTFiMTc3NWFhZTY1YWRmYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3R5cGVvZl9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBq
dW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKLSAgICBl
bWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QxLCByZWdU
Mik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCBy
ZWdUMSk7CiAgICAgbG9hZEdsb2JhbE9iamVjdChyZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNv
bXBhcmVQdHIoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtNTE0LDcgKzUxNCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCiAgICAgSnVtcCBpc05v
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKGpzUmVn
VDEwLnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwotICAgIGVtaXRMb2FkU3RydWN0dXJlKHZt
KCksIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgcmVnVDIsIHJlZ1QxKTsKKyAgICBlbWl0TG9hZFN0
cnVjdHVyZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QyKTsKICAgICBsb2FkR2xv
YmFsT2JqZWN0KHJlZ1QwKTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhy
ZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsK
ICAgICBKdW1wIG1hc3F1ZXJhZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduID0ganVtcCgpOwpAQCAt
NTM5LDcgKzUzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwg
Y2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJl
LgogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhqc1JlZ1QxMC5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKLSAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSgp
LCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QyLCByZWdUMSk7CisgICAgZW1pdExvYWRTdHJ1
Y3R1cmUodm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMik7CiAgICAgbG9hZEdsb2Jh
bE9iamVjdChyZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCksIHRhcmdldCk7
CiAgICAgSnVtcCB3YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7CkBAIC0xMTk1LDcgKzExOTUsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgp
OwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7Ci0gICAgZW1pdExv
YWRTdHJ1Y3R1cmUodm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMiwgcmVnVDEpOwor
ICAgIGVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgcmVnVDIp
OwogICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJl
UHRyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAgLTEyMjcsNyArMTIyNyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwog
CiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7Ci0gICAgZW1pdExvYWRT
dHJ1Y3R1cmUodm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMiwgcmVnVDEpOworICAg
IGVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgcmVnVDIpOwog
ICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRy
KE5vdEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAgLTE5MjUsNyArMTkyNSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChqc1Jl
Z1QxMCkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoanNSZWdUMTAu
cGF5bG9hZEdQUigpKSk7CiAKLSAgICBlbWl0TG9hZFByb3RvdHlwZSh2bSgpLCBqc1JlZ1QxMC5w
YXlsb2FkR1BSKCksIGpzUmVnVDMyLCByZWdUNCwgc2xvd0Nhc2VzKTsKKyAgICBlbWl0TG9hZFBy
b3RvdHlwZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIGpzUmVnVDMyLCBzbG93Q2FzZXMp
OwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKGJ5dGVjb2RlLCBqc1JlZ1QzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYyMTBm
YzZmZThjNDA3NjEuLmEzMmJlMjMwYjRkZDcyZWFlMTUyOWYwNGRkYmMzOGM4NGVjMmVmZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0yNzMxLDcgKzI3MzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVy
YXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFuZDMyKFRy
dXN0ZWRJbW0zMihJbmRleGluZ1R5cGVNYXNrKSwgcmVnVDEpOwogICAgIGdlbmVyaWNDYXNlcy5h
cHBlbmQoYnJhbmNoMzIoQWJvdmUsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoQXJyYXlXaXRoVW5kZWNp
ZGVkKSkpOwogCi0gICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgcmVnVDAsIHJlZ1QxLCByZWdU
Mik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgcmVnVDAsIHJlZ1QxKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkp
LCByZWdUMSk7CiAgICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hUZXN0UHRyKFplcm8sIHJl
Z1QxKSk7CiAgICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hJZlN0cnVjdHVyZShyZWdUMSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCmluZGV4IGFlZTA0
NjVkNzFlNzliYmZiY2FhMmMwNTA3ZDNjNzAyMzBmOTlkNDQuLjM3YTAyMmRlNTIyNzY1Y2I2ZmQ5
MDRkNTZlYjU3NDgyMjU4MzM2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJSb3V0aW5lLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJRC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzYsMTIgKzM3LDYgQEAgY2xh
c3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBWTTsKIAotI2lm
IFVTRShKU1ZBTFVFNjQpCi11c2luZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OwotI2Vsc2UKLXVz
aW5nIFN0cnVjdHVyZUlEID0gU3RydWN0dXJlKjsKLSNlbmRpZgotCiBjbGFzcyBBY2Nlc3NDYXNl
OwogCiAvLyBUaGlzIGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBh
bHNvIHRoZSBjbGFzcyB5b3Ugd2FudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKaW5kZXggNjU2YmMyYWEzNDdiYjJkNDY1YzE0M2MxYTJjM2NjMjE2
N2Y1OTU4NS4uN2EwZTdkZmU2NTZiZjQzNDA0Y2U4Y2U2ZmE1M2U5OGRlMTFmZDllOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC02NTQs
NyArNjU0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgewot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gb2xk
U3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgICAgICAgICAgICAgaWYgKFN0
cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIpKSB7CkBAIC02NjgsNyArNjY4
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQpCiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAg
ICAgIGlmIChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7
CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUu
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fc3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9vZmZzZXQgPSAwOwogCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFj
Y2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludCgpKSB7CkBAIC03MDMsNyArNzAzLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmVJRCkgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBhID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwog
CiAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3Rv
KGEsIGIpKSB7CkBAIC03MTcsNyArNzE3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFz
ZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgewogICAg
ICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAg
ICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX3N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgewpAQCAtODMwLDEwICs4MzAsMTAgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50
R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLAogICAg
ICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1
Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgICAgIG9sZFN0
cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChvbGRTdHJ1Y3R1cmVJRCkgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBhID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogCiAg
ICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEs
IGIpKSB7CkBAIC05NjgsNyArOTY4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV9pZCkKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKG9sZFN0
cnVjdHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIGEgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCiAg
ICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CkBAIC05ODEsOSArOTgxLDkg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAg
ICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICBtZXRhZGF0YS5tX29mZnNl
dCA9IDA7Ci0gICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBt
ZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICAKICAgICAgICAgSlNDZWxsKiBi
YXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKQEAgLTExNTcsNyArMTE1Nyw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICB7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0
dXJlSUQ7CiAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKLSAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0
dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IG9sZFN0cnVjdHVyZUlELmRl
Y29kZSgpOwogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlKHZtKTsKIAogICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3Vs
ZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkgewpAQCAtMTE3MSw3ICsxMTcxLDcgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChz
bG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91
dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKQEAgLTEyOTAsNyArMTI5MCw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAg
ICB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKLSAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
b2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IG9sZFN0cnVj
dHVyZUlELmRlY29kZSgpOwogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC50eXBl
KCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAg
YiA9IGItPnByZXZpb3VzSUQoKTsKQEAgLTEzMDMsOSArMTMwMyw5IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICB9CiAKICAgICAgICAg
Ly8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1
cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKLSAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1f
bmV3U3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICBtZXRhZGF0YS5tX3Byb3Bl
cnR5LmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZh
bHVlLmFzQ2VsbCgpOwpAQCAtMTM3OSw4ICsxMzc5LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJl
LT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKIAogICAgICAg
ICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgIG1l
dGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOwotICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVj
dHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVy
ZUlEKCk7CisgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgp
OwogICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7CiAKICAgICAgICAgaWYgKCFuZXdT
dHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNWQwZTNjMmZiZjc1NDdkZjMx
MGNhN2Y0ODJmMDViZmVhMTNjMTU4My4uNGZhNGZiM2Q3OTFiMzM0NzgwZDhkODgwNmFiMDJkOGVi
Y2Y3MDU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMjEyLDExICsyMTIsNiBAQCBlbHNlCiAgICAgY29uc3QgTG93
ZXN0VGFnID0gY29uc3RleHByIEpTVmFsdWU6Okxvd2VzdFRhZwogZW5kCiAKLWlmIEpTVkFMVUU2
NAotICAgIGNvbnN0IE51bWJlck9mU3RydWN0dXJlSURFbnRyb3B5Qml0cyA9IGNvbnN0ZXhwciBT
dHJ1Y3R1cmVJRFRhYmxlOjpzX251bWJlck9mRW50cm9weUJpdHMKLSAgICBjb25zdCBTdHJ1Y3R1
cmVFbnRyb3B5Qml0c1NoaWZ0ID0gY29uc3RleHByIFN0cnVjdHVyZUlEVGFibGU6OnNfZW50cm9w
eUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIKLWVuZAotCiBpZiBMQVJHRV9UWVBFRF9BUlJB
WVMKICAgICBjb25zdCBTbWFsbFR5cGVkQXJyYXlNYXhMZW5ndGggPSBjb25zdGV4cHIgQXJyYXlQ
cm9maWxlOjpzX3NtYWxsVHlwZWRBcnJheU1heExlbmd0aAogZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDI0
M2U1MDI1ZTcyOGFlYzVmZGYwOWE2NGIzZDhhZTlkZGYzNzUwZTAuLmM0NTMzNTFkNDkyNmNmNzRl
OGQ2ZWY4NTg1OTg3NGE0NWJhZDU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC03MjQsMjAgKzcyNCwxNiBA
QCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQs
IHZhbHVlRmllbGROYW1lKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gc3RydWN0dXJlSURU
b1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgc2NyYXRjaCwg
c2NyYXRjaDIpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gKLSAgICBtb3ZlIHN0
cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgc2NyYXRjaDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dm1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICByc2hpZnRpIE51bWJlck9mU3RydWN0dXJlSURFbnRy
b3B5Qml0cywgc2NyYXRjaDIKLSAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJl
SURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKLSAg
ICBsb2FkcCBbc2NyYXRjaCwgc2NyYXRjaDIsIFB0clNpemVdLCBzY3JhdGNoMgotICAgIGxzaGlm
dHAgU3RydWN0dXJlRW50cm9weUJpdHNTaGlmdCwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCi0g
ICAgeG9ycCBzY3JhdGNoMiwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCittYWNybyBzdHJ1Y3R1
cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3Jh
dGNoKQorICAgIGFuZHEgY29uc3RleHByIHN0cnVjdHVyZUlETWFzaywgc3RydWN0dXJlSURUaGVu
U3RydWN0dXJlCisgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ1N0YXJ0T2ZTdHJ1Y3R1cmVIZWFwLCBzY3JhdGNoCisgICAgbG9hZHAgW3NjcmF0Y2hd
LCBzY3JhdGNoCisgICAgYWRkcCBzY3JhdGNoLCBzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUKIGVu
ZAogCi1tYWNybyBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2goY2VsbCwgc3RydWN0dXJlLCBzY3Jh
dGNoLCBzY3JhdGNoMikKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1
Y3R1cmUsIHNjcmF0Y2gpCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBz
dHJ1Y3R1cmUKLSAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0
Y2goc3RydWN0dXJlLCBzY3JhdGNoKQogZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50
ZXJwcmV0ZXIuCkBAIC05NjAsNyArOTU2LDcgQEAgbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbk9w
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZm4pCiAgICAgICAgIG1vdmUgMCwgdDAKICAgICAg
ICAgam1wIC5kb25lCiAgICAgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6Ci0gICAgICAgIGxvYWRT
dHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0MykKKyAgICAgICAgbG9hZFN0cnVjdHVy
ZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xNTAxLDcg
KzE0OTcsNyBAQCBsbGludE9wV2l0aFJldHVybihvcF90eXBlb2ZfaXNfdW5kZWZpbmVkLCBPcFR5
cGVvZklzVW5kZWZpbmVkLCBtYWNybyAoc2l6ZSwgZ2V0LAogICAgIG1vdmUgVmFsdWVGYWxzZSwg
dDEKICAgICByZXR1cm4odDEpCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhT
Y3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNzEzLDcgKzE3MDksNyBAQCBsbGludE9w
V2l0aFByb2ZpbGUob3BfZ2V0X3Byb3RvdHlwZV9vZiwgT3BHZXRQcm90b3R5cGVPZiwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcAogICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLm9wR2V0UHJvdG90
eXBlT2ZTbG93CiAgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wR2V0
UHJvdG90eXBlT2ZTbG93CiAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0
MSwgdDMpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAgICAgbG9h
ZGggU3RydWN0dXJlOjptX291dE9mTGluZVR5cGVGbGFnc1t0Ml0sIHQzCiAgICAgYnRpbnogdDMs
IE92ZXJyaWRlc0dldFByb3RvdHlwZU91dE9mTGluZSwgLm9wR2V0UHJvdG90eXBlT2ZTbG93CiAK
QEAgLTE3NTMsMTkgKzE3NDksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwg
T3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRw
IE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlQ2hhaW5bdDVdLCB0MwogICAgIGJ0cHog
dDMsIC5vcFB1dEJ5SWRUcmFuc2l0aW9uRGlyZWN0CiAKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDEKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bdDFdLCB0MQotICAgIGxvYWRwIFZNOjpo
ZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJs
ZVt0MV0sIHQxCi0KLSAgICBtYWNybyBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2hB
bmRUYWJsZShzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHRhYmxlLCBzY3JhdGNoKQotICAgICAg
ICBtb3ZlIHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgc2NyYXRjaAotICAgICAgICByc2hpZnRp
IE51bWJlck9mU3RydWN0dXJlSURFbnRyb3B5Qml0cywgc2NyYXRjaAotICAgICAgICBsb2FkcCBb
dGFibGUsIHNjcmF0Y2gsIFB0clNpemVdLCBzY3JhdGNoCi0gICAgICAgIGxzaGlmdHAgU3RydWN0
dXJlRW50cm9weUJpdHNTaGlmdCwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCi0gICAgICAgIHhv
cnAgc2NyYXRjaCwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCi0gICAgZW5kCi0KLSAgICBzdHJ1
Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2hBbmRUYWJsZSh0MiwgdDEsIHQwKQorICAgIHN0
cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCiAKICAgICBsb2FkcCBTdHJ1
Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDNdLCB0MwogICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56
IHQzLCBvayBlbmQpCkBAIC0xNzc2LDcgKzE3NjAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQyCiAgICAgYmluZXEgdDIs
IFt0M10sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkcCA0LCB0MwotICAgIHN0cnVjdHVyZUlEVG9T
dHJ1Y3R1cmVXaXRoU2NyYXRjaEFuZFRhYmxlKHQyLCB0MSwgdDApCisgICAgc3RydWN0dXJlSURU
b1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSkKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlW3QyXSwgdDIKICAgICBicW5lcSB0MiwgVmFsdWVOdWxsLCAub3BQdXRCeUlkVHJhbnNp
dGlvbkNoYWluTG9vcAogCkBAIC0yMTUxLDcgKzIxMzUsNyBAQCBtYWNybyBlcXVhbE51bGxKdW1w
T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxl
cikKICAgICAgICAgYXNzZXJ0Tm90Q29uc3RhbnQoc2l6ZSwgdDApCiAgICAgICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKICAgICAgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAuaW1tZWRpYXRl
Ci0gICAgICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0MykKKyAgICAg
ICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAgICAgICAgIGNlbGxIYW5k
bGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgp
CiAKQEAgLTI4NzIsNyArMjg1Niw3IEBAIGVuZCkKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hl
Y2sob3Bjb2RlU3RydWN0LCBnZXQsIHNsb3dQYXRoKQogICAgIGdldChtX3Njb3BlLCB0MCkKICAg
ICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQw
LCB0MiwgdDEsIHQzKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQog
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVbdDVdLCB0MQog
ICAgIGJwbmVxIHQyLCB0MSwgc2xvd1BhdGgKIGVuZApAQCAtMzMyMyw3ICszMzA3LDcgQEAgbGxp
bnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IsIE9wR2V0UHJvcGVydHlF
bnVtZXJhdG9yLCBtYWNybyAoc2kKICAgICBhbmRpIEluZGV4aW5nVHlwZU1hc2ssIHQxCiAgICAg
YmlhIHQxLCBBcnJheVdpdGhVbmRlY2lkZWQsIC5zbG93UGF0aAogCi0gICAgbG9hZFN0cnVjdHVy
ZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQzKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MCwgdDEsIHQyKQogICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcmV2aW91c09yUmFyZURhdGFb
dDFdLCB0MQogICAgIGJ0cHogdDEsIC5zbG93UGF0aAogICAgIGJiZXEgSlNDZWxsOjptX3R5cGVb
dDFdLCBTdHJ1Y3R1cmVUeXBlLCAuc2xvd1BhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBkNDkzYzVlNzc3MGFjNTAxNmQyYTAx
ODIyMmMxNDVjYjcyN2Y0NDA4Li5iZDY1NjRjNmI0YzhmMzE3MzM4Yzk5MDg4NTQ0NzY1NjAxYmZm
YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC02MDgsNyArNjA4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5
UHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBJ
bnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCkp
OworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpKTsKICAgICBpZiAoIWNhblVzZURlZmF1bHRBcnJheUpvaW5Gb3JUb1N0cmluZyh2bSwgdGhp
c09iamVjdCkpIHsKICAgICAgICAgLy8gMi4gTGV0IGZ1bmMgYmUgdGhlIHJlc3VsdCBvZiBjYWxs
aW5nIHRoZSBbW0dldF1dIGludGVybmFsIG1ldGhvZCBvZiBhcnJheSB3aXRoIGFyZ3VtZW50ICJq
b2luIi4KICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmpvaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggOTdiMjNlNWViZTUyOWJlNjQ5
NzFhNzNjYzdlNWM2NTY4YmY0Yjg4Yy4uOTUyMjA5ZDM3MTY1NWM2MDk4ZGI2YmVlN2I1YjNlNzU2
ZjZmOWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQ
cm90b3R5cGUuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
IAogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQo
dm0sIHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJl
SUQodmFsdWUtPnN0cnVjdHVyZUlEKCkpOwogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0VG9T
dHJpbmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
c2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTE1Niw3
ICsxNTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVmFsdWVP
ZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNCaWdJbnQqIHZhbHVlID0g
dG9UaGlzQmlnSW50VmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHZtLCB2YWx1ZS0+c3RydWN0dXJlSUQoKSk7CisgICAgSW50ZWdyaXR5
OjphdWRpdFN0cnVjdHVyZUlEKHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCBiYjRhNDU5YzY1YjI1MDQwMTg2ZjIz
Yjg5YmUwZTNkMmViNzViYThkLi5hZjAwN2EzNWVhMGU0MGY1MzdmMTY3Y2QzMGYzNTNmNjk3ZGEw
MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm9v
bGVhblByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVy
ZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0
U3RydWN0dXJlSUQodGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKIApAQCAtOTYs
NyArOTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm9vbGVhblByb3RvRnVuY1ZhbHVl
T2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmIChVTkxJS0VMWSghdGhp
c09iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUpOwogCi0gICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodGhpc09i
amVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2Jq
ZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0ZmU3MzA0MzhhMjBjMjU3NDM2MDAx
NDliMmMwZDkxYjUxYjc3NzVlLi44Y2YxMGQyNjQ2YmUzY2RmMWEzYTIzNzFjNTUxODYxYmE2NDJk
YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTM1NSwxMSArMzU1LDExIEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfdG9fdGhpcykKICAgICAgICAgICAgIGlmIChvdGhlclN0cnVjdHVyZUlEKQog
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3Rl
ZDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSBteVN0cnVjdHVy
ZUlEOwotICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKGNvZGVCbG9jaywgdm0uZ2V0U3RydWN0
dXJlKG15U3RydWN0dXJlSUQpKTsKKyAgICAgICAgICAgIHZtLndyaXRlQmFycmllcihjb2RlQmxv
Y2ssIG15U3RydWN0dXJlSUQuZGVjb2RlKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAg
ICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9j
YWNoZWRTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgfQogICAgIC8vIE5vdGU6IFdl
IG9ubHkgbmVlZCB0byBkbyB0aGlzIHZhbHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93IHBh
dGguIFRoZSBmYXN0IHBhdGgKICAgICAvLyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRvIHRvX3Ro
aXMgaWYgdGhlIHN0cnVjdHVyZSBjaGVjayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCAy
MjUyNTZkYTdkM2Y4NjZiYjI5YzJiM2E3NDliMmUyMDA3Yzc1YmYxLi44NTQ1YTU1OWE3MzI4YjU1
MzdkYjgxMjgzYzk4YTYzOWQ2YzRhODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbQogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc0RhdGVPYmotPnN0cnVjdHVyZUlEKCkpOworICAg
IEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0aGlzRGF0ZU9iai0+c3RydWN0dXJlSUQoKSk7
CiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gYXNVVENW
YXJpYW50CiAgICAgICAgID8gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGNhY2hl
KQogICAgICAgICA6IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWNoZSk7CkBAIC0z
MTIsNyArMzEyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQcm90b0Z1bmNUb0lT
T1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNEYXRlT2JqKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CiAKLSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNE
YXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQo
dGhpc0RhdGVPYmotPnN0cnVjdHVyZUlEKCkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlz
RGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJJbnZh
bGlkIERhdGUiX3MpKTsKIApAQCAtMzYwLDcgKzM2MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50
b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7Ci0gICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsK
KyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodGhpc09iamVjdC0+c3RydWN0dXJlSUQo
KSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVb
U3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBkZmIx
OGEzMzAzM2M1NTMxZGEzNTBjYjYwNDY0ODhmOTY3MjI1ZGFhLi42NzQyMDY1MjNkMWM0YmNkZWU4
YzUwMGEwNzEzMTYxNWMyNDFlNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIFN0cmluZyBFcnJvcklu
c3RhbmNlOjpzYW5pdGl6ZWRNZXNzYWdlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJl
SUQodm0sIHN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChz
dHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTVmFsdWUgbWVzc2FnZVZhbHVlOwogICAgIGF1dG8gbWVz
c2FnZVByb3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZTsKQEAgLTE3Miw3ICsx
NzIsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkTmFtZVN0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSW50ZWdy
aXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQoc3RydWN0dXJlSUQoKSk7CiAKICAgICBKU1ZhbHVlIG5hbWVWYWx1
ZTsKICAgICBhdXRvIG5hbWVQcm9wZXJ0TmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CkBA
IC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHN0cnVjdHVyZUlEKCkpOworICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmVJRCgpKTsKIAogICAgIFN0cmluZyBu
YW1lU3RyaW5nID0gc2FuaXRpemVkTmFtZVN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAppbmRleCBiOGM2MmQzNzU5OTU1NGVkNTc3
NWQzZjY5OTRiYjlhMTY5YWMyMTNkLi5lZjQzMWYzOTVlMzQyNWEyNjM1NGU5MzIwYWNjNGY5MjUy
YjM4MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihlcnJv
clByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGFzT2JqZWN0
KHRoaXNWYWx1ZSk7Ci0gICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2Jq
LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodGhpc09i
ai0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0IHJlY3Vyc2lvbiEKICAg
ICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDEyZDQ5OWE0ZTQ1MDRjZWMxODRkN2RiZjVjMzZlZmVkZWIxYWI0NzMuLmEx
NzY0N2FjOWFhMjNlNzU0NzU2NzJlNGM2ZWI1MmZkMDU5ZTRiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzgs
NyArNzgsNyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlND
ZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3VubGlua2VkRXhlY3V0YWJsZSk7CiAgICAgaWYgKFJhcmVEYXRhKiByYXJlRGF0YSA9
IHRoaXNPYmplY3QtPm1fcmFyZURhdGEuZ2V0KCkpIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
cmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlKTsKKyAgICAgICAgdmlzaXRvci5h
cHBlbmQocmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlSUQpOwogICAgICAgICB2
aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9hc1N0cmluZyk7CiAgICAgICAgIGlmIChUZW1wbGF0
ZU9iamVjdE1hcCogbWFwID0gcmFyZURhdGEtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsK
ICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2JqZWN0LT5jZWxsTG9jaygpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IGE3Zjc3NTEzZThhZGUwZmViZjdhOWIzMmVmOTNkZjliMGU2YmEyNjEuLmZhOTUwNDUz
YTU0MTJjNzIwMGY1YTgyNWI4NmNmYTA3NjVmOWQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yNTcsMTIgKzI1Nywx
MiBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmUoKQog
ICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fcmFyZURhdGEpKQotICAgICAgICAgICAgcmV0
dXJuIG1fcmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlLmdldCgpOworICAgICAg
ICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlSUQuZ2V0
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICB2b2lkIHNldENhY2hlZFBv
bHlQcm90b1N0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIHN0cnVjdHVyZSk7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9jYWNoZWRQb2x5
UHJvdG9TdHJ1Y3R1cmVJRC5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7CiAgICAgfQogCiAgICAg
SW5saW5lV2F0Y2hwb2ludFNldCYgZW5zdXJlUG9seVByb3RvV2F0Y2hwb2ludCgpCkBAIC0zMTAs
OCArMzEwLDggQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJzU3RhcnRP
ZmZzZXQgeyAwIH07CiAgICAgICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
IHsgVUlOVF9NQVggfTsKKyAgICAgICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQgbV9jYWNoZWRQ
b2x5UHJvdG9TdHJ1Y3R1cmVJRDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2Jq
ZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFwOwotICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpT
U3RyaW5nPiBtX2FzU3RyaW5nOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBiNmM5OTYxMDk1NWI3ZDBh
MTc2MDIxZDg2ZWRhZTg2ZDMzYzIwYzNjLi5iMzFjZmMxYzkwNWU5Njg0YTlhNzgxZTQ3ZGYxNmEw
ZmFhYzgzYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCkBAIC04MSwxOSArODEsMTkgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAg
ICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlE
KCkpOworICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoZnVuY3Rpb24tPnN0cnVj
dHVyZUlEKCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShmdW5jdGlvbi0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0KSkpOwogICAgIH0KIAogICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHM8SW50ZXJuYWxGdW5jdGlvbj4odm0pKSB7CiAgICAgICAgIElu
dGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPih0aGlz
VmFsdWUpOwotICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIGZ1bmN0aW9u
LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKGZ1
bmN0aW9uLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJm
dW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0i
KSkpOwogICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKLSAgICAgICAgSW50ZWdyaXR5
OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBvYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBJ
bnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAg
ICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2Jh
bE9iamVjdCwgImZ1bmN0aW9uICIsIG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lLCAi
KCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKaW5kZXggMTIxZDQzMjhj
YTA4ZmVhOTAzOTVjZjExMWNiNDNmYzdmYjU1M2FlZi4uYTEzZGZhNDU2NjgzMTg4Zjc5NGQ3OTkz
NmE5MjEzODU2MWYyMzI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBGdW5jdGlvblJh
cmVEYXRhOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3Ip
CiAKICAgICByYXJlRGF0YS0+bV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKICAgICByYXJlRGF0YS0+bV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblBy
b2ZpbGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQocmFyZURh
dGEtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQocmFyZURh
dGEtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZUlEKTsKICAgICB2aXNpdG9yLmFwcGVuZChyYXJl
RGF0YS0+bV9leGVjdXRhYmxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCmluZGV4IDJjYTA4NmRiYzZlYmRmNzgyZTFmNjE0MTNi
MTNkZjAwY2NiMTkwNmYuLjBmMWU5ODU2OTM1MTY0N2ExNzkyOTc0NzMwNGU4ZmE3YTYzYzJiZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmgKQEAgLTcyLDkgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90
IG9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoRnVuY3Rpb25SYXJlRGF0YSwgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSk7IH0KICAgICBz
dGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dFNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX2FsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZf
dCBvZmZzZXRPZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uUHJvZmlsZSk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkJvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25SYXJl
RGF0YSwgbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsgfQogICAgIHN0YXRpYyBpbmxpbmUgcHRy
ZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5j
dGlvblJhcmVEYXRhLCBtX2V4ZWN1dGFibGUpOyB9Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZm
X3Qgb2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX2FsbG9jYXRpb25Qcm9maWxlQ2xl
YXJpbmdXYXRjaHBvaW50KTsgfQogCiAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJv
dG90eXBlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCiAgICAgewpAQCAtMTEzLDggKzExMSw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
LnN0YXJ0V2F0Y2hpbmcoKTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
LSAgICB2b2lkIHNldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgeyBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1
cmUpOyB9CisgICAgU3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgeyByZXR1
cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlSUQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2JvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmVJRC5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7IH0KIAogICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdl
dCgpOyB9CiAKQEAgLTE2MCw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlV2l0aFByb3RvdHlwZSBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogICAgIElu
bGluZVdhdGNocG9pbnRTZXQgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQ7CiAgICAg
SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9j
YXRpb25Qcm9maWxlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlv
blN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2JvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmVJRDsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJs
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9p
bnQ+IG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ7CiAgICAgYm9vbCBtX2hh
c1JlaWZpZWRMZW5ndGggOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCmluZGV4IDIwNWUxYTkzOTQzYjM1YWFkMWJmZjUyOTA5
MmRlMzEzYWNlMDU4MGQuLmMxYWEzYzliN2EzYmQ0MjFjYTg4MTcxODdkZTgwMDY0OTU3YjQzYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0
eUNhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEVudHJ5LCByZXN1
bHQpOyB9CiAKICAgICAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBsOwotICAgICAg
ICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCB7IDAgfTsKKyAgICAgICAgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQ7CiAgICAgICAgIGJvb2wgcmVzdWx0IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwCmluZGV4IDMzYjVhOTAxNGEwNTNmZmY5NWUwM2I1MzZiOTU3NGVlZWRlYWFiNjMuLjdjNzFh
YTAyYzMyMzU1YWIxMDJjOThiZDBmNGJlOGY0N2UwYTAzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgIlNpZ2lsbENyYXNoQW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVk
ZSAiVk1UcmFwcy5oIgogI2luY2x1ZGUgIldhc21DYWxsZWVSZWdpc3RyeS5oIgpAQCAtNjUsNiAr
NjYsNyBAQCB2b2lkIGluaXRpYWxpemUoKQogI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgICAg
IE9wdGlvbnM6OkFsbG93VW5maW5hbGl6ZWRBY2Nlc3NTY29wZSBzY29wZTsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmluaXRpYWxpemVTdHJ1Y3R1cmVBZGRy
ZXNzU3BhY2UoKTsKICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6OmluaXRpYWxpemUoKTsK
ICAgICAgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmluaXRpYWxpemUoKTsKICAgICAgICAg
ICAgIFZNOjpjb21wdXRlQ2FuVXNlSklUKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NDb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0NvbmZpZy5oCmluZGV4IGZmYWMyYzZhZGUyNDZhZGQzZTY5MjJkNDdkMzI4NDNjY2Y3MGFh
YTIuLjIxZDc1ZTY1ZDU0MTE4ODRmYmQyYWRiZmE5MjYwYjViZTQ2MDk5ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsMTIgQEAgY2xh
c3MgVk07CiB1c2luZyBKSVRXcml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlvbiA9IHZvaWQgKCopKG9m
Zl90LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgQ1BVKEFSTTY0KSAmJiAhQ1BVKEFSTTY0RSkKK2NvbnN0ZXhwciB1aW50cHRyX3Qg
c3RydWN0dXJlSGVhcEFkZHJlc3NTaXplID0gNTEyICogTUI7CisjZWxzZQorY29uc3RleHByIHVp
bnRwdHJfdCBzdHJ1Y3R1cmVIZWFwQWRkcmVzc1NpemUgPSAxICogR0I7CisjZW5kaWYKKwogc3Ry
dWN0IENvbmZpZyB7CiAgICAgc3RhdGljIENvbmZpZyYgc2luZ2xldG9uKCk7CiAKQEAgLTgyLDYg
Kzg4LDcgQEAgc3RydWN0IENvbmZpZyB7CiAgICAgdm9pZCogc3RhcnRFeGVjdXRhYmxlTWVtb3J5
OwogICAgIHZvaWQqIGVuZEV4ZWN1dGFibGVNZW1vcnk7CiAgICAgdWludHB0cl90IHN0YXJ0T2ZG
aXhlZFdyaXRhYmxlTWVtb3J5UG9vbDsKKyAgICB1aW50cHRyX3Qgc3RhcnRPZlN0cnVjdHVyZUhl
YXA7CiAKICNpZiBFTkFCTEUoU0VQQVJBVEVEX1dYX0hFQVApCiAgICAgSklUV3JpdGVTZXBhcmF0
ZUhlYXBzRnVuY3Rpb24gaml0V3JpdGVTZXBhcmF0ZUhlYXBzOwpAQCAtMTIzLDYgKzEzMCw3IEBA
IGV4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfanNjQ29uZmlnOwogCiBjb25z
dGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnSW5pdGlhbGl6ZUhhc0JlZW5DYWxsZWQgPSBv
ZmZzZXRvZihKU0M6OkNvbmZpZywgaW5pdGlhbGl6ZUhhc0JlZW5DYWxsZWQpOwogY29uc3RleHBy
IHNpemVfdCBvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywg
bGxpbnQuZ2F0ZU1hcCk7Citjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnU3RhcnRP
ZlN0cnVjdHVyZUhlYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgc3RhcnRPZlN0cnVjdHVyZUhl
YXApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCAwNzgyYzg3Zjc0MzU0NWE3YjVlODY0Njg3NzcxMmY5
OTZmNjRjNzc1Li4xODVhY2U3MjdkMTU0N2Y5NmQ4ZmY2NzM5ZDUzNjM0YmEwZWNlYjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIwLDcg
KzMyMCw3IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAog
ICAgICAgICAgICAgb3V0LnByaW50KCIgKCIsIGluQ29udGV4dCgqc3RydWN0dXJlLCBjb250ZXh0
KSwgIikiKTsKICAgICAgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG91dC5wcmlu
dCgiLCBTdHJ1Y3R1cmVJRDogIiwgYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBv
dXQucHJpbnQoIiwgU3RydWN0dXJlSUQ6ICIsIGFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpLmJpdHMo
KSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzVHJ1ZSgpKQogICAgICAgICBvdXQucHJpbnQo
IlRydWUiKTsKQEAgLTM1NywxNSArMzU3LDkgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wRm9yQmFja3Ry
YWNlKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIo
dW5yZXNvbHZlZCBzdHJpbmcpIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYXNDZWxsKCktPmluaGVy
aXRzPFN0cnVjdHVyZT4odm0pKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZVsg
IiwgYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKLSNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgb3V0LnByaW50KCIgSUQ6ICIsIGFzQ2VsbCgpLT5z
dHJ1Y3R1cmVJRCgpKTsKLSNlbmRpZgogICAgICAgICAgICAgb3V0LnByaW50KCJdOiAiLCBSYXdQ
b2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBvdXQucHJp
bnQoIkNlbGxbIiwgYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgb3V0LnByaW50KCIgSUQ6ICIsIGFz
Q2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKLSNlbmRpZgogICAgICAgICAgICAgb3V0LnByaW50KCJd
OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGlz
VHJ1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggYjFj
YTY5Mjc0M2M2YWZkZGFmZjFlYWQzNTc2OTRiNzQ2ZmMwNjRkNS4uNjM5NDI4NjdhMTMwZmU2YzVm
ZTAxOGU3NDRmMTRkNjExOWRiNGMyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgZG91YmxlIEpTQ2VsbDo6dG9OdW1iZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIAogSlNPYmplY3QqIEpTQ2VsbDo6dG9P
YmplY3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlSUQo
KSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHN0cnVjdHVyZUlEKCkpOwogICAg
IEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA5YmIwNmFkMGQ0
Yjg5NjBmZWVkMTU2ZjdkMzVhMTg2YzgzOGM0N2UzLi43Yzg4ODM0MzkyYjAxNjQzYTFjNTg3ODBk
ZGVkOTVmNmM0MjViM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApA
QCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZShWTSYp
IGNvbnN0OwogICAgIHZvaWQgc2V0U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9p
ZCBzZXRTdHJ1Y3R1cmVJRERpcmVjdGx5KFN0cnVjdHVyZUlEIGlkKSB7IG1fc3RydWN0dXJlSUQg
PSBpZDsgfQotICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlSUQgPSAwOyB9
CisgICAgdm9pZCBjbGVhclN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlE
KCk7IH0KIAogICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdzKCkg
Y29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDBiZmMwNTQ3NWFkOTcwNmQ2NGUxMWY5MTFh
YzQ2MGVlODUxZjY5ZmMuLjcxZWNhYThiOWJmMzVlYzcxNTgyMWY2YmEyMjg3YjBkOTQxMzE1MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAg
LTEzMywxMiArMTMzLDEzIEBAIGlubGluZSBJbmRleGluZ1R5cGUgSlNDZWxsOjppbmRleGluZ01v
ZGUoKSBjb25zdAogCiBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUo
KSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUodm0oKSk7CisgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlSUQuZGVjb2RlKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU0NlbGw6
OnN0cnVjdHVyZShWTSYgdm0pIGNvbnN0CisvLyBGSVhNRTogRGVsZXRlIHRoaXMgaW4gYSBjbGVh
bnVwIGZpeHVwLgorQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKFZN
JikgY29uc3QKIHsKLSAgICByZXR1cm4gdm0uZ2V0U3RydWN0dXJlKG1fc3RydWN0dXJlSUQpOwor
ICAgIHJldHVybiBzdHJ1Y3R1cmUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
QEAgLTMwNCw3ICszMDUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1
cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICBBU1NFUlQoc3RydWN0dXJlLT5j
bGFzc0luZm8oKSA9PSB0aGlzLT5zdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSk7CiAgICAgQVNT
RVJUKCF0aGlzLT5zdHJ1Y3R1cmUodm0pCiAgICAgICAgIHx8IHRoaXMtPnN0cnVjdHVyZSh2bSkt
PnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKLSAgICAgICAgfHwg
SGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkp
ID09IHN0cnVjdHVyZSk7CisgICAgICAgIHx8IHN0cnVjdHVyZS0+aWQoKS5kZWNvZGUoKSA9PSBz
dHJ1Y3R1cmUpOwogICAgIG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgbV9m
bGFncyA9IFR5cGVJbmZvOjptZXJnZUlubGluZVR5cGVGbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkuaW5saW5lVHlwZUZsYWdzKCksIG1fZmxhZ3MpOwogICAgIG1fdHlwZSA9IHN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZTM5NzQ1MjEyY2I4NmNmYjA0OTY3MWViNTE4NDQ4ZGFk
NDFkMGQ3NC4uMjhhMjFkYTY2ZTBkZjI4NjZlOThhNjkzNmJlN2Q3MTExOGQxZDFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MjI4NSwxMyArMjI4NSwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eSA6IHRoaXNPYmplY3QtPm1fbGlua1RpbWVDb25zdGFudHMpCiAgICAgICAgIHByb3BlcnR5LnZp
c2l0KHZpc2l0b3IpOwogCi0jZGVmaW5lIFZJU0lUX1NJTVBMRV9UWVBFKENhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNl
LCBmZWF0dXJlRmxhZykgaWYgKGZlYXR1cmVGbGFnKSB7IFwKKyNkZWZpbmUgVklTSVRfU0lNUExF
X1RZUEVfUFJPVE9UWVBFKENhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3Rh
bmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgaWYgKGZlYXR1cmVG
bGFnKSBcCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fICMjIGxvd2VyTmFt
ZSAjIyBQcm90b3R5cGUpOyBcCisKKyNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEVfU1RSVUNUVVJF
KENhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1l
LCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgaWYgKGZlYXR1cmVGbGFnKSBcCiAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJl
KTsgXAotICAgIH0KIAotICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoVklTSVRfU0lN
UExFX1RZUEUpCi0gICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoVklT
SVRfU0lNUExFX1RZUEUpCisgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShWSVNJVF9T
SU1QTEVfVFlQRV9TVFJVQ1RVUkUpCisgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJB
VE9SX1RZUEUoVklTSVRfU0lNUExFX1RZUEVfU1RSVUNUVVJFKQorICAgIEZPUl9FQUNIX1NJTVBM
RV9CVUlMVElOX1RZUEUoVklTSVRfU0lNUExFX1RZUEVfUFJPVE9UWVBFKQorICAgIEZPUl9FQUNI
X0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKFZJU0lUX1NJTVBMRV9UWVBFX1BST1RPVFlQ
RSkKIAogI2RlZmluZSBWSVNJVF9MQVpZX1RZUEUoQ2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJv
cGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFn
KSBpZiAoZmVhdHVyZUZsYWcpIFwKICAgICAgICAgdGhpc09iamVjdC0+bV8gIyMgcHJvcGVyTmFt
ZSAjIyBTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAyZjNhZDc2ZGNhM2UzM2E4ZWM0YmMwNTdl
NzExNjA1MzMyMjVmNjZlLi4xYjFkOWI1NTNjNzQ3MmJlYmI2NzQ4OWQ5MmM3N2EzZDkzNjk2ZDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTM3OSwyMCArMzc5LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3Rp
dmF0aW9uU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVu
dmlyb25tZW50U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fY2xvbmVkQXJndW1lbnRzU3RydWN0dXJlOwotCi0gICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcjsKLSAgICAg
ICAgCi0gICAgLy8gTGlzdHMgdGhlIGFjdHVhbCBzdHJ1Y3R1cmVzIHVzZWQgZm9yIGhhdmluZyB0
aGVzZSBwYXJ0aWN1bGFyIGluZGV4aW5nIHNoYXBlcy4KLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX29yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlW051bWJlck9mQXJy
YXlJbmRleGluZ01vZGVzXTsKLSAgICAvLyBMaXN0cyB0aGUgc3RydWN0dXJlcyB3ZSBzaG91bGQg
dXNlIGR1cmluZyBhbGxvY2F0aW9uIGZvciB0aGVzZSBwYXJ0aWN1bGFyIGluZGV4aW5nIHNoYXBl
cy4KLSAgICAvLyBUaGVzZSBzdHJ1Y3R1cmVzIHdpbGwgZGlmZmVyIGZyb20gdGhlIG9yaWdpbmFs
cyBsaXN0IGFib3ZlIHdoZW4gd2UgYXJlIGhhdmluZyBhIGJhZCB0aW1lLgotICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxs
b2NhdGlvbltOdW1iZXJPZkFycmF5SW5kZXhpbmdNb2Rlc107Ci0KICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmU7CkBAIC00MDQsNDIgKzM5MSw1NyBAQCBw
dWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZ2xp
YkNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fZ2xpYldyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CiAjZW5kaWYKLSAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmU7
Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAKLSAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2hvc3RGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBXcml0
ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBX
cml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKKyAgICBX
cml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKKyAgICBX
cml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2Nsb25lZEFyZ3VtZW50c1N0cnVjdHVyZTsKKworICAg
IFdyaXRlQmFycmllclN0cnVjdHVyZUlEIG1fb2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3Ry
dWN0b3I7CisKKyAgICAvLyBMaXN0cyB0aGUgYWN0dWFsIHN0cnVjdHVyZXMgdXNlZCBmb3IgaGF2
aW5nIHRoZXNlIHBhcnRpY3VsYXIgaW5kZXhpbmcgc2hhcGVzLgorICAgIFdyaXRlQmFycmllclN0
cnVjdHVyZUlEIG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbTnVtYmVy
T2ZBcnJheUluZGV4aW5nTW9kZXNdOworICAgIC8vIExpc3RzIHRoZSBzdHJ1Y3R1cmVzIHdlIHNo
b3VsZCB1c2UgZHVyaW5nIGFsbG9jYXRpb24gZm9yIHRoZXNlIHBhcnRpY3VsYXIgaW5kZXhpbmcg
c2hhcGVzLgorICAgIC8vIFRoZXNlIHN0cnVjdHVyZXMgd2lsbCBkaWZmZXIgZnJvbSB0aGUgb3Jp
Z2luYWxzIGxpc3QgYWJvdmUgd2hlbiB3ZSBhcmUgaGF2aW5nIGEgYmFkIHRpbWUuCisgICAgV3Jp
dGVCYXJyaWVyU3RydWN0dXJlSUQgbV9hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVEdXJp
bmdBbGxvY2F0aW9uW051bWJlck9mQXJyYXlJbmRleGluZ01vZGVzXTsKKworICAgIFdyaXRlQmFy
cmllclN0cnVjdHVyZUlEIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsKKyAgICBXcml0
ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2NhbGxlZVN0cnVjdHVyZTsKKworICAgIFdyaXRlQmFycmll
clN0cnVjdHVyZUlEIG1faG9zdEZ1bmN0aW9uU3RydWN0dXJlOwogCiAgICAgc3RydWN0IEZ1bmN0
aW9uU3RydWN0dXJlcyB7Ci0gICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IGFycm93RnVu
Y3Rpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IHNsb3BweUZ1
bmN0aW9uU3RydWN0dXJlOwotICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBzdHJpY3RG
dW5jdGlvblN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQgYXJyb3dG
dW5jdGlvblN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQgc2xvcHB5
RnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllclN0cnVjdHVyZUlEIHN0cmlj
dEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIH07CiAgICAgRnVuY3Rpb25TdHJ1Y3R1cmVzIG1fYnVp
bHRpbkZ1bmN0aW9uczsKICAgICBGdW5jdGlvblN0cnVjdHVyZXMgbV9vcmRpbmFyeUZ1bmN0aW9u
czsKIAorICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgIFdyaXRl
QmFycmllclN0cnVjdHVyZUlEIG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyU3RydWN0dXJlSUQgbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllclN0
cnVjdHVyZUlEIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBXcml0ZUJh
cnJpZXJTdHJ1Y3R1cmVJRCBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllclN0cnVjdHVyZUlEIG1fZ2VuZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
clN0cnVjdHVyZUlEIG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQgbV9hcnJheUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllclN0
cnVjdHVyZUlEIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyU3RydWN0
dXJlSUQgbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJ
RCBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1
cmVJRCBtX3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhJbmRpY2VzU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllclN0cnVjdHVyZUlEIG1fcmVnRXhwTWF0Y2hlc0luZGljZXNBcnJheVN0cnVjdHVyZTsK
KwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2JvdW5kRnVu
Y3Rpb25TdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1fY3VzdG9tR2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmU7
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZz
ZXQ7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVj
dHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8QXN5bmNGdW5jdGlvblByb3RvdHlwZT4gbV9hc3luY0Z1bmN0aW9uUHJv
dG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
PiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwotICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9hcnJheUl0ZXJhdG9yU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRhUHJvcGVydHlEZXNjcmlw
dG9yT2JqZWN0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlOwotICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwot
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGlj
ZXNTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVz
SW5kaWNlc0FycmF5U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlPYmpl
Y3RTdHJ1Y3R1cmU7CkBAIC00NDcsMTUgKzQ0OSwxOSBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7CiAg
ICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAKLSNk
ZWZpbmUgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5h
bWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0
dXJlRmxhZykgXAotICAgIFdyaXRlQmFycmllcjxjYXBpdGFsTmFtZSAjIyBQcm90b3R5cGU+IG1f
ICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGU7IFwKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZTsKKyNkZWZpbmUgREVGSU5FX1NUT1JBR0Vf
Rk9SX1NJTVBMRV9UWVBFX1BST1RPVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJO
YW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIFwK
KyAgICBXcml0ZUJhcnJpZXI8Y2FwaXRhbE5hbWUgIyMgUHJvdG90eXBlPiBtXyAjIyBsb3dlck5h
bWUgIyMgUHJvdG90eXBlOworCisjZGVmaW5lIERFRklORV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQ
RV9TVFJVQ1RVUkUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VU
eXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBcCisgICAgV3JpdGVCYXJy
aWVyU3RydWN0dXJlSUQgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmU7CiAKICNkZWZpbmUg
REVGSU5FX1NUT1JBR0VfRk9SX0xBWllfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9w
ZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcp
IFwKICAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmU7
CiAKLSAgICBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFKERFRklORV9TVE9SQUdFX0ZPUl9T
SU1QTEVfVFlQRSkKLSAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShE
RUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEUpCisgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxU
SU5fVFlQRShERUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEVfU1RSVUNUVVJFKQorICAgIEZP
Ul9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKERFRklORV9TVE9SQUdFX0ZPUl9T
SU1QTEVfVFlQRV9TVFJVQ1RVUkUpCisgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShE
RUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEVfUFJPVE9UWVBFKQorICAgIEZPUl9FQUNIX0JV
SUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKERFRklORV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQ
RV9QUk9UT1RZUEUpCiAgICAgCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
U3RydWN0dXJlOwpAQCAtNDY3LDcgKzQ3Myw4IEBAIHB1YmxpYzoKIAogICAgIEZPUl9FQUNIX0xB
WllfQlVJTFRJTl9UWVBFKERFRklORV9TVE9SQUdFX0ZPUl9MQVpZX1RZUEUpCiAKLSN1bmRlZiBE
RUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEUKKyN1bmRlZiBERUZJTkVfU1RPUkFHRV9GT1Jf
U0lNUExFX1RZUEVfUFJPVE9UWVBFCisjdW5kZWYgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9U
WVBFX1NUUlVDVFVSRQogI3VuZGVmIERFRklORV9TVE9SQUdFX0ZPUl9MQVpZX1RZUEUKIAogICAg
IFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fc3BlY2llc0dldHRlclNldHRlcjsKQEAgLTU3
Nyw2ICs1ODQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG1fZXZhbEVuYWJsZWQgeyB0cnVlIH07
CiAgICAgYm9vbCBtX3dlYkFzc2VtYmx5RW5hYmxlZCB7IHRydWUgfTsKKyAgICBib29sIG1fbmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fZ2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaCB7IDEgfTsKICAgICBTdHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1l
c3NhZ2U7CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKQEAg
LTEyMDMsNyArMTIxMSw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBjbGVhclJhcmVEYXRhKEpTQ2VsbCopOwogCi0gICAgYm9vbCBtX25lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzIHsgZmFsc2UgfTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFJl
dGFpblB0cjxKU1dyYXBwZXJNYXA+IG1fd3JhcHBlck1hcDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDI4ZTcyZWUzN2QzMjhkODkzZTRk
ZWQ4NTQ2M2VkNWJkMmYzYWI5OTkuLmQ1NDRhNDNiYTE5ZWEzMjdmYmQyODE1YWRjN2FmMzQxNmM1
NjFhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTM2OSw5ICszNjksOSBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNPYmplY3Q6OnZpc2l0
QnV0dGVyZmx5SW1wbChWaXNpdG9yJiB2aXNpdG9yKQogICAgIC8vIGh0dHBzOi8vcGRmcy5zZW1h
bnRpY3NjaG9sYXIub3JnLzM0M2YvNzE4MmNkZTc2NjljYTJhN2RlM2RjMDExMjc5MjdmMzg0ZWY3
LnBkZgogICAgIAogICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJl
SUQoKTsKLSAgICBpZiAoaXNOdWtlZChzdHJ1Y3R1cmVJRCkpCisgICAgaWYgKHN0cnVjdHVyZUlE
LmlzTnVrZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3RydWN0dXJlID0gdm0u
Z2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKKyAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5k
ZWNvZGUoKTsKICAgICBtYXhPZmZzZXQgPSBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpOwogICAgIElu
ZGV4aW5nVHlwZSBpbmRleGluZ01vZGU7CiAgICAgRGVwZW5kZW5jeSBpbmRleGluZ01vZGVEZXBl
bmRlbmN5ID0gc3RydWN0dXJlLT5mZW5jZWRJbmRleGluZ01vZGUoaW5kZXhpbmdNb2RlKTsKQEAg
LTExNjksNyArMTE2OSw3IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRl
Y2lkZWQoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtKTsK
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFn
ZSh2bSwgbGVuZ3RoKTsKICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IHRoaXMtPnN0
cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1
cmUob2xkU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gb2xkU3Ry
dWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCBUcmFuc2l0aW9uS2lu
ZDo6QWxsb2NhdGVVbmRlY2lkZWQpOwogICAgIG51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHko
dm0sIG9sZFN0cnVjdHVyZUlELCBuZXdCdXR0ZXJmbHkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwg
bmV3U3RydWN0dXJlKTsKQEAgLTExODMsNyArMTE4Myw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBK
U09iamVjdDo6Y3JlYXRlSW5pdGlhbEludDMyKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IGZvciAodW5zaWduZWQgaSA9IG5ld0J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAg
ICAgICAgIG5ld0J1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoSlNWYWx1ZSgpKTsKICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9
IHRoaXMtPnN0cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5n
ZXRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
ID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCBUcmFu
c2l0aW9uS2luZDo6QWxsb2NhdGVJbnQzMik7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRl
cmZseSh2bSwgb2xkU3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgc2V0U3RydWN0dXJl
KHZtLCBuZXdTdHJ1Y3R1cmUpOwpAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgQ29udGlndW91c0RvdWJs
ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxEb3VibGUoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgp
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0t
OykKICAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkg
PSBQTmFOOwogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJl
SUQoKTsKLSAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShvbGRT
dHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmVJ
RC5kZWNvZGUoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9u
UHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIFRyYW5zaXRpb25LaW5kOjpBbGxv
Y2F0ZURvdWJsZSk7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgb2xkU3Ry
dWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1
cmUpOwpAQCAtMTIxMSw3ICsxMjExLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpj
cmVhdGVJbml0aWFsQ29udGlndW91cyhWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQogICAgICAg
ICBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKEpTVmFsdWUoKSk7CiAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSB0aGlz
LT5zdHJ1Y3R1cmVJRCgpOwotICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gdm0uZ2V0U3Ry
dWN0dXJlKG9sZFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG9s
ZFN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgVHJhbnNpdGlv
bktpbmQ6OkFsbG9jYXRlQ29udGlndW91cyk7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRl
cmZseSh2bSwgb2xkU3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgc2V0U3RydWN0dXJl
KHZtLCBuZXdTdHJ1Y3R1cmUpOwpAQCAtMTI0MSw3ICsxMjQxLDcgQEAgQXJyYXlTdG9yYWdlKiBK
U09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCB2ZWMKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0pOwogICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBJbmRleGluZ1R5
cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwg
IWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKIApAQCAtMTMzMSw3ICsxMzMxLDcgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZN
JiB2bSwgVHJhbnNpdGlvbktpbmQgdHIKICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0
V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOwogICAgIAogICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRT
dHJ1Y3R1cmUsIHRyYW5zaXRpb24pOwogICAgIG51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHko
dm0sIG9sZFN0cnVjdHVyZUlELCBzdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgc2V0U3RydWN0
dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOwpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgQXJyYXlTdG9yYWdl
KiBKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBUcmFuc2l0aW9u
S2luZCB0cmFuc2kKICAgICB9CiAgICAgCiAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQg
PSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwotICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gdm0u
Z2V0U3RydWN0dXJlKG9sZFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IG9sZFN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgdHJh
bnNpdGlvbik7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgb2xkU3RydWN0
dXJlSUQsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5l
d1N0cnVjdHVyZSk7CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0
Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBUcmFuc2l0aW9uS2luZCB0cmFu
cwogICAgIH0KICAgICAKICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IHRoaXMtPnN0
cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1
cmUob2xkU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gb2xkU3Ry
dWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCB0cmFuc2l0aW9uKTsK
ICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1Y3R1cmVJRCwgbmV3
U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJl
KTsKQEAgLTE1MjIsNyArMTUyMiw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRD
b250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBUcmFuc2l0aW9uS2luZCB0CiAKICAgICBB
U1NFUlQobmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkgIT0gYnV0dGVyZmx5KTsKICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IHRoaXMtPnN0cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlSUQpOworICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgb2xkU3RydWN0dXJlLCB0cmFuc2l0aW9uKTsKIAogICAgIC8vIEVuc3VyZSBuZXcgQnV0dGVy
Zmx5IGluaXRpYWxpemF0aW9uIGlzIGNvcnJlY3RseSBkb25lIGJlZm9yZSBleHBvc2luZyBpdCB0
byB0aGUgY29uY3VycmVudCB0aHJlYWRzLgpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0Q3VzdG9tR2V0dGVyU2V0dGVyV2l0aG91dFRyYW5zaXRpb24oVk0mIHZt
LCBQcm9wZXJ0eU5hbWUKICAgICBBU1NFUlQoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpOwogCiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQg
PSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHN0cnVjdHVyZUlELCBzdHJ1Y3R1cmUpOwogICAgIHB1dERpcmVjdCh2bSwg
b2Zmc2V0LCB2YWx1ZSk7CiAKQEAgLTIwNTEsNyArMjA1MSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5
TmFtZSBwCiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IpOwogICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQo
KTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmdldChzdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJ
RC5kZWNvZGUoKTsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwcmVwYXJlVG9QdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzdHJ1Y3R1
cmVJRCwgc3RydWN0dXJlKTsKICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgYWNjZXNzb3IpOwog
ICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNTFiMTMwMzFlNjIxNDZmNTI0
YmUxZTc3YTk5MWRlYTE4MjIxY2FlZi4uZDMzYjcyMjg2NGE4ODdjNjNmNDdjOTQwNDM5MGRmNTBh
MDA1NjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0x
MzY3LDcgKzEzNjcsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0QnV0dGVyZmx5KFZNJiB2
bSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6bnVrZVN0cnVj
dHVyZUFuZFNldEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlELCBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKICAgICBpZiAoaXNYODYoKSB8fCB2bS5oZWFwLm11dGF0
b3JTaG91bGRCZUZlbmNlZCgpKSB7Ci0gICAgICAgIHNldFN0cnVjdHVyZUlERGlyZWN0bHkobnVr
ZShvbGRTdHJ1Y3R1cmVJRCkpOworICAgICAgICBzZXRTdHJ1Y3R1cmVJRERpcmVjdGx5KG9sZFN0
cnVjdHVyZUlELm51a2UoKSk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAg
ICAgIG1fYnV0dGVyZmx5LnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsKICAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKQEAgLTE1MDAsNyArMTUwMCw2IEBAIHRlbXBsYXRlPGJvb2wgY2hl
Y2tOdWxsU3RydWN0dXJlPgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURU
YWJsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIGlmIChVTkxJS0VMWShUeXBlSW5mbzo6b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewpAQCAtMTUxNSwxMCArMTUxNCwxMCBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0
Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICB9CiAgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAhPSBQcm94eU9iamVjdFR5
cGUpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0
KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
b2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLmRlY29kZSgpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIGlmIChjaGVja051bGxTdHJ1Y3R1cmUgJiYgVU5MSUtFTFkoIXN0cnVjdHVyZSkpCi0gICAg
ICAgICAgICBDUkFTSF9XSVRIX0lORk8ob2JqZWN0LT50eXBlKCksIG9iamVjdC0+c3RydWN0dXJl
SUQoKSwgc3RydWN0dXJlSURUYWJsZS5zaXplKCkpOworICAgICAgICAgICAgQ1JBU0hfV0lUSF9J
TkZPKG9iamVjdC0+dHlwZSgpLCBvYmplY3QtPnN0cnVjdHVyZUlEKCkuYml0cygpKTsKICNlbmRp
ZgogICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4
IDJjMjdlZDNhN2JlMWQyYWJkMDVlYmIwMDc0YTg0NTE3NjBmMDkyZGQuLjgzNDk0MjJkOGI0YTQy
NDdhN2UxMTIxZTQ2N2JlNzlhYTk0MTlkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0xMTAsMTAgKzExMCw5IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgc3RydWN0
dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOwogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZUlEKCkuZGVjb2Rl
KCk7CiAgICAgICAgIGJvb2wgaGFzU2xvdCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhv
ZFRhYmxlLmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKICAgICAgICAgaWYgKGhhc1Nsb3QpCkBAIC0xNTEsMTAgKzE1MCw5IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBzdHJ1Y3R1
cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlSUQoKS5kZWNvZGUo
KTsKICAgICAgICAgaWYgKExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkpIHsKICAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTksNyArMjE3LDcg
QEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0
dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSk7CiAg
ICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKICAgICBTdHJ1Y3R1cmVJ
RCBzdHJ1Y3R1cmVJRCA9IHRoaXMtPnN0cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gcHJlcGFyZVRvUHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3RydWN0dXJlSUQsIHN0cnVjdHVyZSk7CiAgICAg
cHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkKQEAgLTMyOCw3ICszMjYsNyBAQCBBTFdBWVNfSU5MSU5F
IEFTQ0lJTGl0ZXJhbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcAogICAgIEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKIAogICAg
IFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsKLSAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1
cmVJRCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsK
ICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICBBU1NFUlQoIWlz
Q29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cAppbmRleCBmMWFjNDczNmVjYjgxNTczYTA5ZGEzYjg1NWIxNDkxYzI2MTE2MGM1Li42ZWUzMjBm
N2UzZDkwOWI2Y2QwZTM3OTM2MWRhMGFhMGU4NzU3YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3QKIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgsIHVpbnQzMl90IG51bWJlclN0cnVjdHVy
ZVByb3BlcnRpZXMsIFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3BlcnR5TmFtZXNCdWZmZXIs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZXNTaXplKQogICAgIDogSlNDZWxsKHZtLCB2bS5wcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yU3RydWN0dXJlLmdldCgpKQogICAgICwgbV9wcm9wZXJ0eU5hbWVzKHZt
LCB0aGlzLCBwcm9wZXJ0eU5hbWVzQnVmZmVyKQotICAgICwgbV9jYWNoZWRTdHJ1Y3R1cmVJRChz
dHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmlkKCkgOiAwKQorICAgICwgbV9jYWNoZWRTdHJ1Y3R1cmVJ
RCh2bSwgdGhpcywgc3RydWN0dXJlLCBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6TWF5QmVOdWxs
KQogICAgICwgbV9pbmRleGVkTGVuZ3RoKGluZGV4ZWRMZW5ndGgpCiAgICAgLCBtX2VuZFN0cnVj
dHVyZVByb3BlcnR5SW5kZXgobnVtYmVyU3RydWN0dXJlUHJvcGVydGllcykKICAgICAsIG1fZW5k
R2VuZXJpY1Byb3BlcnR5SW5kZXgocHJvcGVydHlOYW1lc1NpemUpCkBAIC04NiwxMSArODYsNyBA
QCB2b2lkIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxs
KiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnko
cHJvcGVydHlOYW1lcyk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHByb3BlcnR5TmFtZXMsIHBy
b3BlcnR5TmFtZXMgKyB0aGlzT2JqZWN0LT5zaXplT2ZQcm9wZXJ0eU5hbWVzKCkpOwogICAgIH0K
LQotICAgIGlmICh0aGlzT2JqZWN0LT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKSB7Ci0gICAgICAgIFZN
JiB2bSA9IHZpc2l0b3Iudm0oKTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh2
bS5nZXRTdHJ1Y3R1cmUodGhpc09iamVjdC0+Y2FjaGVkU3RydWN0dXJlSUQoKSkpOwotICAgIH0K
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhY2hlZFN0cnVjdHVyZUlEKTsKIH0K
IAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oCmluZGV4IDNmNWM3ZjM2ZTk0MmM4YmJjNGIzNDU1MjQyOTRlNzgxMmE0ODk5ZDcu
LjZkNmFlODdiOGIzOGM0MGNlMjU2M2I4MzU2YmIwNGI0NWMzZDM0YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCkBAIC03MiwxMSArNzIsMTAgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBjYWNoZWRT
dHJ1Y3R1cmUoVk0mIHZtKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX2NhY2hlZFN0cnVj
dHVyZUlEKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9jYWNoZWRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
IFVOVVNFRF9QQVJBTSh2bSk7CisgICAgICAgIHJldHVybiBtX2NhY2hlZFN0cnVjdHVyZUlELmdl
dCgpOwogICAgIH0KLSAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkU3RydWN0dXJlSUQ7IH0KKyAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1
Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU3RydWN0dXJlSUQudmFsdWUoKTsgfQog
ICAgIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWRMZW5n
dGg7IH0KICAgICB1aW50MzJfdCBlbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4OyB9CiAgICAgdWludDMyX3QgZW5kR2Vu
ZXJpY1Byb3BlcnR5SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2VuZEdlbmVyaWNQcm9wZXJ0eUlu
ZGV4OyB9CkBAIC0xMDcsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IgaXMgaW1tdXRhYmxlIGRhdGEgc3RydWN0dXJlLCB3aGljaCBhbGxvd3MgVk0g
dG8gY2FjaGUgdGhlIGVtcHR5IG9uZS4KICAgICAvLyBBZnRlciBpbnN0YW50aWF0aW5nIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciwgd2UgbXVzdCBub3QgY2hhbmdlIGFueSBmaWVsZHMuCiAgICAg
QXV4aWxpYXJ5QmFycmllcjxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4gbV9wcm9wZXJ0eU5hbWVz
OwotICAgIFN0cnVjdHVyZUlEIG1fY2FjaGVkU3RydWN0dXJlSUQ7CisgICAgV3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQgbV9jYWNoZWRTdHJ1Y3R1cmVJRDsKICAgICB1aW50MzJfdCBtX2luZGV4ZWRM
ZW5ndGg7CiAgICAgdWludDMyX3QgbV9lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4OwogICAgIHVp
bnQzMl90IG1fZW5kR2VuZXJpY1Byb3BlcnR5SW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCA5MmNjZWZiM2Y4Y2M3ZTUx
M2NjNjQxOGE1OTE0ZjkzN2E0NzA2NDZlLi44ODg1OTFkZGMwNmZmYWNhZDJmMGEwOTczYmYwMjU1
NGQ2NTE4MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9v
bCB0b1RoaXNOdW1iZXIoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgZG91YmxlJiB4KQogICAg
IH0KIAogICAgIGlmIChhdXRvKiBudW1iZXJPYmplY3QgPSBqc0R5bmFtaWNDYXN0PE51bWJlck9i
amVjdCo+KHZtLCB0aGlzVmFsdWUpKSB7Ci0gICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1
cmVJRCh2bSwgbnVtYmVyT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgSW50ZWdyaXR5
OjphdWRpdFN0cnVjdHVyZUlEKG51bWJlck9iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAg
IHggPSBudW1iZXJPYmplY3QtPmludGVybmFsVmFsdWUoKS5hc051bWJlcigpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCA3MDRlZDZkMGQ5ZTBhNDM5ZWM0YTVhMWQ4MDY5NDIz
MzEzNjUzY2Y2Li45NWJiYTNjYjMyMGVhNWM3MGY5ODA0M2ZlMGQyNjcwMTc3M2EwZTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVu
Y1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTT2JqZWN0KiB2
YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJ
S0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAgICBJ
bnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoZ2xvYmFsT2JqZWN0LT52bSgpLCB2YWx1ZU9iai0+
c3RydWN0dXJlSUQoKSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZhbHVlT2Jq
LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlT2JqKTsK
IH0KIApAQCAtMzYxLDcgKzM2MSw3IEBAIEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVUb1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIEludGVncml0eTo6
YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CisgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAg
IGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+Y2FjaGVkU3BlY2lhbFBy
b3BlcnR5KENhY2hlZFNwZWNpYWxQcm9wZXJ0eUtleTo6VG9TdHJpbmdUYWcpOwogICAgIGlmIChy
ZXN1bHQpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyhyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggZmM1ZDk1YjNh
N2NhMmUxNzM1ZTE4ZDMxMTg4ZTgwNTllNTRjNTBhNi4uNTgyNGE0MmMzYjZhMTU3M2YwMDE2NTVh
NjkyZDY3OWZkZmEwMDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7
Ci0gICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodGhpc09iamVjdC0+c3Ry
dWN0dXJlSUQoKSk7CiAKICAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFs
T2JqZWN0LCB0aGlzT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCBlMDE5ZTk3YjcyZjI3
Zjg3NWM5YzkyYmFmMWMzMWFiYjNlMzZhYjQwLi5mM2IzODNkY2JhNDI1M2E0YWM5MjU1ODRkMTli
YzgwNzZiOTRhNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTk2MCw3ICs5NjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgIC8vIEFsc28gdXNlZCBmb3IgdmFsdWVPZi4KIAogICAgIGlmICh0aGlzVmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRo
aXNWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgIEludGVncml0eTo6YXVk
aXRTdHJ1Y3R1cmVJRCh0aGlzVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiAgICAgfQogCkBAIC05NjgsNyAr
OTY4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoIXN0cmluZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAK
LSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHN0cmluZ09iamVjdC0+c3RydWN0
dXJlSUQoKSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHN0cmluZ09iamVjdC0+
c3RydWN0dXJlSUQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdPYmplY3Qt
PmludGVybmFsVmFsdWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDBiMDNmMzEwMTA2NTJjNTk2ZmQwODBiOWU0NWRlYzU4MzVlNDYz
MzUuLmI2MGUzY2IwZTNiZjU2Mzg3MzJmODVjMGRjYjA3YzM5NmQzZmQ2OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IGlubGluZSB2b2lkIFN0cnVjdHVyZTo6dmFsaWRhdGVGbGFncygpIHsgfQogCiBTdHJ1Y3R1cmU6
OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSkKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKQotICAgICwg
bV9ibG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcyksIGluZGV4
aW5nVHlwZSwgdHlwZUluZm8pCisgICAgLCBtX2Jsb2IoU3RydWN0dXJlSUQ6OmVuY29kZSh0aGlz
KSwgaW5kZXhpbmdUeXBlLCB0eXBlSW5mbykKICAgICAsIG1fb3V0T2ZMaW5lVHlwZUZsYWdzKHR5
cGVJbmZvLm91dE9mTGluZVR5cGVGbGFncygpKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxp
bmVDYXBhY2l0eSkKICAgICAsIG1fYml0RmllbGQoMCkKQEAgLTI2NCw3ICsyNjQsNyBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHNldE1h
eE9mZnNldCh2bSwgaW52YWxpZE9mZnNldCk7CiAgCiAgICAgVHlwZUluZm8gdHlwZUluZm8gPSBU
eXBlSW5mbyhTdHJ1Y3R1cmVUeXBlLCBTdHJ1Y3R1cmVGbGFncyk7Ci0gICAgbV9ibG9iID0gU3Ry
dWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcyks
IDAsIHR5cGVJbmZvKTsKKyAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2IoU3RydWN0dXJlSUQ6
OmVuY29kZSh0aGlzKSwgMCwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0g
dHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQoaGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8ICFtX2NsYXNzSW5mby0+
aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMoKSk7CkBAIC0zMDEsNyArMzAxLDcg
QEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXQKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRP
ZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gcHJldmlvdXMtPnR5cGVJbmZvKCk7
Ci0gICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmFsbG9jYXRlSUQodGhpcyksIHByZXZpb3VzLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5
KCksIHR5cGVJbmZvKTsKKyAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2IoU3RydWN0dXJlSUQ6
OmVuY29kZSh0aGlzKSwgcHJldmlvdXMtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSwg
dHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gdHlwZUluZm8ub3V0T2ZMaW5l
VHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQoIXByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVy
ZUlzSW1tb3J0YWwoKSk7CkBAIC0zMjYsNyArMzI2LDYgQEAgU3RydWN0dXJlOjp+U3RydWN0dXJl
KCkKIAogICAgIGlmIChpc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8
QnJhbmRlZFN0cnVjdHVyZSo+KHRoaXMpLT5kZXN0cnVjdCgpOwotICAgIEhlYXA6OmhlYXAodGhp
cyktPnN0cnVjdHVyZUlEVGFibGUoKS5kZWFsbG9jYXRlSUQodGhpcywgbV9ibG9iLnN0cnVjdHVy
ZUlEKCkpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC05
MTAsNyArOTA5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAKICAgICBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywgdm0pOwogICAgIAotICAgIG9iamVjdC0+c2V0U3Ry
dWN0dXJlSUREaXJlY3RseShudWtlKGlkKCkpKTsKKyAgICBvYmplY3QtPnNldFN0cnVjdHVyZUlE
RGlyZWN0bHkoaWQoKS5udWtlKCkpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAKICAg
ICBzaXplX3QgYmVmb3JlT3V0T2ZMaW5lQ2FwYWNpdHkgPSB0aGlzLT5vdXRPZkxpbmVDYXBhY2l0
eSgpOwpAQCAtMTM3MCw3ICsxMzY5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6
OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAogdm9p
ZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBhdXRvKiBz
dHJ1Y3R1cmVJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpOworICAgIGF1dG8qIHN0
cnVjdHVyZUlEID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWQoKS5iaXRzKCkpOwogICAgIG91
dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHN0cnVjdHVyZUlEKSwK
ICAgICAgICAgIi8iLCAodWludDMyX3QpKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdHJ1
Y3R1cmVJRCkpLCAiLCAiLAogICAgICAgICBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCAoIiwg
aW5saW5lU2l6ZSgpLCAiLyIsIGlubGluZUNhcGFjaXR5KCksICIsICIsCkBAIC0xNDcwLDcgKzE0
NjksNyBAQCB1aW50cHRyX3QgU3RydWN0dXJlOjpjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
QW5kRmxhZygpIGNvbnN0CiAgICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZFByb3BlcnR5TmFt
ZUVudW1lcmF0b3JBbmRGbGFnKCk7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZVByb3Bl
cnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hl
UHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYpIGNvbnN0CiB7CiAgICAgaWYgKCF0aGlzLT5jYW5D
YWNoZU93blByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ4Miw3
ICsxNDgxLDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRv
cihWTSYgdm0pIGNvbnN0CiAgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gKmN1cnJl
bnRTdHJ1Y3R1cmVJRDsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVy
ZShzdHJ1Y3R1cmVJRCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJl
SUQuZGVjb2RlKCk7CiAgICAgICAgIGlmICghc3RydWN0dXJlLT5jYW5DYWNoZU93blByb3BlcnR5
TmFtZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY3VycmVudFN0cnVj
dHVyZUlEKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4
IDM3YTc1YjU1NzBiZTI2ZDYwZjYzMGQ5ODE3NGRkMTk5MjY1ZDNiZDUuLjcwNDU3OTY2ZTJhNDg5
MTdjMzJhMTY5ZjYwZGQ1NmI4NWVkOTg4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgogCiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzID0gMDsKICAgICAK
ICAgICBlbnVtIFBvbHlQcm90b1RhZyB7IFBvbHlQcm90byB9OwogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVu
c2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CkBAIC0xNjQsNyArMTY1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHZhbGlkYXRlRmxhZ3MoKTsKIAogcHVibGljOgotICAgIFN0cnVjdHVyZUlEIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLnN0cnVjdHVyZUlEKCk7IH0KKyAgICBTdHJ1Y3R1cmVJ
RCBpZCgpIGNvbnN0IHsgQVNTRVJUKG1fYmxvYi5zdHJ1Y3R1cmVJRCgpID09IFN0cnVjdHVyZUlE
OjplbmNvZGUodGhpcykpOyByZXR1cm4gbV9ibG9iLnN0cnVjdHVyZUlEKCk7IH0KICAgICBpbnQz
Ml90IG9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5ibG9i
RXhjbHVkaW5nU3RydWN0dXJlSUQoKTsgfQogICAgIGludDY0X3QgaWRCbG9iKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKaW5kZXggYTQ5ODYyYTY3YjdhYmYyZWMyMGFhMTBkY2Mw
MGUxMWU1ZTEyNTAyZS4uY2E2MGEyZmJmOWIwZWMyZjU2ZDUyOWM2ZTAwZjJmZTIzNGIzMmRjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cApAQCAtNDksNiArNDksNyBAQCBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hhaW46OmNyZWF0
ZShWTSYgdm0sIEpTT2JqZWN0KiBoZWFkKQogICAgICsrc2l6ZTsgLy8gU2VudGluZWwgbnVsbHB0
ci4KICAgICBzaXplX3QgYnl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3Ry
dWN0dXJlSUQpOwogICAgIHZvaWQqIHZlY3RvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlKCkuYWxsb2NhdGUodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OkFzc2VydCk7CisgICAgc3RhdGljX2Fzc2VydCghU3RydWN0dXJlSUQoKS5iaXRzKCksICJN
YWtlIHN1cmUgdGhlIHZhbHVlIHdlJ3JlIGdvaW5nIHRvIG1lbWNweSBiZWxvdyBtYXRjaGVzIHRo
ZSBkZWZhdWx0IFN0cnVjdHVyZUlEIik7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwgYnl0ZXMpOwog
ICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0
cnVjdHVyZUNoYWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0
cnVjdHVyZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2ZWN0b3IpKTsKICAgICBj
aGFpbi0+ZmluaXNoQ3JlYXRpb24odm0sIGhlYWQpOwpAQCAtNzMsMTAgKzc0LDkgQEAgdm9pZCBT
dHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2
aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZp
c2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2JqZWN0LT5tX3ZlY3Rvci5nZXQoKSk7Ci0gICAgVk0m
IHZtID0gdmlzaXRvci52bSgpOwogICAgIGZvciAoYXV0byogY3VycmVudCA9IHRoaXNPYmplY3Qt
Pm1fdmVjdG9yLmdldCgpOyAqY3VycmVudDsgKytjdXJyZW50KSB7CiAgICAgICAgIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEID0gKmN1cnJlbnQ7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdm0uZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChzdHJ1Y3R1cmUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlELmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YWUzYWQ2YjI0N2QyZWRlNmZjZjFiYTQ2
YTNkYjI4OGE5N2Q5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRC5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgU3RydWN0dXJlOworCitjb25zdGV4cHIgQ1BVUmVnaXN0ZXIgc3RydWN0
dXJlSURNYXNrID0gc3RydWN0dXJlSGVhcEFkZHJlc3NTaXplIC0gMTsKKworY2xhc3MgU3RydWN0
dXJlSUQgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVrZWRTdHJ1
Y3R1cmVJREJpdCA9IDE7CisKKyAgICBTdHJ1Y3R1cmVJRCgpID0gZGVmYXVsdDsKKyAgICBTdHJ1
Y3R1cmVJRChTdHJ1Y3R1cmVJRCBjb25zdCYpID0gZGVmYXVsdDsKKyAgICBTdHJ1Y3R1cmVJRCYg
b3BlcmF0b3I9KFN0cnVjdHVyZUlEIGNvbnN0JikgPSBkZWZhdWx0OworCisgICAgU3RydWN0dXJl
SUQgbnVrZSgpIGNvbnN0IHsgcmV0dXJuIFN0cnVjdHVyZUlEKG1fYml0cyB8IG51a2VkU3RydWN0
dXJlSURCaXQpOyB9CisgICAgYm9vbCBpc051a2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
bnVrZWRTdHJ1Y3R1cmVJREJpdDsgfQorICAgIFN0cnVjdHVyZUlEIGRlY29udGFtaW5hdGUoKSBj
b25zdCB7IHJldHVybiBTdHJ1Y3R1cmVJRChtX2JpdHMgJiB+bnVrZWRTdHJ1Y3R1cmVJREJpdCk7
IH0KKworICAgIGlubGluZSBTdHJ1Y3R1cmUqIGRlY29kZSgpIGNvbnN0OworICAgIHN0YXRpYyBT
dHJ1Y3R1cmVJRCBlbmNvZGUoY29uc3QgU3RydWN0dXJlKik7CisKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2JpdHM7IH0KKyAgICBib29sIG9wZXJhdG9y
PT0oU3RydWN0dXJlSUQgY29uc3QmIG90aGVyKSBjb25zdCAgeyByZXR1cm4gbV9iaXRzID09IG90
aGVyLm1fYml0czsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShTdHJ1Y3R1cmVJRCBjb25zdCYgb3Ro
ZXIpIGNvbnN0ICB7IHJldHVybiBtX2JpdHMgIT0gb3RoZXIubV9iaXRzOyB9CisgICAgY29uc3Rl
eHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIFN0cnVj
dHVyZUlEKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2JpdHMobnVrZWRTdHJ1
Y3R1cmVJREJpdCkgeyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuICp0aGlzID09IFN0cnVjdHVyZUlEKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFN0cnVjdHVyZUlEKHVpbnQzMl90IGJpdHMp
IDogbV9iaXRzKGJpdHMpIHsgfQorCisgICAgdWludDMyX3QgbV9iaXRzIHsgMCB9OworfTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKFN0cnVjdHVyZUlEKSA9PSBzaXplb2YodWludDMyX3QpKTsKKwor
I2lmIENQVShBRERSRVNTNjQpCisKK0FMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJ
RDo6ZGVjb2RlKCkgY29uc3QKK3sKKyAgICAvLyBUYWtlIGNhcmUgdG8gb25seSB1c2UgdGhlIGJp
dHMgZnJvbSBtX2JpdHMgaW4gdGhlIHN0cnVjdHVyZSdzIGFkZHJlc3MgcmVzZXJ2YXRpb24uCisg
ICAgQVNTRVJUKGRlY29udGFtaW5hdGUoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
U3RydWN0dXJlKj4oKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oZGVjb250YW1pbmF0ZSgpLm1fYml0
cykgJiBzdHJ1Y3R1cmVJRE1hc2spICsgZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXAp
OworfQorCitBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUlEIFN0cnVjdHVyZUlEOjplbmNvZGUoY29u
c3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAg
QVNTRVJUKGdfanNjQ29uZmlnLnN0YXJ0T2ZTdHJ1Y3R1cmVIZWFwIDw9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihzdHJ1Y3R1cmUpICYmIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihz
dHJ1Y3R1cmUpIDwgZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXAgKyBzdHJ1Y3R1cmVI
ZWFwQWRkcmVzc1NpemUpOworICAgIGF1dG8gcmVzdWx0ID0gU3RydWN0dXJlSUQocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkgJiBzdHJ1Y3R1cmVJRE1hc2spOworICAgIEFT
U0VSVChyZXN1bHQuZGVjb2RlKCkgPT0gc3RydWN0dXJlKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCisjZWxzZSAvLyBDUFUoQUREUkVTUzY0KQorCitBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSog
U3RydWN0dXJlSUQ6OmRlY29kZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRlY29udGFtaW5hdGUo
KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4obV9iaXRzKTsKK30K
KworQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRDo6ZW5jb2RlKGNvbnN0IFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgIHJldHVy
biBTdHJ1Y3R1cmVJRChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmUpKTsKK30K
KworI2VuZGlmCisKK3N0cnVjdCBTdHJ1Y3R1cmVJREhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFN0cnVjdHVyZUlEJiBrZXkpIHsgcmV0dXJuIGtleS5iaXRzKCk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJ1Y3R1cmVJRCYgYSwgY29uc3QgU3RydWN0dXJl
SUQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZh
dWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6U3RydWN0dXJlSUQ+
IDogSlNDOjpTdHJ1Y3R1cmVJREhhc2ggeyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpTdHJ1Y3R1
cmVJRD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpTdHJ1Y3R1cmVJRD4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEQmxvYi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKaW5kZXgg
NzMwOTI3MmJhYzA4MzgzNDk2YWUyZmEyYWIxNzNmOTZjNmYxMjc1Yi4uZDRhYzE1MjkxODU0ZjRj
Nzk3MDgwZWI5MWM5YWRmMzliYjhjN2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKQEAgLTI4LDE3ICsyOCwxNCBAQAogI2luY2x1ZGUg
IkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTVHlw
ZUluZm8uaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSUQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0cnVjdHVyZUlEQmxvYiB7CiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAgICBTdHJ1
Y3R1cmVJREJsb2IoKQotICAgIHsKLSAgICAgICAgdS5kb3VibGVXb3JkID0gMHhiYmFkYmVlZjsK
LSAgICB9CisgICAgU3RydWN0dXJlSURCbG9iKCkgPSBkZWZhdWx0OwogCiAgICAgU3RydWN0dXJl
SURCbG9iKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlELCBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKQogICAgIHsKQEAgLTc3
LDggKzc0LDkgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB1bmlvbiB7CisgICAg
dW5pb24gRGF0YSB7CiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHJlbW92ZSB0aGlzIHNpbmNlIHRoZSBzdHJ1Y3R1cmVJRCBjYW4gYmUgZGlyZWN0bHkg
Y29tcHV0ZWQgZnJvbSB0aGUgU3RydWN0dXJlKgogICAgICAgICAgICAgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeTsKICAgICAgICAgICAgIEpTVHlwZSB0eXBlOwpAQCAtOTAsNyArODgsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGludDMyX3Qgd29yZDI7CiAgICAgICAgIH0gd29yZHM7CiAgICAg
ICAgIGludDY0X3QgZG91YmxlV29yZDsKLSAgICB9IHU7CisKKyAgICAgICAgRGF0YSgpIHsgZG91
YmxlV29yZCA9IDB4YmJhZGJlZWY7IH0KKyAgICB9OworCisgICAgRGF0YSB1OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmI0ZjE3
NTYwNjk0NTU4ZWM3N2YxMzZjZjg5MjM5YWIxMjJkMDdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRh
YmxlLmgiCi0KLSNpbmNsdWRlICJSZXNvdXJjZUV4aGF1c3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1Jhd1Bv
aW50ZXIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotCi1uYW1l
c3BhY2UgU3RydWN0dXJlSURUYWJsZUludGVybmFsIHsKLXN0YXRpYyBjb25zdGV4cHIgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUo
KQotICAgIDogbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KHNfaW5p
dGlhbFNpemUpKQotICAgICwgbV9zaXplKDEpCi0gICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNp
emUpCi17Ci0gICAgLy8gV2UgcHJlLWFsbG9jYXRlIHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0
aGUgbnVsbCBTdHJ1Y3R1cmUKLSAgICAvLyBjYW4gc3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhl
IFN0cnVjdHVyZUlEICcwJy4KLSAgICB0YWJsZSgpWzBdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzID0g
MDsKLQotICAgIG1ha2VGcmVlTGlzdEZyb21SYW5nZSgxLCBtX2NhcGFjaXR5IC0gMSk7Ci19Ci0K
LXZvaWQgU3RydWN0dXJlSURUYWJsZTo6bWFrZUZyZWVMaXN0RnJvbVJhbmdlKHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBsYXN0KQotewotICAgIEFTU0VSVCghbV9maXJzdEZyZWVPZmZzZXQpOwot
ICAgIEFTU0VSVCghbV9sYXN0RnJlZU9mZnNldCk7Ci0KLSAgICAvLyBQdXQgYWxsIHRoZSBuZXcg
SURzIG9uIHRoZSBmcmVlIGxpc3Qgc2VxdWVudGlhbGx5LgotICAgIHVpbnQzMl90IGhlYWQgPSBm
aXJzdDsKLSAgICB1aW50MzJfdCB0YWlsID0gbGFzdDsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSBm
aXJzdDsgaSA8IGxhc3Q7ICsraSkKLSAgICAgICAgdGFibGUoKVtpXS5vZmZzZXQgPSBpICsgMTsK
LSAgICB0YWJsZSgpW2xhc3RdLm9mZnNldCA9IDA7Ci0KLSAgICAvLyBSYW5kb21pemUgdGhlIGZy
ZWUgbGlzdC4KLSAgICB1aW50MzJfdCBzaXplID0gbGFzdCAtIGZpcnN0ICsgMTsKLSAgICB1aW50
MzJfdCBtYXhJdGVyYXRpb25zID0gKHNpemUgKiAyKSAvIDM7Ci0gICAgZm9yICh1aW50MzJfdCBj
b3VudCA9IDA7IGNvdW50IDwgbWF4SXRlcmF0aW9uczsgKytjb3VudCkgewotICAgICAgICAvLyBN
b3ZlIGEgcmFuZG9tIHBpY2sgZWl0aGVyIHRvIHRoZSBoZWFkIG9yIHRoZSB0YWlsIG9mIHRoZSBm
cmVlIGxpc3QuCi0gICAgICAgIHVpbnQzMl90IHJhbmRvbSA9IG1fd2Vha1JhbmRvbS5nZXRVaW50
MzIoKTsKLSAgICAgICAgdWludDMyX3Qgbm9kZUJlZm9yZSA9IGZpcnN0ICsgKHJhbmRvbSAlIHNp
emUpOwotICAgICAgICB1aW50MzJfdCBwaWNrID0gdGFibGUoKVtub2RlQmVmb3JlXS5vZmZzZXQ7
Ci0gICAgICAgIGlmIChwaWNrKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCBub2RlQWZ0ZXIgPSB0
YWJsZSgpW3BpY2tdLm9mZnNldDsKLSAgICAgICAgICAgIHRhYmxlKClbbm9kZUJlZm9yZV0ub2Zm
c2V0ID0gbm9kZUFmdGVyOwotICAgICAgICAgICAgaWYgKChyYW5kb20gJiAxKSB8fCAhbm9kZUFm
dGVyKSB7Ci0gICAgICAgICAgICAgICAgLy8gTW92ZSB0byB0aGUgaGVhZC4KLSAgICAgICAgICAg
ICAgICB0YWJsZSgpW3BpY2tdLm9mZnNldCA9IGhlYWQ7Ci0gICAgICAgICAgICAgICAgaGVhZCA9
IHBpY2s7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlQWZ0ZXIpCi0gICAgICAgICAgICAgICAg
ICAgIHRhaWwgPSBub2RlQmVmb3JlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBNb3ZlIHRvIHRoZSB0YWlsLgotICAgICAgICAgICAgICAgIHRhYmxlKClbcGlja10u
b2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICB0YWJsZSgpW3RhaWxdLm9mZnNldCA9IHBpY2s7
Ci0gICAgICAgICAgICAgICAgdGFpbCA9IHBpY2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBDdXQgbGlzdCBpbiBoYWxmIGFuZCBzd2FwIGhhbHZlcy4KLSAgICB1
aW50MzJfdCBjdXQgPSBmaXJzdCArIChtX3dlYWtSYW5kb20uZ2V0VWludDMyKCkgJSBzaXplKTsK
LSAgICB1aW50MzJfdCBhZnRlckN1dCA9IHRhYmxlKClbY3V0XS5vZmZzZXQ7Ci0gICAgaWYgKGFm
dGVyQ3V0KSB7Ci0gICAgICAgIHRhYmxlKClbdGFpbF0ub2Zmc2V0ID0gaGVhZDsKLSAgICAgICAg
dGFpbCA9IGN1dDsKLSAgICAgICAgaGVhZCA9IGFmdGVyQ3V0OwotICAgICAgICB0YWJsZSgpW2N1
dF0ub2Zmc2V0ID0gMDsKLSAgICB9Ci0KLSAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IGhlYWQ7Ci0g
ICAgbV9sYXN0RnJlZU9mZnNldCA9IHRhaWw7Ci19Ci0KLXZvaWQgU3RydWN0dXJlSURUYWJsZTo6
cmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSkKLXsKLSAgICBpZiAobmV3Q2FwYWNpdHkgPiBzX21h
eGltdW1OdW1iZXJPZlN0cnVjdHVyZXMpCi0gICAgICAgIG5ld0NhcGFjaXR5ID0gc19tYXhpbXVt
TnVtYmVyT2ZTdHJ1Y3R1cmVzOwotCi0gICAgLy8gSWYgbV9zaXplIGlzIGFscmVhZHkgc19tYXhp
bXVtTnVtYmVyT2ZTdHJ1Y3R1cmVzLCBuZXdDYXBhY2l0eSBiZWNvbWVzIHNfbWF4aW11bU51bWJl
ck9mU3RydWN0dXJlcyBpbiB0aGUgYWJvdmUgY29kZS4KLSAgICAvLyBJbiB0aGF0IGNhc2UsIHdl
IHNob3VsZCBjcmFzaCBiZWNhdXNlIG9mIGV4aGF1c3Qgb2YgU3RydWN0dXJlSURzLgotICAgIFJF
TEVBU0VfQVNTRVJUX1JFU09VUkNFX0FWQUlMQUJMRShtX3NpemUgPCBuZXdDYXBhY2l0eSwgU3Ry
dWN0dXJlSURFeGhhdXN0aW9uLCAiQ3Jhc2ggaW50ZW50aW9uYWxseSBiZWNhdXNlIG9mIGV4aGF1
c3Qgb2YgU3RydWN0dXJlSURzLiIpOwotCi0gICAgLy8gQ3JlYXRlIHRoZSBuZXcgdGFibGUuCi0g
ICAgYXV0byBuZXdUYWJsZSA9IG1ha2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4obmV3
Q2FwYWNpdHkpOwotCi0gICAgLy8gQ29weSB0aGUgY29udGVudHMgb2YgdGhlIG9sZCB0YWJsZSB0
byB0aGUgbmV3IHRhYmxlLgotICAgIG1lbWNweShuZXdUYWJsZS5nZXQoKSwgdGFibGUoKSwgbV9j
YXBhY2l0eSAqIHNpemVvZihTdHJ1Y3R1cmVPck9mZnNldCkpOwotCi0gICAgLy8gU3RvcmUgZmVu
Y2UgdG8gbWFrZSBzdXJlIHdlJ3ZlIGNvcGllZCBldmVyeXRoaW5nIGJlZm9yZSBkb2luZyB0aGUg
c3dhcC4KLSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotCi0gICAgLy8gU3dhcCB0aGUgb2xk
IGFuZCBuZXcgdGFibGVzLgotICAgIHN3YXAobV90YWJsZSwgbmV3VGFibGUpOwotCi0gICAgLy8g
UHV0IHRoZSBvbGQgdGFibGUgKG5vdyBsYWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlzdCBvZiBv
bGQgdGFibGVzLgotICAgIG1fb2xkVGFibGVzLmFwcGVuZChXVEZNb3ZlKG5ld1RhYmxlKSk7Ci0K
LSAgICAvLyBVcGRhdGUgdGhlIGNhcGFjaXR5LgotICAgIG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0
eTsKLQotICAgIG1ha2VGcmVlTGlzdEZyb21SYW5nZShtX3NpemUsIG1fY2FwYWNpdHkgLSAxKTsK
LX0KLQotdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcygpCi17Ci0gICAgbV9v
bGRUYWJsZXMuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlSUQgU3RydWN0dXJlSURUYWJsZTo6YWxs
b2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIW1fZmly
c3RGcmVlT2Zmc2V0KSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NhcGFjaXR5IDw9IHNf
bWF4aW11bU51bWJlck9mU3RydWN0dXJlcyk7Ci0gICAgICAgIEFTU0VSVChtX3NpemUgPT0gbV9j
YXBhY2l0eSk7Ci0gICAgICAgIHJlc2l6ZShtX2NhcGFjaXR5ICogMik7Ci0gICAgICAgIEFTU0VS
VChtX3NpemUgPCBtX2NhcGFjaXR5KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9maXJzdEZy
ZWVPZmZzZXQpOwotICAgIH0KLQotICAgIC8vIGVudHJvcHlCaXRzIG11c3Qgbm90IGJlIHplcm8u
IFRoaXMgZW5zdXJlcyB0aGF0IGlmIGEgY29ycnVwdGVkCi0gICAgLy8gc3RydWN0dXJlSUQgaXMg
ZW5jb3VudGVyZWQgKHdpdGggaW5jb3JyZWN0IGVudHJvcHlCaXRzKSwgdGhlIGRlY29kZWQKLSAg
ICAvLyBzdHJ1Y3R1cmUgcG9pbnRlciBmb3IgdGhhdCBJRCB3aWxsIGJlIGFsd2F5cyBiZSBhIGJh
ZCBwb2ludGVyIHdpdGgKLSAgICAvLyBoaWdoIGJpdHMgc2V0LgotICAgIGNvbnN0ZXhwciB1aW50
MzJfdCBlbnRyb3B5Qml0c01hc2sgPSAoMSA8PCBzX251bWJlck9mRW50cm9weUJpdHMpIC0gMTsK
LSAgICB1aW50MzJfdCBlbnRyb3B5Qml0cyA9IG1fd2Vha1JhbmRvbS5nZXRVaW50MzIoKSAmIGVu
dHJvcHlCaXRzTWFzazsKLSAgICBpZiAoVU5MSUtFTFkoIWVudHJvcHlCaXRzKSkgewotICAgICAg
ICBjb25zdGV4cHIgdWludDMyX3QgbnVtYmVyT2ZWYWx1ZXNUb1BpY2tGcm9tID0gZW50cm9weUJp
dHNNYXNrOwotICAgICAgICBlbnRyb3B5Qml0cyA9IChtX3dlYWtSYW5kb20uZ2V0VWludDMyKCkg
JSBudW1iZXJPZlZhbHVlc1RvUGlja0Zyb20pICsgMTsKLSAgICB9Ci0KLSAgICB1aW50MzJfdCBz
dHJ1Y3R1cmVJbmRleCA9IG1fZmlyc3RGcmVlT2Zmc2V0OwotICAgIG1fZmlyc3RGcmVlT2Zmc2V0
ID0gdGFibGUoKVttX2ZpcnN0RnJlZU9mZnNldF0ub2Zmc2V0OwotICAgIGlmICghbV9maXJzdEZy
ZWVPZmZzZXQpCi0gICAgICAgIG1fbGFzdEZyZWVPZmZzZXQgPSAwOwotCi0gICAgU3RydWN0dXJl
SUQgcmVzdWx0ID0gKHN0cnVjdHVyZUluZGV4IDw8IHNfbnVtYmVyT2ZFbnRyb3B5Qml0cykgfCBl
bnRyb3B5Qml0czsKLSAgICB0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJl
Qml0cyA9IGVuY29kZShzdHJ1Y3R1cmUsIHJlc3VsdCk7Ci0gICAgbV9zaXplKys7Ci0gICAgQVNT
RVJUKCFpc051a2VkKHJlc3VsdCkpOwotCi0gICAgZGF0YUxvZ0xuSWYoU3RydWN0dXJlSURUYWJs
ZUludGVybmFsOjp2ZXJib3NlLCAiQWxsb2NhdGVkIFN0cnVjdHVyZUlEICIsIHJlc3VsdCwgIiBm
b3IgU3RydWN0dXJlICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQotewotICAgIGRhdGFMb2dMbklmKFN0
cnVjdHVyZUlEVGFibGVJbnRlcm5hbDo6dmVyYm9zZSwgIkRlYWxsb2NhdGVkIFN0cnVjdHVyZUlE
ICIsIHN0cnVjdHVyZUlEKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlSUQgIT0gc191bnVzZWRJRCk7
Ci0gICAgdWludDMyX3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9m
RW50cm9weUJpdHM7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZUluZGV4ICYmIHN0cnVjdHVyZUluZGV4
IDwgc19tYXhpbXVtTnVtYmVyT2ZTdHJ1Y3R1cmVzKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh0YWJs
ZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJlQml0cyA9PSBlbmNvZGUoc3RydWN0
dXJlLCBzdHJ1Y3R1cmVJRCkpOwotICAgIG1fc2l6ZS0tOwotICAgIGlmICghbV9maXJzdEZyZWVP
ZmZzZXQpIHsKLSAgICAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0ub2Zmc2V0ID0gMDsKLSAg
ICAgICAgbV9maXJzdEZyZWVPZmZzZXQgPSBzdHJ1Y3R1cmVJbmRleDsKLSAgICAgICAgbV9sYXN0
RnJlZU9mZnNldCA9IHN0cnVjdHVyZUluZGV4OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYm9vbCBpbnNlcnRBdEhlYWQgPSBtX3dlYWtSYW5kb20uZ2V0VWludDMyKCkgJiAxOwotICAg
IGlmIChpbnNlcnRBdEhlYWQpIHsKLSAgICAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0ub2Zm
c2V0ID0gbV9maXJzdEZyZWVPZmZzZXQ7Ci0gICAgICAgIG1fZmlyc3RGcmVlT2Zmc2V0ID0gc3Ry
dWN0dXJlSW5kZXg7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJbmRl
eF0ub2Zmc2V0ID0gMDsKLSAgICAgICAgdGFibGUoKVttX2xhc3RGcmVlT2Zmc2V0XS5vZmZzZXQg
PSBzdHJ1Y3R1cmVJbmRleDsKLSAgICAgICAgbV9sYXN0RnJlZU9mZnNldCA9IHN0cnVjdHVyZUlu
ZGV4OwotICAgIH0KLX0KLQotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0KLX0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSURUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURU
YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWMyYTEzOGFlZWYwMDJlYWEz
MjNiMjE1YTA4MDIxMmQ1NjI0NDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFi
bGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVuc3VyZVN0aWxsQWxpdmVIZXJlLmgiCi0jaW5jbHVk
ZSAiVW51c2VkUG9pbnRlci5oIgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY2xhc3MgU3RydWN0dXJlOwotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLXVzaW5n
IFN0cnVjdHVyZUlEID0gdWludDMyX3Q7Ci0KLWlubGluZSBTdHJ1Y3R1cmVJRCBudWtlZFN0cnVj
dHVyZUlEQml0KCkKLXsKLSAgICByZXR1cm4gMHg4MDAwMDAwMHU7Ci19Ci0KLWlubGluZSBTdHJ1
Y3R1cmVJRCBudWtlKFN0cnVjdHVyZUlEIGlkKQotewotICAgIHJldHVybiBpZCB8IG51a2VkU3Ry
dWN0dXJlSURCaXQoKTsKLX0KLQotaW5saW5lIGJvb2wgaXNOdWtlZChTdHJ1Y3R1cmVJRCBpZCkK
LXsKLSAgICByZXR1cm4gISEoaWQgJiBudWtlZFN0cnVjdHVyZUlEQml0KCkpOwotfQotCi1pbmxp
bmUgU3RydWN0dXJlSUQgZGVjb250YW1pbmF0ZShTdHJ1Y3R1cmVJRCBpZCkKLXsKLSAgICByZXR1
cm4gaWQgJiB+bnVrZWRTdHJ1Y3R1cmVJREJpdCgpOwotfQotI2Vsc2UgLy8gbm90IFVTRShKU1ZB
TFVFNjQpCi11c2luZyBTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZSo7Ci0KLWlubGluZSBTdHJ1Y3R1
cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0KCkKLXsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PFN0
cnVjdHVyZUlEPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsKLX0KLQotaW5saW5lIFN0cnVj
dHVyZUlEIG51a2UoU3RydWN0dXJlSUQgaWQpCi17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxT
dHJ1Y3R1cmVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaWQpIHwgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4obnVrZWRTdHJ1Y3R1cmVJREJpdCgpKSk7Ci19Ci0KLWlubGluZSBib29sIGlzTnVr
ZWQoU3RydWN0dXJlSUQgaWQpCi17Ci0gICAgcmV0dXJuICEhKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGlkKSAmIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG51a2VkU3RydWN0dXJlSURCaXQoKSkp
OwotfQotCi1pbmxpbmUgU3RydWN0dXJlSUQgZGVjb250YW1pbmF0ZShTdHJ1Y3R1cmVJRCBpZCkK
LXsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PFN0cnVjdHVyZUlEPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihpZCkgJiB+Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obnVrZWRTdHJ1Y3R1cmVJREJp
dCgpKSk7Ci19Ci0jZW5kaWYgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi0KLSNpZiBVU0UoSlNWQUxV
RTY0KQotCi11c2luZyBFbmNvZGVkU3RydWN0dXJlQml0cyA9IHVpbnRwdHJfdDsKLQotY2xhc3Mg
U3RydWN0dXJlSURUYWJsZSB7Ci0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVJRFRhYmxlKCk7Ci0KLSAgICB2b2lkKiogYmFzZSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV90YWJsZSk7IH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCB2YWxpZGF0ZShTdHJ1Y3R1cmVJRCk7Ci0KLSAgICAvLyBGSVhNRTog
cmRhcjovLzY5MDM2ODg4OiByZW1vdmUgdGhpcyB3aGVuIG5vIGxvbmdlciBuZWVkZWQuCi0gICAg
Ly8gVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGEgc3BlY2lhbCBjYXNlIG1pdGlnYXRpb24uIEl0IGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UuCi0gICAgU3RydWN0dXJlKiB0cnlHZXQoU3RydWN0dXJlSUQp
OwotCi0gICAgU3RydWN0dXJlKiBnZXQoU3RydWN0dXJlSUQpOwotICAgIHZvaWQgZGVhbGxvY2F0
ZUlEKFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKTsKLSAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlE
KFN0cnVjdHVyZSopOwotCi0gICAgdm9pZCBmbHVzaE9sZFRhYmxlcygpOwotICAgIAotICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9p
ZCByZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KTsKLSAgICB2b2lkIG1ha2VGcmVlTGlzdEZyb21S
YW5nZSh1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgbGFzdCk7Ci0KLSAgICB1bmlvbiBTdHJ1Y3R1
cmVPck9mZnNldCB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1Ymxp
YzoKLSAgICAgICAgRW5jb2RlZFN0cnVjdHVyZUJpdHMgZW5jb2RlZFN0cnVjdHVyZUJpdHM7Ci0g
ICAgICAgIHVpbnRwdHJfdCBvZmZzZXQ7Ci0gICAgfTsKLQotICAgIFN0cnVjdHVyZU9yT2Zmc2V0
KiB0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBkZWNvZGUoRW5jb2RlZFN0cnVjdHVyZUJpdHMsIFN0cnVjdHVyZUlEKTsKLSAgICBz
dGF0aWMgRW5jb2RlZFN0cnVjdHVyZUJpdHMgZW5jb2RlKFN0cnVjdHVyZSosIFN0cnVjdHVyZUlE
KTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfaW5pdGlhbFNpemUgPSA1MTI7Ci0K
LSAgICBWZWN0b3I8VW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+PiBtX29sZFRhYmxlczsK
LQotICAgIHVpbnQzMl90IG1fZmlyc3RGcmVlT2Zmc2V0IHsgMCB9OwotICAgIHVpbnQzMl90IG1f
bGFzdEZyZWVPZmZzZXQgeyAwIH07Ci0gICAgVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+
IG1fdGFibGU7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIHNpemVfdCBtX2NhcGFj
aXR5OwotCi0gICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207Ci0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIFN0cnVjdHVyZUlEIHNfdW51c2VkSUQgPSAwOwotCi1wdWJsaWM6Ci0gICAgLy8gMS4gU3Ry
dWN0dXJlSUQgaXMgZW5jb2RlZCBhczoKLSAgICAvLwotICAgIC8vICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAv
LyAgICB8IDEgTnVrZSBCaXQgfCAyNiBTdHJ1Y3R1cmVJRFRhYmxlIGluZGV4IGJpdHMgfCA1IGVu
dHJvcHkgYml0cyB8Ci0gICAgLy8gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vCi0gICAgLy8gICAgVGhlIGVu
dHJvcHkgYml0cyBhcmUgY2hvc2VuIGF0IHJhbmRvbSBhbmQgYXNzaWduZWQgd2hlbiBhIFN0cnVj
dHVyZUlECi0gICAgLy8gICAgaXMgYWxsb2NhdGVkLgotICAgIC8vCi0gICAgLy8gMi4gRm9yIGVh
Y2ggU3RydWN0dXJlSUQsIHRoZSBTdHJ1Y3R1cmVJRFRhYmxlIHN0b3JlcyBlbmNvZGVkU3RydWN0
dXJlQml0cwotICAgIC8vICAgIHdoaWNoIGFyZSBlbmNvZGVkIGZyb20gdGhlIHN0cnVjdHVyZSBw
b2ludGVyIGFzIHN1Y2g6Ci0gICAgLy8KLSAgICAvLyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyAgICB8
IDExIGxvdyBpbmRleCBiaXRzIHwgNSBlbnRyb3B5IGJpdHMgfCA0OCBzdHJ1Y3R1cmUgcG9pbnRl
ciBiaXRzIHwKLSAgICAvLyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLwotICAgIC8vICAgIFRoZSBlbnRy
b3B5IGJpdHMgaGVyZSBhcmUgdGhlIHNhbWUgNSBiaXRzIHVzZWQgaW4gdGhlIGVuY29kaW5nIG9m
IHRoZQotICAgIC8vICAgIFN0cnVjdHVyZUlEIGZvciB0aGlzIHN0cnVjdHVyZSBlbnRyeSBpbiB0
aGUgU3RydWN0dXJlSURUYWJsZS4KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19u
dW1iZXJPZk51a2VCaXRzID0gMTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfbnVt
YmVyT2ZFbnRyb3B5Qml0cyA9IDU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2Vu
dHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyID0gKHNpemVvZihFbmNvZGVkU3RydWN0
dXJlQml0cykgKiA4KSAtIDE2OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX21h
eGltdW1OdW1iZXJPZlN0cnVjdHVyZXMgPSAxIDw8ICgzMiAtIHNfbnVtYmVyT2ZFbnRyb3B5Qml0
cyAtIHNfbnVtYmVyT2ZOdWtlQml0cyk7Ci19OwotCi1BTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSog
U3RydWN0dXJlSURUYWJsZTo6ZGVjb2RlKEVuY29kZWRTdHJ1Y3R1cmVCaXRzIGJpdHMsIFN0cnVj
dHVyZUlEIHN0cnVjdHVyZUlEKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8U3RydWN0dXJl
Kj4oYml0cyBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZUlEKSA8PCBzX2VudHJv
cHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyKSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRW5j
b2RlZFN0cnVjdHVyZUJpdHMgU3RydWN0dXJlSURUYWJsZTo6ZW5jb2RlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKLXsKLSAgICByZXR1cm4gYml0d2lzZV9j
YXN0PEVuY29kZWRTdHJ1Y3R1cmVCaXRzPihzdHJ1Y3R1cmUpIF4gKHN0YXRpY19jYXN0PEVuY29k
ZWRTdHJ1Y3R1cmVCaXRzPihzdHJ1Y3R1cmVJRCkgPDwgc19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3Ry
dWN0dXJlUG9pbnRlcik7Ci19Ci0KLWlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEVGFibGU6
OmdldChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihzdHJ1Y3R1cmVJRCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIWlzTnVrZWQoc3RydWN0dXJlSUQpKTsKLSAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJ
bmRleCA9IHN0cnVjdHVyZUlEID4+IHNfbnVtYmVyT2ZFbnRyb3B5Qml0czsKLSAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0cnVjdHVyZUluZGV4IDwgbV9jYXBh
Y2l0eSk7Ci0gICAgcmV0dXJuIGRlY29kZSh0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVk
U3RydWN0dXJlQml0cywgc3RydWN0dXJlSUQpOwotfQotCi0vLyBGSVhNRTogcmRhcjovLzY5MDM2
ODg4OiByZW1vdmUgdGhpcyBmdW5jdGlvbiB3aGVuIG5vIGxvbmdlciBuZWVkZWQuCi1pbmxpbmUg
U3RydWN0dXJlKiBTdHJ1Y3R1cmVJRFRhYmxlOjp0cnlHZXQoU3RydWN0dXJlSUQgc3RydWN0dXJl
SUQpCi17Ci0gICAgdWludDMyX3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251
bWJlck9mRW50cm9weUJpdHM7Ci0gICAgaWYgKHN0cnVjdHVyZUluZGV4ID49IG1fY2FwYWNpdHkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkZWNvZGUodGFibGUoKVtzdHJ1
Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMsIHN0cnVjdHVyZUlEKTsKLX0KLQotQUxX
QVlTX0lOTElORSB2b2lkIFN0cnVjdHVyZUlEVGFibGU6OnZhbGlkYXRlKFN0cnVjdHVyZUlEIHN0
cnVjdHVyZUlEKQotewotICAgIHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0gc3RydWN0dXJlSUQg
Pj4gc19udW1iZXJPZkVudHJvcHlCaXRzOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZGVj
b2RlKHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzLCBzdHJ1Y3R1
cmVJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlSW5kZXggPCBtX2NhcGFjaXR5KTsK
LSAgICAqYml0d2lzZV9jYXN0PHZvbGF0aWxlIHVpbnQ2NF90Kj4oc3RydWN0dXJlKTsKLX0KLQot
I2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi0KLWNsYXNzIFN0cnVjdHVyZUlEVGFibGUgewot
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci1wdWJsaWM6Ci0gICAgU3Ry
dWN0dXJlSURUYWJsZSgpID0gZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiByZGFyOi8vNjkwMzY4
ODg6IHJlbW92ZSB0aGlzIGZ1bmN0aW9uIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICBTdHJ1
Y3R1cmUqIHRyeUdldChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyByZXR1cm4gc3RydWN0dXJl
SUQ7IH0KLSAgICBTdHJ1Y3R1cmUqIGdldChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyByZXR1
cm4gc3RydWN0dXJlSUQ7IH0KLSAgICB2b2lkIGRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmVJRCkgeyB9Ci0gICAgU3RydWN0dXJlSUQgYWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNOdWtlZChzdHJ1Y3R1cmUpKTsKLSAgICAg
ICAgcmV0dXJuIHN0cnVjdHVyZTsKLSAgICB9OwotCi0gICAgdm9pZCBmbHVzaE9sZFRhYmxlcygp
IHsgfQotICAgIHZvaWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpIHsgfQotfTsKLQotI2VuZGlmIC8v
IG5vdCBVU0UoSlNWQUxVRTY0KQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCAyZjYx
ZGUxZTJjNzFjZTQ5NjZjYzQ3ZDUzZWEwMjQ5OWZlZTAwMzhiLi43NjkyNTBkNjY1ZjA0OTJmZWUz
YzFmYTA3ZWVmM2UzZjljMmI4MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCkBAIC02MCwxMSArNjAsMTAgQEAgdm9pZCBT
dHJ1Y3R1cmVSYXJlRGF0YTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAKIFN0cnVjdHVyZVJhcmVE
YXRhOjpTdHJ1Y3R1cmVSYXJlRGF0YShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAg
OiBKU0NlbGwodm0sIHZtLnN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlLmdldCgpKQorICAgICwg
bV9wcmV2aW91cyh2bSwgdGhpcywgcHJldmlvdXMsIFdyaXRlQmFycmllclN0cnVjdHVyZUlEOjpN
YXlCZU51bGwpCiAgICAgLCBtX21heE9mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV90cmFu
c2l0aW9uT2Zmc2V0KGludmFsaWRPZmZzZXQpCiB7Ci0gICAgaWYgKHByZXZpb3VzKQotICAgICAg
ICBtX3ByZXZpb3VzLnNldCh2bSwgdGhpcywgcHJldmlvdXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaXNpdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmgKaW5kZXggY2YzMWU5MjkxM2M4YzU2ZDliNzI1YmYwZGI0MTg1NDE4MTFh
YWE3Yi4uNjhiZDlhNjE1YjZmZmNlOWZiMmQwZDdmY2FhYWMwOTg2NDU1OTNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC0x
NDAsNyArMTQwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgdHJ5Q2FjaGVQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yVmlhV2F0Y2hwb2ludChWTSYsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKik7
CiAKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByZXZpb3VzOwogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgaGF2ZSBzb21lIHN0b3J5IGZvciBjbGVhcmluZyB0aGVzZSBwcm9wZXJ0eSBu
YW1lcyBjYWNoZXMgaW4gR0MuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MjY1OQogICAgIHVpbnRwdHJfdCBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3JBbmRGbGFnIHsgMCB9OwpAQCAtMTU2LDYgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNwZWNpYWxQcm9wZXJ0eUNhY2hlPiBtX3NwZWNpYWxQcm9wZXJ0eUNhY2hl
OwogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7CiAK
KyAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX3ByZXZpb3VzOwogICAgIFByb3BlcnR5T2Zm
c2V0IG1fbWF4T2Zmc2V0OwogICAgIFByb3BlcnR5T2Zmc2V0IG1fdHJhbnNpdGlvbk9mZnNldDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhSW5saW5lcy5oCmluZGV4IDE1OTIyMDhmYjNmMTE5YmFjMDk3MmQzZjZhMmFiNmZi
MGYzYjJmN2QuLmVkZmNmM2EyNThiNGQ0MmViYzIyNzU1NDdkOTlkZDBkYWYzZDI0NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oCkBAIC0xNzcsNyArMTc3LDcgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlQ2hh
aW5JbnZhbGlkYXRpb25XYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwoVk0mLCBjb25zdCBGaXJlRGUK
ICAgICBtX3N0cnVjdHVyZVJhcmVEYXRhLT5jbGVhckNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0
b3IoKTsKIH0KIAotaW5saW5lIGJvb2wgU3RydWN0dXJlUmFyZURhdGE6OnRyeUNhY2hlUHJvcGVy
dHlOYW1lRW51bWVyYXRvclZpYVdhdGNocG9pbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbikKK2lubGluZSBib29sIFN0cnVjdHVyZVJhcmVE
YXRhOjp0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3JWaWFXYXRjaHBvaW50KFZNJiwgU3Ry
dWN0dXJlKiBiYXNlU3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCiB7CiAgICAgaWYg
KGJhc2VTdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xODYsNyArMTg2LDcgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlUmFyZURhdGE6OnRyeUNhY2hl
UHJvcGVydHlOYW1lRW51bWVyYXRvclZpYVdhdGNocG9pbnQoVk0mIHYKICAgICBmb3IgKGF1dG8q
IGN1cnJlbnQgPSBjaGFpbi0+aGVhZCgpOyAqY3VycmVudDsgKytjdXJyZW50KSB7CiAgICAgICAg
ICsrc2l6ZTsKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSAqY3VycmVudDsKLSAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQp
OworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwog
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+cHJvcGVydHlOYW1lRW51bWVyYXRvclNob3VsZFdhdGNo
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTk0LDcgKzE5NCw3IEBA
IGlubGluZSBib29sIFN0cnVjdHVyZVJhcmVEYXRhOjp0cnlDYWNoZVByb3BlcnR5TmFtZUVudW1l
cmF0b3JWaWFXYXRjaHBvaW50KFZNJiB2CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZv
ciAoYXV0byogY3VycmVudCA9IGNoYWluLT5oZWFkKCk7ICpjdXJyZW50OyArK2N1cnJlbnQpIHsK
ICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSAqY3VycmVudDsKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpOworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgICAgICBt
X2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3JXYXRjaHBvaW50c1tpbmRleF0uaW5zdGFsbCh0
aGlzLCBzdHJ1Y3R1cmUpOwogICAgICAgICArK2luZGV4OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCmluZGV4IDAyNjAxNDVl
ZTYyZjYyNmZiYzgzOTg1ZDEwZWEyYjVmOTZhMGQxODkuLmJjZjE2MzUxNjljMDI0NzcyNGM3MTAz
OTE1NTMxYzEyMGQ4OWMzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xEZXNjcmlwdGlvblR5cGVFcnJvcik7CiAgICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3lt
Ym9sLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoc3lt
Ym9sLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBjb25zdCBhdXRvIGRlc2NyaXB0aW9uID0gc3ltYm9s
LT5kZXNjcmlwdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVzY3JpcHRpb24u
aXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGRlc2NyaXB0aW9uKSk7CiB9
CkBAIC0xMDksNyArMTA5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3Rv
RnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBTeW1ib2wq
IHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7Ci0gICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHZtLCBzeW1ib2wtPnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRChzeW1ib2wtPnN0cnVjdHVyZUlEKCkpOwogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
c3ltYm9sLT5kZXNjcmlwdGl2ZVN0cmluZygpKSkpOwogfQogCkBAIC0xMjIsNyArMTIyLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xWYWx1ZU9mVHlwZUVy
cm9yKTsKIAotICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3ltYm9sLT5zdHJ1
Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoc3ltYm9sLT5zdHJ1
Y3R1cmVJRCgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShzeW1ib2wpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlckxvZy5jcHAKaW5kZXggNGZmOWRmMGIyZWMwYTQxNjY3ZjgyZjU0ZGM5NGViZDhk
N2IyZGQwZi4uOGVkMzMwNGJhYTkzNTIyNTkzYTQ4MmZiMGI4MDY0YWQ1NmQ4NzU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhW
TSYgdm0sIGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG51bGxwdHI7CiAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvU3RydWN0dXJlID0gZmFsc2U7
CiAgICAgICAgIGlmIChpZCkgewotICAgICAgICAgICAgc3RydWN0dXJlID0gSGVhcDo6aGVhcCh2
YWx1ZS5hc0NlbGwoKSktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgICAgICAgICAg
c3RydWN0dXJlID0gaWQuZGVjb2RlKCk7CiAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBjYWNoZWRN
b25vUHJvdG9TaGFwZXMuZmluZChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGl0ZXIgPT0g
Y2FjaGVkTW9ub1Byb3RvU2hhcGVzLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXkg
PSBzdGQ6Om1ha2VfcGFpcihzdHJ1Y3R1cmUsIHZhbHVlLmFzQ2VsbCgpKTsKQEAgLTEzMSw3ICsx
MzEsNyBAQCB2b2lkIFR5cGVQcm9maWxlckxvZzo6dmlzaXQoQWJzdHJhY3RTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICBmb3IgKExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9nU3RhcnRQdHI7IGVudHJ5
ICE9IG1fY3VycmVudExvZ0VudHJ5UHRyOyArK2VudHJ5KSB7CiAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQoZW50cnktPnZhbHVlKTsKICAgICAgICAgaWYgKFN0cnVjdHVyZUlEIGlk
ID0gZW50cnktPnN0cnVjdHVyZUlEKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHZpc2l0b3IuaGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KGlkKTsgCisgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlkLmRlY29kZSgpOwogICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNGJiYmM0ZDc3YWJlNzcwNzY1YjMzYWIwMTg3
YmViNmQ5NDM1MTJhMi4uMTU2ZGE5NGEwOGVhMTQ5ZDFjNzU1NGM3NDQzOWQxNzExMWU0ZTAzNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03NDgsMTcgKzc0OCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElO
RSBTdHJ1Y3R1cmUqIGdldFN0cnVjdHVyZShTdHJ1Y3R1cmVJRCBpZCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBoZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoZGVjb250YW1pbmF0ZShpZCkpOwot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiByZGFyOi8vNjkwMzY4ODg6IHJlbW92ZSB0aGlzIGZ1bmN0
aW9uIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSog
dHJ5R2V0U3RydWN0dXJlKFN0cnVjdHVyZUlEIGlkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLnRyeUdldChkZWNvbnRhbWluYXRlKGlkKSk7Ci0gICAgfQot
CiAgICAgdm9pZCogc3RhY2tQb2ludGVyQXRWTUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zdGFj
a1BvaW50ZXJBdFZNRW50cnk7IH0KICAgICB2b2lkIHNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2
b2lkKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRl
QmFycmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgK
aW5kZXggNGQxMTgyMTAxZTU0N2M2YmJlN2ZiMTBkODVhYzQ2NmUxMmMwMjZlZC4uYTg2NWY4Mzcz
NDZjMTVmM2FmMjRlZTc3YmU0ZmZmNzg5ODhhZGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkdDQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSUQuaCIKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvUmF3UHRy
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1Jhd1ZhbHVlVHJhaXRzLmg+CkBAIC0yNDgsNCArMjQ5
LDEwNCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdyaXRlQmFycmllckJhc2U8VSwg
VHJhaXRzVT4mIGxocywgY29uc3QgV3JpdGVCYXJyaQogICAgIHJldHVybiBsaHMuZ2V0KCkgPT0g
cmhzLmdldCgpOwogfQogCitjbGFzcyBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCB7CitwdWJsaWM6
CisgICAgY29uc3RleHByIFdyaXRlQmFycmllclN0cnVjdHVyZUlEKCkgPSBkZWZhdWx0OworCisg
ICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBT
dHJ1Y3R1cmUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZtLCBvd25lciwgdmFsdWUpOwor
ICAgIH0KKworICAgIFdyaXRlQmFycmllclN0cnVjdHVyZUlEKERGRzo6RGVzaXJlZFdyaXRlQmFy
cmllciYsIFN0cnVjdHVyZSogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQoaXNDb21waWxh
dGlvblRocmVhZCgpKTsKKyAgICAgICAgc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7Cisg
ICAgfQorCisgICAgZW51bSBNYXlCZU51bGxUYWcgeyBNYXlCZU51bGwgfTsKKyAgICBXcml0ZUJh
cnJpZXJTdHJ1Y3R1cmVJRChWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSog
dmFsdWUsIE1heUJlTnVsbFRhZykKKyAgICB7CisgICAgICAgIHNldE1heUJlTnVsbCh2bSwgb3du
ZXIsIHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHNldChWTSYsIGNvbnN0IEpTQ2VsbCogb3du
ZXIsIFN0cnVjdHVyZSogdmFsdWUpOworCisgICAgdm9pZCBzZXRNYXlCZU51bGwoVk0mLCBjb25z
dCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIHZhbHVlKTsKKworICAgIC8vIFNob3VsZCBvbmx5
IGJlIHVzZWQgYnkgSlNDZWxsIGR1cmluZyBlYXJseSBpbml0aWFsaXNhdGlvbgorICAgIC8vIHdo
ZW4gc29tZSBiYXNpYyB0eXBlcyBhcmVuJ3QgeWV0IGNvbXBsZXRlbHkgaW5zdGFudGlhdGVkCisg
ICAgdm9pZCBzZXRFYXJseVZhbHVlKFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgU3RydWN0dXJl
KiB2YWx1ZSk7CisKKyAgICBTdHJ1Y3R1cmUqIGdldCgpIGNvbnN0CisgICAgeworICAgICAgICAv
LyBDb3B5IG1fc3RydWN0dXJlSUQgdG8gYSBsb2NhbCB0byBhdm9pZCBtdWx0aXBsZS1yZWFkIGlz
c3Vlcy4gKFNlZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTA4NTQ+KQorICAgICAgICBTdHJ1Y3R1
cmVJRCBzdHJ1Y3R1cmVJRCA9IG1fc3RydWN0dXJlSUQ7CisgICAgICAgIGlmIChzdHJ1Y3R1cmVJ
RCkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNv
ZGUoKTsKKyAgICAgICAgICAgIHZhbGlkYXRlQ2VsbChyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+
KHN0cnVjdHVyZSkpOworICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9y
KigpIGNvbnN0CisgICAgeworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1fc3Ry
dWN0dXJlSUQ7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CisgICAgICAgIHZhbGlkYXRlQ2Vs
bChyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHN0cnVjdHVyZSkpOworICAgICAgICByZXR1cm4g
c3RydWN0dXJlOworICAgIH0KKworICAgIFN0cnVjdHVyZSogb3BlcmF0b3ItPigpIGNvbnN0Cisg
ICAgeworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1fc3RydWN0dXJlSUQ7Cisg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CisgICAgICAgIHZhbGlkYXRlQ2VsbChyZWludGVycHJl
dF9jYXN0PEpTQ2VsbCo+KHN0cnVjdHVyZSkpOworICAgICAgICByZXR1cm4gc3RydWN0dXJlOwor
ICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9
IHsgfTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhIW1fc3RydWN0dXJlSUQ7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3N0cnVjdHVyZUlEOworICAg
IH0KKworICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihTdHJ1Y3R1cmUqIHZhbHVlKQor
ICAgIHsKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgICAgIFdyaXRl
QmFycmllckNvdW50ZXJzOjp1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwLmNvdW50KCk7CisjZW5k
aWYKKyAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHsg
fTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX3N0cnVjdHVyZUlE
ID0gU3RydWN0dXJlSUQ6OmVuY29kZSh2YWx1ZSk7CisgICAgfQorCisgICAgU3RydWN0dXJlKiB1
bnZhbGlkYXRlZEdldCgpIGNvbnN0CisgICAgeworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1
cmVJRCA9IG1fc3RydWN0dXJlSUQ7CisgICAgICAgIGlmIChzdHJ1Y3R1cmVJRCkKKyAgICAgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgU3RydWN0dXJlSUQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZUlEOyB9CisKK3ByaXZhdGU6CisgICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKK307
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oCmluZGV4IGY4ODdlNTMxZjkxY2FlOWNjNDJkY2Y2
MDRhMzE2MjNlZDk3NzJlZjguLmRkYTIyNDBkNzNkN2M4MDFjNTBkYzQwOGQ0MGM1YTEzNTc1MzQw
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
cklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJp
ZXJJbmxpbmVzLmgKQEAgLTYxLDQgKzYxLDI5IEBAIGlubGluZSB2b2lkIFdyaXRlQmFycmllckJh
c2U8VW5rbm93biwgUmF3VmFsdWVUcmFpdHM8VW5rbm93bj4+OjpzZXQoVk0mIHZtLCBjb25zCiAg
ICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyLCB2YWx1ZSk7CiB9CiAKK2lubGluZSB2b2lkIFdyaXRl
QmFycmllclN0cnVjdHVyZUlEOjpzZXQoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBTdHJ1
Y3R1cmUqIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgQVNTRVJUKCFPcHRpb25z
Ojp1c2VDb25jdXJyZW50SklUKCkgfHwgIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgdmFs
aWRhdGVDZWxsKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpKTsKKyAgICBzZXRFYXJs
eVZhbHVlKHZtLCBvd25lciwgdmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJT
dHJ1Y3R1cmVJRDo6c2V0TWF5QmVOdWxsKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgU3Ry
dWN0dXJlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHZhbGlkYXRlQ2VsbChy
ZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKSk7CisgICAgc2V0RWFybHlWYWx1ZSh2bSwg
b3duZXIsIHZhbHVlKTsKK30KKworaW5saW5lIHZvaWQgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQ6
OnNldEVhcmx5VmFsdWUoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIHZh
bHVlKQoreworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHsgfTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQ6
OmVuY29kZSh2YWx1ZSk7CisgICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyLCByZWludGVycHJldF9j
YXN0PEpTQ2VsbCo+KHZhbHVlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQyAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggM2NlMGRlNDI0MWM5
NTk1YmE4ODYxN2IxNWIzN2JmYzU2OTczY2U1MS4uMmFhYTNlYjc4MTg0YTViMmJkNTZiMmMwMDI1
M2M3MTJjMzQ4MzQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hl
YXBWZXJpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJp
Zmllci5jcHAKQEAgLTIzMCwxNCArMjMwLDEwIEBAIGJvb2wgSGVhcFZlcmlmaWVyOjp2YWxpZGF0
ZUpTQ2VsbChWTSogZXhwZWN0ZWRWTSwgSlNDZWxsKiBjZWxsLCBDZWxsUHJvZmlsZSogcHJvCiAK
ICAgICAgICAgLy8gMi4gVmFsaWRhdGUgdGhlIGNlbGwncyBzdHJ1Y3R1cmUKIAotICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAg
IGlmICghc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBwcmludEhlYWRlckFuZENlbGwoKTsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgdWludDMyX3Qgc3RydWN0dXJlSURBc1VpbnQz
MiA9IHN0cnVjdHVyZUlEOwotI2Vsc2UKLSAgICAgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUlE
QXNVaW50MzIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCk7Ci0jZW5k
aWYKKyAgICAgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUlEQXNVaW50MzIgPSBzdHJ1Y3R1cmVJ
RC5iaXRzKCk7CiAgICAgICAgICAgICBkYXRhTG9nKCIgd2l0aCBzdHJ1Y3R1cmVJRCAiLCBzdHJ1
Y3R1cmVJREFzVWludDMyLCAiIG1hcHMgdG8gYSBOVUxMIFN0cnVjdHVyZSBwb2ludGVyXG4iKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMjg1LDcgKzI4MSw3IEBA
IGJvb2wgSGVhcFZlcmlmaWVyOjp2YWxpZGF0ZUpTQ2VsbChWTSogZXhwZWN0ZWRWTSwgSlNDZWxs
KiBjZWxsLCBDZWxsUHJvZmlsZSogcHJvCiAKICAgICAgICAgLy8gMy4gVmFsaWRhdGUgdGhlIGNl
bGwncyBzdHJ1Y3R1cmUncyBzdHJ1Y3R1cmUuCiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZVN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlU3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7
CiAgICAgICAgIGlmICghc3RydWN0dXJlU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBwcmludEhl
YWRlckFuZENlbGwoKTsKICAgICAgICAgICAgIGRhdGFMb2coIiBoYXMgc3RydWN0dXJlICIsIFJh
d1BvaW50ZXIoc3RydWN0dXJlKSwgIiB3aG9zZSBzdHJ1Y3R1cmUgaXMgTlVMTFxuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuY3BwCmluZGV4IDBjOThmZDRhMGNiYjgz
NzgxNzM3ZDVlZDNiOGQwNGViZDljOGMzZTYuLjEyZjE5MTNhYzUxNTdjOGMzYTEwZTVjOWI5Y2Ji
ZGZiODExOWRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRl
Z3JpdHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuaAppbmRleCA3MWU4MWI4MjNiNTA0NTA0
ODg2ZTkzZTBhOTRhY2IyMmI1OTNlOGQ5Li43NmNlOTg4Y2M4YzkxYTJjOTcwZmRiNTE5NTYxMjI3
MGE2N2FlZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdy
aXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0j
aW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlELmgiCiAj
aW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIApAQCAtMTAw
LDggKzEwMCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBhdWRpdENlbGwoVk0mIHZtLCBKU1ZhbHVl
IHZhbHVlKQogICAgICAgICBhdWRpdENlbGw8YXVkaXRMZXZlbD4odm0sIHZhbHVlLmFzQ2VsbCgp
KTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJlSUQoU3RydWN0dXJlSURU
YWJsZSYsIFN0cnVjdHVyZUlEKTsKLUFMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlE
KFZNJiwgU3RydWN0dXJlSUQpOworQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJlSUQo
U3RydWN0dXJlSUQpOwogCiB9IC8vIG5hbWVzcGFjZSBJbnRlZ3JpdHkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgKaW5kZXggZjUwNGRjOTM5MDIx
ZjY1MTc2Y2EwZTUyOGZjMzcyZDk0YzgyOWIyYS4uY2E5M2ZkMGJiMDc4N2Y2MDBjNTVhMWFmMTQw
NWZlOWQzM2M4YjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0lu
dGVncml0eUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdy
aXR5SW5saW5lcy5oCkBAIC03MywxNCArNzMsMTMgQEAgQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0
Q2VsbFJhbmRvbWx5KFZNJiB2bSwgSlNDZWxsKiBjZWxsKQogICAgICAgICBhdWRpdENlbGxGdWxs
eSh2bSwgY2VsbCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFN0
cnVjdHVyZUlEVGFibGUmIHRhYmxlLCBTdHJ1Y3R1cmVJRCBpZCkKLXsKLSAgICB0YWJsZS52YWxp
ZGF0ZShpZCk7Ci19CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFZNJiB2
bSwgU3RydWN0dXJlSUQgaWQpCitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKIHsKLSAgICBhdWRpdFN0cnVjdHVyZUlEKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLCBpZCk7CisgICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVyZUlEKTsK
KyNpZiBDUFUoQUREUkVTUzY0KQorICAgIEFTU0VSVChzdHJ1Y3R1cmVJRC5iaXRzKCkgPD0gc3Ry
dWN0dXJlSGVhcEFkZHJlc3NTaXplICsgU3RydWN0dXJlSUQ6Om51a2VkU3RydWN0dXJlSURCaXQp
OworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEludGVncml0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGQzZmE4MGNhMWRiOTUwZWRmNGIxMGMy
ZDVhM2U1ZmI1MzUzZmZmMjQuLmI1ODkwMTQ2NDg2ODY1MDIzYmExNTg3OWJkNjNjODQxOGRjODk1
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTM1
ODIsNyArMzU4Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkdldFN0cnVj
dHVyZVRyYW5zaXRpb25MaXN0LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cnVjdHVyZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byogc3Ry
dWN0dXJlID0gc3RydWN0dXJlc1tzdHJ1Y3R1cmVzLnNpemUoKSAtIGkgLSAxXTsKLSAgICAgICAg
cmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgSlNWYWx1ZShzdHJ1Y3R1cmUtPmlkKCkpKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgSlNWYWx1ZShzdHJ1Y3R1cmUtPmlkKCku
Yml0cygpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIEpTVmFsdWUoc3RydWN0dXJlLT50cmFuc2l0
aW9uT2Zmc2V0KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
QEAgLTQwMDksNyArNDAwOSw3IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogCiAgICAgYWRkRnVuY3Rpb24odm0sICJlbnN1cmVBcnJheVN0b3JhZ2UiLCBmdW5jdGlv
bkVuc3VyZUFycmF5U3RvcmFnZSwgMSk7CiAKLSAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1
dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERv
aW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKSk7CisgICAgbV9vYmplY3REb2luZ1NpZGVFZmZl
Y3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmVJRC5zZXQodm0sIHRoaXMsIE9i
amVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKSk7CiB9CiAKIHZvaWQgSlNEb2xsYXJW
TTo6YWRkRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRz
KQpAQCAtNDAzMSw3ICs0MDMxLDcgQEAgdm9pZCBKU0RvbGxhclZNOjp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNEb2xsYXJWTSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RvbGxhclZNKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3REb2luZ1NpZGVF
ZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmVJRCk7CiB9CiAKIERFRklO
RV9WSVNJVF9DSElMRFJFTihKU0RvbGxhclZNKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5oCmluZGV4IDBmNWQ4YWQzNTlkYjY1MjRiMDAwNGM1MTZiODUwMTYzZmU3Nzcw
MzYuLjAzZmUwYTk2MDNlNDBlM2QyNzA3MDcwNDgwNmVlODAyZTdjNTdjMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIG9iamVj
dERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVz
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBvYmplY3REb2luZ1NpZGVFZmZlY3RQ
dXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX29iamVjdERv
aW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZUlELmdldCgp
OyB9CiAgICAgCiBwcml2YXRlOgogICAgIEpTRG9sbGFyVk0oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIERFQ0xBUkVfVklTSVRf
Q0hJTERSRU47CiAKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamVjdERvaW5nU2lk
ZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZTsKKyAgICBXcml0ZUJh
cnJpZXJTdHJ1Y3R1cmVJRCBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0
U2xvdFN0YXR1c1N0cnVjdHVyZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CmluZGV4IDJiOTI3NTkzYjQzZjQ2MGE4YWFiNzE2MTA2MGU1ZGQ3NGRiNDdiNmYuLmM3ODczNzNm
N2M5MmRhYmY0ZDQxMDNjYWI3ZGNlODNmOGEzMDJkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0yNjYsNyAr
MjY2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5
RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICBzbG93UGF0
aC5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAg
ICAgICBzdGFja0xpbWl0R1BSSXNDbG9iYmVyZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGpp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUiwgc3RhY2tMaW1p
dEdQUik7CisgICAgICAgICAgICAgICAgaml0LmVtaXRMb2FkU3RydWN0dXJlKHZtLCBzY3JhdGNo
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNj
cmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFs
PFdlYkFzc2VtYmx5RnVuY3Rpb24+Ojp2YWx1ZSwgIldlIGRvIG5vdCBjaGVjayBmb3Igc3VidHlw
ZXMgYmVsb3ciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAppbmRleCBjN2IzZDZmN2U5NDUxMWMx
OGFkZmQ3YTc2Yzg5MjE5NjkwNjRlOTVjLi4xOGE0ZDFmOTFkZmZlNGQ0ODViYzY3Yzk5MTFiYjgw
NGQyMzljZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlHbG9iYWwqIGdldEdsb2JhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgICAgICBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiZXhwZWN0ZWQgfHRoaXN8IHZhbHVlIHRvIGJlIGFuIGluc3RhbmNlIG9mIFdlYkFz
c2VtYmx5Lkdsb2JhbCJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
SW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCByZXN1bHQtPnN0cnVjdHVyZUlEKCkpOwor
ICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChyZXN1bHQtPnN0cnVjdHVyZUlEKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09TQWxs
b2NhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCmluZGV4IDI2ODhhNGVmZGY4
MTdkYjdhZjY2Njk4NzVkZjIzYTc5ODkzNmFhMTQuLjNkZWEzZDg5NDI0NjE1YTFiZGZmMTljYzFh
MmYwZjhiMTViODUwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaApAQCAtMzksMTEgKzM5LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgSlNKSVRDb2RlUGFnZXMgPSBWTV9UQUdfRk9SX0VYRUNVVEFCTEVBTExP
Q0FUT1JfTUVNT1JZLAogICAgIH07CiAKLSAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRy
aWM7IHJlc2VydmVVbmNvbW1pdHRlZCBhbGxvY2F0ZXMgVk0gaW4gYW4gdW5jb21taXR0ZWQgc3Rh
dGUsCisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlVW5jb21taXR0
ZWQoQWxpZ25lZCkgYWxsb2NhdGVzIFZNIGluIGFuIHVuY29tbWl0dGVkIHN0YXRlLAogICAgIC8v
IHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFs
bG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKLSAgICAvLyB0aGUgbWVtb3J5IG11c3Qg
YWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLiByZXNlcnZlVW5jb21taXR0
ZWQgcmV0dXJucyB0bworICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGlu
IGEgZGVjb21taXR0ZWQgc3RhdGUuIHJlc2VydmVVbmNvbW1pdHRlZChBbGlnbmVkKSByZXR1cm5z
IHRvCiAgICAgLy8geW91IG1lbW9yeSB0aGF0IGlzIHplcm9lZC4KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5r
bm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2Us
IGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBm
YWxzZSk7CisgICAgLy8gVGhpcyBndWFyYW50ZWVzIHRoZSBtZW1vcnkgd2lsbCBiZSBhbGlnbmVk
IHRvIGEgbXVsdGlwbGUgb2YgdGhlIHJlcXVlc3RlZCBzaXplLiBUaGUgcmVxdWVzdGVkCisgICAg
Ly8gc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGFuZCBncmVhdGVyIHRoYW4gdGhlIHN5c3Rl
bSBwYWdlIHNpemUuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiB0cnlSZXNl
cnZlVW5jb21taXR0ZWRBbGlnbmVkKHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wg
d3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5h
YmxlZCA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXpl
X3QpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyB0aGV5IGNvbW1pdCBv
ciBkZWNvbW1pdCBhIHJlZ2lvbiBvZiBWTSAodW5jb21taXR0ZWQgVk0gc2hvdWxkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDZjZWZkMmVlMmQzMTA1YzJk
NDA0ODVmNjk2NWZlYmE4ODQ1YjQzM2UuLjQxNmE3MDA3NmE0MjNhNDIzNGQ2MGRlMjA4ZGY5NDgw
MGU5Mzk5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9T
SVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvbW1hbi5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAKICNpZiBFTkFCTEUoSklUX0NBR0UpCkBA
IC00MywzNiArNDQsMTMgQEAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVF9DQUdFKQogCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2Vy
dmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBi
b29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBh
Z2VzKQotewotI2lmIE9TKExJTlVYKQotICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHdyaXRhYmxlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGppdENhZ2VFbmFibGVkKTsKLSAgICBVTlVTRURfUEFSQU0oaW5jbHVkZXNH
dWFyZFBhZ2VzKTsKLQotICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBST1RfTk9O
RSwgTUFQX05PUkVTRVJWRSB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKLSAgICBp
ZiAocmVzdWx0ID09IE1BUF9GQUlMRUQpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgbWFkdmlzZShy
ZXN1bHQsIGJ5dGVzLCBNQURWX0RPTlRORUVEKTsKLSNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0g
cmVzZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRD
YWdlRW5hYmxlZCwgaW5jbHVkZXNHdWFyZFBhZ2VzKTsKLSNpZiBIQVZFKE1BRFZfRlJFRV9SRVVT
RSkKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIC8vIFRvIHN1cHBvcnQgdGhlICJyZXNlcnZl
IHRoZW4gY29tbWl0IiBtb2RlbCwgd2UgaGF2ZSB0byBpbml0aWFsbHkgZGVjb21taXQuCi0gICAg
ICAgIHdoaWxlIChtYWR2aXNlKHJlc3VsdCwgYnl0ZXMsIE1BRFZfRlJFRV9SRVVTQUJMRSkgPT0g
LTEgJiYgZXJybm8gPT0gRUFHQUlOKSB7IH0KLSAgICB9Ci0jZW5kaWYKLQorI2lmIE9TKERBUldJ
TikKKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL01hY2hWTVNQSS5oPgogI2VuZGlmCiAKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQorbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpy
ZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
IGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJk
UGFnZXMpCitzdGF0aWMgdm9pZCogdHJ5UmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIE9T
QWxsb2NhdG9yOjpVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sIGppdENhZ2VFbmFibGVkLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKIHsKICAgICAvLyBB
bGwgUE9TSVggcmVzZXJ2YXRpb25zIHN0YXJ0IG91dCBsb2dpY2FsbHkgY29tbWl0dGVkLgogICAg
IGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEOwpAQCAtMTAwLDcgKzc4LDcgQEAgdm9pZCogT1NB
bGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9v
bCB3cml0YWJsZSwgYm8KICAgICBpbnQgZmQgPSAtMTsKICNlbmRpZgogCi0gICAgdm9pZCogcmVz
dWx0ID0gMDsKKyAgICB2b2lkKiByZXN1bHQgPSBudWxscHRyOwogI2lmIChPUyhEQVJXSU4pICYm
IENQVShYODZfNjQpKQogICAgIGlmIChleGVjdXRhYmxlKSB7CiAgICAgICAgIEFTU0VSVChpbmNs
dWRlc0d1YXJkUGFnZXMpOwpAQCAtMTIyLDEyICsxMDAsOCBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6
cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxl
LCBibwogI2VuZGlmCiAKICAgICByZXN1bHQgPSBtbWFwKHJlc3VsdCwgYnl0ZXMsIHByb3RlY3Rp
b24sIGZsYWdzLCBmZCwgMCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBNQVBfRkFJTEVEKSB7Ci0gICAg
ICAgIGlmIChleGVjdXRhYmxlKQotICAgICAgICAgICAgcmVzdWx0ID0gMDsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgQ1JBU0goKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdCA9PSBNQVBfRkFJ
TEVEKQorICAgICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIGlmIChyZXN1bHQgJiYgaW5jbHVk
ZXNHdWFyZFBhZ2VzKSB7CiAgICAgICAgIC8vIFdlIHVzZSBtbWFwIHRvIHJlbWFwIHRoZSBndWFy
ZHBhZ2VzIHJhdGhlciB0aGFuIHVzaW5nIG1wcm90ZWN0IGFzCiAgICAgICAgIC8vIG1wcm90ZWN0
IHJlc3VsdHMgaW4gbXVsdGlwbGUgcmVmZXJlbmNlcyB0byB0aGUgY29kZSByZWdpb24uIFRoaXMK
QEAgLTEzOSw2ICsxMTMsOTYgQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQo
c2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm8KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitzdGF0aWMgdm9pZCogdHJ5UmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBi
eXRlcywgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1
dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQorewor
I2lmIE9TKExJTlVYKQorICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7CisgICAgVU5VU0VEX1BBUkFN
KHdyaXRhYmxlKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZSk7CisgICAgVU5VU0VEX1BB
UkFNKGppdENhZ2VFbmFibGVkKTsKKyAgICBVTlVTRURfUEFSQU0oaW5jbHVkZXNHdWFyZFBhZ2Vz
KTsKKworICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBST1RfTk9ORSwgTUFQX05P
UkVTRVJWRSB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKyAgICBpZiAocmVzdWx0
ICE9IE1BUF9GQUlMRUQpCisgICAgICAgIG1hZHZpc2UocmVzdWx0LCBieXRlcywgTUFEVl9ET05U
TkVFRCk7CisjZWxzZQorICAgIHZvaWQqIHJlc3VsdCA9IHRyeVJlc2VydmVBbmRDb21taXQoYnl0
ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVz
R3VhcmRQYWdlcyk7CisjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0UpCisgICAgaWYgKHJlc3VsdCkg
eworICAgICAgICAvLyBUbyBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1pdCIgbW9kZWws
IHdlIGhhdmUgdG8gaW5pdGlhbGx5IGRlY29tbWl0LgorICAgICAgICB3aGlsZSAobWFkdmlzZShy
ZXN1bHQsIGJ5dGVzLCBNQURWX0ZSRUVfUkVVU0FCTEUpID09IC0xICYmIGVycm5vID09IEVBR0FJ
TikgeyB9CisgICAgfQorI2VuZGlmCisKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVz
YWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVu
YWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQoreworICAgIHZvaWQqIHJlc3VsdCA9IHRy
eVJlc2VydmVVbmNvbW1pdHRlZChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBq
aXRDYWdlRW5hYmxlZCwgaW5jbHVkZXNHdWFyZFBhZ2VzKTsKKyAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqIE9TQWxsb2NhdG9yOjp0cnlS
ZXNlcnZlVW5jb21taXR0ZWRBbGlnbmVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wg
d3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNs
dWRlc0d1YXJkUGFnZXMpCit7CisgICAgQVNTRVJUKGhhc09uZUJpdFNldChieXRlcykgJiYgYnl0
ZXMgPj0gcGFnZVNpemUoKSk7CisKKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsgLy8gTm90IHN1cHBvcnRlZCBmb3Ig
bWFjaCBBUEkuCisgICAgQVNTRVJUX1VOVVNFRChpbmNsdWRlc0d1YXJkUGFnZXMsICFpbmNsdWRl
c0d1YXJkUGFnZXMpOworICAgIEFTU0VSVF9VTlVTRUQoaml0Q2FnZUVuYWJsZWQsICFqaXRDYWdl
RW5hYmxlZCk7IC8vIE5vdCBzdXBwb3J0ZWQgZm9yIG1hY2ggQVBJLgorICAgIHZtX3Byb3RfdCBw
cm90ZWN0aW9ucyA9IFZNX1BST1RfUkVBRDsKKyAgICBpZiAod3JpdGFibGUpCisgICAgICAgIHBy
b3RlY3Rpb25zIHw9IFZNX1BST1RfV1JJVEU7CisgICAgaWYgKGV4ZWN1dGFibGUpCisgICAgICAg
IHByb3RlY3Rpb25zIHw9IFZNX1BST1RfRVhFQ1VURTsKKworICAgIGNvbnN0IHZtX2luaGVyaXRf
dCBjaGlsZFByb2Nlc3NJbmhlcml0YW5jZSA9IFZNX0lOSEVSSVRfREVGQVVMVDsKKyAgICBjb25z
dCBib29sIGNvcHkgPSBmYWxzZTsKKyAgICBjb25zdCBpbnQgZmxhZ3MgPSBWTV9GTEFHU19BTllX
SEVSRTsKKworICAgIHZvaWQqIGFsaWduZWQgPSBudWxscHRyOworICAgIGtlcm5fcmV0dXJuX3Qg
cmVzdWx0ID0gbWFjaF92bV9tYXAobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDxt
YWNoX3ZtX2FkZHJlc3NfdCo+KCZhbGlnbmVkKSwgYnl0ZXMsIGJ5dGVzIC0gMSwgZmxhZ3MsIE1F
TU9SWV9PQkpFQ1RfTlVMTCwgMCwgY29weSwgcHJvdGVjdGlvbnMsIHByb3RlY3Rpb25zLCBjaGls
ZFByb2Nlc3NJbmhlcml0YW5jZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9
PSBLRVJOX1NVQ0NFU1MgfHwgIWFsaWduZWQpOworI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQor
ICAgIGlmIChhbGlnbmVkKSB7CisgICAgICAgIC8vIFRvIHN1cHBvcnQgdGhlICJyZXNlcnZlIHRo
ZW4gY29tbWl0IiBtb2RlbCwgd2UgaGF2ZSB0byBpbml0aWFsbHkgZGVjb21taXQuCisgICAgICAg
IHdoaWxlIChtYWR2aXNlKGFsaWduZWQsIGJ5dGVzLCBNQURWX0ZSRUVfUkVVU0FCTEUpID09IC0x
ICYmIGVycm5vID09IEVBR0FJTikgeyB9CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gYWxp
Z25lZDsKKyNlbHNlCisgICAgLy8gRG91YmxlIHRoZSBzaXplIHNvIHdlIGNhbiBlbnN1cmUgZW5v
dWdoIG1hcHBlZCBtZW1vcnkgdG8gZ2V0IGFuIGFsaWduZWQgc3RhcnQuCisgICAgc2l6ZV90IG1h
cHBlZFNpemUgPSBieXRlcyAqIDI7CisgICAgY2hhciogbWFwcGVkID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4odHJ5UmVzZXJ2ZVVuY29tbWl0dGVkKG1hcHBlZFNpemUsIHVzYWdlLCB3cml0YWJs
ZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcykpOworICAg
IGNoYXIqIG1hcHBlZEVuZCA9IG1hcHBlZCArIG1hcHBlZFNpemU7CisKKyAgICBjaGFyKiBhbGln
bmVkID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm91bmRVcFRvTXVsdGlwbGVPZihieXRlcywg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1hcHBlZCkpKTsKKyAgICBjaGFyKiBhbGlnbmVk
RW5kID0gYWxpZ25lZCArIGJ5dGVzOworCisgICAgUkVMRUFTRV9BU1NFUlQoYWxpZ25lZEVuZCA8
PSBtYXBwZWRFbmQpOworCisgICAgaWYgKHNpemVfdCBsZWZ0RXh0cmEgPSBhbGlnbmVkIC0gbWFw
cGVkKQorICAgICAgICByZWxlYXNlRGVjb21taXR0ZWQobWFwcGVkLCBsZWZ0RXh0cmEpOworCisg
ICAgaWYgKHNpemVfdCByaWdodEV4dHJhID0gbWFwcGVkRW5kIC0gYWxpZ25lZEVuZCkKKyAgICAg
ICAgcmVsZWFzZURlY29tbWl0dGVkKGFsaWduZWRFbmQsIHJpZ2h0RXh0cmEpOworCisgICAgcmV0
dXJuIGFsaWduZWQ7CisjZW5kaWYKK30KKwordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRD
b21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVj
dXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVkLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3sK
KyAgICB2b2lkKiByZXN1bHQgPSB0cnlSZXNlcnZlQW5kQ29tbWl0KGJ5dGVzLCB1c2FnZSwgd3Jp
dGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBpbmNsdWRlc0d1YXJkUGFnZXMpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCB8fCBleGVjdXRhYmxlKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB2b2lkIE9TQWxsb2NhdG9yOjpjb21taXQodm9pZCogYWRkcmVzcywgc2l6ZV90
IGJ5dGVzLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCiB7CiAjaWYgT1MoTElOVVgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcAppbmRleCA5NGRmYzc2MWY3ODE2ZmYw
YTk1ZjdiNTYwNzg1YzAzMmZjNzdjNTM1Li5kYjRhMjJhZmY2OGY0OGJiYzU1ZjAxMWRmOTYwZGRh
ODUwMjUwMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTUyLDYg
KzUyLDI0IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5
dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAordm9pZCogT1NBbGxvY2F0b3I6OnRyeVJlc2VydmVVbmNvbW1pdHRlZEFsaWduZWQoc2l6ZV90
IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29s
LCBib29sKQoreworICAgIEFTU0VSVChoYXNPbmVCaXRTZXQoYnl0ZXMpICYmIGJ5dGVzID49IHBh
Z2VTaXplKCkpOworICAgIGlmIChWaXJ0dWFsQWxsb2MyUHRyKCkpIHsKKyAgICAgICAgTUVNX0FE
RFJFU1NfUkVRVUlSRU1FTlRTIGFkZHJlc3NSZXFzID0geyB9OworICAgICAgICBNRU1fRVhURU5E
RURfUEFSQU1FVEVSIHBhcmFtID0geyB9OworICAgICAgICBhZGRyZXNzUmVxcy5BbGlnbm1lbnQg
PSBieXRlczsKKyAgICAgICAgcGFyYW0uVHlwZSA9IE1lbUV4dGVuZGVkUGFyYW1ldGVyQWRkcmVz
c1JlcXVpcmVtZW50czsKKyAgICAgICAgcGFyYW0uUG9pbnRlciA9ICZhZGRyZXNzUmVxczsKKyAg
ICAgICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jMlB0cigpKG51bGxwdHIsIG51bGxwdHIs
IGJ5dGVzLCBNRU1fUkVTRVJWRSwgcHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSksICZw
YXJhbSwgMSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCogcmVz
dWx0ID0gVmlydHVhbEFsbG9jKG51bGxwdHIsIGJ5dGVzLCBNRU1fUkVTRVJWRSwgcHJvdGVjdGlv
bih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOworICAgIGNoYXIqIGFsaWduZWQgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihyb3VuZFVwVG9NdWx0aXBsZU9mKGJ5dGVzLCByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4ocmVzdWx0KSkpOworICAgIHJldHVybiBhbGlnbmVkOworfQorCiB2b2lkKiBP
U0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdy
aXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wsIGJvb2wpCiB7CiAgICAgdm9pZCogcmVzdWx0
ID0gVmlydHVhbEFsbG9jKG51bGxwdHIsIGJ5dGVzLCBNRU1fUkVTRVJWRSB8IE1FTV9DT01NSVQs
IHByb3RlY3Rpb24od3JpdGFibGUsIGV4ZWN1dGFibGUpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450407</attachid>
            <date>2022-01-31 07:03:33 -0800</date>
            <delta_ts>2022-01-31 08:06:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235720-20220131100332.patch</filename>
            <type>text/plain</type>
            <size>279221</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NjY0OTQwY2Q3ZTg5ZmNjY2RiMWU1Yjc4N2UxODI1YmU1MWRlYjY1Li4wOTJjODVjMTMxMTAxNDA3
Y2FmOWQ0NTVlMmU1NmNmYjk2NWFkMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMzcgQEAKKzIwMjItMDEtMjcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVsYW5kIFN0cnVjdHVyZUlEIG92ZXJoYXVsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIENoYW5nZXMgc2luY2UgcmV2ZXJ0
OgorCisgICAgICAgIEhhdmUgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvciBrZWVwIGhh
bHZpbmcgdGhlIHNpemUgb2YgVkEKKyAgICAgICAgcG9vbCBpdCB3aWxsIGFsbG9jYXRlIGZyb20g
dW50aWwgaXQgc3VjY2Vzc2Z1bGx5IHJlc2VydmVzIHRoZQorICAgICAgICBhZGRyZXNzIHNwYWNl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
QWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRD
ZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZHVtcCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NDYXNlOjpjYW5CZVNoYXJlZCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6QWNjZXNzQ2Fz
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1
dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5z
aXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZE1v
ZGVNZXRhZGF0YTo6R2V0QnlJZE1vZGVNZXRhZGF0YSk6CisgICAgICAgIChKU0M6OkdldEJ5SWRN
b2RlTWV0YWRhdGE6OmNsZWFyVG9EZWZhdWx0TW9kZVdpdGhvdXRDYWNoZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29t
cHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAg
ICAgKiBieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAg
ICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVj
dHVyZUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
OjpzdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblBy
b2ZpbGU6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Q
cm9maWxlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb25B
bGxvY2F0aW9uUHJvZmlsZTo6Y3JlYXRlQWxsb2NhdGlvblN0cnVjdHVyZUZyb21CYXNlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0
cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hh
aW4uY3BwOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6bmVlZEltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seVByb3RvQWNj
ZXNzQ2hhaW4uaDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5U3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgor
ICAgICAgICAoSlNDOjpQdXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAg
KiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
RnJvbUNlbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEluQnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmlubGluZUFjY2Vzc0Jhc2VTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVB
Y2Nlc3NCYXNlU3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6ZmluYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVu
ZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRl
UHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogaGVhcC9BYnN0cmFj
dFNsb3RWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9BYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yOjphcHBlbmQpOgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yOjphcHBlbmRIaWRkZW4pOgorICAgICAgICAqIGhl
YXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpI
ZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6
OkhlYXA6OnN0cnVjdHVyZUlEVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Oklzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3I6Oklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpJc29B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6Oklzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeU1hbGxvY0Jsb2NrKToKKyAg
ICAgICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6Y29tbWl0QmxvY2spOgorICAgICAg
ICAoSlNDOjpJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkZWNvbW1pdEJsb2NrKToKKyAgICAg
ICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVBbGlnbmVkTWVt
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6
ZnJlZUFsaWduZWRNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSXNvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IuY3BwLgorICAgICAgICAoSlNDOjpJc29NZW1vcnlBbGxvY2F0b3JCYXNlOjpJ
c29NZW1vcnlBbGxvY2F0b3JCYXNlKToKKyAgICAgICAgKEpTQzo6SXNvTWVtb3J5QWxsb2NhdG9y
QmFzZTo6fklzb01lbW9yeUFsbG9jYXRvckJhc2UpOgorICAgICAgICAoSlNDOjpJc29NZW1vcnlB
bGxvY2F0b3JCYXNlOjpyZWxlYXNlTWVtb3J5RnJvbVN1YmNsYXNzRGVzdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6Oklzb01lbW9yeUFsbG9jYXRvckJhc2U6OnRyeUFsbG9jYXRlQWxpZ25lZE1lbW9y
eSk6CisgICAgICAgIChKU0M6Oklzb01lbW9yeUFsbG9jYXRvckJhc2U6OmZyZWVBbGlnbmVkTWVt
b3J5KToKKyAgICAgICAgKiBoZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuaDogQ29waWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
LgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpJc29TdWJz
cGFjZTo6SXNvU3Vic3BhY2UpOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6dHJ5QWxsb2Nh
dGVGcm9tTG93ZXJUaWVyKToKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmg6CisgICAgICAg
ICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByZWNpc2VBbGxv
Y2F0aW9uOjp0cnlDcmVhdGVGb3JMb3dlclRpZXIpOgorICAgICAgICAoSlNDOjpQcmVjaXNlQWxs
b2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL1By
ZWNpc2VBbGxvY2F0aW9uLmg6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAg
ICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRKU0NlbGxPckF1eGlsaWFyeSk6CisgICAgICAg
ICogaGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpT
bG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKToKKyAgICAgICAgKiBoZWFwL1N0cnVjdHVyZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5TdHJ1Y3R1cmVB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I6OnRyeUFsbG9jYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZU1lbW9yeSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeVJlYWxsb2NhdGVNZW1vcnkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVNZW1vcnlNYW5hZ2VyOjpTdHJ1Y3R1cmVNZW1vcnlNYW5h
Z2VyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlTWVtb3J5TWFuYWdlcjo6dHJ5TWFsbG9jU3Ry
dWN0dXJlQmxvY2spOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVNZW1vcnlNYW5hZ2VyOjpmcmVl
U3RydWN0dXJlQmxvY2spOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOjppbml0aWFsaXplU3RydWN0dXJlQWRkcmVzc1NwYWNlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5TWFsbG9jQmxvY2spOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpmcmVlQmxvY2spOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpjb21taXRCbG9jayk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmRlY29tbWl0
QmxvY2spOgorICAgICAgICAqIGhlYXAvU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmguCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0Tm9uTnVsbERlY29kZVN0cnVjdHVy
ZUlEKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRSYW5kb21UaHVuayk6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaFN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bnVrZVN0cnVjdHVyZUFu
ZFN0b3JlQnV0dGVyZmx5KToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y29tcHV0
ZUhhc2gpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OmdlbmVyYXRlR2V0QnlJZElubGluZUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCk6CisgICAg
ICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90eXBlb2ZfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcm90b3R5cGVf
b2YpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgICogaml0L0pJ
VFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpM
TEludDo6cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
ICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAgICog
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9ybWF0ZURhdGVJbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
ICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5j
ZTo6c2FuaXRpemVkTWVzc2FnZVN0cmluZyk6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6
OnNhbml0aXplZE5hbWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5p
dGl6ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUmFyZURhdGE6OnZpc2l0
Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAg
ICAgICAgKiBydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0b09iamVjdFNsb3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNpdEJ1
dHRlcmZseUltcGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbFVuZGVj
aWRlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW50MzIpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbERvdWJsZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpjcmVhdGVJbml0aWFsQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVy
dFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZl
cnRJbnQzMlRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRE
b3VibGVUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0Q29u
dGlndW91c1RvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVj
dEN1c3RvbUdldHRlclNldHRlcldpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bnVrZVN0
cnVjdHVyZUFuZFNldEJ1dHRlcmZseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6dG9UaGlzTnVtYmVyKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChKU0M6Om9iamVjdFByb3RvdHlwZVRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6On5TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZsYXR0ZW5E
aWN0aW9uYXJ5U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0
b3IgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6aWQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUlELmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRDo6bnVrZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEOjppc051a2VkIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSUQ6OmRlY29udGFtaW5hdGUgY29uc3QpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVJRDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUlEOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSUQ6Om9w
ZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRDo6Yml0cyBjb25zdCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEOjpTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RDo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURIYXNoOjplcXVhbCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJREJsb2IuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVSYXJlRGF0YTo6U3RydWN0dXJlUmFyZURhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6dHJ5Q2FjaGVQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yVmlhV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9n
Ojpwcm9jZXNzTG9nRW50cmllcyk6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6dmlz
aXQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmdldFN0cnVj
dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjp0cnlHZXRTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAgIChKU0M6Oldy
aXRlQmFycmllclN0cnVjdHVyZUlEOjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCk6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllclN0cnVjdHVyZUlEOjpnZXQgY29uc3QpOgorICAgICAgICAoSlND
OjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6V3JpdGVCYXJyaWVyU3RydWN0dXJlSUQ6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAo
SlNDOjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpXcml0
ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChKU0M6
OldyaXRlQmFycmllclN0cnVjdHVyZUlEOjpvcGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlND
OjpXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6c2V0V2l0aG91dFdyaXRlQmFycmllcik6CisgICAg
ICAgIChKU0M6OldyaXRlQmFycmllclN0cnVjdHVyZUlEOjp1bnZhbGlkYXRlZEdldCBjb25zdCk6
CisgICAgICAgIChKU0M6OldyaXRlQmFycmllclN0cnVjdHVyZUlEOjp2YWx1ZSBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9Xcml0ZUJhcnJpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oldy
aXRlQmFycmllclN0cnVjdHVyZUlEOjpzZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJT
dHJ1Y3R1cmVJRDo6c2V0TWF5QmVOdWxsKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyU3Ry
dWN0dXJlSUQ6OnNldEVhcmx5VmFsdWUpOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6dmFsaWRhdGVKU0NlbGwpOgorICAgICAg
ICAqIHRvb2xzL0ludGVncml0eS5jcHA6CisgICAgICAgICogdG9vbHMvSW50ZWdyaXR5Lmg6Cisg
ICAgICAgICogdG9vbHMvSW50ZWdyaXR5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlZ3Jp
dHk6OmF1ZGl0U3RydWN0dXJlSUQpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpK
U0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OnZp
c2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRHbG9iYWwp
OgorCiAyMDIyLTAxLTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtXZWIgSW5zcGVjdG9yXSBVcGRhdGUgcmV0dXJuIHZhbHVlIG5hbWUgZm9yIEFuaW1h
dGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMmI1ZmYzODdlZjgzZTQ5OGJjMGMyNDBi
ZmM2OTg4OGY2OTAwMzFmOS4uODY3YTc1YzUyOTc2NTU4MGFlOWI0ODVlNzQ2MWJkZmU4ZjVlOTAw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMS0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWxhbmQgU3RydWN0dXJlSUQgb3ZlcmhhdWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTcyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQ2hhbmdlcyBz
aW5jZSByZXZlcnQ6CisKKyAgICAgICAgQWRkIGEgdHJ5IHZlcnNpb24gb2YgcmVzZXJ2ZVVuY29t
bWl0dGVkIGFuZCByZXNlcnZlQW5kQ29tbWl0CisgICAgICAgIHNvIHRyeVJlc2VydmVVbmNvbW1p
dHRlZCBjYW4gY2FsbCB0aGVtIGlmIG5lZWRlZC4KKworICAgICAgICAqIHd0Zi9PU0FsbG9jYXRv
ci5oOgorICAgICAgICAqIHd0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcDoKKyAgICAgICAg
KFdURjo6dHJ5UmVzZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgIChXVEY6OnRyeVJlc2VydmVVbmNv
bW1pdHRlZCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQp
OgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6dHJ5UmVzZXJ2ZVVuY29tbWl0dGVkQWxpZ25l
ZCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KToKKyAgICAg
ICAgKiB3dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcDoKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0
b3I6OnRyeVJlc2VydmVVbmNvbW1pdHRlZEFsaWduZWQpOgorCiAyMDIyLTAxLTI2ICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIEJ1aWxkIGZhaWx1
cmUgd2l0aCBHQ0MgMTI6IE1lZGlhVGltZS5oOjE2Nzo3MTogZXJyb3I6IGNhbGwgdG8gbm9uLSdj
b25zdGV4cHInIGZ1bmN0aW9uICdXVEY6Ok1lZGlhVGltZSYgV1RGOjpNZWRpYVRpbWU6Om9wZXJh
dG9yPShjb25zdCBXVEY6Ok1lZGlhVGltZSYpJwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDM3Y2U3NTM3NDNjMzUzZDU4ZjY2MTE4Yjc4MzdjODc4OGU0ODE5N2UuLjc4ODM3
N2Y2NzEzOTlhMTNiMGI1MTUzMWUwYzI5YzI0NzQzZGI4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTc0NywxMSArNzQ3LDExIEBAIHNldChKYXZhU2NyaXB0Q29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmgK
ICAgICBoZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBl
ci5oCi0gICAgaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKICAgICBoZWFwL0lzb0Nl
bGxTZXQuaAogICAgIGhlYXAvSXNvSGVhcENlbGxUeXBlLmgKICAgICBoZWFwL0lzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaAogICAgIGhlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAor
ICAgIGhlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5o
CiAgICAgaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAogICAgIGhlYXAvSXNvU3Vic3BhY2VQZXJW
TS5oCkBAIC03NzgsNiArNzc4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBoZWFwL1N0cm9uZy5oCiAgICAgaGVhcC9TdHJvbmdGb3J3YXJkLmgK
ICAgICBoZWFwL1N0cm9uZ0lubGluZXMuaAorICAgIGhlYXAvU3RydWN0dXJlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oCiAgICAgaGVhcC9TdWJzcGFjZS5oCiAgICAgaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaAogICAgIGhlYXAvU3luY2hyb25vdXNuZXNzLmgKQEAgLTExNjksOCArMTE3MCw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9T
dHJ1Y3R1cmUuaAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAogICAgIHJ1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAorICAgIHJ1bnRpbWUvU3RydWN0dXJlSUQuaAogICAgIHJ1bnRpbWUvU3Ry
dWN0dXJlSURCbG9iLmgKLSAgICBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAogICAgIHJ1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2YTVjYjFlNmFiYmJkZDc2ZWVmN2M1ZjAwYjI1Y2NkNTIxZTkwZmRlLi5k
MDBiNWY0YWYyMTczOTExY2Y1ZTlkZDIxYTdhNmIzNzBhMzg1NzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODQ5LDcgKzg0OSw2IEBACiAJCTJBQUNFNjNEMThDQTVBMDMwMEVE
MDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQyRURGQTE5Nzk5RTM4
MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJ
dGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICov
OyB9OwotCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyog
U291cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzMxMTFCOEIyMzk3MjU2
NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIy
NTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8q
IEIzRWxpbWluYXRlRGVhZENvZGUuaCAqLzsgfTsKQEAgLTkyOCw2ICs5MjcsNyBAQAogCQk1MzMz
QkJEQjIxMTBGN0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0MzI4QkI5
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUzMzNCQkRD
MjExMEY3RDkwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAyQjJBRDcg
LyogREZHU3BlY3VsYXRpdmVKSVQuY3BwICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0UxMDA3NjE4
RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgKi87IH07CisJCTUzMzY5OUIzMjdBMzA3OTIwMEM5NTYxRCAvKiBJc29N
ZW1vcnlBbGxvY2F0b3JCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzM2OTlCMTI3QTMwNzg2MDBDOTU2MUQgLyogSXNvTWVtb3J5QWxsb2NhdG9y
QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYy
Mzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTMzOEVCQTMyM0FCMDRC
ODAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RUJBMjIzQUIwNEEzMDAzODI2NjIgLyog
RlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLzsgfTsKIAkJNTMzRDA3NDQyMkMyRDc5NzAwNEQy
RkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi87IH07CkBAIC0xMDg4LDYgKzEw
ODgsOCBAQAogCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CiAJ
CTUzNzA4MDZCMUZFMjMyREYwMDI5OUU0NCAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkIxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUw
MDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFC
RjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5oICovOyB9OworCQk1MzdGRUVDOTI3NDJCREEzMDBDOUVGRUUgLyogU3RydWN0dXJlSUQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzN0ZFRUM4
Mjc0MkJEQTMwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUzN0ZFRUQwMjc0MkJERTEwMEM5RUZFRSAvKiBT
dHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzdGRUVDQzI3NDJCREUwMDBDOUVGRUUgLyogU3RydWN0
dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyB9OwogCQk1MzgxQjkzOTFFNjBFOTdEMDA5
MEY3OTQgLyogV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM4MUI5MzgxRTYwRTk3RDAwOTBGNzk0IC8qIFdhc21G
YXVsdFNpZ25hbEhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MzhGMTVFNzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0
OC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzhG
MTVERDI2OEZCQkIzMDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OC5jcHAgKi87IH07CiAJCTUz
OEYxNUU4MjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTUxLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOEYxNURFMjY4RkJCQjMwMEQ2
MDFDNCAvKiBVbmlmaWVkU291cmNlMTUxLmNwcCAqLzsgfTsKQEAgLTM3MTMsOCArMzcxNSw2IEBA
CiAJCTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlv
blNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAw
MDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkFGNzM4
MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIz
NEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFD
NEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgz
NCw2ICszODM0LDggQEAKIAkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMUVFN0JDMjJERTZF
QzYwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzMjYzMUIzMjE4Nzc3QTUwMDdCODE5MSAvKiBKYXZhU2NyaXB0
Q29yZS5tb2R1bGVtYXAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS5tb2R1bGUtbWFwIjsgcGF0aCA9
IEphdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTMzNjk5QjEyN0EzMDc4NjAwQzk1NjFEIC8qIElzb01lbW9yeUFsbG9jYXRvckJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MzM2OTlCMjI3QTMwNzg3MDBDOTU2MUQgLyogSXNvTWVtb3J5QWxsb2NhdG9y
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc29NZW1vcnlBbGxvY2F0b3JCYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8q
IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJp
bGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTZWxlY3RQcmVkaWN0
YWJpbGl0eS5oOyBwYXRoID0gZnRsL0ZUTFNlbGVjdFByZWRpY3RhYmlsaXR5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3Bz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMTIsNiArNDAxNCw5IEBACiAJCTUzNzBCNEY0MUJGMjVF
QTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM3M0I0RDMyMkFEOEJGNzAwODAzNTcyIC8qIFdlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNzNCNEQ0MjJBREIzMTQwMDgwMzU3MiAvKiBXZWFrT2JqZWN0
UmVmQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha09iamVjdFJlZkNvbnN0
cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM3RkVFQzgyNzQyQkRB
MzAwQzlFRkVFIC8qIFN0cnVjdHVyZUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cnVjdHVyZUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzN0ZFRUNC
Mjc0MkJERTAwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzdGRUVDQzI3
NDJCREUwMDBDOUVGRUUgLyogU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzODFCOTM2MUU2MEU5NjYwMDkw
Rjc5NCAvKiBXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzgxQjkzODFFNjBFOTdEMDA5MEY3OTQgLyogV2FzbUZhdWx0U2ln
bmFsSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtRmF1bHRT
aWduYWxIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOEYxNUREMjY4
RkJCQjMwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDguY3BwOyBwYXRoID0gIkRlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ4LmNw
cCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01ODIzLDggKzU4Mjgs
OCBAQAogCQkJCUE3MzFCMjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTkzMkY1QkQ3MDgyMkExQzcwMDczNjk3NSAvKiBsaWJp
Y3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJOTMyRjVCRDYwODIyQTFDNzAwNzM2
OTc1IC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQlBNTA5OEIwNDFDMTZB
QTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
RERCMDRGNDIyNzhFNTZBMjAwOEQzNjc4IC8qIGxpYldURi5hIGluIEZyYW1ld29ya3MgKi8sCisJ
CQkJQTUwOThCMDQxQzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtNTkxOSw2ICs1OTI0LDcgQEAKIAkJCQk4NjAzQ0VGMDE0Qzc1M0VGMDBB
RTU5RTMgLyogdG9vbHMgKi8sCiAJCQkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdhc20g
Ki8sCiAJCQkJODZFQUM0OEMwRjkzRThCOTAwOEVDOTQ4IC8qIHlhcnIgKi8sCisJCQkJNTMzNjk5
QUYyN0EzMDZGNjAwQzk1NjFEIC8qIFJlY292ZXJlZCBSZWZlcmVuY2VzICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBKYXZhU2NyaXB0Q29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02
NzMyLDYgKzY3MzgsOCBAQAogCQkJCUUzQkYxQkFEMjM4QUFFRDEwMDNBMUMyQiAvKiBJc29IZWFw
Q2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAxMzE5NTggLyogSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJc29J
bmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAorCQkJCTUzMzY5OUIyMjdBMzA3ODcwMEM5
NTYxRCAvKiBJc29NZW1vcnlBbGxvY2F0b3JCYXNlLmNwcCAqLywKKwkJCQk1MzM2OTlCMTI3QTMw
Nzg2MDBDOTU2MUQgLyogSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oICovLAogCQkJCTBGRENFMTJD
MUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFG
QjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1MkJEQzAw
RjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtNjc5MSw2ICs2Nzk5LDggQEAK
IAkJCQkxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggKi8sCiAJCQkJQ0QxRjlC
NEEyNzBDRkUwRjAwNjE3RUI2IC8qIFN0cm9uZ0ZvcndhcmQuaCAqLywKIAkJCQkxNDU3MjI4NTE0
MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovLAorCQkJCTUzN0ZFRUNCMjc0MkJE
RTAwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLywKKwkJ
CQk1MzdGRUVDQzI3NDJCREUwMDBDOUVGRUUgLyogU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oICovLAogCQkJCTBGN0RGMTMxMUUyOTcwRDUwMDk1OTUxQiAvKiBTdWJzcGFjZS5jcHAg
Ki8sCiAJCQkJMEY3REYxMzIxRTI5NzBENTAwOTU5NTFCIC8qIFN1YnNwYWNlLmggKi8sCiAJCQkJ
MEY3REYxMzMxRTI5NzBENTAwOTU5NTFCIC8qIFN1YnNwYWNlSW5saW5lcy5oICovLApAQCAtNzM0
OSwxMSArNzM1OSwxMSBAQAogCQkJCUUzODM1MDA5MjM5MEQ5MzcwMDM2MzE2RCAvKiBXYXNtR2xv
YmFsLmggKi8sCiAJCQkJMTQ4NTIxRDUyNkVBRUJERjAwQ0MxRDFBIC8qIFdhc21IYW5kbGVySW5m
by5jcHAgKi8sCiAJCQkJMTQ4NTIxRDcyNkVBRUJGRTAwQ0MxRDFBIC8qIFdhc21IYW5kbGVySW5m
by5oICovLAotCQkJCTUyRkRBQkMyMjc4ODA3NjkwMEMxNUI1OSAvKiBXYXNtSVJHZW5lcmF0b3JI
ZWxwZXJzLmggKi8sCiAJCQkJQUQ4RkYzOTYxRUI1QkQ4NTAwODdGRjgyIC8qIFdhc21JbmRleE9y
TmFtZS5jcHAgKi8sCiAJCQkJQUQ4RkYzOTUxRUI1QkQ4NTAwODdGRjgyIC8qIFdhc21JbmRleE9y
TmFtZS5oICovLAogCQkJCUFENUMzNkRFMUY2OTlFQjYwMDBCQ0FBRiAvKiBXYXNtSW5zdGFuY2Uu
Y3BwICovLAogCQkJCUFENUMzNkRGMUY2OTlFQjYwMDBCQ0FBRiAvKiBXYXNtSW5zdGFuY2UuaCAq
LywKKwkJCQk1MkZEQUJDMjI3ODgwNzY5MDBDMTVCNTkgLyogV2FzbUlSR2VuZXJhdG9ySGVscGVy
cy5oICovLAogCQkJCUFEMDA2NTlEMUVDQUM3RkUwMDBDQTkyNiAvKiBXYXNtTGltaXRzLmggKi8s
CiAJCQkJMTRDNUFENjgyMkYzM0ZCRjAwRjFGQjgzIC8qIFdhc21MTEludEdlbmVyYXRvci5jcHAg
Ki8sCiAJCQkJMTRDNUFENjkyMkYzM0ZCRjAwRjFGQjgzIC8qIFdhc21MTEludEdlbmVyYXRvci5o
ICovLApAQCAtODE5Miw5ICs4MjAyLDggQEAKIAkJCQk3OTg2OTQzQTFGOEMwQUM4MDA5MjMyQUUg
LyogU3RydWN0dXJlQ2FjaGUuaCAqLywKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBT
dHJ1Y3R1cmVDaGFpbi5oICovLAorCQkJCTUzN0ZFRUM4Mjc0MkJEQTMwMEM5RUZFRSAvKiBTdHJ1
Y3R1cmVJRC5oICovLAogCQkJCTJBQUFBMzEwMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJ
REJsb2IuaCAqLywKLQkJCQkyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURU
YWJsZS5jcHAgKi8sCi0JCQkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlE
VGFibGUuaCAqLywKIAkJCQkwRkQyQzkyMzE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5s
aW5lcy5oICovLAogCQkJCUMyRjBGMkQwMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAgKi8sCiAJCQkJQzJGRTE4QTMxNkJBRUM0MDAwQUYzMDYxIC8qIFN0cnVjdHVyZVJh
cmVEYXRhLmggKi8sCkBAIC0xMDAyNCw3ICsxMDAzMyw2IEBACiAJCQkJMEZCRTBGNzMxNkMxREIw
NTAwODJDNUU4IC8qIERGR0NQU1JldGhyZWFkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RDg5Q0Y2MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NF
UGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyQ0FFQzc1Mjc5MEI4RkIwMEREQkFBRiAvKiBT
ZWN1cmVBUk02NEVIYXNoUGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3
NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0JGQTVEMDIx
RTg1M0ExMDA5QzBFQkEgLyogREZHRGVzaXJlZEdsb2JhbFByb3BlcnR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDc3LDYgKzEwNDg1LDcgQEAKIAkJCQlFM0JGMUJBRTIz
OEFBRURCMDAzQTFDMkIgLyogSXNvSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
M0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFw
Q2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzM2OTlCMzI3QTMwNzkyMDBD
OTU2MUQgLyogSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
Q0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQyRkQ5NTIwQjUyQkUyMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJW
TS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDk2OCw2ICsxMDk3Nyw4IEBACiAJCQkJQTU0Q0YyRkEx
ODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1
MTY1RDUxQkRGMTM1QTAwM0I3NUMxIC8qIFNjcmlwdFByb2ZpbGluZ1Njb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUyQ0FFQzc1Mjc5MEI4RkIwMEREQkFBRiAvKiBTZWN1cmVBUk02NEVI
YXNoUGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJDQUVDNzYyNzkwQjkwMTAwRERCQUFGIC8q
IFNlY3VyZUFSTTY0RUhhc2hQaW5zSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlE
QTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2NURBMEM4MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRTdGF0dXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTEwMjQsMTAgKzExMDM1LDExIEBACiAJCQkJ
Q0QxRjlCNEIyNzBDRkUwRjAwNjE3RUI2IC8qIFN0cm9uZ0ZvcndhcmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MzdGRUVEMDI3NDJCREUxMDBDOUVGRUUgLyogU3RydWN0dXJlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk4Njk0M0IxRjhDMEFD
QzAwOTIzMkFFIC8qIFN0cnVjdHVyZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcw
OTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzN0ZFRUM5Mjc0MkJEQTMwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVJRC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1
Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZFMThBNDE2QkFFQzQwMDBBRjMw
NjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMEJBOTJEMTZC
QjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMTExNTcsNiArMTExNjksNyBAQAogCQkJCTE0ODUyMUQ4MjZFQUVCRkUwMENDMUQxQSAv
KiBXYXNtSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUFEOEZGMzk4MUVCNUJEQjIw
MDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkUy
MUY2OTlFQzAwMDBCQ0FBRiAvKiBXYXNtSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUy
RkRBQkMzMjc4ODA3NkIwMEMxNUI1OSAvKiBXYXNtSVJHZW5lcmF0b3JIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDAwNjU5RTFFQ0FDODEyMDAwQ0E5MjYgLyogV2FzbUxpbWl0cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQ1MEZBMUYyMzU3QkVDOTAwOTNDRDREIC8qIFdhc21MTEludFRp
ZXJVcENvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRTlFMEFDMUVBRTgzREYwMEZFRTI1
MSAvKiBXYXNtTWFjaGluZVRocmVhZHMuaCBpbiBIZWFkZXJzICovLApAQCAtMTExODQsNyArMTEx
OTcsNiBAQAogCQkJCUUzM0JCRTA5MjVCRkEwNDEwMDUzNjkwRiAvKiBXYXNtU3RyZWFtaW5nQ29t
cGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQTA1MzFBMjEzNDJCNjgwMDIyRUMxNCAvKiBX
YXNtU3RyZWFtaW5nUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0M3M0E5MTI1QkZBNzNC
MDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTUyQ0FF
Qzc2Mjc5MEI5MDEwMEREQkFBRiAvKiBTZWN1cmVBUk02NEVIYXNoUGluc0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUFENUMzNkU2MUY2OUVDOTEwMDBCQ0FBRiAvKiBXYXNtVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0RDAxQkY1MjZERUVGNTMwMENBRTBEMCAvKiBXYXNtVGFnLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MjUwRDJEMjFFOERBMDVBMDAyOUE5MzIgLyogV2FzbVRodW5r
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTIwOCw3ICsxMTIyMCw2IEBACiAJCQkJRTNBMzJCQzcx
RkM4MzE0NzAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzkz
QUREODFGRTcwMkQwMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTJGREFCQzMyNzg4MDc2QjAwQzE1QjU5IC8qIFdhc21JUkdlbmVy
YXRvckhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOTkzMEM4MjJBRDNCOUEwMDUxQ0RF
MiAvKiBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUJG
QkFFMjJBRDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0UmVmUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEU4NEZBMTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggODc4MWZiNDcxMDQwZWNlZTAx
OGRjNzExYzU0Y2Y2YjUzMTQ5NDY1Ni4uMGY1NWVjYjkxMWE4N2NiZTc4YjdlYmYyMTZiYWMwNzBl
NjY1YTg5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNTMxLDYgKzUzMSw3IEBA
IGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmNwcAogaGVhcC9Jc29DZWxsU2V0LmNwcAogaGVhcC9Jc29IZWFwQ2VsbFR5cGUuY3BwCito
ZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAogaGVh
cC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKQEAgLTU1
Miw2ICs1NTMsNyBAQCBoZWFwL1Nsb3RWaXNpdG9yLmNwcAogaGVhcC9TcGFjZVRpbWVNdXRhdG9y
U2NoZWR1bGVyLmNwcAogaGVhcC9TdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5j
cHAKIGhlYXAvU3RvcElmTmVjZXNzYXJ5VGltZXIuY3BwCitoZWFwL1N0cnVjdHVyZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwCiBoZWFwL1N1YnNwYWNlLmNwcAogaGVhcC9TeW5jaHJvbm91c1N0
b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuY3BwCiBoZWFwL1N5bmNocm9ub3VzbmVzcy5jcHAK
QEAgLTk5OSw3ICsxMDAxLDYgQEAgcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCiBydW50aW1lL1N0cnVjdHVyZUNhY2hlLmNwcAogcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKLXJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKIHJ1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCiBydW50aW1lL1N5bWJvbC5jcHAKIHJ1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKaW5kZXggODFkN2QwODc5OTU0NjA0NWVkZWViMjY1N2Y1NDkxM2RkMWZhZDcw
Yy4uYmU4MGQ4YmQwMzcyMDAwNjJjMTJjYjhmMTU3ZGJjMGFhYjU2MzM3OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogewotICAgIG1fc3RydWN0dXJlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIHN0cnVjdHVy
ZSk7CisgICAgbV9zdHJ1Y3R1cmVJRC5zZXRNYXlCZU51bGwodm0sIG93bmVyLCBzdHJ1Y3R1cmUp
OwogICAgIG1fY29uZGl0aW9uU2V0ID0gY29uZGl0aW9uU2V0OwogICAgIFJFTEVBU0VfQVNTRVJU
KG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CkBAIC01MzYsMTQgKzUzNiwxNCBAQCBib29s
IEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+Ci12b2lkIEFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2
bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKK3ZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFj
aERlcGVuZGVudENlbGwoVk0mLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogewogICAg
IG1fY29uZGl0aW9uU2V0LmZvckVhY2hEZXBlbmRlbnRDZWxsKGZ1bmN0b3IpOwotICAgIGlmICht
X3N0cnVjdHVyZSkKLSAgICAgICAgZnVuY3RvcihtX3N0cnVjdHVyZS5nZXQoKSk7CisgICAgaWYg
KG1fc3RydWN0dXJlSUQpCisgICAgICAgIGZ1bmN0b3IobV9zdHJ1Y3R1cmVJRC5nZXQoKSk7CiAg
ICAgaWYgKG1fcG9seVByb3RvQWNjZXNzQ2hhaW4pIHsKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVJ
RCBzdHJ1Y3R1cmVJRCA6IG1fcG9seVByb3RvQWNjZXNzQ2hhaW4tPmNoYWluKCkpCi0gICAgICAg
ICAgICBmdW5jdG9yKHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCkpOworICAgICAgICAgICAg
ZnVuY3RvcihzdHJ1Y3R1cmVJRC5kZWNvZGUoKSk7CiAgICAgfQogCiAgICAgc3dpdGNoICh0eXBl
KCkpIHsKQEAgLTg3NCw4ICs4NzQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKICAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlw
ZSA9PSBEZWxldGUgfHwgbV90eXBlID09IFNldFByaXZhdGVCcmFuZCkKICAgICAgICAgICAgIG91
dC5wcmludCgiXG4iLCBpbmRlbnQsICJmcm9tIHN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0
cnVjdHVyZSgpKSwKICAgICAgICAgICAgICAgICAiXG4iLCBpbmRlbnQsICJ0byBzdHJ1Y3R1cmUg
PSAiLCBwb2ludGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwotICAgICAgICBlbHNlIGlmIChtX3N0
cnVjdHVyZSkKLSAgICAgICAgICAgIG91dC5wcmludCgiXG4iLCBpbmRlbnQsICJzdHJ1Y3R1cmUg
PSAiLCBwb2ludGVyRHVtcChtX3N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICBlbHNlIGlmICht
X3N0cnVjdHVyZUlEKQorICAgICAgICAgICAgb3V0LnByaW50KCJcbiIsIGluZGVudCwgInN0cnVj
dHVyZSA9ICIsIHBvaW50ZXJEdW1wKG1fc3RydWN0dXJlSUQuZ2V0KCkpKTsKICAgICB9CiAKICAg
ICBpZiAoIW1fY29uZGl0aW9uU2V0LmlzRW1wdHkoKSkKQEAgLTkwNCwxOSArOTA0LDE5IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6dmlzaXRXZWFrKFZNJiB2bSkgY29uc3QKIHRlbXBsYXRlPHR5cGVuYW1l
IFZpc2l0b3I+CiB2b2lkIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3Im
IHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3RydWN0dXJlKQotICAgICAgICBtX3N0cnVj
dHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fc3RydWN0dXJlSUQpCisgICAg
ICAgIG1fc3RydWN0dXJlSUQtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCiAgICAgaWYgKG1fcG9s
eVByb3RvQWNjZXNzQ2hhaW4pIHsKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJ
RCA6IG1fcG9seVByb3RvQWNjZXNzQ2hhaW4tPmNoYWluKCkpCi0gICAgICAgICAgICB2aXNpdG9y
LnZtKCkuZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cisg
ICAgICAgICAgICBzdHJ1Y3R1cmVJRC5kZWNvZGUoKS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiAg
ICAgfQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAg
Y2FzZSBEZWxldGU6Ci0gICAgICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKG1fc3RydWN0dXJlLT5w
cmV2aW91c0lEKCkpKQotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0
cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKG1fc3RydWN0dXJl
SUQtPnByZXZpb3VzSUQoKSkpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KG1fc3RydWN0dXJlSUQuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKQEAgLTE3MjAsNyArMTcyMCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVXaXRoR3VhcmQoCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Moc2NyYXRjaEdQUiwg
c2NyYXRjaDJHUFIpOwogI2VuZGlmCiAKLSAgICAgICAgaml0LmVtaXRMb2FkUHJvdG90eXBlKHZt
LCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgc2NyYXRjaEdQUiwgZmFpbEFuZElnbm9yZSk7CisgICAg
ICAgIGppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSwgdmFsdWVHUFIsIHJlc3VsdFJlZ3MsIGZhaWxB
bmRJZ25vcmUpOwogICAgICAgICBqaXQubW92ZShzY3JhdGNoMkdQUiwgdmFsdWVHUFIpOwogICAg
ICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGlzSW5zdGFuY2UgPSBqaXQuYnJhbmNo
UHRyKENDYWxsSGVscGVyczo6RXF1YWwsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIpOwpAQCAtMjYx
NSw3ICsyNjE1LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5CZVNoYXJlZChjb25zdCBBY2Nlc3ND
YXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94eSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0KCkgIT0gcmhzLm1fc3RydWN0dXJl
LmdldCgpKQorICAgIGlmIChsaHMubV9zdHJ1Y3R1cmVJRC5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1
cmVJRC5nZXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChsaHMubV9pZGVudGlm
aWVyICE9IHJocy5tX2lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4IGZlMWNmZmJjNjU5ODVl
OGMxNDc5YTJjYjUzNGEyZjM4ODhmNzUzYTYuLjFjMWNjNzE2OGFjZTRhNDM2N2ZjOGRhNDIyZmFk
MmRlZDQ0ZDUxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuaApAQCAtMTg0LDE1ICsxODQsMTUgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBt
X3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpCi0gICAgICAgICAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsKLSAgICAgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlSUQtPnByZXZpb3Vz
SUQoKTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlSUQuZ2V0KCk7CiAgICAgfQogICAgIGJv
b2wgZ3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2soY29uc3QgU3RydWN0dXJlU3R1YkluZm8mKSBjb25z
dDsKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlw
ZSA9PSBTZXRQcml2YXRlQnJhbmQpOwotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZUlELmdldCgpOwogICAgIH0KIAogICAgIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
ZGl0aW9uU2V0OyB9CkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2gobV9jb25kaXRp
b25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90eXBlKSwgbV92aWFQcm94eSwg
bV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKSwgbV9vZmZzZXQpOworICAgICAgICByZXR1cm4g
Y29tcHV0ZUhhc2gobV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV90eXBlKSwgbV92aWFQcm94eSwgbV9zdHJ1Y3R1cmVJRC51bnZhbGlkYXRlZEdldCgpLCBtX29m
ZnNldCk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgY2FuQmVTaGFyZWQoY29uc3QgQWNjZXNz
Q2FzZSYsIGNvbnN0IEFjY2Vzc0Nhc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgICwgbV9zdGF0ZShXVEZNb3ZlKG90aGVyLm1fc3RhdGUpKQogICAgICAgICAsIG1f
dmlhUHJveHkoV1RGTW92ZShvdGhlci5tX3ZpYVByb3h5KSkKICAgICAgICAgLCBtX29mZnNldChX
VEZNb3ZlKG90aGVyLm1fb2Zmc2V0KSkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShXVEZNb3ZlKG90
aGVyLm1fc3RydWN0dXJlKSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZUlEKFdURk1vdmUob3RoZXIu
bV9zdHJ1Y3R1cmVJRCkpCiAgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5t
X2NvbmRpdGlvblNldCkpCiAgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3Zl
KG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQogICAgICAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCkBAIC0yOTUsNyArMjk1LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICAsIG1fc3RhdGUob3RoZXIubV9zdGF0ZSkKICAgICAgICAgLCBtX3ZpYVByb3h5
KG90aGVyLm1fdmlhUHJveHkpCiAgICAgICAgICwgbV9vZmZzZXQob3RoZXIubV9vZmZzZXQpCi0g
ICAgICAgICwgbV9zdHJ1Y3R1cmUob3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICwgbV9zdHJ1
Y3R1cmVJRChvdGhlci5tX3N0cnVjdHVyZUlEKQogICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90
aGVyLm1fY29uZGl0aW9uU2V0KQogICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4ob3Ro
ZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKICAgICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIu
bV9pZGVudGlmaWVyKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gVXN1YWxs
eSB0aGlzIGlzIHRoZSBzdHJ1Y3R1cmUgdGhhdCB3ZSBleHBlY3QgdGhlIGJhc2Ugb2JqZWN0IHRv
IGhhdmUuIEJ1dCwgdGhpcyBpcyB0aGUgKm5ldyoKICAgICAvLyBzdHJ1Y3R1cmUgZm9yIGEgdHJh
bnNpdGlvbiBhbmQgd2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGl0IGhhcyBhIHN0cm9uZyByZWZl
cmVuY2UgdG8gdGhlIG9sZAogICAgIC8vIHN0cnVjdHVyZS4gRm9yIHByb3hpZXMsIHRoaXMgaXMg
dGhlIHN0cnVjdHVyZSBvZiB0aGUgb2JqZWN0IGJlaGluZCB0aGUgcHJveHkuCi0gICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyU3RydWN0dXJl
SUQgbV9zdHJ1Y3R1cmVJRDsKIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1fY29u
ZGl0aW9uU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuY3BwCmluZGV4IDk0NWVhODlhOWRkOGYyNGNmODc5ZTU1YjJhNDk0MjhjYWYxY2RhMmEu
LjZiMGI4Y2FiODlmZmRmN2ZjZWViMWFiYTdmOWIwYjBhNDRjYjhlMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0xMjMsOSArMTIz
LDkgQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ28KICAgICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1
Y3R1cmUgPSBjb2RlQmxvY2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX2xhc3RT
ZWVuU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBtX2xh
c3RTZWVuU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGxvY2tlciwgY29kZUJsb2NrLCBsYXN0U2VlblN0cnVjdHVyZSk7Ci0gICAgbV9sYXN0U2VlblN0
cnVjdHVyZUlEID0gMDsKKyAgICBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgp
OwogfQogCiB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxh
c3RTZWVuU3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5oCmluZGV4IDM2ZmViMTQ0YmFkMzgwZDU2MWI3MDA4MjI1M2NjNTA0YzA3ODAwNWMu
LmE2MTU4NzU3M2IzMjg3YTIxMTRjNGQ1ZjgzMjVkYjdmZDgzZjBlYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTI0OSw3ICsyNDksNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0
dXJlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMSkpOyB9CiAgICAgCi0gICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlE
IHsgMCB9OworICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKICAgICBib29s
IG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVy
bG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRl
cmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4g
U2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUg
KHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1l
YW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5k
cyB7IGZhbHNlIH07CiAjaWYgVVNFKExBUkdFX1RZUEVEX0FSUkFZUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
Y3BwCmluZGV4IGQ0MWRlY2FkZTU4OWIyYzk1NTkzZDFjNjM1MjA5OGJmNmU1MTYzYzIuLjM4MDk3
YTQzY2FhNDZhZjVlNTZmYmUzY2Y4MTNmYjBlOGRjMGRlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cApAQCAtMTAxLDcgKzEwMSw2IEBAIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpCiAKICAgICBjYXNl
IENhY2hlVHlwZTo6U3R1YjogewogICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0
dWJJbmZvLT5tX3N0dWIuZ2V0KCk7Ci0KICAgICAgICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXgg
PSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7CiAgICAgICAgICAg
ICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5kZXgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDQzNTAxNzEx
NjU3NmZhYWNmYmQxZGU4NzE1MzY0MGRjZjYxNzNiMjMuLmRjMmEyOTRlOTRkZmY0MDdiMmQ1NzJh
ZDBhN2VmYzlmMDgyZmMzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0xMTkwLDcgKzExOTAsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPgogdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgdHlwZW5hbWUgVmlzaXRvcjo6
U3VwcHJlc3NHQ1ZlcmlmaWVyU2NvcGUgc3VwcHJlc3NTY29wZSh2aXNpdG9yKTsKLSAgICBWTSYg
dm0gPSAqbV92bTsKIAogICAgIGlmIChqaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaykgewogICAgICAgICBpZiAobV9tZXRhZGF0YSkgewpAQCAtMTIwMCw5ICsxMTk5LDkgQEAg
dm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFZpc2l0b3ImIHZpc2l0b3IKICAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVy
ZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVy
ZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkgewotICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmdldChuZXdTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gbmV3U3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9KTsKQEAgLTEyMTgsOSArMTIxNyw5IEBAIHZvaWQgQ29kZUJsb2Nr
Ojpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWaXNpdG9y
JiB2aXNpdG9yCiAgICAgICAgICAgICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKHByb3BlcnR5
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3Ry
dWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gb2xk
U3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJr
ZWQob2xkU3RydWN0dXJlKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7
CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbmV3U3RydWN0
dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQobmV3U3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsK
QEAgLTEyMzYsOSArMTIzNSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9u
cyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWaXNpdG9yJiB2aXNpdG9yCiAgICAgICAgICAg
ICAgICAgaWYgKCF2aXNpdG9yLmlzTWFya2VkKGJyYW5kKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkgewotICAg
ICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbmV3U3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKQEAgLTEyNjcsNyArMTI2Niw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBWaXNpdG9yJiB2aXNpdG9yCiAgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNl
cy5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQgOiBkZmdDb21tb24tPm1fd2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMpCi0g
ICAgICAgICAgICB2bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpLT5tYXJrSWZDaGVhcCh2aXNp
dG9yKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZUlELmRlY29kZSgpLT5tYXJrSWZDaGVhcCh2aXNp
dG9yKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaXRpb24gOiBkZmdDb21tb24tPm1fdHJh
bnNpdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRNYXJrVHJhbnNpdGlvbih2aXNpdG9y
LCB0cmFuc2l0aW9uKSkgewpAQCAtMTMwNyw2ICsxMzA2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmRl
dGVybWluZUxpdmVuZXNzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgVk0mIHZtID0gKm1fdm07CisgICAg
VU5VU0VEX1ZBUklBQkxFKHZtKTsKICAgICBpZiAodmlzaXRvci5pc01hcmtlZCh0aGlzKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIApAQCAtMTMzMSw3ICsxMzMxLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmRldGVybWluZUxpdmVuZXNzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgfQogICAgIGlmIChhbGxBcmVMaXZlU29GYXIpIHsKICAgICAgICAgZm9yIChT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA6IGRmZ0NvbW1vbi0+bV93ZWFrU3RydWN0dXJlUmVmZXJl
bmNlcykgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1
cmUoc3RydWN0dXJlSUQpOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgIGlmICghdmlzaXRvci5pc01hcmtlZChzdHJ1
Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgYWxsQXJlTGl2ZVNvRmFyID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzY1LDcgKzEzNjUsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBpZiAobW9kZU1ldGFkYXRh
Lm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtb2RlTWV0YWRhdGEuZGVm
YXVsdE1vZGUuc3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVj
dHVyZUlEKSkpCisgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNN
YXJrZWQob2xkU3RydWN0dXJlSUQuZGVjb2RlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5n
ICIsIG9wTmFtZSwgIiBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7CiAgICAgICAgICAgICBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRC
eUlkQ2FjaGUobW9kZU1ldGFkYXRhKTsKQEAgLTEzODYsMTkgKzEzODYsMTkgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogCiAgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BUcnlHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7Ci0g
ICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICBp
ZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlSUQuZGVj
b2RlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIHRyeV9nZXRfYnlfaWQgTExJbnQgcHJv
cGVydHkgYWNjZXNzLiIpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKICAgICAgICAgfSk7CiAKICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWREaXJlY3Q+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9z
dHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5p
c01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkK
KyAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZChvbGRT
dHJ1Y3R1cmVJRC5kZWNvZGUoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgZ2V0X2J5X2lk
X2RpcmVjdCBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBT
dHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwogICAgICAg
ICB9KTsKIApAQCAtMTQwNiwxMSArMTQwNiwxMSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRh
dGEubV9wcm9wZXJ0eS5nZXQoKTsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKIAotICAgICAgICAgICAgaWYgKCghcHJvcGVydHkg
fHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpICYmICghc3RydWN0dXJlSUQgfHwgdm0uaGVh
cC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpKSkp
CisgICAgICAgICAgICBpZiAoKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5
KSkgJiYgKCFzdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHN0cnVjdHVyZUlELmRlY29k
ZSgpKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcml2YXRlIHByb3BlcnR5
IGFjY2Vzcy4iKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3Bl
cnR5LmNsZWFyKCk7CiAgICAgICAgIH0pOwpAQCAtMTQxOSwxNCArMTQxOSwxNCBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJl
SUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBtZXRhZGF0YS5tX3N0cnVj
dHVyZUNoYWluLmdldCgpOwotICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0u
aGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJl
SUQpKSkKLSAgICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNN
YXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpCisg
ICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKG9sZFN0
cnVjdHVyZUlELmRlY29kZSgpKSkKKyAgICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlE
IHx8IHZtLmhlYXAuaXNNYXJrZWQobmV3U3RydWN0dXJlSUQuZGVjb2RlKCkpKQogICAgICAgICAg
ICAgICAgICYmICghY2hhaW4gfHwgdm0uaGVhcC5pc01hcmtlZChjaGFpbikpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwgIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uLiIpOwotICAgICAgICAgICAgbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0
cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0
ID0gMDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCkBA
IC0xNDM0LDE1ICsxNDM0LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5l
Q2FjaGVzKCkKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRh
dGEubV9vbGRTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVy
ZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIEpTQ2VsbCogcHJv
cGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOwotICAgICAgICAgICAgaWYgKCghb2xk
U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlE
IHx8IHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlSUQuZGVjb2RlKCkpKQogICAgICAgICAg
ICAgICAgICYmICghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCi0gICAg
ICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAg
ICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQobmV3U3RydWN0dXJl
SUQuZGVjb2RlKCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHB1dF9wcml2
YXRlX25hbWUgdHJhbnNpdGlvbi4iKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0
dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IFN0cnVj
dHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
bmV3U3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOwogICAgICAgICB9KTsKIApAQCAtMTQ1MCwzNyArMTQ1MCwzNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBT
dHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICBKU0NlbGwqIGJyYW5kID0gbWV0YWRhdGEubV9icmFuZC5n
ZXQoKTsKLSAgICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAg
ICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVj
dHVyZUlELmRlY29kZSgpKSkKICAgICAgICAgICAgICAgICAmJiAoIWJyYW5kIHx8IHZtLmhlYXAu
aXNNYXJrZWQoYnJhbmQpKQotICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwg
dm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0
dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFw
LmlzTWFya2VkKG5ld1N0cnVjdHVyZUlELmRlY29kZSgpKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJD
bGVhcmluZyBMTEludCBzZXRfcHJpdmF0ZV9icmFuZCB0cmFuc2l0aW9uLiIpOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJl
SUQgPSBTdHJ1Y3R1cmVJRCgpOworICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJ
RCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7
CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDaGVja1ByaXZh
dGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAgU3RydWN0dXJlSUQg
c3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOwogICAgICAgICAgICAgSlNDZWxs
KiBicmFuZCA9IG1ldGFkYXRhLm1fYnJhbmQuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoKCFzdHJ1
Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChzdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgaWYgKCghc3RydWN0dXJlSUQgfHwgdm0uaGVh
cC5pc01hcmtlZChzdHJ1Y3R1cmVJRC5kZWNvZGUoKSkpCiAgICAgICAgICAgICAgICAgJiYgKCFi
cmFuZCB8fCB2bS5oZWFwLmlzTWFya2VkKGJyYW5kKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVh
cmluZyBMTEludCBjaGVja19wcml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3Ry
dWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9icmFuZC5j
bGVhcigpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9U
aGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAg
aWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQobWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRC5kZWNvZGUoKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsK
ICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgdG9fdGhpcyB3aXRoIHN0
cnVjdHVyZSAlcC5cbiIsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBt
ZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRhdGEu
bV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xl
YXJlZEJ5R0MpOwogICAgICAgICB9KTsKIApAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChzdGQ6OmdldDwwPihwYWlyLmtleSkpKSkKKyAgICAgICAg
aWYgKCF2bS5oZWFwLmlzTWFya2VkKHN0ZDo6Z2V0PDA+KHBhaXIua2V5KS5kZWNvZGUoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gY2xlYXIoKTsKIAogICAgICAgICBmb3IgKGNvbnN0IExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCA6IHBhaXIu
dmFsdWUpIHsKQEAgLTE4ODQsNyArMTg4NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZp
c2l0V2Vha1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYKICAg
ICAgICAgdmlzaXRvci5hcHBlbmQod2Vha1JlZmVyZW5jZSk7CiAKICAgICBmb3IgKFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEIDogZGZnQ29tbW9uLT5tX3dlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZpc2l0b3Iudm0oKS5nZXRTdHJ1Y3R1
cmUoc3RydWN0dXJlSUQpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChzdHJ1
Y3R1cmVJRC5kZWNvZGUoKSk7CiAjZW5kaWYgICAgCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBhNzg3NmIzY2JkNWViODFk
YTEwMjAwNDU1ODkxYTg2MDRhZDViNGRlLi5hYjg2ZWVmMTY1Y2Y4NzRkNmJhNjRmZDRlOGY2NmU2
Y2VhNDc2MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRNZXRhZGF0YS5oCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5
SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQpID09IDE2KTsKIHVuaW9uIEdldEJ5SWRNb2RlTWV0YWRh
dGEgewogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGEoKQogICAgIHsKLSAgICAgICAgZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSUQgPSAwOworICAgICAgICBkZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IFN0
cnVjdHVyZUlEKCk7CiAgICAgICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CiAgICAg
ICAgIGRlZmF1bHRNb2RlLnBhZGRpbmcxID0gMDsKICAgICAgICAgbW9kZSA9IEdldEJ5SWRNb2Rl
OjpEZWZhdWx0OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5
SWRNb2RlTWV0YWRhdGEpID09IDE2KTsKIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICBHZXRCeUlkTW9kZU1ldGFkYXRhKCkKICAgICB7Ci0gICAgICAgIGRlZmF1bHRNb2RlLnN0cnVj
dHVyZUlEID0gMDsKKyAgICAgICAgZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJ
RCgpOwogICAgICAgICBkZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSAwOwogICAgICAgICBkZWZh
dWx0TW9kZS5wYWRkaW5nMSA9IDA7CiAgICAgICAgIG1vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVs
dDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YSB7CiBpbmxp
bmUgdm9pZCBHZXRCeUlkTW9kZU1ldGFkYXRhOjpjbGVhclRvRGVmYXVsdE1vZGVXaXRob3V0Q2Fj
aGUoKQogewogICAgIG1vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKLSAgICBkZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRCA9IDA7CisgICAgZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBTdHJ1Y3R1
cmVJRCgpOwogICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IGExNWE5YjY5
M2EyMzFmNDBlOTZlMjBjY2RhYWM4NzM4MDg0N2UyMjUuLmMwM2FhNzdmOTA3MTU2M2IxY2MzZWY3
YTlhOWM2ZWIwNWY3YmI4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5U3RhdHVzLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJ
bmRlCiAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5v
SW5mb3JtYXRpb24sIGZhbHNlKTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+dGFr
ZXNTbG93UGF0aEluREZHRm9ySW1wdXJlUHJvcGVydHkoKSkKICAgICAgICAgcmV0dXJuIEdldEJ5
U3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggN2QxOGM0YmIyYmRmNDVkNjEyYmJkNzRh
N2UwYjNlMTNkZGM3OGVkNy4uZmI1ZWVhMmRjYmFmMmM0MGEwN2ZhY2I3ZDU3OTMzODhjNWMyNzZh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cEluQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSQogICAgICAgICB9
CiAKICAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OwotICAgICAgICBzdHViSW5m
by5tX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSAwOyAvLyBDbGVhciBvdXQgdGhlIGlubGlu
ZSBhY2Nlc3MgY29kZS4KKyAgICAgICAgc3R1YkluZm8ubV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0
dXJlSUQuY2xlYXIoKTsgLy8gQ2xlYXIgb3V0IHRoZSBpbmxpbmUgYWNjZXNzIGNvZGUuCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIElubGluZUFjY2Vz
czo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbgogewogICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpICYmIGNvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CiAgICAgICAgIHN0dWJJbmZvLm1f
Y29kZVB0ciA9IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKLSAgICAgICAgc3R1Yklu
Zm8ubV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlID0gMDsgLy8gQ2xlYXIgb3V0IHRoZSBpbmxp
bmUgYWNjZXNzIGNvZGUuCisgICAgICAgIHN0dWJJbmZvLm1faW5saW5lQWNjZXNzQmFzZVN0cnVj
dHVyZUlELmNsZWFyKCk7IC8vIENsZWFyIG91dCB0aGUgaW5saW5lIGFjY2VzcyBjb2RlLgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmgK
aW5kZXggZGY4ZjM3MWFiZDFkMTk2MDc2ZDc1YjRiZGMxMjVlZDM5ZjM4MjYwZC4uYjE3N2ZlZmQw
NjM2ZTIyZWI1MGZmZmI2MjllY2U0MTE4MTRlMmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGUuaApAQCAtMzMsMjEgKzMzLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUgewogcHVibGljOgotICAgIHN0YXRp
YyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSwgbV9zdHJ1Y3R1cmUpOyB9
CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmVJRCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUsIG1f
c3RydWN0dXJlSUQpOyB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
c3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X3N0cnVjdHVyZUlELmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjcmVhdGVBbGxvY2F0aW9uU3Ry
dWN0dXJlRnJvbUJhc2UoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3duZXIsIEpTT2Jq
ZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZSk7CiAKLSAgICB2b2lkIGNsZWFyKCkgeyBt
X3N0cnVjdHVyZS5jbGVhcigpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9p
ZCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdG9yJiB2aXNpdG9yKSB7IHZpc2l0b3IuYXBwZW5kKG1fc3Ry
dWN0dXJlKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RydWN0dXJlSUQuY2xlYXIoKTsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgdmlzaXRBZ2dyZWdhdGUoVmlzaXRv
ciYgdmlzaXRvcikgeyB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZUlEKTsgfQogCiBwcml2YXRl
OgotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworICAgIFdyaXRlQmFy
cmllclN0cnVjdHVyZUlEIG1fc3RydWN0dXJlSUQ7CiB9OwogCiBpbmxpbmUgU3RydWN0dXJlKiBJ
bnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6OmNyZWF0ZUFsbG9jYXRpb25TdHJ1Y3R1
cmVGcm9tQmFzZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBiYXNlR2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUp
CiB7Ci0gICAgQVNTRVJUKCFtX3N0cnVjdHVyZSB8fCBtX3N0cnVjdHVyZS5nZXQoKS0+Y2xhc3NJ
bmZvKCkgIT0gYmFzZVN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgfHwgbV9zdHJ1Y3R1cmUtPmdsb2Jh
bE9iamVjdCgpICE9IGJhc2VTdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBBU1NFUlQo
IW1fc3RydWN0dXJlSUQgfHwgbV9zdHJ1Y3R1cmVJRC5nZXQoKS0+Y2xhc3NJbmZvKCkgIT0gYmFz
ZVN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgfHwgbV9zdHJ1Y3R1cmVJRC0+Z2xvYmFsT2JqZWN0KCkg
IT0gYmFzZVN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChiYXNlU3RydWN0
dXJlLT5oYXNNb25vUHJvdG8oKSk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKQEAgLTYx
LDggKzYxLDggQEAgaW5saW5lIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Q
cm9maWxlOjpjcmVhdGVBbGxvY2F0aW9uU3RydWN0dXJlRnIKICAgICAvLyBFbnN1cmUgdGhhdCBp
ZiBhbm90aGVyIHRocmVhZCBzZWVzIHRoZSBzdHJ1Y3R1cmUsIGl0IHdpbGwgc2VlIGl0IHByb3Bl
cmx5IGNyZWF0ZWQuCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKIAotICAgIG1fc3RydWN0
dXJlLnNldCh2bSwgb3duZXIsIHN0cnVjdHVyZSk7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLmdl
dCgpOworICAgIG1fc3RydWN0dXJlSUQuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKKyAgICBy
ZXR1cm4gc3RydWN0dXJlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCmlu
ZGV4IGUyYjdiNjYyOGFjMGZmNWU0MDVlODhiMDQ2NDNhOTNhZDYxZmQ2ZmQuLjc2ZmU2YWU0NGEx
MTNlNTJkYjhhNTNlYjM3ZDNmZWMxMDE0NGQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNwcApAQCAtODAsMTAg
KzgwLDEwIEBAIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hh
aW46OnRyeUNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShjaGFpbikpKTsKIH0KIAotYm9vbCBQb2x5
UHJvdG9BY2Nlc3NDaGFpbjo6bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChWTSYgdm0pIGNv
bnN0Citib29sIFBvbHlQcm90b0FjY2Vzc0NoYWluOjpuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFZNJikgY29uc3QKIHsKICAgICBmb3IgKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIDogbV9j
aGFpbikgewotICAgICAgICBpZiAodm0uZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKS0+bmVlZElt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKQorICAgICAgICBpZiAoc3RydWN0dXJlSUQuZGVjb2Rl
KCktPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmluZGV4IGEyOWI0YmY2OWRh
NzQ3MTNiMWM2Mjg0YjUwM2E2NDFlOTYzYzdjNzkuLjEwN2U0YmY4NzcyZGYwNDQyNjFlYzg1OGYw
YzlmZTdjNjJmZWQ1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlELmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01NywyMCArNTcsMjAgQEAgcHVibGljOgogICAgIGJv
b2wgbmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChWTSYpIGNvbnN0OwogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoKFZNJiB2bSwgU3RydWN0dXJlKiBi
YXNlU3RydWN0dXJlLCBjb25zdCBGdW5jJiBmdW5jKSBjb25zdAorICAgIHZvaWQgZm9yRWFjaChW
TSYsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgY29uc3QgRnVuYyYgZnVuYykgY29uc3QKICAg
ICB7CiAgICAgICAgIGJvb2wgYXRFbmQgPSAhbV9jaGFpbi5zaXplKCk7CiAgICAgICAgIGZ1bmMo
YmFzZVN0cnVjdHVyZSwgYXRFbmQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9jaGFpbi5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXRFbmQgPSBpICsgMSA9PSBtX2No
YWluLnNpemUoKTsKLSAgICAgICAgICAgIGZ1bmModm0uZ2V0U3RydWN0dXJlKG1fY2hhaW5baV0p
LCBhdEVuZCk7CisgICAgICAgICAgICBmdW5jKG1fY2hhaW5baV0uZGVjb2RlKCksIGF0RW5kKTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIFN0cnVjdHVyZSogc2xvdEJhc2VTdHJ1Y3R1cmUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUpIGNvbnN0CisgICAgU3RydWN0dXJlKiBzbG90
QmFzZVN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChtX2NoYWluLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5nZXRT
dHJ1Y3R1cmUobV9jaGFpbi5sYXN0KCkpOworICAgICAgICAgICAgcmV0dXJuIG1fY2hhaW4ubGFz
dCgpLmRlY29kZSgpOwogICAgICAgICByZXR1cm4gYmFzZVN0cnVjdHVyZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwCmluZGV4IDRiOWE0OTU5ZmQ4ZmYzNTFkMjlkYWZjYTA5NzI0NTNiN2JjMTY3NjYuLjk0Mzc2
OGVlZDlhNDA3ODIwMmNiYjE0YTNiOWM3NDVhNjEyYmU5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGJvb2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0
CiAgICAgfQogICAgIGlmIChtX3N0dWJSb3V0aW5lKSB7CiAgICAgICAgIGZvciAoU3RydWN0dXJl
SUQgd2Vha1JlZmVyZW5jZSA6IG1fc3R1YlJvdXRpbmUtPndlYWtTdHJ1Y3R1cmVzKCkpIHsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKHdlYWtSZWZl
cmVuY2UpOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB3ZWFrUmVmZXJlbmNl
LmRlY29kZSgpOwogICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHN0cnVjdHVyZSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKaW5kZXggODFkNDY3MThhNWY3NTk5
OWFjY2U5YzEwZmY0NzE3NTYyNjY4M2UzNy4uM2VhYzEzMjk0N2ZjZThhYWI4NGU4NTMzN2Y5ZDMx
ZjUyZjBhYTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRGbGFncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
RmxhZ3MuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFQ01B
TW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0YXR1
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlTdGF0dXMuY3BwCmlu
ZGV4IDc1Y2VjMmI5MGE5MWEwNDBkOWQ3Y2NjMjQ3ZjNhYTM4YTM4MjM4NjEuLmUxOWY3MjU2NTE1
M2JlM2YwYjYzYjEyOGQ5MDdlN2Y4ZWQ3NjUwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5U3RhdHVzLmNwcApAQCAtODEsNyArODEsNyBAQCBQdXRCeVN0YXR1
cyBQdXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IEJ5dGVjb2RlSW5kZQogICAgIGlmICghc3RydWN0dXJlSUQpCiAgICAgICAgIHJldHVybiBQdXRC
eVN0YXR1cyhOb0luZm9ybWF0aW9uKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKIAogICAgIFN0cnVjdHVyZUlE
IG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICBpZiAoIW5l
d1N0cnVjdHVyZUlEKSB7CkBAIC05Miw3ICs5Miw3IEBAIFB1dEJ5U3RhdHVzIFB1dEJ5U3RhdHVz
Ojpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGVJbmRl
CiAgICAgICAgIHJldHVybiBQdXRCeVZhcmlhbnQ6OnJlcGxhY2UobnVsbHB0ciwgc3RydWN0dXJl
LCBvZmZzZXQpOwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IG5ld1N0cnVjdHVyZUlELmRlY29kZSgpOwogICAgIAogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkp
OwogICAgIApAQCAtMTg5LDcgKzE4OSw3IEBAIFB1dEJ5U3RhdHVzIFB1dEJ5U3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvCiAgICAg
ICAgIAogICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CiAgICAgICAgIFBvbHltb3JwaGljQWNj
ZXNzKiBsaXN0ID0gc3R1YkluZm8tPm1fc3R1Yi5nZXQoKTsKLSAgICAgICAgCisKICAgICAgICAg
UHV0QnlTdGF0dXMgcmVzdWx0OwogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAppbmRleCA3ZmI3ZGIyOWFjZDlhZjc5ZmU2NjBiYmZjYWVlODEyZjE4N2NjMmNjLi5h
NzU5ZGQwZjExNmUyZjg2YjE0NzllNGE4ZGE0MDQ2Y2Q5NWI3NGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTU5NiwxMyAr
NTk2LDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2VsbChKU0NlbGwqIGNlbGwp
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgfQotICAgIC8vIEZJ
WE1FOiByZGFyOi8vNjkwMzY4ODg6IHVuZG8gdGhpcyB3aGVuIG5vIGxvbmdlciBuZWVkZWQuCi0g
ICAgYXV0byogc3RydWN0dXJlID0gY2VsbC0+dm0oKS50cnlHZXRTdHJ1Y3R1cmUoY2VsbC0+c3Ry
dWN0dXJlSUQoKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFpc1NhbmVQb2ludGVyKHN0cnVjdHVyZSkp
KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gU3BlY05v
bmU7Ci0gICAgfQotICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJl
KTsKKyAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgp
KTsKIH0KIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCmluZGV4IDgwOTg0NmQzZGZkOGFkMThhNDE4ZTlkYzZlODcxODg1MGJhNTQxZTYu
LjVkMjg3ZGI1NjhkZmI5NzUzMzQwYzIwOTRhYjYwOWMyMDE3M2E2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAt
NDcsOCArNDcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZFNlbGYoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDbwogICAgIEFTU0VSVChoYXNDb25z
dGFudElkZW50aWZpZXIpOwogICAgIHNldENhY2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6R2V0
QnlJZFNlbGYpOwogICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgbV9pbmxpbmVB
Y2Nlc3NCYXNlU3RydWN0dXJlID0gaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS0+aWQoKTsKLSAg
ICBjb2RlQmxvY2stPnZtKCkud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgbV9pbmxpbmVB
Y2Nlc3NCYXNlU3RydWN0dXJlSUQuc2V0KGNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBpbmxp
bmVBY2Nlc3NCYXNlU3RydWN0dXJlKTsKICAgICBieUlkU2VsZk9mZnNldCA9IG9mZnNldDsKIH0K
IApAQCAtNjksOCArNjgsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0QnlJZFJl
cGxhY2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLAogICAgIEFTU0VSVCht
X2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KTsKICAgICBzZXRDYWNoZVR5cGUobG9ja2Vy
LCBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlKTsKICAgICBtX2lkZW50aWZpZXIgPSBpZGVudGlm
aWVyOwotICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSA9IGlubGluZUFjY2Vzc0Jhc2VT
dHJ1Y3R1cmUtPmlkKCk7Ci0gICAgY29kZUJsb2NrLT52bSgpLndyaXRlQmFycmllcihjb2RlQmxv
Y2spOworICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlELnNldChjb2RlQmxvY2stPnZt
KCksIGNvZGVCbG9jaywgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7CiAgICAgYnlJZFNlbGZP
ZmZzZXQgPSBvZmZzZXQ7CiB9CiAKQEAgLTc5LDggKzc3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6aW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2Vy
LCBDb2QKICAgICBBU1NFUlQobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldCk7CiAgICAg
c2V0Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmKTsKICAgICBtX2lkZW50
aWZpZXIgPSBpZGVudGlmaWVyOwotICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSA9IGlu
bGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgY29kZUJsb2NrLT52bSgpLndyaXRl
QmFycmllcihjb2RlQmxvY2spOworICAgIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlELnNl
dChjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7
CiAgICAgYnlJZFNlbGZPZmZzZXQgPSBvZmZzZXQ7CiB9CiAKQEAgLTIxNCwxMSArMjExLDExIEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2Uo
CiAgICAgICAgIC8vIGFjY2VzcyBjb2RlLiBUaGF0J3MgYmVjYXVzZSB3aGVuIHdlIGZpcnN0IHRy
YW5zaXRpb24gdG8gYmVjb21pbmcgYSBTdHViLCB3ZSBtYXkKICAgICAgICAgLy8gYmUgYnVmZmVy
ZWQsIGFuZCB3ZSBoYXZlIG5vdCB5ZXQgZ2VuZXJhdGVkIGFueSBjb2RlLiBPbmNlIHRoZSBTdHVi
IGZpbmFsbHkgZ2VuZXJhdGVzCiAgICAgICAgIC8vIGNvZGUsIHdlJ3JlIG5vIGxvbmdlciBydW5u
aW5nIHRoZSBpbmxpbmUgYWNjZXNzIGNvZGUsIHNvIHdlIGNhbiB0aGVuIGNsZWFyIG91dAotICAg
ICAgICAvLyBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuIFRoZSByZWFzb24gd2UgZG9uJ3Qg
Y2xlYXIgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlIHdoaWxlCi0gICAgICAgIC8vIHdlJ3Jl
IGJ1ZmZlcmVkIGlzIGJlY2F1c2Ugd2UgcmVseSBvbiBpdCB0byByZXNldCBkdXJpbmcgR0MgaWYg
bV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlCisgICAgICAgIC8vIG1faW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZUlELiBUaGUgcmVhc29uIHdlIGRvbid0IGNsZWFyIG1faW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZUlEIHdoaWxlCisgICAgICAgIC8vIHdlJ3JlIGJ1ZmZlcmVkIGlzIGJlY2F1c2Ug
d2UgcmVseSBvbiBpdCB0byByZXNldCBkdXJpbmcgR0MgaWYgbV9pbmxpbmVBY2Nlc3NCYXNlU3Ry
dWN0dXJlSUQKICAgICAgICAgLy8gaXMgY29sbGVjdGVkLgogICAgICAgICBtX2lkZW50aWZpZXIg
PSBudWxscHRyOwotICAgICAgICBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSAwOworICAg
ICAgICBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJRC5jbGVhcigpOwogICAgICAgICAKICAg
ICAgICAgLy8gSWYgd2UgZ2VuZXJhdGVkIHNvbWUgY29kZSB0aGVuIHdlIGRvbid0IHdhbnQgdG8g
YXR0ZW1wdCB0byByZXBhdGNoIGluIHRoZSBmdXR1cmUgdW50aWwgd2UKICAgICAgICAgLy8gZ2F0
aGVyIGVub3VnaCBjYXNlcy4KQEAgLTIzMyw3ICsyMzAsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJ
bmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9j
ayogYwogewogICAgIGNsZWFyQnVmZmVyZWRTdHJ1Y3R1cmVzKCk7CiAgICAgbV9pZGVudGlmaWVy
ID0gbnVsbHB0cjsKLSAgICBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSAwOworICAgIG1f
aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlELmNsZWFyKCk7CiAKICAgICBpZiAobV9jYWNoZVR5
cGUgPT0gQ2FjaGVUeXBlOjpVbnNldCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA0NDM1ZmMz
MjI2MzkxOWMzMGIzZDhjODZmMDIxOWYzMDVmMmExZmQyLi40ODI0MTc4MmI3ZjE0OTg2ZDFmYWJj
Yjc2NWU2NzFlNGFjZjllOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtMjEyLDYgKzIxMiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBjb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlLCBp
bXBsKTsKICAgICB9CiAKKyAgICBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUo
Vk0mKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlE
LmdldCgpOworICAgIH0KIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnNpZGVy
Q2FjaGluZyhWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpbXBsKQogICAgIHsKQEAgLTM1MiwyNCArMzU2LDE3IEBA
IHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQnlJZFNl
bGZPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIGJ5
SWRTZWxmT2Zmc2V0KTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmxpbmVBY2Nl
c3NCYXNlU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJ
bmZvLCBtX2lubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlSUQp
OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mRG9uZUxvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFN0cnVjdHVyZVN0dWJJbmZvLCBkb25lTG9jYXRpb24pOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihTdHJ1Y3R1cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsgfQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkNvdW50ZG93bigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1
Y3R1cmVTdHViSW5mbywgY291bnRkb3duKTsgfQogCi0gICAgU3RydWN0dXJlKiBpbmxpbmVBY2Nl
c3NCYXNlU3RydWN0dXJlKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbmxpbmVBY2Nl
c3NCYXNlU3RydWN0dXJlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiB2bS5nZXRTdHJ1Y3R1cmUobV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKTsKLSAgICB9
Ci0KICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CiAgICAgUHJvcGVydHlPZmZzZXQgYnlJZFNl
bGZPZmZzZXQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBtX3N0dWI7
Ci0gICAgU3RydWN0dXJlSUQgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlIHsgMCB9OworICAg
IFdyaXRlQmFycmllclN0cnVjdHVyZUlEIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZUlEOwog
cHJpdmF0ZToKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICAvLyBS
ZXByZXNlbnRzIHRob3NlIHN0cnVjdHVyZXMgdGhhdCBhbHJlYWR5IGhhdmUgYnVmZmVyZWQgQWNj
ZXNzQ2FzZXMgaW4gdGhlIFBvbHltb3JwaGljQWNjZXNzLgpAQCAtNDIyLDEwICs0MTksMTEgQEAg
cHVibGljOgogICAgIHVpbnQ4X3QgY291bnRkb3duIHsgMSB9OwogICAgIHVpbnQ4X3QgcmVwYXRj
aENvdW50IHsgMCB9OwogICAgIHVpbnQ4X3QgbnVtYmVyT2ZDb29sRG93bnMgeyAwIH07Ci0KLSAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXg7Ci0KICAgICB1aW50OF90IGJ1ZmZlcmluZ0Nv
dW50ZG93bjsKK3ByaXZhdGU6CisgICAgTG9jayBtX2J1ZmZlcmVkU3RydWN0dXJlc0xvY2s7Citw
dWJsaWM6CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4OwogICAgIGJvb2wgcmVzZXRC
eUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9vbCBldmVyQ29uc2lk
ZXJlZCA6IDE7CkBAIC00MzUsOCArNDMzLDYgQEAgcHVibGljOgogICAgIGJvb2wgcHJvcGVydHlJ
c1N0cmluZyA6IDE7CiAgICAgYm9vbCBwcm9wZXJ0eUlzSW50MzIgOiAxOwogICAgIGJvb2wgcHJv
cGVydHlJc1N5bWJvbCA6IDE7Ci1wcml2YXRlOgotICAgIExvY2sgbV9idWZmZXJlZFN0cnVjdHVy
ZXNMb2NrOwogfTsKIAogaW5saW5lIENvZGVPcmlnaW4gZ2V0U3RydWN0dXJlU3R1YkluZm9Db2Rl
T3JpZ2luKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHJ1Y3R1cmVTdHViSW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBlYjhhOWVmNWE4NTM2ZWIwZTU2ZWVmODMxZDBmYWIzYjM2MTI3YTZiLi4zMjk5
ZjVjMzdjY2MwMzBhZmUxZGNkZTlkMDJlZDkyMzNmNDJhMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yMjAxLDcgKzIyMDEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgICAgIC8vIEFuZCB3ZSBjaGVjayB0aGUgaW5kZXhpbmcgbW9kZSBvZiB0aGUgc3RydWN0dXJl
LiBJZiB0aGUgaW5kZXhpbmcgbW9kZSBpcyBDb1csIHRoZSBidXR0ZXJmbHkgaXMKICAgICAgICAg
ICAgICAgICAvLyBkZWZpbml0ZWx5IEpTSW1tdXRhYmxlQnV0dGVyZmx5LgogICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlERWFybHkgPSBhcnJheS0+c3RydWN0dXJlSUQoKTsK
LSAgICAgICAgICAgICAgICBpZiAoaXNOdWtlZChzdHJ1Y3R1cmVJREVhcmx5KSkKKyAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlSURFYXJseS5pc051a2VkKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUo
KS5hcnJheUNsYXNzKCkgPT0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3JpdGVBcnJheSkgewpAQCAt
MjIxNSw3ICsyMjE1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZUlERWFybHkgIT0gc3RydWN0dXJlSURMYXRlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbV92bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSURMYXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRExhdGUu
ZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgpAQCAtMjI3Myw3ICsyMjczLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmVJREVhcmx5ICE9IHN0cnVjdHVyZUlETGF0ZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbV92bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSURMYXRlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSURMYXRl
LmRlY29kZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNBbnlBcnJheVN0b3Jh
Z2Uoc3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU0OWM1MjRlYzNjMGMyMzc3YWVlODBhNjFjMDIyMjM5YTdk
NGRhYmQuLjI4Y2Y3MjU2MjRkZDI3YzliNGNjOTU2NzBjYzE5NjM3MDVhYjdlY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NTA0
LDcgKzU1MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1
Y3R1cmUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQotICAg
ICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0
dXJlID0gY2FjaGVkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICBpZiAobWV0YWRh
dGEubV90b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKICAgICAgICAgICAgICAgICB8fCAhY2FjaGVk
U3RydWN0dXJlCiAgICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8o
KS0+bWV0aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRv
VGhpcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4YzZhZGVjNWUz
NTk0NmRlMjYwYzNjZGIyY2I2MDFkNDllOWNmMjQ1Li4xNDRjYzE5Mjg3M2QwNzZlMWVmZmJmODRk
ZGU2ZTE2MWE4NWMxNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApA
QCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgY2hhciogcHJlZml4U3RyLCBOb2RlKiBub2RlLCBEdW1wQ29udGV4CiAgICAgaWYgKG5vZGUt
Pmhhc1RyYW5zaXRpb24oKSkgewogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1w
SW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBub2RlLT50cmFuc2l0aW9uKCktPm5leHQt
PmlkKCkpOworICAgICAgICBvdXQucHJpbnQoIiwgSUQ6Iiwgbm9kZS0+dHJhbnNpdGlvbigpLT5u
ZXh0LT5pZCgpLmJpdHMoKSk7CiAjZWxzZQogICAgICAgICBvdXQucHJpbnQoIiwgSUQ6IiwgUmF3
UG9pbnRlcihub2RlLT50cmFuc2l0aW9uKCktPm5leHQuZ2V0KCkpKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDg5NDdjYmU5YTNjNTIx
NzZhMmQ0NTM0Nzg4Mjk2MmU5NWMxZTM4ZjkuLmRlZGE1ZGViYWE5YjE3ODQ5YTIyZjIwNzdhOTQx
NTYwNjdjZjFjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKQEAgLTI2OCw3ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHdlYWtTdHJ1Y3R1cmUuZ2V0KCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIoc3Ry
dWN0dXJlLT5pZCgpKSk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVm
dCwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKS5iaXRzKCkpKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICNlbHNlCiAgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CmluZGV4IGE0OTNiZTM0YWY1MTMwOGQyYmRmMTkzNDBkOTgyOWNlYzM0NjMyODUuLmYwZWY5YTg5
NzEyNzQ0ODVmNDQzYzU0NmE3NDY5ZWI3OGIyMThkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IFBsYW46
OmZpbmFsaXplKCkKICAgICAgICAgICAgIGZvciAoV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIHJlZmVy
ZW5jZSA6IG1fY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3dlYWtSZWZlcmVu
Y2VzKQogICAgICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChyZWZlcmVuY2UuZ2V0
KCkpOwogICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA6IG1fY29kZUJs
b2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3dlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzKQot
ICAgICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChtX3ZtLT5nZXRTdHJ1Y3R1cmUo
c3RydWN0dXJlSUQpKTsKKyAgICAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5hZGQoc3Ry
dWN0dXJlSUQuZGVjb2RlKCkpOwogICAgICAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8VW5rbm93
bj4mIGNvbnN0YW50IDogbV9jb2RlQmxvY2stPmNvbnN0YW50cygpKQogICAgICAgICAgICAgICAg
IHRyYWNrZWRSZWZlcmVuY2VzLmFkZChjb25zdGFudC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMzQ5Zjg3ZDEzNzQw
OTI1MWE0ZmIxMTIzZGJkZTUwZGZlMTI1YzIyYS4uYjlmODE4NDYwZTU0ZWM5MjJmMzk0YjZjZmVk
MjI3YzViNGE2YzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTg1MzMsOCArODUzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRHbG9iYWxPYmplY3QoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0gICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgb2JqZWN0LmdwcigpLCByZXN1bHQuZ3ByKCksIHNjcmF0
Y2guZ3ByKCkpOworICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIG9iamVjdC5ncHIo
KSwgcmVzdWx0LmdwcigpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlc3VsdC5n
cHIoKSk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQpAQCAtMTEwNDIs
NyArMTEwNDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tKU0Nhc3QoTm9k
ZSogbm9kZSkKICAgICAgICAgR1BSUmVnIG90aGVyR1BSID0gb3RoZXIuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyBzcGVjaWZpZWRHUFIgPSBzcGVjaWZpZWQuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIsIHNwZWNpZmllZEdQUik7
CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGJhc2VHUFIsIG90aGVyR1BS
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJHUFIs
IFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBvdGhlckdQUik7CiAgICAgICAgIG1faml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG5vZGUtPmNsYXNzSW5mbygpKSwgc3Bl
Y2lmaWVkR1BSKTsKIApAQCAtMTEyNTMsNyArMTEyNTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogCiAgICAgc3BlY3VsYXRlRnVu
Y3Rpb24obm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpKTsKIAotICAgIG1faml0LmVtaXRM
b2FkU3RydWN0dXJlKHZtKCksIGZ1bmN0aW9uLmdwcigpLCByZXN1bHQuZ3ByKCksIGV4ZWN1dGFi
bGUuZ3ByKCkpOworICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGZ1bmN0aW9uLmdw
cigpLCByZXN1bHQuZ3ByKCkpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgcmVzdWx0Lmdw
cigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxfdjxKU0JvdW5kRnVuY3Rpb24+
LCAiV2UgZG9uJ3QgaGFuZGxlIHN1YmNsYXNzZXMgd2hlbiBjb21wYXJpbmcgY2xhc3NJbmZvIGJl
bG93Iik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJz
OjpFcXVhbCwgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyKEpTQm91bmRGdW5jdGlvbjo6aW5m
bygpKSkpOwpAQCAtMTQyNjgsMTMgKzE0MjY3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcm9wZXJ0eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IENlbGxVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IENlbGxPck90aGVyVXNlKSB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoMSh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMp
OwogCiAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaDJH
UFIgPSBzY3JhdGNoMi5ncHIoKTsKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lQ2FzZXM7CkBAIC0x
NDMyNiw3ICsxNDMyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0
eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmIChvbmx5U3RydWN0dXJlKQog
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihvbmx5U3RydWN0dXJlKSwg
c2NyYXRjaDFHUFIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1faml0LmVt
aXRMb2FkU3RydWN0dXJlKHZtKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2
bSgpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJ1Y3R1cmU6
OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSwgc2NyYXRjaDFHUFIpOwogICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywg
c2NyYXRjaDFHUFIpKTsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZTdHJ1Y3R1cmUoc2NyYXRjaDFHUFIpKTsKQEAgLTE0MzM4LDcgKzE0MzM1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQog
ICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAgICAgICAgc2xvd0Nh
c2VzLmxpbmsoJm1faml0KTsKLSAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRj
aDFHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2Ny
YXRjaDFHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51
bWVyYXRvckNlbGwsIHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMTQ2MDUsNyArMTQ2MDIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVy
dHlOYW1lcyhOb2RlKiBub2RlKQogICAgICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNo
aWxkMSgpLCBvYmplY3RHUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IHNsb3dDYXNlczsKLSAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIG9i
amVjdEdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmVt
aXRMb2FkU3RydWN0dXJlKHZtKCksIG9iamVjdEdQUiwgc3RydWN0dXJlR1BSKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjpwcmV2aW91c09yUmFyZURhdGFPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogCiAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJz
OjpaZXJvLCBzY3JhdGNoR1BSKSk7CkBAIC0xNDgyMiw4ICsxNDgxOSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZUdQUikpOwogICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0
YUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcp
KSk7Ci0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGUoKSArIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1
cmUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgc3RydWN0dXJlR1BSKTsKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1
Y3R1cmVHUFIpKTsKKyAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURh
dGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9m
U3RydWN0dXJlSUQoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgc3RydWN0dXJlR1BSKTsK
KyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIHN0cnVjdHVyZUdQUikpOworICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJl
SUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJbnRlcm5hbFByb21pc2U6OmluZm8o
KSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSkpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwpAQCAtMTQ4NzAsOCArMTQ4
NjgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9i
amVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRh
YmxlT3JSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSkpOwotICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkgLSBKU0Z1
bmN0aW9uOjpyYXJlRGF0YVRhZyksIHN0cnVjdHVyZUdQUik7Ci0gICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc3RydWN0dXJlR1BSKSk7
CisgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgp
ICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZUlE
KCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHN0cnVjdHVyZUdQUik7CisgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1
cmVHUFIpKTsKKyAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVN0cnVjdHVyZUlEKHN0cnVjdHVy
ZUdQUiwgc3RydWN0dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNDbGFz
czo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOwog
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Z2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwpAQCAtMTUzMzIsMTUgKzE1MzMxLDE0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVXZWFrTWFwU2V0KE5vZGUqIG5vZGUpCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkKIHsKICAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAK
ICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgR1BSUmVnIHRlbXAyR1BSID0g
dGVtcDIuZ3ByKCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3ModGVtcEdQUik7CiAjZWxzZQotICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3ModGVtcDJH
UFIsIHRlbXBHUFIpOworICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzKHRlbXAyLmdwcigpLCB0ZW1wR1BSKTsKICNlbmRpZgogCiAgICAgc3dp
dGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKQEAgLTE1MzY1LDcgKzE1MzYzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1faml0LmVtaXRMb2FkU3Ry
dWN0dXJlKHZtKCksIG9iamVjdEdQUiwgdGVtcEdQUiwgdGVtcDJHUFIpOworICAgICAgICBtX2pp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBvYmplY3RHUFIsIHRlbXBHUFIpOwogCiAgICAgICAg
IEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVj
dCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKQEAgLTE1NDA0LDcgKzE1NDAy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5v
ZGUpCiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsK
IAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICBtX2pp
dC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCBvYmplY3RHUFIsIHJlc3VsdFJlZ3MsIHRlbXAyR1BS
LCBzbG93Q2FzZXMpOworICAgICAgICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCBvYmpl
Y3RHUFIsIHJlc3VsdFJlZ3MsIHNsb3dDYXNlcyk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByb3RvdHlwZU9m
T2JqZWN0LAogICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9iamVjdEdQUikpOwogCkBAIC0xNTQyMSw3ICsxNTQxOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZihOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpOwogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90T2JqZWN0KHZhbHVlR1BSKSk7CiAKLSAgICAgICAgbV9qaXQu
ZW1pdExvYWRQcm90b3R5cGUodm0oKSwgdmFsdWVHUFIsIHJlc3VsdFJlZ3MsIHRlbXAyR1BSLCBz
bG93Q2FzZXMpOworICAgICAgICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCB2YWx1ZUdQ
UiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsCiAg
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVS
ZWdzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IDNiMTU2ZGYwZjIzMmM5YWFkYzA1YTA4ZTgwMTg5ZmY5N2M4OWFhOGUu
LmE5MTJlYjU5OGI5ODIyYTM1OTZhMWMxOGNlMWU2MjNlOGFhYTY4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjQ0LDcg
KzI0NCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVD
b21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAgICAgfSBlbHNlIHsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsOwogICAgICAgICBp
ZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKQEAgLTI1OSw3ICsyNTgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVu
ZGVmaW5lZChFZGdlIG9wZXJhbgogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIg
PSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9i
amVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9i
YWxPYmplY3RHUFIpOwotICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdH
UFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3Ry
dWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zm
c2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlUHRy
KEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9i
amVjdEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsK
QEAgLTI5OSw3ICsyOTgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogICAgIH0gZWxzZSB7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbDsK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCkBAIC0zMTIsNyArMzEw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51
bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE4KICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFs
T2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1v
dGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKLSAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUo
dm0oKSwgYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5l
bWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2Jh
bE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2Jh
bE9iamVjdEdQUiwgdGFrZW4pOwogCkBAIC0xOTA1LDggKzE5MDMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcihFZGdlIG5vZGVVc2UsIGJvb2wg
aW52ZXJ0KQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgR1BSVGVt
cG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJl
ZzsKLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKLSAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IElu
dmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxW
YWxpZCgpOwpAQCAtMTkxNSwxMSArMTkxMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb0Jvb2xlYW5PYmplY3RPck90aGVyKEVkZ2Ugbm9kZVVzZSwgYm9vbCBpbnZlcnQpCiAgICAg
ICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3Ry
dWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgogICAgICAgICAvLyBEbyB0aGlz
IGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSBy
ZWdpc3RlciBhbGxvY2F0aW9uLgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0
aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTY3JhdGNoKHRoaXMpOwogICAgICAgICBz
dHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7Ci0gICAgICAgIHNjcmF0Y2guYWRvcHQocmVh
bFNjcmF0Y2gpOwogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAg
ICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpKTsKQEAgLTE5MzYsNyArMTkyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb0Jvb2xlYW5PYmplY3RPck90aGVyKEVkZ2Ugbm9kZVVzZSwgYm9vbCBpbnZlcnQpCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKLSAgICAgICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7
CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlR1BSLCBzdHJ1Y3R1
cmVHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTIwOTEsNyArMjA4NCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVkZ2Ugbm9kZVVzZSwg
QmFzaWNCbG9jayogdGFrZW4sIEJhCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAg
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKLSAgICAgICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlR1BSLCBzdHJ1
Y3R1cmVHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KHZhbHVlR1BSKSwgbm9kZVVzZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMjE4NSw3ICsyMTc4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2goRWRnZSBub2RlVXNlLCBCYXNp
Y0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG8KICAgICAgICAgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxs
VmFsaWQoKTsKICAgICAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkg
ewogICAgICAgICAgICAgYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgdGFrZW4pOwotICAgICAgICAg
ICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHRlbXAxR1BSLCB0ZW1w
MkdQUik7CisgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQ
UiwgdGVtcDFHUFIpOwogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIHRlbXAyR1BSKTsKICAgICAgICAgICAgIGJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAxR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgdGVtcDJHUFIsIHRh
a2VuKTsKQEAgLTQ0NDcsNyArNDQ0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVj
dHVyZS0+aW5kZXhpbmdNb2RlKCkgPT0gbmV3U3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSk7CiAg
ICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5ld1N0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50
eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS5p
bmxpbmVUeXBlRmxhZ3MoKSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihuZXdTdHJ1Y3R1cmUtPmlkKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQu
c3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5ld1N0cnVjdHVyZS0+aWQoKS5i
aXRzKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTQ2NjYsNyArNDY1OSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5i
cmFuY2hJZkNlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAKQEAgLTQ2OTAsNyArNDY4Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQ
UlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAg
ICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0TG9h
ZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBzY3JhdGNoLmdwcigp
KTsKKyAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlLmdwcigp
LCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklU
Q29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0
R1BSLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDMxNWY5MGQ0Y2Vh
MjM5OTZkZDA3MjhiNmI2YmRjYjQ4NGJiYjFlNjAuLmFiMWY1Yjg2NzU5ZDA1NTY5ZDM4YzA0OGRj
YzgzYWE3ZmQ1ZmIwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04NCw5ICs4NCw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3Byb3RvdHlw
ZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlByb3RvdHlwZSgp
KSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnRTZXQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0KCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2V4ZWN1dGFibGUsIEZ1bmN0
aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCi0gICAgbWFjcm8oRnVuY3Rpb25S
YXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVfc3RydWN0dXJlLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgp
ICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgp
KSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSkgXAotICAg
IG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9p
bnQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dh
dGNocG9pbnQoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZUlELCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
ZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZUlEKCkpIFwKICAgICBtYWNybyhHZXR0
ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBt
YWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkp
IFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggNjA5ZTZkZGY1MTgxOGM1YzBhNTFkZjY5NTgwNzJkZTRlYzg4
ZGMzOC4uZTA1MDZiNGFlZWY2NjAyZjk1M2RmN2I5YmVkYzM0YTQ3YTk3MWM0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNzg3NywxMCAr
Nzg3NywxMSBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaGFzUmFyZURhdGEsIGhhc1N0cnVjdHVyZSk7CiAgICAgICAgIExWYWx1ZSByYXJlRGF0
YSA9IG1fb3V0LnN1YihyYXJlRGF0YVRhZ3MsIG1fb3V0LmNvbnN0SW50UHRyKEpTRnVuY3Rpb246
OnJhcmVEYXRhVGFnKSk7Ci0gICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRy
KHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9j
YXRpb25Qcm9maWxlX3N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1pl
cm82NChzdHJ1Y3R1cmUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1N0cnVjdHVyZSkp
OworICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIocmFyZURhdGEsIG1f
aGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVf
c3RydWN0dXJlSUQpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIoc3RydWN0
dXJlSUQpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1N0cnVjdHVyZSkpOwogCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGhhc1N0cnVjdHVyZSwgY2hlY2tHbG9iYWxPYmplY3RDYXNlKTsK
KyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGRlY29kZU5vbk51bGxTdHJ1Y3R1cmUoc3RydWN0
dXJlSUQpOwogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihz
dHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRy
KG1fbm9kZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/IEpTSW50ZXJuYWxQcm9taXNlOjppbmZvKCkg
OiBKU1Byb21pc2U6OmluZm8oKSkpLCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJh
cmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2Jq
ZWN0Q2FzZSwgZmFzdEFsbG9jYXRpb25DYXNlKTsKQEAgLTc5MzIsMTAgKzc5MzMsMTEgQEAgSUdO
T1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVE
YXRhLCBoYXNTdHJ1Y3R1cmUpOwogICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5zdWIo
cmFyZURhdGFUYWdzLCBtX291dC5jb25zdEludFB0cihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykp
OwotICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9o
ZWFwcy5GdW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZV9z
dHJ1Y3R1cmUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoc3RydWN0dXJl
KSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNTdHJ1Y3R1cmUpKTsKKyAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9u
UmFyZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZUlEKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzMyKHN0cnVjdHVyZUlEKSwgcmFyZWx5
KHNsb3dDYXNlKSwgdXN1YWxseShoYXNTdHJ1Y3R1cmUpKTsKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhoYXNTdHJ1Y3R1cmUsIGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSk7CisgICAgICAgIExWYWx1
ZSBzdHJ1Y3R1cmUgPSBkZWNvZGVOb25OdWxsU3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKICAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hl
YXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pLCBtX291dC5jb25zdEludFB0cihKU0NsYXNzOjppbmZv
KCkpKSwgdXN1YWxseShjaGVja0dsb2JhbE9iamVjdENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsK
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhjaGVja0dsb2JhbE9iamVjdENhc2UsIGZhc3RBbGxv
Y2F0aW9uQ2FzZSk7CkBAIC0xMzcxMCw3ICsxMzcxMiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5H
U19FTkQKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEOwogICAgICAgICBhdXRvIHN0cnVjdHVy
ZSA9IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZS5ub2RlKCkpLm1fc3RydWN0dXJlLm9ubHlTdHJ1
Y3R1cmUoKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZSkKLSAgICAgICAgICAgIHN0cnVjdHVyZUlE
ID0gbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkpOworICAgICAgICAgICAgc3RydWN0
dXJlSUQgPSBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKS5iaXRzKCkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAKQEAgLTE2Nzg5LDcgKzE2NzkxLDcgQEAgSUdOT1JF
X0NMQU5HX1dBUk5JTkdTX0VORAogICAgIAogICAgIHZvaWQgc3RvcmVTdHJ1Y3R1cmUoTFZhbHVl
IG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBtX291dC5zdG9y
ZTMyKG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5pZCgpKSwgb2JqZWN0LCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQz
MihzdHJ1Y3R1cmUtPmlkKCkuYml0cygpKSwgb2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1
cmVJRCk7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dDMyKHN0cnVjdHVyZS0+b2JqZWN0SW5pdGlhbGl6YXRpb25CbG9iKCkpLAogICAgICAgICAgICAg
b2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF91c2VmdWxCeXRlcyk7CkBAIC0xOTU3MCw3ICsxOTU3Miw3
IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47
CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQz
MihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICBtX291dC5j
b25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CisgICAgICAgICAgICBtX291
dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpLmJpdHMoKSkpOwogICAgIH0K
ICAgICAKICAgICBMVmFsdWUgaXNTdHJpbmcoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKQEAgLTE5NTc5LDcgKzE5NTgxLDcgQEAgSUdOT1JFX0NMQU5HX1dB
Uk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1f
b3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZUlEKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdT
dHJ1Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUtPmlkKCkuYml0cygpKSk7CiAgICAgfQogCiAgICAgTFZhbHVlIGlzUm9wZVN0
cmluZyhMVmFsdWUgc3RyaW5nLCBFZGdlIGVkZ2UgPSBFZGdlKCkpCkBAIC0xOTYyNiw3ICsxOTYy
OCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgIHJldHVybiBwcm92
ZW47CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKICAgICAgICAgICAgIG1fb3V0Lmxv
YWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICBtX291
dC5jb25zdEludDMyKHZtKCkuc3ltYm9sU3RydWN0dXJlLT5pZCgpKSk7CisgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKHZtKCkuc3ltYm9sU3RydWN0dXJlLT5pZCgpLmJpdHMoKSkpOwogICAg
IH0KICAgICAKICAgICBMVmFsdWUgaXNTeW1ib2woTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBTcGVjRnVsbFRvcCkKQEAgLTE5NjM1LDcgKzE5NjM3LDcgQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJu
IG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zeW1i
b2xTdHJ1Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5z
eW1ib2xTdHJ1Y3R1cmUtPmlkKCkuYml0cygpKSk7CiAgICAgfQogCiAgICAgTFZhbHVlIGlzTm90
SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChMVmFsdWUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBTcGVjRnVsbFRvcCkKQEAgLTE5NjY0LDcgKzE5NjY2LDcgQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJu
IG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5i
aWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0o
KS5iaWdJbnRTdHJ1Y3R1cmUtPmlkKCkuYml0cygpKSk7CiAgICAgfQogCiAgICAgTFZhbHVlIGlz
SGVhcEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9w
KQpAQCAtMTk2NzMsNyArMTk2NzUsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAg
ICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAg
ICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAot
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLmJpZ0ludFN0cnVjdHVyZS0+aWQoKSkp
OworICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLmJpZ0ludFN0cnVjdHVyZS0+aWQo
KS5iaXRzKCkpKTsKICAgICB9CiAKICAgICBMVmFsdWUgaXNBcnJheVR5cGVGb3JBcnJheWlmeShM
VmFsdWUgY2VsbCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKQEAgLTIwNDAwLDcgKzIwNDAyLDcgQEAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAg
ICAgICAgICAgICAgICBtX291dC5iaXRPcigKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDMyKG9iamVjdCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKG51a2VkU3RydWN0dXJlSURCaXQoKSkpLAorICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludDMyKFN0cnVjdHVyZUlEOjpudWtlZFN0cnVjdHVyZUlE
Qml0KSksCiAgICAgICAgICAgICAgICAgb2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJ
RCk7CiAgICAgICAgICAgICBtX291dC5mZW5jZSgmbV9oZWFwcy5yb290LCBudWxscHRyKTsKICAg
ICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKGJ1dHRlcmZseSwgb2JqZWN0LCBtX2hlYXBzLkpTT2Jq
ZWN0X2J1dHRlcmZseSk7CkBAIC0yMDQyOCw3ICsyMDQzMCw3IEBAIElHTk9SRV9DTEFOR19XQVJO
SU5HU19FTkQKICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAgIG1fb3V0LmJpdE9y
KAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihvYmplY3QsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG51a2VkU3RydWN0
dXJlSURCaXQoKSkpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RydWN0dXJl
SUQ6Om51a2VkU3RydWN0dXJlSURCaXQpKSwKICAgICAgICAgICAgIG9iamVjdCwgbV9oZWFwcy5K
U0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICBtX291dC5mZW5jZSgmbV9oZWFwcy5yb290LCBu
dWxscHRyKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoYnV0dGVyZmx5LCBvYmplY3QsIG1faGVh
cHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKQEAgLTIwOTczLDE1ICsyMDk3NSwxNiBAQCBJR05PUkVf
Q0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLndlYWtSZWZlcmVuY2Vz
KCkuYWRkTGF6aWx5KHRhcmdldCk7CiAgICAgfQogCisgICAgTFZhbHVlIGRlY29kZU5vbk51bGxT
dHJ1Y3R1cmUoTFZhbHVlIHN0cnVjdHVyZUlEKQorICAgIHsKKyAgICAgICAgTFZhbHVlIG1hc2tl
ZFN0cnVjdHVyZUlEID0gbV9vdXQuYml0QW5kKHN0cnVjdHVyZUlELCBtX291dC5jb25zdEludDMy
KHN0cnVjdHVyZUlETWFzaykpOworICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0LmNvbnN0
SW50UHRyKGdfanNjQ29uZmlnLnN0YXJ0T2ZTdHJ1Y3R1cmVIZWFwKSwgbV9vdXQuemVyb0V4dFB0
cihtYXNrZWRTdHJ1Y3R1cmVJRCkpOworICAgIH0KKwogICAgIExWYWx1ZSBsb2FkU3RydWN0dXJl
KExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0
LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwotICAgICAgICBMVmFs
dWUgdGFibGVCYXNlID0gbV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmJhc2UoKSkpOwotICAgICAgICBMVmFsdWUgdGFibGVJbmRleCA9IG1f
b3V0LmFTaHIoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0SW50MzIoU3RydWN0dXJlSURUYWJsZTo6
c19udW1iZXJPZkVudHJvcHlCaXRzKSk7Ci0gICAgICAgIExWYWx1ZSBlbnRyb3B5Qml0cyA9IG1f
b3V0LnNobChtX291dC56ZXJvRXh0UHRyKHN0cnVjdHVyZUlEKSwgbV9vdXQuY29uc3RJbnQzMihT
dHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyKSk7
Ci0gICAgICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzID0gbV9vdXQuYmFzZUluZGV4KG1faGVhcHMu
c3RydWN0dXJlVGFibGUsIHRhYmxlQmFzZSwgbV9vdXQuemVyb0V4dFB0cih0YWJsZUluZGV4KSk7
Ci0gICAgICAgIExWYWx1ZSBlbmNvZGVkU3RydWN0dXJlQml0cyA9IG1fb3V0LmxvYWRQdHIoYWRk
cmVzcyk7Ci0gICAgICAgIHJldHVybiBtX291dC5iaXRYb3IoZW5jb2RlZFN0cnVjdHVyZUJpdHMs
IGVudHJvcHlCaXRzKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZU5vbk51bGxTdHJ1Y3R1cmUoc3Ry
dWN0dXJlSUQpOwogICAgIH0KIAogICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50
ZXIpCkBAIC0yMDk5Nyw3ICsyMTAwMCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAog
ICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlSUQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
CiAgICAgewotICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkp
OworICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkuYml0cygp
KTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
YnN0cmFjdFNsb3RWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BYnN0cmFj
dFNsb3RWaXNpdG9yLmgKaW5kZXggYmMyOWY3NDE5MzM5OGQxNGNmZjQyNTNmNjI2ODZkZjE4MjQ3
ODMwYS4uZDZmNDE2MmZmYWI5ZmNkYTJiNGEyZGM2ZjM4NDNkYmY2NmU5MjEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWJzdHJhY3RTbG90VmlzaXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fic3RyYWN0U2xvdFZpc2l0b3IuaApAQCAtNDgs
NiArNDgsNyBAQCBjbGFzcyBWTTsKIGNsYXNzIFZlcmlmaWVyU2xvdFZpc2l0b3I7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VHJhaXRzPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOworY2xhc3MgV3JpdGVCYXJyaWVyU3RydWN0
dXJlSUQ7CiAKIGNsYXNzIEFic3RyYWN0U2xvdFZpc2l0b3IgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFic3RyYWN0U2xvdFZpc2l0b3IpOwpAQCAtMTQzLDYgKzE0NCw4IEBAIHB1YmxpYzoK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gdm9pZCBhcHBlbmQo
Y29uc3QgV3JpdGVCYXJyaWVyQmFzZTxULCBUcmFpdHM+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHJhaXRzPiB2b2lkIGFwcGVuZEhpZGRlbihjb25zdCBXcml0ZUJhcnJp
ZXJCYXNlPFQsIFRyYWl0cz4mKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBXcml0ZUJhcnJpZXJT
dHJ1Y3R1cmVJRCYpOworICAgIHZvaWQgYXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllclN0
cnVjdHVyZUlEJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+IHZvaWQgYXBwZW5k
KEl0ZXJhdG9yIGJlZ2luICwgSXRlcmF0b3IgZW5kKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
YXBwZW5kVmFsdWVzKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93biwgUmF3VmFsdWVUcmFp
dHM8VW5rbm93bj4+Kiwgc2l6ZV90IGNvdW50KTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBw
ZW5kVmFsdWVzSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93biwgUmF3VmFsdWVU
cmFpdHM8VW5rbm93bj4+Kiwgc2l6ZV90IGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Fic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9BYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oCmluZGV4IGFmNjYw
Mzg2NGM2ZWJmZTJlZmUxZGM5MDhhMWJkODUxM2M2ZWJmNTguLjYyODQzODJlMDAyMTE1Njk4ZTUy
OTU2YjJkMzFiZGY4MTY2ZDJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Fic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaApAQCAtMTU4LDYgKzE1OCwxNiBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgQWJzdHJhY3RTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKGNv
bnN0IFdyaXRlQmFycmllckJhc2U8VCwgVAogICAgIGFwcGVuZEhpZGRlblVuYmFycmllcmVkKHNs
b3QuZ2V0KCkpOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgQWJzdHJhY3RTbG90VmlzaXRvcjo6
YXBwZW5kKGNvbnN0IFdyaXRlQmFycmllclN0cnVjdHVyZUlEJiBzbG90KQoreworICAgIGFwcGVu
ZFVuYmFycmllcmVkKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oc2xvdC5nZXQoKSkpOworfQor
CitBTFdBWVNfSU5MSU5FIHZvaWQgQWJzdHJhY3RTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKGNv
bnN0IFdyaXRlQmFycmllclN0cnVjdHVyZUlEJiBzbG90KQoreworICAgIGFwcGVuZEhpZGRlblVu
YmFycmllcmVkKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oc2xvdC5nZXQoKSkpOworfQorCiBB
TFdBWVNfSU5MSU5FIHZvaWQgQWJzdHJhY3RTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuVW5iYXJy
aWVyZWQoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNDZWxsKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDBjOGQzNTU5NjA0YWVkMGIzMzhjNGQ5NzdhM2Q2
MDk3ZDkyY2VkNjMuLjM1M2ZmMGRlOGU3NDdiODY5YjhhNTEyMzAxNTU5YzZiMDllYTZjZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVk
ZSAiU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlN0b2NoYXN0aWNTcGFj
ZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU3RvcElmTmVjZXNzYXJ5VGltZXIu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVk
ZSAiU3dlZXBpbmdTY29wZS5oIgpAQCAtMzg2LDggKzM4Nyw4IEBAIEhlYXA6OkhlYXAoVk0mIHZt
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCiAgICAgLCBzdHJ1
Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBl
LCBTdHJ1Y3R1cmVDaGFpbikKICAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJh
cmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUp
Ci0gICAgLCBicmFuZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCisgICAgLCBzdHJ1
Y3R1cmVTcGFjZSgiSXNvbGF0ZWRTdHJ1Y3R1cmVTcGFjZSIsICp0aGlzLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBzaXplb2YoU3RydWN0dXJlKSwgU3RydWN0dXJlOjpudW1iZXJPZkxv
d2VyVGllckNlbGxzLCBtYWtlVW5pcXVlPFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+
KCJTdHJ1Y3R1cmUiKSkKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgiSXNvbGF0ZWRCcmFu
ZGVkU3RydWN0dXJlU3BhY2UiLCAqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
c2l6ZW9mKEJyYW5kZWRTdHJ1Y3R1cmUpLCBCcmFuZGVkU3RydWN0dXJlOjpudW1iZXJPZkxvd2Vy
VGllckNlbGxzLCBtYWtlVW5pcXVlPFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCJT
dHJ1Y3R1cmUiKSkKICAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRo
aXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4
YzUyMTVhZmQKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRz
KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQpA
QCAtMTYwMiw4ICsxNjAzLDYgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRW5kUGhhc2Uo
R0NDb25kdWN0b3IgY29ubikKICAgICAgICAgaWYgKHZtKCkudHlwZVByb2ZpbGVyKCkpCiAgICAg
ICAgICAgICB2bSgpLnR5cGVQcm9maWxlcigpLT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKHZtKCkp
OwogCi0gICAgICAgIG1fc3RydWN0dXJlSURUYWJsZS5mbHVzaE9sZFRhYmxlcygpOwotCiAgICAg
ICAgIHJlYXBXZWFrSGFuZGxlcygpOwogICAgICAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFr
R0NIYXNoVGFibGVzKCk7CiAgICAgICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKaW5kZXggNGRlODJlYjg3NDk0Y2M3OTA2YTM2ZWM5NTgyOTY1NWZkMWJj
ZDgwYi4uMzdmYTNmMTEzY2U4YjViNTRiMjRlMmE4NzQ0MTY4NzQxMDUxMmM3NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIk1hcmtlZFNw
YWNlLmgiCiAjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgot
I2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRC5oIgog
I2luY2x1ZGUgIlN5bmNocm9ub3VzbmVzcy5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5o
IgogI2luY2x1ZGUgPHd0Zi9BdXRvbWF0aWNUaHJlYWQuaD4KQEAgLTI3NSw4ICsyNzUsNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2Rl
ZmVycmFsRGVwdGg7IH0KIAotICAgIFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUo
KSB7IHJldHVybiBtX3N0cnVjdHVyZUlEVGFibGU7IH0KLQogICAgIENvZGVCbG9ja1NldCYgY29k
ZUJsb2NrU2V0KCkgeyByZXR1cm4gKm1fY29kZUJsb2NrczsgfQogCiAjaWYgVVNFKEZPVU5EQVRJ
T04pCkBAIC01OTYsNyArNTk0LDYgQEAgcHJpdmF0ZToKICAgICBNYXJrYWJsZTxDb2xsZWN0aW9u
U2NvcGUsIEVudW1NYXJrYWJsZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+PiBtX2xhc3RDb2xsZWN0
aW9uU2NvcGU7CiAgICAgTG9jayBtX3JhY2VNYXJrU3RhY2tMb2NrOwogCi0gICAgU3RydWN0dXJl
SURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFj
ZTsKICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZl
cnM7CiAgICAgc2l6ZV90IG1fZXh0cmFNZW1vcnlTaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcApp
bmRleCBmNzI5MzczMTE5MzEyYmM4NjQ3MzUxMzg2MjJjMGRhNDQxMTAyNTg5Li40MTk1NGJhODA5
ZDEzZDU4OTA4ZTNhMzk3NDUxMjg1MDE4ODU3MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcApAQCAtMzAs
NzIgKzMwLDEzIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihDU3RyaW5nIG5hbWUpCi0jaWYgRU5BQkxFKE1B
TExPQ19IRUFQX0JSRUFLRE9XTikKLSAgICA6IG1fZGVidWdIZWFwKG5hbWUuZGF0YSgpKQotI2Vu
ZGlmCisgICAgOiBCYXNlKG5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG5hbWUpOwogfQogCiBJ
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCiB7
Ci0jaWYgIUVOQUJMRShNQUxMT0NfSEVBUF9CUkVBS0RPV04pCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHZvaWQqIGJsb2NrID0g
bV9ibG9ja3NbaV07Ci0gICAgICAgIGlmICghbV9jb21taXR0ZWQucXVpY2tHZXQoaSkpCi0gICAg
ICAgICAgICBXVEY6OmZhc3RDb21taXRBbGlnbmVkTWVtb3J5KGJsb2NrLCBNYXJrZWRCbG9jazo6
YmxvY2tTaXplKTsKLSAgICAgICAgZmFzdEFsaWduZWRGcmVlKGJsb2NrKTsKLSAgICB9Ci0jZW5k
aWYKLX0KLQotdm9pZCogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVBbGln
bmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQotewotICAgIC8vIFNpbmNl
IHRoaXMgaXMgZGVzaWduZWQgc3BlY2lhbGx5IGZvciBJc29TdWJzcGFjZSwgd2Uga25vdyB0aGF0
IHdlIHdpbGwgb25seSBiZSBhc2tlZCB0bwotICAgIC8vIGFsbG9jYXRlIE1hcmtlZEJsb2Nrcy4K
LSAgICBSRUxFQVNFX0FTU0VSVChhbGlnbm1lbnQgPT0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSk7
Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKLQot
I2lmIEVOQUJMRShNQUxMT0NfSEVBUF9CUkVBS0RPV04pCi0gICAgcmV0dXJuIG1fZGVidWdIZWFw
Lm1lbWFsaWduKE1hcmtlZEJsb2NrOjpibG9ja1NpemUsIE1hcmtlZEJsb2NrOjpibG9ja1NpemUs
IHRydWUpOwotI2Vsc2UKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgCi0gICAg
bV9maXJzdFVuY29tbWl0dGVkID0gbV9jb21taXR0ZWQuZmluZEJpdChtX2ZpcnN0VW5jb21taXR0
ZWQsIGZhbHNlKTsKLSAgICBpZiAobV9maXJzdFVuY29tbWl0dGVkIDwgbV9ibG9ja3Muc2l6ZSgp
KSB7Ci0gICAgICAgIG1fY29tbWl0dGVkLnF1aWNrU2V0KG1fZmlyc3RVbmNvbW1pdHRlZCk7Ci0g
ICAgICAgIHZvaWQqIHJlc3VsdCA9IG1fYmxvY2tzW21fZmlyc3RVbmNvbW1pdHRlZF07Ci0gICAg
ICAgIFdURjo6ZmFzdENvbW1pdEFsaWduZWRNZW1vcnkocmVzdWx0LCBNYXJrZWRCbG9jazo6Ymxv
Y2tTaXplKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCog
cmVzdWx0ID0gdHJ5RmFzdEFsaWduZWRNYWxsb2MoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSwgTWFy
a2VkQmxvY2s6OmJsb2NrU2l6ZSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOwotICAgIG1fYmxv
Y2tzLmFwcGVuZChyZXN1bHQpOwotICAgIG1fYmxvY2tJbmRpY2VzLmFkZChyZXN1bHQsIGluZGV4
KTsKLSAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBtX2NvbW1pdHRlZC5zaXplKCkpCi0g
ICAgICAgIG1fY29tbWl0dGVkLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKLSAgICBtX2Nv
bW1pdHRlZC5xdWlja1NldChpbmRleCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbmRpZgotfQot
Ci12b2lkIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVBbGlnbmVkTWVtb3J5KHZvaWQq
IGJhc2VQdHIpCi17Ci0jaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKLSAgICBtX2Rl
YnVnSGVhcC5mcmVlKGJhc2VQdHIpOwotI2Vsc2UKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07Ci0gICAgCi0gICAgYXV0byBpdGVyID0gbV9ibG9ja0luZGljZXMuZmluZChiYXNlUHRyKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1fYmxvY2tJbmRpY2VzLmVuZCgpKTsKLSAgICB1
bnNpZ25lZCBpbmRleCA9IGl0ZXItPnZhbHVlOwotICAgIG1fY29tbWl0dGVkLnF1aWNrQ2xlYXIo
aW5kZXgpOwotICAgIG1fZmlyc3RVbmNvbW1pdHRlZCA9IHN0ZDo6bWluKGluZGV4LCBtX2ZpcnN0
VW5jb21taXR0ZWQpOwotICAgIFdURjo6ZmFzdERlY29tbWl0QWxpZ25lZE1lbW9yeShiYXNlUHRy
LCBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKLSNlbmRpZgorICAgIHJlbGVhc2VNZW1vcnlGcm9t
U3ViY2xhc3NEZXN0cnVjdG9yKCk7CiB9CiAKIHZvaWQgSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtMTI3LDUgKzY4LDI1IEBAIHZvaWQq
IElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeVJlYWxsb2NhdGVNZW1vcnkodm9pZCosIHNp
emVfdCkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkKiBJc29B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlNYWxsb2NCbG9jaygpCit7CisgICAgcmV0dXJuIHRy
eUZhc3RBbGlnbmVkTWFsbG9jKE1hcmtlZEJsb2NrOjpibG9ja1NpemUsIE1hcmtlZEJsb2NrOjpi
bG9ja1NpemUpOworfQorCit2b2lkIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVCbG9j
ayh2b2lkKiBibG9jaykKK3sKKyAgICBmYXN0QWxpZ25lZEZyZWUoYmxvY2spOworfQorCit2b2lk
IElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmNvbW1pdEJsb2NrKHZvaWQqIGJsb2NrKQorewor
ICAgIFdURjo6ZmFzdENvbW1pdEFsaWduZWRNZW1vcnkoYmxvY2ssIE1hcmtlZEJsb2NrOjpibG9j
a1NpemUpOworfQorCit2b2lkIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmRlY29tbWl0Qmxv
Y2sodm9pZCogYmxvY2spCit7CisgICAgV1RGOjpmYXN0RGVjb21taXRBbGlnbmVkTWVtb3J5KGJs
b2NrLCBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaAppbmRleCAyYmI2NTE3MDQ2N2RkNjViYWYyMzNjNjU5MjYyNjFiYzc1NTAzM2Nj
Li5kZjdkNzdkYTM4ZmE4MmMzNDhmMjA0Y2EzZDIwZjI5MGIwM2YyYWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIklzb01lbW9yeUFsbG9jYXRvckJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnSGVhcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNCwzMSArMzQsMjQgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNsYXNzIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IgZmluYWwgOiBwdWJsaWMgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvciB7CitjbGFzcyBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yIGZp
bmFsIDogcHVibGljIElzb01lbW9yeUFsbG9jYXRvckJhc2UgewogcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBJc29NZW1vcnlBbGxvY2F0b3JCYXNlOworCiAgICAgSXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcihDU3RyaW5nKTsKICAgICB+SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGZpbmFs
OwogCi0gICAgdm9pZCogdHJ5QWxsb2NhdGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQs
IHNpemVfdCBzaXplKSBmaW5hbDsKLSAgICB2b2lkIGZyZWVBbGlnbmVkTWVtb3J5KHZvaWQqKSBm
aW5hbDsKLQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCogdHJ5QWxsb2NhdGVNZW1vcnkoc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGZyZWVNZW1v
cnkodm9pZCopIGZpbmFsOwogICAgIHZvaWQqIHRyeVJlYWxsb2NhdGVNZW1vcnkodm9pZCosIHNp
emVfdCkgZmluYWw7CiAKLXByaXZhdGU6Ci0jaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9X
TikKLSAgICAvLyBJZiBicmVha2Rvd24gaXMgZW5hYmxlZCwgd2UgZG8gbm90IGVuc3VyZSBJc28t
ZmVhdHVyZS4gVGhpcyBpcyB0b3RhbGx5IE9LIHNpbmNlIGJyZWFrZG93biBpcyBtZW1vcnkgYmxv
YXQgZGVidWdnaW5nIGZlYXR1cmUuCi0gICAgV1RGOjpEZWJ1Z0hlYXAgbV9kZWJ1Z0hlYXA7Ci0j
ZWxzZQotICAgIFZlY3Rvcjx2b2lkKj4gbV9ibG9ja3M7Ci0gICAgSGFzaE1hcDx2b2lkKiwgdW5z
aWduZWQ+IG1fYmxvY2tJbmRpY2VzOwotICAgIEJpdFZlY3RvciBtX2NvbW1pdHRlZDsKLSAgICB1
bnNpZ25lZCBtX2ZpcnN0VW5jb21taXR0ZWQgeyAwIH07Ci0gICAgTG9jayBtX2xvY2s7Ci0jZW5k
aWYKK3Byb3RlY3RlZDoKKyAgICB2b2lkKiB0cnlNYWxsb2NCbG9jaygpIGZpbmFsOworICAgIHZv
aWQgZnJlZUJsb2NrKHZvaWQqIGJsb2NrKSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdEJsb2NrKHZv
aWQqIGJsb2NrKSBmaW5hbDsKKyAgICB2b2lkIGRlY29tbWl0QmxvY2sodm9pZCogYmxvY2spIGZp
bmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29NZW1vcnlBbGxvY2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyM2Jl
ZTVjYjI5ZTAyZDg5MTczZTQ0NDgyOTIxMzI4OGRmZTFkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29NZW1vcnlBbGxvY2F0b3JCYXNlLmNwcApAQCAt
MCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJc29NZW1vcnlBbGxvY2F0
b3JCYXNlLmgiCisKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworSXNvTWVtb3J5QWxsb2NhdG9yQmFzZTo6SXNvTWVtb3J5QWxsb2NhdG9yQmFzZShDU3RyaW5n
IG5hbWUpCisjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKKyAgICA6IG1fZGVidWdI
ZWFwKG5hbWUuZGF0YSgpKQorI2VuZGlmCit7CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworfQor
CitJc29NZW1vcnlBbGxvY2F0b3JCYXNlOjp+SXNvTWVtb3J5QWxsb2NhdG9yQmFzZSgpCit7Cit9
CisKKy8vIFdlIG5lZWQgdG8gY2FsbCB0aGlzIGZyb20gdGhlIGRlcml2ZWQgY2xhc3MncyBkZXN0
cnVjdG9yIGJlY2F1c2UgaXQncyB1bmRlZmluZWQgYmVoYXZpb3IgdG8gY2FsbCBwdXJlIHZpcnR1
YWwgbWV0aG9kcyBmcm9tIHdpdGhpbiBhIGRlc3RydWN0b3IuCit2b2lkIElzb01lbW9yeUFsbG9j
YXRvckJhc2U6OnJlbGVhc2VNZW1vcnlGcm9tU3ViY2xhc3NEZXN0cnVjdG9yKCkKK3sKKyNpZiAh
RU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdm9pZCogYmxvY2sgPSBtX2Jsb2Nr
c1tpXTsKKyAgICAgICAgaWYgKCFtX2NvbW1pdHRlZC5xdWlja0dldChpKSkKKyAgICAgICAgICAg
IGNvbW1pdEJsb2NrKGJsb2NrKTsKKyAgICAgICAgZnJlZUJsb2NrKGJsb2NrKTsKKyAgICB9Cisj
ZW5kaWYKK30KKwordm9pZCogSXNvTWVtb3J5QWxsb2NhdG9yQmFzZTo6dHJ5QWxsb2NhdGVBbGln
bmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQoreworICAgIC8vIFNpbmNl
IHRoaXMgaXMgZGVzaWduZWQgc3BlY2lhbGx5IGZvciBJc29TdWJzcGFjZSwgd2Uga25vdyB0aGF0
IHdlIHdpbGwgb25seSBiZSBhc2tlZCB0bworICAgIC8vIGFsbG9jYXRlIE1hcmtlZEJsb2Nrcy4K
KyAgICBSRUxFQVNFX0FTU0VSVChhbGlnbm1lbnQgPT0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSBNYXJrZWRCbG9jazo6YmxvY2tTaXplKTsKKwor
I2lmIEVOQUJMRShNQUxMT0NfSEVBUF9CUkVBS0RPV04pCisgICAgcmV0dXJuIG1fZGVidWdIZWFw
Lm1lbWFsaWduKE1hcmtlZEJsb2NrOjpibG9ja1NpemUsIE1hcmtlZEJsb2NrOjpibG9ja1NpemUs
IHRydWUpOworI2Vsc2UKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgCisgICAg
bV9maXJzdFVuY29tbWl0dGVkID0gbV9jb21taXR0ZWQuZmluZEJpdChtX2ZpcnN0VW5jb21taXR0
ZWQsIGZhbHNlKTsKKyAgICBpZiAobV9maXJzdFVuY29tbWl0dGVkIDwgbV9ibG9ja3Muc2l6ZSgp
KSB7CisgICAgICAgIG1fY29tbWl0dGVkLnF1aWNrU2V0KG1fZmlyc3RVbmNvbW1pdHRlZCk7Cisg
ICAgICAgIHZvaWQqIHJlc3VsdCA9IG1fYmxvY2tzW21fZmlyc3RVbmNvbW1pdHRlZF07CisgICAg
ICAgIGNvbW1pdEJsb2NrKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIAorICAgIHZvaWQqIHJlc3VsdCA9IHRyeU1hbGxvY0Jsb2NrKCk7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ibG9j
a3Muc2l6ZSgpOworICAgIG1fYmxvY2tzLmFwcGVuZChyZXN1bHQpOworICAgIG1fYmxvY2tJbmRp
Y2VzLmFkZChyZXN1bHQsIGluZGV4KTsKKyAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBt
X2NvbW1pdHRlZC5zaXplKCkpCisgICAgICAgIG1fY29tbWl0dGVkLnJlc2l6ZShtX2Jsb2Nrcy5j
YXBhY2l0eSgpKTsKKyAgICBtX2NvbW1pdHRlZC5xdWlja1NldChpbmRleCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKKyNlbmRpZgorfQorCit2b2lkIElzb01lbW9yeUFsbG9jYXRvckJhc2U6OmZyZWVB
bGlnbmVkTWVtb3J5KHZvaWQqIGJhc2VQdHIpCit7CisjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JS
RUFLRE9XTikKKyAgICBtX2RlYnVnSGVhcC5mcmVlKGJhc2VQdHIpOworI2Vsc2UKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgCisgICAgYXV0byBpdGVyID0gbV9ibG9ja0luZGlj
ZXMuZmluZChiYXNlUHRyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1fYmxvY2tJbmRp
Y2VzLmVuZCgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGl0ZXItPnZhbHVlOworICAgIG1fY29t
bWl0dGVkLnF1aWNrQ2xlYXIoaW5kZXgpOworICAgIG1fZmlyc3RVbmNvbW1pdHRlZCA9IHN0ZDo6
bWluKGluZGV4LCBtX2ZpcnN0VW5jb21taXR0ZWQpOworICAgIGRlY29tbWl0QmxvY2soYmFzZVB0
cik7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb01lbW9yeUFsbG9jYXRvckJhc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZmRiOGZmNTU3NzQzMmI3N2FkYTM5Y2MxOTY2M2I1YmY0OThjZTBhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvTWVtb3J5QWxsb2NhdG9yQmFzZS5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0RlYnVnSGVh
cC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJc29NZW1vcnlBbGxvY2F0b3JCYXNlIDogcHVi
bGljIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IgeworcHVibGljOgorICAgIElzb01lbW9yeUFsbG9j
YXRvckJhc2UoQ1N0cmluZyk7CisgICAgfklzb01lbW9yeUFsbG9jYXRvckJhc2UoKSBvdmVycmlk
ZTsKKworICAgIHZvaWQqIHRyeUFsbG9jYXRlQWxpZ25lZE1lbW9yeShzaXplX3QgYWxpZ25tZW50
LCBzaXplX3Qgc2l6ZSkgZmluYWw7CisgICAgdm9pZCBmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJlbGVhc2VNZW1vcnlGcm9tU3ViY2xhc3NE
ZXN0cnVjdG9yKCk7CisgICAgdmlydHVhbCB2b2lkKiB0cnlNYWxsb2NCbG9jaygpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZnJlZUJsb2NrKHZvaWQqIGJsb2NrKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNvbW1pdEJsb2NrKHZvaWQqIGJsb2NrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlY29t
bWl0QmxvY2sodm9pZCogYmxvY2spID0gMDsKKworI2lmIEVOQUJMRShNQUxMT0NfSEVBUF9CUkVB
S0RPV04pCitwcm90ZWN0ZWQ6CisgICAgLy8gSWYgYnJlYWtkb3duIGlzIGVuYWJsZWQsIHdlIGRv
IG5vdCBlbnN1cmUgSXNvLWZlYXR1cmUuIFRoaXMgaXMgdG90YWxseSBPSyBzaW5jZSBicmVha2Rv
d24gaXMgbWVtb3J5IGJsb2F0IGRlYnVnZ2luZyBmZWF0dXJlLgorICAgIFdURjo6RGVidWdIZWFw
IG1fZGVidWdIZWFwOworI2Vsc2UKK3ByaXZhdGU6CisgICAgVmVjdG9yPHZvaWQqPiBtX2Jsb2Nr
czsKKyAgICBIYXNoTWFwPHZvaWQqLCB1bnNpZ25lZD4gbV9ibG9ja0luZGljZXM7CisgICAgQml0
VmVjdG9yIG1fY29tbWl0dGVkOworICAgIHVuc2lnbmVkIG1fZmlyc3RVbmNvbW1pdHRlZCB7IDAg
fTsKKyAgICBMb2NrIG1fbG9jazsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAppbmRleCA5MmUyYzFk
MGZiMWM1ZTZjMjk5ZjA1OTlkNjE2Yzc4NTUwNGQ0OGJiLi5mZWJiMGEyODk1YzQ5ODlkY2UxMjJm
NzdkM2JjOGQ5NWY1ZmIxY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2UuY3BwCkBAIC0zMywxMSArMzMsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUlzb1N1
YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIGNvbnN0IEhlYXBD
ZWxsVHlwZSYgaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJPZkxvd2Vy
VGllckNlbGxzKQorSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYg
aGVhcCwgY29uc3QgSGVhcENlbGxUeXBlJiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplLCB1aW50
OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMsIHN0ZDo6dW5pcXVlX3B0cjxJc29NZW1vcnlBbGxv
Y2F0b3JCYXNlPiYmIGFsbG9jYXRvcikKICAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXApCiAgICAg
LCBtX2RpcmVjdG9yeShXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21T
aXplPihzaXplKSkKICAgICAsIG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQotICAgICwg
bV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4obmFtZSkpCisgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IoYWxsb2Nh
dG9yID8gV1RGTW92ZShhbGxvY2F0b3IpIDogbWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPihuYW1lKSkKIHsKICAgICBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCA9IG51
bWJlck9mTG93ZXJUaWVyQ2VsbHM7CiAgICAgQVNTRVJUKFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXplKCkpOwpAQCAtOTksOCAr
OTksOSBAQCB2b2lkKiBJc29TdWJzcGFjZTo6dHJ5QWxsb2NhdGVGcm9tTG93ZXJUaWVyKCkKICAg
ICAgICAgcmV0dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKICAgICB9CiAgICAgaWYgKG1fcmVtYWlu
aW5nTG93ZXJUaWVyQ2VsbENvdW50KSB7Ci0gICAgICAgIFByZWNpc2VBbGxvY2F0aW9uKiBhbGxv
Y2F0aW9uID0gUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcihtX3NwYWNlLmhl
YXAoKSwgY2VsbFNpemUoKSwgdGhpcywgLS1tX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCk7
Ci0gICAgICAgIHJldHVybiByZXZpdmUoYWxsb2NhdGlvbik7CisgICAgICAgIFByZWNpc2VBbGxv
Y2F0aW9uKiBhbGxvY2F0aW9uID0gUHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZUZvckxvd2Vy
VGllcihtX3NwYWNlLmhlYXAoKSwgY2VsbFNpemUoKSwgdGhpcywgLS1tX3JlbWFpbmluZ0xvd2Vy
VGllckNlbGxDb3VudCk7CisgICAgICAgIGlmIChhbGxvY2F0aW9uKQorICAgICAgICAgICAgcmV0
dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAppbmRleCA4Y2Q2YmNjMzI5MDYz
ZGQ4MjY4MDIwYjY2M2Q2MTA0YTllNzM4NzdmLi40NTA3OThhODFhNTNmMjU5ZTAxMzJhZDdjMDJh
NGQzZGQxODg5MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgK
QEAgLTI2LDE4ICsyNiwxOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCbG9ja0RpcmVj
dG9yeS5oIgorI2luY2x1ZGUgIklzb01lbW9yeUFsbG9jYXRvckJhc2UuaCIKICNpbmNsdWRlICJT
dWJzcGFjZS5oIgogI2luY2x1ZGUgIlN1YnNwYWNlQWNjZXNzLmgiCiAjaW5jbHVkZSA8d3RmL1Np
bmdseUxpbmtlZExpc3RXaXRoVGFpbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIElzb0NlbGxTZXQ7CiAKIGNsYXNzIElzb1N1
YnNwYWNlIDogcHVibGljIFN1YnNwYWNlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBjb25zdCBIZWFwQ2VsbFR5cGUmLCBz
aXplX3QsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscyk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgY29uc3QgSGVhcENlbGxUeXBl
Jiwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscywgc3RkOjp1bmlx
dWVfcHRyPElzb01lbW9yeUFsbG9jYXRvckJhc2U+JiYgPSBudWxscHRyKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSB+SXNvU3Vic3BhY2UoKSBvdmVycmlkZTsKIAogICAgIHNpemVfdCBjZWxsU2l6
ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0KQEAgLTY1LDcgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICBCbG9ja0RpcmVjdG9yeSBtX2RpcmVjdG9yeTsKICAgICBMb2Nh
bEFsbG9jYXRvciBtX2xvY2FsQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb01lbW9yeUFsbG9jYXRvckJhc2U+IG1faXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8UHJlY2lzZUFsbG9jYXRpb24sIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZTxQcmVjaXNlQWxsb2NhdGlvbj4+IG1fbG93ZXJUaWVyRnJlZUxpc3Q7
CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PElzb0NlbGxTZXQsIFBhY2tlZFJhd1NlbnRpbmVsTm9k
ZTxJc29DZWxsU2V0Pj4gbV9jZWxsU2V0czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKaW5kZXggZmExYmYzYzNkYzFjMTQxNWI0ZGU0
OTM5NDYxY2FlODFlNTMwNDVhMC4uODM2ZTdkYTY0YTk4YzcyZjMzYmU2Mzc2YjhiMzM0MjUzMTc3
NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0
aW9uLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxs
b2NhdGlvbjo6dHJ5UmVhbGxvY2F0ZShzaXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwCiB9CiAK
IAotUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRp
ZXIoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUsIFN1YnNwYWNlKiBzdWJzcGFjZSwgdWludDhfdCBs
b3dlclRpZXJJbmRleCkKK1ByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHJ5
Q3JlYXRlRm9yTG93ZXJUaWVyKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vi
c3BhY2UsIHVpbnQ4X3QgbG93ZXJUaWVySW5kZXgpCiB7CiAgICAgaWYgY29uc3RleHByICh2YWxp
ZGF0ZURGR0RvZXNHQykKICAgICAgICAgaGVhcC52bSgpLnZlcmlmeUNhbkdDKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uaAppbmRleCA5Y2UzZGE4
ZWYzYmE1MTg0YmNlZGZhMmQ3YWIzNmYwMTZkNmJmNTFmLi5lNzlhMjdiYjNmMjQyNGVkMmMxZGE0
ODk4YzE3OTRhNTJhMzA2OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9QcmVjaXNlQWxsb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1By
ZWNpc2VBbGxvY2F0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFByZWNpc2VBbGxvY2F0aW9uKiB0cnlDcmVhdGUoSGVhcCYsIHNpemVfdCwgU3Vic3BhY2UqLCB1
bnNpZ25lZCBpbmRleEluU3BhY2UpOwogCi0gICAgc3RhdGljIFByZWNpc2VBbGxvY2F0aW9uKiBj
cmVhdGVGb3JMb3dlclRpZXIoSGVhcCYsIHNpemVfdCwgU3Vic3BhY2UqLCB1aW50OF90IGxvd2Vy
VGllckluZGV4KTsKKyAgICBzdGF0aWMgUHJlY2lzZUFsbG9jYXRpb24qIHRyeUNyZWF0ZUZvckxv
d2VyVGllcihIZWFwJiwgc2l6ZV90LCBTdWJzcGFjZSosIHVpbnQ4X3QgbG93ZXJUaWVySW5kZXgp
OwogICAgIFByZWNpc2VBbGxvY2F0aW9uKiByZXVzZUZvckxvd2VyVGllcigpOwogCiAgICAgUHJl
Y2lzZUFsbG9jYXRpb24qIHRyeVJlYWxsb2NhdGUoc2l6ZV90LCBTdWJzcGFjZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCmluZGV4IDQ5ODE3OTU3NDUyNDBj
ODQ4MmMyOWY5YTFjNGQ0ZWEyZmJiY2M0YzkuLjBlZDA2YmU1ZmQxODJlYjkwMTMzMTBhM2U1NjRi
NWIwN2U0Nzk5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5j
cHAKQEAgLTE1MiwxMCArMTUyLDkgQEAgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JB
dXhpbGlhcnkoSGVhcENlbGwqIGhlYXBDZWxsKQogICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIkdDIHR5cGU6ICIsIGhlYXAoKS0+Y29sbGVjdGlvblNjb3BlKCksICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdCBhdDogIiwgUmF3UG9pbnRlcihqc0NlbGwp
LCAiXG4iKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIlN0cnVjdHVyZSBJRDogIiwgc3RydWN0dXJlSUQsICIgKDB4IiwgZm9ybWF0KCIleCIsIHN0
cnVjdHVyZUlEKSwgIilcbiIpOwotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVj
dHVyZSBJRCB0YWJsZSBzaXplOiAiLCBoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5zaXplKCks
ICJcbiIpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZSBJRDogIiwg
c3RydWN0dXJlSUQuYml0cygpLCAiICgiLCBSYXdQb2ludGVyKHN0cnVjdHVyZUlELmRlY29kZSgp
KSwgIilcbiIpOwogI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1
cmU6ICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlSUQpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50KCJTdHJ1Y3R1cmU6ICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlSUQuZGVjb2Rl
KCkpLCAiXG4iKTsKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVj
dCBjb250ZW50czoiKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI7ICsraSkKQEAgLTE4NiwxMyArMTg1LDEzIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVu
ZEpTQ2VsbE9yQXV4aWxpYXJ5KEhlYXBDZWxsKiBoZWFwQ2VsbCkKICAgICAgICAgICAgIGRpZSgi
R0Mgc2NhbiBmb3VuZCBjb3JydXB0IG9iamVjdDogc3RydWN0dXJlSUQgaXMgemVybyFcbiIpOwog
ICAgICAgICAKICAgICAgICAgLy8gSXQncyBub3QgT0sgZm9yIHRoZSBzdHJ1Y3R1cmUgdG8gYmUg
bnVrZWQgYXQgYW55IEdDIHNjYW4gcG9pbnQuCi0gICAgICAgIGlmIChpc051a2VkKHN0cnVjdHVy
ZUlEKSkKKyAgICAgICAgaWYgKHN0cnVjdHVyZUlELmlzTnVrZWQoKSkKICAgICAgICAgICAgIGRp
ZSgiR0Mgc2NhbiBmb3VuZCBvYmplY3QgaW4gYmFkIHN0YXRlOiBzdHJ1Y3R1cmVJRCBpcyBudWtl
ZCFcbiIpOwotICAgICAgICAKKwogICAgICAgICAvLyBUaGlzIGRldGVjdHMgdGhlIHdvcnN0IG9m
IHRoZSBiYWRuZXNzLgotICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoaGVhcCgp
LT5zdHJ1Y3R1cmVJRFRhYmxlKCksIHN0cnVjdHVyZUlEKTsKKyAgICAgICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHN0cnVjdHVyZUlEKTsKICAgICB9OwotICAgIAorCiAgICAgLy8gSW4g
ZGVidWcgbW9kZSwgd2UgdmFsaWRhdGUgYmVmb3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBp
dCBjbGVhcmVyIHdoYXQgdGhlIHByb2JsZW0KICAgICAvLyB3YXMuIEl0J3MgYWxzbyBzbG93ZXIs
IHNvIHdlIGRvbid0IGRvIGl0IG5vcm1hbGx5LgogICAgIGlmIChBU1NFUlRfRU5BQkxFRCAmJiBp
c0pTQ2VsbEtpbmQoaGVhcENlbGwtPmNlbGxLaW5kKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmgKaW5kZXggNjFlNjlhZTQ0N2E3YzM3ODg4NmY2YTZhNTFjY2ZmMDdj
ZGRhNDEzZS4uYWIzNDc0MTBkNDI1MGU4MDQwMGIzZmVmZjNhNzdjNTU0ODNjMjZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC05Miw2ICs5Miw4IEBAIHB1
YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gdm9pZCBh
cHBlbmQoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxULCBUcmFpdHM+Jik7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPiB2b2lkIGFwcGVuZEhpZGRlbihjb25zdCBXcml0
ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4mKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBXcml0ZUJh
cnJpZXJTdHJ1Y3R1cmVJRCYpOworICAgIHZvaWQgYXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFy
cmllclN0cnVjdHVyZUlEJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+IHZvaWQg
YXBwZW5kKEl0ZXJhdG9yIGJlZ2luICwgSXRlcmF0b3IgZW5kKTsKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXBwZW5kVmFsdWVzKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93biwgUmF3VmFs
dWVUcmFpdHM8VW5rbm93bj4+Kiwgc2l6ZV90IGNvdW50KTsKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgYXBwZW5kVmFsdWVzSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93biwgUmF3
VmFsdWVUcmFpdHM8VW5rbm93bj4+Kiwgc2l6ZV90IGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKaW5kZXggNDRmMjA5YzU5NGU5ZjQ4
Zjk0Zjk5Nzc0Y2U2NDRlOGZkZGJlODFjMi4uNTQyMjNhNjQ3OTZhZmU5NjJkZDc2ZGIyMzljMDFj
YzJlZmI1N2VhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3JJbmxpbmVzLmgKQEAgLTExNiw2ICsxMTYsMTYgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RW
aXNpdG9yOjphcHBlbmRIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxULCBUcmFpdHM+Jgog
ICAgIGFwcGVuZEhpZGRlblVuYmFycmllcmVkKHNsb3QuZ2V0KCkpOwogfQogCitBTFdBWVNfSU5M
SU5FIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZChjb25zdCBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJ
RCYgc2xvdCkKK3sKKyAgICBhcHBlbmRVbmJhcnJpZXJlZChyZWludGVycHJldF9jYXN0PEpTQ2Vs
bCo+KHNsb3QuZ2V0KCkpKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjph
cHBlbmRIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQmIHNsb3QpCit7CisgICAg
YXBwZW5kSGlkZGVuVW5iYXJyaWVyZWQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihzbG90Lmdl
dCgpKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgogQUxXQVlTX0lOTElORSB2
b2lkIFNsb3RWaXNpdG9yOjphcHBlbmQoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cnVjdHVyZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3RydWN0dXJl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY4YmVhMWEzYzBmNzQwZmJm
MGM2MTFkNzk2NjUyZWMyODMxYzA0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC0wLDAg
KzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrLmgiCisKKyNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK1N0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OlN0cnVjdHVyZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IoQ1N0cmluZyBuYW1lKQorICAgIDogQmFzZShuYW1lKQoreworfQorCitT
dHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcigpCit7CisgICAgcmVsZWFzZU1lbW9yeUZyb21TdWJjbGFzc0Rlc3RydWN0b3IoKTsK
K30KKwordm9pZCBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmUoIiwgUmF3UG9pbnRl
cih0aGlzKSwgIikiKTsKK30KKwordm9pZCogU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjo6dHJ5QWxsb2NhdGVNZW1vcnkoc2l6ZV90KQoreworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmZyZWVNZW1vcnkodm9pZCop
Cit7CisgICAgLy8gU3RydWN0dXJlcyBkbyBub3Qgc3VwcG9ydCBQcmVjaXNlIGFsbG9jYXRpb25z
IHJpZ2h0IG5vdy4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
KiBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp0cnlSZWFsbG9jYXRlTWVtb3J5KHZv
aWQqLCBzaXplX3QpCit7CisgICAgLy8gU3RydWN0dXJlcyBkbyBub3Qgc3VwcG9ydCBQcmVjaXNl
IGFsbG9jYXRpb25zIHJpZ2h0IG5vdy4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCisjaWYgQ1BVKEFERFJFU1M2NCkKKworY2xhc3MgU3RydWN0dXJlTWVtb3J5TWFuYWdl
ciB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlTWVtb3J5TWFuYWdlcigpCisgICAgeworICAgICAg
ICAvLyBEb24ndCB1c2UgdGhlIGZpcnN0IHBhZ2UgYmVjYXVzZSB6ZXJvIGlzIHVzZWQgYXMgdGhl
IGVtcHR5IFN0cnVjdHVyZUlEIGFuZCB0aGUgZmlyc3QgYWxsb2NhdGlvbiB3aWxsIGNvbmZsaWN0
LgorICAgICAgICBtX3VzZWRCbG9ja3Muc2V0KDApOworCisgICAgICAgIG1fbWFwcGVkSGVhcFNp
emUgPSBzdHJ1Y3R1cmVIZWFwQWRkcmVzc1NpemU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgICAgIGdfanNjQ29uZmlnLnN0YXJ0T2ZTdHJ1Y3R1
cmVIZWFwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KE9TQWxsb2NhdG9yOjp0cnlSZXNl
cnZlVW5jb21taXR0ZWRBbGlnbmVkKG1fbWFwcGVkSGVhcFNpemUsIE9TQWxsb2NhdG9yOjpGYXN0
TWFsbG9jUGFnZXMpKTsKKyAgICAgICAgICAgIGlmIChnX2pzY0NvbmZpZy5zdGFydE9mU3RydWN0
dXJlSGVhcCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fbWFwcGVkSGVh
cFNpemUgLz0gMjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCgoZ19qc2NDb25maWcuc3Rh
cnRPZlN0cnVjdHVyZUhlYXAgJiB+c3RydWN0dXJlSURNYXNrKSA9PSBnX2pzY0NvbmZpZy5zdGFy
dE9mU3RydWN0dXJlSGVhcCk7CisgICAgfQorCisgICAgdm9pZCogdHJ5TWFsbG9jU3RydWN0dXJl
QmxvY2soKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGZyZWVJbmRleDsKKyAgICAgICAgeworICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgY29uc3RleHByIHNp
emVfdCBzdGFydEluZGV4ID0gMDsKKyAgICAgICAgICAgIGZyZWVJbmRleCA9IG1fdXNlZEJsb2Nr
cy5maW5kQml0KHN0YXJ0SW5kZXgsIDApOworICAgICAgICAgICAgQVNTRVJUKGZyZWVJbmRleCA8
PSBtX3VzZWRCbG9ja3MuYml0Q291bnQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X21hcHBlZEhlYXBTaXplIDw9IHN0cnVjdHVyZUhlYXBBZGRyZXNzU2l6ZSk7CisgICAgICAgICAg
ICBpZiAoZnJlZUluZGV4ICogTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSA+PSBtX21hcHBlZEhlYXBT
aXplKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgbV91c2Vk
QmxvY2tzLnNldChmcmVlSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgTWFya2VkQmxvY2sq
IGJsb2NrID0gcmVpbnRlcnByZXRfY2FzdDxNYXJrZWRCbG9jayo+KGdfanNjQ29uZmlnLnN0YXJ0
T2ZTdHJ1Y3R1cmVIZWFwKSArIGZyZWVJbmRleCAqIE1hcmtlZEJsb2NrOjpibG9ja1NpemU7Cisg
ICAgICAgIGNvbW1pdEJsb2NrKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGJsb2NrOworICAgIH0K
KworICAgIHZvaWQgZnJlZVN0cnVjdHVyZUJsb2NrKHZvaWQqIGJsb2NrUHRyKQorICAgIHsKKyAg
ICAgICAgZGVjb21taXRCbG9jayhibG9ja1B0cik7CisgICAgICAgIHVpbnRwdHJfdCBibG9jayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihibG9ja1B0cik7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGdfanNjQ29uZmlnLnN0YXJ0T2ZTdHJ1Y3R1cmVIZWFwIDw9IGJsb2NrICYmIGJsb2Nr
IDwgZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXAgKyBtX21hcHBlZEhlYXBTaXplKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6
YmxvY2tTaXplPihibG9jaykgPT0gYmxvY2spOworCisgICAgICAgIExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgbV91c2VkQmxvY2tzLnF1aWNrQ2xlYXIoKGJsb2NrIC0gZ19qc2NDb25m
aWcuc3RhcnRPZlN0cnVjdHVyZUhlYXApIC8gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgY29tbWl0QmxvY2sodm9pZCogYmxvY2spCisgICAgeworI2lm
IE9TKFVOSVgpICYmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIG1wcm90ZWN0KGJsb2NrLCBNYXJr
ZWRCbG9jazo6YmxvY2tTaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyNlbHNlCisgICAg
ICAgIGNvbnN0ZXhwciBib29sIHdyaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgY29uc3RleHByIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlOworICAgICAgICBPU0FsbG9jYXRvcjo6Y29tbWl0KGJsb2Nr
LCBNYXJrZWRCbG9jazo6YmxvY2tTaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEJsb2NrKHZvaWQqIGJsb2NrKQorICAg
IHsKKyNpZiBPUyhVTklYKSAmJiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAvLyBSZWxlYXNlIHRo
ZSBwYWdlIHNvIHdlJ2xsIGNyYXNoIGluIGRlYnVnIGlmIHdlIHJlYWQgb3V0IG9mIGJvdW5kcyBy
YXRoZXIgdGhhbiBnZXQgYSBmcmVzaCBwYWdlLgorICAgICAgICBtcHJvdGVjdChibG9jaywgTWFy
a2VkQmxvY2s6OmJsb2NrU2l6ZSwgUFJPVF9OT05FKTsKKyNlbHNlCisgICAgICAgIE9TQWxsb2Nh
dG9yOjpkZWNvbW1pdChibG9jaywgTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSk7CisjZW5kaWYKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTG9jayBtX2xvY2s7CisgICAgc2l6ZV90IG1fbWFwcGVkSGVh
cFNpemU7CisgICAgQml0VmVjdG9yIG1fdXNlZEJsb2NrczsKK307CisKK3N0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8U3RydWN0dXJlTWVtb3J5TWFuYWdlcj4gc19zdHJ1Y3R1cmVNZW1vcnlNYW5h
Z2VyOworCit2b2lkIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OmluaXRpYWxpemVT
dHJ1Y3R1cmVBZGRyZXNzU3BhY2UoKQoreworICAgIHN0YXRpY19hc3NlcnQoaGFzT25lQml0U2V0
KHN0cnVjdHVyZUhlYXBBZGRyZXNzU2l6ZSkpOworICAgIHNfc3RydWN0dXJlTWVtb3J5TWFuYWdl
ci5jb25zdHJ1Y3QoKTsKK30KKwordm9pZCogU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjo6dHJ5TWFsbG9jQmxvY2soKQoreworICAgIHJldHVybiBzX3N0cnVjdHVyZU1lbW9yeU1hbmFn
ZXItPnRyeU1hbGxvY1N0cnVjdHVyZUJsb2NrKCk7Cit9CisKK3ZvaWQgU3RydWN0dXJlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcjo6ZnJlZUJsb2NrKHZvaWQqIGJsb2NrKQoreworICAgIHNfc3RydWN0
dXJlTWVtb3J5TWFuYWdlci0+ZnJlZVN0cnVjdHVyZUJsb2NrKGJsb2NrKTsKK30KKwordm9pZCBT
dHJ1Y3R1cmVBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpjb21taXRCbG9jayh2b2lkKiBibG9jaykK
K3sKKyAgICBTdHJ1Y3R1cmVNZW1vcnlNYW5hZ2VyOjpjb21taXRCbG9jayhibG9jayk7Cit9CisK
K3ZvaWQgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZGVjb21taXRCbG9jayh2b2lk
KiBibG9jaykKK3sKKyAgICBTdHJ1Y3R1cmVNZW1vcnlNYW5hZ2VyOjpkZWNvbW1pdEJsb2NrKGJs
b2NrKTsKK30KKworI2Vsc2UgLy8gbm90IENQVShBRERSRVNTNjQpCisKKy8vIEZJWE1FOiBUaGlz
IGlzIHRoZSBzYW1lIGFzIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IgbWF5YmUgd2Ugc2hvdWxk
IGp1c3QgdXNlIHRoYXQgZm9yIDMyLWJpdC4KKwordm9pZCBTdHJ1Y3R1cmVBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOjppbml0aWFsaXplU3RydWN0dXJlQWRkcmVzc1NwYWNlKCkKK3sKKyAgICBnX2pz
Y0NvbmZpZy5zdGFydE9mU3RydWN0dXJlSGVhcCA9IDA7Cit9CisKK3ZvaWQqIFN0cnVjdHVyZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I6OnRyeU1hbGxvY0Jsb2NrKCkKK3sKKyAgICByZXR1cm4gdHJ5
RmFzdEFsaWduZWRNYWxsb2MoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6OmJs
b2NrU2l6ZSk7Cit9CisKK3ZvaWQgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6ZnJl
ZUJsb2NrKHZvaWQqIGJsb2NrKQoreworICAgIGZhc3RBbGlnbmVkRnJlZShibG9jayk7Cit9CisK
K3ZvaWQgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6Y29tbWl0QmxvY2sodm9pZCog
YmxvY2spCit7CisgICAgV1RGOjpmYXN0Q29tbWl0QWxpZ25lZE1lbW9yeShibG9jaywgTWFya2Vk
QmxvY2s6OmJsb2NrU2l6ZSk7Cit9CisKK3ZvaWQgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcjo6ZGVjb21taXRCbG9jayh2b2lkKiBibG9jaykKK3sKKyAgICBXVEY6OmZhc3REZWNvbW1p
dEFsaWduZWRNZW1vcnkoYmxvY2ssIE1hcmtlZEJsb2NrOjpibG9ja1NpemUpOworfQorCisjZW5k
aWYgLy8gQ1BVKEFERFJFU1M2NCkKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cnVjdHVyZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjU1Y2ZiMjhjMjExOTE4OGE3ZWY5NzcwOTIyNGU3MTA5
NWE4YzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ry
dWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJJc29NZW1vcnlBbGxvY2F0b3JCYXNlLmgiCisjaW5jbHVkZSA8d3RmL0dpZ2FjYWdl
Lmg+CisKKyNpZiBFTkFCTEUoTUFMTE9DX0hFQVBfQlJFQUtET1dOKQorI2luY2x1ZGUgPHd0Zi9E
ZWJ1Z0hlYXAuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvciBmaW5hbCA6IHB1YmxpYyBJc29NZW1vcnlBbGxvY2F0b3JC
YXNlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSXNvTWVtb3J5QWxsb2NhdG9yQmFzZTsK
KworICAgIFN0cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoQ1N0cmluZyk7CisgICAgflN0
cnVjdHVyZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSBmaW5hbDsKKyAgICAKKyAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQqIHRyeUFsbG9jYXRlTWVt
b3J5KHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBmcmVlTWVtb3J5KHZvaWQqKSBmaW5hbDsKKyAg
ICB2b2lkKiB0cnlSZWFsbG9jYXRlTWVtb3J5KHZvaWQqLCBzaXplX3QpIGZpbmFsOworCisgICAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN0cnVjdHVyZUFkZHJlc3NTcGFjZSgpOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCogdHJ5TWFsbG9jQmxvY2soKSBmaW5hbDsKKyAgICB2b2lkIGZyZWVCbG9j
ayh2b2lkKiBibG9jaykgZmluYWw7CisgICAgdm9pZCBjb21taXRCbG9jayh2b2lkKiBibG9jaykg
ZmluYWw7CisgICAgdm9pZCBkZWNvbW1pdEJsb2NrKHZvaWQqIGJsb2NrKSBmaW5hbDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAKaW5kZXggZGU4ZDY1M2RkODJiYTZjOTc4N2JjYjBkMTk1ZmUyYjVjNGNl
ODc0OS4uYmQzNmUyNGIyNzhkMDdhNGU3YjA0YTcxYzEyMDNhNDlkY2IzOTI2OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIwLDcgKzMy
MCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUlu
Zm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBq
aXQuc3RvcmU2NChUcnVzdGVkSW1tNjQoc3RydWN0dXJlUHRyLT5pZEJsb2IoKSksIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAg
IGlmIChBU1NFUlRfRU5BQkxFRCkgewotICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBq
aXQuYnJhbmNoMzIoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkpKTsK
KyAgICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0gaml0LmJyYW5jaDMyKEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpLmJpdHMoKSkpOwogICAgICAgICBqaXQuYWJv
cnRXaXRoUmVhc29uKEFIU3RydWN0dXJlSURJc1ZhbGlkKTsKICAgICAgICAgY29ycmVjdFN0cnVj
dHVyZS5saW5rKCZqaXQpOwogCkBAIC0zODksNDQgKzM4OSwyOSBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6c3RvcmVQcm9wZXJ0eShKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwgR1BS
UmVnIG9mZgogICAgICAgICBCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCAo
Zmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKIH0K
IAotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkU3RydWN0dXJlKFZNJiB2bSwgUmVnaXN0
ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQordm9pZCBB
c3NlbWJseUhlbHBlcnM6OmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoUmVnaXN0ZXJJRCBz
b3VyY2UsIFJlZ2lzdGVySUQgZGVzdCkKIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotI2lmIENQVShB
Uk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgUmVnaXN0ZXJJRCBzY3JhdGNoMiA9IGRhdGFUZW1w
UmVnaXN0ZXI7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaDIgPSBz
Y3JhdGNoUmVnaXN0ZXIoKTsKLSNlbHNlCi0jZXJyb3IgIlVuc3VwcG9ydGVkIGNwdSIKLSNlbmRp
ZgorICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIC8vIFRo
aXMgY291bGQgdXNlIEJGSSBvbiBhcm02NCBidXQgdGhhdCBvbmx5IGhlbHBzIGlmIHRoZSBzdGFy
dCBvZiBzdHJ1Y3R1cmUgaGVhcCBpcyBlbmNvZGFibGUgYXMgYSBtb3YgYW5kIG5vdCBhcyBhbiBp
bW1lZGlhdGUgaW4gdGhlIGFkZCBzbyBpdCdzIHByb2JhYmx5IG5vdCBzdXBlciBpbXBvcnRhbnQu
CisgICAgYW5kMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZUlETWFzayksIGRlc3QpOworICAgIGFk
ZDY0KFRydXN0ZWRJbW02NChnX2pzY0NvbmZpZy5zdGFydE9mU3RydWN0dXJlSGVhcCksIGRlc3Qp
OworI2VuZGlmIC8vIG5vdCBDUFUoQUREUkVTUzY0KQorfQogCi0gICAgQVNTRVJUKGRlc3QgIT0g
c2NyYXRjaCk7Ci0gICAgQVNTRVJUKGRlc3QgIT0gc2NyYXRjaDIpOwotICAgIEFTU0VSVChzY3Jh
dGNoICE9IHNjcmF0Y2gyKTsKLQotICAgIGxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
b3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gyKTsKLSAgICBsb2Fk
UHRyKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSwgc2NyYXRjaCk7Ci0gICAgcnNo
aWZ0MzIoc2NyYXRjaDIsIFRydXN0ZWRJbW0zMihTdHJ1Y3R1cmVJRFRhYmxlOjpzX251bWJlck9m
RW50cm9weUJpdHMpLCBkZXN0KTsKLSAgICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc2NyYXRjaCwgZGVzdCwgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyKSwgZGVzdCk7Ci0gICAg
bHNoaWZ0UHRyKFRydXN0ZWRJbW0zMihTdHJ1Y3R1cmVJRFRhYmxlOjpzX2VudHJvcHlCaXRzU2hp
ZnRGb3JTdHJ1Y3R1cmVQb2ludGVyKSwgc2NyYXRjaDIpOwotICAgIHhvclB0cihzY3JhdGNoMiwg
ZGVzdCk7Ci0jZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICBVTlVTRURfUEFSQU0oc2Ny
YXRjaCk7Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7Ci0j
ZW5kaWYgLy8gbm90IFVTRShKU1ZBTFVFNjQpCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdExv
YWRTdHJ1Y3R1cmUoVk0mLCBSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0KQorewor
ICAgIGxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIGRlc3QpOworICAgIGVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQo
ZGVzdCwgZGVzdCk7CiB9CiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFByb3RvdHlw
ZShWTSYgdm0sIEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBKdW1wTGlzdCYgc2xvd1BhdGgpCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdExvYWRQcm90b3R5cGUoVk0mIHZtLCBHUFJSZWcgb2JqZWN0R1BSLCBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiB7CiAgICAgQVNTRVJUKHJlc3VsdFJlZ3Mu
cGF5bG9hZEdQUigpICE9IG9iamVjdEdQUik7Ci0gICAgQVNTRVJUKHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpICE9IHNjcmF0Y2hHUFIpOwotICAgIEFTU0VSVChvYmplY3RHUFIgIT0gc2NyYXRjaEdQ
Uik7CiAKLSAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSwgb2JqZWN0R1BSLCByZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKSwgc2NyYXRjaEdQUik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0sIG9iamVj
dEdQUiwgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOwogCi0gICAgbG9hZDE2KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBTdHJ1Y3R1cmU6Om91dE9mTGlu
ZVR5cGVGbGFnc09mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgYXV0byBvdmVycmlkZXNHZXRQ
cm90b3R5cGUgPSBicmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHNjcmF0Y2hH
UFIsIFRydXN0ZWRJbW0zMihPdmVycmlkZXNHZXRQcm90b3R5cGVPdXRPZkxpbmUpKTsKKyAgICBh
dXRvIG92ZXJyaWRlc0dldFByb3RvdHlwZSA9IGJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0UmVncy5wYXlsb2FkR1BSKCks
IFN0cnVjdHVyZTo6b3V0T2ZMaW5lVHlwZUZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT3Zl
cnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG92ZXJy
aWRlc0dldFByb3RvdHlwZSk7CiAKICAgICBsb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkp
LCByZXN1bHRSZWdzKTsKQEAgLTUyNSw3ICs1MTAsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdFJhbmRvbVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBzY3Jh
dAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSYW5kb21UaHVuayhWTSYgdm0sIEdQUlJlZyBz
Y3JhdGNoMCwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIEdQUlJlZyBzY3JhdGNo
MywgRlBSUmVnIHJlc3VsdCkKIHsKICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihD
YWxsRnJhbWVTbG90OjpjYWxsZWUsIHNjcmF0Y2gzKTsKLSAgICBlbWl0TG9hZFN0cnVjdHVyZSh2
bSwgc2NyYXRjaDMsIHNjcmF0Y2gzLCBzY3JhdGNoMCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
dm0sIHNjcmF0Y2gzLCBzY3JhdGNoMyk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHNjcmF0Y2gzLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgc2NyYXRjaDMpOwogICAgIC8vIE5vdywg
c2NyYXRjaDMgaG9sZHMgSlNHbG9iYWxPYmplY3QqLgogCkBAIC04MzgsNyArODIzLDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgSnVtcExp
c3QgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOwogICAgICAgICBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQuYXBwZW5kKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwotICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSwgdmFs
dWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCk7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKHZtLCB2YWx1ZS5wYXlsb2Fk
R1BSKCksIHJlc3VsdCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3Qp
LCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOwogICAgICAgICBp
c05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZXN1bHQsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBzY3JhdGNoSWZT
aG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIApAQCAtOTI5LDcgKzkxNCw3IEBA
IEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVl
KFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIEp1
bXBMaXN0IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsKICAgICAgICAgaXNOb3RNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmFwcGVuZChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHZhbHVlLnBh
eWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKLSAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0s
IHZhbHVlLnBheWxvYWRHUFIoKSwgc2NyYXRjaCwgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHZhbHVlLnBh
eWxvYWRHUFIoKSwgc2NyYXRjaCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PEpTR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihzdGQ6OmdldDxKU0dsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpLCBzY3JhdGNo
SWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOwogICAgICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyM2UwODcxOGRi
ZjgyMDQyMzVlMzk5YWE2NWNiMGQ5OTA4Mjk3MWUwLi43N2E0ZTAzZGQxMjI3Nzc3MzhkNTBkY2Ex
MmZiMDhkYjg1NTJmNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKQEAgLTExNDgsNyArMTE0OCw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN0
cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmUtPmlkKCkpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmRpdGlvbiwgbGVmdEhh
bmRTaWRlLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpLmJpdHMoKSkpOwogI2Vsc2UKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpKTsKICNlbmRpZgpAQCAtMTYwMiw4ICsxNjAyLDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYXJndW1lbnRDb3VudChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgp
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShWTSYsIFJlZ2lzdGVy
SUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7Ci0gICAgdm9p
ZCBlbWl0TG9hZFByb3RvdHlwZShWTSYsIEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBKdW1wTGlzdCYgc2xvd1BhdGgpOworICAgIHZv
aWQgZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1cmVJRChSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0
ZXJJRCBkZXN0KTsKKyAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVnaXN0ZXJJRCBz
b3VyY2UsIFJlZ2lzdGVySUQgZGVzdCk7CisgICAgdm9pZCBlbWl0TG9hZFByb3RvdHlwZShWTSYs
IEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBMaXN0JiBzbG93
UGF0aCk7CiAKICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEKQogICAgIHsKQEAg
LTE2ODgsMTMgKzE2ODksMTMgQEAgcHVibGljOgogICAgIHZvaWQgbnVrZVN0cnVjdHVyZUFuZFN0
b3JlQnV0dGVyZmx5KFZNJiB2bSwgR1BSUmVnIGJ1dHRlcmZseSwgR1BSUmVnIG9iamVjdCkKICAg
ICB7CiAgICAgICAgIGlmIChpc1g4NigpKSB7Ci0gICAgICAgICAgICBvcjMyKFRydXN0ZWRJbW0z
MihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4obnVrZWRTdHJ1Y3R1cmVJREJpdCgpKSksIEFkZHJlc3Mo
b2JqZWN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIG9yMzIo
VHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDxpbnQzMl90PihTdHJ1Y3R1cmVJRDo6bnVrZWRTdHJ1
Y3R1cmVJREJpdCkpLCBBZGRyZXNzKG9iamVjdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CiAgICAgICAgICAgICBzdG9yZVB0cihidXR0ZXJmbHksIEFkZHJlc3Mob2JqZWN0LCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIEp1bXAgb2sgPSBqdW1wSWZNdXRhdG9yRmVuY2VOb3ROZWVkZWQodm0pOwot
ICAgICAgICBvcjMyKFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4obnVrZWRTdHJ1
Y3R1cmVJREJpdCgpKSksIEFkZHJlc3Mob2JqZWN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpKTsKKyAgICAgICAgb3IzMihUcnVzdGVkSW1tMzIoYml0d2lzZV9jYXN0PGludDMyX3Q+KFN0
cnVjdHVyZUlEOjpudWtlZFN0cnVjdHVyZUlEQml0KSksIEFkZHJlc3Mob2JqZWN0LCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgc3RvcmVGZW5jZSgpOwogICAgICAgICBz
dG9yZVB0cihidXR0ZXJmbHksIEFkZHJlc3Mob2JqZWN0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpKTsKICAgICAgICAgc3RvcmVGZW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg2NWFlNTdkNDE1NTcy
NjcxNTU2MGE3YjE2OWY2ZGZiYWE4MmIyYjEuLjlmMzJmMjdiOWNiYmNiODQxNTZjMDMwZDUzNWQy
NDdmMDFmZWU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdW5zaWduZWQgUG9seW1vcnBo
aWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y29tcHV0ZUhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVm
UHRyPEEKICAgICBmb3IgKGF1dG8mIGtleSA6IGNhc2VzKQogICAgICAgICBXVEY6OmFkZChoYXNo
ZXIsIGtleS0+aGFzaCgpKTsKICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUlEIDogd2Vha1N0cnVj
dHVyZXMpCi0gICAgICAgIFdURjo6YWRkKGhhc2hlciwgc3RydWN0dXJlSUQpOworICAgICAgICBX
VEY6OmFkZChoYXNoZXIsIHN0cnVjdHVyZUlELmJpdHMoKSk7CiAgICAgcmV0dXJuIGhhc2hlci5o
YXNoKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggYzY3YmNlMDlmZmJjNjBlMjQzM2U2MjJlMzc4Mjc4
Y2YyMDc0YjRiZS4uMDRmZjIyZTZlNDI1YTAzYzYxNDE0NzA1NjdmMzdkYTYzNjUzNGFlNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHN0YXRpYyB2b2lkIGdlbmVyYXRl
R2V0QnlJZElubGluZUFjY2VzcyhKSVQmIGppdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBKU1ZhbHVl
UmVncyBiYXNlSlNSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSKQog
ewogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICBhdXRv
IGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CisgICAgYXV0byBkb0lu
bGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJRCgpKSk7CiAgICAgaml0LmZhckp1bXAo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CiAgICAgZG9JbmxpbmVBY2Nl
c3MubGluaygmaml0KTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQnlJZFNlbGZPZmZzZXQoKSksIHNj
cmF0Y2hHUFIpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6
Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAg
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKIAogICAgIGpp
dC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICBhdXRvIGRvSW5saW5l
QWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CisgICAgYXV0byBkb0lubGluZUFjY2Vz
cyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklu
bGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJRCgpKSk7CiAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2Rl
UHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CiAgICAgZG9JbmxpbmVBY2Nlc3MubGluaygm
aml0KTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQnlJZFNlbGZPZmZzZXQoKSksIHNjcmF0Y2hHUFIp
OwpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWJJCiAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogCiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHNjcmF0Y2hHUFIpOwotICAgIGF1dG8gc2tpcElubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VT
dHJ1Y3R1cmUoKSkpOworICAgIGF1dG8gc2tpcElubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VT
dHJ1Y3R1cmVJRCgpKSk7CiAgICAgaml0LmJveEJvb2xlYW4odHJ1ZSwgcmVzdWx0SlNSKTsKICAg
ICBhdXRvIGZpbmlzaGVkID0gaml0Lmp1bXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKaW5kZXggOTAzMGJiNTNiMmFkZDYxYWUwOGEzMGM4N2M3MWEzOGYxZjY3
NGNhNC4uZTU0MDRmZDlkNDRmMjVkN2Q2ZWEwZDZhMWIxNzc1YWFlNjVhZGZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdHlwZW9mX2lzX3VuZGVmaW5lZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1
bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwotICAgIGVt
aXRMb2FkU3RydWN0dXJlKHZtKCksIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgcmVnVDEsIHJlZ1Qy
KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJl
Z1QxKTsKICAgICBsb2FkR2xvYmFsT2JqZWN0KHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDEsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMSk7CiAgICAgY29t
cGFyZVB0cihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC01MTQsNyArNTE0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KICAgICBKdW1wIGlzTm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MoanNSZWdU
MTAucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7Ci0gICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0o
KSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMiwgcmVnVDEpOworICAgIGVtaXRMb2FkU3Ry
dWN0dXJlKHZtKCksIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgcmVnVDIpOwogICAgIGxvYWRHbG9i
YWxPYmplY3QocmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJl
Z1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwog
ICAgIEp1bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7CkBAIC01
MzksNyArNTM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBj
YXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUu
CiAgICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKGpzUmVnVDEwLnBheWxvYWRH
UFIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOwotICAgIGVtaXRMb2FkU3RydWN0dXJlKHZtKCks
IGpzUmVnVDEwLnBheWxvYWRHUFIoKSwgcmVnVDIsIHJlZ1QxKTsKKyAgICBlbWl0TG9hZFN0cnVj
dHVyZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QyKTsKICAgICBsb2FkR2xvYmFs
T2JqZWN0KHJlZ1QwKTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsK
ICAgICBKdW1wIHdhc05vdEltbWVkaWF0ZSA9IGp1bXAoKTsKQEAgLTExOTUsNyArMTE5NSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7
CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKLSAgICBlbWl0TG9h
ZFN0cnVjdHVyZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QyLCByZWdUMSk7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMik7
CiAgICAgbG9hZEdsb2JhbE9iamVjdChyZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qy
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQ
dHIoRXF1YWwsIHJlZ1QwLCByZWdUMiwgcmVnVDApOwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAK
ICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKLSAgICBlbWl0TG9hZFN0
cnVjdHVyZSh2bSgpLCBqc1JlZ1QxMC5wYXlsb2FkR1BSKCksIHJlZ1QyLCByZWdUMSk7CisgICAg
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwganNSZWdUMTAucGF5bG9hZEdQUigpLCByZWdUMik7CiAg
ICAgbG9hZEdsb2JhbE9iamVjdChyZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIo
Tm90RXF1YWwsIHJlZ1QwLCByZWdUMiwgcmVnVDApOwpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGpzUmVn
VDEwKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChqc1JlZ1QxMC5w
YXlsb2FkR1BSKCkpKTsKIAotICAgIGVtaXRMb2FkUHJvdG90eXBlKHZtKCksIGpzUmVnVDEwLnBh
eWxvYWRHUFIoKSwganNSZWdUMzIsIHJlZ1Q0LCBzbG93Q2FzZXMpOworICAgIGVtaXRMb2FkUHJv
dG90eXBlKHZtKCksIGpzUmVnVDEwLnBheWxvYWRHUFIoKSwganNSZWdUMzIsIHNsb3dDYXNlcyk7
CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoYnl0ZWNvZGUsIGpzUmVnVDMyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDQxZTc1Zjc1NmIwZmM4NDUxMzVhNjQwNjIxMGZj
NmZlOGM0MDc2MS4uYTMyYmUyMzBiNGRkNzJlYWUxNTI5ZjA0ZGRiYzM4Yzg0ZWMyZWZlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTI3MzEsNyArMjczMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJh
dG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYW5kMzIoVHJ1
c3RlZEltbTMyKEluZGV4aW5nVHlwZU1hc2spLCByZWdUMSk7CiAgICAgZ2VuZXJpY0Nhc2VzLmFw
cGVuZChicmFuY2gzMihBYm92ZSwgcmVnVDEsIFRydXN0ZWRJbW0zMihBcnJheVdpdGhVbmRlY2lk
ZWQpKSk7CiAKLSAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCByZWdUMCwgcmVnVDEsIHJlZ1Qy
KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCByZWdUMCwgcmVnVDEpOwogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpwcmV2aW91c09yUmFyZURhdGFPZmZzZXQoKSks
IHJlZ1QxKTsKICAgICBnZW5lcmljQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywgcmVn
VDEpKTsKICAgICBnZW5lcmljQ2FzZXMuYXBwZW5kKGJyYW5jaElmU3RydWN0dXJlKHJlZ1QxKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggYWVlMDQ2
NWQ3MWU3OWJiZmJjYWEyYzA1MDdkM2M3MDIzMGY5OWQ0NC4uMzdhMDIyZGU1MjI3NjVjYjZmZDkw
NGQ1NmViNTc0ODIyNTgzMzZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YlJvdXRpbmUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlELmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNiwxMiArMzcsNiBAQCBjbGFz
cyBKSVRTdHViUm91dGluZVNldDsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFZNOwogCi0jaWYg
VVNFKEpTVkFMVUU2NCkKLXVzaW5nIFN0cnVjdHVyZUlEID0gdWludDMyX3Q7Ci0jZWxzZQotdXNp
bmcgU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmUqOwotI2VuZGlmCi0KIGNsYXNzIEFjY2Vzc0Nhc2U7
CiAKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNzIGZvciBKSVQgc3R1YiByb3V0aW5lcywgYW5kIGFs
c28gdGhlIGNsYXNzIHlvdSB3YW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA2NTZiYzJhYTM0N2JiMmQ0NjVjMTQzYzFhMmMzY2MyMTY3
ZjU5NTg1Li43YTBlN2RmZTY1NmJmNDM0MDRjZThjZTZmYTUzZTk4ZGUxMWZkOWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTY1NCw3
ICs2NTQsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHJ5X2dldF9ieV9pZCkK
ICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX3N0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7Ci0g
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSBvbGRT
dHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAKICAgICAgICAgICAgICAgICBpZiAoU3Ry
dWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKQEAgLTY2OCw3ICs2Njgs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHJ5X2dldF9ieV9pZCkKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICAg
ICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4K
LSAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0
YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX29mZnNldCA9IDA7CiAKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNj
ZXNzZXNBcmVDYWNoZWFibGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkpIHsKQEAgLTcwMyw3ICs3MDMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOwogICAgICAgICAgICAg
aWYgKG9sZFN0cnVjdHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIGEgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAK
ICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8o
YSwgYikpIHsKQEAgLTcxNyw3ICs3MTcsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
Q2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpKSB7CiAgICAg
ICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAg
ICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRh
Lm1fc3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9v
ZmZzZXQgPSAwOwogCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2Vz
QXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgpKSB7CkBAIC04MzAsMTAgKzgzMCwxMCBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRH
ZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAg
ICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVj
dHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICAgICAgb2xkU3Ry
dWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KG9sZFN0cnVjdHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGEgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAKICAg
ICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwg
YikpIHsKQEAgLTk2OCw3ICs5NjgsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkKQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAob2xkU3Ry
dWN0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogYSA9IG9sZFN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgICAg
ICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKICAg
ICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKQEAgLTk4MSw5ICs5ODEsOSBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9v
bGRTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0
ID0gMDsKLSAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAgICAgICBtZXRhZGF0
YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1
cmVJRDsKICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgewotICAgICAgICAgICAgICAg
IFN0cnVjdHVyZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1
cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gb2xkU3RydWN0dXJlSUQuZGVj
b2RlKCk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUodm0pOwogCiAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxk
Q29udmVydFRvUG9seVByb3RvKGEsIGIpKSB7CkBAIC0xMTcxLDcgKzExNzEsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNs
b3QuaXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0
IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRCgpOwogICAg
ICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwogCiAgICAgICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewpAQCAtMTI5MCw3ICsxMjkwLDcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9v
bGRTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgewotICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChv
bGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gb2xkU3RydWN0
dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgICAgIGlmIChzbG90LnR5cGUo
KSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBi
ID0gYi0+cHJldmlvdXNJRCgpOwpAQCAtMTMwMyw5ICsxMzAzLDkgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgIG1ldGFk
YXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwotICAg
ICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9u
ZXdTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7CiAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVy
dHkuY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFs
dWUuYXNDZWxsKCk7CkBAIC0xMzc5LDggKzEzNzksOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUt
PnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogCiAgICAgICAg
IC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAgbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7Ci0gICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0
dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gU3RydWN0dXJl
SUQoKTsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZUlEKCk7
CiAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKIAogICAgICAgICBpZiAoIW5ld1N0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA1ZDBlM2MyZmJmNzU0N2RmMzEw
Y2E3ZjQ4MmYwNWJmZWExM2MxNTgzLi40ZmE0ZmIzZDc5MWIzMzQ3ODBkOGQ4ODA2YWIwMmQ4ZWJj
ZjcwNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0yMTIsMTEgKzIxMiw2IEBAIGVsc2UKICAgICBjb25zdCBMb3dl
c3RUYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TG93ZXN0VGFnCiBlbmQKIAotaWYgSlNWQUxVRTY0
Ci0gICAgY29uc3QgTnVtYmVyT2ZTdHJ1Y3R1cmVJREVudHJvcHlCaXRzID0gY29uc3RleHByIFN0
cnVjdHVyZUlEVGFibGU6OnNfbnVtYmVyT2ZFbnRyb3B5Qml0cwotICAgIGNvbnN0IFN0cnVjdHVy
ZUVudHJvcHlCaXRzU2hpZnQgPSBjb25zdGV4cHIgU3RydWN0dXJlSURUYWJsZTo6c19lbnRyb3B5
Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcgotZW5kCi0KIGlmIExBUkdFX1RZUEVEX0FSUkFZ
UwogICAgIGNvbnN0IFNtYWxsVHlwZWRBcnJheU1heExlbmd0aCA9IGNvbnN0ZXhwciBBcnJheVBy
b2ZpbGU6OnNfc21hbGxUeXBlZEFycmF5TWF4TGVuZ3RoCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMjQz
ZTUwMjVlNzI4YWVjNWZkZjA5YTY0YjNkOGFlOWRkZjM3NTBlMC4uYzQ1MzM1MWQ0OTI2Y2Y3NGU4
ZDZlZjg1ODU5ODc0YTQ1YmFkNTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTcyNCwyMCArNzI0LDE2IEBA
IG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwg
dmFsdWVGaWVsZE5hbWUpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBzdHJ1Y3R1cmVJRFRv
U3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3JhdGNoLCBz
Y3JhdGNoMikKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaAotICAgIG1vdmUgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3JhdGNoMgotICAgIGxvYWRwIENvZGVCbG9jazo6bV92
bVtzY3JhdGNoXSwgc2NyYXRjaAotICAgIHJzaGlmdGkgTnVtYmVyT2ZTdHJ1Y3R1cmVJREVudHJv
cHlCaXRzLCBzY3JhdGNoMgotICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJ
RFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtzY3JhdGNoXSwgc2NyYXRjaAotICAg
IGxvYWRwIFtzY3JhdGNoLCBzY3JhdGNoMiwgUHRyU2l6ZV0sIHNjcmF0Y2gyCi0gICAgbHNoaWZ0
cCBTdHJ1Y3R1cmVFbnRyb3B5Qml0c1NoaWZ0LCBzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUKLSAg
ICB4b3JwIHNjcmF0Y2gyLCBzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUKK21hY3JvIHN0cnVjdHVy
ZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0
Y2gpCisgICAgYW5kcSBjb25zdGV4cHIgc3RydWN0dXJlSURNYXNrLCBzdHJ1Y3R1cmVJRFRoZW5T
dHJ1Y3R1cmUKKyAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnU3RhcnRPZlN0cnVjdHVyZUhlYXAsIHNjcmF0Y2gKKyAgICBsb2FkcCBbc2NyYXRjaF0s
IHNjcmF0Y2gKKyAgICBhZGRwIHNjcmF0Y2gsIHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZQogZW5k
CiAKLW1hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQorbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVj
dHVyZSwgc2NyYXRjaCkKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0
cnVjdHVyZQotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaChzdHJ1Y3R1cmUs
IHNjcmF0Y2gsIHNjcmF0Y2gyKQorICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmUsIHNjcmF0Y2gpCiBlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRl
cnByZXRlci4KQEAgLTk2MCw3ICs5NTYsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBmbikKICAgICAgICAgbW92ZSAwLCB0MAogICAgICAg
ICBqbXAgLmRvbmUKICAgICAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICAgICAgbG9hZFN0
cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQorICAgICAgICBsb2FkU3RydWN0dXJl
V2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CiAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAogICAgICAg
ICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MCwgdDAKQEAgLTE1MDEsNyAr
MTQ5Nyw3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX3R5cGVvZl9pc191bmRlZmluZWQsIE9wVHlw
ZW9mSXNVbmRlZmluZWQsIG1hY3JvIChzaXplLCBnZXQsCiAgICAgbW92ZSBWYWx1ZUZhbHNlLCB0
MQogICAgIHJldHVybih0MSkKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAgIGxvYWRTdHJ1
Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDMsIHQxLCB0MikKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNj
cmF0Y2godDAsIHQzLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKICAgICBjcGVxIFN0cnVjdHVyZTo6
bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKQEAgLTE3MTMsNyArMTcwOSw3IEBAIGxsaW50T3BX
aXRoUHJvZmlsZShvcF9nZXRfcHJvdG90eXBlX29mLCBPcEdldFByb3RvdHlwZU9mLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwCiAgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAub3BHZXRQcm90b3R5
cGVPZlNsb3cKICAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BHZXRQ
cm90b3R5cGVPZlNsb3cKIAotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQx
LCB0MykKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICBsb2Fk
aCBTdHJ1Y3R1cmU6Om1fb3V0T2ZMaW5lVHlwZUZsYWdzW3QyXSwgdDMKICAgICBidGlueiB0Mywg
T3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lLCAub3BHZXRQcm90b3R5cGVPZlNsb3cKIApA
QCAtMTc1MywxOSArMTc0OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBP
cFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAgICAgbG9hZHAg
T3BQdXRCeUlkOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVDaGFpblt0NV0sIHQzCiAgICAgYnRweiB0
MywgLm9wUHV0QnlJZFRyYW5zaXRpb25EaXJlY3QKIAotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MQotICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVt0MV0sIHQxCi0gICAgbG9hZHAgVk06Omhl
YXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxl
W3QxXSwgdDEKLQotICAgIG1hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaEFu
ZFRhYmxlKHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgdGFibGUsIHNjcmF0Y2gpCi0gICAgICAg
IG1vdmUgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3JhdGNoCi0gICAgICAgIHJzaGlmdGkg
TnVtYmVyT2ZTdHJ1Y3R1cmVJREVudHJvcHlCaXRzLCBzY3JhdGNoCi0gICAgICAgIGxvYWRwIFt0
YWJsZSwgc2NyYXRjaCwgUHRyU2l6ZV0sIHNjcmF0Y2gKLSAgICAgICAgbHNoaWZ0cCBTdHJ1Y3R1
cmVFbnRyb3B5Qml0c1NoaWZ0LCBzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUKLSAgICAgICAgeG9y
cCBzY3JhdGNoLCBzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUKLSAgICBlbmQKLQotICAgIHN0cnVj
dHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaEFuZFRhYmxlKHQyLCB0MSwgdDApCisgICAgc3Ry
dWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSkKIAogICAgIGxvYWRwIFN0cnVj
dHVyZUNoYWluOjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnog
dDMsIG9rIGVuZCkKQEAgLTE3NzYsNyArMTc2MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBiaW5lcSB0Miwg
W3QzXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDQsIHQzCi0gICAgc3RydWN0dXJlSURUb1N0
cnVjdHVyZVdpdGhTY3JhdGNoQW5kVGFibGUodDIsIHQxLCB0MCkKKyAgICBzdHJ1Y3R1cmVJRFRv
U3RydWN0dXJlV2l0aFNjcmF0Y2godDIsIHQxKQogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGVbdDJdLCB0MgogICAgIGJxbmVxIHQyLCBWYWx1ZU51bGwsIC5vcFB1dEJ5SWRUcmFuc2l0
aW9uQ2hhaW5Mb29wCiAKQEAgLTIxNTEsNyArMjEzNSw3IEBAIG1hY3JvIGVxdWFsTnVsbEp1bXBP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVy
KQogICAgICAgICBhc3NlcnROb3RDb25zdGFudChzaXplLCB0MCkKICAgICAgICAgbG9hZHEgW2Nm
ciwgdDAsIDhdLCB0MAogICAgICAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5pbW1lZGlhdGUK
LSAgICAgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQorICAgICAg
ICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICAgICAgY2VsbEhhbmRs
ZXIodDIsIEpTQ2VsbDo6bV9mbGFnc1t0MF0sIC50YXJnZXQpCiAgICAgICAgIGRpc3BhdGNoKCkK
IApAQCAtMjg3Miw3ICsyODU2LDcgQEAgZW5kKQogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVj
ayhvcGNvZGVTdHJ1Y3QsIGdldCwgc2xvd1BhdGgpCiAgICAgZ2V0KG1fc2NvcGUsIHQwKQogICAg
IGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAs
IHQyLCB0MSwgdDMpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZVt0NV0sIHQxCiAg
ICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBAIC0zMzIzLDcgKzMzMDcsNyBAQCBsbGlu
dE9wV2l0aFJldHVybihvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvciwgT3BHZXRQcm9wZXJ0eUVu
dW1lcmF0b3IsIG1hY3JvIChzaQogICAgIGFuZGkgSW5kZXhpbmdUeXBlTWFzaywgdDEKICAgICBi
aWEgdDEsIEFycmF5V2l0aFVuZGVjaWRlZCwgLnNsb3dQYXRoCiAKLSAgICBsb2FkU3RydWN0dXJl
V2l0aFNjcmF0Y2godDAsIHQxLCB0MiwgdDMpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCiAgICAgbG9hZHAgU3RydWN0dXJlOjptX3ByZXZpb3VzT3JSYXJlRGF0YVt0
MV0sIHQxCiAgICAgYnRweiB0MSwgLnNsb3dQYXRoCiAgICAgYmJlcSBKU0NlbGw6Om1fdHlwZVt0
MV0sIFN0cnVjdHVyZVR5cGUsIC5zbG93UGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGQ0OTNjNWU3NzcwYWM1MDE2ZDJhMDE4
MjIyYzE0NWNiNzI3ZjQ0MDguLmJkNjU2NGM2YjRjOGYzMTczMzhjOTkwODg1NDQ3NjU2MDFiZmZh
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQ
cm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7
CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHRoaXNPYmplY3QtPnN0cnVjdHVyZUlE
KCkpOwogICAgIGlmICghY2FuVXNlRGVmYXVsdEFycmF5Sm9pbkZvclRvU3RyaW5nKHZtLCB0aGlz
T2JqZWN0KSkgewogICAgICAgICAvLyAyLiBMZXQgZnVuYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIGFycmF5IHdpdGggYXJndW1lbnQgImpv
aW4iLgogICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+am9pbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCA5N2IyM2U1ZWJlNTI5YmU2NDk3
MWE3M2NjN2U1YzY1NjhiZjRiODhjLi45NTIyMDlkMzcxNjU1YzYwOThkYjZiZWU3YjViM2U3NTZm
NmY5YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFBy
b3RvdHlwZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
YmlnSW50UHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
CiAgICAgQVNTRVJUKHZhbHVlKTsKIAotICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2
bSwgdmFsdWUtPnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJ
RCh2YWx1ZS0+c3RydWN0dXJlSUQoKSk7CiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBz
Y29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTU2LDcg
KzE1Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihiaWdJbnRQcm90b0Z1bmNWYWx1ZU9m
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBKU0JpZ0ludCogdmFsdWUgPSB0
b1RoaXNCaWdJbnRWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBJbnRlZ3JpdHk6OmF1
ZGl0U3RydWN0dXJlSUQodm0sIHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQodmFsdWUtPnN0cnVjdHVyZUlEKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCmluZGV4IGJiNGE0NTljNjViMjUwNDAxODZmMjNi
ODliZTBlM2QyZWI3NWJhOGQuLmFmMDA3YTM1ZWEwZTQwZjUzN2YxNjdjZDMwZjM1M2Y2OTdkYTAz
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihib29s
ZWFuUHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJl
SUQodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRT
dHJ1Y3R1cmVJRCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBpZiAodGhpc09iamVj
dC0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodm0uc21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCkpOwogCkBAIC05Niw3
ICs5Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihib29sZWFuUHJvdG9GdW5jVmFsdWVP
ZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CiAKLSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3Qt
PnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmpl
Y3QtPmludGVybmFsVmFsdWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDRmZTczMDQzOGEyMGMyNTc0MzYwMDE0
OWIyYzBkOTFiNTFiNzc3NWUuLjhjZjEwZDI2NDZiZTNjZGYxYTNhMjM3MWM1NTE4NjFiYTY0MmRj
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMzU1LDExICszNTUsMTEgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF90b190aGlzKQogICAgICAgICAgICAgaWYgKG90aGVyU3RydWN0dXJlSUQpCiAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25mbGljdGVk
OwogICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IG15U3RydWN0dXJl
SUQ7Ci0gICAgICAgICAgICB2bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCB2bS5nZXRTdHJ1Y3R1
cmUobXlTdHJ1Y3R1cmVJRCkpOworICAgICAgICAgICAgdm0ud3JpdGVCYXJyaWVyKGNvZGVCbG9j
aywgbXlTdHJ1Y3R1cmVJRC5kZWNvZGUoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAg
IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQoKTsKICAgICB9CiAgICAgLy8gTm90ZTogV2Ug
b25seSBuZWVkIHRvIGRvIHRoaXMgdmFsdWUgcHJvZmlsaW5nIGhlcmUgb24gdGhlIHNsb3cgcGF0
aC4gVGhlIGZhc3QgcGF0aAogICAgIC8vIGp1c3QgcmV0dXJucyB0aGUgaW5wdXQgdG8gdG9fdGhp
cyBpZiB0aGUgc3RydWN0dXJlIGNoZWNrIHN1Y2NlZWRzLiBJZiB0aGUgc3RydWN0dXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDIy
NTI1NmRhN2QzZjg2NmJiMjljMmIzYTc0OWIyZTIwMDdjNzViZjEuLjg1NDVhNTU5YTczMjhiNTUz
N2RiODEyODNjOThhNjM5ZDZjNGE4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBmb3JtYXRlRGF0ZUluc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtCiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgSW50ZWdyaXR5
OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzRGF0ZU9iai0+c3RydWN0dXJlSUQoKSk7CisgICAg
SW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHRoaXNEYXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsK
ICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSBhc1VUQ1Zh
cmlhbnQKICAgICAgICAgPyB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoY2FjaGUp
CiAgICAgICAgIDogdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGNhY2hlKTsKQEAgLTMx
Miw3ICszMTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvSVNP
U3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChVTkxJS0VMWSgh
dGhpc0RhdGVPYmopKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKIAotICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc0Rh
dGVPYmotPnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0
aGlzRGF0ZU9iai0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRoaXNE
YXRlT2JqLT5pbnRlcm5hbE51bWJlcigpKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFs
aWQgRGF0ZSJfcykpOwogCkBAIC0zNjAsNyArMzYwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRv
UHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKLSAgICBJbnRl
Z3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCkpOwor
ICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
KTsKIAogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtT
eW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3QgYXJndW1lbnQuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGRmYjE4
YTMzMDMzYzU1MzFkYTM1MGNiNjA0NjQ4OGY5NjcyMjVkYWEuLjY3NDIwNjUyM2QxYzRiY2RlZThj
NTAwYTA3MTMxNjE1YzI0MWU1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgU3RyaW5nIEVycm9ySW5z
dGFuY2U6OnNhbml0aXplZE1lc3NhZ2VTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJ
RCh2bSwgc3RydWN0dXJlSUQoKSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHN0
cnVjdHVyZUlEKCkpOwogCiAgICAgSlNWYWx1ZSBtZXNzYWdlVmFsdWU7CiAgICAgYXV0byBtZXNz
YWdlUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlOwpAQCAtMTcyLDcgKzE3
Miw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWROYW1lU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBJbnRlZ3Jp
dHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6
YXVkaXRTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTVmFsdWUgbmFtZVZhbHVl
OwogICAgIGF1dG8gbmFtZVByb3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZTsKQEAg
LTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3RydWN0dXJlSUQoKSk7CisgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHN0cnVjdHVyZUlEKCkpOwogCiAgICAgU3RyaW5nIG5h
bWVTdHJpbmcgPSBzYW5pdGl6ZWROYW1lU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IGI4YzYyZDM3NTk5NTU0ZWQ1Nzc1
ZDNmNjk5NGJiOWExNjlhYzIxM2QuLmVmNDMxZjM5NWUzNDI1YTI2MzU0ZTkzMjBhY2M0ZjkyNTJi
MzgyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGVycm9y
UHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gYXNPYmplY3Qo
dGhpc1ZhbHVlKTsKLSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmot
PnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0aGlzT2Jq
LT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIC8vIEd1YXJkIGFnYWluc3QgcmVjdXJzaW9uIQogICAg
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihnbG9iYWxPYmplY3QsIHRoaXNPYmopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggMTJkNDk5YTRlNDUwNGNlYzE4NGQ3ZGJmNWMzNmVmZWRlYjFhYjQ3My4uYTE3
NjQ3YWM5YWEyM2U3NTQ3NTY3MmU0YzZlYjUyZmQwNTllNGI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsKICAgICBpZiAoUmFyZURhdGEqIHJhcmVEYXRhID0g
dGhpc09iamVjdC0+bV9yYXJlRGF0YS5nZXQoKSkgewotICAgICAgICB2aXNpdG9yLmFwcGVuZChy
YXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmVJRCk7CiAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2FzU3RyaW5nKTsKICAgICAgICAgaWYgKFRlbXBsYXRl
T2JqZWN0TWFwKiBtYXAgPSByYXJlRGF0YS0+bV90ZW1wbGF0ZU9iamVjdE1hcC5nZXQoKSkgewog
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgK
aW5kZXggYTdmNzc1MTNlOGFkZTBmZWJmN2E5YjMyZWY5M2RmOWIwZTZiYTI2MS4uZmE5NTA0NTNh
NTQxMmM3MjAwZjVhODI1Yjg2Y2ZhMDc2NWY5ZDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTI1NywxMiArMjU3LDEy
IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFBvbHlQcm90b1N0cnVjdHVyZSgpCiAg
ICAgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9yYXJlRGF0YSkpCi0gICAgICAgICAgICByZXR1
cm4gbV9yYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmVJRC5nZXQo
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHZvaWQgc2V0Q2FjaGVkUG9s
eVByb3RvU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgc3RydWN0dXJlKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2NhY2hlZFBvbHlQ
cm90b1N0cnVjdHVyZUlELnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKICAgICB9CiAKICAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBlbnN1cmVQb2x5UHJvdG9XYXRjaHBvaW50KCkKQEAgLTMxMCw4
ICszMTAsOCBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlcnNTdGFydE9m
ZnNldCB7IDAgfTsKICAgICAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQg
eyBVSU5UX01BWCB9OworICAgICAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2NhY2hlZFBv
bHlQcm90b1N0cnVjdHVyZUlEOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmpl
Y3RNYXA+IG1fdGVtcGxhdGVPYmplY3RNYXA7Ci0gICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8SlNT
dHJpbmc+IG1fYXNTdHJpbmc7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGI2Yzk5NjEwOTU1YjdkMGEx
NzYwMjFkODZlZGFlODZkMzNjMjBjM2MuLmIzMWNmYzFjOTA1ZTk2ODRhOWE3ODFlNDdkZjE2YTBm
YWFjODNjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKQEAgLTgxLDE5ICs4MSwxOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBmdW5jdGlvbi0+c3RydWN0dXJlSUQo
KSk7CisgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChmdW5jdGlvbi0+c3RydWN0
dXJlSUQoKSk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGZ1bmN0aW9uLT50b1N0cmluZyhnbG9iYWxPYmplY3QpKSk7CiAgICAgfQogCiAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0czxJbnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KHRoaXNW
YWx1ZSk7Ci0gICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24t
PnN0cnVjdHVyZUlEKCkpOworICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoZnVu
Y3Rpb24tPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1
bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIp
KSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwotICAgICAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQodm0sIG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAg
ICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFs
T2JqZWN0LCAiZnVuY3Rpb24gIiwgb2JqZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAppbmRleCAxMjFkNDMyOGNh
MDhmZWE5MDM5NWNmMTExY2I0M2ZjN2ZiNTUzYWVmLi5hMTNkZmE0NTY2ODMxODhmNzk0ZDc5OTM2
YTkyMTM4NTYxZjIzMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEZ1bmN0aW9uUmFy
ZURhdGE6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikK
IAogICAgIHJhcmVEYXRhLT5tX29iamVjdEFsbG9jYXRpb25Qcm9maWxlLnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOwogICAgIHJhcmVEYXRhLT5tX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0
YS0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0
YS0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlSUQpOwogICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVE
YXRhLT5tX2V4ZWN1dGFibGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggMmNhMDg2ZGJjNmViZGY3ODJlMWY2MTQxM2Ix
M2RmMDBjY2IxOTA2Zi4uMGYxZTk4NTY5MzUxNjQ3YTE3OTI5NzQ3MzA0ZThmYTdhNjNjMmJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEu
aApAQCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihGdW5jdGlvblJhcmVEYXRhLCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlKTsgfQogICAgIHN0
YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
U2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1fYWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KTsgfQogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90
IG9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25Qcm9maWxlKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQm91bmRG
dW5jdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVE
YXRhLCBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUpOyB9CiAgICAgc3RhdGljIGlubGluZSBwdHJk
aWZmX3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0
aW9uUmFyZURhdGEsIG1fZXhlY3V0YWJsZSk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZf
dCBvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQpOyB9CiAKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90
b3R5cGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICB7CkBAIC0xMTMsOCArMTExLDgg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQu
c3RhcnRXYXRjaGluZygpOwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogZ2V0Qm91bmRGdW5jdGlv
blN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQot
ICAgIHZvaWQgc2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKSB7IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVjdHVy
ZSk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmVJRC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRG
dW5jdGlvblN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fYm91bmRG
dW5jdGlvblN0cnVjdHVyZUlELnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsgfQogCiAgICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUuZ2V0
KCk7IH0KIApAQCAtMTYwLDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVXaXRoUHJvdG90eXBlIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgSW5s
aW5lV2F0Y2hwb2ludFNldCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldDsKICAgICBJ
bnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllclN0cnVjdHVyZUlEIG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZUlEOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dD4gbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludDsKICAgICBib29sIG1faGFz
UmVpZmllZExlbmd0aCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXggMjA1ZTFhOTM5NDNiMzVhYWQxYmZmNTI5MDky
ZGUzMTNhY2UwNTgwZC4uYzFhYTNjOWI3YTNiZDQyMWNhODgxNzE4N2RlODAwNjQ5NTdiNDNjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlD
YWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5
Q2FjaGUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIHJlc3Vs
dCk7IH0KIAogICAgICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGltcGw7Ci0gICAgICAg
IFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIHsgMCB9OworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1
Y3R1cmVJRDsKICAgICAgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAKaW5kZXggMzNiNWE5MDE0YTA1M2ZmZjk1ZTAzYjUzNmI5NTc0ZWVlZGVhYWI2My4uN2M3MWFh
MDJjMzIzNTVhYjEwMmM5OGJkMGY0YmU4ZjQ3ZTBhMDNjOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAj
aW5jbHVkZSAiU2lnaWxsQ3Jhc2hBbmFseXplci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRl
ICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZVJlZ2lzdHJ5LmgiCkBAIC02NSw2ICs2
Niw3IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAjZW5kaWYKICAgICAgICAgewogICAgICAgICAgICAg
T3B0aW9uczo6QWxsb3dVbmZpbmFsaXplZEFjY2Vzc1Njb3BlIHNjb3BlOworICAgICAgICAgICAg
U3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6aW5pdGlhbGl6ZVN0cnVjdHVyZUFkZHJl
c3NTcGFjZSgpOwogICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5pdGlhbGl6ZSgpOwog
ICAgICAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSgpOwogICAgICAgICAg
ICAgVk06OmNvbXB1dGVDYW5Vc2VKSVQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDQ29uZmlnLmgKaW5kZXggZmZhYzJjNmFkZTI0NmFkZDNlNjkyMmQ0N2QzMjg0M2NjZjcwYWFh
Mi4uMjFkNzVlNjVkNTQxMTg4NGZiZDJhZGJmYTkyNjBiNWJlNDYwOTllMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSwxMiBAQCBjbGFz
cyBWTTsKIHVzaW5nIEpJVFdyaXRlU2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2Zm
X3QsIGNvbnN0IHZvaWQqLCBzaXplX3QpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBDUFUoQVJNNjQpICYmICFDUFUoQVJNNjRFKQorY29uc3RleHByIHVpbnRwdHJfdCBz
dHJ1Y3R1cmVIZWFwQWRkcmVzc1NpemUgPSA1MTIgKiBNQjsKKyNlbHNlCitjb25zdGV4cHIgdWlu
dHB0cl90IHN0cnVjdHVyZUhlYXBBZGRyZXNzU2l6ZSA9IDEgKiBHQjsKKyNlbmRpZgorCiBzdHJ1
Y3QgQ29uZmlnIHsKICAgICBzdGF0aWMgQ29uZmlnJiBzaW5nbGV0b24oKTsKIApAQCAtODIsNiAr
ODgsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICB2b2lkKiBzdGFydEV4ZWN1dGFibGVNZW1vcnk7
CiAgICAgdm9pZCogZW5kRXhlY3V0YWJsZU1lbW9yeTsKICAgICB1aW50cHRyX3Qgc3RhcnRPZkZp
eGVkV3JpdGFibGVNZW1vcnlQb29sOworICAgIHVpbnRwdHJfdCBzdGFydE9mU3RydWN0dXJlSGVh
cDsKIAogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKICAgICBKSVRXcml0ZVNlcGFyYXRl
SGVhcHNGdW5jdGlvbiBqaXRXcml0ZVNlcGFyYXRlSGVhcHM7CkBAIC0xMjMsNiArMTMwLDcgQEAg
ZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSBDb25maWcgZ19qc2NDb25maWc7CiAKIGNvbnN0
ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdJbml0aWFsaXplSGFzQmVlbkNhbGxlZCA9IG9m
ZnNldG9mKEpTQzo6Q29uZmlnLCBpbml0aWFsaXplSGFzQmVlbkNhbGxlZCk7CiBjb25zdGV4cHIg
c2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBs
bGludC5nYXRlTWFwKTsKK2NvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdTdGFydE9m
U3RydWN0dXJlSGVhcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBzdGFydE9mU3RydWN0dXJlSGVh
cCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDA3ODJjODdmNzQzNTQ1YTdiNWU4NjQ2ODc3NzEyZjk5
NmY2NGM3NzUuLjE4NWFjZTcyN2QxNTQ3Zjk2ZDhmZjY3MzlkNTM2MzRiYTBlY2ViNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMjAsNyAr
MzIwLDcgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAg
ICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgaW5Db250ZXh0KCpzdHJ1Y3R1cmUsIGNvbnRleHQp
LCAiKSIpOwogICAgICAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgb3V0LnByaW50
KCIsIFN0cnVjdHVyZUlEOiAiLCBhc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgIG91
dC5wcmludCgiLCBTdHJ1Y3R1cmVJRDogIiwgYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkuYml0cygp
KTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAoaXNUcnVlKCkpCiAgICAgICAgIG91dC5wcmludCgi
VHJ1ZSIpOwpAQCAtMzU3LDE1ICszNTcsOSBAQCB2b2lkIEpTVmFsdWU6OmR1bXBGb3JCYWNrdHJh
Y2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIih1
bnJlc29sdmVkIHN0cmluZykiKTsKICAgICAgICAgfSBlbHNlIGlmIChhc0NlbGwoKS0+aW5oZXJp
dHM8U3RydWN0dXJlPih2bSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlWyAi
LCBhc0NlbGwoKS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOwotI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBvdXQucHJpbnQoIiBJRDogIiwgYXNDZWxsKCktPnN0
cnVjdHVyZUlEKCkpOwotI2VuZGlmCiAgICAgICAgICAgICBvdXQucHJpbnQoIl06ICIsIFJhd1Bv
aW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG91dC5wcmlu
dCgiQ2VsbFsiLCBhc0NlbGwoKS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
OwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBvdXQucHJpbnQoIiBJRDogIiwgYXND
ZWxsKCktPnN0cnVjdHVyZUlEKCkpOwotI2VuZGlmCiAgICAgICAgICAgICBvdXQucHJpbnQoIl06
ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXNU
cnVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBiMWNh
NjkyNzQzYzZhZmRkYWZmMWVhZDM1NzY5NGI3NDZmYzA2NGQ1Li42Mzk0Mjg2N2ExMzBmZTZjNWZl
MDE4ZTc0NGYxNGQ2MTE5ZGI0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU09iamVjdCogSlNDZWxsOjp0b09i
amVjdFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBJbnRl
Z3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmVJRCgp
KTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoc3RydWN0dXJlSUQoKSk7CiAgICAg
QVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDliYjA2YWQwZDRi
ODk2MGZlZWQxNTZmN2QzNWExODZjODM4YzQ3ZTMuLjdjODg4MzQzOTJiMDE2NDNhMWM1ODc4MGRk
ZWQ5NWY2YzQyNWIzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBA
IC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKFZNJikg
Y29uc3Q7CiAgICAgdm9pZCBzZXRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lk
IHNldFN0cnVjdHVyZUlERGlyZWN0bHkoU3RydWN0dXJlSUQgaWQpIHsgbV9zdHJ1Y3R1cmVJRCA9
IGlkOyB9Ci0gICAgdm9pZCBjbGVhclN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IDA7IH0K
KyAgICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlEID0gU3RydWN0dXJlSUQo
KTsgfQogCiAgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggMGJmYzA1NDc1YWQ5NzA2ZDY0ZTExZjkxMWFj
NDYwZWU4NTFmNjlmYy4uNzFlY2FhOGI5YmYzNWVjNzE1ODIxZjZiYTIyODdiMGQ5NDEzMTUwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAt
MTMzLDEyICsxMzMsMTMgQEAgaW5saW5lIEluZGV4aW5nVHlwZSBKU0NlbGw6OmluZGV4aW5nTW9k
ZSgpIGNvbnN0CiAKIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSh2bSgpKTsKKyAgICByZXR1cm4gbV9zdHJ1
Y3R1cmVJRC5kZWNvZGUoKTsKIH0KIAotQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6
c3RydWN0dXJlKFZNJiB2bSkgY29uc3QKKy8vIEZJWE1FOiBEZWxldGUgdGhpcyBpbiBhIGNsZWFu
dXAgZml4dXAuCitBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoVk0m
KSBjb25zdAogewotICAgIHJldHVybiB2bS5nZXRTdHJ1Y3R1cmUobV9zdHJ1Y3R1cmVJRCk7Cisg
ICAgcmV0dXJuIHN0cnVjdHVyZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpA
QCAtMzA0LDcgKzMwNSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0NlbGw6OnNldFN0cnVjdHVy
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpID09IHRoaXMtPnN0cnVjdHVyZSh2bSktPmNsYXNzSW5mbygpKTsKICAgICBBU1NF
UlQoIXRoaXMtPnN0cnVjdHVyZSh2bSkKICAgICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKHZtKS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQotICAgICAgICB8fCBI
ZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZS0+aWQoKSkg
PT0gc3RydWN0dXJlKTsKKyAgICAgICAgfHwgc3RydWN0dXJlLT5pZCgpLmRlY29kZSgpID09IHN0
cnVjdHVyZSk7CiAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICBtX2Zs
YWdzID0gVHlwZUluZm86Om1lcmdlSW5saW5lVHlwZUZsYWdzKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS5pbmxpbmVUeXBlRmxhZ3MoKSwgbV9mbGFncyk7CiAgICAgbV90eXBlID0gc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMzk3NDUyMTJjYjg2Y2ZiMDQ5NjcxZWI1MTg0NDhkYWQ0
MWQwZDc0Li4yOGEyMWRhNjZlMGRmMjg2NmU5OGE2OTM2YmU3ZDcxMTE4ZDFkMWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0y
Mjg1LDEzICsyMjg1LDE2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5
IDogdGhpc09iamVjdC0+bV9saW5rVGltZUNvbnN0YW50cykKICAgICAgICAgcHJvcGVydHkudmlz
aXQodmlzaXRvcik7CiAKLSNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEUoQ2FwaXRhbE5hbWUsIGxv
d2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2Us
IGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcpIHsgXAorI2RlZmluZSBWSVNJVF9TSU1QTEVf
VFlQRV9QUk9UT1RZUEUoQ2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFu
Y2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZs
YWcpIFwKICAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV8gIyMgbG93ZXJOYW1l
ICMjIFByb3RvdHlwZSk7IFwKKworI2RlZmluZSBWSVNJVF9TSU1QTEVfVFlQRV9TVFJVQ1RVUkUo
Q2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUs
IHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcpIFwKICAgICAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUp
OyBcCi0gICAgfQogCi0gICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShWSVNJVF9TSU1Q
TEVfVFlQRSkKLSAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShWSVNJ
VF9TSU1QTEVfVFlQRSkKKyAgICBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFKFZJU0lUX1NJ
TVBMRV9UWVBFX1NUUlVDVFVSRSkKKyAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFU
T1JfVFlQRShWSVNJVF9TSU1QTEVfVFlQRV9TVFJVQ1RVUkUpCisgICAgRk9SX0VBQ0hfU0lNUExF
X0JVSUxUSU5fVFlQRShWSVNJVF9TSU1QTEVfVFlQRV9QUk9UT1RZUEUpCisgICAgRk9SX0VBQ0hf
QlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoVklTSVRfU0lNUExFX1RZUEVfUFJPVE9UWVBF
KQogCiAjZGVmaW5lIFZJU0lUX0xBWllfVFlQRShDYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9w
ZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcp
IGlmIChmZWF0dXJlRmxhZykgXAogICAgICAgICB0aGlzT2JqZWN0LT5tXyAjIyBwcm9wZXJOYW1l
ICMjIFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJmM2FkNzZkY2EzZTMzYThlYzRiYzA1N2U3
MTE2MDUzMzIyNWY2NmUuLjFiMWQ5YjU1M2M3NDcyYmViYjY3NDg5ZDkyYzc3YTNkOTM2OTZkMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMzc5LDIwICszNzksNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2
YXRpb25TdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52
aXJvbm1lbnRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmU7Ci0KLSAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX29iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yOwotICAgICAg
ICAKLSAgICAvLyBMaXN0cyB0aGUgYWN0dWFsIHN0cnVjdHVyZXMgdXNlZCBmb3IgaGF2aW5nIHRo
ZXNlIHBhcnRpY3VsYXIgaW5kZXhpbmcgc2hhcGVzLgotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbTnVtYmVyT2ZBcnJh
eUluZGV4aW5nTW9kZXNdOwotICAgIC8vIExpc3RzIHRoZSBzdHJ1Y3R1cmVzIHdlIHNob3VsZCB1
c2UgZHVyaW5nIGFsbG9jYXRpb24gZm9yIHRoZXNlIHBhcnRpY3VsYXIgaW5kZXhpbmcgc2hhcGVz
LgotICAgIC8vIFRoZXNlIHN0cnVjdHVyZXMgd2lsbCBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWxz
IGxpc3QgYWJvdmUgd2hlbiB3ZSBhcmUgaGF2aW5nIGEgYmFkIHRpbWUuCi0gICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVEdXJpbmdBbGxv
Y2F0aW9uW051bWJlck9mQXJyYXlJbmRleGluZ01vZGVzXTsKLQogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKQEAgLTQwNCw0MiArMzkxLDU3IEBAIHB1
YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9nbGli
Q2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9nbGliV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKICNlbmRpZgotICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsK
LSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxlZVN0cnVjdHVyZTsKIAotICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faG9zdEZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllclN0cnVjdHVyZUlEIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllclN0cnVjdHVyZUlEIG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllclN0cnVjdHVyZUlEIG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllclN0cnVjdHVyZUlEIG1fY2xvbmVkQXJndW1lbnRzU3RydWN0dXJlOworCisgICAg
V3JpdGVCYXJyaWVyU3RydWN0dXJlSUQgbV9vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1
Y3RvcjsKKworICAgIC8vIExpc3RzIHRoZSBhY3R1YWwgc3RydWN0dXJlcyB1c2VkIGZvciBoYXZp
bmcgdGhlc2UgcGFydGljdWxhciBpbmRleGluZyBzaGFwZXMuCisgICAgV3JpdGVCYXJyaWVyU3Ry
dWN0dXJlSUQgbV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVtOdW1iZXJP
ZkFycmF5SW5kZXhpbmdNb2Rlc107CisgICAgLy8gTGlzdHMgdGhlIHN0cnVjdHVyZXMgd2Ugc2hv
dWxkIHVzZSBkdXJpbmcgYWxsb2NhdGlvbiBmb3IgdGhlc2UgcGFydGljdWxhciBpbmRleGluZyBz
aGFwZXMuCisgICAgLy8gVGhlc2Ugc3RydWN0dXJlcyB3aWxsIGRpZmZlciBmcm9tIHRoZSBvcmln
aW5hbHMgbGlzdCBhYm92ZSB3aGVuIHdlIGFyZSBoYXZpbmcgYSBiYWQgdGltZS4KKyAgICBXcml0
ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX2FycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZUR1cmlu
Z0FsbG9jYXRpb25bTnVtYmVyT2ZBcnJheUluZGV4aW5nTW9kZXNdOworCisgICAgV3JpdGVCYXJy
aWVyU3RydWN0dXJlSUQgbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllclN0cnVjdHVyZUlEIG1fY2FsbGVlU3RydWN0dXJlOworCisgICAgV3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQgbV9ob3N0RnVuY3Rpb25TdHJ1Y3R1cmU7CiAKICAgICBzdHJ1Y3QgRnVuY3Rp
b25TdHJ1Y3R1cmVzIHsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gYXJyb3dGdW5j
dGlvblN0cnVjdHVyZTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gc2xvcHB5RnVu
Y3Rpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IHN0cmljdEZ1
bmN0aW9uU3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBhcnJvd0Z1
bmN0aW9uU3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBzbG9wcHlG
dW5jdGlvblN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQgc3RyaWN0
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgfTsKICAgICBGdW5jdGlvblN0cnVjdHVyZXMgbV9idWls
dGluRnVuY3Rpb25zOwogICAgIEZ1bmN0aW9uU3RydWN0dXJlcyBtX29yZGluYXJ5RnVuY3Rpb25z
OwogCisgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CisgICAgV3JpdGVC
YXJyaWVyU3RydWN0dXJlSUQgbV9zaGFkb3dSZWFsbU9iamVjdFN0cnVjdHVyZTsKKyAgICBXcml0
ZUJhcnJpZXJTdHJ1Y3R1cmVJRCBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJT
dHJ1Y3R1cmVJRCBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyU3Ry
dWN0dXJlSUQgbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFy
cmllclN0cnVjdHVyZUlEIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVC
YXJyaWVyU3RydWN0dXJlSUQgbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
U3RydWN0dXJlSUQgbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJT
dHJ1Y3R1cmVJRCBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyU3Ry
dWN0dXJlSUQgbV9tYXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXJTdHJ1Y3R1
cmVJRCBtX3NldEl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllclN0cnVjdHVyZUlE
IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllclN0cnVjdHVy
ZUlEIG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEluZGljZXNTdHJ1Y3R1cmU7CisgICAgV3JpdGVC
YXJyaWVyU3RydWN0dXJlSUQgbV9yZWdFeHBNYXRjaGVzSW5kaWNlc0FycmF5U3RydWN0dXJlOwor
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9jdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9uYXRpdmVTdGRG
dW5jdGlvblN0cnVjdHVyZTsKLSAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dDsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NoYWRvd1JlYWxtT2JqZWN0U3RydWN0
dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jRnVuY3Rpb25Qcm90
b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+
IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKLSAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9tYXBJdGVyYXRvclN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3NldEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2RhdGFQcm9wZXJ0eURlc2NyaXB0
b3JPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmU7Ci0gICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7Ci0g
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRoSW5kaWNl
c1N0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNJ
bmRpY2VzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eU9iamVj
dFN0cnVjdHVyZTsKQEAgLTQ0NywxNSArNDQ5LDE5IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eVJldm9rZVN0cnVjdHVyZTsKICAg
ICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKIAotI2Rl
ZmluZSBERUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFt
ZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1
cmVGbGFnKSBcCi0gICAgV3JpdGVCYXJyaWVyPGNhcGl0YWxOYW1lICMjIFByb3RvdHlwZT4gbV8g
IyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZTsgXAotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlOworI2RlZmluZSBERUZJTkVfU1RPUkFHRV9G
T1JfU0lNUExFX1RZUEVfUFJPVE9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5h
bWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgXAor
ICAgIFdyaXRlQmFycmllcjxjYXBpdGFsTmFtZSAjIyBQcm90b3R5cGU+IG1fICMjIGxvd2VyTmFt
ZSAjIyBQcm90b3R5cGU7CisKKyNkZWZpbmUgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBF
X1NUUlVDVFVSRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5
cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIFwKKyAgICBXcml0ZUJhcnJp
ZXJTdHJ1Y3R1cmVJRCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZTsKIAogI2RlZmluZSBE
RUZJTkVfU1RPUkFHRV9GT1JfTEFaWV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Bl
ck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykg
XAogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZTsK
IAotICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoREVGSU5FX1NUT1JBR0VfRk9SX1NJ
TVBMRV9UWVBFKQotICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKERF
RklORV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQRSkKKyAgICBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJ
Tl9UWVBFKERFRklORV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQRV9TVFJVQ1RVUkUpCisgICAgRk9S
X0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoREVGSU5FX1NUT1JBR0VfRk9SX1NJ
TVBMRV9UWVBFX1NUUlVDVFVSRSkKKyAgICBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFKERF
RklORV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQRV9QUk9UT1RZUEUpCisgICAgRk9SX0VBQ0hfQlVJ
TFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBF
X1BST1RPVFlQRSkKICAgICAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRT
dHJ1Y3R1cmU7CkBAIC00NjcsNyArNDczLDggQEAgcHVibGljOgogCiAgICAgRk9SX0VBQ0hfTEFa
WV9CVUlMVElOX1RZUEUoREVGSU5FX1NUT1JBR0VfRk9SX0xBWllfVFlQRSkKIAotI3VuZGVmIERF
RklORV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQRQorI3VuZGVmIERFRklORV9TVE9SQUdFX0ZPUl9T
SU1QTEVfVFlQRV9QUk9UT1RZUEUKKyN1bmRlZiBERUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZ
UEVfU1RSVUNUVVJFCiAjdW5kZWYgREVGSU5FX1NUT1JBR0VfRk9SX0xBWllfVFlQRQogCiAgICAg
V3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV9zcGVjaWVzR2V0dGVyU2V0dGVyOwpAQCAtNTc3
LDYgKzU4NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbV9ldmFsRW5hYmxlZCB7IHRydWUgfTsK
ICAgICBib29sIG1fd2ViQXNzZW1ibHlFbmFibGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9uZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcyB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV9nbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoIHsgMSB9OwogICAgIFN0cmluZyBtX2V2YWxEaXNhYmxlZEVycm9yTWVz
c2FnZTsKICAgICBTdHJpbmcgbV93ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlOwpAQCAt
MTIwMyw3ICsxMjExLDYgQEAgcHJpdmF0ZToKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGNsZWFyUmFyZURhdGEoSlNDZWxsKik7CiAKLSAgICBib29sIG1fbmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MgeyBmYWxzZSB9OwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgUmV0
YWluUHRyPEpTV3JhcHBlck1hcD4gbV93cmFwcGVyTWFwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMjhlNzJlZTM3ZDMyOGQ4OTNlNGRl
ZDg1NDYzZWQ1YmQyZjNhYjk5OS4uZDU0NGE0M2JhMTllYTMyN2ZiZDI4MTVhZGM3YWYzNDE2YzU2
MWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
MzY5LDkgKzM2OSw5IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU09iamVjdDo6dmlzaXRC
dXR0ZXJmbHlJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgLy8gaHR0cHM6Ly9wZGZzLnNlbWFu
dGljc2Nob2xhci5vcmcvMzQzZi83MTgyY2RlNzY2OWNhMmE3ZGUzZGMwMTEyNzkyN2YzODRlZjcu
cGRmCiAgICAgCiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJ
RCgpOwotICAgIGlmIChpc051a2VkKHN0cnVjdHVyZUlEKSkKKyAgICBpZiAoc3RydWN0dXJlSUQu
aXNOdWtlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdHJ1Y3R1cmUgPSB2bS5n
ZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpOworICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRl
Y29kZSgpOwogICAgIG1heE9mZnNldCA9IHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCk7CiAgICAgSW5k
ZXhpbmdUeXBlIGluZGV4aW5nTW9kZTsKICAgICBEZXBlbmRlbmN5IGluZGV4aW5nTW9kZURlcGVu
ZGVuY3kgPSBzdHJ1Y3R1cmUtPmZlbmNlZEluZGV4aW5nTW9kZShpbmRleGluZ01vZGUpOwpAQCAt
MTE2OSw3ICsxMTY5LDcgQEAgQnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbFVuZGVj
aWRlZChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKICAgICBEZWZlckdDIGRlZmVyR0Modm0pOwog
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdl
KHZtLCBsZW5ndGgpOwogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gdGhpcy0+c3Ry
dWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVy
ZShvbGRTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1
Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIFRyYW5zaXRpb25LaW5k
OjpBbGxvY2F0ZVVuZGVjaWRlZCk7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2
bSwgb2xkU3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBu
ZXdTdHJ1Y3R1cmUpOwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0OjpjcmVhdGVJbml0aWFsSW50MzIoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAg
ICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdy
aXRlQmFycmllcihKU1ZhbHVlKCkpOwogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0g
dGhpcy0+c3RydWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmdl
dFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUg
PSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIFRyYW5z
aXRpb25LaW5kOjpBbGxvY2F0ZUludDMyKTsKICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5KHZtLCBvbGRTdHJ1Y3R1cmVJRCwgbmV3QnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUo
dm0sIG5ld1N0cnVjdHVyZSk7CkBAIC0xMTk3LDcgKzExOTcsNyBAQCBDb250aWd1b3VzRG91Ymxl
cyBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbERvdWJsZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07
KQogICAgICAgICBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9
IFBOYU47CiAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJ
RCgpOwotICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKG9sZFN0
cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG9sZFN0cnVjdHVyZUlE
LmRlY29kZSgpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Q
cm9wZXJ0eVRyYW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9j
YXRlRG91YmxlKTsKICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1
Y3R1cmVJRCwgbmV3QnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVy
ZSk7CkBAIC0xMjExLDcgKzEyMTEsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNy
ZWF0ZUluaXRpYWxDb250aWd1b3VzKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIGZvciAo
dW5zaWduZWQgaSA9IG5ld0J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAgICAgICAg
IG5ld0J1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoSlNWYWx1ZSgpKTsKICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IHRoaXMt
PnN0cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1
Y3R1cmUob2xkU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gb2xk
U3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCBUcmFuc2l0aW9u
S2luZDo6QWxsb2NhdGVDb250aWd1b3VzKTsKICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5KHZtLCBvbGRTdHJ1Y3R1cmVJRCwgbmV3QnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUo
dm0sIG5ld1N0cnVjdHVyZSk7CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIHZlYwogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAgICAgU3RydWN0dXJlSUQgb2xk
U3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwotICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKG9sZFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IG9sZFN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgIEluZGV4aW5nVHlw
ZSBvbGRUeXBlID0gaW5kZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAh
aGFzSW5kZXhlZFByb3BlcnRpZXMob2xkVHlwZSkpOwogCkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2UoVk0m
IHZtLCBUcmFuc2l0aW9uS2luZCB0cgogICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKEpTVmFsdWUoKSk7CiAgICAgCiAgICAgU3RydWN0dXJlSUQgb2xk
U3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwotICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKG9sZFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IG9sZFN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIG9sZFN0
cnVjdHVyZSwgdHJhbnNpdGlvbik7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2
bSwgb2xkU3RydWN0dXJlSUQsIHN0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICBzZXRTdHJ1Y3R1
cmUodm0sIG5ld1N0cnVjdHVyZSk7CkBAIC0xMzkwLDcgKzEzOTAsNyBAQCBBcnJheVN0b3JhZ2Uq
IEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5zaXRpb25L
aW5kIHRyYW5zaQogICAgIH0KICAgICAKICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9
IHRoaXMtPnN0cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2bS5n
ZXRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
ID0gb2xkU3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCB0cmFu
c2l0aW9uKTsKICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1Y3R1
cmVJRCwgbmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3
U3RydWN0dXJlKTsKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6
OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5zaXRpb25LaW5kIHRyYW5z
CiAgICAgfQogICAgIAogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gdGhpcy0+c3Ry
dWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVy
ZShvbGRTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1
Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIHRyYW5zaXRpb24pOwog
ICAgIG51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIG9sZFN0cnVjdHVyZUlELCBuZXdT
dG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUp
OwpAQCAtMTUyMiw3ICsxNTIyLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENv
bnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5zaXRpb25LaW5kIHQKIAogICAgIEFT
U0VSVChuZXdTdG9yYWdlLT5idXR0ZXJmbHkoKSAhPSBidXR0ZXJmbHkpOwogICAgIFN0cnVjdHVy
ZUlEIG9sZFN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmVJRCk7CisgICAgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBvbGRTdHJ1Y3R1cmUsIHRyYW5zaXRpb24pOwogCiAgICAgLy8gRW5zdXJlIG5ldyBCdXR0ZXJm
bHkgaW5pdGlhbGl6YXRpb24gaXMgY29ycmVjdGx5IGRvbmUgYmVmb3JlIGV4cG9zaW5nIGl0IHRv
IHRoZSBjb25jdXJyZW50IHRocmVhZHMuCkBAIC0yMDI0LDcgKzIwMjQsNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RDdXN0b21HZXR0ZXJTZXR0ZXJXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0s
IFByb3BlcnR5TmFtZQogICAgIEFTU0VSVChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSk7CiAKICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9
IHRoaXMtPnN0cnVjdHVyZUlEKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gcHJlcGFyZVRvUHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3RydWN0dXJlSUQsIHN0cnVjdHVyZSk7CiAgICAgcHV0RGlyZWN0KHZtLCBv
ZmZzZXQsIHZhbHVlKTsKIApAQCAtMjA1MSw3ICsyMDUxLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlO
YW1lIHAKIHsKICAgICBBU1NFUlQoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3Nvcik7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJRCgp
OwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KHN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlE
LmRlY29kZSgpOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVy
ZUlELCBzdHJ1Y3R1cmUpOwogICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCBhY2Nlc3Nvcik7CiAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA1MWIxMzAzMWU2MjE0NmY1MjRi
ZTFlNzdhOTkxZGVhMTgyMjFjYWVmLi5kMzNiNzIyODY0YTg4N2M2M2Y0N2M5NDA0MzkwZGY1MGEw
MDU2NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTEz
NjcsNyArMTM2Nyw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRCdXR0ZXJmbHkoVk0mIHZt
LCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpudWtlU3RydWN0
dXJlQW5kU2V0QnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQsIEJ1
dHRlcmZseSogYnV0dGVyZmx5KQogewogICAgIGlmIChpc1g4NigpIHx8IHZtLmhlYXAubXV0YXRv
clNob3VsZEJlRmVuY2VkKCkpIHsKLSAgICAgICAgc2V0U3RydWN0dXJlSUREaXJlY3RseShudWtl
KG9sZFN0cnVjdHVyZUlEKSk7CisgICAgICAgIHNldFN0cnVjdHVyZUlERGlyZWN0bHkob2xkU3Ry
dWN0dXJlSUQubnVrZSgpKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAg
ICAgbV9idXR0ZXJmbHkuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOwogICAgICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOwpAQCAtMTUwMCw3ICsxNTAwLDYgQEAgdGVtcGxhdGU8Ym9vbCBjaGVj
a051bGxTdHJ1Y3R1cmU+CiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
U2xvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvJiBzdHJ1Y3R1cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsK
ICAgICAgICAgaWYgKFVOTElLRUxZKFR5cGVJbmZvOjpvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LT5pbmxpbmVUeXBlRmxhZ3MoKSkpKSB7CkBAIC0xNTE1LDEwICsxNTE0LDEwIEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT5nZXRO
b25JbmRleFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgICAgIH0KICAgICAgICAgQVNTRVJUKG9iamVjdC0+dHlwZSgpICE9IFByb3h5T2JqZWN0VHlw
ZSk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSURUYWJsZS5nZXQo
b2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBv
YmplY3QtPnN0cnVjdHVyZUlEKCkuZGVjb2RlKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgaWYgKGNoZWNrTnVsbFN0cnVjdHVyZSAmJiBVTkxJS0VMWSghc3RydWN0dXJlKSkKLSAgICAg
ICAgICAgIENSQVNIX1dJVEhfSU5GTyhvYmplY3QtPnR5cGUoKSwgb2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpLCBzdHJ1Y3R1cmVJRFRhYmxlLnNpemUoKSk7CisgICAgICAgICAgICBDUkFTSF9XSVRIX0lO
Rk8ob2JqZWN0LT50eXBlKCksIG9iamVjdC0+c3RydWN0dXJlSUQoKS5iaXRzKCkpOwogI2VuZGlm
CiAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXgg
MmMyN2VkM2E3YmUxZDJhYmQwNWViYjAwNzRhODQ1MTc2MGYwOTJkZC4uODM0OTQyMmQ4YjRhNDI0
N2E3ZTExMjFlNDY3YmU3OWFhOTQxOWRhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTExMCwxMCArMTEwLDkgQEAgQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdW5zaWcKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBzdHJ1Y3R1
cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlSUQoKS5kZWNvZGUo
KTsKICAgICAgICAgYm9vbCBoYXNTbG90ID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICBpZiAoaGFzU2xvdCkKQEAgLTE1MSwxMCArMTUwLDkgQEAgQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIHN0cnVjdHVy
ZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLmRlY29kZSgp
OwogICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewogICAgICAgICAgICAgaWYgKG9iamVj
dC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxOSw3ICsyMTcsNyBA
QCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0
ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKTsKICAg
ICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCk7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBwcmVwYXJlVG9QdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzdHJ1Y3R1cmVJRCwgc3RydWN0dXJlKTsKICAgICBw
dXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQpAQCAtMzI4LDcgKzMyNiw3IEBAIEFMV0FZU19JTkxJTkUg
QVNDSUlMaXRlcmFsIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wCiAgICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOwogCiAgICAg
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVy
ZUlEKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwog
ICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXND
b3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3Bw
CmluZGV4IGYxYWM0NzM2ZWNiODE1NzNhMDlkYTNiODU1YjE0OTFjMjYxMTYwYzUuLjZlZTMyMGY3
ZTNkOTA5YjZjZDBlMzc5MzYxZGEwYWEwZTg3NTdjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcApA
QCAtNTAsNyArNTAsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdAogSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdWludDMyX3QgaW5kZXhlZExlbmd0aCwgdWludDMyX3QgbnVtYmVyU3RydWN0dXJl
UHJvcGVydGllcywgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiogcHJvcGVydHlOYW1lc0J1ZmZlciwg
dW5zaWduZWQgcHJvcGVydHlOYW1lc1NpemUpCiAgICAgOiBKU0NlbGwodm0sIHZtLnByb3BlcnR5
TmFtZUVudW1lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX3Byb3BlcnR5TmFtZXModm0s
IHRoaXMsIHByb3BlcnR5TmFtZXNCdWZmZXIpCi0gICAgLCBtX2NhY2hlZFN0cnVjdHVyZUlEKHN0
cnVjdHVyZSA/IHN0cnVjdHVyZS0+aWQoKSA6IDApCisgICAgLCBtX2NhY2hlZFN0cnVjdHVyZUlE
KHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIFdyaXRlQmFycmllclN0cnVjdHVyZUlEOjpNYXlCZU51bGwp
CiAgICAgLCBtX2luZGV4ZWRMZW5ndGgoaW5kZXhlZExlbmd0aCkKICAgICAsIG1fZW5kU3RydWN0
dXJlUHJvcGVydHlJbmRleChudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzKQogICAgICwgbV9lbmRH
ZW5lcmljUHJvcGVydHlJbmRleChwcm9wZXJ0eU5hbWVzU2l6ZSkKQEAgLTg2LDExICs4Niw3IEBA
IHZvaWQgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeShw
cm9wZXJ0eU5hbWVzKTsKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHJvcGVydHlOYW1lcywgcHJv
cGVydHlOYW1lcyArIHRoaXNPYmplY3QtPnNpemVPZlByb3BlcnR5TmFtZXMoKSk7CiAgICAgfQot
Ci0gICAgaWYgKHRoaXNPYmplY3QtPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKLSAgICAgICAgVk0m
IHZtID0gdmlzaXRvci52bSgpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZt
LmdldFN0cnVjdHVyZSh0aGlzT2JqZWN0LT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKSk7Ci0gICAgfQor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkU3RydWN0dXJlSUQpOwogfQog
CiBERUZJTkVfVklTSVRfQ0hJTERSRU4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgKaW5kZXggM2Y1YzdmMzZlOTQyYzhiYmM0YjM0NTUyNDI5NGU3ODEyYTQ4OTlkNy4u
NmQ2YWU4N2I4YjM4YzQwY2UyNTYzYjgzNTZiYjA0YjQ1YzNkMzRhNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmgKQEAgLTcyLDExICs3MiwxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZShWTSYgdm0pIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIW1fY2FjaGVkU3RydWN0
dXJlSUQpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtX2NhY2hlZFN0cnVjdHVyZUlEKTsKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHZtKTsKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkU3RydWN0dXJlSUQuZ2V0
KCk7CiAgICAgfQotICAgIFN0cnVjdHVyZUlEIGNhY2hlZFN0cnVjdHVyZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRTdHJ1Y3R1cmVJRDsgfQorICAgIFN0cnVjdHVyZUlEIGNhY2hlZFN0cnVj
dHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTdHJ1Y3R1cmVJRC52YWx1ZSgpOyB9CiAg
ICAgdWludDMyX3QgaW5kZXhlZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZExlbmd0
aDsgfQogICAgIHVpbnQzMl90IGVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2VuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXg7IH0KICAgICB1aW50MzJfdCBlbmRHZW5l
cmljUHJvcGVydHlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kR2VuZXJpY1Byb3BlcnR5SW5k
ZXg7IH0KQEAgLTEwNyw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIC8vIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvciBpcyBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIGFsbG93cyBWTSB0
byBjYWNoZSB0aGUgZW1wdHkgb25lLgogICAgIC8vIEFmdGVyIGluc3RhbnRpYXRpbmcgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLCB3ZSBtdXN0IG5vdCBjaGFuZ2UgYW55IGZpZWxkcy4KICAgICBB
dXhpbGlhcnlCYXJyaWVyPFdyaXRlQmFycmllcjxKU1N0cmluZz4qPiBtX3Byb3BlcnR5TmFtZXM7
Ci0gICAgU3RydWN0dXJlSUQgbV9jYWNoZWRTdHJ1Y3R1cmVJRDsKKyAgICBXcml0ZUJhcnJpZXJT
dHJ1Y3R1cmVJRCBtX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgIHVpbnQzMl90IG1faW5kZXhlZExl
bmd0aDsKICAgICB1aW50MzJfdCBtX2VuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXg7CiAgICAgdWlu
dDMyX3QgbV9lbmRHZW5lcmljUHJvcGVydHlJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDkyY2NlZmIzZjhjYzdlNTEz
Y2M2NDE4YTU5MTRmOTM3YTQ3MDY0NmUuLjg4ODU5MWRkYzA2ZmZhY2FkMmYwYTA5NzNiZjAyNTU0
ZDY1MTgwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29s
IHRvVGhpc051bWJlcihWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlLCBkb3VibGUmIHgpCiAgICAg
fQogCiAgICAgaWYgKGF1dG8qIG51bWJlck9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8TnVtYmVyT2Jq
ZWN0Kj4odm0sIHRoaXNWYWx1ZSkpIHsKLSAgICAgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVy
ZUlEKHZtLCBudW1iZXJPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQobnVtYmVyT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAg
eCA9IG51bWJlck9iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLmFzTnVtYmVyKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDcwNGVkNmQwZDllMGE0MzllYzRhNWExZDgwNjk0MjMz
MTM2NTNjZjYuLjk1YmJhM2NiMzIwZWE1YzcwZjk4MDQzZmUwZDI2NzAxNzczYTBlMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApA
QCAtODUsNyArODUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5j
VmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNPYmplY3QqIHZh
bHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElL
RUxZKCF2YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChnbG9iYWxPYmplY3QtPnZtKCksIHZhbHVlT2JqLT5z
dHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodmFsdWVPYmot
PnN0cnVjdHVyZUlEKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWVPYmopOwog
fQogCkBAIC0zNjEsNyArMzYxLDcgQEAgSlNTdHJpbmcqIG9iamVjdFByb3RvdHlwZVRvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBJbnRl
Z3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAg
YXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5jYWNoZWRTcGVjaWFsUHJv
cGVydHkoQ2FjaGVkU3BlY2lhbFByb3BlcnR5S2V5OjpUb1N0cmluZ1RhZyk7CiAgICAgaWYgKHJl
c3VsdCkKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCBmYzVkOTViM2E3
Y2EyZTE3MzVlMThkMzExODhlODA1OWU1NGM1MGE2Li41ODI0YTQyYzNiNmExNTczZjAwMTY1NWE2
OTJkNjc5ZmRmYTAwOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04ocmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsK
LSAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVy
ZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmVJRCgpKTsKIAogICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihnbG9iYWxP
YmplY3QsIHRoaXNPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlv
bigpIHx8IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGUwMTllOTdiNzJmMjdm
ODc1YzljOTJiYWYxYzMxYWJiM2UzNmFiNDAuLmYzYjM4M2RjYmE0MjUzYTRhYzkyNTU4NGQxOWJj
ODA3NmI5NGE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcApAQCAtOTYwLDcgKzk2MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihzdHJpbmdQcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgLy8gQWxzbyB1c2VkIGZvciB2YWx1ZU9mLgogCiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1N0cmluZygpKSB7Ci0gICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhp
c1ZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgSW50ZWdyaXR5OjphdWRp
dFN0cnVjdHVyZUlEKHRoaXNWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKICAgICB9CiAKQEAgLTk2OCw3ICs5
NjgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmICghc3RyaW5nT2JqZWN0KQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAot
ICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3RyaW5nT2JqZWN0LT5zdHJ1Y3R1
cmVJRCgpKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoc3RyaW5nT2JqZWN0LT5z
dHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ09iamVjdC0+
aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggMGIwM2YzMTAxMDY1MmM1OTZmZDA4MGI5ZTQ1ZGVjNTgzNWU0NjMz
NS4uYjYwZTNjYjBlM2JmNTYzODczMmY4NWMwZGNiMDdjMzk2ZDNmZDY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
aW5saW5lIHZvaWQgU3RydWN0dXJlOjp2YWxpZGF0ZUZsYWdzKCkgeyB9CiAKIFN0cnVjdHVyZTo6
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQogICAgIDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBt
X2Jsb2Iodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwgaW5kZXhp
bmdUeXBlLCB0eXBlSW5mbykKKyAgICAsIG1fYmxvYihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMp
LCBpbmRleGluZ1R5cGUsIHR5cGVJbmZvKQogICAgICwgbV9vdXRPZkxpbmVUeXBlRmxhZ3ModHlw
ZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCkpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KGlubGlu
ZUNhcGFjaXR5KQogICAgICwgbV9iaXRGaWVsZCgwKQpAQCAtMjY0LDcgKzI2NCw3IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgc2V0TWF4
T2Zmc2V0KHZtLCBpbnZhbGlkT2Zmc2V0KTsKICAKICAgICBUeXBlSW5mbyB0eXBlSW5mbyA9IFR5
cGVJbmZvKFN0cnVjdHVyZVR5cGUsIFN0cnVjdHVyZUZsYWdzKTsKLSAgICBtX2Jsb2IgPSBTdHJ1
Y3R1cmVJREJsb2Iodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwg
MCwgdHlwZUluZm8pOworICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1cmVJRDo6
ZW5jb2RlKHRoaXMpLCAwLCB0eXBlSW5mbyk7CiAgICAgbV9vdXRPZkxpbmVUeXBlRmxhZ3MgPSB0
eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKTsKIAogICAgIEFTU0VSVChoYXNSZWFkT25seU9y
R2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgIW1fY2xhc3NJbmZvLT5o
YXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcygpKTsKQEAgLTMwMSw3ICszMDEsNyBA
QCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMsIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdAogICAgIHNldE1heE9mZnNldCh2bSwgaW52YWxpZE9m
ZnNldCk7CiAgCiAgICAgVHlwZUluZm8gdHlwZUluZm8gPSBwcmV2aW91cy0+dHlwZUluZm8oKTsK
LSAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2Iodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
YWxsb2NhdGVJRCh0aGlzKSwgcHJldmlvdXMtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnko
KSwgdHlwZUluZm8pOworICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1cmVJRDo6
ZW5jb2RlKHRoaXMpLCBwcmV2aW91cy0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpLCB0
eXBlSW5mbyk7CiAgICAgbV9vdXRPZkxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5vdXRPZkxpbmVU
eXBlRmxhZ3MoKTsKIAogICAgIEFTU0VSVCghcHJldmlvdXMtPnR5cGVJbmZvKCkuc3RydWN0dXJl
SXNJbW1vcnRhbCgpKTsKQEAgLTMyNiw3ICszMjYsNiBAQCBTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUo
KQogCiAgICAgaWYgKGlzQnJhbmRlZFN0cnVjdHVyZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxC
cmFuZGVkU3RydWN0dXJlKj4odGhpcyktPmRlc3RydWN0KCk7Ci0gICAgSGVhcDo6aGVhcCh0aGlz
KS0+c3RydWN0dXJlSURUYWJsZSgpLmRlYWxsb2NhdGVJRCh0aGlzLCBtX2Jsb2Iuc3RydWN0dXJl
SUQoKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTkx
MCw3ICs5MDksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1
Y3R1cmUoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIAogICAgIEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrLCB2bSk7CiAgICAgCi0gICAgb2JqZWN0LT5zZXRTdHJ1
Y3R1cmVJRERpcmVjdGx5KG51a2UoaWQoKSkpOworICAgIG9iamVjdC0+c2V0U3RydWN0dXJlSURE
aXJlY3RseShpZCgpLm51a2UoKSk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKIAogICAg
IHNpemVfdCBiZWZvcmVPdXRPZkxpbmVDYXBhY2l0eSA9IHRoaXMtPm91dE9mTGluZUNhcGFjaXR5
KCk7CkBAIC0xMzcwLDcgKzEzNjksNyBAQCBSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6
dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlLCBib29sJiBzYXdQb2x5UHJvdAogCiB2b2lk
IFN0cnVjdHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIGF1dG8qIHN0
cnVjdHVyZUlEID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWQoKSk7CisgICAgYXV0byogc3Ry
dWN0dXJlSUQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihpZCgpLmJpdHMoKSk7CiAgICAgb3V0
LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIFJhd1BvaW50ZXIoc3RydWN0dXJlSUQpLAog
ICAgICAgICAiLyIsICh1aW50MzJfdCkocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0cnVj
dHVyZUlEKSksICIsICIsCiAgICAgICAgIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsICgiLCBp
bmxpbmVTaXplKCksICIvIiwgaW5saW5lQ2FwYWNpdHkoKSwgIiwgIiwKQEAgLTE0NzAsNyArMTQ2
OSw3IEBAIHVpbnRwdHJfdCBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3JB
bmRGbGFnKCkgY29uc3QKICAgICByZXR1cm4gcmFyZURhdGEoKS0+Y2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvckFuZEZsYWcoKTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlUHJvcGVy
dHlOYW1lRW51bWVyYXRvcihWTSYgdm0pIGNvbnN0Citib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJikgY29uc3QKIHsKICAgICBpZiAoIXRoaXMtPmNhbkNh
Y2hlT3duUHJvcGVydHlOYW1lcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgyLDcg
KzE0ODEsNyBAQCBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KFZNJiB2bSkgY29uc3QKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSAqY3VycmVu
dFN0cnVjdHVyZUlEOwogICAgICAgICBpZiAoIXN0cnVjdHVyZUlEKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJl
KHN0cnVjdHVyZUlEKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJ
RC5kZWNvZGUoKTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmNhbkNhY2hlT3duUHJvcGVydHlO
YW1lcygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjdXJyZW50U3RydWN0
dXJlSUQrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXgg
MzdhNzViNTU3MGJlMjZkNjBmNjMwZDk4MTc0ZGQxOTkyNjVkM2JkNS4uNzA0NTc5NjZlMmE0ODkx
N2MzMmExNjlmNjBkZDU2Yjg1ZWQ5ODhkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMgPSAwOwogICAgIAog
ICAgIGVudW0gUG9seVByb3RvVGFnIHsgUG9seVByb3RvIH07CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKQEAgLTE2NCw3ICsxNjUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdmFsaWRhdGVGbGFncygpOwogCiBwdWJsaWM6Ci0gICAgU3RydWN0dXJlSUQgaWQo
KSBjb25zdCB7IHJldHVybiBtX2Jsb2Iuc3RydWN0dXJlSUQoKTsgfQorICAgIFN0cnVjdHVyZUlE
IGlkKCkgY29uc3QgeyBBU1NFUlQobV9ibG9iLnN0cnVjdHVyZUlEKCkgPT0gU3RydWN0dXJlSUQ6
OmVuY29kZSh0aGlzKSk7IHJldHVybiBtX2Jsb2Iuc3RydWN0dXJlSUQoKTsgfQogICAgIGludDMy
X3Qgb2JqZWN0SW5pdGlhbGl6YXRpb25CbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2JF
eGNsdWRpbmdTdHJ1Y3R1cmVJRCgpOyB9CiAgICAgaW50NjRfdCBpZEJsb2IoKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2IuYmxvYigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBhNDk4NjJhNjdiN2FiZjJlYzIwYWExMGRjYzAw
ZTExZTVlMTI1MDJlLi5jYTYwYTJmYmY5YjBlYzJmNTZkNTI5YzZlMDBmMmZlMjM0YjMyZGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3Bw
CkBAIC00OSw2ICs0OSw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRl
KFZNJiB2bSwgSlNPYmplY3QqIGhlYWQpCiAgICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRy
LgogICAgIHNpemVfdCBieXRlcyA9IENoZWNrZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1
Y3R1cmVJRCk7CiAgICAgdm9pZCogdmVjdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0ZSh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6QXNzZXJ0KTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFTdHJ1Y3R1cmVJRCgpLmJpdHMoKSwgIk1h
a2Ugc3VyZSB0aGUgdmFsdWUgd2UncmUgZ29pbmcgdG8gbWVtY3B5IGJlbG93IG1hdGNoZXMgdGhl
IGRlZmF1bHQgU3RydWN0dXJlSUQiKTsKICAgICBtZW1zZXQodmVjdG9yLCAwLCBieXRlcyk7CiAg
ICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3Ry
dWN0dXJlQ2hhaW4+KHZtKSkgU3RydWN0dXJlQ2hhaW4odm0sIHZtLnN0cnVjdHVyZUNoYWluU3Ry
dWN0dXJlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZlY3RvcikpOwogICAgIGNo
YWluLT5maW5pc2hDcmVhdGlvbih2bSwgaGVhZCk7CkBAIC03MywxMCArNzQsOSBAQCB2b2lkIFN0
cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlz
aXRvci5tYXJrQXV4aWxpYXJ5KHRoaXNPYmplY3QtPm1fdmVjdG9yLmdldCgpKTsKLSAgICBWTSYg
dm0gPSB2aXNpdG9yLnZtKCk7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gdGhpc09iamVjdC0+
bV92ZWN0b3IuZ2V0KCk7ICpjdXJyZW50OyArK2N1cnJlbnQpIHsKICAgICAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQgPSAqY3VycmVudDsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB2bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHN0cnVjdHVyZUlELmRlY29kZSgpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKHN0cnVjdHVyZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSUQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVhZTNhZDZiMjQ3ZDJlZGU2ZmNmMWJhNDZh
M2RiMjg4YTk3ZDk0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlELmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBTdHJ1Y3R1cmU7CisKK2NvbnN0ZXhwciBDUFVSZWdpc3RlciBzdHJ1Y3R1
cmVJRE1hc2sgPSBzdHJ1Y3R1cmVIZWFwQWRkcmVzc1NpemUgLSAxOworCitjbGFzcyBTdHJ1Y3R1
cmVJRCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudWtlZFN0cnVj
dHVyZUlEQml0ID0gMTsKKworICAgIFN0cnVjdHVyZUlEKCkgPSBkZWZhdWx0OworICAgIFN0cnVj
dHVyZUlEKFN0cnVjdHVyZUlEIGNvbnN0JikgPSBkZWZhdWx0OworICAgIFN0cnVjdHVyZUlEJiBv
cGVyYXRvcj0oU3RydWN0dXJlSUQgY29uc3QmKSA9IGRlZmF1bHQ7CisKKyAgICBTdHJ1Y3R1cmVJ
RCBudWtlKCkgY29uc3QgeyByZXR1cm4gU3RydWN0dXJlSUQobV9iaXRzIHwgbnVrZWRTdHJ1Y3R1
cmVJREJpdCk7IH0KKyAgICBib29sIGlzTnVrZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBu
dWtlZFN0cnVjdHVyZUlEQml0OyB9CisgICAgU3RydWN0dXJlSUQgZGVjb250YW1pbmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIFN0cnVjdHVyZUlEKG1fYml0cyAmIH5udWtlZFN0cnVjdHVyZUlEQml0KTsg
fQorCisgICAgaW5saW5lIFN0cnVjdHVyZSogZGVjb2RlKCkgY29uc3Q7CisgICAgc3RhdGljIFN0
cnVjdHVyZUlEIGVuY29kZShjb25zdCBTdHJ1Y3R1cmUqKTsKKworICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShTdHJ1Y3R1cmVJRCBjb25zdCYgb3RoZXIpIGNvbnN0ICB7IHJldHVybiBtX2JpdHMgPT0gb3Ro
ZXIubV9iaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KFN0cnVjdHVyZUlEIGNvbnN0JiBvdGhl
cikgY29uc3QgIHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2JpdHM7IH0KKyAgICBjb25zdGV4
cHIgdWludDMyX3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQorCisgICAgU3RydWN0
dXJlSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fYml0cyhudWtlZFN0cnVj
dHVyZUlEQml0KSB7IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gKnRoaXMgPT0gU3RydWN0dXJlSUQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU3RydWN0dXJlSUQodWludDMyX3QgYml0cykg
OiBtX2JpdHMoYml0cykgeyB9CisKKyAgICB1aW50MzJfdCBtX2JpdHMgeyAwIH07Cit9Oworc3Rh
dGljX2Fzc2VydChzaXplb2YoU3RydWN0dXJlSUQpID09IHNpemVvZih1aW50MzJfdCkpOworCisj
aWYgQ1BVKEFERFJFU1M2NCkKKworQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlE
OjpkZWNvZGUoKSBjb25zdAoreworICAgIC8vIFRha2UgY2FyZSB0byBvbmx5IHVzZSB0aGUgYml0
cyBmcm9tIG1fYml0cyBpbiB0aGUgc3RydWN0dXJlJ3MgYWRkcmVzcyByZXNlcnZhdGlvbi4KKyAg
ICBBU1NFUlQoZGVjb250YW1pbmF0ZSgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxT
dHJ1Y3R1cmUqPigoc3RhdGljX2Nhc3Q8dWludHB0cl90PihkZWNvbnRhbWluYXRlKCkubV9iaXRz
KSAmIHN0cnVjdHVyZUlETWFzaykgKyBnX2pzY0NvbmZpZy5zdGFydE9mU3RydWN0dXJlSGVhcCk7
Cit9CisKK0FMV0FZU19JTkxJTkUgU3RydWN0dXJlSUQgU3RydWN0dXJlSUQ6OmVuY29kZShjb25z
dCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICBB
U1NFUlQoZ19qc2NDb25maWcuc3RhcnRPZlN0cnVjdHVyZUhlYXAgPD0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkgJiYgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0
cnVjdHVyZSkgPCBnX2pzY0NvbmZpZy5zdGFydE9mU3RydWN0dXJlSGVhcCArIHN0cnVjdHVyZUhl
YXBBZGRyZXNzU2l6ZSk7CisgICAgYXV0byByZXN1bHQgPSBTdHJ1Y3R1cmVJRChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSAmIHN0cnVjdHVyZUlETWFzayk7CisgICAgQVNT
RVJUKHJlc3VsdC5kZWNvZGUoKSA9PSBzdHJ1Y3R1cmUpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKyNlbHNlIC8vIENQVShBRERSRVNTNjQpCisKK0FMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBT
dHJ1Y3R1cmVJRDo6ZGVjb2RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGVjb250YW1pbmF0ZSgp
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPihtX2JpdHMpOworfQor
CitBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUlEIFN0cnVjdHVyZUlEOjplbmNvZGUoY29uc3QgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgcmV0dXJu
IFN0cnVjdHVyZUlEKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZSkpOworfQor
CisjZW5kaWYKKworc3RydWN0IFN0cnVjdHVyZUlESGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU3RydWN0dXJlSUQmIGtleSkgeyByZXR1cm4ga2V5LmJpdHMoKTsgfQorICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cnVjdHVyZUlEJiBhLCBjb25zdCBTdHJ1Y3R1cmVJ
RCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpTdHJ1Y3R1cmVJRD4g
OiBKU0M6OlN0cnVjdHVyZUlESGFzaCB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlN0cnVjdHVy
ZUlEPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlN0cnVjdHVyZUlEPiB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworfTsKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAppbmRleCA3
MzA5MjcyYmFjMDgzODM0OTZhZTJmYTJhYjE3M2Y5NmM2ZjEyNzViLi5kNGFjMTUyOTE4NTRmNGM3
OTcwODBlYjkxYzlhZGYzOWJiOGM3ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaApAQCAtMjgsMTcgKzI4LDE0IEBACiAjaW5jbHVkZSAi
Q2VsbFN0YXRlLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNUeXBl
SW5mby5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJRC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgU3RydWN0dXJlSURCbG9iIHsKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgotICAgIFN0cnVj
dHVyZUlEQmxvYigpCi0gICAgewotICAgICAgICB1LmRvdWJsZVdvcmQgPSAweGJiYWRiZWVmOwot
ICAgIH0KKyAgICBTdHJ1Y3R1cmVJREJsb2IoKSA9IGRlZmF1bHQ7CiAKICAgICBTdHJ1Y3R1cmVJ
REJsb2IoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQsIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJ
bmNsdWRpbmdIaXN0b3J5LCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8pCiAgICAgewpAQCAtNzcs
OCArNzQsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHVuaW9uIHsKKyAgICB1
bmlvbiBEYXRhIHsKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmVtb3ZlIHRoaXMgc2luY2UgdGhlIHN0cnVjdHVyZUlEIGNhbiBiZSBkaXJlY3RseSBj
b21wdXRlZCBmcm9tIHRoZSBTdHJ1Y3R1cmUqCiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1
Y3R1cmVJRDsKICAgICAgICAgICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5OwogICAgICAgICAgICAgSlNUeXBlIHR5cGU7CkBAIC05MCw3ICs4OCwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgaW50MzJfdCB3b3JkMjsKICAgICAgICAgfSB3b3JkczsKICAgICAg
ICAgaW50NjRfdCBkb3VibGVXb3JkOwotICAgIH0gdTsKKworICAgICAgICBEYXRhKCkgeyBkb3Vi
bGVXb3JkID0gMHhiYmFkYmVlZjsgfQorICAgIH07CisKKyAgICBEYXRhIHU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlEVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSURUYWJsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2YjRmMTc1
NjA2OTQ1NThlYzc3ZjEzNmNmODkyMzlhYjEyMmQwN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSURUYWJsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFi
bGUuaCIKLQotI2luY2x1ZGUgIlJlc291cmNlRXhoYXVzdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvUmF3UG9p
bnRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIFVTRShKU1ZBTFVFNjQpCi0KLW5hbWVz
cGFjZSBTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhwciBib29sIHZl
cmJvc2UgPSBmYWxzZTsKLX0KLQotU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgp
Ci0gICAgOiBtX3RhYmxlKG1ha2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19pbml0
aWFsU2l6ZSkpCi0gICAgLCBtX3NpemUoMSkKLSAgICAsIG1fY2FwYWNpdHkoc19pbml0aWFsU2l6
ZSkKLXsKLSAgICAvLyBXZSBwcmUtYWxsb2NhdGUgdGhlIGZpcnN0IG9mZnNldCBzbyB0aGF0IHRo
ZSBudWxsIFN0cnVjdHVyZQotICAgIC8vIGNhbiBzdGlsbCBiZSByZXByZXNlbnRlZCBhcyB0aGUg
U3RydWN0dXJlSUQgJzAnLgotICAgIHRhYmxlKClbMF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMgPSAw
OwotCi0gICAgbWFrZUZyZWVMaXN0RnJvbVJhbmdlKDEsIG1fY2FwYWNpdHkgLSAxKTsKLX0KLQot
dm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjptYWtlRnJlZUxpc3RGcm9tUmFuZ2UodWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGxhc3QpCi17Ci0gICAgQVNTRVJUKCFtX2ZpcnN0RnJlZU9mZnNldCk7Ci0g
ICAgQVNTRVJUKCFtX2xhc3RGcmVlT2Zmc2V0KTsKLQotICAgIC8vIFB1dCBhbGwgdGhlIG5ldyBJ
RHMgb24gdGhlIGZyZWUgbGlzdCBzZXF1ZW50aWFsbHkuCi0gICAgdWludDMyX3QgaGVhZCA9IGZp
cnN0OwotICAgIHVpbnQzMl90IHRhaWwgPSBsYXN0OwotICAgIGZvciAodWludDMyX3QgaSA9IGZp
cnN0OyBpIDwgbGFzdDsgKytpKQotICAgICAgICB0YWJsZSgpW2ldLm9mZnNldCA9IGkgKyAxOwot
ICAgIHRhYmxlKClbbGFzdF0ub2Zmc2V0ID0gMDsKLQotICAgIC8vIFJhbmRvbWl6ZSB0aGUgZnJl
ZSBsaXN0LgotICAgIHVpbnQzMl90IHNpemUgPSBsYXN0IC0gZmlyc3QgKyAxOwotICAgIHVpbnQz
Ml90IG1heEl0ZXJhdGlvbnMgPSAoc2l6ZSAqIDIpIC8gMzsKLSAgICBmb3IgKHVpbnQzMl90IGNv
dW50ID0gMDsgY291bnQgPCBtYXhJdGVyYXRpb25zOyArK2NvdW50KSB7Ci0gICAgICAgIC8vIE1v
dmUgYSByYW5kb20gcGljayBlaXRoZXIgdG8gdGhlIGhlYWQgb3IgdGhlIHRhaWwgb2YgdGhlIGZy
ZWUgbGlzdC4KLSAgICAgICAgdWludDMyX3QgcmFuZG9tID0gbV93ZWFrUmFuZG9tLmdldFVpbnQz
MigpOwotICAgICAgICB1aW50MzJfdCBub2RlQmVmb3JlID0gZmlyc3QgKyAocmFuZG9tICUgc2l6
ZSk7Ci0gICAgICAgIHVpbnQzMl90IHBpY2sgPSB0YWJsZSgpW25vZGVCZWZvcmVdLm9mZnNldDsK
LSAgICAgICAgaWYgKHBpY2spIHsKLSAgICAgICAgICAgIHVpbnQzMl90IG5vZGVBZnRlciA9IHRh
YmxlKClbcGlja10ub2Zmc2V0OwotICAgICAgICAgICAgdGFibGUoKVtub2RlQmVmb3JlXS5vZmZz
ZXQgPSBub2RlQWZ0ZXI7Ci0gICAgICAgICAgICBpZiAoKHJhbmRvbSAmIDEpIHx8ICFub2RlQWZ0
ZXIpIHsKLSAgICAgICAgICAgICAgICAvLyBNb3ZlIHRvIHRoZSBoZWFkLgotICAgICAgICAgICAg
ICAgIHRhYmxlKClbcGlja10ub2Zmc2V0ID0gaGVhZDsKLSAgICAgICAgICAgICAgICBoZWFkID0g
cGljazsKLSAgICAgICAgICAgICAgICBpZiAoIW5vZGVBZnRlcikKLSAgICAgICAgICAgICAgICAg
ICAgdGFpbCA9IG5vZGVCZWZvcmU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIC8vIE1vdmUgdG8gdGhlIHRhaWwuCi0gICAgICAgICAgICAgICAgdGFibGUoKVtwaWNrXS5v
ZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIHRhYmxlKClbdGFpbF0ub2Zmc2V0ID0gcGljazsK
LSAgICAgICAgICAgICAgICB0YWlsID0gcGljazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIEN1dCBsaXN0IGluIGhhbGYgYW5kIHN3YXAgaGFsdmVzLgotICAgIHVp
bnQzMl90IGN1dCA9IGZpcnN0ICsgKG1fd2Vha1JhbmRvbS5nZXRVaW50MzIoKSAlIHNpemUpOwot
ICAgIHVpbnQzMl90IGFmdGVyQ3V0ID0gdGFibGUoKVtjdXRdLm9mZnNldDsKLSAgICBpZiAoYWZ0
ZXJDdXQpIHsKLSAgICAgICAgdGFibGUoKVt0YWlsXS5vZmZzZXQgPSBoZWFkOwotICAgICAgICB0
YWlsID0gY3V0OwotICAgICAgICBoZWFkID0gYWZ0ZXJDdXQ7Ci0gICAgICAgIHRhYmxlKClbY3V0
XS5vZmZzZXQgPSAwOwotICAgIH0KLQotICAgIG1fZmlyc3RGcmVlT2Zmc2V0ID0gaGVhZDsKLSAg
ICBtX2xhc3RGcmVlT2Zmc2V0ID0gdGFpbDsKLX0KLQotdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpy
ZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KQotewotICAgIGlmIChuZXdDYXBhY2l0eSA+IHNfbWF4
aW11bU51bWJlck9mU3RydWN0dXJlcykKLSAgICAgICAgbmV3Q2FwYWNpdHkgPSBzX21heGltdW1O
dW1iZXJPZlN0cnVjdHVyZXM7Ci0KLSAgICAvLyBJZiBtX3NpemUgaXMgYWxyZWFkeSBzX21heGlt
dW1OdW1iZXJPZlN0cnVjdHVyZXMsIG5ld0NhcGFjaXR5IGJlY29tZXMgc19tYXhpbXVtTnVtYmVy
T2ZTdHJ1Y3R1cmVzIGluIHRoZSBhYm92ZSBjb2RlLgotICAgIC8vIEluIHRoYXQgY2FzZSwgd2Ug
c2hvdWxkIGNyYXNoIGJlY2F1c2Ugb2YgZXhoYXVzdCBvZiBTdHJ1Y3R1cmVJRHMuCi0gICAgUkVM
RUFTRV9BU1NFUlRfUkVTT1VSQ0VfQVZBSUxBQkxFKG1fc2l6ZSA8IG5ld0NhcGFjaXR5LCBTdHJ1
Y3R1cmVJREV4aGF1c3Rpb24sICJDcmFzaCBpbnRlbnRpb25hbGx5IGJlY2F1c2Ugb2YgZXhoYXVz
dCBvZiBTdHJ1Y3R1cmVJRHMuIik7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIG5ldyB0YWJsZS4KLSAg
ICBhdXRvIG5ld1RhYmxlID0gbWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0PihuZXdD
YXBhY2l0eSk7Ci0KLSAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHRhYmxlIHRv
IHRoZSBuZXcgdGFibGUuCi0gICAgbWVtY3B5KG5ld1RhYmxlLmdldCgpLCB0YWJsZSgpLCBtX2Nh
cGFjaXR5ICogc2l6ZW9mKFN0cnVjdHVyZU9yT2Zmc2V0KSk7Ci0KLSAgICAvLyBTdG9yZSBmZW5j
ZSB0byBtYWtlIHN1cmUgd2UndmUgY29waWVkIGV2ZXJ5dGhpbmcgYmVmb3JlIGRvaW5nIHRoZSBz
d2FwLgotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0KLSAgICAvLyBTd2FwIHRoZSBvbGQg
YW5kIG5ldyB0YWJsZXMuCi0gICAgc3dhcChtX3RhYmxlLCBuZXdUYWJsZSk7Ci0KLSAgICAvLyBQ
dXQgdGhlIG9sZCB0YWJsZSAobm93IGxhYmVsZWQgYXMgbmV3KSBpbnRvIHRoZSBsaXN0IG9mIG9s
ZCB0YWJsZXMuCi0gICAgbV9vbGRUYWJsZXMuYXBwZW5kKFdURk1vdmUobmV3VGFibGUpKTsKLQot
ICAgIC8vIFVwZGF0ZSB0aGUgY2FwYWNpdHkuCi0gICAgbV9jYXBhY2l0eSA9IG5ld0NhcGFjaXR5
OwotCi0gICAgbWFrZUZyZWVMaXN0RnJvbVJhbmdlKG1fc2l6ZSwgbV9jYXBhY2l0eSAtIDEpOwot
fQotCi12b2lkIFN0cnVjdHVyZUlEVGFibGU6OmZsdXNoT2xkVGFibGVzKCkKLXsKLSAgICBtX29s
ZFRhYmxlcy5jbGVhcigpOwotfQotCi1TdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxlOjphbGxv
Y2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIGlmIChVTkxJS0VMWSghbV9maXJz
dEZyZWVPZmZzZXQpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FwYWNpdHkgPD0gc19t
YXhpbXVtTnVtYmVyT2ZTdHJ1Y3R1cmVzKTsKLSAgICAgICAgQVNTRVJUKG1fc2l6ZSA9PSBtX2Nh
cGFjaXR5KTsKLSAgICAgICAgcmVzaXplKG1fY2FwYWNpdHkgKiAyKTsKLSAgICAgICAgQVNTRVJU
KG1fc2l6ZSA8IG1fY2FwYWNpdHkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2ZpcnN0RnJl
ZU9mZnNldCk7Ci0gICAgfQotCi0gICAgLy8gZW50cm9weUJpdHMgbXVzdCBub3QgYmUgemVyby4g
VGhpcyBlbnN1cmVzIHRoYXQgaWYgYSBjb3JydXB0ZWQKLSAgICAvLyBzdHJ1Y3R1cmVJRCBpcyBl
bmNvdW50ZXJlZCAod2l0aCBpbmNvcnJlY3QgZW50cm9weUJpdHMpLCB0aGUgZGVjb2RlZAotICAg
IC8vIHN0cnVjdHVyZSBwb2ludGVyIGZvciB0aGF0IElEIHdpbGwgYmUgYWx3YXlzIGJlIGEgYmFk
IHBvaW50ZXIgd2l0aAotICAgIC8vIGhpZ2ggYml0cyBzZXQuCi0gICAgY29uc3RleHByIHVpbnQz
Ml90IGVudHJvcHlCaXRzTWFzayA9ICgxIDw8IHNfbnVtYmVyT2ZFbnRyb3B5Qml0cykgLSAxOwot
ICAgIHVpbnQzMl90IGVudHJvcHlCaXRzID0gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpICYgZW50
cm9weUJpdHNNYXNrOwotICAgIGlmIChVTkxJS0VMWSghZW50cm9weUJpdHMpKSB7Ci0gICAgICAg
IGNvbnN0ZXhwciB1aW50MzJfdCBudW1iZXJPZlZhbHVlc1RvUGlja0Zyb20gPSBlbnRyb3B5Qml0
c01hc2s7Ci0gICAgICAgIGVudHJvcHlCaXRzID0gKG1fd2Vha1JhbmRvbS5nZXRVaW50MzIoKSAl
IG51bWJlck9mVmFsdWVzVG9QaWNrRnJvbSkgKyAxOwotICAgIH0KLQotICAgIHVpbnQzMl90IHN0
cnVjdHVyZUluZGV4ID0gbV9maXJzdEZyZWVPZmZzZXQ7Ci0gICAgbV9maXJzdEZyZWVPZmZzZXQg
PSB0YWJsZSgpW21fZmlyc3RGcmVlT2Zmc2V0XS5vZmZzZXQ7Ci0gICAgaWYgKCFtX2ZpcnN0RnJl
ZU9mZnNldCkKLSAgICAgICAgbV9sYXN0RnJlZU9mZnNldCA9IDA7Ci0KLSAgICBTdHJ1Y3R1cmVJ
RCByZXN1bHQgPSAoc3RydWN0dXJlSW5kZXggPDwgc19udW1iZXJPZkVudHJvcHlCaXRzKSB8IGVu
dHJvcHlCaXRzOwotICAgIHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVC
aXRzID0gZW5jb2RlKHN0cnVjdHVyZSwgcmVzdWx0KTsKLSAgICBtX3NpemUrKzsKLSAgICBBU1NF
UlQoIWlzTnVrZWQocmVzdWx0KSk7Ci0KLSAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1cmVJRFRhYmxl
SW50ZXJuYWw6OnZlcmJvc2UsICJBbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgcmVzdWx0LCAiIGZv
ciBTdHJ1Y3R1cmUgIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi12b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCi17Ci0gICAgZGF0YUxvZ0xuSWYoU3Ry
dWN0dXJlSURUYWJsZUludGVybmFsOjp2ZXJib3NlLCAiRGVhbGxvY2F0ZWQgU3RydWN0dXJlSUQg
Iiwgc3RydWN0dXJlSUQpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCAhPSBzX3VudXNlZElEKTsK
LSAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNfbnVtYmVyT2ZF
bnRyb3B5Qml0czsKLSAgICBBU1NFUlQoc3RydWN0dXJlSW5kZXggJiYgc3RydWN0dXJlSW5kZXgg
PCBzX21heGltdW1OdW1iZXJPZlN0cnVjdHVyZXMpOwotICAgIFJFTEVBU0VfQVNTRVJUKHRhYmxl
KClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzID09IGVuY29kZShzdHJ1Y3R1
cmUsIHN0cnVjdHVyZUlEKSk7Ci0gICAgbV9zaXplLS07Ci0gICAgaWYgKCFtX2ZpcnN0RnJlZU9m
ZnNldCkgewotICAgICAgICB0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5vZmZzZXQgPSAwOwotICAg
ICAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IHN0cnVjdHVyZUluZGV4OwotICAgICAgICBtX2xhc3RG
cmVlT2Zmc2V0ID0gc3RydWN0dXJlSW5kZXg7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBib29sIGluc2VydEF0SGVhZCA9IG1fd2Vha1JhbmRvbS5nZXRVaW50MzIoKSAmIDE7Ci0gICAg
aWYgKGluc2VydEF0SGVhZCkgewotICAgICAgICB0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5vZmZz
ZXQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKLSAgICAgICAgbV9maXJzdEZyZWVPZmZzZXQgPSBzdHJ1
Y3R1cmVJbmRleDsKLSAgICB9IGVsc2UgewotICAgICAgICB0YWJsZSgpW3N0cnVjdHVyZUluZGV4
XS5vZmZzZXQgPSAwOwotICAgICAgICB0YWJsZSgpW21fbGFzdEZyZWVPZmZzZXRdLm9mZnNldCA9
IHN0cnVjdHVyZUluZGV4OwotICAgICAgICBtX2xhc3RGcmVlT2Zmc2V0ID0gc3RydWN0dXJlSW5k
ZXg7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRh
YmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhYzJhMTM4YWVlZjAwMmVhYTMy
M2IyMTVhMDgwMjEyZDU2MjQ0MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCIKLSNpbmNsdWRl
ICJVbnVzZWRQb2ludGVyLmgiCi0jaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBTdHJ1Y3R1cmU7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotdXNpbmcg
U3RydWN0dXJlSUQgPSB1aW50MzJfdDsKLQotaW5saW5lIFN0cnVjdHVyZUlEIG51a2VkU3RydWN0
dXJlSURCaXQoKQotewotICAgIHJldHVybiAweDgwMDAwMDAwdTsKLX0KLQotaW5saW5lIFN0cnVj
dHVyZUlEIG51a2UoU3RydWN0dXJlSUQgaWQpCi17Ci0gICAgcmV0dXJuIGlkIHwgbnVrZWRTdHJ1
Y3R1cmVJREJpdCgpOwotfQotCi1pbmxpbmUgYm9vbCBpc051a2VkKFN0cnVjdHVyZUlEIGlkKQot
ewotICAgIHJldHVybiAhIShpZCAmIG51a2VkU3RydWN0dXJlSURCaXQoKSk7Ci19Ci0KLWlubGlu
ZSBTdHJ1Y3R1cmVJRCBkZWNvbnRhbWluYXRlKFN0cnVjdHVyZUlEIGlkKQotewotICAgIHJldHVy
biBpZCAmIH5udWtlZFN0cnVjdHVyZUlEQml0KCk7Ci19Ci0jZWxzZSAvLyBub3QgVVNFKEpTVkFM
VUU2NCkKLXVzaW5nIFN0cnVjdHVyZUlEID0gU3RydWN0dXJlKjsKLQotaW5saW5lIFN0cnVjdHVy
ZUlEIG51a2VkU3RydWN0dXJlSURCaXQoKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8U3Ry
dWN0dXJlSUQ+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwotfQotCi1pbmxpbmUgU3RydWN0
dXJlSUQgbnVrZShTdHJ1Y3R1cmVJRCBpZCkKLXsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PFN0
cnVjdHVyZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpZCkgfCBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihudWtlZFN0cnVjdHVyZUlEQml0KCkpKTsKLX0KLQotaW5saW5lIGJvb2wgaXNOdWtl
ZChTdHJ1Y3R1cmVJRCBpZCkKLXsKLSAgICByZXR1cm4gISEoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oaWQpICYgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obnVrZWRTdHJ1Y3R1cmVJREJpdCgpKSk7
Ci19Ci0KLWlubGluZSBTdHJ1Y3R1cmVJRCBkZWNvbnRhbWluYXRlKFN0cnVjdHVyZUlEIGlkKQot
ewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8U3RydWN0dXJlSUQ+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGlkKSAmIH5iaXR3aXNlX2Nhc3Q8dWludHB0cl90PihudWtlZFN0cnVjdHVyZUlEQml0
KCkpKTsKLX0KLSNlbmRpZiAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLQotI2lmIFVTRShKU1ZBTFVF
NjQpCi0KLXVzaW5nIEVuY29kZWRTdHJ1Y3R1cmVCaXRzID0gdWludHB0cl90OwotCi1jbGFzcyBT
dHJ1Y3R1cmVJRFRhYmxlIHsKLSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwotcHVibGljOgotICAgIFN0cnVjdHVyZUlEVGFibGUoKTsKLQotICAgIHZvaWQqKiBiYXNlKCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3RhYmxlKTsgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHZhbGlkYXRlKFN0cnVjdHVyZUlEKTsKLQotICAgIC8vIEZJWE1FOiBy
ZGFyOi8vNjkwMzY4ODg6IHJlbW92ZSB0aGlzIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICAv
LyBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgYSBzcGVjaWFsIGNhc2UgbWl0aWdhdGlvbi4gSXQgaXMg
bm90IGZvciBnZW5lcmFsIHVzZS4KLSAgICBTdHJ1Y3R1cmUqIHRyeUdldChTdHJ1Y3R1cmVJRCk7
Ci0KLSAgICBTdHJ1Y3R1cmUqIGdldChTdHJ1Y3R1cmVJRCk7Ci0gICAgdm9pZCBkZWFsbG9jYXRl
SUQoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQpOwotICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRlSUQo
U3RydWN0dXJlKik7Ci0KLSAgICB2b2lkIGZsdXNoT2xkVGFibGVzKCk7Ci0gICAgCi0gICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
IHJlc2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpOwotICAgIHZvaWQgbWFrZUZyZWVMaXN0RnJvbVJh
bmdlKHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBsYXN0KTsKLQotICAgIHVuaW9uIFN0cnVjdHVy
ZU9yT2Zmc2V0IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGlj
OgotICAgICAgICBFbmNvZGVkU3RydWN0dXJlQml0cyBlbmNvZGVkU3RydWN0dXJlQml0czsKLSAg
ICAgICAgdWludHB0cl90IG9mZnNldDsKLSAgICB9OwotCi0gICAgU3RydWN0dXJlT3JPZmZzZXQq
IHRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90YWJsZS5nZXQoKTsgfQotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGRlY29kZShFbmNvZGVkU3RydWN0dXJlQml0cywgU3RydWN0dXJlSUQpOwotICAgIHN0
YXRpYyBFbmNvZGVkU3RydWN0dXJlQml0cyBlbmNvZGUoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQp
OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19pbml0aWFsU2l6ZSA9IDUxMjsKLQot
ICAgIFZlY3RvcjxVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4+IG1fb2xkVGFibGVzOwot
Ci0gICAgdWludDMyX3QgbV9maXJzdEZyZWVPZmZzZXQgeyAwIH07Ci0gICAgdWludDMyX3QgbV9s
YXN0RnJlZU9mZnNldCB7IDAgfTsKLSAgICBVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4g
bV90YWJsZTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgc2l6ZV90IG1fY2FwYWNp
dHk7Ci0KLSAgICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKLQotICAgIHN0YXRpYyBjb25zdGV4
cHIgU3RydWN0dXJlSUQgc191bnVzZWRJRCA9IDA7Ci0KLXB1YmxpYzoKLSAgICAvLyAxLiBTdHJ1
Y3R1cmVJRCBpcyBlbmNvZGVkIGFzOgotICAgIC8vCi0gICAgLy8gICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8v
ICAgIHwgMSBOdWtlIEJpdCB8IDI2IFN0cnVjdHVyZUlEVGFibGUgaW5kZXggYml0cyB8IDUgZW50
cm9weSBiaXRzIHwKLSAgICAvLyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8KLSAgICAvLyAgICBUaGUgZW50
cm9weSBiaXRzIGFyZSBjaG9zZW4gYXQgcmFuZG9tIGFuZCBhc3NpZ25lZCB3aGVuIGEgU3RydWN0
dXJlSUQKLSAgICAvLyAgICBpcyBhbGxvY2F0ZWQuCi0gICAgLy8KLSAgICAvLyAyLiBGb3IgZWFj
aCBTdHJ1Y3R1cmVJRCwgdGhlIFN0cnVjdHVyZUlEVGFibGUgc3RvcmVzIGVuY29kZWRTdHJ1Y3R1
cmVCaXRzCi0gICAgLy8gICAgd2hpY2ggYXJlIGVuY29kZWQgZnJvbSB0aGUgc3RydWN0dXJlIHBv
aW50ZXIgYXMgc3VjaDoKLSAgICAvLwotICAgIC8vICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vICAgIHwg
MTEgbG93IGluZGV4IGJpdHMgfCA1IGVudHJvcHkgYml0cyB8IDQ4IHN0cnVjdHVyZSBwb2ludGVy
IGJpdHMgfAotICAgIC8vICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vCi0gICAgLy8gICAgVGhlIGVudHJv
cHkgYml0cyBoZXJlIGFyZSB0aGUgc2FtZSA1IGJpdHMgdXNlZCBpbiB0aGUgZW5jb2Rpbmcgb2Yg
dGhlCi0gICAgLy8gICAgU3RydWN0dXJlSUQgZm9yIHRoaXMgc3RydWN0dXJlIGVudHJ5IGluIHRo
ZSBTdHJ1Y3R1cmVJRFRhYmxlLgotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX251
bWJlck9mTnVrZUJpdHMgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19udW1i
ZXJPZkVudHJvcHlCaXRzID0gNTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfZW50
cm9weUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIgPSAoc2l6ZW9mKEVuY29kZWRTdHJ1Y3R1
cmVCaXRzKSAqIDgpIC0gMTY7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfbWF4
aW11bU51bWJlck9mU3RydWN0dXJlcyA9IDEgPDwgKDMyIC0gc19udW1iZXJPZkVudHJvcHlCaXRz
IC0gc19udW1iZXJPZk51a2VCaXRzKTsKLX07Ci0KLUFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBT
dHJ1Y3R1cmVJRFRhYmxlOjpkZWNvZGUoRW5jb2RlZFN0cnVjdHVyZUJpdHMgYml0cywgU3RydWN0
dXJlSUQgc3RydWN0dXJlSUQpCi17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxTdHJ1Y3R1cmUq
PihiaXRzIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlSUQpIDw8IHNfZW50cm9w
eUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIpKTsKLX0KLQotQUxXQVlTX0lOTElORSBFbmNv
ZGVkU3RydWN0dXJlQml0cyBTdHJ1Y3R1cmVJRFRhYmxlOjplbmNvZGUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFN0cnVjdHVyZUJpdHM+KHN0cnVjdHVyZSkgXiAoc3RhdGljX2Nhc3Q8RW5jb2Rl
ZFN0cnVjdHVyZUJpdHM+KHN0cnVjdHVyZUlEKSA8PCBzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1
Y3R1cmVQb2ludGVyKTsKLX0KLQotaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6
Z2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHN0cnVjdHVyZUlEKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTighaXNOdWtlZChzdHJ1Y3R1cmVJRCkpOwotICAgIHVpbnQzMl90IHN0cnVjdHVyZUlu
ZGV4ID0gc3RydWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJvcHlCaXRzOwotICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RydWN0dXJlSW5kZXggPCBtX2NhcGFj
aXR5KTsKLSAgICByZXR1cm4gZGVjb2RlKHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRT
dHJ1Y3R1cmVCaXRzLCBzdHJ1Y3R1cmVJRCk7Ci19Ci0KLS8vIEZJWE1FOiByZGFyOi8vNjkwMzY4
ODg6IHJlbW92ZSB0aGlzIGZ1bmN0aW9uIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KLWlubGluZSBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZUlEVGFibGU6OnRyeUdldChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJ
RCkKLXsKLSAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNfbnVt
YmVyT2ZFbnRyb3B5Qml0czsKLSAgICBpZiAoc3RydWN0dXJlSW5kZXggPj0gbV9jYXBhY2l0eSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRlY29kZSh0YWJsZSgpW3N0cnVj
dHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJlQml0cywgc3RydWN0dXJlSUQpOwotfQotCi1BTFdB
WVNfSU5MSU5FIHZvaWQgU3RydWN0dXJlSURUYWJsZTo6dmFsaWRhdGUoU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQpCi17Ci0gICAgdWludDMyX3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+
PiBzX251bWJlck9mRW50cm9weUJpdHM7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBkZWNv
ZGUodGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMsIHN0cnVjdHVy
ZUlEKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmVJbmRleCA8IG1fY2FwYWNpdHkpOwot
ICAgICpiaXR3aXNlX2Nhc3Q8dm9sYXRpbGUgdWludDY0X3QqPihzdHJ1Y3R1cmUpOwotfQotCi0j
ZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLQotY2xhc3MgU3RydWN0dXJlSURUYWJsZSB7Ci0g
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLXB1YmxpYzoKLSAgICBTdHJ1
Y3R1cmVJRFRhYmxlKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gRklYTUU6IHJkYXI6Ly82OTAzNjg4
ODogcmVtb3ZlIHRoaXMgZnVuY3Rpb24gd2hlbiBubyBsb25nZXIgbmVlZGVkLgotICAgIFN0cnVj
dHVyZSogdHJ5R2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IHJldHVybiBzdHJ1Y3R1cmVJ
RDsgfQotICAgIFN0cnVjdHVyZSogZ2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IHJldHVy
biBzdHJ1Y3R1cmVJRDsgfQotICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSosIFN0cnVj
dHVyZUlEKSB7IH0KLSAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc051a2VkKHN0cnVjdHVyZSkpOwotICAgICAg
ICByZXR1cm4gc3RydWN0dXJlOwotICAgIH07Ci0KLSAgICB2b2lkIGZsdXNoT2xkVGFibGVzKCkg
eyB9Ci0gICAgdm9pZCB2YWxpZGF0ZShTdHJ1Y3R1cmVJRCkgeyB9Ci19OwotCi0jZW5kaWYgLy8g
bm90IFVTRShKU1ZBTFVFNjQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IDJmNjFk
ZTFlMmM3MWNlNDk2NmNjNDdkNTNlYTAyNDk5ZmVlMDAzOGIuLjc2OTI1MGQ2NjVmMDQ5MmZlZTNj
MWZhMDdlZWYzZTNmOWMyYjgyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTYwLDExICs2MCwxMCBAQCB2b2lkIFN0
cnVjdHVyZVJhcmVEYXRhOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU3RydWN0dXJlUmFyZURh
dGE6OlN0cnVjdHVyZVJhcmVEYXRhKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICA6
IEpTQ2VsbCh2bSwgdm0uc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBt
X3ByZXZpb3VzKHZtLCB0aGlzLCBwcmV2aW91cywgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQ6Ok1h
eUJlTnVsbCkKICAgICAsIG1fbWF4T2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX3RyYW5z
aXRpb25PZmZzZXQoaW52YWxpZE9mZnNldCkKIHsKLSAgICBpZiAocHJldmlvdXMpCi0gICAgICAg
IG1fcHJldmlvdXMuc2V0KHZtLCB0aGlzLCBwcmV2aW91cyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuaAppbmRleCBjZjMxZTkyOTEzYzhjNTZkOWI3MjViZjBkYjQxODU0MTgxMWFh
YTdiLi42OGJkOWE2MTViNmZmY2U5ZmIyZDBkN2ZjYWFhYzA5ODY0NTU5M2ZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTE0
MCw3ICsxNDAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB0cnlDYWNoZVByb3BlcnR5TmFtZUVu
dW1lcmF0b3JWaWFXYXRjaHBvaW50KFZNJiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qKTsK
IAotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJldmlvdXM7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBoYXZlIHNvbWUgc3RvcnkgZm9yIGNsZWFyaW5nIHRoZXNlIHByb3BlcnR5IG5h
bWVzIGNhY2hlcyBpbiBHQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkyNjU5CiAgICAgdWludHB0cl90IG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVy
YXRvckFuZEZsYWcgeyAwIH07CkBAIC0xNTYsNiArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3BlY2lhbFByb3BlcnR5Q2FjaGU+IG1fc3BlY2lhbFByb3BlcnR5Q2FjaGU7
CiAgICAgQm94PElubGluZVdhdGNocG9pbnRTZXQ+IG1fcG9seVByb3RvV2F0Y2hwb2ludDsKIAor
ICAgIFdyaXRlQmFycmllclN0cnVjdHVyZUlEIG1fcHJldmlvdXM7CiAgICAgUHJvcGVydHlPZmZz
ZXQgbV9tYXhPZmZzZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV90cmFuc2l0aW9uT2Zmc2V0Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGFJbmxpbmVzLmgKaW5kZXggMTU5MjIwOGZiM2YxMTliYWMwOTcyZDNmNmEyYWI2ZmIw
ZjNiMmY3ZC4uZWRmY2YzYTI1OGI0ZDQyZWJjMjI3NTU0N2Q5OWRkMGRhZjNkMjQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGFJbmxpbmVzLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVDaGFp
bkludmFsaWRhdGlvbldhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYsIGNvbnN0IEZpcmVEZQog
ICAgIG1fc3RydWN0dXJlUmFyZURhdGEtPmNsZWFyQ2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRv
cigpOwogfQogCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmVSYXJlRGF0YTo6dHJ5Q2FjaGVQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yVmlhV2F0Y2hwb2ludChWTSYgdm0sIFN0cnVjdHVyZSogYmFzZVN0cnVj
dHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQoraW5saW5lIGJvb2wgU3RydWN0dXJlUmFyZURh
dGE6OnRyeUNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvclZpYVdhdGNocG9pbnQoVk0mLCBTdHJ1
Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbikKIHsKICAgICBpZiAo
YmFzZVN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE4Niw3ICsxODYsNyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmVSYXJlRGF0YTo6dHJ5Q2FjaGVQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yVmlhV2F0Y2hwb2ludChWTSYgdgogICAgIGZvciAoYXV0byog
Y3VycmVudCA9IGNoYWluLT5oZWFkKCk7ICpjdXJyZW50OyArK2N1cnJlbnQpIHsKICAgICAgICAg
KytzaXplOwogICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9ICpjdXJyZW50OwotICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CiAg
ICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU2hvdWxkV2F0Y2go
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xOTQsNyArMTk0LDcgQEAg
aW5saW5lIGJvb2wgU3RydWN0dXJlUmFyZURhdGE6OnRyeUNhY2hlUHJvcGVydHlOYW1lRW51bWVy
YXRvclZpYVdhdGNocG9pbnQoVk0mIHYKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgZm9y
IChhdXRvKiBjdXJyZW50ID0gY2hhaW4tPmhlYWQoKTsgKmN1cnJlbnQ7ICsrY3VycmVudCkgewog
ICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9ICpjdXJyZW50OwotICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlSUQuZGVjb2RlKCk7CiAgICAgICAgIG1f
Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcldhdGNocG9pbnRzW2luZGV4XS5pbnN0YWxsKHRo
aXMsIHN0cnVjdHVyZSk7CiAgICAgICAgICsraW5kZXg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKaW5kZXggMDI2MDE0NWVl
NjJmNjI2ZmJjODM5ODVkMTBlYTJiNWY5NmEwZDE4OS4uYmNmMTYzNTE2OWMwMjQ3NzI0YzcxMDM5
MTU1MzFjMTIwZDg5YzM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJvbERlc2NyaXB0aW9uVHlwZUVycm9yKTsKICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzeW1i
b2wtPnN0cnVjdHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChzeW1i
b2wtPnN0cnVjdHVyZUlEKCkpOwogICAgIGNvbnN0IGF1dG8gZGVzY3JpcHRpb24gPSBzeW1ib2wt
PmRlc2NyaXB0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdGlvbi5p
c051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgZGVzY3JpcHRpb24pKTsKIH0K
QEAgLTEwOSw3ICsxMDksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9G
dW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFN5bWJvbCog
c3ltYm9sID0gdHJ5RXh0cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKLSAgICBJbnRlZ3JpdHk6OmF1
ZGl0U3RydWN0dXJlSUQodm0sIHN5bWJvbC0+c3RydWN0dXJlSUQoKSk7CisgICAgSW50ZWdyaXR5
OjphdWRpdFN0cnVjdHVyZUlEKHN5bWJvbC0+c3RydWN0dXJlSUQoKSk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBz
eW1ib2wtPmRlc2NyaXB0aXZlU3RyaW5nKCkpKSk7CiB9CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJy
b3IpOwogCi0gICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzeW1ib2wtPnN0cnVj
dHVyZUlEKCkpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChzeW1ib2wtPnN0cnVj
dHVyZUlEKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHN5bWJvbCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyTG9nLmNwcAppbmRleCA0ZmY5ZGYwYjJlYzBhNDE2NjdmODJmNTRkYzk0ZWJkOGQ3
YjJkZDBmLi44ZWQzMzA0YmFhOTM1MjI1OTNhNDgyZmIwYjgwNjRhZDU2ZDg3NTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKFZN
JiB2bSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gbnVsbHB0cjsKICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG9TdHJ1Y3R1cmUgPSBmYWxzZTsK
ICAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBIZWFwOjpoZWFwKHZh
bHVlLmFzQ2VsbCgpKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChpZCk7CisgICAgICAgICAgICBz
dHJ1Y3R1cmUgPSBpZC5kZWNvZGUoKTsKICAgICAgICAgICAgIGF1dG8gaXRlciA9IGNhY2hlZE1v
bm9Qcm90b1NoYXBlcy5maW5kKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoaXRlciA9PSBj
YWNoZWRNb25vUHJvdG9TaGFwZXMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtleSA9
IHN0ZDo6bWFrZV9wYWlyKHN0cnVjdHVyZSwgdmFsdWUuYXNDZWxsKCkpOwpAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjp2aXNpdChBYnN0cmFjdFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIGZvciAoTG9nRW50cnkqIGVudHJ5ID0gbV9sb2dTdGFydFB0cjsgZW50cnkg
IT0gbV9jdXJyZW50TG9nRW50cnlQdHI7ICsrZW50cnkpIHsKICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZChlbnRyeS0+dmFsdWUpOwogICAgICAgICBpZiAoU3RydWN0dXJlSUQgaWQg
PSBlbnRyeS0+c3RydWN0dXJlSUQpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdmlzaXRvci5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOyAKKyAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaWQuZGVjb2RlKCk7CiAgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0YmJiYzRkNzdhYmU3NzA3NjViMzNhYjAxODdi
ZWI2ZDk0MzUxMmEyLi4xNTZkYTk0YTA4ZWExNDlkMWM3NTU0Yzc0NDM5ZDE3MTExZTRlMDM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTc0OCwxNyArNzQ4LDYgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBBTFdBWVNfSU5MSU5F
IFN0cnVjdHVyZSogZ2V0U3RydWN0dXJlKFN0cnVjdHVyZUlEIGlkKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChkZWNvbnRhbWluYXRlKGlkKSk7Ci0g
ICAgfQotCi0gICAgLy8gRklYTUU6IHJkYXI6Ly82OTAzNjg4ODogcmVtb3ZlIHRoaXMgZnVuY3Rp
b24gd2hlbiBubyBsb25nZXIgbmVlZGVkLgotICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiB0
cnlHZXRTdHJ1Y3R1cmUoU3RydWN0dXJlSUQgaWQpCi0gICAgewotICAgICAgICByZXR1cm4gaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkudHJ5R2V0KGRlY29udGFtaW5hdGUoaWQpKTsKLSAgICB9Ci0K
ICAgICB2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkoKSBjb25zdCB7IHJldHVybiBtX3N0YWNr
UG9pbnRlckF0Vk1FbnRyeTsgfQogICAgIHZvaWQgc2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHZv
aWQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVC
YXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApp
bmRleCA0ZDExODIxMDFlNTQ3YzZiYmU3ZmIxMGQ4NWFjNDY2ZTEyYzAyNmVkLi5hODY1ZjgzNzM0
NmMxNWYzYWYyNGVlNzdiZTRmZmY3ODk4OGFkZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAi
R0NBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiSGFuZGxlVHlwZXMuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVJRC5oIgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9SYXdQdHJU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvUmF3VmFsdWVUcmFpdHMuaD4KQEAgLTI0OCw0ICsyNDks
MTA0IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVLCBU
cmFpdHNVPiYgbGhzLCBjb25zdCBXcml0ZUJhcnJpCiAgICAgcmV0dXJuIGxocy5nZXQoKSA9PSBy
aHMuZ2V0KCk7CiB9CiAKK2NsYXNzIFdyaXRlQmFycmllclN0cnVjdHVyZUlEIHsKK3B1YmxpYzoK
KyAgICBjb25zdGV4cHIgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQoKSA9IGRlZmF1bHQ7CisKKyAg
ICBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRChWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIFN0
cnVjdHVyZSogdmFsdWUpCisgICAgeworICAgICAgICBzZXQodm0sIG93bmVyLCB2YWx1ZSk7Cisg
ICAgfQorCisgICAgV3JpdGVCYXJyaWVyU3RydWN0dXJlSUQoREZHOjpEZXNpcmVkV3JpdGVCYXJy
aWVyJiwgU3RydWN0dXJlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0NvbXBpbGF0
aW9uVGhyZWFkKCkpOworICAgICAgICBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlKTsKKyAg
ICB9CisKKyAgICBlbnVtIE1heUJlTnVsbFRhZyB7IE1heUJlTnVsbCB9OworICAgIFdyaXRlQmFy
cmllclN0cnVjdHVyZUlEKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiB2
YWx1ZSwgTWF5QmVOdWxsVGFnKQorICAgIHsKKyAgICAgICAgc2V0TWF5QmVOdWxsKHZtLCBvd25l
ciwgdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc2V0KFZNJiwgY29uc3QgSlNDZWxsKiBvd25l
ciwgU3RydWN0dXJlKiB2YWx1ZSk7CisKKyAgICB2b2lkIHNldE1heUJlTnVsbChWTSYsIGNvbnN0
IEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogdmFsdWUpOworCisgICAgLy8gU2hvdWxkIG9ubHkg
YmUgdXNlZCBieSBKU0NlbGwgZHVyaW5nIGVhcmx5IGluaXRpYWxpc2F0aW9uCisgICAgLy8gd2hl
biBzb21lIGJhc2ljIHR5cGVzIGFyZW4ndCB5ZXQgY29tcGxldGVseSBpbnN0YW50aWF0ZWQKKyAg
ICB2b2lkIHNldEVhcmx5VmFsdWUoVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUq
IHZhbHVlKTsKKworICAgIFN0cnVjdHVyZSogZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIC8v
IENvcHkgbV9zdHJ1Y3R1cmVJRCB0byBhIGxvY2FsIHRvIGF2b2lkIG11bHRpcGxlLXJlYWQgaXNz
dWVzLiAoU2VlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExMDg1ND4pCisgICAgICAgIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEID0gbV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWYgKHN0cnVjdHVyZUlE
KSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUlELmRlY29k
ZSgpOworICAgICAgICAgICAgdmFsaWRhdGVDZWxsKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4o
c3RydWN0dXJlKSk7CisgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFN0cnVjdHVyZSogb3BlcmF0b3Iq
KCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gbV9zdHJ1
Y3R1cmVJRDsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZUlEKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKKyAgICAgICAgdmFsaWRhdGVDZWxs
KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oc3RydWN0dXJlKSk7CisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmU7CisgICAgfQorCisgICAgU3RydWN0dXJlKiBvcGVyYXRvci0+KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gbV9zdHJ1Y3R1cmVJRDsKKyAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZUlEKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKKyAgICAgICAgdmFsaWRhdGVDZWxsKHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4oc3RydWN0dXJlKSk7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7Cisg
ICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX3N0cnVjdHVyZUlEID0g
eyB9OworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICEhbV9zdHJ1Y3R1cmVJRDsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fc3RydWN0dXJlSUQ7CisgICAg
fQorCisgICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKFN0cnVjdHVyZSogdmFsdWUpCisg
ICAgeworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICAgICAgV3JpdGVC
YXJyaWVyQ291bnRlcnM6OnVzZXNXaXRob3V0QmFycmllckZyb21DcHAuY291bnQoKTsKKyNlbmRp
ZgorICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZUlEID0geyB9
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fc3RydWN0dXJlSUQg
PSBTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHZhbHVlKTsKKyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIHVu
dmFsaWRhdGVkR2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVy
ZUlEID0gbV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWYgKHN0cnVjdHVyZUlEKQorICAgICAgICAg
ICAgcmV0dXJuIHN0cnVjdHVyZUlELmRlY29kZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBTdHJ1Y3R1cmVJRCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0
dXJlSUQ7IH0KKworcHJpdmF0ZToKKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworfTsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Xcml0ZUJhcnJpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Xcml0ZUJhcnJpZXJJbmxpbmVzLmgKaW5kZXggZjg4N2U1MzFmOTFjYWU5Y2M0MmRjZjYw
NGEzMTYyM2VkOTc3MmVmOC4uZGRhMjI0MGQ3M2Q3YzgwMWM1MGRjNDA4ZDQwYzVhMTM1NzUzNDAw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
cklubGluZXMuaApAQCAtNjEsNCArNjEsMjkgQEAgaW5saW5lIHZvaWQgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duLCBSYXdWYWx1ZVRyYWl0czxVbmtub3duPj46OnNldChWTSYgdm0sIGNvbnMKICAg
ICB2bS53cml0ZUJhcnJpZXIob3duZXIsIHZhbHVlKTsKIH0KIAoraW5saW5lIHZvaWQgV3JpdGVC
YXJyaWVyU3RydWN0dXJlSUQ6OnNldChWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIFN0cnVj
dHVyZSogdmFsdWUpCit7CisgICAgQVNTRVJUKHZhbHVlKTsKKyAgICBBU1NFUlQoIU9wdGlvbnM6
OnVzZUNvbmN1cnJlbnRKSVQoKSB8fCAhaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICB2YWxp
ZGF0ZUNlbGwocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSkpOworICAgIHNldEVhcmx5
VmFsdWUodm0sIG93bmVyLCB2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIFdyaXRlQmFycmllclN0
cnVjdHVyZUlEOjpzZXRNYXlCZU51bGwoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBTdHJ1
Y3R1cmUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgdmFsaWRhdGVDZWxsKHJl
aW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpKTsKKyAgICBzZXRFYXJseVZhbHVlKHZtLCBv
d25lciwgdmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJTdHJ1Y3R1cmVJRDo6
c2V0RWFybHlWYWx1ZShWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogdmFs
dWUpCit7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBtX3N0cnVjdHVyZUlEID0geyB9Owor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmVJRDo6
ZW5jb2RlKHZhbHVlKTsKKyAgICB2bS53cml0ZUJhcnJpZXIob3duZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8SlNDZWxsKj4odmFsdWUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCAzY2UwZGU0MjQxYzk1
OTViYTg4NjE3YjE1YjM3YmZjNTY5NzNjZTUxLi4yYWFhM2ViNzgxODRhNWIyYmQ1NmIyYzAwMjUz
YzcxMmMzNDgzNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVh
cFZlcmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlm
aWVyLmNwcApAQCAtMjMwLDE0ICsyMzAsMTAgQEAgYm9vbCBIZWFwVmVyaWZpZXI6OnZhbGlkYXRl
SlNDZWxsKFZNKiBleHBlY3RlZFZNLCBKU0NlbGwqIGNlbGwsIENlbGxQcm9maWxlKiBwcm8KIAog
ICAgICAgICAvLyAyLiBWYWxpZGF0ZSB0aGUgY2VsbCdzIHN0cnVjdHVyZQogCi0gICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsKICAgICAgICAg
aWYgKCFzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIHByaW50SGVhZGVyQW5kQ2VsbCgpOwotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJREFzVWludDMy
ID0gc3RydWN0dXJlSUQ7Ci0jZWxzZQotICAgICAgICAgICAgdWludDMyX3Qgc3RydWN0dXJlSURB
c1VpbnQzMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKTsKLSNlbmRp
ZgorICAgICAgICAgICAgdWludDMyX3Qgc3RydWN0dXJlSURBc1VpbnQzMiA9IHN0cnVjdHVyZUlE
LmJpdHMoKTsKICAgICAgICAgICAgIGRhdGFMb2coIiB3aXRoIHN0cnVjdHVyZUlEICIsIHN0cnVj
dHVyZUlEQXNVaW50MzIsICIgbWFwcyB0byBhIE5VTEwgU3RydWN0dXJlIHBvaW50ZXJcbiIpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yODUsNyArMjgxLDcgQEAg
Ym9vbCBIZWFwVmVyaWZpZXI6OnZhbGlkYXRlSlNDZWxsKFZNKiBleHBlY3RlZFZNLCBKU0NlbGwq
IGNlbGwsIENlbGxQcm9maWxlKiBwcm8KIAogICAgICAgICAvLyAzLiBWYWxpZGF0ZSB0aGUgY2Vs
bCdzIHN0cnVjdHVyZSdzIHN0cnVjdHVyZS4KICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlU3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmVTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRC5kZWNvZGUoKTsK
ICAgICAgICAgaWYgKCFzdHJ1Y3R1cmVTdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIHByaW50SGVh
ZGVyQW5kQ2VsbCgpOwogICAgICAgICAgICAgZGF0YUxvZygiIGhhcyBzdHJ1Y3R1cmUgIiwgUmF3
UG9pbnRlcihzdHJ1Y3R1cmUpLCAiIHdob3NlIHN0cnVjdHVyZSBpcyBOVUxMXG4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5jcHAKaW5kZXggMGM5OGZkNGEwY2JiODM3
ODE3MzdkNWVkM2I4ZDA0ZWJkOWM4YzNlNi4uMTJmMTkxM2FjNTE1N2M4YzNhMTBlNWM5YjljYmJk
ZmI4MTE5ZGYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVn
cml0eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5oCmluZGV4IDcxZTgxYjgyM2I1MDQ1MDQ4
ODZlOTNlMGE5NGFjYjIyYjU5M2U4ZDkuLjc2Y2U5ODhjYzhjOTFhMmM5NzBmZGI1MTk1NjEyMjcw
YTY3YWVkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3Jp
dHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5LmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNp
bmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSUQuaCIKICNp
bmNsdWRlIDx3dGYvR2lnYWNhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCkBAIC0xMDAs
OCArMTAwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0Q2VsbChWTSYgdm0sIEpTVmFsdWUg
dmFsdWUpCiAgICAgICAgIGF1ZGl0Q2VsbDxhdWRpdExldmVsPih2bSwgdmFsdWUuYXNDZWxsKCkp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRFRh
YmxlJiwgU3RydWN0dXJlSUQpOwotQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJlSUQo
Vk0mLCBTdHJ1Y3R1cmVJRCk7CitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChT
dHJ1Y3R1cmVJRCk7CiAKIH0gLy8gbmFtZXNwYWNlIEludGVncml0eQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eUlubGluZXMuaAppbmRleCBmNTA0ZGM5MzkwMjFm
NjUxNzZjYTBlNTI4ZmMzNzJkOTRjODI5YjJhLi5jYTkzZmQwYmIwNzg3ZjYwMGM1NWExYWYxNDA1
ZmU5ZDMzYzhiNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50
ZWdyaXR5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3Jp
dHlJbmxpbmVzLmgKQEAgLTczLDE0ICs3MywxMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRD
ZWxsUmFuZG9tbHkoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCiAgICAgICAgIGF1ZGl0Q2VsbEZ1bGx5
KHZtLCBjZWxsKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJlSUQoU3Ry
dWN0dXJlSURUYWJsZSYgdGFibGUsIFN0cnVjdHVyZUlEIGlkKQotewotICAgIHRhYmxlLnZhbGlk
YXRlKGlkKTsKLX0KIAotQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJlSUQoVk0mIHZt
LCBTdHJ1Y3R1cmVJRCBpZCkKK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFN0
cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQogewotICAgIGF1ZGl0U3RydWN0dXJlSUQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCksIGlkKTsKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlSUQpOwor
I2lmIENQVShBRERSRVNTNjQpCisgICAgQVNTRVJUKHN0cnVjdHVyZUlELmJpdHMoKSA8PSBzdHJ1
Y3R1cmVIZWFwQWRkcmVzc1NpemUgKyBTdHJ1Y3R1cmVJRDo6bnVrZWRTdHJ1Y3R1cmVJREJpdCk7
CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW50ZWdyaXR5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggZDNmYTgwY2ExZGI5NTBlZGY0YjEwYzJk
NWEzZTVmYjUzNTNmZmYyNC4uYjU4OTAxNDY0ODY4NjUwMjNiYTE1ODc5YmQ2M2M4NDE4ZGM4OTVh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMzU4
Miw3ICszNTgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uR2V0U3RydWN0
dXJlVHJhbnNpdGlvbkxpc3QsIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvKiBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmVzW3N0cnVjdHVyZXMuc2l6ZSgpIC0gaSAtIDFdOwotICAgICAgICBy
ZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKHN0cnVjdHVyZS0+aWQoKSkpOworICAg
ICAgICByZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKHN0cnVjdHVyZS0+aWQoKS5i
aXRzKCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAg
ICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgSlNWYWx1ZShzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25PZmZzZXQoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpA
QCAtNDAwOSw3ICs0MDA5LDcgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAKICAgICBhZGRGdW5jdGlvbih2bSwgImVuc3VyZUFycmF5U3RvcmFnZSIsIGZ1bmN0aW9u
RW5zdXJlQXJyYXlTdG9yYWdlLCAxKTsKIAotICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0
V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0RG9p
bmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKKyAgICBtX29iamVjdERvaW5nU2lkZUVmZmVj
dFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZUlELnNldCh2bSwgdGhpcywgT2Jq
ZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIAogdm9pZCBKU0RvbGxhclZN
OjphZGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMp
CkBAIC00MDMxLDcgKzQwMzEsNyBAQCB2b2lkIEpTRG9sbGFyVk06OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU0RvbGxhclZNKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRG9sbGFyVk0qPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdERvaW5nU2lkZUVm
ZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZUlEKTsKIH0KIAogREVGSU5F
X1ZJU0lUX0NISUxEUkVOKEpTRG9sbGFyVk0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmgKaW5kZXggMGY1ZDhhZDM1OWRiNjUyNGIwMDA0YzUxNmI4NTAxNjNmZTc3NzAz
Ni4uMDNmZTBhOTYwM2U0MGUzZDI3MDcwNzA0ODA2ZWU4MDJlN2M1N2MxOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogb2JqZWN0
RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNT
dHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG9iamVjdERvaW5nU2lkZUVmZmVjdFB1
dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fb2JqZWN0RG9p
bmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlSUQuZ2V0KCk7
IH0KICAgICAKIHByaXZhdGU6CiAgICAgSlNEb2xsYXJWTShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgREVDTEFSRV9WSVNJVF9D
SElMRFJFTjsKIAotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlOworICAgIFdyaXRlQmFy
cmllclN0cnVjdHVyZUlEIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RT
bG90U3RhdHVzU3RydWN0dXJlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAK
aW5kZXggMmI5Mjc1OTNiNDNmNDYwYThhYWI3MTYxMDYwZTVkZDc0ZGI0N2I2Zi4uYzc4NzM3M2Y3
YzkyZGFiZjRkNDEwM2NhYjdkY2U4M2Y4YTMwMmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTI2Niw3ICsy
NjYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlG
dW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICAgICAgICAgIHNsb3dQYXRo
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHNjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAg
ICAgIHN0YWNrTGltaXRHUFJJc0Nsb2JiZXJlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSLCBzdGFja0xpbWl0
R1BSKTsKKyAgICAgICAgICAgICAgICBqaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHNjcmF0Y2hH
UFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgc2Ny
YXRjaEdQUik7CiAKICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8
V2ViQXNzZW1ibHlGdW5jdGlvbj46OnZhbHVlLCAiV2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBl
cyBiZWxvdyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCmluZGV4IGM3YjNkNmY3ZTk0NTExYzE4
YWRmZDdhNzZjODkyMTk2OTA2NGU5NWMuLjE4YTRkMWY5MWRmZmU0ZDQ4NWJjNjdjOTkxMWJiODA0
ZDIzOWNkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseUdsb2JhbCogZ2V0R2xvYmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgICAgIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJleHBlY3RlZCB8dGhpc3wgdmFsdWUgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgV2ViQXNz
ZW1ibHkuR2xvYmFsIl9zKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBJ
bnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHJlc3VsdC0+c3RydWN0dXJlSUQoKSk7Cisg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHJlc3VsdC0+c3RydWN0dXJlSUQoKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT1NBbGxv
Y2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKaW5kZXggMjY4OGE0ZWZkZjgx
N2RiN2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNC4uM2RlYTNkODk0MjQ2MTVhMWJkZmYxOWNjMWEy
ZjBmOGIxNWI4NTBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCkBAIC0zOSwxMSArMzksMTQgQEAgcHVi
bGljOgogICAgICAgICBKU0pJVENvZGVQYWdlcyA9IFZNX1RBR19GT1JfRVhFQ1VUQUJMRUFMTE9D
QVRPUl9NRU1PUlksCiAgICAgfTsKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJp
YzsgcmVzZXJ2ZVVuY29tbWl0dGVkIGFsbG9jYXRlcyBWTSBpbiBhbiB1bmNvbW1pdHRlZCBzdGF0
ZSwKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVVbmNvbW1pdHRl
ZChBbGlnbmVkKSBhbGxvY2F0ZXMgVk0gaW4gYW4gdW5jb21taXR0ZWQgc3RhdGUsCiAgICAgLy8g
cmVsZWFzZURlY29tbWl0dGVkIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxs
b2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAotICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBh
bGwgY3VycmVudGx5IGJlIGluIGEgZGVjb21taXR0ZWQgc3RhdGUuIHJlc2VydmVVbmNvbW1pdHRl
ZCByZXR1cm5zIHRvCisgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4g
YSBkZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2ZVVuY29tbWl0dGVkKEFsaWduZWQpIHJldHVybnMg
dG8KICAgICAvLyB5b3UgbWVtb3J5IHRoYXQgaXMgemVyb2VkLgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtu
b3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwg
Ym9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZh
bHNlKTsKKyAgICAvLyBUaGlzIGd1YXJhbnRlZXMgdGhlIG1lbW9yeSB3aWxsIGJlIGFsaWduZWQg
dG8gYSBtdWx0aXBsZSBvZiB0aGUgcmVxdWVzdGVkIHNpemUuIFRoZSByZXF1ZXN0ZWQKKyAgICAv
LyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYW5kIGdyZWF0ZXIgdGhhbiB0aGUgc3lzdGVt
IHBhZ2Ugc2l6ZS4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHRyeVJlc2Vy
dmVVbmNvbW1pdHRlZEFsaWduZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFi
bGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVf
dCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9y
IGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwIGIvU291cmNlL1dU
Ri93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKaW5kZXggNmNlZmQyZWUyZDMxMDVjMmQ0
MDQ4NWY2OTY1ZmViYTg4NDViNDMzZS4uNDE2YTcwMDc2YTQyM2E0MjM0ZDYwZGUyMDhkZjk0ODAw
ZTkzOTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy9tbWFuLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAogI2lmIEVOQUJMRShKSVRfQ0FHRSkKQEAg
LTQzLDM2ICs0NCwxMyBAQAogI2VuZGlmIC8vIE9TKERBUldJTikKICNlbmRpZiAvLyBFTkFCTEUo
SklUX0NBR0UpCiAKLW5hbWVzcGFjZSBXVEYgewotCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFn
ZXMpCi17Ci0jaWYgT1MoTElOVVgpCi0gICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKLSAgICBVTlVT
RURfUEFSQU0od3JpdGFibGUpOwotICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKLSAgICBV
TlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwotICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1
YXJkUGFnZXMpOwotCi0gICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRlcywgUFJPVF9OT05F
LCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwotICAgIGlm
IChyZXN1bHQgPT0gTUFQX0ZBSUxFRCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBtYWR2aXNlKHJl
c3VsdCwgYnl0ZXMsIE1BRFZfRE9OVE5FRUQpOwotI2Vsc2UKLSAgICB2b2lkKiByZXN1bHQgPSBy
ZXNlcnZlQW5kQ29tbWl0KGJ5dGVzLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENh
Z2VFbmFibGVkLCBpbmNsdWRlc0d1YXJkUGFnZXMpOwotI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNF
KQotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgLy8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUg
dGhlbiBjb21taXQiIG1vZGVsLCB3ZSBoYXZlIHRvIGluaXRpYWxseSBkZWNvbW1pdC4KLSAgICAg
ICAgd2hpbGUgKG1hZHZpc2UocmVzdWx0LCBieXRlcywgTUFEVl9GUkVFX1JFVVNBQkxFKSA9PSAt
MSAmJiBlcnJubyA9PSBFQUdBSU4pIHsgfQotICAgIH0KLSNlbmRpZgotCisjaWYgT1MoREFSV0lO
KQorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvTWFjaFZNU1BJLmg+CiAjZW5kaWYKIAotICAgIHJl
dHVybiByZXN1bHQ7Ci19CituYW1lc3BhY2UgV1RGIHsKIAotdm9pZCogT1NBbGxvY2F0b3I6OnJl
c2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVkLCBib29sIGluY2x1ZGVzR3VhcmRQ
YWdlcykKK3N0YXRpYyB2b2lkKiB0cnlSZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgT1NB
bGxvY2F0b3I6OlVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJv
b2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQogewogICAgIC8vIEFs
bCBQT1NJWCByZXNlcnZhdGlvbnMgc3RhcnQgb3V0IGxvZ2ljYWxseSBjb21taXR0ZWQuCiAgICAg
aW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQ7CkBAIC0xMDAsNyArNzgsNyBAQCB2b2lkKiBPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29s
IHdyaXRhYmxlLCBibwogICAgIGludCBmZCA9IC0xOwogI2VuZGlmCiAKLSAgICB2b2lkKiByZXN1
bHQgPSAwOworICAgIHZvaWQqIHJlc3VsdCA9IG51bGxwdHI7CiAjaWYgKE9TKERBUldJTikgJiYg
Q1BVKFg4Nl82NCkpCiAgICAgaWYgKGV4ZWN1dGFibGUpIHsKICAgICAgICAgQVNTRVJUKGluY2x1
ZGVzR3VhcmRQYWdlcyk7CkBAIC0xMjIsMTIgKzEwMCw4IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpy
ZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
IGJvCiAjZW5kaWYKIAogICAgIHJlc3VsdCA9IG1tYXAocmVzdWx0LCBieXRlcywgcHJvdGVjdGlv
biwgZmxhZ3MsIGZkLCAwKTsKLSAgICBpZiAocmVzdWx0ID09IE1BUF9GQUlMRUQpIHsKLSAgICAg
ICAgaWYgKGV4ZWN1dGFibGUpCi0gICAgICAgICAgICByZXN1bHQgPSAwOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBDUkFTSCgpOwotICAgIH0KKyAgICBpZiAocmVzdWx0ID09IE1BUF9GQUlM
RUQpCisgICAgICAgIHJlc3VsdCA9IG51bGxwdHI7CiAgICAgaWYgKHJlc3VsdCAmJiBpbmNsdWRl
c0d1YXJkUGFnZXMpIHsKICAgICAgICAgLy8gV2UgdXNlIG1tYXAgdG8gcmVtYXAgdGhlIGd1YXJk
cGFnZXMgcmF0aGVyIHRoYW4gdXNpbmcgbXByb3RlY3QgYXMKICAgICAgICAgLy8gbXByb3RlY3Qg
cmVzdWx0cyBpbiBtdWx0aXBsZSByZWZlcmVuY2VzIHRvIHRoZSBjb2RlIHJlZ2lvbi4gVGhpcwpA
QCAtMTM5LDYgKzExMyw5NiBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChz
aXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBibwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkKiB0cnlSZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5
dGVzLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0
YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit7Cisj
aWYgT1MoTElOVVgpCisgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKKyAgICBVTlVTRURfUEFSQU0o
d3JpdGFibGUpOworICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKKyAgICBVTlVTRURfUEFS
QU0oaml0Q2FnZUVuYWJsZWQpOworICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMp
OworCisgICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9S
RVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworICAgIGlmIChyZXN1bHQg
IT0gTUFQX0ZBSUxFRCkKKyAgICAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBNQURWX0RPTlRO
RUVEKTsKKyNlbHNlCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5UmVzZXJ2ZUFuZENvbW1pdChieXRl
cywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgaW5jbHVkZXNH
dWFyZFBhZ2VzKTsKKyNpZiBIQVZFKE1BRFZfRlJFRV9SRVVTRSkKKyAgICBpZiAocmVzdWx0KSB7
CisgICAgICAgIC8vIFRvIHN1cHBvcnQgdGhlICJyZXNlcnZlIHRoZW4gY29tbWl0IiBtb2RlbCwg
d2UgaGF2ZSB0byBpbml0aWFsbHkgZGVjb21taXQuCisgICAgICAgIHdoaWxlIChtYWR2aXNlKHJl
c3VsdCwgYnl0ZXMsIE1BRFZfRlJFRV9SRVVTQUJMRSkgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlO
KSB7IH0KKyAgICB9CisjZW5kaWYKKworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5h
YmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit7CisgICAgdm9pZCogcmVzdWx0ID0gdHJ5
UmVzZXJ2ZVVuY29tbWl0dGVkKGJ5dGVzLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGpp
dENhZ2VFbmFibGVkLCBpbmNsdWRlc0d1YXJkUGFnZXMpOworICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCogT1NBbGxvY2F0b3I6OnRyeVJl
c2VydmVVbmNvbW1pdHRlZEFsaWduZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3
cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVkLCBib29sIGluY2x1
ZGVzR3VhcmRQYWdlcykKK3sKKyAgICBBU1NFUlQoaGFzT25lQml0U2V0KGJ5dGVzKSAmJiBieXRl
cyA+PSBwYWdlU2l6ZSgpKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKKyAgICBVTlVTRURfUEFSQU0odXNhZ2UpOyAvLyBOb3Qgc3VwcG9ydGVkIGZvciBt
YWNoIEFQSS4KKyAgICBBU1NFUlRfVU5VU0VEKGluY2x1ZGVzR3VhcmRQYWdlcywgIWluY2x1ZGVz
R3VhcmRQYWdlcyk7CisgICAgQVNTRVJUX1VOVVNFRChqaXRDYWdlRW5hYmxlZCwgIWppdENhZ2VF
bmFibGVkKTsgLy8gTm90IHN1cHBvcnRlZCBmb3IgbWFjaCBBUEkuCisgICAgdm1fcHJvdF90IHBy
b3RlY3Rpb25zID0gVk1fUFJPVF9SRUFEOworICAgIGlmICh3cml0YWJsZSkKKyAgICAgICAgcHJv
dGVjdGlvbnMgfD0gVk1fUFJPVF9XUklURTsKKyAgICBpZiAoZXhlY3V0YWJsZSkKKyAgICAgICAg
cHJvdGVjdGlvbnMgfD0gVk1fUFJPVF9FWEVDVVRFOworCisgICAgY29uc3Qgdm1faW5oZXJpdF90
IGNoaWxkUHJvY2Vzc0luaGVyaXRhbmNlID0gVk1fSU5IRVJJVF9ERUZBVUxUOworICAgIGNvbnN0
IGJvb2wgY29weSA9IGZhbHNlOworICAgIGNvbnN0IGludCBmbGFncyA9IFZNX0ZMQUdTX0FOWVdI
RVJFOworCisgICAgdm9pZCogYWxpZ25lZCA9IG51bGxwdHI7CisgICAga2Vybl9yZXR1cm5fdCBy
ZXN1bHQgPSBtYWNoX3ZtX21hcChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PG1h
Y2hfdm1fYWRkcmVzc190Kj4oJmFsaWduZWQpLCBieXRlcywgYnl0ZXMgLSAxLCBmbGFncywgTUVN
T1JZX09CSkVDVF9OVUxMLCAwLCBjb3B5LCBwcm90ZWN0aW9ucywgcHJvdGVjdGlvbnMsIGNoaWxk
UHJvY2Vzc0luaGVyaXRhbmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09
IEtFUk5fU1VDQ0VTUyB8fCAhYWxpZ25lZCk7CisjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0UpCisg
ICAgaWYgKGFsaWduZWQpIHsKKyAgICAgICAgLy8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUgdGhl
biBjb21taXQiIG1vZGVsLCB3ZSBoYXZlIHRvIGluaXRpYWxseSBkZWNvbW1pdC4KKyAgICAgICAg
d2hpbGUgKG1hZHZpc2UoYWxpZ25lZCwgYnl0ZXMsIE1BRFZfRlJFRV9SRVVTQUJMRSkgPT0gLTEg
JiYgZXJybm8gPT0gRUFHQUlOKSB7IH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBhbGln
bmVkOworI2Vsc2UKKyAgICAvLyBEb3VibGUgdGhlIHNpemUgc28gd2UgY2FuIGVuc3VyZSBlbm91
Z2ggbWFwcGVkIG1lbW9yeSB0byBnZXQgYW4gYWxpZ25lZCBzdGFydC4KKyAgICBzaXplX3QgbWFw
cGVkU2l6ZSA9IGJ5dGVzICogMjsKKyAgICBjaGFyKiBtYXBwZWQgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPih0cnlSZXNlcnZlVW5jb21taXR0ZWQobWFwcGVkU2l6ZSwgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgaW5jbHVkZXNHdWFyZFBhZ2VzKSk7CisgICAg
Y2hhciogbWFwcGVkRW5kID0gbWFwcGVkICsgbWFwcGVkU2l6ZTsKKworICAgIGNoYXIqIGFsaWdu
ZWQgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihyb3VuZFVwVG9NdWx0aXBsZU9mKGJ5dGVzLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obWFwcGVkKSkpOworICAgIGNoYXIqIGFsaWduZWRF
bmQgPSBhbGlnbmVkICsgYnl0ZXM7CisKKyAgICBSRUxFQVNFX0FTU0VSVChhbGlnbmVkRW5kIDw9
IG1hcHBlZEVuZCk7CisKKyAgICBpZiAoc2l6ZV90IGxlZnRFeHRyYSA9IGFsaWduZWQgLSBtYXBw
ZWQpCisgICAgICAgIHJlbGVhc2VEZWNvbW1pdHRlZChtYXBwZWQsIGxlZnRFeHRyYSk7CisKKyAg
ICBpZiAoc2l6ZV90IHJpZ2h0RXh0cmEgPSBtYXBwZWRFbmQgLSBhbGlnbmVkRW5kKQorICAgICAg
ICByZWxlYXNlRGVjb21taXR0ZWQoYWxpZ25lZEVuZCwgcmlnaHRFeHRyYSk7CisKKyAgICByZXR1
cm4gYWxpZ25lZDsKKyNlbmRpZgorfQorCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1
dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQorewor
ICAgIHZvaWQqIHJlc3VsdCA9IHRyeVJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0
YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcyk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0IHx8IGV4ZWN1dGFibGUpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIHZvaWQgT1NBbGxvY2F0b3I6OmNvbW1pdCh2b2lkKiBhZGRyZXNzLCBzaXplX3Qg
Ynl0ZXMsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKIHsKICNpZiBPUyhMSU5VWCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCmluZGV4IDk0ZGZjNzYxZjc4MTZmZjBh
OTVmN2I1NjA3ODVjMDMyZmM3N2M1MzUuLmRiNGEyMmFmZjY4ZjQ4YmJjNTVmMDExZGY5NjBkZGE4
NTAyNTAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcApAQCAtNTIsNiAr
NTIsMjQgQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0
ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGUKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Cit2b2lkKiBPU0FsbG9jYXRvcjo6dHJ5UmVzZXJ2ZVVuY29tbWl0dGVkQWxpZ25lZChzaXplX3Qg
Ynl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2ws
IGJvb2wpCit7CisgICAgQVNTRVJUKGhhc09uZUJpdFNldChieXRlcykgJiYgYnl0ZXMgPj0gcGFn
ZVNpemUoKSk7CisgICAgaWYgKFZpcnR1YWxBbGxvYzJQdHIoKSkgeworICAgICAgICBNRU1fQURE
UkVTU19SRVFVSVJFTUVOVFMgYWRkcmVzc1JlcXMgPSB7IH07CisgICAgICAgIE1FTV9FWFRFTkRF
RF9QQVJBTUVURVIgcGFyYW0gPSB7IH07CisgICAgICAgIGFkZHJlc3NSZXFzLkFsaWdubWVudCA9
IGJ5dGVzOworICAgICAgICBwYXJhbS5UeXBlID0gTWVtRXh0ZW5kZWRQYXJhbWV0ZXJBZGRyZXNz
UmVxdWlyZW1lbnRzOworICAgICAgICBwYXJhbS5Qb2ludGVyID0gJmFkZHJlc3NSZXFzOworICAg
ICAgICB2b2lkKiByZXN1bHQgPSBWaXJ0dWFsQWxsb2MyUHRyKCkobnVsbHB0ciwgbnVsbHB0ciwg
Ynl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSwgJnBh
cmFtLCAxKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkKiByZXN1
bHQgPSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9u
KHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CisgICAgY2hhciogYWxpZ25lZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHJvdW5kVXBUb011bHRpcGxlT2YoYnl0ZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihyZXN1bHQpKSk7CisgICAgcmV0dXJuIGFsaWduZWQ7Cit9CisKIHZvaWQqIE9T
QWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQg
PSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFIHwgTUVNX0NPTU1JVCwg
cHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>