<?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>125025</bug_id>
          
          <creation_ts>2013-11-29 20:59:23 -0800</creation_ts>
          <short_desc>Finally remove those DFG_ENABLE things</short_desc>
          <delta_ts>2013-11-30 09:21:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>955045</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-29 20:59:23 -0800</bug_when>
    <thetext>Using C preprocessor macros to control the internal debugging functionality of a compiler is insane.  It means that the debug support isn&apos;t tested all the time, it isn&apos;t even built all the time, and it makes it challenging to read the code because of a bunch of #if&apos;s littered in the most complex places (after all it&apos;s the most complex algorithms that need debug prints).

We now have Options::verboseCompilation and friends, which doesn&apos;t suffer as many of those problems.

We should get rid of the old DFG_ENABLE preprocessor flags, because this will cleanse the codebase of the insanity and it will guide would-be DFG hackers towards the right way of getting debug dumps (i.e. the commandline options).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955046</commentid>
    <comment_count>1</comment_count>
      <attachid>218085</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-29 21:03:19 -0800</bug_when>
    <thetext>Created attachment 218085
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955049</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-29 21:13:57 -0800</bug_when>
    <thetext>rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955050</commentid>
    <comment_count>3</comment_count>
      <attachid>218085</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-29 21:30:58 -0800</bug_when>
    <thetext>Comment on attachment 218085
the patch

Attachment 218085 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/39978148</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955051</commentid>
    <comment_count>4</comment_count>
      <attachid>218085</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-29 21:37:20 -0800</bug_when>
    <thetext>Comment on attachment 218085
the patch

Attachment 218085 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/39918130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955053</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-29 21:46:35 -0800</bug_when>
    <thetext>The build fails are because I forgot to give this release build love; the fixes are all trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955054</commentid>
    <comment_count>6</comment_count>
      <attachid>218087</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-29 21:53:02 -0800</bug_when>
    <thetext>Created attachment 218087
patch for landing

This one should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955068</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-30 09:21:05 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/159886</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218085</attachid>
            <date>2013-11-29 21:03:19 -0800</date>
            <delta_ts>2013-11-29 21:53:02 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>70742</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAxMy0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZpbmFsbHkgcmVtb3ZlIHRob3NlIERGR19FTkFCTEUgdGhpbmdzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUwMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcmVtb3ZlcyBhIGJ1
bmNoIG9mIHVudXNlZCBhbmQgdW50ZXN0ZWQgaW5zYW5pdHkuCisKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRhbGx5RnJlcXVlbnRF
eGl0U2l0ZXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjpy
dW4pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmluamVjdExhenlPcGVyYW5kU3BlY3VsYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcnJheU1vZGVDb25zaWRlcmluZ1Ns
b3dQYXRoKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlRGl2U2FmZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChKU0M6OkRGRzo6cGFyc2UpOgorICAgICAgICAq
IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
RkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBs
aWZpY2F0aW9uUGhhc2U6OmNvbnZlcnRUb0p1bXApOgorICAgICAgICAoSlNDOjpERkc6OkNGR1Np
bXBsaWZpY2F0aW9uUGhhc2U6OmZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMpOgorICAgICAgICAq
IGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmVuZElu
ZGV4Rm9yUHVyZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmVsaW1pbmF0ZUly
cmVsZXZhbnRQaGFudG9tQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpz
ZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmVsaW1pbmF0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAg
KiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6dmVyYm9zZUNvbXBpbGF0aW9u
RW5hYmxlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bG9nQ29tcGlsYXRpb25DaGFuZ2VzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpzaG91bGREdW1wR3JhcGhBdEVhY2hQaGFzZSk6CisgICAgICAgICog
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25z
dGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6aW5qZWN0SW50MzJUb0RvdWJsZU5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbCk6CisgICAgICAgIChK
U0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVG9TdWNjZXNzb3JzKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpjb21waWxlQm9keSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxpbmsp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Jbmpl
Y3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
OjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpw
cm9wYWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
Ojpwcm9wYWdhdGVGb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZTo6cHJvcGFnYXRlQmFja3dhcmQpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpkb1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAq
IGRmZy9ERkdTY29yZUJvYXJkLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2NvcmVCb2FyZDo6dXNl
KToKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTbG93UGF0aEdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnRlcm1p
bmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6cnVuU2xvd1BhdGhHZW5lcmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDdXJyZW50QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVF
dmVudFN0cmVhbS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudFN0cmVhbTo6
cmVjb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudFN0cmVhbTo6YXBwZW5kQW5kTG9nKToKKyAg
ICAgICAgKiBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgor
CiAyMDEzLTExLTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
RlRMIElDIHNob3VsZCBub3AtZmlsbCB0byBtYWtlIHVwIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g
dGhlIGFjdHVhbCBJQyBzaXplIGFuZCB0aGUgcmVxdWVzdGVkIHBhdGNocG9pbnQgc2l6ZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYwLDEwICszMjYwLDYgQEAgdm9pZCBDb2RlQmxvY2s6
OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
IWV4aXQuY29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUocHJvZmlsZWRCbG9jaykpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERF
QlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nKCJPU1IgZXhpdCAjIiwgaSwgIiAoYmMj
IiwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgIiwgIiwgZXhpdC5tX2tpbmQsICIp
IGZvciAiLCAqdGhpcywgIiBvY2N1cnJlZCBmcmVxdWVudGx5OiBjb3VudGluZyBhcyBmcmVxdWVu
dCBleGl0IHNpdGUuXG4iKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTMyNzksMTAgKzMyNzUsNiBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4
aXRTaXRlcygpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhpdC5jb25zaWRlckFk
ZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZEJsb2NrKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICAgICAgICAgIGRhdGFMb2coIk9TUiBleGl0ICMiLCBpLCAiIChiYyMiLCBleGl0Lm1fY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4LCAiLCAiLCBleGl0Lm1fa2luZCwgIikgZm9yICIsICp0aGlzLCAi
IG9jY3VycmVkIGZyZXF1ZW50bHk6IGNvdW50aW5nIGFzIGZyZXF1ZW50IGV4aXQgc2l0ZS5cbiIp
OwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzIsNTMgKzM3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgIGRhdGFMb2dGKCJBcmd1bWVudHMgYWxpYXNpbmcgc3RhdGVzOlxuIik7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNj
ZXNzRGF0YSA9ICZtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ldOwotICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgZGF0YUxvZygiICAgciIsIHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9j
YWwoKSwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3JhcGgsIHZhcmlhYmxlQWNjZXNz
RGF0YSksICIpOiAiKTsKLSAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2Fw
dHVyZWQoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2FwdHVyZWQiKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0YSA9
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFj
Y2Vzc0RhdGEpLT52YWx1ZTsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5jYWxsQ29udGV4dElzVmFsaWQoKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWZpcnN0KQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IiwgIik7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJIYXZlIENhbGwgQ29udGV4dDog
JXAiLCBkYXRhLmNhbGxDb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMo
ZGF0YS5jYWxsQ29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiIChE
b2VzIE5vdCBDcmVhdGUgQXJndW1lbnRzKSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoZGF0YS5hcmd1bWVudHNBc3NpZ25tZW50SXNWYWxpZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
RigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkFyZ3VtZW50cyBBc3NpZ25t
ZW50IElzIFZhbGlkIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghZGF0YS5lc2NhcGVzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkRvZXMgTm90IEVzY2Fw
ZSIpOwotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoIWZpcnN0KQotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nRigiLCAiKTsKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhkYXRhLmNhbGxD
b250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJWQUxJRCIpOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigi
SU5WQUxJRCAoZHVlIHRvIGFyZ3VtZW50IGNyZWF0aW9uKSIpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiSU5WQUxJRCAoZHVlIHRvIGJhZCB2
YXJpYWJsZSB1c2UpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkYXRhTG9nRigiXG4i
KTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICAKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0lu
ZGV4KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw5ICsyNTUsNiBA
QCBwcml2YXRlOgogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAgICAgIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5IGtleShtX2N1cnJlbnRJbmRleCwgbm9kZS0+bG9jYWwoKSk7CiAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX2xhenlPcGVy
YW5kcy5wcmVkaWN0aW9uKGxvY2tlciwga2V5KTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgICAgIGRhdGFMb2coIkxhenkgb3BlcmFuZCBbQCIsIG5vZGUtPmluZGV4KCksICIs
IGJjIyIsIG1fY3VycmVudEluZGV4LCAiLCByIiwgbm9kZS0+bG9jYWwoKSwgIl0gcHJlZGljdGlv
bjogIiwgU3BlY3VsYXRpb25EdW1wKHByZWRpY3Rpb24pLCAiXG4iKTsKLSNlbmRpZgogICAgICAg
ICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcmVkaWN0aW9uKTsKICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtODUyLDEyICs4NDksNiBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrKTsKICAgICAgICAgCi0jaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBpZiAobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5udW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJTbG93IGNhc2UgcHJvZmlsZSBmb3IgYmMjJXU6ICV1XG4iLCBtX2N1
cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlcik7Ci0gICAg
ICAgIGRhdGFMb2dGKCJBcnJheSBwcm9maWxlIGZvciBiYyMldTogJXUgJXMlc1xuIiwgbV9jdXJy
ZW50SW5kZXgsIHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpLCBwcm9maWxlLT5z
dHJ1Y3R1cmVJc1BvbHltb3JwaGljKGxvY2tlcikgPyAiIChwb2x5bW9ycGhpYykiIDogIiIsIHBy
b2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpID8gIiAobWF5IGludGVy
Y2VwdCkiIDogIiIpOwotI2VuZGlmCi0gICAgICAgIAogICAgICAgICBib29sIG1ha2VTYWZlID0K
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9U
YWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCiAgICAgICAgICAgICB8fCBwcm9maWxlLT5vdXRP
ZkJvdW5kcyhsb2NrZXIpOwpAQCAtODk5LDE4ICs4OTAsMTEgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBjYXNlIEFyaXRoTXVsOgogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKG1fY3VycmVudEluZGV4KQot
ICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkgewotI2lmIERGR19FTkFCTEUoREVCVUdf
VkVSQk9TRSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiTWFraW5nIEFyaXRoTXVsIEAldSB0
YWtlIGRlZXBlc3Qgc2xvdyBjYXNlLlxuIiwgbm9kZS0+aW5kZXgoKSk7Ci0jZW5kaWYKKyAgICAg
ICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpCiAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3cgfCBOb2RlTWF5TmVnWmVybyk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0
aXZlWmVybykpIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoIk1ha2luZyBBcml0aE11bCBAJXUgdGFrZSBmYXN0ZXIgc2xvdyBjYXNlLlxu
Iiwgbm9kZS0+aW5kZXgoKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGVsc2UgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50
SW5kZXgpCisgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKICAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvKTsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkBAIC05MzYs
MTAgKzkyMCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkK
ICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMjJXUg
YmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBleGl0IHByb2Zp
bGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobm9kZS0+b3AoKSksIG5vZGUtPmluZGV4
KCksIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnNw
ZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1f
Y291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKTsKLSNlbmRpZgotICAgICAg
ICAKICAgICAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIG1ha2UgdGhpcyBt
b3JlIGdyYW51bGFyLiBUaGUgREZHIGNlcnRhaW5seSBjYW4KICAgICAgICAgLy8gZGlzdGluZ3Vp
c2ggYmV0d2VlbiBuZWdhdGl2ZSB6ZXJvIGFuZCBvdmVyZmxvdyBpbiBpdHMgZXhpdCBwcm9maWxl
cy4KICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3cgfCBOb2RlTWF5TmVn
WmVybyk7CkBAIC0xMTYwLDEwICsxMTQwLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbChJbnN0cnVjdAogICAgICAgICBjYWxsTGlua1N0YXR1cy5zZXRIYXNCYWRFeGVjdXRhYmxl
RXhpdFNpdGUobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkRXhlY3V0YWJsZSkpOwogICAgIH0KICAgICAKLSNpZiBERkdfRU5BQkxF
KERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZygiRm9yIGNhbGwgYXQgYmMjIiwgbV9jdXJyZW50
SW5kZXgsICI6ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsKLSNlbmRpZgotICAgIAogICAgIGlm
ICghY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgewogICAgICAgICAvLyBPZGRseSwgdGhp
cyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdpdGggY2FsbHMgdGhhdCBi
ZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAgICAgLy8gdGhhdCB3ZSBj
YW5ub3Qgb3B0aW1pemUgdGhlbS4KQEAgLTEyODcsMTAgKzEyNjMsNiBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgaWYgKCFjYW5JbmxpbmVGdW5jdGlvbkZv
cihjb2RlQmxvY2ssIGtpbmQsIGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgZGF0YUxvZ0YoIklubGluaW5nIGV4ZWN1dGFibGUgJXAuXG4iLCBleGVjdXRhYmxlKTsKLSNl
bmRpZgotICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFy
ZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCiAgICAgLy8gYnkg
Y2hlY2tpbmcgdGhlIGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBh
cmd1bWVudHMgYW5kIHRoZSBjYWxsZWUKICAgICAvLyBhcmUgZmx1c2hlZC4KQEAgLTEzODIsOSAr
MTM1NCw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAg
ICAgLy8gSWYgd2UgY3JlYXRlZCBuZXcgYmxvY2tzIHRoZW4gdGhlIGxhc3QgYmxvY2sgbmVlZHMg
bGlua2luZywgYnV0IGluIHRoZQogICAgICAgICAvLyBjYWxsZXIuIEl0IGRvZXNuJ3QgbmVlZCB0
byBiZSBsaW5rZWQgdG8sIGJ1dCBpdCBuZWVkcyBvdXRnb2luZyBsaW5rcy4KICAgICAgICAgaWYg
KCFpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Ci0jaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZ0YoIlJlYXNjcmliaW5n
IGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVwIGZyb20gYmMjJXUgdG8gYmMjJXUgKGlubGluZSBy
ZXR1cm4gY2FzZSkuXG4iLCBsYXN0QmxvY2ssIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiwgbV9j
dXJyZW50SW5kZXgpOwotI2VuZGlmCiAgICAgICAgICAgICAvLyBGb3IgZGVidWdnaW5nIHB1cnBv
c2VzLCBzZXQgdGhlIGJ5dGVjb2RlQmVnaW4uIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgbWF0dGVy
CiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWlsZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdp
bGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0CiAgICAgICAgICAgICAvLyBpbiB0
aGUgbGlua2VyJ3MgYmluYXJ5IHNlYXJjaC4KQEAgLTEzOTMsMTAgKzEzNjIsNiBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKLSAgICAgICAgCi0j
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiRG9uZSBpbmxp
bmluZyBleGVjdXRhYmxlICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlvbiBhdCBlcGlsb2d1
ZS5cbiIsIGV4ZWN1dGFibGUpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICAKQEAgLTE0MDcsMTAgKzEzNzIsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhOb2RlCiAgICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9y
IHRoZSBjb250aW51YXRpb24gYXQgdGhlIGNhbGxlci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4g
YmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50
cywgbV9udW1Mb2NhbHMpKTsKIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBk
YXRhTG9nRigiQ3JlYXRpbmcgaW5saW5lIGVwaWxvZ3VlIGJhc2ljIGJsb2NrICVwLCAjJXp1IGZv
ciAlcCBiYyMldSBhdCBpbmxpbmUgZGVwdGggJXUuXG4iLCBibG9jay5nZXQoKSwgbV9ncmFwaC5u
dW1CbG9ja3MoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBtX2N1cnJlbnRJbmRl
eCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKCkp
KTsKLSNlbmRpZgotCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJucyB0byB0aGUgYmFzaWMg
YmxvY2sgd2UncmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmICghaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJl
dHVybkxpbmtpbmcpCkBAIC0xNDM2LDkgKzEzOTcsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSByZXR1cm4g
YW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBjYWxsZXIsIGJ1dAogICAgIC8v
IGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQot
ICAgIGRhdGFMb2dGKCJEb25lIGlubGluaW5nIGV4ZWN1dGFibGUgJXAsIGNvbnRpbnVpbmcgY29k
ZSBnZW5lcmF0aW9uIGluIG5ldyBibG9jay5cbiIsIGV4ZWN1dGFibGUpOwotI2VuZGlmCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5MDEsMTEgKzE4NTksNiBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyB0byBiZSB0cnVlLgogICAg
ICAgICAgICAgaWYgKCFtX2N1cnJlbnRCbG9jay0+aXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoSnVtcCwgT3BJbmZvKG1fY3VycmVudEluZGV4KSk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgZGF0
YUxvZ0YoIlJlZnVzaW5nIHRvIHBsYW50IGp1bXAgYXQgbGltaXQgJXUgYmVjYXVzZSBibG9jayAl
cCBpcyBlbXB0eS5cbiIsIGxpbWl0LCBtX2N1cnJlbnRCbG9jayk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiBzaG91bGRDb250aW51ZVBhcnNpbmc7CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC0zMzI1LDE3ICszMjc4LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9jayhCYXNpY0Jsb2MKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNl
IEp1bXA6CiAgICAgICAgIG5vZGUtPnNldFRha2VuQmxvY2soYmxvY2tGb3JCeXRlY29kZU9mZnNl
dChwb3NzaWJsZVRhcmdldHMsIG5vZGUtPnRha2VuQnl0ZWNvZGVPZmZzZXREdXJpbmdQYXJzaW5n
KCkpKTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJM
aW5rZWQgYmFzaWMgYmxvY2sgJXAgdG8gJXAsICMldS5cbiIsIGJsb2NrLCBub2RlLT50YWtlbkJs
b2NrKCksIG5vZGUtPnRha2VuQmxvY2soKS0+aW5kZXgpOwotI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgICAgICAKICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgbm9kZS0+c2V0VGFrZW5CbG9j
ayhibG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgbm9kZS0+dGFrZW5CeXRl
Y29kZU9mZnNldER1cmluZ1BhcnNpbmcoKSkpOwogICAgICAgICBub2RlLT5zZXROb3RUYWtlbkJs
b2NrKGJsb2NrRm9yQnl0ZWNvZGVPZmZzZXQocG9zc2libGVUYXJnZXRzLCBub2RlLT5ub3RUYWtl
bkJ5dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7Ci0jaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiTGlua2VkIGJhc2ljIGJsb2NrICVwIHRvICVwLCAj
JXUgYW5kICVwLCAjJXUuXG4iLCBibG9jaywgbm9kZS0+dGFrZW5CbG9jaygpLCBub2RlLT50YWtl
bkJsb2NrKCktPmluZGV4LCBub2RlLT5ub3RUYWtlbkJsb2NrKCksIG5vZGUtPm5vdFRha2VuQmxv
Y2soKS0+aW5kZXgpOwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNl
IFN3aXRjaDoKQEAgLTMzNDUsOSArMzI5Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtC
bG9jayhCYXNpY0Jsb2MKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0j
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiTWFya2luZyBi
YXNpYyBibG9jayAlcCBhcyBsaW5rZWQuXG4iLCBibG9jayk7Ci0jZW5kaWYKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIApAQCAtMzQ3MiwxMiArMzQxNiw2IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFt
ZS0+Y2FwdHVyZWRWYXJzLnNldChWaXJ0dWFsUmVnaXN0ZXIobG9jYWwub2Zmc2V0KCkgKyBtX2lu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0KIAotI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkN1cnJlbnQgY2Fw
dHVyZWQgdmFyaWFibGVzOiAiKTsKLSAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmNhcHR1cmVk
VmFycy5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRhdGFMb2dGKCJcbiIpOwotI2Vu
ZGlmCi0gICAgICAgIAogICAgICAgICBieXRlQ29kZVBhcnNlci0+YnVpbGRPcGVyYW5kTWFwc0lm
TmVjZXNzYXJ5KCk7CiAgICAgICAgIAogICAgICAgICBtX2lkZW50aWZpZXJSZW1hcC5yZXNpemUo
Y29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwpAQCAtMzU3MCw5ICszNTA4LDYgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgIH0KICAgICAKICAgICBi
b29sIHNob3VsZER1bXBCeXRlY29kZSA9IE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0REZHVGltZSgp
OwotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBzaG91bGREdW1wQnl0ZWNvZGUg
fD0gdHJ1ZTsKLSNlbmRpZgogICAgIGlmIChzaG91bGREdW1wQnl0ZWNvZGUpIHsKICAgICAgICAg
ZGF0YUxvZygiUGFyc2luZyAiLCAqY29kZUJsb2NrKTsKICAgICAgICAgaWYgKGlubGluZUNhbGxG
cmFtZSgpKSB7CkBAIC0zNjAxLDEyICszNTM2LDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VDb2RlQmxvY2soKQogICAgIGZvciAodW5zaWduZWQganVtcFRhcmdldEluZGV4ID0gMDsganVt
cFRhcmdldEluZGV4IDw9IGp1bXBUYXJnZXRzLnNpemUoKTsgKytqdW1wVGFyZ2V0SW5kZXgpIHsK
ICAgICAgICAgLy8gVGhlIG1heGltdW0gYnl0ZWNvZGUgb2Zmc2V0IHRvIGdvIGludG8gdGhlIGN1
cnJlbnQgYmFzaWNibG9jayBpcyBlaXRoZXIgdGhlIG5leHQganVtcCB0YXJnZXQsIG9yIHRoZSBl
bmQgb2YgdGhlIGluc3RydWN0aW9ucy4KICAgICAgICAgdW5zaWduZWQgbGltaXQgPSBqdW1wVGFy
Z2V0SW5kZXggPCBqdW1wVGFyZ2V0cy5zaXplKCkgPyBqdW1wVGFyZ2V0c1tqdW1wVGFyZ2V0SW5k
ZXhdIDogY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0jaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIlBhcnNpbmcgYnl0
ZWNvZGUgd2l0aCBsaW1pdCAiLCBwb2ludGVyRHVtcChpbmxpbmVDYWxsRnJhbWUoKSksCi0gICAg
ICAgICAgICAiIGJjIyIsIGxpbWl0LCAiIGF0IGlubGluZSBkZXB0aCAiLAotICAgICAgICAgICAg
Q29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKCkpLCAi
LlxuIik7Ci0jZW5kaWYKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgbGltaXQpOwog
CiAgICAgICAgIC8vIExvb3AgdW50aWwgd2UgcmVhY2ggdGhlIGN1cnJlbnQgbGltaXQgKGkuZS4g
bmV4dCBqdW1wIHRhcmdldCkuCkBAIC0zNjI2LDE1ICszNTU1LDkgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIC8vIENoYW5nZSBpdHMgYnl0ZWNvZGUgYmVnaW4gYW5kIGNvbnRpbnVlLgogICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7Ci0j
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
RigiUmVhc2NyaWJpbmcgYnl0ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0byBi
YyMldSAocGVlcGhvbGUgY2FzZSkuXG4iLCBtX2N1cnJlbnRCbG9jaywgbV9jdXJyZW50QmxvY2st
PmJ5dGVjb2RlQmVnaW4sIG1fY3VycmVudEluZGV4KTsKLSNlbmRpZgogICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBtX251
bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpKTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDcmVhdGluZyBiYXNpYyBibG9jayAlcCwg
IyV6dSBmb3IgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgYmxvY2suZ2V0KCksIG1f
Z3JhcGgubnVtQmxvY2tzKCksIG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbV9jdXJy
ZW50SW5kZXgsIENvZGVPcmlnaW46OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSgpKSk7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBi
bG9jay5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tz
IHR3byB0aGluZ3M6CiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJl
Z2luIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25l
CkBAIC0zNjgxLDExICszNjA0LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAg
IC8vIFNldCBkdXJpbmcgY29uc3RydWN0aW9uLgogICAgIEFTU0VSVCghbV9jdXJyZW50SW5kZXgp
OwogICAgIAotI2lmIERGR19FTkFCTEUoQUxMX1ZBUklBQkxFU19DQVBUVVJFRCkKLSAgICAvLyBX
ZSBzaG91bGQgYmUgcHJldGVuZGluZyB0aGF0IHRoZSBjb2RlIGhhcyBhbiBhY3RpdmF0aW9uLgot
ICAgIEFTU0VSVChtX2dyYXBoLm5lZWRzQWN0aXZhdGlvbigpKTsKLSNlbmRpZgotICAgIAogICAg
IElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgbV9jb2Rl
QmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgMCwgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxS
ZWdpc3RlcigpLAogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBDb2RlRm9y
Q2FsbCk7CkBAIC0zNzE1LDEyICszNjMzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2Uo
KQogYm9vbCBwYXJzZShHcmFwaCYgZ3JhcGgpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oIkRGRyBQYXJzaW5nIik7Ci0jaWYgREZHX0RFQlVHX0xPQ0FMX0RJU0JBTEUKLSAg
ICBVTlVTRURfUEFSQU0oZ3JhcGgpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCiAgICAgcmV0
dXJuIEJ5dGVDb2RlUGFyc2VyKGdyYXBoKS5wYXJzZSgpOwotI2VuZGlmCiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU5ODgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsMjUgKzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgLy8gU3VjY2Vzc29yIHdpdGggb25lIHByZWRlY2Vzc29yIC0+IG1lcmdlLgogICAg
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPnN1Y2Nlc3NvcigwKS0+cHJlZGVjZXNzb3JzLnNp
emUoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2stPnN1Y2Nl
c3NvcigwKS0+cHJlZGVjZXNzb3JzWzBdID09IGJsb2NrKTsKLSNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJD
RkdTaW1wbGlmeTogSnVtcCBtZXJnZSBvbiBCbG9jayAiLCAqYmxvY2ssICIgdG8gQmxvY2sgIiwg
KmJsb2NrLT5zdWNjZXNzb3IoMCksICIuXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4dHJlbWVMb2dnaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2ssIGJsb2NrLT5zdWNj
ZXNzb3IoMCksIG5vQmxvY2tzKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDaGFu
Z2VkID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNGR1Np
bXBsaWZ5OiBOb3QganVtcCBtZXJnaW5nIG9uIEJsb2NrICIsICpibG9jaywgIiB0byBCbG9jayAi
LCAqYmxvY2stPnN1Y2Nlc3NvcigwKSwgIiBiZWNhdXNlIHByZWRlY2Vzc29ycyA9ICIsKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c3Vj
Y2Vzc29yKDApLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIiwgIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygqYmxvY2stPnN1
Y2Nlc3NvcigwKS0+cHJlZGVjZXNzb3JzW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIuXG4iKTsKLSNlbmRpZgogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBCbG9jayBvbmx5IGhhcyBhIGp1bXAgLT4gcmVtb3ZlLiBUaGlzIGlzIHRyaWNreSB0
aG91Z2ggYmVjYXVzZSBvZgpAQCAtMTAyLDIzICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA9IGJsb2NrLT5zdWNjZXNzb3JG
b3JDb25kaXRpb24oY29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGpldHRpc29uZWRCbG9jayA9IGJsb2NrLT5zdWNjZXNzb3JGb3JDb25kaXRpb24oIWNvbmRp
dGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QmxvY2stPnByZWRlY2Vz
c29ycy5zaXplKCkgPT0gMSkgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ0ZHU2ltcGxpZnk6IEtub3duIGNvbmRpdGlvbiAoIiwgY29u
ZGl0aW9uLCAiKSBicmFuY2ggbWVyZ2UgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm9uIEJsb2NrICIsICpibG9jaywgIiB0byBCbG9jayAiLCAqdGFyZ2V0QmxvY2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGpldHRpc29uaW5nIEJsb2NrICIsICpqZXR0
aXNvbmVkQmxvY2ssICIuXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChleHRyZW1lTG9nZ2luZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVh
ZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrLCB0YXJn
ZXRCbG9jaywgb25lQmxvY2soamV0dGlzb25lZEJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ0ZHU2ltcGxpZnk6IEtub3duIGNvbmRpdGlvbiAoIiwgY29uZGl0aW9u
LCAiKSAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnJhbmNoLT5qdW1wIGNv
bnZlcnNpb24gb24gQmxvY2sgIiwgKmJsb2NrLCAiIHRvIEJsb2NrICIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldEJsb2NrLCAiLCBqZXR0aXNvbmluZyBCbG9jayAiLCBq
ZXR0aXNvbmVkQmxvY2ssICIuXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleHRyZW1lTG9nZ2luZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRo
cmVhZCgpOwpAQCAtMTQ0LDExICsxMTksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
LSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCJOb3QgYnJhbmNoIHNpbXBsaWZ5aW5nIG9uIEJsb2NrICMldSBiZWNh
dXNlIHRoZSBzdWNjZXNzb3JzIGRpZmZlciBhbmQgdGhlIGNvbmRpdGlvbiBpcyBub3Qga25vd24u
XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5kZXgpOwotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIEJyYW5jaCB0byBzYW1lIGRl
c3RpbmF0aW9uIC0+IGp1bXAuCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHdp
bGwgY3VycmVudGx5IG5vdCBiZSBoaXQgYmVjYXVzZSBvZiB0aGUgbGFjayBvZiBqdW1wLW9ubHkK
ICAgICAgICAgICAgICAgICAgICAgLy8gYmxvY2sgc2ltcGxpZmljYXRpb24uCkBAIC0xOTgsMjQg
KzE2OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRCbG9jay0+
cHJlZGVjZXNzb3JzLnNpemUoKSA9PSAxKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDRkdTaW1wbGlmeTogS25vd24gY29uc3RhbnQg
KCIsIHZhbHVlLCAiKSBzd2l0Y2ggbWVyZ2Ugb24gIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkJsb2NrICIsICpibG9jaywgIiB0byBCbG9jayAiLCAqdGFyZ2V0QmxvY2ssICIu
XG4iKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChleHRyZW1lTG9nZ2luZykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5kZXRocmVhZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrLCB0YXJnZXRCbG9jaywgamV0
dGlzb25lZEJsb2Nrcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0ZHU2lt
cGxpZnk6IEtub3duIGNvbnN0YW50ICgiLCB2YWx1ZSwgIikgc3dpdGNoLT5qdW1wICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnZlcnNpb24gb24gQmxvY2sgIiwgKmJsb2Nr
LCAiIHRvIEJsb2NrICMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFyZ2V0
QmxvY2ssICIuXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChl
eHRyZW1lTG9nZ2luZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5k
dW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwpA
QCAtMjg2LDE5ICsyNDQsOSBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2sp
OwogICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgaWYg
KHRhcmdldEJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgpID09IDEpIHsKLSNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nKAotICAgICAg
ICAgICAgICAgICJDRkdTaW1wbGlmeTogQnJhbmNoL1N3aXRjaCB0byBzYW1lIHN1Y2Nlc3NvciBt
ZXJnZSBvbiBCbG9jayAiLCAqYmxvY2ssCi0gICAgICAgICAgICAgICAgIiB0byBCbG9jayAiLCAq
dGFyZ2V0QmxvY2ssICIuXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVh
ZCgpOwogICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2ssIHRhcmdldEJsb2NrLCBub0Jsb2Nr
cygpKTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICJDRkdTaW1w
bGlmeTogQnJhbmNoLT5qdW1wIGNvbnZlcnNpb24gdG8gc2FtZSBzdWNjZXNzb3Igb24gQmxvY2sg
IiwKLSAgICAgICAgICAgICAgICAqYmxvY2ssICIgdG8gQmxvY2sgIiwgKnRhcmdldEJsb2NrLCAi
LlxuIiwKLSNlbmRpZgogICAgICAgICAgICAgTm9kZSogYnJhbmNoID0gYmxvY2stPmxhc3QoKTsK
ICAgICAgICAgICAgIEFTU0VSVChicmFuY2gtPmlzVGVybWluYWwoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoYnJhbmNoLT5vcCgpID09IEJyYW5jaCB8fCBicmFuY2gtPm9wKCkgPT0gU3dpdGNoKTsK
QEAgLTMzNSwxMSArMjgzLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGZpeEpldHRpc29u
ZWRQcmVkZWNlc3NvcnMoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRpc29uZWRC
bG9jaykKICAgICB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIkZpeGluZyBwcmVkZWNlc3NvcnMgYW5kIHBo
aXMgZHVlIHRvIGpldHRpc29uIG9mIEJsb2NrICIsICpqZXR0aXNvbmVkQmxvY2ssCi0gICAgICAg
ICAgICAiIGZyb20gQmxvY2sgIiwgKmJsb2NrLCAiLlxuIik7Ci0jZW5kaWYKICAgICAgICAgamV0
dGlzb25lZEJsb2NrLT5yZW1vdmVQcmVkZWNlc3NvcihibG9jayk7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTU5ODgz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcxLDkgKzcxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcmVzdWx0Kys7CiAgICAgICAgIEFTU0VSVChyZXN1bHQgPD0gbV9pbmRleEluQmxvY2spOwot
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxv
Z0YoIiAgbGltaXQgJXU6ICIsIHJlc3VsdCk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKQEAgLTk0OSw5ICs5NDYsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYg
KGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgIEVsaW1pbmF0aW5nIGVkZ2UgQCIsIG1fY3Vy
cmVudE5vZGUtPmluZGV4KCksICIgLT4gQCIsIGVkZ2UtPmluZGV4KCkpOwotI2VuZGlmCiAgICAg
ICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CiAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC05NjIsMTAgKzk1Niw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAg
ZGF0YUxvZ0YoIiAgIFJlcGxhY2luZyBAJXUgLT4gQCV1IiwgbV9jdXJyZW50Tm9kZS0+aW5kZXgo
KSwgcmVwbGFjZW1lbnQtPmluZGV4KCkpOwotI2VuZGlmCi0gICAgICAgIAogICAgICAgICBtX2N1
cnJlbnROb2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgIGVsaW1pbmF0ZUlycmVsZXZh
bnRQaGFudG9tQ2hpbGRyZW4obV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIApAQCAtOTc5LDEwICs5
NjksNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZWxpbWluYXRlKCkKICAgICB7Ci0jaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigi
ICAgRWxpbWluYXRpbmcgQCV1IiwgbV9jdXJyZW50Tm9kZS0+aW5kZXgoKSk7Ci0jZW5kaWYKLSAg
ICAgICAgCiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnROb2RlLT5tdXN0R2VuZXJhdGUoKSk7CiAg
ICAgICAgIG1fY3VycmVudE5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAgICAgZWxpbWlu
YXRlSXJyZWxldmFudFBoYW50b21DaGlsZHJlbihtX2N1cnJlbnROb2RlKTsKQEAgLTEwMTAsMTAg
Kzk5Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsKQog
ICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1Ip
OwogICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgIGRhdGFMb2dGKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobm9kZS0+b3AoKSks
IG5vZGUtPmluZGV4KCkpOwotI2VuZGlmCi0gICAgICAgIAogICAgICAgICBzd2l0Y2ggKG5vZGUt
Pm9wKCkpIHsKICAgICAgICAgCiAgICAgICAgIGNhc2UgSWRlbnRpdHk6CkBAIC0xMzM3LDkgKzEz
MTksNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2xhc3RTZWVu
W25vZGUtPm9wKCldID0gbV9pbmRleEluQmxvY2s7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSNlbmRpZgogICAgIH0K
ICAgICAKICAgICB2b2lkIHBlcmZvcm1CbG9ja0NTRShCYXNpY0Jsb2NrKiBibG9jaykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTU5ODgzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMzkgKzM0LDYgQEAKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJl
Z2lzdGVyLmgiCiAKLS8qIERGR19FTkFCTEUoKSAtIHR1cm4gb24gYSBzcGVjaWZpYyBmZWF0dXJl
cyBpbiB0aGUgREZHIEpJVCAqLwotI2RlZmluZSBERkdfRU5BQkxFKERGR19GRUFUVVJFKSAoZGVm
aW5lZCBERkdfRU5BQkxFXyMjREZHX0ZFQVRVUkUgICYmIERGR19FTkFCTEVfIyNERkdfRkVBVFVS
RSkKLQotLy8gRW1pdCB2YXJpb3VzIGxvZ2dpbmcgaW5mb3JtYXRpb24gZm9yIGRlYnVnZ2luZywg
aW5jbHVkaW5nIGR1bXBpbmcgdGhlIGRhdGFmbG93IGdyYXBocy4KLSNkZWZpbmUgREZHX0VOQUJM
RV9ERUJVR19WRVJCT1NFIDAKLS8vIEVtaXQgZHVtcHMgZHVyaW5nIHByb3BhZ2F0aW9uLCBpbiBh
ZGRpdGlvbiB0byBqdXN0IGFmdGVyLgotI2RlZmluZSBERkdfRU5BQkxFX0RFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UgMAotLy8gRW1pdCBsb2dnaW5nIGZvciBPU1IgZXhpdCB2YWx1ZSByZWNvdmVy
aWVzIGF0IGV2ZXJ5IG5vZGUsIG5vdCBqdXN0IG5vZGVzIHRoYXQKLS8vIGFjdHVhbGx5IGhhcyBz
cGVjdWxhdGlvbiBjaGVja3MuCi0jZGVmaW5lIERGR19FTkFCTEVfVkVSQk9TRV9WQUxVRV9SRUNP
VkVSSUVTIDAKLS8vIEVuYWJsZSBnZW5lcmF0aW9uIG9mIGR5bmFtaWMgY2hlY2tzIGludG8gdGhl
IGluc3RydWN0aW9uIHN0cmVhbS4KLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0jZGVmaW5lIERGR19F
TkFCTEVfSklUX0FTU0VSVCAxCi0jZWxzZQotI2RlZmluZSBERkdfRU5BQkxFX0pJVF9BU1NFUlQg
MAotI2VuZGlmCi0vLyBDb25zaXN0ZW5jeSBjaGVjayBjb250ZW50cyBjb21waWxlciBkYXRhIHN0
cnVjdHVyZXMuCi0jZGVmaW5lIERGR19FTkFCTEVfQ09OU0lTVEVOQ1lfQ0hFQ0sgMAotLy8gRW1p
dCBhIGJyZWFrcG9pbnQgaW50byB0aGUgaGVhZCBvZiBldmVyeSBnZW5lcmF0ZWQgZnVuY3Rpb24s
IHRvIGFpZCBkZWJ1Z2dpbmcgaW4gR0RCLgotI2RlZmluZSBERkdfRU5BQkxFX0pJVF9CUkVBS19P
Tl9FVkVSWV9GVU5DVElPTiAwCi0vLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBoZWFkIG9m
IGV2ZXJ5IGdlbmVyYXRlZCBibG9jaywgdG8gYWlkIGRlYnVnZ2luZyBpbiBHREIuCi0jZGVmaW5l
IERGR19FTkFCTEVfSklUX0JSRUFLX09OX0VWRVJZX0JMT0NLIDAKLS8vIEVtaXQgYSBicmVha3Bv
aW50IGludG8gdGhlIGhlYWQgb2YgZXZlcnkgZ2VuZXJhdGVkIG5vZGUsIHRvIGFpZCBkZWJ1Z2dp
bmcgaW4gR0RCLgotI2RlZmluZSBERkdfRU5BQkxFX0pJVF9CUkVBS19PTl9FVkVSWV9OT0RFIDAK
LS8vIEVtaXQgYSBwYWlyIG9mIHhvclB0cigpJ3Mgb24gcmVnVDAgd2l0aCB0aGUgbm9kZSBpbmRl
eCB0byBtYWtlIGl0IGVhc3kgdG8gc3BvdCBub2RlIGJvdW5kYXJpZXMgaW4gZGlzYXNzZW1ibGVk
IGNvZGUuCi0jZGVmaW5lIERGR19FTkFCTEVfWE9SX0RFQlVHX0FJRCAwCi0vLyBFbWl0IGEgYnJl
YWtwb2ludCBpbnRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGNvZGUuCi0jZGVmaW5lIERGR19F
TkFCTEVfSklUX0JSRUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMAotLy8gRGlzYWJsZSB0aGUg
REZHIEpJVCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBQbGF0Zm9ybS5oCi0jZGVmaW5lIERGR19E
RUJVR19MT0NBTF9ESVNCQUxFIDAKLS8vIEdlbmVyYXRlIHN0YXRzIG9uIGhvdyBzdWNjZXNzZnVs
IHdlIHdlcmUgaW4gbWFraW5nIHVzZSBvZiB0aGUgREZHIGppdCwgYW5kIHJlbWFpbmluZyBvbiB0
aGUgaG90IHBhdGguCi0jZGVmaW5lIERGR19FTkFCTEVfU1VDQ0VTU19TVEFUUyAwCi0KIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogc3RydWN0IE5vZGU7CkBAIC05OCwyOSArNjUs
MTcgQEAgZW51bSBSZWZOb2RlTW9kZSB7CiAKIGlubGluZSBib29sIHZlcmJvc2VDb21waWxhdGlv
bkVuYWJsZWQoKQogewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICByZXR1cm4g
dHJ1ZTsKLSNlbHNlCiAgICAgcmV0dXJuIE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8
IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBoYXNlKCk7Ci0jZW5kaWYKIH0KIAogaW5saW5lIGJv
b2wgbG9nQ29tcGlsYXRpb25DaGFuZ2VzKCkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQogICAgIHJldHVybiB2ZXJib3NlQ29tcGlsYXRp
b25FbmFibGVkKCkgfHwgT3B0aW9uczo6bG9nQ29tcGlsYXRpb25DaGFuZ2VzKCk7Ci0jZW5kaWYK
IH0KIAogaW5saW5lIGJvb2wgc2hvdWxkRHVtcEdyYXBoQXRFYWNoUGhhc2UoKQogewotI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNl
bHNlCiAgICAgcmV0dXJuIE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBoYXNlKCk7Ci0jZW5kaWYK
IH0KIAogaW5saW5lIGJvb2wgdmFsaWRhdGlvbkVuYWJsZWQoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgYm9vbCBmb2xkQ29uc3RhbnRzKEJhc2ljQmxvY2sqIGJsb2NrKQogICAg
IHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRh
dGFMb2coIkNvbnN0YW50IGZvbGRpbmcgY29uc2lkZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiLlxu
Iik7Ci0jZW5kaWYKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIG1fc3Rh
dGUuYmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleElu
QmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMCArODgsNiBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5vcCgpOwogCi0jaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiICAgJXMgQCV1OiAiLCBH
cmFwaDo6b3BOYW1lKG9wKSwgbm9kZS0+aW5kZXgoKSk7Ci0jZW5kaWYKLSAgICAgICAgCiAgICAg
ICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAg
Ly8gVGhpcyBnZXRzIGhhbmRsZWQgYnkgZml4dXBTZXRMb2NhbHNJbkJsb2NrKCkuCkBAIC05NjMs
MTQgKzk1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGR19O
T0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUsIG9ic2VydmVVbnR5cGVkRWRnZSk7Ci0K
LSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGlmICgh
KG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJuZXcgY2hpbGRyZW46ICIpOwotICAgICAgICAgICAgbm9kZS0+ZHVtcENoaWxkcmVuKFdURjo6
ZGF0YUZpbGUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0jZW5kaWYK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlVW50eXBlZEVkZ2UoTm9kZSosIEVkZ2UmIGVk
Z2UpCkBAIC0xNTQwLDEyICsxNTI4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSBGb3J3YXJkU3BlY3VsYXRpb24pCiAgICAgICAgICAgICByZXN1bHQtPm1lcmdlRmxhZ3Mo
Tm9kZUV4aXRzRm9yd2FyZCk7CiAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoCi0gICAgICAgICAgICAiKHJlcGxhY2lu
ZyBAJXUtPkAldSB3aXRoIEAldS0+QCV1KSAiLAotICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+
aW5kZXgoKSwgZWRnZS0+aW5kZXgoKSwgbV9jdXJyZW50Tm9kZS0+aW5kZXgoKSwgcmVzdWx0LT5p
bmRleCgpKTsKLSNlbmRpZgotCiAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjMsMTEgKzE2Myw2IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6Omlu
aXRpYWxpemUoKQogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgubV9t
dXN0SGFuZGxlQWJzdHJhY3RWYWx1ZXNbaV07CiAgICAgICAgICAgICBpbnQgb3BlcmFuZCA9IG1f
Z3JhcGgubV9tdXN0SGFuZGxlQWJzdHJhY3RWYWx1ZXMub3BlcmFuZEZvckluZGV4KGkpOwogICAg
ICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpLm1lcmdlKHZhbHVl
KTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAg
ICBkYXRhTG9nRigiICAgIEluaXRpYWxpemluZyBCbG9jayAjJXUsIG9wZXJhbmQgciVkLCB0byAi
LCBibG9ja0luZGV4LCBvcGVyYW5kKTsKLSAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQu
b3BlcmFuZChvcGVyYW5kKS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgICAgICBkYXRh
TG9nRigiXG4iKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJsb2NrLT5jZmFTaG91bGRS
ZXZpc2l0ID0gdHJ1ZTsKICAgICB9CkBAIC0yMDMsMTcgKzE5OCwxMSBAQCBib29sIEluUGxhY2VB
YnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrCiAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2Zv
cm0pIHsKICAgICAgICAgY2FzZSBUaHJlYWRlZENQUzogewogICAgICAgICAgICAgZm9yIChzaXpl
X3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICBNZXJnaW5n
IHN0YXRlIGZvciBhcmd1bWVudCAlenUuXG4iLCBhcmd1bWVudCk7Ci0jZW5kaWYKICAgICAgICAg
ICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJsb2NrLT52YWx1ZXNBdFRhaWwu
YXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VTdGF0
ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMuYXJndW1lbnQoYXJndW1lbnQpLCBibG9j
ay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBi
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgZGF0
YUxvZ0YoIiAgICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwgbG9jYWwpOwot
I2VuZGlmCiAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBibG9j
ay0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlU3RhdGVBdFRhaWwoZGVzdGluYXRpb24sIG1fdmFyaWFibGVzLmxvY2FsKGxvY2FsKSwg
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkpOwogICAgICAgICAgICAgfQpAQCAt
MjQwLDEwICsyMjksNiBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2Nr
CiAgICAgCiAgICAgQVNTRVJUKG1lcmdlTW9kZSAhPSBEb250TWVyZ2UgfHwgIWNoYW5nZWQpOwog
ICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICBkYXRh
TG9nRigiICAgICAgICBCcmFuY2ggZGlyZWN0aW9uID0gJXNcbiIsIGJyYW5jaERpcmVjdGlvblRv
U3RyaW5nKG1fYnJhbmNoRGlyZWN0aW9uKSk7Ci0jZW5kaWYKLSAgICAKICAgICByZXNldCgpOwog
ICAgIAogICAgIGlmIChtZXJnZU1vZGUgIT0gTWVyZ2VUb1N1Y2Nlc3NvcnMpCkBAIC0yNzMsMTYg
KzI1OCw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAg
ICAgLy8gR2V0TG9jYWwncyByZXN1bHQuCiAgICAgICAgIAogICAgICAgICBzb3VyY2UgPSBpblZh
cmlhYmxlOwotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAg
ICAgZGF0YUxvZ0YoIiAgICAgICAgICBUcmFuc2ZlcmluZyAiKTsKLSAgICAgICAgc291cmNlLmR1
bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgZGF0YUxvZ0YoIiBmcm9tIGxhc3QgYWNjZXNz
IGR1ZSB0byBjYXB0dXJlZCB2YXJpYWJsZS5cbiIpOwotI2VuZGlmCiAgICAgfSBlbHNlIHsKLSNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dG
KCIgICAgICAgICAgSXQncyBsaXZlLCBub2RlIEAldS5cbiIsIG5vZGUtPmluZGV4KCkpOwotI2Vu
ZGlmCi0gICAgCiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIFBo
aToKICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTI5MCwyMSArMjY2LDExIEBAIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgY2FzZSBGbHVzaDoK
ICAgICAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMgdGhlIHZhbHVlIGZyb20gaGVhZCB0
byB0YWlsLgogICAgICAgICAgICAgc291cmNlID0gaW5WYXJpYWJsZTsKLSNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgICAg
ICAgIFRyYW5zZmVyaW5nICIpOwotICAgICAgICAgICAgc291cmNlLmR1bXAoV1RGOjpkYXRhRmls
ZSgpKTsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgZnJvbSBoZWFkIHRvIHRhaWwuXG4iKTsKLSNl
bmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRM
b2NhbDoKICAgICAgICAgICAgIC8vIFRoZSBibG9jayByZWZpbmVzIHRoZSB2YWx1ZSB3aXRoIGFk
ZGl0aW9uYWwgc3BlY3VsYXRpb25zLgogICAgICAgICAgICAgc291cmNlID0gZm9yTm9kZShub2Rl
KTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAg
ICBkYXRhTG9nRigiICAgICAgICAgIFJlZmluaW5nIHRvICIpOwotICAgICAgICAgICAgc291cmNl
LmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotI2Vu
ZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFNldExv
Y2FsOgpAQCAtMzE5LDExICsyODUsNiBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJn
ZVN0YXRlQXRUCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5maWx0ZXIoU3BlY0RvdWJsZSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAgU2V0
dGluZyB0byAiKTsKLSAgICAgICAgICAgIHNvdXJjZS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7Ci0g
ICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAogICAgICAgICBkZWZhdWx0OgpAQCAtMzM1LDkgKzI5Niw2IEBAIGJvb2wgSW5QbGFj
ZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICBpZiAoZGVzdGluYXRpb24gPT0gc291
cmNlKSB7CiAgICAgICAgIC8vIEFic3RyYWN0IGV4ZWN1dGlvbiBkaWQgbm90IGNoYW5nZSB0aGUg
b3V0cHV0IHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgZm9yIHRoaXMKICAgICAgICAgLy8gYmFzaWMg
YmxvY2ssIG9uIHRoaXMgaXRlcmF0aW9uLgotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgICBOb3QgY2hhbmdlZCFcbiIp
OwotI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0zNDUsOSAr
MzAzLDYgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgIC8v
IHRoaXMgdmFyaWFibGUgYWZ0ZXIgZXhlY3V0aW9uIG9mIHRoaXMgYmFzaWMgYmxvY2suIFVwZGF0
ZSB0aGUgc3RhdGUsIGFuZCByZXR1cm4KICAgICAvLyB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhl
IGZpeHBvaW50IG11c3QgZ28gb24hCiAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0jaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgIGRhdGFMb2dGKCIgICAgICAg
ICAgQ2hhbmdlZCFcbiIpOwotI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwOCwy
MyArMzYzLDE0IEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAg
ICBzd2l0Y2ggKHRlcm1pbmFsLT5vcCgpKSB7CiAgICAgY2FzZSBKdW1wOiB7CiAgICAgICAgIEFT
U0VSVChiYXNpY0Jsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24gPT0gSW52YWxpZEJyYW5jaERpcmVj
dGlvbik7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAg
ICBkYXRhTG9nKCIgICAgICAgIE1lcmdpbmcgdG8gYmxvY2sgIiwgKnRlcm1pbmFsLT50YWtlbkJs
b2NrKCksICIuXG4iKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gbWVyZ2UoYmFzaWNCbG9jaywg
dGVybWluYWwtPnRha2VuQmxvY2soKSk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEJyYW5j
aDogewogICAgICAgICBBU1NFUlQoYmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uICE9IElu
dmFsaWRCcmFuY2hEaXJlY3Rpb24pOwogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2co
IiAgICAgICAgTWVyZ2luZyB0byBibG9jayAiLCAqdGVybWluYWwtPnRha2VuQmxvY2soKSwgIi5c
biIpOwotI2VuZGlmCiAgICAgICAgIGlmIChiYXNpY0Jsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24g
IT0gVGFrZUZhbHNlKQogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCB0
ZXJtaW5hbC0+dGFrZW5CbG9jaygpKTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIiAgICAgICAgTWVyZ2luZyB0byBibG9jayAiLCAq
dGVybWluYWwtPm5vdFRha2VuQmxvY2soKSwgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgIGlmIChi
YXNpY0Jsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24gIT0gVGFrZVRydWUpCiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRlcm1pbmFsLT5ub3RUYWtlbkJsb2NrKCkpOwog
ICAgICAgICByZXR1cm4gY2hhbmdlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDEx
ICsxMDgsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgLy8gV2UgZ2Vu
ZXJhdGUgdGhlIHNwZWN1bGF0aXZlIGNvZGUgcGF0aCwgZm9sbG93ZWQgYnkgT1NSIGV4aXQgY29k
ZSB0byByZXR1cm4KICAgICAvLyB0byB0aGUgb2xkIEpJVCBjb2RlIGlmIHNwZWN1bGF0aW9ucyBm
YWlsLgogCi0jaWYgREZHX0VOQUJMRShKSVRfQlJFQUtfT05fRVZFUllfRlVOQ1RJT04pCi0gICAg
Ly8gSGFuZHkgZGVidWcgdG9vbCEKLSAgICBicmVha3BvaW50KCk7Ci0jZW5kaWYKLSAgICAKICAg
ICBib29sIGNvbXBpbGVkU3BlY3VsYXRpdmUgPSBtX3NwZWN1bGF0aXZlLT5jb21waWxlKCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBjb21waWxlZFNwZWN1bGF0aXZl
KTsKIH0KQEAgLTE1MCwxMCArMTQ1LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZQogdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogewogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRh
dGEgc3RydWN0dXJlcy4KLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxv
Z0YoIkpJVCBjb2RlIGZvciAlcCBzdGFydCBhdCBbJXAsICVwKS4gU2l6ZSA9ICV6dS5cbiIsIG1f
Y29kZUJsb2NrLCBsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4o
bGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpLCBsaW5r
QnVmZmVyLmRlYnVnU2l6ZSgpKTsKLSNlbmRpZgotICAgIAogICAgIG1faml0Q29kZS0+Y29tbW9u
LmZyYW1lUmVnaXN0ZXJDb3VudCA9IG1fZ3JhcGguZnJhbWVSZWdpc3RlckNvdW50KCk7CiAgICAg
bV9qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCA9IG1fZ3JhcGgu
cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNp
b24gMTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCw2IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFu
ZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIC8vIDEpIFByby1mb3Jt
YSBzdHVmZi4KLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoIk9T
UiBleGl0ICgiKTsKLSAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2Rl
T3JpZ2luOyA7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVy
KSB7Ci0gICAgICAgIGRhdGFMb2dGKCJiYyMldSIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGF0YUxvZ0YoIiAtPiAlcCAiLCBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7Ci0gICAgfQotICAgIGRhdGFMb2dGKCIpIGF0IEpJVCBv
ZmZzZXQgMHgleCAgIiwgbV9qaXQuZGVidWdPZmZzZXQoKSk7Ci0gICAgZGF0YUxvZyhvcGVyYW5k
cyk7Ci0jZW5kaWYKLSAgICAKICAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7
CiAgICAgICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNw
ZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKICAgICAgICAgZGVidWdJbmZvLT5jb2RlQmxvY2sg
PSBtX2ppdC5jb2RlQmxvY2soKTsKQEAgLTU3LDE1ICs0NSw2IEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgbV9qaXQuZGVidWdDYWxsKGRlYnVnT3Bl
cmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7CiAgICAgfQogICAgIAot
I2lmIERGR19FTkFCTEUoSklUX0JSRUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCi0gICAgbV9q
aXQuYnJlYWtwb2ludCgpOwotI2VuZGlmCi0gICAgCi0jaWYgREZHX0VOQUJMRShTVUNDRVNTX1NU
QVRTKQotICAgIHN0YXRpYyBTYW1wbGluZ0NvdW50ZXIgY291bnRlcigiU3BlY3VsYXRpb25GYWls
dXJlIik7Ci0gICAgbV9qaXQuZW1pdENvdW50KGNvdW50ZXIpOwotI2VuZGlmCi0KICAgICAvLyAy
KSBQZXJmb3JtIHNwZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5
IHdoZW4gYW4gb3BlcmF0aW9uCiAgICAgLy8gICAgc3RhcnRzIG11dGF0aW5nIHN0YXRlIGJlZm9y
ZSB2ZXJpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIGl0IGhhcyBhbHJlYWR5IG1hZGUuCiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjY0LmNwcAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE4ICs0MCw2IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292
ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIC8v
IDEpIFByby1mb3JtYSBzdHVmZi4KLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAg
ZGF0YUxvZ0YoIk9TUiBleGl0IGZvciAoIik7Ci0gICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmNhbGxlcikgewotICAgICAgICBkYXRhTG9nRigiYmMjJXUiLCBjb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRhdGFMb2dGKCIgLT4gJXAgIiwgY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwotICAgIH0KLSAgICBkYXRh
TG9nRigiKSAgIik7Ci0gICAgZGF0YUxvZyhvcGVyYW5kcyk7Ci0jZW5kaWYKLQogICAgIGlmIChP
cHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpIHsKICAgICAgICAgU3BlY3VsYXRpb25GYWlsdXJl
RGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvOwog
ICAgICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IG1faml0LmNvZGVCbG9jaygpOwpAQCAtNTks
MTUgKzQ3LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAg
ICAgICBtX2ppdC5kZWJ1Z0NhbGwoZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVy
ZSwgZGVidWdJbmZvKTsKICAgICB9CiAgICAgCi0jaWYgREZHX0VOQUJMRShKSVRfQlJFQUtfT05f
U1BFQ1VMQVRJT05fRkFJTFVSRSkKLSAgICBtX2ppdC5icmVha3BvaW50KCk7Ci0jZW5kaWYKLSAg
ICAKLSNpZiBERkdfRU5BQkxFKFNVQ0NFU1NfU1RBVFMpCi0gICAgc3RhdGljIFNhbXBsaW5nQ291
bnRlciBjb3VudGVyKCJTcGVjdWxhdGlvbkZhaWx1cmUiKTsKLSAgICBtX2ppdC5lbWl0Q291bnQo
Y291bnRlcik7Ci0jZW5kaWYKLSAgICAKICAgICAvLyAyKSBQZXJmb3JtIHNwZWN1bGF0aW9uIHJl
Y292ZXJ5LiBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IHdoZW4gYW4gb3BlcmF0aW9uCiAgICAg
Ly8gICAgc3RhcnRzIG11dGF0aW5nIHN0YXRlIGJlZm9yZSB2ZXJpZnlpbmcgdGhlIHNwZWN1bGF0
aW9uIGl0IGhhcyBhbHJlYWR5IG1hZGUuCiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDEzICs3Niw2IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRl
KiBleGVjKQogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCAhPSBVSU5UX01BWCkKICAgICAg
ICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5zcGVjdWxhdGlvblJl
Y292ZXJ5W2V4aXQubV9yZWNvdmVyeUluZGV4XTsKIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICBkYXRhTG9nKAotICAgICAgICAiR2VuZXJhdGluZyBPU1IgZXhpdCAjIiwgZXhp
dEluZGV4LCAiIChzZXEjIiwgZXhpdC5tX3N0cmVhbUluZGV4LAotICAgICAgICAiLCBiYyMiLCBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCAiLCAiLAotICAgICAgICBleGl0Lm1fa2lu
ZCwgIikgZm9yICIsICpjb2RlQmxvY2ssICIuXG4iKTsKLSNlbmRpZgotCiAgICAgewogICAgICAg
ICBDQ2FsbEhlbHBlcnMgaml0KHZtLCBjb2RlQmxvY2spOwogICAgICAgICBPU1JFeGl0Q29tcGls
ZXIgZXhpdENvbXBpbGVyKGppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNTk4ODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxMCArMTc2LDYgQEAgdm9pZCBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoQ0NhbGxIZWxwZXJzJgogICAgIAogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0KSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5q
dW1wKEdQUkluZm86OnJlZ1QyKTsKLQotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICBkYXRhTG9nRigiICAgLT4gJXBcbiIsIGp1bXBUYXJnZXQpOwotI2VuZGlmCiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1
OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTMgKzU4LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwotICAgICAgICAgICAgCi0jaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAg
ICAgICAgICAgICAgICJBcmd1bWVudCBbIiwgYXJnLCAiXSBwcmVkaWN0aW9uOiAiLAotICAgICAg
ICAgICAgICAgICAgICBTcGVjdWxhdGlvbkR1bXAobV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSwKLSAgICAgICAgICAgICAgICAgICAg
IlxuIik7Ci0jZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTcsOSArNTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1f
Zm9ybSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fdW5pZmljYXRp
b25TdGF0ZSA9PSBHbG9iYWxseVVuaWZpZWQpOwogICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIG1fY291bnQgPSAwOwotI2VuZGlmCiAg
ICAgICAgIC8vIDEpIHByb3BhZ2F0ZSBwcmVkaWN0aW9ucwogCiAgICAgICAgIGRvIHsKQEAgLTEz
MiwxMCArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9k
ZS0+b3AoKTsKIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgZGF0YUxvZygiICAgIiwgR3JhcGg6Om9wTmFtZShvcCksICIgIiwgbV9jdXJyZW50Tm9k
ZSwgIjogIiwgTm9kZUZsYWdzRHVtcChub2RlLT5mbGFncygpKSwgIiAiKTsKLSNlbmRpZgotICAg
ICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBz
d2l0Y2ggKG9wKSB7CkBAIC02MDUsMTggKzU5OCwxMSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
ICAgIH0KIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAg
ICAgZGF0YUxvZyhTcGVjdWxhdGlvbkR1bXAobm9kZS0+cHJlZGljdGlvbigpKSwgIlxuIik7Ci0j
ZW5kaWYKLSAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBjaGFuZ2VkOwogICAgIH0KICAg
ICAgICAgCiAgICAgdm9pZCBwcm9wYWdhdGVGb3J3YXJkKCkKICAgICB7Ci0jaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiUHJvcGFnYXRp
bmcgcHJlZGljdGlvbnMgZm9yd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwotI2VuZGlmCiAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykK
QEAgLTYzMSw5ICs2MTcsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgcHJvcGFnYXRlQmFj
a3dhcmQoKQogICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIGRhdGFMb2dGKCJQcm9wYWdhdGluZyBwcmVkaWN0aW9ucyBiYWNrd2FyZCBbJXVd
XG4iLCArK21fY291bnQpOwotI2VuZGlmCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAg
ICAgaWYgKCFibG9jaykKQEAgLTc2MSw5ICs3NDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgZG9Sb3VuZE9mRG91YmxlVm90aW5nKCkKICAgICB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiVm90aW5nIG9uIGRvdWJsZSB1
c2VzIG9mIGxvY2FscyBbJXVdXG4iLCBtX2NvdW50KTsKLSNlbmRpZgogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsr
aSkKICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGFbaV0uZmluZCgpLT5j
bGVhclZvdGVzKCk7CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxv
Y2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewpAQCAtNzk0LDEw
ICs3NzQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIE5vZGUqIG1fY3VycmVudE5vZGU7CiAgICAg
Ym9vbCBtX2NoYW5nZWQ7Ci0KLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJP
U0UpCi0gICAgdW5zaWduZWQgbV9jb3VudDsKLSNlbmRpZgogfTsKICAgICAKIGJvb2wgcGVyZm9y
bVByZWRpY3Rpb25Qcm9wYWdhdGlvbihHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MywxOCArMTAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgdWludDMyX3QgaW5kZXggPSBjaGlsZC0+
dmlydHVhbFJlZ2lzdGVyKCkudG9Mb2NhbCgpOwogICAgICAgICBBU1NFUlQobV91c2VkW2luZGV4
XSAhPSBtYXgoKSk7CiAgICAgICAgIGlmIChjaGlsZC0+cmVmQ291bnQoKSA9PSArK21fdXNlZFtp
bmRleF0pIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAg
ICAgICAgICBkYXRhTG9nRigiIEZyZWVpbmcgdmlydHVhbCByZWdpc3RlciAldS4iLCBpbmRleCk7
Ci0jZW5kaWYKICAgICAgICAgICAgIC8vIElmIHRoZSB1c2UgY291bnQgaW4gdGhlIHNjb3JlYm9h
cmQgcmVhY2hlcyB0aGUgdXNlIGNvdW50IGZvciB0aGUgbm9kZSwKICAgICAgICAgICAgIC8vIHRo
ZW4gdGhpcyB3YXMgaXRzIGxhc3QgdXNlOyB0aGUgdmlydHVhbCByZWdpc3RlciBpcyBub3cgZnJl
ZS4KICAgICAgICAgICAgIC8vIENsZWFyIHRoZSB1c2UgY291bnQgJiBhZGQgdG8gdGhlIGZyZWUg
bGlzdC4KICAgICAgICAgICAgIG1fdXNlZFtpbmRleF0gPSAwOwogICAgICAgICAgICAgbV9mcmVl
LmFwcGVuZChpbmRleCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiBWaXJ0dWFsIHJlZ2lz
dGVyICV1IGlzIGF0ICV1LyV1IHVzZXMuIiwgaW5kZXgsIG1fdXNlZFtpbmRleF0sIGNoaWxkLT5y
ZWZDb3VudCgpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIHZvaWQgdXNlKEVkZ2Ug
Y2hpbGQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCwx
MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2xvd1BhdGhHZW5lcmF0b3IoKSB7IH0KICAgICB2
b2lkIGdlbmVyYXRlKFNwZWN1bGF0aXZlSklUKiBqaXQpCiAgICAgewotI2lmIERGR19FTkFCTEUo
REVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkdlbmVyYXRpbmcgc2xvdyBwYXRoICVw
IGF0IG9mZnNldCAweCV4XG4iLCB0aGlzLCBqaXQtPm1faml0LmRlYnVnT2Zmc2V0KCkpOwotI2Vu
ZGlmCiAgICAgICAgIG1fbGFiZWwgPSBqaXQtPm1faml0LmxhYmVsKCk7CiAgICAgICAgIGppdC0+
bV9jdXJyZW50Tm9kZSA9IG1fY3VycmVudE5vZGU7CiAgICAgICAgIGdlbmVyYXRlSW50ZXJuYWwo
aml0KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGppdC0+bV9qaXQuYnJlYWtwb2lu
dCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgZ2VuZXJhdG9yIGp1bXBzIGJhY2sgdG8gc29tZXdo
ZXJlCi0jZW5kaWYKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAgICAgICBq
aXQtPm1faml0LmJyZWFrcG9pbnQoKTsgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIGdlbmVyYXRvciBq
dW1wcyBiYWNrIHRvIHNvbWV3aGVyZQogICAgIH0KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgdmlydHVhbCBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTU5ODgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzI3LDkgKzcyNyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKIHRlbXBsYXRlPGJvb2wgc3RyaWN0PgogR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVkZ2UsIERhdGFGb3JtYXQm
IHJldHVybkZvcm1hdCkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0
YUxvZ0YoIlNwZWNJbnRAJWQgICAiLCBlZGdlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtu
b3duSW50MzJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0ludDMyKSk7CkBAIC04MjgsOSAr
ODI1LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogCiBGUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewotI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiU3BlY0RvdWJsZUAlZCAg
ICIsIGVkZ2UtPmluZGV4KCkpOwotI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1f
dHlwZTsKICAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2
YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKQEAgLTk2NSw5ICs5NTksNiBAQCBGUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAKIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogewotI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiU3BlY0NlbGxAJWQgICAiLCBlZGdlLT5pbmRleCgp
KTsKLSNlbmRpZgogICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVk
Z2UpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgQVNTRVJU
KChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bkNlbGxVc2UgJiYgZWRnZS51c2VLaW5kKCkgIT0gS25v
d25TdHJpbmdVc2UpIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNDZWxsKSk7CkBAIC0xMDQ3LDkg
KzEwMzgsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAKIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogewot
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiU3BlY0Jvb2xAJWQg
ICAiLCBlZGdlLm5vZGUoKS0+aW5kZXgoKSk7Ci0jZW5kaWYKICAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0g
dmFsdWUubV90eXBlOwogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQm9vbGVh
bik7CkBAIC0zMDk1LDExICszMDgzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBBU1NFUlQoR1BSSW5mbzo6cmVnVDEgIT0gR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOwogICAgICAgICBBU1NFUlQoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgIT0g
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCi0jaWYgREZHX0VOQUJMRShTVUNDRVNTX1NU
QVRTKQotICAgICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50ZXIoIlNwZWN1bGF0aXZl
SklUIik7Ci0gICAgICAgIG1faml0LmVtaXRDb3VudChjb3VudGVyKTsKLSNlbmRpZgotCiAgICAg
ICAgIC8vIFJldHVybiB0aGUgcmVzdWx0IGluIHJldHVyblZhbHVlR1BSLgogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBvcDEuZmlsbCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzgsOSArNzM4LDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogdGVtcGxhdGU8Ym9v
bCBzdHJpY3Q+CiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVy
bmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KQogewotI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiU3BlY0ludEAlZCAgICIsIGVkZ2UtPmlu
ZGV4KCkpOwotI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5v
ZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKICAgICBB
U1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25JbnQzMlVzZSB8fCAhKHZhbHVlLm1fdHlwZSAm
IH5TcGVjSW50MzIpKTsKQEAgLTExMjMsOSArMTEyMCw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDUKIAogRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgZGF0YUxvZ0YoIlNwZWNEb3VibGVAJWQgICAiLCBlZGdlLT5pbmRleCgpKTsKLSNlbmRpZgog
ICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgQVNTRVJUKGVkZ2UudXNlS2lu
ZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVy
KSk7CkBAIC0xMzIwLDkgKzEzMTQsNiBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3ViCiAKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRn
ZSBlZGdlKQogewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigi
U3BlY0NlbGxAJWQgICAiLCBlZGdlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgQVNTRVJUKChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bkNl
bGxVc2UgJiYgZWRnZS51c2VLaW5kKCkgIT0gS25vd25TdHJpbmdVc2UpIHx8ICEodmFsdWUubV90
eXBlICYgflNwZWNDZWxsKSk7CkBAIC0xMzY1LDExICsxMzU2LDExIEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6IHsK
ICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdw
cik7Ci0jaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBjaGVja0NlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOwotICAgICAgICBjaGVja0NlbGwubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBj
aGVja0NlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwg
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1faml0LmJyZWFrcG9pbnQo
KTsKKyAgICAgICAgICAgIGNoZWNrQ2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGdwcjsKICAgICB9CiAKQEAgLTE0MDUsOSArMTM5Niw2IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIAogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQotICAgIGRhdGFMb2dGKCJTcGVjQm9vbEAlZCAgICIsIGVkZ2UtPmluZGV4KCkpOwot
I2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7
CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKICAgICBtX2ludGVycHJl
dGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Jvb2xlYW4pOwpAQCAtMzQzMSwxMSArMzQxOSw2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJUKEdQ
UkluZm86OnJlZ1QxICE9IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgQVNTRVJU
KEdQUkluZm86OnJldHVyblZhbHVlR1BSICE9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
IAotI2lmIERGR19FTkFCTEUoU1VDQ0VTU19TVEFUUykKLSAgICAgICAgc3RhdGljIFNhbXBsaW5n
Q291bnRlciBjb3VudGVyKCJTcGVjdWxhdGl2ZUpJVCIpOwotICAgICAgICBtX2ppdC5lbWl0Q291
bnQoY291bnRlcik7Ci0jZW5kaWYKLQogICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBpbiBy
ZXR1cm5WYWx1ZUdQUi4KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDkgKzIzOCw2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkMKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEV4aXRLaW5kIGtpbmQsIEpT
VmFsdWVSZWdzIGpzVmFsdWVSZWdzLCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChtX2lzQ2hl
Y2tpbmdBcmd1bWVudFR5cGVzIHx8IG1fY2FuRXhpdCk7Ci0jaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQotICAgIGRhdGFMb2dGKCJTcGVjdWxhdGl2ZUpJVCB3YXMgdGVybWluYXRlZC5cbiIp
OwotI2VuZGlmCiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1cm47CiAgICAg
c3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlUmVncywgbm9kZSwgbV9qaXQuanVtcCgpKTsK
QEAgLTMwMCw5ICsyOTcsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphZGRTbG93UGF0aEdlbmVy
YXRvCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnJ1blNsb3dQYXRoR2VuZXJhdG9ycygpCiB7Ci0j
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2dGKCJSdW5uaW5nICVsdSBz
bG93IHBhdGggZ2VuZXJhdG9ycy5cbiIsIG1fc2xvd1BhdGhHZW5lcmF0b3JzLnNpemUoKSk7Ci0j
ZW5kaWYKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zbG93UGF0aEdlbmVyYXRvcnMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fc2xvd1BhdGhHZW5lcmF0b3JzW2ldLT5nZW5lcmF0ZSh0
aGlzKTsKIH0KQEAgLTEwNjksNyArMTA2Myw2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlU3RyaWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBz
dGF0aWMgY29uc3QgY2hhciogZGF0YUZvcm1hdFN0cmluZyhEYXRhRm9ybWF0IGZvcm1hdCkKIHsK
ICAgICAvLyBUaGVzZSB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgRGF0YUZvcm1hdCBlbnVtLgpA
QCAtMTEyNSwxMTYgKzExMTgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNo
YXIqIGxhCiAgICAgaWYgKGxhYmVsKQogICAgICAgICBkYXRhTG9nRigiPC8lcz5cbiIsIGxhYmVs
KTsKIH0KLSNlbmRpZgotCi0KLSNpZiBERkdfRU5BQkxFKENPTlNJU1RFTkNZX0NIRUNLKQotdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCi17Ci0gICAgYm9vbCBmYWlsZWQg
PSBmYWxzZTsKLQotICAgIGZvciAoZ3ByX2l0ZXJhdG9yIGl0ZXIgPSBtX2dwcnMuYmVnaW4oKTsg
aXRlciAhPSBtX2dwcnMuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAoaXRlci5pc0xvY2tl
ZCgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxl
ZDogZ3ByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOwotICAgICAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKGZwcl9pdGVyYXRvciBp
dGVyID0gbV9mcHJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9mcHJzLmVuZCgpOyArK2l0ZXIpIHsKLSAg
ICAgICAgaWYgKGl0ZXIuaXNMb2NrZWQoKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkRGR19D
T05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGZwciAlcyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVn
TmFtZSgpKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsr
aSkgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gKFZpcnR1YWxS
ZWdpc3RlcilpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZv
RnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICBpZiAoIWluZm8u
YWxpdmUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzd2l0Y2ggKGluZm8ucmVn
aXN0ZXJGb3JtYXQoKSkgewotICAgICAgICBjYXNlIERhdGFGb3JtYXROb25lOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdEpTOgotICAgICAgICBjYXNlIERhdGFG
b3JtYXRKU0ludDMyOgotICAgICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKLSAgICAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46
Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAg
ICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgotICAgICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgot
ICAgICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgotICAgICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChncHIgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAgICBpZiAobV9ncHJz
Lm5hbWUoZ3ByKSAhPSB2aXJ0dWFsUmVnaXN0ZXIpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgdmlydHVh
bCByZWdpc3RlciAlZCAoZ3ByICVzKS5cbiIsIHZpcnR1YWxSZWdpc3RlciwgR1BSSW5mbzo6ZGVi
dWdOYW1lKGdwcikpOwotICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERhdGFGb3Jt
YXREb3VibGU6IHsKLSAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOwotICAgICAg
ICAgICAgQVNTRVJUKGZwciAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgICAgIGlmIChtX2Zw
cnMubmFtZShmcHIpICE9IHZpcnR1YWxSZWdpc3RlcikgewotICAgICAgICAgICAgICAgIGRhdGFM
b2dGKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciB2aXJ0
dWFsIHJlZ2lzdGVyICVkIChmcHIgJXMpLlxuIiwgdmlydHVhbFJlZ2lzdGVyLCBGUFJJbmZvOjpk
ZWJ1Z05hbWUoZnByKSk7Ci0gICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRGF0YUZv
cm1hdE9TUk1hcmtlcjoKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0RGVhZDoKLSAgICAgICAgY2Fz
ZSBEYXRhRm9ybWF0QXJndW1lbnRzOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9y
IChncHJfaXRlcmF0b3IgaXRlciA9IG1fZ3Bycy5iZWdpbigpOyBpdGVyICE9IG1fZ3Bycy5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBp
dGVyLm5hbWUoKTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5l
cmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8uZ3ByKCkpIHsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1p
c21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05h
bWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAg
ICAgIH0KLSNlbHNlCi0gICAgICAgIGlmICghKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAmIERhdGFG
b3JtYXRKUykpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby5ncHIoKSkg
ewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVk
OiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRl
ci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBmYWlsZWQg
PSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KGl0ZXIucmVnSUQoKSAhPSBpbmZvLnRhZ0dQUigpICYmIGl0ZXIucmVnSUQoKSAhPSBpbmZvLnBh
eWxvYWRHUFIoKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJERkdfQ09OU0lTVEVOQ1lf
Q0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIg
JWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICBmYWlsZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLSAg
ICB9Ci0KLSAgICBmb3IgKGZwcl9pdGVyYXRvciBpdGVyID0gbV9mcHJzLmJlZ2luKCk7IGl0ZXIg
IT0gbV9mcHJzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlciA9IGl0ZXIubmFtZSgpOwotICAgICAgICBpZiAoIXZpcnR1YWxSZWdpc3Rlci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBHZW5lcmF0aW9uSW5m
byYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0
ZXIpOwotICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8uZnByKCkpIHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNo
IGZvciBmcHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwg
dmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAoZmFpbGVkKSB7Ci0gICAgICAgIGR1bXAoKTsKLSAgICAgICAgQ1JB
U0goKTsKLSAgICB9Ci19Ci0jZW5kaWYKIAogR1BSVGVtcG9yYXJ5OjpHUFJUZW1wb3JhcnkoKQog
ICAgIDogbV9qaXQoMCkKQEAgLTE1ODAsMTQgKzE0NjMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBERkdf
RU5BQkxFKEpJVF9CUkVBS19PTl9FVkVSWV9CTE9DSykKLSAgICBtX2ppdC5icmVha3BvaW50KCk7
Ci0jZW5kaWYKLSAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxv
ZygiU2V0dGluZyB1cCBzdGF0ZSBmb3IgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIpOwotI2VuZGlm
Ci0gICAgCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgp
KTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTYy
MSwxMCArMTQ5Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sK
ICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0ID0gQ29kZU9yaWdpbigpOwogICAgIG1fY29k
ZU9yaWdpbkZvckV4aXRQcm9maWxlID0gQ29kZU9yaWdpbigpOwogICAgIAotI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiXG4iKTsKLSNlbmRpZgotCiAgICAgZm9y
IChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgbV9ibG9jay0+c2l6ZSgpOyAr
K21faW5kZXhJbkJsb2NrKSB7CiAgICAgICAgIG1fY3VycmVudE5vZGUgPSBtX2Jsb2NrLT5hdCht
X2luZGV4SW5CbG9jayk7CiAgICAgICAgIApAQCAtMTY0MSw5ICsxNTEyLDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JF
eGl0VGFyZ2V0ID0gbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbkZvckV4aXRUYXJnZXQ7CiAgICAg
ICAgIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlID0gbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdp
bjsKICAgICAgICAgaWYgKCFtX2N1cnJlbnROb2RlLT5zaG91bGRHZW5lcmF0ZSgpKSB7Ci0jaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZ0YoIlNwZWN1bGF0
aXZlSklUIHNraXBwaW5nIE5vZGUgQCVkIChiYyMldSkgYXQgSklUIG9mZnNldCAweCV4ICAgICAi
LCBtX2N1cnJlbnROb2RlLT5pbmRleCgpLCBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgsIG1faml0LmRlYnVnT2Zmc2V0KCkpOwotI2VuZGlmCiAgICAgICAgICAgICBzd2l0
Y2ggKG1fY3VycmVudE5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgSlNDb25zdGFudDoK
ICAgICAgICAgICAgICAgICBtX21pbmlmaWVkR3JhcGgtPmFwcGVuZChNaW5pZmllZE5vZGU6OmZy
b21Ob2RlKG1fY3VycmVudE5vZGUpKTsKQEAgLTE2NzksMjAgKzE1NDcsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgICAgICAgICAgICAgICJTcGVj
dWxhdGl2ZUpJVCBnZW5lcmF0aW5nIE5vZGUgQCVkIChiYyMldSkgYXQgSklUIG9mZnNldCAweCV4
IiwKICAgICAgICAgICAgICAgICAgICAgKGludCltX2N1cnJlbnROb2RlLT5pbmRleCgpLAogICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgs
IG1faml0LmRlYnVnT2Zmc2V0KCkpOwotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAiKTsKLSNlbHNlCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgfQotI2lmIERGR19FTkFCTEUoSklUX0JS
RUFLX09OX0VWRVJZX05PREUpCi0gICAgICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7Ci0jZW5k
aWYKLSNpZiBERkdfRU5BQkxFKFhPUl9ERUJVR19BSUQpCi0gICAgICAgICAgICBtX2ppdC54b3JQ
dHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihtX2N1cnJlbnROb2RlLT5pbmRleCgpKSwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQueG9yUHRyKEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIobV9jdXJyZW50Tm9kZS0+aW5kZXgoKSksIEdQUkluZm86OnJlZ1QwKTsKLSNlbmRp
ZgotICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX3NwZWN1bGF0aW9uRGlyZWN0aW9uID0gKG1fY3VycmVudE5vZGUtPmZsYWdzKCkgJiBO
b2RlRXhpdHNGb3J3YXJkKSA/IEZvcndhcmRTcGVjdWxhdGlvbiA6IEJhY2t3YXJkU3BlY3VsYXRp
b247CiAgICAgICAgICAgICAKQEAgLTE3MTEsNDYgKzE1NjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAgICAgIG1fbWluaWZpZWRHcmFw
aC0+YXBwZW5kKE1pbmlmaWVkTm9kZTo6ZnJvbU5vZGUobV9jdXJyZW50Tm9kZSkpOwogICAgICAg
ICAgICAgICAgIG5vdGljZU9TUkJpcnRoKG1fY3VycmVudE5vZGUpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAg
aWYgKG1fY3VycmVudE5vZGUtPmhhc1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJh
dGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW21fY3VycmVudE5vZGUtPnZpcnR1YWxS
ZWdpc3RlcigpLnRvTG9jYWwoKV07Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIi0+ICVzLCB2
ciMlZCIsIGRhdGFGb3JtYXRUb1N0cmluZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBtX2N1cnJl
bnROb2RlLT52aXJ0dWFsUmVnaXN0ZXIoKS50b0xvY2FsKCkpOwotICAgICAgICAgICAgICAgIGlm
IChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgJXMiLCBGUFJJbmZvOjpkZWJ1Z05h
bWUoaW5mby5mcHIoKSkpOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICVzICVzIiwgR1BSSW5mbzo6ZGVidWdOYW1l
KGluZm8udGFnR1BSKCkpLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5wYXlsb2FkR1BSKCkpKTsK
LSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiLCAlcyIsIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLmdwcigpKSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgIik7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICIpOwotI2VuZGlmCiAg
ICAgICAgIH0KICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAg
ICBkYXRhTG9nRigiXG4iKTsKLSNlbmRpZgotICAgICAgICAKICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgdGhlIGFic3RyYWN0IHN0YXRlIGlzIHJlbWF0ZXJpYWxpemVkIGZvciB0aGUgbmV4dCBu
b2RlLgogICAgICAgICBpZiAoc2hvdWxkRXhlY3V0ZUVmZmVjdHMpCiAgICAgICAgICAgICBtX2lu
dGVycHJldGVyLmV4ZWN1dGVFZmZlY3RzKG1faW5kZXhJbkJsb2NrKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChtX2N1cnJlbnROb2RlLT5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKICAgICAvLyBQZXJmb3JtIHRoZSBtb3N0IGJh
c2ljIHZlcmlmaWNhdGlvbiB0aGF0IGNoaWxkcmVuIGhhdmUgYmVlbiB1c2VkIGNvcnJlY3RseS4K
LSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgR2VuZXJhdGlv
bkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW2luZGV4XTsKLSAgICAgICAgQVNTRVJUKCFp
bmZvLmFsaXZlKCkpOworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2lu
ZGV4KSB7CisgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbklu
Zm9baW5kZXhdOworICAgICAgICAgICAgQVNTRVJUKCFpbmZvLmFsaXZlKCkpOworICAgICAgICB9
CiAgICAgfQotI2VuZGlmCiB9CiAKIC8vIElmIHdlIGFyZSBtYWtpbmcgdHlwZSBwcmVkaWN0aW9u
cyBhYm91dCBvdXIgYXJndW1lbnRzIHRoZW4KQEAgLTIwOTQsOSArMTkyNCw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUKIAogR2VuZXJhdGVkT3BlcmFuZFR5cGUg
U3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSogbm9kZSkK
IHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoImNoZWNrR2Vu
ZXJhdGVkVHlwZUZvclRvSW50MzJAJWQgICAiLCBub2RlLT5pbmRleCgpKTsKLSNlbmRpZgogICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIo
KTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxS
ZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTE5MDUsMTUgKzE5MDUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxpbmtCcmFuY2hlcygpOwog
Ci0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcChjb25zdCBjaGFyKiBsYWJlbCA9IDApOwot
I2VuZGlmCi0KLSNpZiBERkdfRU5BQkxFKENPTlNJU1RFTkNZX0NIRUNLKQotICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeSgpOwotI2Vsc2UKLSAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSB7IH0K
LSNlbmRpZgogCiAgICAgYm9vbCBpc0ludGVnZXIoTm9kZSogbm9kZSkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVh
bS5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwxMCArMTM2LDYg
QEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICB3aGlsZSAoYXQo
c3RhcnRJbmRleCkua2luZCgpICE9IFJlc2V0KQogICAgICAgICBzdGFydEluZGV4LS07CiAgICAg
Ci0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2dGKCJDb21wdXRpbmcg
T1NSIGV4aXQgcmVjb3ZlcmllcyBzdGFydGluZyBhdCBzZXEjJXUuXG4iLCBzdGFydEluZGV4KTsK
LSNlbmRpZgotCiAgICAgLy8gU3RlcCAyOiBDcmVhdGUgYSBtb2NrLXVwIG9mIHRoZSBERkcncyBz
dGF0ZSBhbmQgZXhlY3V0ZSB0aGUgZXZlbnRzLgogICAgIE9wZXJhbmRzPFZhbHVlU291cmNlPiBv
cGVyYW5kU291cmNlcyhjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvcGVyYW5kU291cmNlcy5zaXplKCk7IGktLTspCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJl
YW0uaAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJpYWJsZUV2ZW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDYgQEAgY2xh
c3MgVmFyaWFibGVFdmVudFN0cmVhbSA6IHB1YmxpYyBWZWN0bwogcHVibGljOgogICAgIHZvaWQg
YXBwZW5kQW5kTG9nKGNvbnN0IFZhcmlhYmxlRXZlbnQmIGV2ZW50KQogICAgIHsKLSNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGxvZ0V2ZW50KGV2ZW50KTsKLSNlbmRpZgog
ICAgICAgICBhcHBlbmQoZXZlbnQpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9j
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsOSArNDcsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTY29yZUJvYXJkIHNj
b3JlQm9hcmQobV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwpOwogICAgICAgICBzY29yZUJvYXJk
LmFzc2VydENsZWFyKCk7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICBib29sIG5lZWRzTmV3TGluZSA9IGZhbHNlOwotI2VuZGlmCiAgICAgICAgIGZv
ciAoc2l6ZV90IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3Mo
KTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3Jh
cGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtNTgsMTIg
KzU1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUo
KTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGluZGV4SW5CbG9jayk7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICAgICAgICAgIGlmIChuZWVkc05ld0xpbmUpCi0gICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICBAJXU6Iiwg
bm9kZS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICAgICAgbmVlZHNOZXdMaW5lID0gdHJ1ZTsKLSNl
bmRpZgogICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPnNob3VsZEdlbmVyYXRl
KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTcsMTEgKzg4LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBzY29yZUJvYXJkLmFsbG9jYXRlKCk7Ci0j
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAg
IGRhdGFMb2dGKAotICAgICAgICAgICAgICAgICAgICAiIEFzc2lnbmluZyB2aXJ0dWFsIHJlZ2lz
dGVyICV1IHRvIG5vZGUgJXUuIiwKLSAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVy
LCBub2RlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPnNldFZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIC8vICdtdXN0R2Vu
ZXJhdGUnIG5vZGVzIGhhdmUgdGhlaXIgdXNlQ291bnQgYXJ0aWZpY2lhbGx5IGVsZXZhdGVkLAog
ICAgICAgICAgICAgICAgIC8vIGNhbGwgdXNlIG5vdyB0byBhY2NvdW50IGZvciB0aGlzLgpAQCAt
MTEwLDEwICs5Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNjb3Jl
Qm9hcmQuYXNzZXJ0Q2xlYXIoKTsKICAgICAgICAgfQotI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgaWYgKG5lZWRzTmV3TGluZSkKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJcbiIpOwotI2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBSZWNvcmQgdGhl
IG51bWJlciBvZiB2aXJ0dWFsIHJlZ2lzdGVycyB3ZSdyZSB1c2luZy4gVGhpcyBpcyB1c2VkIGJ5
IGNhbGxzCiAgICAgICAgIC8vIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdG8gcHV0IHRoZSBwYXJhbWV0
ZXJzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTU5ODgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NDAsMTMgKzU0MCw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkK
IAogICAgIEp1bXAgc3RhY2tDaGVjazsKICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkg
PT0gRnVuY3Rpb25Db2RlKSB7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0jaWYgREZHX0VOQUJMRShT
VUNDRVNTX1NUQVRTKQotICAgICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50ZXIoIm9y
aWduYWxKSVQiKTsKLSAgICAgICAgZW1pdENvdW50KGNvdW50ZXIpOwotI2VuZGlmCi0jZW5kaWYK
LQogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVP
ZmZzZXQgPT0gKHVuc2lnbmVkKS0xKTsKICAgICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmco
KSkgewo=
</data>
<flag name="review"
          id="241400"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="241402"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218087</attachid>
            <date>2013-11-29 21:53:02 -0800</date>
            <delta_ts>2013-11-29 21:53:02 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>71339</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAxMy0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZpbmFsbHkgcmVtb3ZlIHRob3NlIERGR19FTkFCTEUgdGhpbmdzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUwMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgorICAgICAgICAKKyAgICAgICAgVGhpcyByZW1vdmVzIGEgYnVuY2gg
b2YgdW51c2VkIGFuZCB1bnRlc3RlZCBpbnNhbml0eS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRT
aXRlcyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aW5qZWN0TGF6eU9wZXJhbmRTcGVjdWxhdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFycmF5TW9kZUNvbnNpZGVyaW5nU2xvd1Bh
dGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6REZHOjpwYXJzZSk6CisgICAgICAgICogZGZn
L0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGR1Np
bXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmlj
YXRpb25QaGFzZTo6Y29udmVydFRvSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxp
ZmljYXRpb25QaGFzZTo6Zml4SmV0dGlzb25lZFByZWRlY2Vzc29ycyk6CisgICAgICAgICogZGZn
L0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6ZW5kSW5kZXhG
b3JQdXJlQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6ZWxpbWluYXRlSXJyZWxl
dmFudFBoYW50b21DaGlsZHJlbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnNldFJl
cGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6ZWxpbWluYXRlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRm
Zy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjp2ZXJib3NlQ29tcGlsYXRpb25FbmFi
bGVkKToKKyAgICAgICAgKEpTQzo6REZHOjpsb2dDb21waWxhdGlvbkNoYW5nZXMpOgorICAgICAg
ICAoSlNDOjpERkc6OnNob3VsZER1bXBHcmFwaEF0RWFjaFBoYXNlKToKKyAgICAgICAgKiBkZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50
Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJbnQzMlRvRG91YmxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAgICAgICAgKEpTQzo6
REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2Nlc3NvcnMpOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmNvbXBpbGVCb2R5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvbkluamVjdGlv
blBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnJ1
bik6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnBy
b3BhZ2F0ZUZvcndhcmQpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlOjpwcm9wYWdhdGVCYWNrd2FyZCk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2U6OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgICogZGZn
L0RGR1Njb3JlQm9hcmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTY29yZUJvYXJkOjp1c2UpOgor
ICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6
OlNsb3dQYXRoR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dGVybWluYXRl
U3BlY3VsYXRpdmVFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpydW5TbG93UGF0aEdlbmVyYXRvcnMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1
cnJlbnRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2Vu
ZXJhdGVkVHlwZUZvclRvSW50MzIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50
U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNv
bnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjphcHBlbmRBbmRMb2cpOgorICAgICAg
ICAqIGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisKIDIw
MTMtMTEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwg
SUMgc2hvdWxkIG5vcC1maWxsIHRvIG1ha2UgdXAgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUg
YWN0dWFsIElDIHNpemUgYW5kIHRoZSByZXF1ZXN0ZWQgcGF0Y2hwb2ludCBzaXplCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24g
MTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNjAsMTAgKzMyNjAsNiBAQCB2b2lkIENvZGVCbG9jazo6dGFs
bHlGcmVxdWVudEV4aXRTaXRlcygpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhp
dC5jb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZEJsb2NrKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdf
VkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coIk9TUiBleGl0ICMiLCBpLCAiIChiYyMiLCBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCAiLCAiLCBleGl0Lm1fa2luZCwgIikgZm9y
ICIsICp0aGlzLCAiIG9jY3VycmVkIGZyZXF1ZW50bHk6IGNvdW50aW5nIGFzIGZyZXF1ZW50IGV4
aXQgc2l0ZS5cbiIpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzI3OSwxMCArMzI3NSw2IEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNp
dGVzKCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGl0LmNvbnNpZGVyQWRkaW5n
QXNGcmVxdWVudEV4aXRTaXRlKHByb2ZpbGVkQmxvY2spKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAg
ICAgICAgZGF0YUxvZygiT1NSIGV4aXQgIyIsIGksICIgKGJjIyIsIGV4aXQubV9jb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXgsICIsICIsIGV4aXQubV9raW5kLCAiKSBmb3IgIiwgKnRoaXMsICIgb2Nj
dXJyZWQgZnJlcXVlbnRseTogY291bnRpbmcgYXMgZnJlcXVlbnQgZXhpdCBzaXRlLlxuIik7Ci0j
ZW5kaWYKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3Miw1MyArMzcyLDYgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAg
ICAgZGF0YUxvZ0YoIkFyZ3VtZW50cyBhbGlhc2luZyBzdGF0ZXM6XG4iKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NE
YXRhID0gJm1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGFbaV07Ci0gICAgICAgICAgICBpZiAo
IXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNSb290KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICByIiwgdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgp
LCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAobV9ncmFwaCwgdmFyaWFibGVBY2Nlc3NEYXRh
KSwgIik6ICIpOwotICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJl
ZCgpKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDYXB0dXJlZCIpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KLSAg
ICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNz
RGF0YSktPnZhbHVlOwotICAgICAgICAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGlmIChkYXRhLmNhbGxDb250ZXh0SXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAi
KTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkhhdmUgQ2FsbCBDb250ZXh0OiAlcCIs
IGRhdGEuY2FsbENvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhkYXRh
LmNhbGxDb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgKERvZXMg
Tm90IENyZWF0ZSBBcmd1bWVudHMpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmIChkYXRhLmFyZ3VtZW50c0Fzc2lnbm1lbnRJc1ZhbGlkKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmaXJzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIs
ICIpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQXJndW1lbnRzIEFzc2lnbm1lbnQg
SXMgVmFsaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmVzY2FwZXMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFmaXJzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCIsICIpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiRG9lcyBOb3QgRXNjYXBlIik7
Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCIsICIpOwotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzVmFsaWQoKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKGRhdGEuY2FsbENvbnRl
eHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlZBTElEIik7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJJTlZB
TElEIChkdWUgdG8gYXJndW1lbnQgY3JlYXRpb24pIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJJTlZBTElEIChkdWUgdG8gYmFkIHZhcmlh
YmxlIHVzZSkiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwot
ICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgCiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRp
b25TZXQobV9ncmFwaCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDkgKzI1NSw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVLZXkga2V5KG1fY3VycmVudEluZGV4LCBub2RlLT5sb2NhbCgpKTsKICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fbGF6eU9wZXJhbmRz
LnByZWRpY3Rpb24obG9ja2VyLCBrZXkpOwotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
LSAgICAgICAgZGF0YUxvZygiTGF6eSBvcGVyYW5kIFtAIiwgbm9kZS0+aW5kZXgoKSwgIiwgYmMj
IiwgbV9jdXJyZW50SW5kZXgsICIsIHIiLCBub2RlLT5sb2NhbCgpLCAiXSBwcmVkaWN0aW9uOiAi
LCBTcGVjdWxhdGlvbkR1bXAocHJlZGljdGlvbiksICJcbiIpOwotI2VuZGlmCiAgICAgICAgIG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KHByZWRpY3Rpb24pOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CkBAIC04NTIsMTIgKzg0OSw2IEBAIHByaXZhdGU6CiAgICAgICAg
IAogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwogICAgICAgICAKLSNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPm51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQotICAgICAgICAg
ICAgZGF0YUxvZ0YoIlNsb3cgY2FzZSBwcm9maWxlIGZvciBiYyMldTogJXVcbiIsIG1fY3VycmVu
dEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyKTsKLSAgICAgICAg
ZGF0YUxvZ0YoIkFycmF5IHByb2ZpbGUgZm9yIGJjIyV1OiAldSAlcyVzXG4iLCBtX2N1cnJlbnRJ
bmRleCwgcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlciksIHByb2ZpbGUtPnN0cnVj
dHVyZUlzUG9seW1vcnBoaWMobG9ja2VyKSA/ICIgKHBvbHltb3JwaGljKSIgOiAiIiwgcHJvZmls
ZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikgPyAiIChtYXkgaW50ZXJjZXB0
KSIgOiAiIik7Ci0jZW5kaWYKLSAgICAgICAgCiAgICAgICAgIGJvb2wgbWFrZVNhZmUgPQogICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VT
bG93Q2FzZShtX2N1cnJlbnRJbmRleCkKICAgICAgICAgICAgIHx8IHByb2ZpbGUtPm91dE9mQm91
bmRzKGxvY2tlcik7CkBAIC04OTksMTggKzg5MCwxMSBAQCBwcml2YXRlOgogCiAgICAgICAgIGNh
c2UgQXJpdGhNdWw6CiAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5saWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAg
ICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2Ug
ZGVlcGVzdCBzbG93IGNhc2UuXG4iLCBub2RlLT5pbmRleCgpKTsKLSNlbmRpZgorICAgICAgICAg
ICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE92ZXJmbG93KSkKICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlPdmVyZmxvdyB8IE5vZGVNYXlOZWdaZXJvKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShtX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVa
ZXJvKSkgewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBk
YXRhTG9nRigiTWFraW5nIEFyaXRoTXVsIEAldSB0YWtlIGZhc3RlciBzbG93IGNhc2UuXG4iLCBu
b2RlLT5pbmRleCgpKTsKLSNlbmRpZgorICAgICAgICAgICAgZWxzZSBpZiAobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRl
eCkKKyAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQogICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm8pOwotICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTkzNiwxMCAr
OTIwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQogICAg
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIk1ha2luZyAlcyBAJXUgc2FmZSBhdCBiYyMldSBiZWNh
dXNlIHNwZWNpYWwgZmFzdC1jYXNlIGNvdW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMg
c2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShub2RlLT5vcCgpKSwgbm9kZS0+aW5kZXgoKSwg
bV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+c3BlY2lh
bEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3Vu
dGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwotI2VuZGlmCi0gICAgICAgIAog
ICAgICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUg
Z3JhbnVsYXIuIFRoZSBERkcgY2VydGFpbmx5IGNhbgogICAgICAgICAvLyBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIG5lZ2F0aXZlIHplcm8gYW5kIG92ZXJmbG93IGluIGl0cyBleGl0IHByb2ZpbGVzLgog
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvdyB8IE5vZGVNYXlOZWdaZXJv
KTsKQEAgLTExNjAsMTAgKzExNDAsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KEluc3RydWN0CiAgICAgICAgIGNhbGxMaW5rU3RhdHVzLnNldEhhc0JhZEV4ZWN1dGFibGVFeGl0
U2l0ZShtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRFeGVjdXRhYmxlKSk7CiAgICAgfQogICAgIAotI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nKCJGb3IgY2FsbCBhdCBiYyMiLCBtX2N1cnJlbnRJbmRl
eCwgIjogIiwgY2FsbExpbmtTdGF0dXMsICJcbiIpOwotI2VuZGlmCi0gICAgCiAgICAgaWYgKCFj
YWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CiAgICAgICAgIC8vIE9kZGx5LCB0aGlzIGNv
bmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxscyB0aGF0IGJlaGF2
ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0aGF0IHdlIGNhbm5v
dCBvcHRpbWl6ZSB0aGVtLgpAQCAtMTI4NywxMCArMTI2Myw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICBpZiAoIWNhbklubGluZUZ1bmN0aW9uRm9yKGNv
ZGVCbG9jaywga2luZCwgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJlQ2FsbCgpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBk
YXRhTG9nRigiSW5saW5pbmcgZXhlY3V0YWJsZSAlcC5cbiIsIGV4ZWN1dGFibGUpOwotI2VuZGlm
Ci0gICAgCiAgICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQgd2UgYXJlIGNv
bW1pdHRlZCB0byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKICAgICAvLyBieSBjaGVj
a2luZyB0aGUgY2FsbGVlIChpZiBuZWNlc3NhcnkpIGFuZCBtYWtpbmcgc3VyZSB0aGF0IGFyZ3Vt
ZW50cyBhbmQgdGhlIGNhbGxlZQogICAgIC8vIGFyZSBmbHVzaGVkLgpAQCAtMTM4Miw5ICsxMzU0
LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZQogICAgICAgICAv
LyBJZiB3ZSBjcmVhdGVkIG5ldyBibG9ja3MgdGhlbiB0aGUgbGFzdCBibG9jayBuZWVkcyBsaW5r
aW5nLCBidXQgaW4gdGhlCiAgICAgICAgIC8vIGNhbGxlci4gSXQgZG9lc24ndCBuZWVkIHRvIGJl
IGxpbmtlZCB0bywgYnV0IGl0IG5lZWRzIG91dGdvaW5nIGxpbmtzLgogICAgICAgICBpZiAoIWlu
bGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKLSNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nRigiUmVhc2NyaWJpbmcgYnl0
ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0byBiYyMldSAoaW5saW5lIHJldHVy
biBjYXNlKS5cbiIsIGxhc3RCbG9jaywgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luLCBtX2N1cnJl
bnRJbmRleCk7Ci0jZW5kaWYKICAgICAgICAgICAgIC8vIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMs
IHNldCB0aGUgYnl0ZWNvZGVCZWdpbi4gTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBtYXR0ZXIKICAg
ICAgICAgICAgIC8vIGZvciByZWxlYXNlIGJ1aWxkcyBiZWNhdXNlIHRoaXMgYmxvY2sgd2lsbCBu
ZXZlciBzZXJ2ZSBhcyBhIHBvdGVudGlhbCB0YXJnZXQKICAgICAgICAgICAgIC8vIGluIHRoZSBs
aW5rZXIncyBiaW5hcnkgc2VhcmNoLgpAQCAtMTM5MywxMCArMTM2Miw2IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygpOwotICAgICAgICAKLSNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJEb25lIGlubGluaW5n
IGV4ZWN1dGFibGUgJXAsIGNvbnRpbnVpbmcgY29kZSBnZW5lcmF0aW9uIGF0IGVwaWxvZ3VlLlxu
IiwgZXhlY3V0YWJsZSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IApAQCAtMTQwNywxMCArMTM3Miw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKE5vZGUKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhl
IGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9j
ayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBt
X251bUxvY2FscykpOwogCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFM
b2dGKCJDcmVhdGluZyBpbmxpbmUgZXBpbG9ndWUgYmFzaWMgYmxvY2sgJXAsICMlenUgZm9yICVw
IGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJsb2NrLmdldCgpLCBtX2dyYXBoLm51bUJs
b2NrcygpLCBtX2lubGluZVN0YWNrVG9wLT5leGVjdXRhYmxlKCksIG1fY3VycmVudEluZGV4LCBD
b2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUoKSkpOwot
I2VuZGlmCi0KICAgICAvLyBMaW5rIHRoZSBlYXJseSByZXR1cm5zIHRvIHRoZSBiYXNpYyBibG9j
ayB3ZSdyZSBhYm91dCB0byBjcmVhdGUuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxp
bmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KCFpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc0Vhcmx5UmV0dXJu
TGlua2luZykKQEAgLTE0MzYsOSArMTM5Nyw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKE5vZGUKICAgICAKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQg
Y29udGludWUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0CiAgICAgLy8gaW4g
dGhlIG5ldyBiYXNpYyBibG9jay4KLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAg
ZGF0YUxvZ0YoIkRvbmUgaW5saW5pbmcgZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdl
bmVyYXRpb24gaW4gbmV3IGJsb2NrLlxuIiwgZXhlY3V0YWJsZSk7Ci0jZW5kaWYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTkwMSwxMSArMTg1OSw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIC8vIHRvIGJlIHRydWUuCiAgICAgICAg
ICAgICBpZiAoIW1fY3VycmVudEJsb2NrLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChKdW1wLCBPcEluZm8obV9jdXJyZW50SW5kZXgpKTsKLSAgICAgICAgICAgIGVsc2Ug
ewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiUmVmdXNpbmcgdG8gcGxhbnQganVtcCBhdCBsaW1pdCAldSBiZWNhdXNlIGJsb2NrICVwIGlz
IGVtcHR5LlxuIiwgbGltaXQsIG1fY3VycmVudEJsb2NrKTsKLSNlbmRpZgotICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZENvbnRpbnVlUGFyc2luZzsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTMzMjUsMTcgKzMyNzgsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlu
a0Jsb2NrKEJhc2ljQmxvYwogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSnVt
cDoKICAgICAgICAgbm9kZS0+c2V0VGFrZW5CbG9jayhibG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHBv
c3NpYmxlVGFyZ2V0cywgbm9kZS0+dGFrZW5CeXRlY29kZU9mZnNldER1cmluZ1BhcnNpbmcoKSkp
OwotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIkxpbmtl
ZCBiYXNpYyBibG9jayAlcCB0byAlcCwgIyV1LlxuIiwgYmxvY2ssIG5vZGUtPnRha2VuQmxvY2so
KSwgbm9kZS0+dGFrZW5CbG9jaygpLT5pbmRleCk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAogICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBub2RlLT5zZXRUYWtlbkJsb2NrKGJs
b2NrRm9yQnl0ZWNvZGVPZmZzZXQocG9zc2libGVUYXJnZXRzLCBub2RlLT50YWtlbkJ5dGVjb2Rl
T2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7CiAgICAgICAgIG5vZGUtPnNldE5vdFRha2VuQmxvY2so
YmxvY2tGb3JCeXRlY29kZU9mZnNldChwb3NzaWJsZVRhcmdldHMsIG5vZGUtPm5vdFRha2VuQnl0
ZWNvZGVPZmZzZXREdXJpbmdQYXJzaW5nKCkpKTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgICAgIGRhdGFMb2dGKCJMaW5rZWQgYmFzaWMgYmxvY2sgJXAgdG8gJXAsICMldSBh
bmQgJXAsICMldS5cbiIsIGJsb2NrLCBub2RlLT50YWtlbkJsb2NrKCksIG5vZGUtPnRha2VuQmxv
Y2soKS0+aW5kZXgsIG5vZGUtPm5vdFRha2VuQmxvY2soKSwgbm9kZS0+bm90VGFrZW5CbG9jaygp
LT5pbmRleCk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU3dp
dGNoOgpAQCAtMzM0NSw5ICszMjkyLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2Nr
KEJhc2ljQmxvYwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJNYXJraW5nIGJhc2lj
IGJsb2NrICVwIGFzIGxpbmtlZC5cbiIsIGJsb2NrKTsKLSNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgCkBAIC0zNDcyLDEyICszNDE2LDYgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5j
YXB0dXJlZFZhcnMuc2V0KFZpcnR1YWxSZWdpc3Rlcihsb2NhbC5vZmZzZXQoKSArIG1faW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKICAgICAgICAgfQogCi0jaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiQ3VycmVudCBjYXB0dXJl
ZCB2YXJpYWJsZXM6ICIpOwotICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJz
LmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0jZW5kaWYK
LSAgICAgICAgCiAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5idWlsZE9wZXJhbmRNYXBzSWZOZWNl
c3NhcnkoKTsKICAgICAgICAgCiAgICAgICAgIG1faWRlbnRpZmllclJlbWFwLnJlc2l6ZShjb2Rl
QmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CkBAIC0zNTcwLDkgKzM1MDgsNiBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgfQogICAgIAogICAgIGJvb2wg
c2hvdWxkRHVtcEJ5dGVjb2RlID0gT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCk7Ci0j
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIHNob3VsZER1bXBCeXRlY29kZSB8PSB0
cnVlOwotI2VuZGlmCiAgICAgaWYgKHNob3VsZER1bXBCeXRlY29kZSkgewogICAgICAgICBkYXRh
TG9nKCJQYXJzaW5nICIsICpjb2RlQmxvY2spOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
KCkpIHsKQEAgLTM2MDEsMTIgKzM1MzYsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNv
ZGVCbG9jaygpCiAgICAgZm9yICh1bnNpZ25lZCBqdW1wVGFyZ2V0SW5kZXggPSAwOyBqdW1wVGFy
Z2V0SW5kZXggPD0ganVtcFRhcmdldHMuc2l6ZSgpOyArK2p1bXBUYXJnZXRJbmRleCkgewogICAg
ICAgICAvLyBUaGUgbWF4aW11bSBieXRlY29kZSBvZmZzZXQgdG8gZ28gaW50byB0aGUgY3VycmVu
dCBiYXNpY2Jsb2NrIGlzIGVpdGhlciB0aGUgbmV4dCBqdW1wIHRhcmdldCwgb3IgdGhlIGVuZCBv
ZiB0aGUgaW5zdHJ1Y3Rpb25zLgogICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGp1bXBUYXJnZXRJ
bmRleCA8IGp1bXBUYXJnZXRzLnNpemUoKSA/IGp1bXBUYXJnZXRzW2p1bXBUYXJnZXRJbmRleF0g
OiBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKLSNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiUGFyc2luZyBieXRlY29k
ZSB3aXRoIGxpbWl0ICIsIHBvaW50ZXJEdW1wKGlubGluZUNhbGxGcmFtZSgpKSwKLSAgICAgICAg
ICAgICIgYmMjIiwgbGltaXQsICIgYXQgaW5saW5lIGRlcHRoICIsCi0gICAgICAgICAgICBDb2Rl
T3JpZ2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUoKSksICIuXG4i
KTsKLSNlbmRpZgogICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPCBsaW1pdCk7CiAKICAg
ICAgICAgLy8gTG9vcCB1bnRpbCB3ZSByZWFjaCB0aGUgY3VycmVudCBsaW1pdCAoaS5lLiBuZXh0
IGp1bXAgdGFyZ2V0KS4KQEAgLTM2MjYsMTUgKzM1NTUsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgLy8gQ2hhbmdlIGl0cyBieXRlY29kZSBiZWdpbiBhbmQgY29udGludWUuCiAgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKLSNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJS
ZWFzY3JpYmluZyBieXRlY29kZSBpbmRleCBvZiBibG9jayAlcCBmcm9tIGJjIyV1IHRvIGJjIyV1
IChwZWVwaG9sZSBjYXNlKS5cbiIsIG1fY3VycmVudEJsb2NrLCBtX2N1cnJlbnRCbG9jay0+Ynl0
ZWNvZGVCZWdpbiwgbV9jdXJyZW50SW5kZXgpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+
IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobV9jdXJyZW50SW5kZXgsIG1fbnVtQXJn
dW1lbnRzLCBtX251bUxvY2FscykpOwotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGJhc2ljIGJsb2NrICVwLCAjJXp1
IGZvciAlcCBiYyMldSBhdCBpbmxpbmUgZGVwdGggJXUuXG4iLCBibG9jay5nZXQoKSwgbV9ncmFw
aC5udW1CbG9ja3MoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBtX2N1cnJlbnRJ
bmRleCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1l
KCkpKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2Nr
LmdldCgpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc2VydGlvbiBjaGVja3MgdHdv
IHRoaW5nczoKICAgICAgICAgICAgICAgICAgICAgLy8gMSkgSWYgdGhlIGJ5dGVjb2RlQmVnaW4g
aXMgZ3JlYXRlciB0aGFuIGN1cnJlbnRJbmRleCwgdGhlbiBzb21ldGhpbmcgaGFzIGdvbmUKQEAg
LTM2ODEsMTEgKzM2MDQsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgLy8g
U2V0IGR1cmluZyBjb25zdHJ1Y3Rpb24uCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRJbmRleCk7CiAg
ICAgCi0jaWYgREZHX0VOQUJMRShBTExfVkFSSUFCTEVTX0NBUFRVUkVEKQotICAgIC8vIFdlIHNo
b3VsZCBiZSBwcmV0ZW5kaW5nIHRoYXQgdGhlIGNvZGUgaGFzIGFuIGFjdGl2YXRpb24uCi0gICAg
QVNTRVJUKG1fZ3JhcGgubmVlZHNBY3RpdmF0aW9uKCkpOwotI2VuZGlmCi0gICAgCiAgICAgSW5s
aW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBtX2NvZGVCbG9j
aywgbV9wcm9maWxlZEJsb2NrLCAwLCAwLCBWaXJ0dWFsUmVnaXN0ZXIoKSwgVmlydHVhbFJlZ2lz
dGVyKCksCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIENvZGVGb3JDYWxs
KTsKQEAgLTM3MTUsMTIgKzM2MzMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiBi
b29sIHBhcnNlKEdyYXBoJiBncmFwaCkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbigiREZHIFBhcnNpbmciKTsKLSNpZiBERkdfREVCVUdfTE9DQUxfRElTQkFMRQotICAgIFVO
VVNFRF9QQVJBTShncmFwaCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKICAgICByZXR1cm4g
Qnl0ZUNvZGVQYXJzZXIoZ3JhcGgpLnBhcnNlKCk7Ci0jZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NCwyNSArNjQsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAvLyBTdWNjZXNzb3Igd2l0aCBvbmUgcHJlZGVjZXNzb3IgLT4gbWVyZ2UuCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+c3VjY2Vzc29yKDApLT5wcmVkZWNlc3NvcnMuc2l6ZSgp
ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+c3VjY2Vzc29y
KDApLT5wcmVkZWNlc3NvcnNbMF0gPT0gYmxvY2spOwotI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNGR1Np
bXBsaWZ5OiBKdW1wIG1lcmdlIG9uIEJsb2NrICIsICpibG9jaywgIiB0byBCbG9jayAiLCAqYmxv
Y2stPnN1Y2Nlc3NvcigwKSwgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXh0cmVtZUxvZ2dpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9jaywgYmxvY2stPnN1Y2Nlc3Nv
cigwKSwgbm9CbG9ja3MoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQg
PSBvdXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ0ZHU2ltcGxp
Znk6IE5vdCBqdW1wIG1lcmdpbmcgb24gQmxvY2sgIiwgKmJsb2NrLCAiIHRvIEJsb2NrICIsICpi
bG9jay0+c3VjY2Vzc29yKDApLCAiIGJlY2F1c2UgcHJlZGVjZXNzb3JzID0gIiwpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zdWNjZXNz
b3IoMCktPnByZWRlY2Vzc29ycy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigi
LCAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCpibG9jay0+c3VjY2Vz
c29yKDApLT5wcmVkZWNlc3NvcnNbaV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIi5cbiIpOwotI2VuZGlmCiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IEJsb2NrIG9ubHkgaGFzIGEganVtcCAtPiByZW1vdmUuIFRoaXMgaXMgdHJpY2t5IHRob3Vn
aCBiZWNhdXNlIG9mCkBAIC0xMDIsMjMgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrID0gYmxvY2stPnN1Y2Nlc3NvckZvckNv
bmRpdGlvbihjb25kaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
amV0dGlzb25lZEJsb2NrID0gYmxvY2stPnN1Y2Nlc3NvckZvckNvbmRpdGlvbighY29uZGl0aW9u
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRCbG9jay0+cHJlZGVjZXNzb3Jz
LnNpemUoKSA9PSAxKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJDRkdTaW1wbGlmeTogS25vd24gY29uZGl0aW9uICgiLCBjb25kaXRp
b24sICIpIGJyYW5jaCBtZXJnZSAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
b24gQmxvY2sgIiwgKmJsb2NrLCAiIHRvIEJsb2NrICIsICp0YXJnZXRCbG9jaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiwgamV0dGlzb25pbmcgQmxvY2sgIiwgKmpldHRpc29u
ZWRCbG9jaywgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4dHJlbWVMb2dnaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmR1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2ssIHRhcmdldEJs
b2NrLCBvbmVCbG9jayhqZXR0aXNvbmVkQmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDRkdTaW1wbGlmeTogS25vd24gY29uZGl0aW9uICgiLCBjb25kaXRpb24sICIp
ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJicmFuY2gtPmp1bXAgY29udmVy
c2lvbiBvbiBCbG9jayAiLCAqYmxvY2ssICIgdG8gQmxvY2sgIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2ssICIsIGpldHRpc29uaW5nIEJsb2NrICIsIGpldHRp
c29uZWRCbG9jaywgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGV4dHJlbWVMb2dnaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmR1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFk
KCk7CkBAIC0xNDQsMTEgKzExOSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoIk5vdCBicmFuY2ggc2ltcGxpZnlpbmcgb24gQmxvY2sgIyV1IGJlY2F1c2Ug
dGhlIHN1Y2Nlc3NvcnMgZGlmZmVyIGFuZCB0aGUgY29uZGl0aW9uIGlzIG5vdCBrbm93bi5cbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmRleCk7Ci0jZW5kaWYKLSAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gQnJhbmNoIHRvIHNhbWUgZGVzdGlu
YXRpb24gLT4ganVtcC4KICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgd2lsbCBj
dXJyZW50bHkgbm90IGJlIGhpdCBiZWNhdXNlIG9mIHRoZSBsYWNrIG9mIGp1bXAtb25seQogICAg
ICAgICAgICAgICAgICAgICAvLyBibG9jayBzaW1wbGlmaWNhdGlvbi4KQEAgLTE5OCwyNCArMTY4
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEJsb2NrLT5wcmVk
ZWNlc3NvcnMuc2l6ZSgpID09IDEpIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkNGR1NpbXBsaWZ5OiBLbm93biBjb25zdGFudCAoIiwg
dmFsdWUsICIpIHN3aXRjaCBtZXJnZSBvbiAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQmxvY2sgIiwgKmJsb2NrLCAiIHRvIEJsb2NrICIsICp0YXJnZXRCbG9jaywgIi5cbiIp
OwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4dHJlbWVMb2dnaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmRldGhyZWFkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2ssIHRhcmdldEJsb2NrLCBqZXR0aXNv
bmVkQmxvY2tzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0jaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDRkdTaW1wbGlm
eTogS25vd24gY29uc3RhbnQgKCIsIHZhbHVlLCAiKSBzd2l0Y2gtPmp1bXAgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY29udmVyc2lvbiBvbiBCbG9jayAiLCAqYmxvY2ssICIg
dG8gQmxvY2sgIyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YXJnZXRCbG9j
aywgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJl
bWVMb2dnaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7CkBAIC0y
ODYsMTkgKzI0NCw5IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jayk7CiAg
ICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBpZiAodGFy
Z2V0QmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCkgPT0gMSkgewotI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAg
ICAgICAgIkNGR1NpbXBsaWZ5OiBCcmFuY2gvU3dpdGNoIHRvIHNhbWUgc3VjY2Vzc29yIG1lcmdl
IG9uIEJsb2NrICIsICpibG9jaywKLSAgICAgICAgICAgICAgICAiIHRvIEJsb2NrICIsICp0YXJn
ZXRCbG9jaywgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7
CiAgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9jaywgdGFyZ2V0QmxvY2ssIG5vQmxvY2tzKCkp
OwogICAgICAgICB9IGVsc2UgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgIkNGR1NpbXBsaWZ5
OiBCcmFuY2gtPmp1bXAgY29udmVyc2lvbiB0byBzYW1lIHN1Y2Nlc3NvciBvbiBCbG9jayAiLAot
ICAgICAgICAgICAgICAgICpibG9jaywgIiB0byBCbG9jayAiLCAqdGFyZ2V0QmxvY2ssICIuXG4i
LAotI2VuZGlmCiAgICAgICAgICAgICBOb2RlKiBicmFuY2ggPSBibG9jay0+bGFzdCgpOwogICAg
ICAgICAgICAgQVNTRVJUKGJyYW5jaC0+aXNUZXJtaW5hbCgpKTsKICAgICAgICAgICAgIEFTU0VS
VChicmFuY2gtPm9wKCkgPT0gQnJhbmNoIHx8IGJyYW5jaC0+b3AoKSA9PSBTd2l0Y2gpOwpAQCAt
MzM1LDExICsyODMsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZml4SmV0dGlzb25lZFBy
ZWRlY2Vzc29ycyhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2Nr
KQogICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAg
ICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiRml4aW5nIHByZWRlY2Vzc29ycyBhbmQgcGhpcyBk
dWUgdG8gamV0dGlzb24gb2YgQmxvY2sgIiwgKmpldHRpc29uZWRCbG9jaywKLSAgICAgICAgICAg
ICIgZnJvbSBCbG9jayAiLCAqYmxvY2ssICIuXG4iKTsKLSNlbmRpZgogICAgICAgICBqZXR0aXNv
bmVkQmxvY2stPnJlbW92ZVByZWRlY2Vzc29yKGJsb2NrKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk4ODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzEsOSArNzEsNiBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBy
ZXN1bHQrKzsKICAgICAgICAgQVNTRVJUKHJlc3VsdCA8PSBtX2luZGV4SW5CbG9jayk7Ci0jaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigi
ICBsaW1pdCAldTogIiwgcmVzdWx0KTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIApAQCAtOTQ5LDkgKzk0Niw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoZWRn
ZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRvT1NSKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICAgICAgZGF0YUxvZygiICAgRWxpbWluYXRpbmcgZWRnZSBAIiwgbV9jdXJyZW50
Tm9kZS0+aW5kZXgoKSwgIiAtPiBAIiwgZWRnZS0+aW5kZXgoKSk7Ci0jZW5kaWYKICAgICAgICAg
ICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTk2MiwxMCArOTU2LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBkYXRh
TG9nRigiICAgUmVwbGFjaW5nIEAldSAtPiBAJXUiLCBtX2N1cnJlbnROb2RlLT5pbmRleCgpLCBy
ZXBsYWNlbWVudC0+aW5kZXgoKSk7Ci0jZW5kaWYKLSAgICAgICAgCiAgICAgICAgIG1fY3VycmVu
dE5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAgICAgZWxpbWluYXRlSXJyZWxldmFudFBo
YW50b21DaGlsZHJlbihtX2N1cnJlbnROb2RlKTsKICAgICAgICAgCkBAIC05NzksMTAgKzk2OSw2
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBlbGltaW5hdGUoKQogICAgIHsKLSNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCIgICBF
bGltaW5hdGluZyBAJXUiLCBtX2N1cnJlbnROb2RlLT5pbmRleCgpKTsKLSNlbmRpZgotICAgICAg
ICAKICAgICAgICAgQVNTRVJUKG1fY3VycmVudE5vZGUtPm11c3RHZW5lcmF0ZSgpKTsKICAgICAg
ICAgbV9jdXJyZW50Tm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICBlbGltaW5hdGVJ
cnJlbGV2YW50UGhhbnRvbUNoaWxkcmVuKG1fY3VycmVudE5vZGUpOwpAQCAtMTAxMCwxMCArOTk2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCiAgICAg
ICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7CiAg
ICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAg
ICAgZGF0YUxvZ0YoIiAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShub2RlLT5vcCgpKSwgbm9k
ZS0+aW5kZXgoKSk7Ci0jZW5kaWYKLSAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewogICAgICAgICAKICAgICAgICAgY2FzZSBJZGVudGl0eToKQEAgLTEzMzcsOSArMTMxOSw2
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fbGFzdFNlZW5bbm9k
ZS0+b3AoKV0gPSBtX2luZGV4SW5CbG9jazsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJcbiIpOwotI2VuZGlmCiAgICAgfQogICAg
IAogICAgIHZvaWQgcGVyZm9ybUJsb2NrQ1NFKEJhc2ljQmxvY2sqIGJsb2NrKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwz
OSArMzQsNiBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0
ZXIuaCIKIAotLyogREZHX0VOQUJMRSgpIC0gdHVybiBvbiBhIHNwZWNpZmljIGZlYXR1cmVzIGlu
IHRoZSBERkcgSklUICovCi0jZGVmaW5lIERGR19FTkFCTEUoREZHX0ZFQVRVUkUpIChkZWZpbmVk
IERGR19FTkFCTEVfIyNERkdfRkVBVFVSRSAgJiYgREZHX0VOQUJMRV8jI0RGR19GRUFUVVJFKQot
Ci0vLyBFbWl0IHZhcmlvdXMgbG9nZ2luZyBpbmZvcm1hdGlvbiBmb3IgZGVidWdnaW5nLCBpbmNs
dWRpbmcgZHVtcGluZyB0aGUgZGF0YWZsb3cgZ3JhcGhzLgotI2RlZmluZSBERkdfRU5BQkxFX0RF
QlVHX1ZFUkJPU0UgMAotLy8gRW1pdCBkdW1wcyBkdXJpbmcgcHJvcGFnYXRpb24sIGluIGFkZGl0
aW9uIHRvIGp1c3QgYWZ0ZXIuCi0jZGVmaW5lIERGR19FTkFCTEVfREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSAwCi0vLyBFbWl0IGxvZ2dpbmcgZm9yIE9TUiBleGl0IHZhbHVlIHJlY292ZXJpZXMg
YXQgZXZlcnkgbm9kZSwgbm90IGp1c3Qgbm9kZXMgdGhhdAotLy8gYWN0dWFsbHkgaGFzIHNwZWN1
bGF0aW9uIGNoZWNrcy4KLSNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1ZBTFVFX1JFQ09WRVJJ
RVMgMAotLy8gRW5hYmxlIGdlbmVyYXRpb24gb2YgZHluYW1pYyBjaGVja3MgaW50byB0aGUgaW5z
dHJ1Y3Rpb24gc3RyZWFtLgotI2lmICFBU1NFUlRfRElTQUJMRUQKLSNkZWZpbmUgREZHX0VOQUJM
RV9KSVRfQVNTRVJUIDEKLSNlbHNlCi0jZGVmaW5lIERGR19FTkFCTEVfSklUX0FTU0VSVCAwCi0j
ZW5kaWYKLS8vIENvbnNpc3RlbmN5IGNoZWNrIGNvbnRlbnRzIGNvbXBpbGVyIGRhdGEgc3RydWN0
dXJlcy4KLSNkZWZpbmUgREZHX0VOQUJMRV9DT05TSVNURU5DWV9DSEVDSyAwCi0vLyBFbWl0IGEg
YnJlYWtwb2ludCBpbnRvIHRoZSBoZWFkIG9mIGV2ZXJ5IGdlbmVyYXRlZCBmdW5jdGlvbiwgdG8g
YWlkIGRlYnVnZ2luZyBpbiBHREIuCi0jZGVmaW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX0VW
RVJZX0ZVTkNUSU9OIDAKLS8vIEVtaXQgYSBicmVha3BvaW50IGludG8gdGhlIGhlYWQgb2YgZXZl
cnkgZ2VuZXJhdGVkIGJsb2NrLCB0byBhaWQgZGVidWdnaW5nIGluIEdEQi4KLSNkZWZpbmUgREZH
X0VOQUJMRV9KSVRfQlJFQUtfT05fRVZFUllfQkxPQ0sgMAotLy8gRW1pdCBhIGJyZWFrcG9pbnQg
aW50byB0aGUgaGVhZCBvZiBldmVyeSBnZW5lcmF0ZWQgbm9kZSwgdG8gYWlkIGRlYnVnZ2luZyBp
biBHREIuCi0jZGVmaW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX0VWRVJZX05PREUgMAotLy8g
RW1pdCBhIHBhaXIgb2YgeG9yUHRyKCkncyBvbiByZWdUMCB3aXRoIHRoZSBub2RlIGluZGV4IHRv
IG1ha2UgaXQgZWFzeSB0byBzcG90IG5vZGUgYm91bmRhcmllcyBpbiBkaXNhc3NlbWJsZWQgY29k
ZS4KLSNkZWZpbmUgREZHX0VOQUJMRV9YT1JfREVCVUdfQUlEIDAKLS8vIEVtaXQgYSBicmVha3Bv
aW50IGludG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgY29kZS4KLSNkZWZpbmUgREZHX0VOQUJM
RV9KSVRfQlJFQUtfT05fU1BFQ1VMQVRJT05fRkFJTFVSRSAwCi0vLyBEaXNhYmxlIHRoZSBERkcg
SklUIHdpdGhvdXQgaGF2aW5nIHRvIHRvdWNoIFBsYXRmb3JtLmgKLSNkZWZpbmUgREZHX0RFQlVH
X0xPQ0FMX0RJU0JBTEUgMAotLy8gR2VuZXJhdGUgc3RhdHMgb24gaG93IHN1Y2Nlc3NmdWwgd2Ug
d2VyZSBpbiBtYWtpbmcgdXNlIG9mIHRoZSBERkcgaml0LCBhbmQgcmVtYWluaW5nIG9uIHRoZSBo
b3QgcGF0aC4KLSNkZWZpbmUgREZHX0VOQUJMRV9TVUNDRVNTX1NUQVRTIDAKLQogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBzdHJ1Y3QgTm9kZTsKQEAgLTk4LDI5ICs2NSwxNyBA
QCBlbnVtIFJlZk5vZGVNb2RlIHsKIAogaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0aW9uRW5h
YmxlZCgpCiB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKICAgICByZXR1cm4gT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uKCkgfHwgT3B0
aW9uczo6ZHVtcEdyYXBoQXRFYWNoUGhhc2UoKTsKLSNlbmRpZgogfQogCiBpbmxpbmUgYm9vbCBs
b2dDb21waWxhdGlvbkNoYW5nZXMoKQogewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
LSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCiAgICAgcmV0dXJuIHZlcmJvc2VDb21waWxhdGlvbkVu
YWJsZWQoKSB8fCBPcHRpb25zOjpsb2dDb21waWxhdGlvbkNoYW5nZXMoKTsKLSNlbmRpZgogfQog
CiBpbmxpbmUgYm9vbCBzaG91bGREdW1wR3JhcGhBdEVhY2hQaGFzZSgpCiB7Ci0jaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UK
ICAgICByZXR1cm4gT3B0aW9uczo6ZHVtcEdyYXBoQXRFYWNoUGhhc2UoKTsKLSNlbmRpZgogfQog
CiBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDYgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBib29sIGZvbGRDb25zdGFudHMoQmFzaWNCbG9jayogYmxvY2spCiAgICAgewot
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxv
ZygiQ29uc3RhbnQgZm9sZGluZyBjb25zaWRlcmluZyBCbG9jayAiLCAqYmxvY2ssICIuXG4iKTsK
LSNlbmRpZgogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgbV9zdGF0ZS5i
ZWdpbkJhc2ljQmxvY2soYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4SW5CbG9j
ayA9IDA7IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEwICs4OCw2IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBOb2RlVHlwZSBvcCA9IG5vZGUtPm9wKCk7CiAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCIgICAlcyBAJXU6ICIsIEdyYXBo
OjpvcE5hbWUob3ApLCBub2RlLT5pbmRleCgpKTsKLSNlbmRpZgotICAgICAgICAKICAgICAgICAg
c3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNldExvY2FsOiB7CiAgICAgICAgICAgICAvLyBU
aGlzIGdldHMgaGFuZGxlZCBieSBmaXh1cFNldExvY2Fsc0luQmxvY2soKS4KQEAgLTk2MywxNCAr
OTU5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREZHX05PREVf
RE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbm9kZSwgb2JzZXJ2ZVVudHlwZWRFZGdlKTsKLQotI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgaWYgKCEobm9k
ZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIm5l
dyBjaGlsZHJlbjogIik7Ci0gICAgICAgICAgICBub2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkYXRh
RmlsZSgpKTsKLSAgICAgICAgfQotICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSNlbmRpZgogICAg
IH0KICAgICAKICAgICB2b2lkIG9ic2VydmVVbnR5cGVkRWRnZShOb2RlKiwgRWRnZSYgZWRnZSkK
QEAgLTE1NDAsMTIgKzE1MjgsNiBAQCBwcml2YXRlOgogICAgICAgICBpZiAoZGlyZWN0aW9uID09
IEZvcndhcmRTcGVjdWxhdGlvbikKICAgICAgICAgICAgIHJlc3VsdC0+bWVyZ2VGbGFncyhOb2Rl
RXhpdHNGb3J3YXJkKTsKICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigKLSAgICAgICAgICAgICIocmVwbGFjaW5nIEAl
dS0+QCV1IHdpdGggQCV1LT5AJXUpICIsCi0gICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5pbmRl
eCgpLCBlZGdlLT5pbmRleCgpLCBtX2N1cnJlbnROb2RlLT5pbmRleCgpLCByZXN1bHQtPmluZGV4
KCkpOwotI2VuZGlmCi0KICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAg
ICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MywxMSArMTYzLDYgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlh
bGl6ZSgpCiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0gbV9ncmFwaC5tX211c3RI
YW5kbGVBYnN0cmFjdFZhbHVlc1tpXTsKICAgICAgICAgICAgIGludCBvcGVyYW5kID0gbV9ncmFw
aC5tX211c3RIYW5kbGVBYnN0cmFjdFZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7CiAgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCkubWVyZ2UodmFsdWUpOwot
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRh
dGFMb2dGKCIgICAgSW5pdGlhbGl6aW5nIEJsb2NrICMldSwgb3BlcmFuZCByJWQsIHRvICIsIGJs
b2NrSW5kZXgsIG9wZXJhbmQpOwotICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5vcGVy
YW5kKG9wZXJhbmQpLmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJcbiIpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlz
aXQgPSB0cnVlOwogICAgIH0KQEAgLTIwMywxNyArMTk4LDExIEBAIGJvb2wgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmVuZEJhc2ljQmxvY2sKICAgICAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkg
ewogICAgICAgICBjYXNlIFRocmVhZGVkQ1BTOiB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBh
cmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFy
Z3VtZW50cygpOyArK2FyZ3VtZW50KSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgIE1lcmdpbmcgc3Rh
dGUgZm9yIGFyZ3VtZW50ICV6dS5cbiIsIGFyZ3VtZW50KTsKLSNlbmRpZgogICAgICAgICAgICAg
ICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gYmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1
bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVN0YXRlQXRU
YWlsKGRlc3RpbmF0aW9uLCBtX3ZhcmlhYmxlcy5hcmd1bWVudChhcmd1bWVudCksIGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewotI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiICAgICAgICBNZXJnaW5nIHN0YXRlIGZvciBsb2NhbCAlenUuXG4iLCBsb2NhbCk7Ci0jZW5k
aWYKICAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJsb2NrLT52
YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMubG9jYWwobG9jYWwpLCBibG9j
ay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CiAgICAgICAgICAgICB9CkBAIC0yNDAs
MTAgKzIyOSw2IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2sKICAg
ICAKICAgICBBU1NFUlQobWVyZ2VNb2RlICE9IERvbnRNZXJnZSB8fCAhY2hhbmdlZCk7CiAgICAg
Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgIGRhdGFMb2dG
KCIgICAgICAgIEJyYW5jaCBkaXJlY3Rpb24gPSAlc1xuIiwgYnJhbmNoRGlyZWN0aW9uVG9TdHJp
bmcobV9icmFuY2hEaXJlY3Rpb24pKTsKLSNlbmRpZgotICAgIAogICAgIHJlc2V0KCk7CiAgICAg
CiAgICAgaWYgKG1lcmdlTW9kZSAhPSBNZXJnZVRvU3VjY2Vzc29ycykKQEAgLTI3MywxNiArMjU4
LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAv
LyBHZXRMb2NhbCdzIHJlc3VsdC4KICAgICAgICAgCiAgICAgICAgIHNvdXJjZSA9IGluVmFyaWFi
bGU7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBk
YXRhTG9nRigiICAgICAgICAgIFRyYW5zZmVyaW5nICIpOwotICAgICAgICBzb3VyY2UuZHVtcChX
VEY6OmRhdGFGaWxlKCkpOwotICAgICAgICBkYXRhTG9nRigiIGZyb20gbGFzdCBhY2Nlc3MgZHVl
IHRvIGNhcHR1cmVkIHZhcmlhYmxlLlxuIik7Ci0jZW5kaWYKICAgICB9IGVsc2UgewotI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIiAg
ICAgICAgICBJdCdzIGxpdmUsIG5vZGUgQCV1LlxuIiwgbm9kZS0+aW5kZXgoKSk7Ci0jZW5kaWYK
LSAgICAKICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgIGNhc2UgUGhpOgog
ICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMjkwLDIxICsyNjYsMTEgQEAgYm9vbCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICBjYXNlIEZsdXNoOgogICAg
ICAgICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBoZWFkIHRvIHRh
aWwuCiAgICAgICAgICAgICBzb3VyY2UgPSBpblZhcmlhYmxlOwotI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAg
VHJhbnNmZXJpbmcgIik7Ci0gICAgICAgICAgICBzb3VyY2UuZHVtcChXVEY6OmRhdGFGaWxlKCkp
OwotICAgICAgICAgICAgZGF0YUxvZ0YoIiBmcm9tIGhlYWQgdG8gdGFpbC5cbiIpOwotI2VuZGlm
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldExvY2Fs
OgogICAgICAgICAgICAgLy8gVGhlIGJsb2NrIHJlZmluZXMgdGhlIHZhbHVlIHdpdGggYWRkaXRp
b25hbCBzcGVjdWxhdGlvbnMuCiAgICAgICAgICAgICBzb3VyY2UgPSBmb3JOb2RlKG5vZGUpOwot
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRh
dGFMb2dGKCIgICAgICAgICAgUmVmaW5pbmcgdG8gIik7Ci0gICAgICAgICAgICBzb3VyY2UuZHVt
cChXVEY6OmRhdGFGaWxlKCkpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0jZW5kaWYK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgU2V0TG9jYWw6
CkBAIC0zMTksMTEgKzI4NSw2IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3Rh
dGVBdFQKICAgICAgICAgICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjRG91YmxlKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgICBTZXR0aW5n
IHRvICIpOwotICAgICAgICAgICAgc291cmNlLmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJcbiIpOwotI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMzUsOSArMjk2LDYgQEAgYm9vbCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2Up
IHsKICAgICAgICAgLy8gQWJzdHJhY3QgZXhlY3V0aW9uIGRpZCBub3QgY2hhbmdlIHRoZSBvdXRw
dXQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLCBmb3IgdGhpcwogICAgICAgICAvLyBiYXNpYyBibG9j
aywgb24gdGhpcyBpdGVyYXRpb24uCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiICAgICAgICAgIE5vdCBjaGFuZ2VkIVxuIik7Ci0j
ZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTM0NSw5ICszMDMs
NiBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgLy8gdGhp
cyB2YXJpYWJsZSBhZnRlciBleGVjdXRpb24gb2YgdGhpcyBiYXNpYyBibG9jay4gVXBkYXRlIHRo
ZSBzdGF0ZSwgYW5kIHJldHVybgogICAgIC8vIHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZml4
cG9pbnQgbXVzdCBnbyBvbiEKICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoIiAgICAgICAgICBD
aGFuZ2VkIVxuIik7Ci0jZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA4LDIzICsz
NjMsMTQgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgIHN3
aXRjaCAodGVybWluYWwtPm9wKCkpIHsKICAgICBjYXNlIEp1bXA6IHsKICAgICAgICAgQVNTRVJU
KGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9PSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9u
KTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRh
dGFMb2coIiAgICAgICAgTWVyZ2luZyB0byBibG9jayAiLCAqdGVybWluYWwtPnRha2VuQmxvY2so
KSwgIi5cbiIpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBtZXJnZShiYXNpY0Jsb2NrLCB0ZXJt
aW5hbC0+dGFrZW5CbG9jaygpKTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQnJhbmNoOiB7
CiAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24gIT0gSW52YWxp
ZEJyYW5jaERpcmVjdGlvbik7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiICAg
ICAgICBNZXJnaW5nIHRvIGJsb2NrICIsICp0ZXJtaW5hbC0+dGFrZW5CbG9jaygpLCAiLlxuIik7
Ci0jZW5kaWYKICAgICAgICAgaWYgKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiAhPSBU
YWtlRmFsc2UpCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRlcm1p
bmFsLT50YWtlbkJsb2NrKCkpOwotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgZGF0YUxvZygiICAgICAgICBNZXJnaW5nIHRvIGJsb2NrICIsICp0ZXJt
aW5hbC0+bm90VGFrZW5CbG9jaygpLCAiLlxuIik7Ci0jZW5kaWYKICAgICAgICAgaWYgKGJhc2lj
QmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiAhPSBUYWtlVHJ1ZSkKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGVybWluYWwtPm5vdFRha2VuQmxvY2soKSk7CiAgICAg
ICAgIHJldHVybiBjaGFuZ2VkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTEgKzEw
OCw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KCkKICAgICAvLyBXZSBnZW5lcmF0
ZSB0aGUgc3BlY3VsYXRpdmUgY29kZSBwYXRoLCBmb2xsb3dlZCBieSBPU1IgZXhpdCBjb2RlIHRv
IHJldHVybgogICAgIC8vIHRvIHRoZSBvbGQgSklUIGNvZGUgaWYgc3BlY3VsYXRpb25zIGZhaWwu
CiAKLSNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9FVkVSWV9GVU5DVElPTikKLSAgICAvLyBI
YW5keSBkZWJ1ZyB0b29sIQotICAgIGJyZWFrcG9pbnQoKTsKLSNlbmRpZgotICAgIAogICAgIGJv
b2wgY29tcGlsZWRTcGVjdWxhdGl2ZSA9IG1fc3BlY3VsYXRpdmUtPmNvbXBpbGUoKTsKICAgICBB
U1NFUlRfVU5VU0VEKGNvbXBpbGVkU3BlY3VsYXRpdmUsIGNvbXBpbGVkU3BlY3VsYXRpdmUpOwog
fQpAQCAtMTUwLDEwICsxNDUsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9u
SGFuZGxlCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7
CiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBz
dHJ1Y3R1cmVzLgotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigi
SklUIGNvZGUgZm9yICVwIHN0YXJ0IGF0IFslcCwgJXApLiBTaXplID0gJXp1LlxuIiwgbV9jb2Rl
QmxvY2ssIGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihsaW5r
QnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCksIGxpbmtCdWZm
ZXIuZGVidWdTaXplKCkpOwotI2VuZGlmCi0gICAgCiAgICAgbV9qaXRDb2RlLT5jb21tb24uZnJh
bWVSZWdpc3RlckNvdW50ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKTsKICAgICBtX2pp
dENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gbV9ncmFwaC5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAx
NTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTggKzM4LDYgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcywg
U3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkpCiB7CiAgICAgLy8gMSkgUHJvLWZvcm1hIHN0
dWZmLgotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiT1NSIGV4
aXQgKCIpOwotICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmln
aW47IDsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsK
LSAgICAgICAgZGF0YUxvZ0YoImJjIyV1IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAg
ICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkYXRhTG9nRigiIC0+ICVwICIsIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5leGVjdXRhYmxlLmdldCgpKTsKLSAgICB9Ci0gICAgZGF0YUxvZ0YoIikgYXQgSklUIG9mZnNl
dCAweCV4ICAiLCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKLSAgICBkYXRhTG9nKG9wZXJhbmRzKTsK
LSNlbmRpZgotICAgIAogICAgIGlmIChPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpIHsKICAg
ICAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3Vs
YXRpb25GYWlsdXJlRGVidWdJbmZvOwogICAgICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IG1f
aml0LmNvZGVCbG9jaygpOwpAQCAtNTcsMTUgKzQ1LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBtX2ppdC5kZWJ1Z0NhbGwoZGVidWdPcGVyYXRp
b25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKICAgICB9CiAgICAgCi0jaWYg
REZHX0VOQUJMRShKSVRfQlJFQUtfT05fU1BFQ1VMQVRJT05fRkFJTFVSRSkKLSAgICBtX2ppdC5i
cmVha3BvaW50KCk7Ci0jZW5kaWYKLSAgICAKLSNpZiBERkdfRU5BQkxFKFNVQ0NFU1NfU1RBVFMp
Ci0gICAgc3RhdGljIFNhbXBsaW5nQ291bnRlciBjb3VudGVyKCJTcGVjdWxhdGlvbkZhaWx1cmUi
KTsKLSAgICBtX2ppdC5lbWl0Q291bnQoY291bnRlcik7Ci0jZW5kaWYKLQogICAgIC8vIDIpIFBl
cmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkgd2hl
biBhbiBvcGVyYXRpb24KICAgICAvLyAgICBzdGFydHMgbXV0YXRpbmcgc3RhdGUgYmVmb3JlIHZl
cmlmeWluZyB0aGUgc3BlY3VsYXRpb24gaXQgaGFzIGFscmVhZHkgbWFkZS4KICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQu
Y3BwCShyZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTggKzQwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+
JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkpCiB7CiAgICAgLy8gMSkg
UHJvLWZvcm1hIHN0dWZmLgotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRh
TG9nRigiT1NSIGV4aXQgZm9yICgiKTsKLSAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IGV4aXQubV9jb2RlT3JpZ2luOyA7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJiYyMldSIsIGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCk7Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGF0YUxvZ0YoIiAtPiAlcCAiLCBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7Ci0gICAgfQotICAgIGRhdGFMb2dG
KCIpICAiKTsKLSAgICBkYXRhTG9nKG9wZXJhbmRzKTsKLSNlbmRpZgotCiAgICAgaWYgKE9wdGlv
bnM6OnByaW50RWFjaE9TUkV4aXQoKSkgewogICAgICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1
Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87CiAgICAg
ICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gbV9qaXQuY29kZUJsb2NrKCk7CkBAIC01OSwxNSAr
NDcsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAg
IG1faml0LmRlYnVnQ2FsbChkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlLCBk
ZWJ1Z0luZm8pOwogICAgIH0KICAgICAKLSNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9TUEVD
VUxBVElPTl9GQUlMVVJFKQotICAgIG1faml0LmJyZWFrcG9pbnQoKTsKLSNlbmRpZgotICAgIAot
I2lmIERGR19FTkFCTEUoU1VDQ0VTU19TVEFUUykKLSAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVy
IGNvdW50ZXIoIlNwZWN1bGF0aW9uRmFpbHVyZSIpOwotICAgIG1faml0LmVtaXRDb3VudChjb3Vu
dGVyKTsKLSNlbmRpZgotICAgIAogICAgIC8vIDIpIFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3Zl
cnkuIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkgd2hlbiBhbiBvcGVyYXRpb24KICAgICAvLyAg
ICBzdGFydHMgbXV0YXRpbmcgc3RhdGUgYmVmb3JlIHZlcmlmeWluZyB0aGUgc3BlY3VsYXRpb24g
aXQgaGFzIGFscmVhZHkgbWFkZS4KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsMTMgKzc2LDYgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4ICE9IFVJTlRfTUFYKQogICAgICAgICBy
ZWNvdmVyeSA9ICZjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnNwZWN1bGF0aW9uUmVjb3Zl
cnlbZXhpdC5tX3JlY292ZXJ5SW5kZXhdOwogCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQotICAgIGRhdGFMb2coCi0gICAgICAgICJHZW5lcmF0aW5nIE9TUiBleGl0ICMiLCBleGl0SW5k
ZXgsICIgKHNlcSMiLCBleGl0Lm1fc3RyZWFtSW5kZXgsCi0gICAgICAgICIsIGJjIyIsIGV4aXQu
bV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsICIsICIsCi0gICAgICAgIGV4aXQubV9raW5kLCAi
KSBmb3IgIiwgKmNvZGVCbG9jaywgIi5cbiIpOwotI2VuZGlmCi0KICAgICB7CiAgICAgICAgIEND
YWxsSGVscGVycyBqaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIE9TUkV4aXRDb21waWxlciBl
eGl0Q29tcGlsZXIoaml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc2LDEwICsxNzYsNiBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1Rh
cmdldChDQ2FsbEhlbHBlcnMmCiAgICAgCiAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0Lmp1bXAo
R1BSSW5mbzo6cmVnVDIpOwotCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRh
dGFMb2dGKCIgICAtPiAlcFxuIiwganVtcFRhcmdldCk7Ci0jZW5kaWYKIH0KIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU5ODgz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMyArNTgsNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7Ci0gICAgICAgICAgICAKLSNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAg
ICAgICAgICAgIkFyZ3VtZW50IFsiLCBhcmcsICJdIHByZWRpY3Rpb246ICIsCi0gICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0aW9uRHVtcChtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLAotICAgICAgICAgICAgICAgICAgICAiXG4i
KTsKLSNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw5ICs1Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3Jt
ID09IFRocmVhZGVkQ1BTKTsKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV91bmlmaWNhdGlvblN0
YXRlID09IEdsb2JhbGx5VW5pZmllZCk7CiAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgbV9jb3VudCA9IDA7Ci0jZW5kaWYKICAgICAg
ICAgLy8gMSkgcHJvcGFnYXRlIHByZWRpY3Rpb25zCiAKICAgICAgICAgZG8gewpAQCAtMTMyLDEw
ICsxMjksNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLT5v
cCgpOwogCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAg
ICBkYXRhTG9nKCIgICAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgIiAiLCBtX2N1cnJlbnROb2RlLCAi
OiAiLCBOb2RlRmxhZ3NEdW1wKG5vZGUtPmZsYWdzKCkpLCAiICIpOwotI2VuZGlmCi0gICAgICAg
IAogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHN3aXRj
aCAob3ApIHsKQEAgLTYwNSwxOCArNTk4LDExIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAg
fQogCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBk
YXRhTG9nKFNwZWN1bGF0aW9uRHVtcChub2RlLT5wcmVkaWN0aW9uKCkpLCAiXG4iKTsKLSNlbmRp
ZgotICAgICAgICAKICAgICAgICAgbV9jaGFuZ2VkIHw9IGNoYW5nZWQ7CiAgICAgfQogICAgICAg
ICAKICAgICB2b2lkIHByb3BhZ2F0ZUZvcndhcmQoKQogICAgIHsKLSNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJQcm9wYWdhdGluZyBw
cmVkaWN0aW9ucyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7Ci0jZW5kaWYKICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1C
bG9ja3MoKTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAt
NjMxLDkgKzYxNyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBwcm9wYWdhdGVCYWNrd2Fy
ZCgpCiAgICAgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgZGF0YUxvZ0YoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGJhY2t3YXJkIFsldV1cbiIs
ICsrbV9jb3VudCk7Ci0jZW5kaWYKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBp
ZiAoIWJsb2NrKQpAQCAtNzYxLDkgKzc0NCw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBk
b1JvdW5kT2ZEb3VibGVWb3RpbmcoKQogICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJWb3Rpbmcgb24gZG91YmxlIHVzZXMg
b2YgbG9jYWxzIFsldV1cbiIsIG1fY291bnQpOwotI2VuZGlmCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YVtpXS5maW5kKCktPmNsZWFy
Vm90ZXMoKTsKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0lu
ZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CkBAIC03OTQsMTAgKzc3
NCw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgTm9kZSogbV9jdXJyZW50Tm9kZTsKICAgICBib29s
IG1fY2hhbmdlZDsKLQotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
LSAgICB1bnNpZ25lZCBtX2NvdW50OwotI2VuZGlmCiB9OwogICAgIAogYm9vbCBwZXJmb3JtUHJl
ZGljdGlvblByb3BhZ2F0aW9uKEdyYXBoJiBncmFwaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEyLDcgKzIxMiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzTG9ja2VkKHJlZykgfHwg
bmFtZShyZWcpLmlzVmFsaWQoKTsKICAgICB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgIHZv
aWQgZHVtcCgpCiAgICAgewogICAgICAgICAvLyBGb3IgZWFjaCByZWdpc3RlciwgcHJpbnQgdGhl
IFZpcnR1YWxSZWdpc3RlciAnbmFtZScuCkBAIC0yMjQsNyArMjIzLDYgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgIH0KLSNlbmRpZgogCiAgICAgY2xh
c3MgaXRlcmF0b3IgewogICAgIGZyaWVuZCBjbGFzcyBSZWdpc3RlckJhbms8QmFua0luZm8+OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgJKHJldmlzaW9u
IDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMsMTggKzEwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQz
Ml90IGluZGV4ID0gY2hpbGQtPnZpcnR1YWxSZWdpc3RlcigpLnRvTG9jYWwoKTsKICAgICAgICAg
QVNTRVJUKG1fdXNlZFtpbmRleF0gIT0gbWF4KCkpOwogICAgICAgICBpZiAoY2hpbGQtPnJlZkNv
dW50KCkgPT0gKyttX3VzZWRbaW5kZXhdKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZ0YoIiBGcmVlaW5nIHZpcnR1YWwgcmVn
aXN0ZXIgJXUuIiwgaW5kZXgpOwotI2VuZGlmCiAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlIGNv
dW50IGluIHRoZSBzY29yZWJvYXJkIHJlYWNoZXMgdGhlIHVzZSBjb3VudCBmb3IgdGhlIG5vZGUs
CiAgICAgICAgICAgICAvLyB0aGVuIHRoaXMgd2FzIGl0cyBsYXN0IHVzZTsgdGhlIHZpcnR1YWwg
cmVnaXN0ZXIgaXMgbm93IGZyZWUuCiAgICAgICAgICAgICAvLyBDbGVhciB0aGUgdXNlIGNvdW50
ICYgYWRkIHRvIHRoZSBmcmVlIGxpc3QuCiAgICAgICAgICAgICBtX3VzZWRbaW5kZXhdID0gMDsK
ICAgICAgICAgICAgIG1fZnJlZS5hcHBlbmQoaW5kZXgpOwotICAgICAgICB9IGVsc2UgewotI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFM
b2dGKCIgVmlydHVhbCByZWdpc3RlciAldSBpcyBhdCAldS8ldSB1c2VzLiIsIGluZGV4LCBtX3Vz
ZWRbaW5kZXhdLCBjaGlsZC0+cmVmQ291bnQoKSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0K
ICAgICB2b2lkIHVzZShFZGdlIGNoaWxkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTU5ODgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCwxNSArNDgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNsb3dQYXRoR2Vu
ZXJhdG9yKCkgeyB9CiAgICAgdm9pZCBnZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0KQogICAg
IHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJHZW5l
cmF0aW5nIHNsb3cgcGF0aCAlcCBhdCBvZmZzZXQgMHgleFxuIiwgdGhpcywgaml0LT5tX2ppdC5k
ZWJ1Z09mZnNldCgpKTsKLSNlbmRpZgogICAgICAgICBtX2xhYmVsID0gaml0LT5tX2ppdC5sYWJl
bCgpOwogICAgICAgICBqaXQtPm1fY3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2RlOwogICAgICAg
ICBnZW5lcmF0ZUludGVybmFsKGppdCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBq
aXQtPm1faml0LmJyZWFrcG9pbnQoKTsgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIGdlbmVyYXRvciBq
dW1wcyBiYWNrIHRvIHNvbWV3aGVyZQotI2VuZGlmCisgICAgICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKQorICAgICAgICAgICAgaml0LT5tX2ppdC5icmVha3BvaW50KCk7IC8vIG1ha2Ugc3VyZSB0
aGF0IHRoZSBnZW5lcmF0b3IganVtcHMgYmFjayB0byBzb21ld2hlcmUKICAgICB9CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAg
IHZpcnR1YWwgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDE1OTg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw5ICs3MjcsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiB0ZW1wbGF0ZTxib29sIHN0cmlj
dD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRn
ZSBlZGdlLCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpCiB7Ci0jaWYgREZHX0VOQUJMRShERUJV
R19WRVJCT1NFKQotICAgIGRhdGFMb2dGKCJTcGVjSW50QCVkICAgIiwgZWRnZS0+aW5kZXgoKSk7
Ci0jZW5kaWYKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdl
KTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwogICAgIEFTU0VSVChl
ZGdlLnVzZUtpbmQoKSAhPSBLbm93bkludDMyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNJ
bnQzMikpOwpAQCAtODI4LDkgKzgyNSw2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUludDMKIAogRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91Ymxl
KEVkZ2UgZWRnZSkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxv
Z0YoIlNwZWNEb3VibGVAJWQgICAiLCBlZGdlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CiAgICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtu
b3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7CkBAIC05
NjUsOSArOTU5LDYgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91Ygog
CiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKIHsK
LSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoIlNwZWNDZWxsQCVk
ICAgIiwgZWRnZS0+aW5kZXgoKSk7Ci0jZW5kaWYKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUu
bV90eXBlOwogICAgIEFTU0VSVCgoZWRnZS51c2VLaW5kKCkgIT0gS25vd25DZWxsVXNlICYmIGVk
Z2UudXNlS2luZCgpICE9IEtub3duU3RyaW5nVXNlKSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVj
Q2VsbCkpOwpAQCAtMTA0Nyw5ICsxMDM4LDYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlQ2VsbAogCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKEVkZ2UgZWRnZSkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0
YUxvZ0YoIlNwZWNCb29sQCVkICAgIiwgZWRnZS5ub2RlKCktPmluZGV4KCkpOwotI2VuZGlmCiAg
ICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CiAgICAgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKICAgICBtX2ludGVycHJldGVyLmZpbHRl
cih2YWx1ZSwgU3BlY0Jvb2xlYW4pOwpAQCAtMzA5NSwxMSArMzA4Myw2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJUKEdQUkluZm86OnJl
Z1QxICE9IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgQVNTRVJUKEdQUkluZm86
OnJldHVyblZhbHVlR1BSICE9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIAotI2lmIERG
R19FTkFCTEUoU1VDQ0VTU19TVEFUUykKLSAgICAgICAgc3RhdGljIFNhbXBsaW5nQ291bnRlciBj
b3VudGVyKCJTcGVjdWxhdGl2ZUpJVCIpOwotICAgICAgICBtX2ppdC5lbWl0Q291bnQoY291bnRl
cik7Ci0jZW5kaWYKLQogICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBpbiByZXR1cm5WYWx1
ZUdQUi4KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgb3AxLmZpbGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzM4LDkgKzczOCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKIHRlbXBsYXRlPGJvb2wgc3RyaWN0PgogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkZvcm1h
dCkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoIlNwZWNJ
bnRAJWQgICAiLCBlZGdlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgIEFic3RyYWN0VmFsdWUmIHZh
bHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2
YWx1ZS5tX3R5cGU7CiAgICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duSW50MzJVc2Ug
fHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0ludDMyKSk7CkBAIC0xMTIzLDkgKzExMjAsNiBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1CiAKIEZQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7Ci0jaWYgREZHX0VOQUJM
RShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2dGKCJTcGVjRG91YmxlQCVkICAgIiwgZWRnZS0+
aW5kZXgoKSk7Ci0jZW5kaWYKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwogICAg
IEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjRnVsbE51bWJlcikpOwpAQCAtMTMyMCw5ICsxMzE0LDYgQEAgRlBSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgZGF0YUxvZ0YoIlNwZWNDZWxsQCVkICAgIiwgZWRnZS0+aW5kZXgoKSk7Ci0jZW5k
aWYKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAg
ICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwogICAgIEFTU0VSVCgoZWRnZS51
c2VLaW5kKCkgIT0gS25vd25DZWxsVXNlICYmIGVkZ2UudXNlS2luZCgpICE9IEtub3duU3RyaW5n
VXNlKSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkpOwpAQCAtMTM2NSwxMSArMTM1Niwx
MSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNDZWxsOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAg
ICAgICBtX2dwcnMubG9jayhncHIpOwotI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2tDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAg
ICAgIG1faml0LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgY2hlY2tDZWxsLmxpbmsoJm1faml0KTsK
LSNlbmRpZgorICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2tDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgICAg
ICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgICAgICBjaGVja0NlbGwubGluaygmbV9qaXQp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogCkBAIC0xNDA1LDkgKzEz
OTYsNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAKIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogewotI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiU3BlY0Jvb2xAJWQgICAi
LCBlZGdlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5
cGU7CiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNCb29sZWFuKTsKQEAgLTM0
MzEsMTEgKzM0MTksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIEFTU0VSVChHUFJJbmZvOjpyZWdUMSAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CiAgICAgICAgIEFTU0VSVChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiAhPSBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7CiAKLSNpZiBERkdfRU5BQkxFKFNVQ0NFU1NfU1RBVFMpCi0gICAg
ICAgIHN0YXRpYyBTYW1wbGluZ0NvdW50ZXIgY291bnRlcigiU3BlY3VsYXRpdmVKSVQiKTsKLSAg
ICAgICAgbV9qaXQuZW1pdENvdW50KGNvdW50ZXIpOwotI2VuZGlmCi0KICAgICAgICAgLy8gUmV0
dXJuIHRoZSByZXN1bHQgaW4gcmV0dXJuVmFsdWVHUFIuCiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigp
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU5ODgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzOCw5ICsyMzgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3Vs
YXRpb25DCiB2b2lkIFNwZWN1bGF0aXZlSklUOjp0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihFeGl0S2luZCBraW5kLCBKU1ZhbHVlUmVncyBqc1ZhbHVlUmVncywgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQobV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyB8fCBtX2NhbkV4aXQpOwotI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiU3BlY3VsYXRpdmVKSVQg
d2FzIHRlcm1pbmF0ZWQuXG4iKTsKLSNlbmRpZgogICAgIGlmICghbV9jb21waWxlT2theSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVJlZ3MsIG5v
ZGUsIG1faml0Lmp1bXAoKSk7CkBAIC0zMDAsOSArMjk3LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6YWRkU2xvd1BhdGhHZW5lcmF0bwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpydW5TbG93UGF0
aEdlbmVyYXRvcnMoKQogewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRh
TG9nRigiUnVubmluZyAlbHUgc2xvdyBwYXRoIGdlbmVyYXRvcnMuXG4iLCBtX3Nsb3dQYXRoR2Vu
ZXJhdG9ycy5zaXplKCkpOwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
c2xvd1BhdGhHZW5lcmF0b3JzLnNpemUoKTsgKytpKQogICAgICAgICBtX3Nsb3dQYXRoR2VuZXJh
dG9yc1tpXS0+Z2VuZXJhdGUodGhpcyk7CiB9CkBAIC0xMDY5LDcgKzEwNjMsNiBAQCBib29sIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVN0cmljCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRTdHJpbmcoRGF0
YUZvcm1hdCBmb3JtYXQpCiB7CiAgICAgLy8gVGhlc2UgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhl
IERhdGFGb3JtYXQgZW51bS4KQEAgLTExMjUsMTE2ICsxMTE4LDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZHVtcChjb25zdCBjaGFyKiBsYQogICAgIGlmIChsYWJlbCkKICAgICAgICAgZGF0YUxv
Z0YoIjwvJXM+XG4iLCBsYWJlbCk7CiB9Ci0jZW5kaWYKLQotCi0jaWYgREZHX0VOQUJMRShDT05T
SVNURU5DWV9DSEVDSykKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVuY3koKQot
ewotICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0KLSAgICBmb3IgKGdwcl9pdGVyYXRvciBpdGVy
ID0gbV9ncHJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9ncHJzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgaWYgKGl0ZXIuaXNMb2NrZWQoKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkRGR19DT05T
SVNURU5DWV9DSEVDSyBmYWlsZWQ6IGdwciAlcyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVnTmFt
ZSgpKTsKLSAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Zm9yIChmcHJfaXRlcmF0b3IgaXRlciA9IG1fZnBycy5iZWdpbigpOyBpdGVyICE9IG1fZnBycy5l
bmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLmlzTG9ja2VkKCkpIHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBmcHIgJXMgaXMgbG9j
a2VkLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSk7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2VuZXJh
dGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IChWaXJ0dWFsUmVnaXN0ZXIpaTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGlu
Zm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
LSAgICAgICAgaWYgKCFpbmZvLmFsaXZlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKLSAgICAgICAgY2FzZSBEYXRhRm9y
bWF0Tm9uZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERhdGFGb3JtYXRKUzoK
LSAgICAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0
SlNEb3VibGU6Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKLSAgICAgICAgY2FzZSBE
YXRhRm9ybWF0SlNCb29sZWFuOgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBi
cmVhazsKLSNlbmRpZgotICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKLSAgICAgICAgY2Fz
ZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICAgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKLSAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZTogewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7Ci0gICAgICAgICAgICBBU1NFUlQoZ3ByICE9IEludmFsaWRHUFJSZWcpOwotICAg
ICAgICAgICAgaWYgKG1fZ3Bycy5uYW1lKGdwcikgIT0gdmlydHVhbFJlZ2lzdGVyKSB7Ci0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IG5hbWUg
bWlzbWF0Y2ggZm9yIHZpcnR1YWwgcmVnaXN0ZXIgJWQgKGdwciAlcykuXG4iLCB2aXJ0dWFsUmVn
aXN0ZXIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpKTsKLSAgICAgICAgICAgICAgICBmYWlsZWQg
PSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOiB7Ci0gICAgICAgICAgICBGUFJSZWcgZnByID0g
aW5mby5mcHIoKTsKLSAgICAgICAgICAgIEFTU0VSVChmcHIgIT0gSW52YWxpZEZQUlJlZyk7Ci0g
ICAgICAgICAgICBpZiAobV9mcHJzLm5hbWUoZnByKSAhPSB2aXJ0dWFsUmVnaXN0ZXIpIHsKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFt
ZSBtaXNtYXRjaCBmb3IgdmlydHVhbCByZWdpc3RlciAlZCAoZnByICVzKS5cbiIsIHZpcnR1YWxS
ZWdpc3RlciwgRlBSSW5mbzo6ZGVidWdOYW1lKGZwcikpOwotICAgICAgICAgICAgICAgIGZhaWxl
ZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIERhdGFGb3JtYXRPU1JNYXJrZXI6Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1h
dERlYWQ6Ci0gICAgICAgIGNhc2UgRGF0YUZvcm1hdEFyZ3VtZW50czoKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGZvciAoZ3ByX2l0ZXJhdG9yIGl0ZXIgPSBtX2dwcnMuYmVnaW4oKTsg
aXRlciAhPSBtX2dwcnMuZW5kKCk7ICsraXRlcikgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmlydHVhbFJlZ2lzdGVyID0gaXRlci5uYW1lKCk7Ci0gICAgICAgIGlmICghdmlydHVhbFJlZ2lz
dGVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEdlbmVyYXRp
b25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxS
ZWdpc3Rlcik7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaWYgKGl0ZXIucmVnSUQoKSAh
PSBpbmZvLmdwcigpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiREZHX0NPTlNJU1RFTkNZX0NI
RUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVk
KS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBpZiAoIShpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci5yZWdJ
RCgpICE9IGluZm8uZ3ByKCkpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiREZHX0NPTlNJ
U1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJl
Z2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAg
ICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby50YWdHUFIoKSAmJiBpdGVy
LnJlZ0lEKCkgIT0gaW5mby5wYXlsb2FkR1BSKCkpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVz
ICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdp
c3Rlcik7Ci0gICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotI2VuZGlmCi0gICAgfQotCi0gICAgZm9yIChmcHJfaXRlcmF0b3IgaXRlciA9IG1f
ZnBycy5iZWdpbigpOyBpdGVyICE9IG1fZnBycy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBpdGVyLm5hbWUoKTsKLSAgICAgICAgaWYg
KCF2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgaWYgKGl0ZXIucmVnSUQoKSAhPSBpbmZv
LmZwcigpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZh
aWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZnByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIs
IGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICBmYWlsZWQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGZhaWxlZCkgewotICAgICAgICBk
dW1wKCk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotfQotI2VuZGlmCiAKIEdQUlRlbXBvcmFy
eTo6R1BSVGVtcG9yYXJ5KCkKICAgICA6IG1faml0KDApCkBAIC0xNTgwLDE0ICsxNDYzLDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0jaWYgREZHX0VOQUJMRShKSVRfQlJFQUtfT05fRVZFUllfQkxPQ0spCi0gICAg
bV9qaXQuYnJlYWtwb2ludCgpOwotI2VuZGlmCi0gICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQotICAgIGRhdGFMb2coIlNldHRpbmcgdXAgc3RhdGUgZm9yIGJsb2NrICIsICptX2Js
b2NrLCAiOiAiKTsKLSNlbmRpZgotICAgIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFy
aWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRD
YWxsRnJhbWUoKTsKQEAgLTE2MjEsMTAgKzE0OTYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3VycmVudEJsb2NrCiAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCA9IENvZGVP
cmlnaW4oKTsKICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSA9IENvZGVPcmlnaW4oKTsK
ICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoIlxuIik7
Ci0jZW5kaWYKLQogICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8
IG1fYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5CbG9jaykgewogICAgICAgICBtX2N1cnJlbnRO
b2RlID0gbV9ibG9jay0+YXQobV9pbmRleEluQmxvY2spOwogICAgICAgICAKQEAgLTE2NDEsOSAr
MTUxMiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAg
ICAgbV9jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCA9IG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW5G
b3JFeGl0VGFyZ2V0OwogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSA9IG1fY3Vy
cmVudE5vZGUtPmNvZGVPcmlnaW47CiAgICAgICAgIGlmICghbV9jdXJyZW50Tm9kZS0+c2hvdWxk
R2VuZXJhdGUoKSkgewotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJTcGVjdWxhdGl2ZUpJVCBza2lwcGluZyBOb2RlIEAlZCAoYmMjJXUpIGF0IEpJ
VCBvZmZzZXQgMHgleCAgICAgIiwgbV9jdXJyZW50Tm9kZS0+aW5kZXgoKSwgbV9jdXJyZW50Tm9k
ZS0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKLSNlbmRp
ZgogICAgICAgICAgICAgc3dpdGNoIChtX2N1cnJlbnROb2RlLT5vcCgpKSB7CiAgICAgICAgICAg
ICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgbV9taW5pZmllZEdyYXBoLT5hcHBl
bmQoTWluaWZpZWROb2RlOjpmcm9tTm9kZShtX2N1cnJlbnROb2RlKSk7CkBAIC0xNjc5LDIwICsx
NTQ3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAg
ICAgICAgICAgICAgICAiU3BlY3VsYXRpdmVKSVQgZ2VuZXJhdGluZyBOb2RlIEAlZCAoYmMjJXUp
IGF0IEpJVCBvZmZzZXQgMHgleCIsCiAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9jdXJyZW50
Tm9kZS0+aW5kZXgoKSwKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9y
aWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKLSNpZiBERkdfRU5BQkxF
KERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIik7Ci0jZWxzZQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7Ci0jZW5kaWYKICAgICAgICAgICAgIH0KLSNp
ZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9FVkVSWV9OT0RFKQotICAgICAgICAgICAgbV9qaXQu
YnJlYWtwb2ludCgpOwotI2VuZGlmCi0jaWYgREZHX0VOQUJMRShYT1JfREVCVUdfQUlEKQotICAg
ICAgICAgICAgbV9qaXQueG9yUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIobV9jdXJyZW50
Tm9kZS0+aW5kZXgoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LnhvclB0
cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG1fY3VycmVudE5vZGUtPmluZGV4KCkpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9zcGVjdWxhdGlvbkRpcmVjdGlvbiA9IChtX2N1cnJl
bnROb2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9yd2FyZCkgPyBGb3J3YXJkU3BlY3VsYXRpb24g
OiBCYWNrd2FyZFNwZWN1bGF0aW9uOwogICAgICAgICAgICAgCkBAIC0xNzExLDQ2ICsxNTY3LDIw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgICAg
ICAgICBtX21pbmlmaWVkR3JhcGgtPmFwcGVuZChNaW5pZmllZE5vZGU6OmZyb21Ob2RlKG1fY3Vy
cmVudE5vZGUpKTsKICAgICAgICAgICAgICAgICBub3RpY2VPU1JCaXJ0aChtX2N1cnJlbnROb2Rl
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnROb2RlLT5oYXNSZXN1bHQoKSkgewotICAg
ICAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1ttX2N1
cnJlbnROb2RlLT52aXJ0dWFsUmVnaXN0ZXIoKS50b0xvY2FsKCldOwotICAgICAgICAgICAgICAg
IGRhdGFMb2dGKCItPiAlcywgdnIjJWQiLCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpKSwgbV9jdXJyZW50Tm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkudG9Mb2NhbCgpKTsK
LSAgICAgICAgICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRO
b25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdERvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICVz
IiwgRlBSSW5mbzo6ZGVidWdOYW1lKGluZm8uZnByKCkpKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBE
YXRhRm9ybWF0SlMpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAlcyAlcyIs
IEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnRhZ0dQUigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKGlu
Zm8ucGF5bG9hZEdQUigpKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgJXMiLCBHUFJJbmZvOjpkZWJ1Z05hbWUo
aW5mby5ncHIoKSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkYXRhTG9n
RigiICAgICIpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IiAgICAiKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0jZW5kaWYKLSAgICAgICAgCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBhYnN0cmFjdCBzdGF0ZSBpcyByZW1hdGVyaWFs
aXplZCBmb3IgdGhlIG5leHQgbm9kZS4KICAgICAgICAgaWYgKHNob3VsZEV4ZWN1dGVFZmZlY3Rz
KQogICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlRWZmZWN0cyhtX2luZGV4SW5CbG9j
ayk7Ci0gICAgICAgIAotICAgICAgICBpZiAobV9jdXJyZW50Tm9kZS0+c2hvdWxkR2VuZXJhdGUo
KSkKLSAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCiAgICAgLy8g
UGVyZm9ybSB0aGUgbW9zdCBiYXNpYyB2ZXJpZmljYXRpb24gdGhhdCBjaGlsZHJlbiBoYXZlIGJl
ZW4gdXNlZCBjb3JyZWN0bHkuCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2luZGV4KSB7
Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1tpbmRleF07
Ci0gICAgICAgIEFTU0VSVCghaW5mby5hbGl2ZSgpKTsKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX2dlbmVyYXRp
b25JbmZvLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGlu
Zm8gPSBtX2dlbmVyYXRpb25JbmZvW2luZGV4XTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFpbmZvLmFsaXZlKCkpOworICAgICAgICB9CiAgICAgfQotI2VuZGlmCiB9CiAKIC8vIElmIHdl
IGFyZSBtYWtpbmcgdHlwZSBwcmVkaWN0aW9ucyBhYm91dCBvdXIgYXJndW1lbnRzIHRoZW4KQEAg
LTIwOTQsOSArMTkyNCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNv
ZGUKIAogR2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVk
VHlwZUZvclRvSW50MzIoTm9kZSogbm9kZSkKIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgZGF0YUxvZ0YoImNoZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzJAJWQgICAiLCBu
b2RlLT5pbmRleCgpKTsKLSNlbmRpZgogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxNTk4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MDUsMTUgKzE5MDUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGxpbmtCcmFuY2hlcygpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVt
cChjb25zdCBjaGFyKiBsYWJlbCA9IDApOwotI2VuZGlmCi0KLSNpZiBERkdfRU5BQkxFKENPTlNJ
U1RFTkNZX0NIRUNLKQotICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwotI2Vsc2UKLSAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSB7IH0KLSNlbmRpZgogCiAgICAgYm9vbCBpc0ludGVnZXIo
Tm9kZSogbm9kZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
cmlhYmxlRXZlbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHJldmlzaW9uIDE1OTg4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNiwxMCArMTM2LDYgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpy
ZWNvbnN0cnVjdCgKICAgICB3aGlsZSAoYXQoc3RhcnRJbmRleCkua2luZCgpICE9IFJlc2V0KQog
ICAgICAgICBzdGFydEluZGV4LS07CiAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQotICAgIGRhdGFMb2dGKCJDb21wdXRpbmcgT1NSIGV4aXQgcmVjb3ZlcmllcyBzdGFydGluZyBh
dCBzZXEjJXUuXG4iLCBzdGFydEluZGV4KTsKLSNlbmRpZgotCiAgICAgLy8gU3RlcCAyOiBDcmVh
dGUgYSBtb2NrLXVwIG9mIHRoZSBERkcncyBzdGF0ZSBhbmQgZXhlY3V0ZSB0aGUgZXZlbnRzLgog
ICAgIE9wZXJhbmRzPFZhbHVlU291cmNlPiBvcGVyYW5kU291cmNlcyhjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvcGVyYW5k
U291cmNlcy5zaXplKCk7IGktLTspCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaAkocmV2aXNpb24gMTU5ODgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDkgKzQyLDYgQEAgY2xhc3MgVmFyaWFibGVFdmVudFN0cmVhbSA6IHB1Ymxp
YyBWZWN0bwogcHVibGljOgogICAgIHZvaWQgYXBwZW5kQW5kTG9nKGNvbnN0IFZhcmlhYmxlRXZl
bnQmIGV2ZW50KQogICAgIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAg
IGxvZ0V2ZW50KGV2ZW50KTsKLSNlbmRpZgogICAgICAgICBhcHBlbmQoZXZlbnQpOwogICAgIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTg4
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2Nh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsNiBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBTY29yZUJvYXJkIHNjb3JlQm9hcmQobV9ncmFwaC5tX25leHRNYWNoaW5l
TG9jYWwpOwogICAgICAgICBzY29yZUJvYXJkLmFzc2VydENsZWFyKCk7Ci0jaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBib29sIG5lZWRzTmV3TGluZSA9
IGZhbHNlOwotI2VuZGlmCiAgICAgICAgIGZvciAoc2l6ZV90IGJsb2NrSW5kZXggPSAwOyBibG9j
a0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAg
ICAgICBpZiAoIWJsb2NrKQpAQCAtNTgsMTIgKzU1LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXhJbkJsb2NrID0gMDsg
aW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7Ci0jaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIGlmIChuZWVk
c05ld0xpbmUpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIgICBAJXU6Iiwgbm9kZS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICAg
ICAgbmVlZHNOZXdMaW5lID0gdHJ1ZTsKLSNlbmRpZgogICAgICAgICAKICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtOTcsMTEgKzg4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIg
PSBzY29yZUJvYXJkLmFsbG9jYXRlKCk7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKAotICAgICAgICAgICAgICAgICAg
ICAiIEFzc2lnbmluZyB2aXJ0dWFsIHJlZ2lzdGVyICV1IHRvIG5vZGUgJXUuIiwKLSAgICAgICAg
ICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyLCBub2RlLT5pbmRleCgpKTsKLSNlbmRpZgogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgICAgIC8vICdtdXN0R2VuZXJhdGUnIG5vZGVzIGhhdmUgdGhlaXIgdXNlQ291
bnQgYXJ0aWZpY2lhbGx5IGVsZXZhdGVkLAogICAgICAgICAgICAgICAgIC8vIGNhbGwgdXNlIG5v
dyB0byBhY2NvdW50IGZvciB0aGlzLgpAQCAtMTEwLDEwICs5Niw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHNjb3JlQm9hcmQuYXNzZXJ0Q2xlYXIoKTsKICAgICAgICAg
fQotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgaWYg
KG5lZWRzTmV3TGluZSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICAvLyBSZWNvcmQgdGhlIG51bWJlciBvZiB2aXJ0dWFsIHJlZ2lzdGVycyB3
ZSdyZSB1c2luZy4gVGhpcyBpcyB1c2VkIGJ5IGNhbGxzCiAgICAgICAgIC8vIHRvIGZpZ3VyZSBv
dXQgd2hlcmUgdG8gcHV0IHRoZSBwYXJhbWV0ZXJzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkocmV2aXNpb24gMTU5ODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsMTMgKzU0MCw2IEBAIENvbXBpbGF0aW9uUmVz
dWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKIAogICAgIEp1bXAgc3RhY2tDaGVjazsKICAgICBp
ZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7Ci0jaWYgRU5BQkxF
KERGR19KSVQpCi0jaWYgREZHX0VOQUJMRShTVUNDRVNTX1NUQVRTKQotICAgICAgICBzdGF0aWMg
U2FtcGxpbmdDb3VudGVyIGNvdW50ZXIoIm9yaWduYWxKSVQiKTsKLSAgICAgICAgZW1pdENvdW50
KGNvdW50ZXIpOwotI2VuZGlmCi0jZW5kaWYKLQogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
ICAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVPZmZzZXQgPT0gKHVuc2lnbmVkKS0xKTsKICAgICAg
ICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>