<?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>184790</bug_id>
          
          <creation_ts>2018-04-19 13:13:46 -0700</creation_ts>
          <short_desc>Apply pointer profiling to Signal pointers.</short_desc>
          <delta_ts>2018-05-02 03:06:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1416034</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-19 13:13:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/39301369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416062</commentid>
    <comment_count>1</comment_count>
      <attachid>338357</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-19 14:27:05 -0700</bug_when>
    <thetext>Created attachment 338357
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416067</commentid>
    <comment_count>2</comment_count>
      <attachid>338357</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-04-19 14:40:31 -0700</bug_when>
    <thetext>Comment on attachment 338357
proposed patch.

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

Fix the compilation error.
r=me

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        3. 

Remove or fill in the item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416070</commentid>
    <comment_count>3</comment_count>
      <attachid>338360</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-19 14:47:17 -0700</bug_when>
    <thetext>Created attachment 338360
patch for landing + GTK build fix.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416081</commentid>
    <comment_count>4</comment_count>
      <attachid>338365</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-19 15:08:42 -0700</bug_when>
    <thetext>Created attachment 338365
patch for landing + gtk build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416085</commentid>
    <comment_count>5</comment_count>
      <attachid>338367</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-19 15:19:30 -0700</bug_when>
    <thetext>Created attachment 338367
patch for landing + GTK build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416117</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-19 16:31:30 -0700</bug_when>
    <thetext>Landed in r230826: &lt;http://trac.webkit.org/r230826&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416402</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-20 13:58:46 -0700</bug_when>
    <thetext>Build fix for internal build landed in r230852: &lt;http://trac.webkit.org/r230852&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419611</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-02 03:06:10 -0700</bug_when>
    <thetext>Committed r231227: &lt;https://trac.webkit.org/changeset/231227&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338357</attachid>
            <date>2018-04-19 14:27:05 -0700</date>
            <delta_ts>2018-04-19 14:47:17 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-184790.patch</filename>
            <type>text/plain</type>
            <size>24724</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwODE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE4LTA0LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cHBseSBwb2ludGVyIHByb2ZpbGluZyB0byBTaWduYWwgcG9pbnRlcnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MzAxMzY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDEuIENoYW5nZSBzdGFja1BvaW50ZXIsIGZyYW1lUG9pbnRlciwgYW5kIGlu
c3RydWN0aW9uUG9pbnRlciBhY2Nlc3NvcnMgdG8KKyAgICAgICAgICAgYmUgYSBwYWlyIG9mIGdl
dHRlci9zZXR0ZXIgZnVuY3Rpb25zLgorICAgICAgICAyLiBBZGQgc3VwcG9ydCBmb3IgVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpIHRvIGFsbG93IHVzZSBvZiBhCisgICAgICAg
ICAgIGEgcG9pbnRlciBwcm9maWxpbmcgdmFyaWFudHMgb2YgdGhlc2UgYWNjZXNzb3JzLgorICAg
ICAgICAzLiAKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlUHJlZml4Lmg6CisgICAgICAgICog
cnVudGltZS9NYWNoaW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6
c3RhY2tQb2ludGVySW1wbCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzdGFja1Bv
aW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c2V0U3RhY2tQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlckltcGwpOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFj
aGluZUNvbnRleHQ6OnNldEZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjppbnN0cnVjdGlvblBvaW50ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRl
eHQ6Omluc3RydWN0aW9uUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0Ojpz
ZXRJbnN0cnVjdGlvblBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6bGlu
a1JlZ2lzdGVySW1wbCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpsaW5rUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c2V0TGlua1JlZ2lzdGVyKToKKyAg
ICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1w
bGluZ1Byb2ZpbGVyOjp0YWtlU2FtcGxlKToKKyAgICAgICAgKiBydW50aW1lL1ZNVHJhcHMuY3Bw
OgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAg
KEpTQzo6Vk1UcmFwczo6dHJ5SW5zdGFsbFRyYXBCcmVha3BvaW50cyk6CisgICAgICAgICogdG9v
bHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVyKToKKyAg
ICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2ln
bmFsQ29udGV4dDo6ZHVtcCk6CisgICAgICAgIChKU0M6Omluc3RhbGxDcmFzaEhhbmRsZXIpOgor
ICAgICAgICAoSlNDOjpTaWdpbGxDcmFzaEFuYWx5emVyOjphbmFseXplKToKKyAgICAgICAgKiB3
YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFw
SGFuZGxlcik6CisKIDIwMTgtMDQtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBUaGUgSW50ZXJuYWxGdW5jdGlvbiBoaWVyYXJjaHkgc2hvdWxkIGJlIGluIElz
b1N1YnNwYWNlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlUHJl
Zml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
UHJlZml4LmgJKHJldmlzaW9uIDIzMDgxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZVByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgX19oYXNfaW5jbHVk
ZSg8V2ViS2l0QWRkaXRpb25zL0phdmFTY3JpcHRDb3JlUHJlZml4Lmg+KQorI2luY2x1ZGUgPFdl
YktpdEFkZGl0aW9ucy9KYXZhU2NyaXB0Q29yZVByZWZpeC5oPgorI2VuZGlmCisKICNpZmRlZiBf
X2NwbHVzcGx1cwogI2RlZmluZSBOVUxMIF9fbnVsbAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAkocmV2aXNpb24gMjMwODE0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDMzICsyOCw0MCBAQAogCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2lu
Y2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KKyNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgTWFjaGluZUNvbnRleHQgewogCi12b2lkKiBzdGFja1Bv
aW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2
b2lkKj4gVCBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsKIAogI2lmIE9T
KFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQotdm9pZComIHN0YWNrUG9pbnRlcihQ
bGF0Zm9ybVJlZ2lzdGVycyYpOwotdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYpOwotdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7Ci12b2lk
KiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7Ci12b2lkKiBpbnN0cnVj
dGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQgPSB2b2lkKj4gdm9pZCBzZXRTdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmLCBUKTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4gVCBmcmFtZVBvaW50ZXIoY29uc3QgUGxhdGZv
cm1SZWdpc3RlcnMmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4gdm9pZCBzZXRGcmFt
ZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmLCBUKTsKK2lubGluZSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBsaW5rUmVnaXN0ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3Rl
cnMmKTsKK2lubGluZSB2b2lkIHNldExpbmtSZWdpc3RlcihQbGF0Zm9ybVJlZ2lzdGVycyYsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKK2lubGluZSBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmKTsKK2lubGluZSB2b2lkIHNldEluc3RydWN0aW9uUG9pbnRlcihQbGF0
Zm9ybVJlZ2lzdGVycyYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KTsK
KwogdGVtcGxhdGU8c2l6ZV90IE4+IHZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdp
c3RlcnMmKTsKIHRlbXBsYXRlPHNpemVfdCBOPiB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmKTsKICNpZiBFTkFCTEUoSklUKQogdm9pZComIGxsaW50SW5zdHJ1
Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLXZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRl
eHRfdCYpOwotdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKLXZvaWQqJiBm
cmFtZVBvaW50ZXIobWNvbnRleHRfdCYpOwotdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IG1jb250
ZXh0X3QmKTsKLXZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYpOwotdm9pZCog
aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQgPSB2b2lkKj4gVCBzdGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwordGVtcGxhdGU8
dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldFN0YWNrUG9pbnRlcihtY29udGV4dF90JiwgVCk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IFQgZnJhbWVQb2ludGVyKGNvbnN0IG1jb250
ZXh0X3QmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4gdm9pZCBzZXRGcmFtZVBvaW50
ZXIobWNvbnRleHRfdCYsIFQpOworaW5saW5lIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rp
b25QdHJUYWc+IGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90Jik7CitpbmxpbmUg
dm9pZCBzZXRJbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKKwogdGVtcGxhdGU8c2l6ZV90IE4+IHZvaWQqJiBhcmd1
bWVudFBvaW50ZXIobWNvbnRleHRfdCYpOwogdGVtcGxhdGU8c2l6ZV90IE4+IHZvaWQqIGFyZ3Vt
ZW50UG9pbnRlcihjb25zdCBtY29udGV4dF90Jik7CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTY0LDcg
KzcyLDkgQEAgdm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbgogI2VuZGlm
IC8vIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogCiAjaWYgT1MoV0lORE9X
UykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJ
VEhfUFJPRklMRSkKK2lubGluZSB2b2lkKiYgc3RhY2tQb2ludGVySW1wbChQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVncykKIHsKICNpZiBPUyhEQVJXSU4pCiAjaWYgX19EQVJXSU5fVU5JWDAzCkBAIC0x
MTMsMjMgKzEyMyw0NyBAQCBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lz
CiAgICAgcmV0dXJuIHN0YWNrUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbmRpZgog
fQorI2VuZGlmIC8vICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKIAotaW5s
aW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJ
TEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9QTEFURk9STV9SRUdJU1RFUlNfU1BfV0lU
SF9QUk9GSUxFKHJlZ3MpOworICAgIGFzc2VydElzTm90VGFnZ2VkKHZhbHVlKTsKKyAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFQ+KHZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxUPihzdGFja1BvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdz
KSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBzZXRT
dGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIFQgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOwor
I2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIGFzc2VydElzTm90
VGFnZ2VkKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKTsKKyAgICBXVEZfV1JJVEVfUExBVEZP
Uk1fUkVHSVNURVJTX1NQX1dJVEhfUFJPRklMRShyZWdzLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZh
bHVlKSk7CisjZWxzZQorICAgIHN0YWNrUG9pbnRlckltcGwocmVncykgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHZhbHVlKTsKKyNlbmRpZgogfQorCiAjZWxzZSAvLyBub3QgT1MoV0lORE9XUykgfHwg
SEFWRShNQUNISU5FX0NPTlRFWFQpCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9p
ZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewotICAgIHJl
dHVybiByZWdzLnN0YWNrUG9pbnRlcjsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHJlZ3Mu
c3RhY2tQb2ludGVyKTsKIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVf
Q09OVEVYVCkKIAogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQotaW5saW5lIHZvaWQqJiBzdGFj
a1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCisKKyNpZiAhVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCitpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlckltcGwo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVy
biBzdGFja1BvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworICAgIHJldHVybiBzdGFja1Bv
aW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKICNlbGlmIE9TKEZSRUVCU0QpCiAKICNp
ZiBDUFUoWDg2KQpAQCAtMTYzLDE2ICsxOTcsMzcgQEAgaW5saW5lIHZvaWQqJiBzdGFja1BvaW50
ZXIobWNvbnRleHRfdCYgbQogI2VuZGlmCiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRG
T1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBzdGFja1BvaW50ZXIo
Y29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
aW5saW5lIFQgc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQog
ewotICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGlu
ZUNvbnRleHQpKTsKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAg
ICB2b2lkKiB2YWx1ZSA9IFdURl9SRUFEX01BQ0hJTkVfQ09OVEVYVF9TUF9XSVRIX1BST0ZJTEUo
bWFjaGluZUNvbnRleHQpOworICAgIGFzc2VydElzTm90VGFnZ2VkKHZhbHVlKTsKKyAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFQ+KHZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxUPihzdGFja1BvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250
ZXh0KSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBz
ZXRTdGFja1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQsIFQgdmFsdWUpCit7Cisj
aWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgYXNzZXJ0SXNOb3RU
YWdnZWQoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworICAgIFdURl9XUklURV9NQUNISU5F
X0NPTlRFWFRfU1BfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0LCBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHZhbHVlKSk7CisjZWxzZQorICAgIHN0YWNrUG9pbnRlckltcGwobWFjaGluZUNvbnRleHQp
ID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBIQVZF
KE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NP
TlRFWFQpCi1pbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVn
cykKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKK2lubGluZSB2
b2lkKiYgZnJhbWVQb2ludGVySW1wbChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKICNpZiBP
UyhEQVJXSU4pCiAKQEAgLTIyMiwxOSArMjc3LDQwIEBAIGlubGluZSB2b2lkKiYgZnJhbWVQb2lu
dGVyKFBsYXRmb3JtUmVnaXMKICAgICByZXR1cm4gZnJhbWVQb2ludGVyKHJlZ3MubWFjaGluZUNv
bnRleHQpOwogI2VuZGlmCiB9CisjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lU
SF9QUk9GSUxFKQogCi1pbmxpbmUgdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVn
aXN0ZXJzJiByZWdzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUIGZyYW1lUG9pbnRl
cihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKLSAgICByZXR1cm4gZnJhbWVQb2lu
dGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7CisjaWYgVVNFKFBMQVRG
T1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9Q
TEFURk9STV9SRUdJU1RFUlNfRlBfV0lUSF9QUk9GSUxFKHJlZ3MpOworICAgIGFzc2VydElzTm90
VGFnZ2VkKHZhbHVlKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHZhbHVlKTsKKyNlbHNl
CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihmcmFtZVBvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8
UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitpbmxpbmUgdm9pZCBzZXRGcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MsIFQgdmFsdWUpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUp
CisgICAgYXNzZXJ0SXNOb3RUYWdnZWQoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworICAg
IFdURl9XUklURV9QTEFURk9STV9SRUdJU1RFUlNfRlBfV0lUSF9QUk9GSUxFKHJlZ3MsIGJpdHdp
c2VfY2FzdDx2b2lkKj4odmFsdWUpKTsKKyNlbHNlCisgICAgZnJhbWVQb2ludGVySW1wbChyZWdz
KSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpOworI2VuZGlmCiB9CiAjZW5kaWYgLy8gT1Mo
V0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKIAogI2lmIEhBVkUoTUFDSElORV9D
T05URVhUKQotaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCisKKyNpZiAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCitpbmxp
bmUgdm9pZComIGZyYW1lUG9pbnRlckltcGwobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiB7
CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBmcmFtZVBvaW50ZXIobWFjaGluZUNvbnRleHQt
Pl9fc3MpOworICAgIHJldHVybiBmcmFtZVBvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0LT5fX3Nz
KTsKICNlbGlmIE9TKEZSRUVCU0QpCiAKICNpZiBDUFUoWDg2KQpAQCAtMjcyLDE2ICszNDgsMzcg
QEAgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIobWNvbnRleHRfdCYgbQogI2Vycm9yIE5lZWQg
YSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlz
IHBsYXRmb3JtCiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19X
SVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRf
dCYgbWFjaGluZUNvbnRleHQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQgZnJhbWVQ
b2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQogewotICAgIHJldHVybiBm
cmFtZVBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKKyNp
ZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1ZSA9
IFdURl9SRUFEX01BQ0hJTkVfQ09OVEVYVF9GUF9XSVRIX1BST0ZJTEUobWFjaGluZUNvbnRleHQp
OworICAgIGFzc2VydElzTm90VGFnZ2VkKHZhbHVlKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFQ+KHZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihmcmFtZVBvaW50
ZXJJbXBsKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSkpOworI2VuZGlm
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBzZXRGcmFtZVBvaW50ZXIo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQsIFQgdmFsdWUpCit7CisjaWYgVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgYXNzZXJ0SXNOb3RUYWdnZWQoYml0d2lzZV9j
YXN0PHZvaWQqPih2YWx1ZSkpOworICAgIFdURl9XUklURV9NQUNISU5FX0NPTlRFWFRfRlBfV0lU
SF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0LCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKSk7Cisj
ZWxzZQorICAgIGZyYW1lUG9pbnRlckltcGwobWFjaGluZUNvbnRleHQpID0gYml0d2lzZV9jYXN0
PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVY
VCkKIAogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUg
dm9pZComIGluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKKworI2lm
ICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKK2lubGluZSB2b2lkKiYgaW5z
dHJ1Y3Rpb25Qb2ludGVySW1wbChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKICNpZiBPUyhE
QVJXSU4pCiAjaWYgX19EQVJXSU5fVU5JWDAzCkBAIC0zMjUsMTkgKzQyMiwzNiBAQCBpbmxpbmUg
dm9pZComIGluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9yCiAgICAgcmV0dXJuIGluc3RydWN0aW9u
UG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbmRpZgogfQorI2VuZGlmIC8vICFVU0Uo
UExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKIAotaW5saW5lIHZvaWQqIGluc3RydWN0
aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK2lubGluZSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB7Ci0gICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRl
cihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworI2lmIFVTRShQTEFURk9S
TV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIHZvaWQqIHZhbHVlID0gV1RGX1JFQURfUExB
VEZPUk1fUkVHSVNURVJTX1BDX1dJVEhfUFJPRklMRShyZWdzKTsKKyNlbHNlCisgICAgdm9pZCog
dmFsdWUgPSBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3Rl
cnMmPihyZWdzKSk7CisjZW5kaWYKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENG
dW5jdGlvblB0clRhZz4odmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBzZXRJbnN0cnVjdGlvblBv
aW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVu
Y3Rpb25QdHJUYWc+IHZhbHVlKQoreworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9Q
Uk9GSUxFKQorICAgIFdURl9XUklURV9QTEFURk9STV9SRUdJU1RFUlNfUENfV0lUSF9QUk9GSUxF
KHJlZ3MsIHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICBpbnN0cnVjdGlv
blBvaW50ZXJJbXBsKHJlZ3MpID0gdmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgog
fQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogCiAKICNp
ZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLWlubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQorCisjaWYgIVVTRShQTEFURk9STV9SRUdJU1RF
UlNfV0lUSF9QUk9GSUxFKQoraW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKG1j
b250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQogewogI2lmIE9TKERBUldJTikKLSAgICByZXR1cm4g
aW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyAgICByZXR1cm4gaW5z
dHJ1Y3Rpb25Qb2ludGVySW1wbChtYWNoaW5lQ29udGV4dC0+X19zcyk7CiAjZWxpZiBPUyhGUkVF
QlNEKQogCiAjaWYgQ1BVKFg4NikKQEAgLTM3NSwxNSArNDg5LDYwIEBAIGlubGluZSB2b2lkKiYg
aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXgKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxF
KQorCitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gaW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIFVT
RShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIHZvaWQqIHZhbHVlID0gV1RG
X1JFQURfTUFDSElORV9DT05URVhUX1BDX1dJVEhfUFJPRklMRShtYWNoaW5lQ29udGV4dCk7Cisj
ZWxzZQorICAgIHZvaWQqIHZhbHVlID0gaW5zdHJ1Y3Rpb25Qb2ludGVySW1wbChjb25zdF9jYXN0
PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworI2VuZGlmCisgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHZhbHVlKTsKK30KIAotaW5saW5lIHZv
aWQqIGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkK
K2lubGluZSB2b2lkIHNldEluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29u
dGV4dCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNo
aW5lQ29udGV4dCkpOworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQor
ICAgIFdURl9XUklURV9NQUNISU5FX0NPTlRFWFRfUENfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250
ZXh0LCB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgaW5zdHJ1Y3Rpb25Q
b2ludGVySW1wbChtYWNoaW5lQ29udGV4dCkgPSB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygpOwor
I2VuZGlmCiB9CiAjZW5kaWYgLy8gSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKIAogI2lmIE9TKFdJ
TkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQorCisjaWYgT1MoREFSV0lOKSAmJiBfX0RB
UldJTl9VTklYMDMgJiYgQ1BVKEFSTTY0KQorI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJ
VEhfUFJPRklMRSkKK2lubGluZSB2b2lkKiYgbGlua1JlZ2lzdGVySW1wbChQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3Mu
X19scik7Cit9CisjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUp
CisKKworaW5saW5lIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGxpbmtS
ZWdpc3Rlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBVU0UoUExBVEZP
Uk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1ZSA9IFdURl9SRUFEX1BM
QVRGT1JNX1JFR0lTVEVSU19QQ19XSVRIX1BST0ZJTEUocmVncyk7CisjZWxzZQorICAgIHZvaWQq
IHZhbHVlID0gbGlua1JlZ2lzdGVySW1wbChjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4o
cmVncykpOworI2VuZGlmCisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rp
b25QdHJUYWc+KHZhbHVlKTsKK30KKworaW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFn
PiB2YWx1ZSkKK3sKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAg
ICBXVEZfV1JJVEVfUExBVEZPUk1fUkVHSVNURVJTX1BDX1dJVEhfUFJPRklMRShyZWdzLCB2YWx1
ZS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgbGlua1JlZ2lzdGVySW1wbChyZWdz
KSA9IHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZW5kaWYKK30KKyNlbmRpZiAvLyBPUyhE
QVJXSU4pICYmIF9fREFSV0lOX1VOSVgwMyAmJiBDUFUoQVJNNjQpCisKICNpZiBIQVZFKE1BQ0hJ
TkVfQ09OVEVYVCkKIHRlbXBsYXRlPD4gdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihtY29udGV4
dF90Jik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMzA4MTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShjb25z
dCAKICAgICAgICAgICAgICAgICBtX2pzY0V4ZWN1dGlvblRocmVhZC0+Z2V0UmVnaXN0ZXJzKHJl
Z2lzdGVycyk7CiAgICAgICAgICAgICAgICAgbWFjaGluZUZyYW1lID0gTWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpOwogICAgICAgICAgICAgICAgIGNhbGxGcmFtZSA9IHN0
YXRpY19jYXN0PEV4ZWNTdGF0ZSo+KG1hY2hpbmVGcmFtZSk7Ci0gICAgICAgICAgICAgICAgbWFj
aGluZVBDID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpOwor
ICAgICAgICAgICAgICAgIG1hY2hpbmVQQyA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBv
aW50ZXIocmVnaXN0ZXJzKS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAg
ICAgICAgbGxpbnRQQyA9IHJlbW92ZUNvZGVQdHJUYWcoTWFjaGluZUNvbnRleHQ6OmxsaW50SW5z
dHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycykpOwogICAgICAgICAgICAgICAgIGFzc2VydElzTm90
VGFnZ2VkKG1hY2hpbmVQQyk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAkocmV2aXNpb24gMjMwODE0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDggQEAKICNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIk1hY2hpbmVT
dGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiUHRyVGFnLmgiCiAjaW5jbHVkZSAiVk0u
aCIKICNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCkBAIC01
OCwxMiArNjAsMTAgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICAsIHRyYXBQQyhN
YWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycykpCiAgICAgICAgICwg
c3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVnaXN0ZXJzKSkKICAg
ICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihyZWdpc3Rl
cnMpKQotICAgIHsKLSAgICAgICAgYXNzZXJ0SXNOb3RUYWdnZWQodHJhcFBDKTsKLSAgICB9Cisg
ICAgeyB9CiAKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzOwotICAgIHZvaWQqIHRy
YXBQQzsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiB0cmFwUEM7
CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07CkBA
IC04NywxNCArODcsMTMgQEAgdm9pZCBWTVRyYXBzOjp0cnlJbnN0YWxsVHJhcEJyZWFrcG9pbnRz
KAogICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgaW5pdGlhbCBzaWduYWwgdG8gZ2V0IHRoZSBtdXRh
dG9yIHRocmVhZCdzIGF0dGVudGlvbi4KICAgICAvLyBMZXQncyBnZXQgdGhlIHRocmVhZCB0byBi
cmVhayBhdCBpbnZhbGlkYXRpb24gcG9pbnRzIGlmIG5lZWRlZC4KICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwotICAgIHZvaWQqIHRyYXBQQyA9IGNvbnRleHQudHJhcFBDOworICAgIHZvaWQqIHRy
YXBQQyA9IGNvbnRleHQudHJhcFBDLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAv
LyBXZSBtdXN0IGVuc3VyZSB3ZSdyZSBpbiBKSVQvTExpbnQgY29kZS4gSWYgd2UgYXJlLCB3ZSBr
bm93IGEgZmV3IHRoaW5nczoKICAgICAvLyAtIFRoZSBKUyB0aHJlYWQgaXNuJ3QgaG9sZGluZyB0
aGUgbWFsbG9jIGxvY2suIFRoZXJlZm9yZSwgaXQncyBzYWZlIHRvIG1hbGxvYyBiZWxvdy4KICAg
ICAvLyAtIFRoZSBKUyB0aHJlYWQgaXNuJ3QgaG9sZGluZyB0aGUgQ29kZUJsb2NrU2V0IGxvY2su
CiAgICAgLy8gSWYgd2UncmUgbm90IGluIEpJVC9MTEludCBjb2RlLCB3ZSBjYW4ndCBydW4gdGhl
IEMrKyBjb2RlIGJlbG93IGJlY2F1c2UgaXQKICAgICAvLyBtYWxsb2NzLCBhbmQgd2UgbXVzdCBw
cm92ZSB0aGUgSlMgdGhyZWFkIGlzbid0IGhvbGRpbmcgdGhlIG1hbGxvYyBsb2NrCiAgICAgLy8g
dG8gYmUgYWJsZSB0byBkbyB0aGF0IHdpdGhvdXQgcmlza2luZyBhIGRlYWRsb2NrLgotICAgIGFz
c2VydElzTm90VGFnZ2VkKHRyYXBQQyk7CiAgICAgaWYgKCFpc0pJVFBDKHRyYXBQQykgJiYgIUxM
SW50Ojppc0xMSW50UEModHJhcFBDKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODksMTEgKzE4
OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6
OkJhZEFjY2VzcywgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdp
c3RlcnMpIC0+IFNpZ25hbEFjdGlvbiB7CiAgICAgICAgICAgICAgICAgU2lnbmFsQ29udGV4dCBj
b250ZXh0KHJlZ2lzdGVycyk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZChj
b250ZXh0LnRyYXBQQyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQudHJh
cFBDKSkKKyAgICAgICAgICAgICAgICB2b2lkKiB0cmFwUEMgPSBjb250ZXh0LnRyYXBQQy51bnRh
Z2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFpc0pJVFBDKHRy
YXBQQykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRs
ZWQ7CiAKLSAgICAgICAgICAgICAgICBDb2RlQmxvY2sqIGN1cnJlbnRDb2RlQmxvY2sgPSBERkc6
OmNvZGVCbG9ja0ZvclZNVHJhcFBDKGNvbnRleHQudHJhcFBDKTsKKyAgICAgICAgICAgICAgICBD
b2RlQmxvY2sqIGN1cnJlbnRDb2RlQmxvY2sgPSBERkc6OmNvZGVCbG9ja0ZvclZNVHJhcFBDKHRy
YXBQQyk7CiAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29kZUJsb2NrKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIEVpdGhlciB3ZSB0cmFwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbiwg
ZS5nLiBXYXNtIE9PQiwgb3Igd2UgZGlkbid0IHByb3Blcmx5IG1vbml0b3IgdGhlIFBDLiBSZWdh
cmRsZXNzLCB3ZSBjYW4ndCBkbyBtdWNoIG5vdy4uLgogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gU2lnbmFsQWN0aW9uOjpOb3RIYW5kbGVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAkocmV2aXNpb24gMjMwODE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcy
LDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgcHJvZmlsaW5nVGltZXIoaW50LCBzaWdpbmZvXwogewog
ICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiBwbGF0Zm9ybVJlZ2lzdGVycyA9IFdURjo6cmVnaXN0ZXJz
RnJvbVVDb250ZXh0KHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApKTsKICAgICBDb2RlUHJv
ZmlsaW5nOjpzYW1wbGUoCi0gICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50
ZXIocGxhdGZvcm1SZWdpc3RlcnMpLAorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKHBsYXRmb3JtUmVnaXN0ZXJzKS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCks
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQ
b2ludGVyKHBsYXRmb3JtUmVnaXN0ZXJzKSkpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCShyZXZp
c2lvbiAyMzA4MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hB
bmFseXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxNCArMTI3LDE4IEBAIHN0cnVjdCBT
aWduYWxDb250ZXh0IHsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoaSA8IDI5KTsKICAgICAg
ICAgbG9nKCJ4JWQ6ICUwMTZsbHggZnA6ICUwMTZsbHggbHI6ICUwMTZsbHgiLAotICAgICAgICAg
ICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwgcmVnaXN0ZXJzLl9fZnAsIHJlZ2lzdGVycy5fX2xyKTsK
KyAgICAgICAgICAgIGksIHJlZ2lzdGVycy5fX3hbaV0sCisgICAgICAgICAgICBNYWNoaW5lQ29u
dGV4dDo6ZnJhbWVQb2ludGVyPHVpbnQ2NF90PihyZWdpc3RlcnMpLAorICAgICAgICAgICAgTWFj
aGluZUNvbnRleHQ6OmxpbmtSZWdpc3RlcihyZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0YWJsZUFk
ZHJlc3M8dWludDY0X3Q+KCkpOwogICAgICAgICBsb2coInNwOiAlMDE2bGx4IHBjOiAlMDE2bGx4
IGNwc3I6ICUwOHgiLAotICAgICAgICAgICAgcmVnaXN0ZXJzLl9fc3AsIHJlZ2lzdGVycy5fX3Bj
LCByZWdpc3RlcnMuX19jcHNyKTsKKyAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjpzdGFja1Bv
aW50ZXI8dWludDY0X3Q+KHJlZ2lzdGVycyksCisgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6
aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycykudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzczx1
aW50NjRfdD4oKSwKKyAgICAgICAgICAgIHJlZ2lzdGVycy5fX2Nwc3IpOwogI2VuZGlmCiAgICAg
fQogCiAgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVyczsKLSAgICB2b2lkKiBtYWNoaW5l
UEM7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gbWFjaGluZVBD
OwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7CiB9OwpA
QCAtMTQ1LDggKzE0OSw4IEBAIHN0YXRpYyB2b2lkIGluc3RhbGxDcmFzaEhhbmRsZXIoKQogICAg
IGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6SWxsLCBbXSAoU2lnbmFsLCBTaWdJbmZvJiwg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykgewogICAgICAgICBTaWduYWxDb250ZXh0IGNv
bnRleHQocmVnaXN0ZXJzKTsKIAotICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZChjb250ZXh0Lm1h
Y2hpbmVQQyk7Ci0gICAgICAgIGlmICghaXNKSVRQQyhjb250ZXh0Lm1hY2hpbmVQQykpCisgICAg
ICAgIHZvaWQqIG1hY2hpbmVQQyA9IGNvbnRleHQubWFjaGluZVBDLnVudGFnZ2VkRXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgaWYgKCFpc0pJVFBDKG1hY2hpbmVQQykpCiAgICAgICAgICAg
ICByZXR1cm4gU2lnbmFsQWN0aW9uOjpOb3RIYW5kbGVkOwogCiAgICAgICAgIFNpZ2lsbENyYXNo
QW5hbHl6ZXImIGFuYWx5emVyID0gU2lnaWxsQ3Jhc2hBbmFseXplcjo6aW5zdGFuY2UoKTsKQEAg
LTIxNyw3ICsyMjEsNyBAQCBhdXRvIFNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUoU2lnbmFs
CiAgICAgICAgIH0KICAgICAgICAgYXV0byYgbG9ja2VyID0gZXhwZWN0ZWRMb2NrZXIudmFsdWUo
KTsKIAotICAgICAgICB2b2lkKiBwYyA9IGNvbnRleHQubWFjaGluZVBDOworICAgICAgICB2b2lk
KiBwYyA9IGNvbnRleHQubWFjaGluZVBDLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKICAg
ICAgICAgYXV0byBpc0luSklUTWVtb3J5ID0gaW5zcGVjdG9yLmlzVmFsaWRFeGVjdXRhYmxlTWVt
b3J5KGxvY2tlciwgcGMpOwogICAgICAgICBpZiAoIWlzSW5KSVRNZW1vcnkpIHsKICAgICAgICAg
ICAgIGxvZygiRVJST1I6IFRpbWVkIG91dDogbm90IGFibGUgdG8gZGV0ZXJtaW5lIGlmIHBjICVw
IGlzIGluIHZhbGlkIEpJVCBleGVjdXRhYmxlIG1lbW9yeSIsIHBjKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
CShyZXZpc2lvbiAyMzA4MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0
aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlCiAKIHN0YXRpYyBTaWduYWxBY3Rp
b24gdHJhcEhhbmRsZXIoU2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVy
cyYgY29udGV4dCkKIHsKLSAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KTsKKyAgICB2b2lkKiBmYXVsdGluZ0lu
c3RydWN0aW9uID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KS51
bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2ln
bmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAic3RhcnRpbmcgaGFuZGxlciBmb3IgZmF1bHQg
YXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdJbnN0cnVjdGlvbikpOwogCiAgICAgZGF0YUxvZ0xu
SWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiSklUIG1lbW9yeSBz
dGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRF
eGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CkBAIC04Niw3ICs4
Niw3IEBAIHN0YXRpYyBTaWduYWxBY3Rpb24gdHJhcEhhbmRsZXIoU2lnbmFsLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBS
YXdQb2ludGVyKGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250
ZXh0KSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRz
TWVtb3J5QWNjZXNzKTsKLSAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3Ry
dWN0aW9uUG9pbnRlcihjb250ZXh0KSA9IGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjpzZXRJbnN0cnVj
dGlvblBvaW50ZXIoY29udGV4dCwgZXhjZXB0aW9uU3R1Yi5jb2RlKCkucmV0YWdnZWQ8Q0Z1bmN0
aW9uUHRyVGFnPigpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6
SGFuZGxlZDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Cg==
</data>
<flag name="review"
          id="356649"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338360</attachid>
            <date>2018-04-19 14:47:17 -0700</date>
            <delta_ts>2018-04-19 15:08:42 -0700</delta_ts>
            <desc>patch for landing + GTK build fix.</desc>
            <filename>bug-184790.patch</filename>
            <type>text/plain</type>
            <size>25062</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwODE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE4LTA0LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cHBseSBwb2ludGVyIHByb2ZpbGluZyB0byBTaWduYWwgcG9pbnRlcnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MzAxMzY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2Zm
LgorCisgICAgICAgIDEuIENoYW5nZSBzdGFja1BvaW50ZXIsIGZyYW1lUG9pbnRlciwgYW5kIGlu
c3RydWN0aW9uUG9pbnRlciBhY2Nlc3NvcnMgdG8KKyAgICAgICAgICAgYmUgYSBwYWlyIG9mIGdl
dHRlci9zZXR0ZXIgZnVuY3Rpb25zLgorICAgICAgICAyLiBBZGQgc3VwcG9ydCBmb3IgVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpIHRvIGFsbG93IHVzZSBvZiBhCisgICAgICAg
ICAgIGEgcG9pbnRlciBwcm9maWxpbmcgdmFyaWFudHMgb2YgdGhlc2UgYWNjZXNzb3JzLgorICAg
ICAgICAzLiBBbHNvIGFkZCBhIGxpbmtSZWdpc3RlciBhY2Nlc3NvciBvbmx5IGZvciBBUk02NCBv
biBPUyhEQVJXSU4pLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmVQcmVmaXguaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjpzdGFja1BvaW50ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OnN0
YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzZXRTdGFja1BvaW50
ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVySW1wbCk6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIpOgorICAgICAgICAoSlND
OjpNYWNoaW5lQ29udGV4dDo6c2V0RnJhbWVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlckltcGwpOgorICAgICAgICAoSlNDOjpNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRl
eHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0
OjpsaW5rUmVnaXN0ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxpbmtS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzZXRMaW5rUmVnaXN0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFw
cy5jcHA6CisgICAgICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAg
ICAgICAoSlNDOjpWTVRyYXBzOjp0cnlJbnN0YWxsVHJhcEJyZWFrcG9pbnRzKToKKyAgICAgICAg
KiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvZmlsaW5nVGltZXIp
OgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpTaWduYWxDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKEpTQzo6aW5zdGFsbENyYXNoSGFuZGxl
cik6CisgICAgICAgIChKU0M6OlNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUpOgorICAgICAg
ICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OnRyYXBIYW5kbGVyKToKKwogMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJhcmNoeSBzaG91bGQgYmUg
aW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVQcmVmaXguaAkocmV2aXNpb24gMjMwODE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBfX2hhc19p
bmNsdWRlKDxXZWJLaXRBZGRpdGlvbnMvSmF2YVNjcmlwdENvcmVQcmVmaXguaD4pCisjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL0phdmFTY3JpcHRDb3JlUHJlZml4Lmg+CisjZW5kaWYKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIE5VTEwgX19udWxsCiAjZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCShyZXZpc2lvbiAy
MzA4MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsMzMgKzI4LDQwIEBACiAKICNpbmNsdWRlICJHUFJJbmZvLmgi
CiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgorI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBNYWNoaW5lQ29udGV4dCB7CiAKLXZvaWQqIHN0
YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlwZW5hbWUg
VCA9IHZvaWQqPiBUIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogCiAj
aWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCi12b2lkKiYgc3RhY2tQb2lu
dGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7Ci12b2lkKiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVn
aXN0ZXJzJik7Ci12b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsK
LXZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKLXZvaWQqIGlu
c3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldFN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYs
IFQpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBUIGZyYW1lUG9pbnRlcihjb25zdCBQ
bGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNl
dEZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYsIFQpOworaW5saW5lIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25zdCBQbGF0Zm9ybVJl
Z2lzdGVycyYpOworaW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRmb3JtUmVnaXN0ZXJz
JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOworaW5saW5lIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGluc3RydWN0aW9uUG9pbnRlcihjb25z
dCBQbGF0Zm9ybVJlZ2lzdGVycyYpOworaW5saW5lIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRh
Zz4pOworCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9y
bVJlZ2lzdGVycyYpOwogdGVtcGxhdGU8c2l6ZV90IE4+IHZvaWQqIGFyZ3VtZW50UG9pbnRlcihj
b25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogI2lmIEVOQUJMRShKSVQpCiB2b2lkKiYgbGxpbnRJ
bnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqIGxsaW50SW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKwogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQotdm9pZComIHN0YWNrUG9pbnRlciht
Y29udGV4dF90Jik7Ci12b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwotdm9p
ZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90Jik7Ci12b2lkKiBmcmFtZVBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYpOwotdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90Jik7Ci12
b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IHZvaWQqPiBUIHN0YWNrUG9pbnRlcihjb25zdCBtY29udGV4dF90Jik7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHZvaWQgc2V0U3RhY2tQb2ludGVyKG1jb250ZXh0X3Qm
LCBUKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4gVCBmcmFtZVBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldEZyYW1l
UG9pbnRlcihtY29udGV4dF90JiwgVCk7CitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENG
dW5jdGlvblB0clRhZz4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKK2lu
bGluZSB2b2lkIHNldEluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOworCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZCom
IGFyZ3VtZW50UG9pbnRlcihtY29udGV4dF90Jik7CiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZCog
YXJndW1lbnRQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKICNpZiBFTkFCTEUoSklUKQpAQCAt
NjQsNyArNzIsOSBAQCB2b2lkKiBsbGludEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29uCiAj
ZW5kaWYgLy8gT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKICNpZiBPUyhX
SU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLWlubGluZSB2b2lkKiYgc3RhY2tQb2lu
dGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQorCisjaWYgIVVTRShQTEFURk9STV9SRUdJU1RF
UlNfV0lUSF9QUk9GSUxFKQoraW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXJJbXBsKFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQogewogI2lmIE9TKERBUldJTikKICNpZiBfX0RBUldJTl9VTklYMDMK
QEAgLTExMCwyNiArMTIwLDUwIEBAIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3Jt
UmVnaXMKICNlbmRpZgogCiAjZWxpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSAgICByZXR1cm4g
c3RhY2tQb2ludGVyKHJlZ3MubWFjaGluZUNvbnRleHQpOworICAgIHJldHVybiBzdGFja1BvaW50
ZXJJbXBsKHJlZ3MubWFjaGluZUNvbnRleHQpOwogI2VuZGlmCiB9CisjZW5kaWYgLy8gIVVTRShQ
TEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQogCi1pbmxpbmUgdm9pZCogc3RhY2tQb2lu
dGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSBUIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sK
KyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1
ZSA9IFdURl9SRUFEX1BMQVRGT1JNX1JFR0lTVEVSU19TUF9XSVRIX1BST0ZJTEUocmVncyk7Cisg
ICAgYXNzZXJ0SXNOb3RUYWdnZWQodmFsdWUpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4o
dmFsdWUpOworI2Vsc2UKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHN0YWNrUG9pbnRlcklt
cGwoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKSk7CisjZW5kaWYKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldFN0YWNrUG9pbnRlcihQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVncywgVCB2YWx1ZSkKIHsKLSAgICByZXR1cm4gc3RhY2tQb2ludGVyKGNv
bnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7CisjaWYgVVNFKFBMQVRGT1JNX1JF
R0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgYXNzZXJ0SXNOb3RUYWdnZWQoYml0d2lzZV9jYXN0
PHZvaWQqPih2YWx1ZSkpOworICAgIFdURl9XUklURV9QTEFURk9STV9SRUdJU1RFUlNfU1BfV0lU
SF9QUk9GSUxFKHJlZ3MsIGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKTsKKyNlbHNlCisgICAg
c3RhY2tQb2ludGVySW1wbChyZWdzKSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpOworI2Vu
ZGlmCiB9CisKICNlbHNlIC8vIG5vdCBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVY
VCkKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSB2b2lkKiBzdGFja1BvaW50ZXIoY29u
c3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB7Ci0gICAgcmV0dXJuIHJlZ3Muc3RhY2tQb2lu
dGVyOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4ocmVncy5zdGFja1BvaW50ZXIpOwogfQog
I2VuZGlmIC8vIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogCiAjaWYgSEFW
RShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJP
RklMRSkKK2lubGluZSB2b2lkKiYgc3RhY2tQb2ludGVySW1wbChtY29udGV4dF90JiBtYWNoaW5l
Q29udGV4dCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0dXJuIHN0YWNrUG9pbnRlcihtYWNo
aW5lQ29udGV4dC0+X19zcyk7CisgICAgcmV0dXJuIHN0YWNrUG9pbnRlckltcGwobWFjaGluZUNv
bnRleHQtPl9fc3MpOwogI2VsaWYgT1MoRlJFRUJTRCkKIAogI2lmIENQVShYODYpCkBAIC0xNjMs
MTYgKzE5NywzNyBAQCBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihtY29udGV4dF90JiBtCiAj
ZW5kaWYKICNlbmRpZgogfQorI2VuZGlmIC8vICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhf
UFJPRklMRSkKIAotaW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBt
YWNoaW5lQ29udGV4dCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCBzdGFja1BvaW50
ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIHN0YWNr
UG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworI2lmIFVT
RShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIHZvaWQqIHZhbHVlID0gV1RG
X1JFQURfTUFDSElORV9DT05URVhUX1NQX1dJVEhfUFJPRklMRShtYWNoaW5lQ29udGV4dCk7Cisg
ICAgYXNzZXJ0SXNOb3RUYWdnZWQodmFsdWUpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4o
dmFsdWUpOworI2Vsc2UKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHN0YWNrUG9pbnRlcklt
cGwoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKSk7CisjZW5kaWYKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldFN0YWNrUG9pbnRlcihtY29u
dGV4dF90JiBtYWNoaW5lQ29udGV4dCwgVCB2YWx1ZSkKK3sKKyNpZiBVU0UoUExBVEZPUk1fUkVH
SVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICBhc3NlcnRJc05vdFRhZ2dlZChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHZhbHVlKSk7CisgICAgV1RGX1dSSVRFX01BQ0hJTkVfQ09OVEVYVF9TUF9XSVRIX1BS
T0ZJTEUobWFjaGluZUNvbnRleHQsIGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKTsKKyNlbHNl
CisgICAgc3RhY2tQb2ludGVySW1wbChtYWNoaW5lQ29udGV4dCkgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHZhbHVlKTsKKyNlbmRpZgogfQogI2VuZGlmIC8vIEhBVkUoTUFDSElORV9DT05URVhUKQog
CiAKICNpZiBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLWlubGluZSB2b2lk
KiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQorCisjaWYgIVVTRShQTEFU
Rk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQoraW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXJJ
bXBsKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogI2lmIE9TKERBUldJTikKIApAQCAtMjE5
LDIyICsyNzQsNDMgQEAgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpcwog
I2VuZGlmCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgIHJldHVybiBmcmFtZVBv
aW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlckltcGwo
cmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29u
c3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5l
IFQgZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewotICAgIHJl
dHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsK
KyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1
ZSA9IFdURl9SRUFEX1BMQVRGT1JNX1JFR0lTVEVSU19GUF9XSVRIX1BST0ZJTEUocmVncyk7Cisg
ICAgYXNzZXJ0SXNOb3RUYWdnZWQodmFsdWUpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4o
dmFsdWUpOworI2Vsc2UKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KGZyYW1lUG9pbnRlcklt
cGwoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKSk7CisjZW5kaWYKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldEZyYW1lUG9pbnRlcihQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVncywgVCB2YWx1ZSkKK3sKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKKyAgICBhc3NlcnRJc05vdFRhZ2dlZChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHZhbHVlKSk7CisgICAgV1RGX1dSSVRFX1BMQVRGT1JNX1JFR0lTVEVSU19GUF9XSVRIX1BST0ZJ
TEUocmVncywgYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworI2Vsc2UKKyAgICBmcmFtZVBv
aW50ZXJJbXBsKHJlZ3MpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0K
ICNlbmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYg
SEFWRShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihtY29udGV4
dF90JiBtYWNoaW5lQ29udGV4dCkKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhf
UFJPRklMRSkKK2lubGluZSB2b2lkKiYgZnJhbWVQb2ludGVySW1wbChtY29udGV4dF90JiBtYWNo
aW5lQ29udGV4dCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0dXJuIGZyYW1lUG9pbnRlciht
YWNoaW5lQ29udGV4dC0+X19zcyk7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlckltcGwobWFjaGlu
ZUNvbnRleHQtPl9fc3MpOwogI2VsaWYgT1MoRlJFRUJTRCkKIAogI2lmIENQVShYODYpCkBAIC0y
NzIsMTYgKzM0OCwzNyBAQCBpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90JiBt
CiAjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIg
dGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgogfQorI2VuZGlmIC8vICFVU0UoUExBVEZP
Uk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKIAotaW5saW5lIHZvaWQqIGZyYW1lUG9pbnRlcihj
b25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citp
bmxpbmUgVCBmcmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5l
Q29udGV4dCkpOworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAg
IHZvaWQqIHZhbHVlID0gV1RGX1JFQURfTUFDSElORV9DT05URVhUX0ZQX1dJVEhfUFJPRklMRSht
YWNoaW5lQ29udGV4dCk7CisgICAgYXNzZXJ0SXNOb3RUYWdnZWQodmFsdWUpOworICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8VD4odmFsdWUpOworI2Vsc2UKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFQ+KGZyYW1lUG9pbnRlckltcGwoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRl
eHQpKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNl
dEZyYW1lUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCwgVCB2YWx1ZSkKK3sKKyNp
ZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICBhc3NlcnRJc05vdFRh
Z2dlZChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKSk7CisgICAgV1RGX1dSSVRFX01BQ0hJTkVf
Q09OVEVYVF9GUF9XSVRIX1BST0ZJTEUobWFjaGluZUNvbnRleHQsIGJpdHdpc2VfY2FzdDx2b2lk
Kj4odmFsdWUpKTsKKyNlbHNlCisgICAgZnJhbWVQb2ludGVySW1wbChtYWNoaW5lQ29udGV4dCkg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKTsKKyNlbmRpZgogfQogI2VuZGlmIC8vIEhBVkUo
TUFDSElORV9DT05URVhUKQogCiAKICNpZiBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09O
VEVYVCkKLWlubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdzKQorCisjaWYgIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQoraW5s
aW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdz
KQogewogI2lmIE9TKERBUldJTikKICNpZiBfX0RBUldJTl9VTklYMDMKQEAgLTMyMiwyMiArNDE5
LDM5IEBAIGlubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3IKICNlbmRpZgog
CiAjZWxpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2lu
dGVyKHJlZ3MubWFjaGluZUNvbnRleHQpOworICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXJJ
bXBsKHJlZ3MubWFjaGluZUNvbnRleHQpOwogI2VuZGlmCiB9CisjZW5kaWYgLy8gIVVTRShQTEFU
Rk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQogCi1pbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Q
b2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoraW5saW5lIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0
Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKLSAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNv
bnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7CisjaWYgVVNFKFBMQVRGT1JNX1JF
R0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9QTEFURk9S
TV9SRUdJU1RFUlNfUENfV0lUSF9QUk9GSUxFKHJlZ3MpOworI2Vsc2UKKyAgICB2b2lkKiB2YWx1
ZSA9IGluc3RydWN0aW9uUG9pbnRlckltcGwoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+
KHJlZ3MpKTsKKyNlbmRpZgorICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0
aW9uUHRyVGFnPih2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIHNldEluc3RydWN0aW9uUG9pbnRl
cihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlv
blB0clRhZz4gdmFsdWUpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJ
TEUpCisgICAgV1RGX1dSSVRFX1BMQVRGT1JNX1JFR0lTVEVSU19QQ19XSVRIX1BST0ZJTEUocmVn
cywgdmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIGluc3RydWN0aW9uUG9p
bnRlckltcGwocmVncykgPSB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCiB9CiAj
ZW5kaWYgLy8gT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKIAogI2lmIEhB
VkUoTUFDSElORV9DT05URVhUKQotaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNv
bnRleHRfdCYgbWFjaGluZUNvbnRleHQpCisKKyNpZiAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19X
SVRIX1BST0ZJTEUpCitpbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlckltcGwobWNvbnRl
eHRfdCYgbWFjaGluZUNvbnRleHQpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBpbnN0
cnVjdGlvblBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworICAgIHJldHVybiBpbnN0cnVj
dGlvblBvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKICNlbGlmIE9TKEZSRUVCU0Qp
CiAKICNpZiBDUFUoWDg2KQpAQCAtMzc1LDE1ICs0ODksNjAgQEAgaW5saW5lIHZvaWQqJiBpbnN0
cnVjdGlvblBvaW50ZXIobWNvbnRleAogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0
cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5k
aWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisK
K2lubGluZSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBpbnN0cnVjdGlv
blBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVB
RF9NQUNISU5FX0NPTlRFWFRfUENfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0KTsKKyNlbHNl
CisgICAgdm9pZCogdmFsdWUgPSBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8bWNv
bnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7CisjZW5kaWYKKyAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4odmFsdWUpOworfQogCi1pbmxpbmUgdm9pZCog
aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoraW5s
aW5lIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVD
b250ZXh0KSk7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAg
V1RGX1dSSVRFX01BQ0hJTkVfQ09OVEVYVF9QQ19XSVRIX1BST0ZJTEUobWFjaGluZUNvbnRleHQs
IHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICBpbnN0cnVjdGlvblBvaW50
ZXJJbXBsKG1hY2hpbmVDb250ZXh0KSA9IHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZW5k
aWYKIH0KICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYgT1MoV0lORE9X
UykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCisKKyNpZiBPUyhEQVJXSU4pICYmIF9fREFSV0lO
X1VOSVgwMyAmJiBDUFUoQVJNNjQpCisjaWYgIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9Q
Uk9GSUxFKQoraW5saW5lIHZvaWQqJiBsaW5rUmVnaXN0ZXJJbXBsKFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdzKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2xy
KTsKK30KKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKwor
CitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gbGlua1JlZ2lz
dGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIFVTRShQTEFURk9STV9S
RUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIHZvaWQqIHZhbHVlID0gV1RGX1JFQURfUExBVEZP
Uk1fUkVHSVNURVJTX1BDX1dJVEhfUFJPRklMRShyZWdzKTsKKyNlbHNlCisgICAgdm9pZCogdmFs
dWUgPSBsaW5rUmVnaXN0ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdz
KSk7CisjZW5kaWYKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0
clRhZz4odmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBzZXRMaW5rUmVnaXN0ZXIoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IHZh
bHVlKQoreworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIFdU
Rl9XUklURV9QTEFURk9STV9SRUdJU1RFUlNfUENfV0lUSF9QUk9GSUxFKHJlZ3MsIHZhbHVlLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICBsaW5rUmVnaXN0ZXJJbXBsKHJlZ3MpID0g
dmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgorfQorI2VuZGlmIC8vIE9TKERBUldJ
TikgJiYgX19EQVJXSU5fVU5JWDAzICYmIENQVShBUk02NCkKKwogI2lmIEhBVkUoTUFDSElORV9D
T05URVhUKQogdGVtcGxhdGU8PiB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KG1jb250ZXh0X3Qm
KTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIzMDgxNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTYsNyArMzU2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp0YWtlU2FtcGxlKGNvbnN0IAog
ICAgICAgICAgICAgICAgIG1fanNjRXhlY3V0aW9uVGhyZWFkLT5nZXRSZWdpc3RlcnMocmVnaXN0
ZXJzKTsKICAgICAgICAgICAgICAgICBtYWNoaW5lRnJhbWUgPSBNYWNoaW5lQ29udGV4dDo6ZnJh
bWVQb2ludGVyKHJlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAgY2FsbEZyYW1lID0gc3RhdGlj
X2Nhc3Q8RXhlY1N0YXRlKj4obWFjaGluZUZyYW1lKTsKLSAgICAgICAgICAgICAgICBtYWNoaW5l
UEMgPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycyk7CisgICAg
ICAgICAgICAgICAgbWFjaGluZVBDID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRl
cihyZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAg
ICBsbGludFBDID0gcmVtb3ZlQ29kZVB0clRhZyhNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVj
dGlvblBvaW50ZXIocmVnaXN0ZXJzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0SXNOb3RUYWdn
ZWQobWFjaGluZVBDKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNVHJhcHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNVHJhcHMuY3BwCShyZXZpc2lvbiAyMzA4MTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
OCBAQAogI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNr
TWFya2VyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJQdHJUYWcuaCIKICNpbmNsdWRlICJWTS5oIgog
I2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKQEAgLTU4LDEy
ICs2MCwxMCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgICwgdHJhcFBDKE1hY2hp
bmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSkKICAgICAgICAgLCBzdGFj
a1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdpc3RlcnMpKQogICAgICAg
ICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKHJlZ2lzdGVycykp
Ci0gICAgewotICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZCh0cmFwUEMpOwotICAgIH0KKyAgICB7
IH0KIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7Ci0gICAgdm9pZCogdHJhcFBD
OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IHRyYXBQQzsKICAg
ICB2b2lkKiBzdGFja1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKQEAgLTg3
LDE0ICs4NywxMyBAQCB2b2lkIFZNVHJhcHM6OnRyeUluc3RhbGxUcmFwQnJlYWtwb2ludHMoCiAg
ICAgLy8gVGhpcyBtdXN0IGJlIHRoZSBpbml0aWFsIHNpZ25hbCB0byBnZXQgdGhlIG11dGF0b3Ig
dGhyZWFkJ3MgYXR0ZW50aW9uLgogICAgIC8vIExldCdzIGdldCB0aGUgdGhyZWFkIHRvIGJyZWFr
IGF0IGludmFsaWRhdGlvbiBwb2ludHMgaWYgbmVlZGVkLgogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7Ci0gICAgdm9pZCogdHJhcFBDID0gY29udGV4dC50cmFwUEM7CisgICAgdm9pZCogdHJhcFBD
ID0gY29udGV4dC50cmFwUEMudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOwogICAgIC8vIFdl
IG11c3QgZW5zdXJlIHdlJ3JlIGluIEpJVC9MTGludCBjb2RlLiBJZiB3ZSBhcmUsIHdlIGtub3cg
YSBmZXcgdGhpbmdzOgogICAgIC8vIC0gVGhlIEpTIHRocmVhZCBpc24ndCBob2xkaW5nIHRoZSBt
YWxsb2MgbG9jay4gVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gbWFsbG9jIGJlbG93LgogICAgIC8v
IC0gVGhlIEpTIHRocmVhZCBpc24ndCBob2xkaW5nIHRoZSBDb2RlQmxvY2tTZXQgbG9jay4KICAg
ICAvLyBJZiB3ZSdyZSBub3QgaW4gSklUL0xMSW50IGNvZGUsIHdlIGNhbid0IHJ1biB0aGUgQysr
IGNvZGUgYmVsb3cgYmVjYXVzZSBpdAogICAgIC8vIG1hbGxvY3MsIGFuZCB3ZSBtdXN0IHByb3Zl
IHRoZSBKUyB0aHJlYWQgaXNuJ3QgaG9sZGluZyB0aGUgbWFsbG9jIGxvY2sKICAgICAvLyB0byBi
ZSBhYmxlIHRvIGRvIHRoYXQgd2l0aG91dCByaXNraW5nIGEgZGVhZGxvY2suCi0gICAgYXNzZXJ0
SXNOb3RUYWdnZWQodHJhcFBDKTsKICAgICBpZiAoIWlzSklUUEModHJhcFBDKSAmJiAhTExJbnQ6
OmlzTExJbnRQQyh0cmFwUEMpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4OSwxMSArMTg4LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QmFk
QWNjZXNzLCBbXSAoU2lnbmFsLCBTaWdJbmZvJiwgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVy
cykgLT4gU2lnbmFsQWN0aW9uIHsKICAgICAgICAgICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRl
eHQocmVnaXN0ZXJzKTsKIAotICAgICAgICAgICAgICAgIGFzc2VydElzTm90VGFnZ2VkKGNvbnRl
eHQudHJhcFBDKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSklUUEMoY29udGV4dC50cmFwUEMp
KQorICAgICAgICAgICAgICAgIHZvaWQqIHRyYXBQQyA9IGNvbnRleHQudHJhcFBDLnVudGFnZ2Vk
RXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzSklUUEModHJhcFBD
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6Tm90SGFuZGxlZDsK
IAotICAgICAgICAgICAgICAgIENvZGVCbG9jayogY3VycmVudENvZGVCbG9jayA9IERGRzo6Y29k
ZUJsb2NrRm9yVk1UcmFwUEMoY29udGV4dC50cmFwUEMpOworICAgICAgICAgICAgICAgIENvZGVC
bG9jayogY3VycmVudENvZGVCbG9jayA9IERGRzo6Y29kZUJsb2NrRm9yVk1UcmFwUEModHJhcFBD
KTsKICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2RlQmxvY2spIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gRWl0aGVyIHdlIHRyYXBwZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCBlLmcu
IFdhc20gT09CLCBvciB3ZSBkaWRuJ3QgcHJvcGVybHkgbW9uaXRvciB0aGUgUEMuIFJlZ2FyZGxl
c3MsIHdlIGNhbid0IGRvIG11Y2ggbm93Li4uCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
aWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvQ29kZVByb2ZpbGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCShyZXZpc2lvbiAyMzA4MTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsNyAr
NzIsNyBAQCBzdGF0aWMgdm9pZCBwcm9maWxpbmdUaW1lcihpbnQsIHNpZ2luZm9fCiB7CiAgICAg
UGxhdGZvcm1SZWdpc3RlcnMmIHBsYXRmb3JtUmVnaXN0ZXJzID0gV1RGOjpyZWdpc3RlcnNGcm9t
VUNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkpOwogICAgIENvZGVQcm9maWxp
bmc6OnNhbXBsZSgKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihw
bGF0Zm9ybVJlZ2lzdGVycyksCisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBv
aW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSwKICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50
ZXIocGxhdGZvcm1SZWdpc3RlcnMpKSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAJKHJldmlzaW9u
IDIzMDgxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5
emVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcsMTggQEAgc3RydWN0IFNpZ25h
bENvbnRleHQgewogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChpIDwgMjkpOwogICAgICAgICBs
b2coInglZDogJTAxNmxseCBmcDogJTAxNmxseCBscjogJTAxNmxseCIsCi0gICAgICAgICAgICBp
LCByZWdpc3RlcnMuX194W2ldLCByZWdpc3RlcnMuX19mcCwgcmVnaXN0ZXJzLl9fbHIpOworICAg
ICAgICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwKKyAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0
OjpmcmFtZVBvaW50ZXI8dWludDY0X3Q+KHJlZ2lzdGVycyksCisgICAgICAgICAgICBNYWNoaW5l
Q29udGV4dDo6bGlua1JlZ2lzdGVyKHJlZ2lzdGVycykudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVz
czx1aW50NjRfdD4oKSk7CiAgICAgICAgIGxvZygic3A6ICUwMTZsbHggcGM6ICUwMTZsbHggY3Bz
cjogJTA4eCIsCi0gICAgICAgICAgICByZWdpc3RlcnMuX19zcCwgcmVnaXN0ZXJzLl9fcGMsIHJl
Z2lzdGVycy5fX2Nwc3IpOworICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRl
cjx1aW50NjRfdD4ocmVnaXN0ZXJzKSwKKyAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0
cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPHVpbnQ2
NF90PigpLAorICAgICAgICAgICAgcmVnaXN0ZXJzLl9fY3Bzcik7CiAjZW5kaWYKICAgICB9CiAK
ICAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzOwotICAgIHZvaWQqIG1hY2hpbmVQQzsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBtYWNoaW5lUEM7CiAg
ICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07CkBAIC0x
NDUsOCArMTQ5LDggQEAgc3RhdGljIHZvaWQgaW5zdGFsbENyYXNoSGFuZGxlcigpCiAgICAgaW5z
dGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGwsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0
Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4
dChyZWdpc3RlcnMpOwogCi0gICAgICAgIGFzc2VydElzTm90VGFnZ2VkKGNvbnRleHQubWFjaGlu
ZVBDKTsKLSAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFjaGluZVBDKSkKKyAgICAgICAg
dm9pZCogbWFjaGluZVBDID0gY29udGV4dC5tYWNoaW5lUEMudW50YWdnZWRFeGVjdXRhYmxlQWRk
cmVzcygpOworICAgICAgICBpZiAoIWlzSklUUEMobWFjaGluZVBDKSkKICAgICAgICAgICAgIHJl
dHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CiAKICAgICAgICAgU2lnaWxsQ3Jhc2hBbmFs
eXplciYgYW5hbHl6ZXIgPSBTaWdpbGxDcmFzaEFuYWx5emVyOjppbnN0YW5jZSgpOwpAQCAtMjE3
LDcgKzIyMSw3IEBAIGF1dG8gU2lnaWxsQ3Jhc2hBbmFseXplcjo6YW5hbHl6ZShTaWduYWwKICAg
ICAgICAgfQogICAgICAgICBhdXRvJiBsb2NrZXIgPSBleHBlY3RlZExvY2tlci52YWx1ZSgpOwog
Ci0gICAgICAgIHZvaWQqIHBjID0gY29udGV4dC5tYWNoaW5lUEM7CisgICAgICAgIHZvaWQqIHBj
ID0gY29udGV4dC5tYWNoaW5lUEMudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAg
ICBhdXRvIGlzSW5KSVRNZW1vcnkgPSBpbnNwZWN0b3IuaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnko
bG9ja2VyLCBwYyk7CiAgICAgICAgIGlmICghaXNJbkpJVE1lbW9yeSkgewogICAgICAgICAgICAg
bG9nKCJFUlJPUjogVGltZWQgb3V0OiBub3QgYWJsZSB0byBkZXRlcm1pbmUgaWYgcGMgJXAgaXMg
aW4gdmFsaWQgSklUIGV4ZWN1dGFibGUgbWVtb3J5IiwgcGMpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAJKHJl
dmlzaW9uIDIzMDgxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNp
Z25hbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBi
b29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UKIAogc3RhdGljIFNpZ25hbEFjdGlvbiB0
cmFwSGFuZGxlcihTaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiBj
b250ZXh0KQogewotICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4
dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpOworICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpLnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxI
YW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDog
IiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKICAgICBkYXRhTG9nTG5JZihX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJKSVQgbWVtb3J5IHN0YXJ0
OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4ZWN1
dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpKTsKQEAgLTg2LDcgKzg2LDcg
QEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWwsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1Bv
aW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQp
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1v
cnlBY2Nlc3MpOwotICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OnNldEluc3RydWN0aW9u
UG9pbnRlcihjb250ZXh0LCBleGNlcHRpb25TdHViLmNvZGUoKS5yZXRhZ2dlZDxDRnVuY3Rpb25Q
dHJUYWc+KCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5k
bGVkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338365</attachid>
            <date>2018-04-19 15:08:42 -0700</date>
            <delta_ts>2018-04-19 15:19:30 -0700</delta_ts>
            <desc>patch for landing + gtk build fix.</desc>
            <filename>bug-184790b.patch</filename>
            <type>text/plain</type>
            <size>25365</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwODIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE4LTA0LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cHBseSBwb2ludGVyIHByb2ZpbGluZyB0byBTaWduYWwgcG9pbnRlcnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MzAxMzY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2Zm
LgorCisgICAgICAgIDEuIENoYW5nZSBzdGFja1BvaW50ZXIsIGZyYW1lUG9pbnRlciwgYW5kIGlu
c3RydWN0aW9uUG9pbnRlciBhY2Nlc3NvcnMgdG8KKyAgICAgICAgICAgYmUgYSBwYWlyIG9mIGdl
dHRlci9zZXR0ZXIgZnVuY3Rpb25zLgorICAgICAgICAyLiBBZGQgc3VwcG9ydCBmb3IgVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpIHRvIGFsbG93IHVzZSBvZiBhCisgICAgICAg
ICAgIGEgcG9pbnRlciBwcm9maWxpbmcgdmFyaWFudHMgb2YgdGhlc2UgYWNjZXNzb3JzLgorICAg
ICAgICAzLiBBbHNvIGFkZCBhIGxpbmtSZWdpc3RlciBhY2Nlc3NvciBvbmx5IGZvciBBUk02NCBv
biBPUyhEQVJXSU4pLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmVQcmVmaXguaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjpzdGFja1BvaW50ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OnN0
YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzZXRTdGFja1BvaW50
ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVySW1wbCk6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIpOgorICAgICAgICAoSlND
OjpNYWNoaW5lQ29udGV4dDo6c2V0RnJhbWVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlckltcGwpOgorICAgICAgICAoSlNDOjpNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRl
eHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0
OjpsaW5rUmVnaXN0ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxpbmtS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzZXRMaW5rUmVnaXN0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFw
cy5jcHA6CisgICAgICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAg
ICAgICAoSlNDOjpWTVRyYXBzOjp0cnlJbnN0YWxsVHJhcEJyZWFrcG9pbnRzKToKKyAgICAgICAg
KiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvZmlsaW5nVGltZXIp
OgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpTaWduYWxDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKEpTQzo6aW5zdGFsbENyYXNoSGFuZGxl
cik6CisgICAgICAgIChKU0M6OlNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUpOgorICAgICAg
ICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OnRyYXBIYW5kbGVyKToKKwogMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJhcmNoeSBzaG91bGQgYmUg
aW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVQcmVmaXguaAkocmV2aXNpb24gMjMwODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBfX2hhc19p
bmNsdWRlKDxXZWJLaXRBZGRpdGlvbnMvSmF2YVNjcmlwdENvcmVQcmVmaXguaD4pCisjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL0phdmFTY3JpcHRDb3JlUHJlZml4Lmg+CisjZW5kaWYKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIE5VTEwgX19udWxsCiAjZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCShyZXZpc2lvbiAy
MzA4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsMzMgKzI4LDQ3IEBACiAKICNpbmNsdWRlICJHUFJJbmZvLmgi
CiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgorI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBNYWNoaW5lQ29udGV4dCB7CiAKLXZvaWQqIHN0
YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlwZW5hbWUg
VCA9IHZvaWQqPiBUIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogCiAj
aWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCi12b2lkKiYgc3RhY2tQb2lu
dGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7Ci12b2lkKiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVn
aXN0ZXJzJik7Ci12b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsK
LXZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKLXZvaWQqIGlu
c3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldFN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYs
IFQpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBUIGZyYW1lUG9pbnRlcihjb25zdCBQ
bGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNl
dEZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYsIFQpOworaW5saW5lIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25zdCBQbGF0Zm9ybVJl
Z2lzdGVycyYpOworaW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRmb3JtUmVnaXN0ZXJz
JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOworaW5saW5lIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGluc3RydWN0aW9uUG9pbnRlcihjb25z
dCBQbGF0Zm9ybVJlZ2lzdGVycyYpOworaW5saW5lIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRh
Zz4pOworCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9y
bVJlZ2lzdGVycyYpOwogdGVtcGxhdGU8c2l6ZV90IE4+IHZvaWQqIGFyZ3VtZW50UG9pbnRlcihj
b25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogI2lmIEVOQUJMRShKSVQpCiB2b2lkKiYgbGxpbnRJ
bnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqIGxsaW50SW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKwogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQotdm9pZComIHN0YWNrUG9pbnRlciht
Y29udGV4dF90Jik7Ci12b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwotdm9p
ZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90Jik7Ci12b2lkKiBmcmFtZVBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYpOwotdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90Jik7Ci12
b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOworCisjaWYgIVVTRShQ
TEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorc3RhdGljIGlubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVySW1wbChtY29udGV4dF90Jik7CitzdGF0aWMgaW5saW5lIHZvaWQqJiBmcmFtZVBv
aW50ZXJJbXBsKG1jb250ZXh0X3QmKTsKK3N0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlckltcGwobWNvbnRleHRfdCYpOworI2VuZGlmIC8vICFVU0UoUExBVEZPUk1fUkVHSVNU
RVJTX1dJVEhfUFJPRklMRSkKKwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBUIHN0YWNr
UG9pbnRlcihjb25zdCBtY29udGV4dF90Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+
IHZvaWQgc2V0U3RhY2tQb2ludGVyKG1jb250ZXh0X3QmLCBUKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQgPSB2b2lkKj4gVCBmcmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwordGVtcGxhdGU8
dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldEZyYW1lUG9pbnRlcihtY29udGV4dF90JiwgVCk7
CitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gaW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKK2lubGluZSB2b2lkIHNldEluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRh
Zz4pOworCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRlcihtY29udGV4
dF90Jik7CiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZCogYXJndW1lbnRQb2ludGVyKGNvbnN0IG1j
b250ZXh0X3QmKTsKICNpZiBFTkFCTEUoSklUKQpAQCAtNjQsNyArNzksOSBAQCB2b2lkKiBsbGlu
dEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29uCiAjZW5kaWYgLy8gT1MoV0lORE9XUykgfHwg
SEFWRShNQUNISU5FX0NPTlRFWFQpCiAKICNpZiBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVf
Q09OVEVYVCkKLWlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiBy
ZWdzKQorCisjaWYgIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorc3RhdGlj
IGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVySW1wbChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykK
IHsKICNpZiBPUyhEQVJXSU4pCiAjaWYgX19EQVJXSU5fVU5JWDAzCkBAIC0xMTAsMjYgKzEyNyw1
MCBAQCBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzCiAjZW5kaWYKIAog
I2VsaWYgSEFWRShNQUNISU5FX0NPTlRFWFQpCi0gICAgcmV0dXJuIHN0YWNrUG9pbnRlcihyZWdz
Lm1hY2hpbmVDb250ZXh0KTsKKyAgICByZXR1cm4gc3RhY2tQb2ludGVySW1wbChyZWdzLm1hY2hp
bmVDb250ZXh0KTsKICNlbmRpZgogfQorI2VuZGlmIC8vICFVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKIAotaW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVncykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCBzdGFja1Bv
aW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9QTEFU
Rk9STV9SRUdJU1RFUlNfU1BfV0lUSF9QUk9GSUxFKHJlZ3MpOworICAgIGFzc2VydElzTm90VGFn
Z2VkKHZhbHVlKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHZhbHVlKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzdGFja1BvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxh
dGZvcm1SZWdpc3RlcnMmPihyZWdzKSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitpbmxpbmUgdm9pZCBzZXRTdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Ms
IFQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3Jt
UmVnaXN0ZXJzJj4ocmVncykpOworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9G
SUxFKQorICAgIGFzc2VydElzTm90VGFnZ2VkKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKTsK
KyAgICBXVEZfV1JJVEVfUExBVEZPUk1fUkVHSVNURVJTX1NQX1dJVEhfUFJPRklMRShyZWdzLCBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKSk7CisjZWxzZQorICAgIHN0YWNrUG9pbnRlckltcGwo
cmVncykgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKTsKKyNlbmRpZgogfQorCiAjZWxzZSAv
LyBub3QgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0
ZXJzJiByZWdzKQogewotICAgIHJldHVybiByZWdzLnN0YWNrUG9pbnRlcjsKKyAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFQ+KHJlZ3Muc3RhY2tQb2ludGVyKTsKIH0KICNlbmRpZiAvLyBPUyhXSU5E
T1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogI2lmIEhBVkUoTUFDSElORV9DT05URVhU
KQotaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
CisKKyNpZiAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCitzdGF0aWMgaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXJJbXBsKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQog
ewogI2lmIE9TKERBUldJTikKLSAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0
LT5fX3NzKTsKKyAgICByZXR1cm4gc3RhY2tQb2ludGVySW1wbChtYWNoaW5lQ29udGV4dC0+X19z
cyk7CiAjZWxpZiBPUyhGUkVFQlNEKQogCiAjaWYgQ1BVKFg4NikKQEAgLTE2MywxNiArMjA0LDM3
IEBAIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKG1jb250ZXh0X3QmIG0KICNlbmRpZgogI2Vu
ZGlmCiB9CisjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQog
Ci1pbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250
ZXh0KQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUIHN0YWNrUG9pbnRlcihjb25zdCBt
Y29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKIHsKLSAgICByZXR1cm4gc3RhY2tQb2ludGVyKGNv
bnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7CisjaWYgVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9NQUNI
SU5FX0NPTlRFWFRfU1BfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0KTsKKyAgICBhc3NlcnRJ
c05vdFRhZ2dlZCh2YWx1ZSk7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPih2YWx1ZSk7Cisj
ZWxzZQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oc3RhY2tQb2ludGVySW1wbChjb25zdF9j
YXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgc2V0U3RhY2tQb2ludGVyKG1jb250ZXh0X3QmIG1h
Y2hpbmVDb250ZXh0LCBUIHZhbHVlKQoreworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lU
SF9QUk9GSUxFKQorICAgIGFzc2VydElzTm90VGFnZ2VkKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFs
dWUpKTsKKyAgICBXVEZfV1JJVEVfTUFDSElORV9DT05URVhUX1NQX1dJVEhfUFJPRklMRShtYWNo
aW5lQ29udGV4dCwgYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworI2Vsc2UKKyAgICBzdGFj
a1BvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0KSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUp
OworI2VuZGlmCiB9CiAjZW5kaWYgLy8gSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKIAogI2lmIE9T
KFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQotaW5saW5lIHZvaWQqJiBmcmFtZVBv
aW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCisKKyNpZiAhVVNFKFBMQVRGT1JNX1JFR0lT
VEVSU19XSVRIX1BST0ZJTEUpCitzdGF0aWMgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXJJbXBs
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogI2lmIE9TKERBUldJTikKIApAQCAtMjE5LDIy
ICsyODEsNDMgQEAgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpcwogI2Vu
ZGlmCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgIHJldHVybiBmcmFtZVBvaW50
ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlckltcGwocmVn
cy5tYWNoaW5lQ29udGV4dCk7CiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JNX1JF
R0lTVEVSU19XSVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQg
ZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewotICAgIHJldHVy
biBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKKyNp
ZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1ZSA9
IFdURl9SRUFEX1BMQVRGT1JNX1JFR0lTVEVSU19GUF9XSVRIX1BST0ZJTEUocmVncyk7CisgICAg
YXNzZXJ0SXNOb3RUYWdnZWQodmFsdWUpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4odmFs
dWUpOworI2Vsc2UKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KGZyYW1lUG9pbnRlckltcGwo
Y29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKSk7CisjZW5kaWYKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldEZyYW1lUG9pbnRlcihQbGF0Zm9ybVJl
Z2lzdGVycyYgcmVncywgVCB2YWx1ZSkKK3sKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJ
VEhfUFJPRklMRSkKKyAgICBhc3NlcnRJc05vdFRhZ2dlZChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZh
bHVlKSk7CisgICAgV1RGX1dSSVRFX1BMQVRGT1JNX1JFR0lTVEVSU19GUF9XSVRIX1BST0ZJTEUo
cmVncywgYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworI2Vsc2UKKyAgICBmcmFtZVBvaW50
ZXJJbXBsKHJlZ3MpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0KICNl
bmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYgSEFW
RShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJP
RklMRSkKK3N0YXRpYyBpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlckltcGwobWNvbnRleHRfdCYg
bWFjaGluZUNvbnRleHQpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBmcmFtZVBvaW50
ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworICAgIHJldHVybiBmcmFtZVBvaW50ZXJJbXBsKG1h
Y2hpbmVDb250ZXh0LT5fX3NzKTsKICNlbGlmIE9TKEZSRUVCU0QpCiAKICNpZiBDUFUoWDg2KQpA
QCAtMjcyLDE2ICszNTUsMzcgQEAgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIobWNvbnRleHRf
dCYgbQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90
aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citp
bmxpbmUgVCBmcmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7
CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFs
dWUgPSBXVEZfUkVBRF9NQUNISU5FX0NPTlRFWFRfRlBfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250
ZXh0KTsKKyAgICBhc3NlcnRJc05vdFRhZ2dlZCh2YWx1ZSk7CisgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxUPih2YWx1ZSk7CisjZWxzZQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oZnJhbWVQ
b2ludGVySW1wbChjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpKTsKKyNl
bmRpZgorfQogCi1pbmxpbmUgdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1h
Y2hpbmVDb250ZXh0KQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldEZyYW1l
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCwgVCB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gZnJhbWVQb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7
CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgYXNzZXJ0SXNO
b3RUYWdnZWQoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworICAgIFdURl9XUklURV9NQUNI
SU5FX0NPTlRFWFRfRlBfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0LCBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHZhbHVlKSk7CisjZWxzZQorICAgIGZyYW1lUG9pbnRlckltcGwobWFjaGluZUNvbnRl
eHQpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBI
QVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5F
X0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVncykKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkK
K3N0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlckltcGwoUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQogI2lmIF9fREFSV0lOX1VOSVgwMwpAQCAt
MzIyLDIyICs0MjYsMzkgQEAgaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZv
cgogI2VuZGlmCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgIHJldHVybiBpbnN0
cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CisgICAgcmV0dXJuIGluc3RydWN0
aW9uUG9pbnRlckltcGwocmVncy5tYWNoaW5lQ29udGV4dCk7CisjZW5kaWYKK30KKyNlbmRpZiAv
LyAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisKK2lubGluZSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19X
SVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9QTEFURk9STV9SRUdJU1RF
UlNfUENfV0lUSF9QUk9GSUxFKHJlZ3MpOworI2Vsc2UKKyAgICB2b2lkKiB2YWx1ZSA9IGluc3Ry
dWN0aW9uUG9pbnRlckltcGwoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsK
ICNlbmRpZgorICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFn
Pih2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmIHJlZ3MpCitpbmxpbmUgdm9pZCBzZXRJbnN0cnVjdGlvblBvaW50ZXIo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+IHZhbHVlKQogewotICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKKyAgICBXVEZfV1JJVEVfUExBVEZPUk1fUkVHSVNURVJTX1BDX1dJVEhf
UFJPRklMRShyZWdzLCB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgaW5z
dHJ1Y3Rpb25Qb2ludGVySW1wbChyZWdzKSA9IHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisj
ZW5kaWYKIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkK
IAogCiAjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKKworI2lmICFVU0UoUExBVEZPUk1f
UkVHSVNURVJTX1dJVEhfUFJPRklMRSkKK3N0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlckltcGwobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiB7CiAjaWYgT1MoREFSV0lO
KQotICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOwor
ICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsK
ICNlbGlmIE9TKEZSRUVCU0QpCiAKICNpZiBDUFUoWDg2KQpAQCAtMzc1LDE1ICs0OTYsNjAgQEAg
aW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleAogI2Vycm9yIE5lZWQgYSB3
YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0
aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JNX1JFR0lTVEVS
U19XSVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PENGdW5jdGlvblB0clRhZz4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1h
Y2hpbmVDb250ZXh0KQogewotICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2Fz
dDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNU
RVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1ZSA9IFdURl9SRUFEX01BQ0hJTkVfQ09O
VEVYVF9QQ19XSVRIX1BST0ZJTEUobWFjaGluZUNvbnRleHQpOworI2Vsc2UKKyAgICB2b2lkKiB2
YWx1ZSA9IGluc3RydWN0aW9uUG9pbnRlckltcGwoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFj
aGluZUNvbnRleHQpKTsKKyNlbmRpZgorICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
Q0Z1bmN0aW9uUHRyVGFnPih2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIHNldEluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PENGdW5jdGlvblB0clRhZz4gdmFsdWUpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19X
SVRIX1BST0ZJTEUpCisgICAgV1RGX1dSSVRFX01BQ0hJTkVfQ09OVEVYVF9QQ19XSVRIX1BST0ZJ
TEUobWFjaGluZUNvbnRleHQsIHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAg
ICBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0KSA9IHZhbHVlLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkK
IAogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCisKKyNpZiBPUyhE
QVJXSU4pICYmIF9fREFSV0lOX1VOSVgwMyAmJiBDUFUoQVJNNjQpCisjaWYgIVVTRShQTEFURk9S
TV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQoraW5saW5lIHZvaWQqJiBsaW5rUmVnaXN0ZXJJbXBs
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4ocmVncy5fX2xyKTsKK30KKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKKworCitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlv
blB0clRhZz4gbGlua1JlZ2lzdGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQorewor
I2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIHZvaWQqIHZhbHVl
ID0gV1RGX1JFQURfUExBVEZPUk1fUkVHSVNURVJTX1BDX1dJVEhfUFJPRklMRShyZWdzKTsKKyNl
bHNlCisgICAgdm9pZCogdmFsdWUgPSBsaW5rUmVnaXN0ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxhdGZv
cm1SZWdpc3RlcnMmPihyZWdzKSk7CisjZW5kaWYKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPENGdW5jdGlvblB0clRhZz4odmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBzZXRMaW5r
UmVnaXN0ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxD
RnVuY3Rpb25QdHJUYWc+IHZhbHVlKQoreworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lU
SF9QUk9GSUxFKQorICAgIFdURl9XUklURV9QTEFURk9STV9SRUdJU1RFUlNfUENfV0lUSF9QUk9G
SUxFKHJlZ3MsIHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICBsaW5rUmVn
aXN0ZXJJbXBsKHJlZ3MpID0gdmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgorfQor
I2VuZGlmIC8vIE9TKERBUldJTikgJiYgX19EQVJXSU5fVU5JWDAzICYmIENQVShBUk02NCkKKwog
I2lmIEhBVkUoTUFDSElORV9DT05URVhUKQogdGVtcGxhdGU8PiB2b2lkKiYgYXJndW1lbnRQb2lu
dGVyPDE+KG1jb250ZXh0X3QmKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIzMDgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp0
YWtlU2FtcGxlKGNvbnN0IAogICAgICAgICAgICAgICAgIG1fanNjRXhlY3V0aW9uVGhyZWFkLT5n
ZXRSZWdpc3RlcnMocmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBtYWNoaW5lRnJhbWUgPSBN
YWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKHJlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAg
Y2FsbEZyYW1lID0gc3RhdGljX2Nhc3Q8RXhlY1N0YXRlKj4obWFjaGluZUZyYW1lKTsKLSAgICAg
ICAgICAgICAgICBtYWNoaW5lUEMgPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KHJlZ2lzdGVycyk7CisgICAgICAgICAgICAgICAgbWFjaGluZVBDID0gTWFjaGluZUNvbnRleHQ6
Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3Mo
KTsKICAgICAgICAgICAgICAgICBsbGludFBDID0gcmVtb3ZlQ29kZVB0clRhZyhNYWNoaW5lQ29u
dGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0SXNOb3RUYWdnZWQobWFjaGluZVBDKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCShyZXZpc2lvbiAyMzA4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJQdHJUYWcuaCIK
ICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2F0
Y2hkb2cuaCIKQEAgLTU4LDEyICs2MCwxMCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAg
ICAgICwgdHJhcFBDKE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJz
KSkKICAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihy
ZWdpc3RlcnMpKQogICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQ
b2ludGVyKHJlZ2lzdGVycykpCi0gICAgewotICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZCh0cmFw
UEMpOwotICAgIH0KKyAgICB7IH0KIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7
Ci0gICAgdm9pZCogdHJhcFBDOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+IHRyYXBQQzsKICAgICB2b2lkKiBzdGFja1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQ
b2ludGVyOwogfTsKQEAgLTg3LDE0ICs4NywxMyBAQCB2b2lkIFZNVHJhcHM6OnRyeUluc3RhbGxU
cmFwQnJlYWtwb2ludHMoCiAgICAgLy8gVGhpcyBtdXN0IGJlIHRoZSBpbml0aWFsIHNpZ25hbCB0
byBnZXQgdGhlIG11dGF0b3IgdGhyZWFkJ3MgYXR0ZW50aW9uLgogICAgIC8vIExldCdzIGdldCB0
aGUgdGhyZWFkIHRvIGJyZWFrIGF0IGludmFsaWRhdGlvbiBwb2ludHMgaWYgbmVlZGVkLgogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdm9pZCogdHJhcFBDID0gY29udGV4dC50cmFwUEM7
CisgICAgdm9pZCogdHJhcFBDID0gY29udGV4dC50cmFwUEMudW50YWdnZWRFeGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIC8vIFdlIG11c3QgZW5zdXJlIHdlJ3JlIGluIEpJVC9MTGludCBjb2RlLiBJ
ZiB3ZSBhcmUsIHdlIGtub3cgYSBmZXcgdGhpbmdzOgogICAgIC8vIC0gVGhlIEpTIHRocmVhZCBp
c24ndCBob2xkaW5nIHRoZSBtYWxsb2MgbG9jay4gVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gbWFs
bG9jIGJlbG93LgogICAgIC8vIC0gVGhlIEpTIHRocmVhZCBpc24ndCBob2xkaW5nIHRoZSBDb2Rl
QmxvY2tTZXQgbG9jay4KICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gSklUL0xMSW50IGNvZGUsIHdl
IGNhbid0IHJ1biB0aGUgQysrIGNvZGUgYmVsb3cgYmVjYXVzZSBpdAogICAgIC8vIG1hbGxvY3Ms
IGFuZCB3ZSBtdXN0IHByb3ZlIHRoZSBKUyB0aHJlYWQgaXNuJ3QgaG9sZGluZyB0aGUgbWFsbG9j
IGxvY2sKICAgICAvLyB0byBiZSBhYmxlIHRvIGRvIHRoYXQgd2l0aG91dCByaXNraW5nIGEgZGVh
ZGxvY2suCi0gICAgYXNzZXJ0SXNOb3RUYWdnZWQodHJhcFBDKTsKICAgICBpZiAoIWlzSklUUEMo
dHJhcFBDKSAmJiAhTExJbnQ6OmlzTExJbnRQQyh0cmFwUEMpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE4OSwxMSArMTg4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluc3RhbGxTaWduYWxI
YW5kbGVyKFNpZ25hbDo6QmFkQWNjZXNzLCBbXSAoU2lnbmFsLCBTaWdJbmZvJiwgUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ2lzdGVycykgLT4gU2lnbmFsQWN0aW9uIHsKICAgICAgICAgICAgICAgICBT
aWduYWxDb250ZXh0IGNvbnRleHQocmVnaXN0ZXJzKTsKIAotICAgICAgICAgICAgICAgIGFzc2Vy
dElzTm90VGFnZ2VkKGNvbnRleHQudHJhcFBDKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSklU
UEMoY29udGV4dC50cmFwUEMpKQorICAgICAgICAgICAgICAgIHZvaWQqIHRyYXBQQyA9IGNvbnRl
eHQudHJhcFBDLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWlzSklUUEModHJhcFBDKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFj
dGlvbjo6Tm90SGFuZGxlZDsKIAotICAgICAgICAgICAgICAgIENvZGVCbG9jayogY3VycmVudENv
ZGVCbG9jayA9IERGRzo6Y29kZUJsb2NrRm9yVk1UcmFwUEMoY29udGV4dC50cmFwUEMpOworICAg
ICAgICAgICAgICAgIENvZGVCbG9jayogY3VycmVudENvZGVCbG9jayA9IERGRzo6Y29kZUJsb2Nr
Rm9yVk1UcmFwUEModHJhcFBDKTsKICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2RlQmxv
Y2spIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHdlIHRyYXBwZWQgZm9yIHNvbWUg
b3RoZXIgcmVhc29uLCBlLmcuIFdhc20gT09CLCBvciB3ZSBkaWRuJ3QgcHJvcGVybHkgbW9uaXRv
ciB0aGUgUEMuIFJlZ2FyZGxlc3MsIHdlIGNhbid0IGRvIG11Y2ggbm93Li4uCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCShyZXZpc2lvbiAyMzA4
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBwcm9maWxpbmdUaW1lcihpbnQs
IHNpZ2luZm9fCiB7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHBsYXRmb3JtUmVnaXN0ZXJzID0g
V1RGOjpyZWdpc3RlcnNGcm9tVUNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkp
OwogICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZSgKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihwbGF0Zm9ybVJlZ2lzdGVycyksCisgICAgICAgIE1hY2hpbmVDb250
ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0
YWJsZUFkZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVD
b250ZXh0OjpmcmFtZVBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpKSk7CiB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFs
eXplci5jcHAJKHJldmlzaW9uIDIzMDgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcs
MTggQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChp
IDwgMjkpOwogICAgICAgICBsb2coInglZDogJTAxNmxseCBmcDogJTAxNmxseCBscjogJTAxNmxs
eCIsCi0gICAgICAgICAgICBpLCByZWdpc3RlcnMuX194W2ldLCByZWdpc3RlcnMuX19mcCwgcmVn
aXN0ZXJzLl9fbHIpOworICAgICAgICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwKKyAgICAgICAg
ICAgIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXI8dWludDY0X3Q+KHJlZ2lzdGVycyksCisg
ICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6bGlua1JlZ2lzdGVyKHJlZ2lzdGVycykudW50YWdn
ZWRFeGVjdXRhYmxlQWRkcmVzczx1aW50NjRfdD4oKSk7CiAgICAgICAgIGxvZygic3A6ICUwMTZs
bHggcGM6ICUwMTZsbHggY3BzcjogJTA4eCIsCi0gICAgICAgICAgICByZWdpc3RlcnMuX19zcCwg
cmVnaXN0ZXJzLl9fcGMsIHJlZ2lzdGVycy5fX2Nwc3IpOworICAgICAgICAgICAgTWFjaGluZUNv
bnRleHQ6OnN0YWNrUG9pbnRlcjx1aW50NjRfdD4ocmVnaXN0ZXJzKSwKKyAgICAgICAgICAgIE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKS51bnRhZ2dlZEV4ZWN1
dGFibGVBZGRyZXNzPHVpbnQ2NF90PigpLAorICAgICAgICAgICAgcmVnaXN0ZXJzLl9fY3Bzcik7
CiAjZW5kaWYKICAgICB9CiAKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzOwotICAg
IHZvaWQqIG1hY2hpbmVQQzsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRy
VGFnPiBtYWNoaW5lUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1l
UG9pbnRlcjsKIH07CkBAIC0xNDUsOCArMTQ5LDggQEAgc3RhdGljIHZvaWQgaW5zdGFsbENyYXNo
SGFuZGxlcigpCiAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGwsIFtdIChTaWdu
YWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgIFNp
Z25hbENvbnRleHQgY29udGV4dChyZWdpc3RlcnMpOwogCi0gICAgICAgIGFzc2VydElzTm90VGFn
Z2VkKGNvbnRleHQubWFjaGluZVBDKTsKLSAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFj
aGluZVBDKSkKKyAgICAgICAgdm9pZCogbWFjaGluZVBDID0gY29udGV4dC5tYWNoaW5lUEMudW50
YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBpZiAoIWlzSklUUEMobWFjaGluZVBD
KSkKICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CiAKICAgICAg
ICAgU2lnaWxsQ3Jhc2hBbmFseXplciYgYW5hbHl6ZXIgPSBTaWdpbGxDcmFzaEFuYWx5emVyOjpp
bnN0YW5jZSgpOwpAQCAtMjE3LDcgKzIyMSw3IEBAIGF1dG8gU2lnaWxsQ3Jhc2hBbmFseXplcjo6
YW5hbHl6ZShTaWduYWwKICAgICAgICAgfQogICAgICAgICBhdXRvJiBsb2NrZXIgPSBleHBlY3Rl
ZExvY2tlci52YWx1ZSgpOwogCi0gICAgICAgIHZvaWQqIHBjID0gY29udGV4dC5tYWNoaW5lUEM7
CisgICAgICAgIHZvaWQqIHBjID0gY29udGV4dC5tYWNoaW5lUEMudW50YWdnZWRFeGVjdXRhYmxl
QWRkcmVzcygpOwogICAgICAgICBhdXRvIGlzSW5KSVRNZW1vcnkgPSBpbnNwZWN0b3IuaXNWYWxp
ZEV4ZWN1dGFibGVNZW1vcnkobG9ja2VyLCBwYyk7CiAgICAgICAgIGlmICghaXNJbkpJVE1lbW9y
eSkgewogICAgICAgICAgICAgbG9nKCJFUlJPUjogVGltZWQgb3V0OiBub3QgYWJsZSB0byBkZXRl
cm1pbmUgaWYgcGMgJXAgaXMgaW4gdmFsaWQgSklUIGV4ZWN1dGFibGUgbWVtb3J5IiwgcGMpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2ln
bmFsSGFuZGxlci5jcHAJKHJldmlzaW9uIDIzMDgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIHN0YXRpYyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UKIAogc3Rh
dGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBs
YXRmb3JtUmVnaXN0ZXJzJiBjb250ZXh0KQogewotICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpOworICAgIHZv
aWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2lu
dGVyKGNvbnRleHQpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBkYXRhTG9nTG5J
ZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5k
bGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAK
ICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBSYXdQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkp
KTsKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWdu
YWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZv
dW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQ
b2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlw
ZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwotICAgICAgICAgICAgICAgICAgICBNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRl
eHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0LCBleGNlcHRpb25TdHViLmNvZGUoKS5y
ZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
U2lnbmFsQWN0aW9uOjpIYW5kbGVkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338367</attachid>
            <date>2018-04-19 15:19:30 -0700</date>
            <delta_ts>2018-04-19 15:19:30 -0700</delta_ts>
            <desc>patch for landing + GTK build fix.</desc>
            <filename>bug-184790c.patch</filename>
            <type>text/plain</type>
            <size>25564</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwODIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE4LTA0LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cHBseSBwb2ludGVyIHByb2ZpbGluZyB0byBTaWduYWwgcG9pbnRlcnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MzAxMzY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2Zm
LgorCisgICAgICAgIDEuIENoYW5nZSBzdGFja1BvaW50ZXIsIGZyYW1lUG9pbnRlciwgYW5kIGlu
c3RydWN0aW9uUG9pbnRlciBhY2Nlc3NvcnMgdG8KKyAgICAgICAgICAgYmUgYSBwYWlyIG9mIGdl
dHRlci9zZXR0ZXIgZnVuY3Rpb25zLgorICAgICAgICAyLiBBZGQgc3VwcG9ydCBmb3IgVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpIHRvIGFsbG93IHVzZSBvZiBhCisgICAgICAg
ICAgIGEgcG9pbnRlciBwcm9maWxpbmcgdmFyaWFudHMgb2YgdGhlc2UgYWNjZXNzb3JzLgorICAg
ICAgICAzLiBBbHNvIGFkZCBhIGxpbmtSZWdpc3RlciBhY2Nlc3NvciBvbmx5IGZvciBBUk02NCBv
biBPUyhEQVJXSU4pLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmVQcmVmaXguaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjpzdGFja1BvaW50ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OnN0
YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzZXRTdGFja1BvaW50
ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVySW1wbCk6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIpOgorICAgICAgICAoSlND
OjpNYWNoaW5lQ29udGV4dDo6c2V0RnJhbWVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlckltcGwpOgorICAgICAgICAoSlNDOjpNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRl
eHQ6OnNldEluc3RydWN0aW9uUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0
OjpsaW5rUmVnaXN0ZXJJbXBsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxpbmtS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpzZXRMaW5rUmVnaXN0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFw
cy5jcHA6CisgICAgICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAg
ICAgICAoSlNDOjpWTVRyYXBzOjp0cnlJbnN0YWxsVHJhcEJyZWFrcG9pbnRzKToKKyAgICAgICAg
KiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvZmlsaW5nVGltZXIp
OgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpTaWduYWxDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKEpTQzo6aW5zdGFsbENyYXNoSGFuZGxl
cik6CisgICAgICAgIChKU0M6OlNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUpOgorICAgICAg
ICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OnRyYXBIYW5kbGVyKToKKwogMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJhcmNoeSBzaG91bGQgYmUg
aW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVQcmVmaXguaAkocmV2aXNpb24gMjMwODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBfX2hhc19p
bmNsdWRlKDxXZWJLaXRBZGRpdGlvbnMvSmF2YVNjcmlwdENvcmVQcmVmaXguaD4pCisjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL0phdmFTY3JpcHRDb3JlUHJlZml4Lmg+CisjZW5kaWYKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIE5VTEwgX19udWxsCiAjZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCShyZXZpc2lvbiAy
MzA4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsMzMgKzI4LDQ3IEBACiAKICNpbmNsdWRlICJHUFJJbmZvLmgi
CiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgorI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBNYWNoaW5lQ29udGV4dCB7CiAKLXZvaWQqIHN0
YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlwZW5hbWUg
VCA9IHZvaWQqPiBUIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogCiAj
aWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCi12b2lkKiYgc3RhY2tQb2lu
dGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7Ci12b2lkKiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVn
aXN0ZXJzJik7Ci12b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsK
LXZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKLXZvaWQqIGlu
c3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldFN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYs
IFQpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBUIGZyYW1lUG9pbnRlcihjb25zdCBQ
bGF0Zm9ybVJlZ2lzdGVycyYpOwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNl
dEZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYsIFQpOworaW5saW5lIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25zdCBQbGF0Zm9ybVJl
Z2lzdGVycyYpOworaW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRmb3JtUmVnaXN0ZXJz
JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOworaW5saW5lIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IGluc3RydWN0aW9uUG9pbnRlcihjb25z
dCBQbGF0Zm9ybVJlZ2lzdGVycyYpOworaW5saW5lIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRh
Zz4pOworCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9y
bVJlZ2lzdGVycyYpOwogdGVtcGxhdGU8c2l6ZV90IE4+IHZvaWQqIGFyZ3VtZW50UG9pbnRlcihj
b25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogI2lmIEVOQUJMRShKSVQpCiB2b2lkKiYgbGxpbnRJ
bnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqIGxsaW50SW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKwogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQotdm9pZComIHN0YWNrUG9pbnRlciht
Y29udGV4dF90Jik7Ci12b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwotdm9p
ZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90Jik7Ci12b2lkKiBmcmFtZVBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYpOwotdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90Jik7Ci12
b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOworCisjaWYgIVVTRShQ
TEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorc3RhdGljIGlubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVySW1wbChtY29udGV4dF90Jik7CitzdGF0aWMgaW5saW5lIHZvaWQqJiBmcmFtZVBv
aW50ZXJJbXBsKG1jb250ZXh0X3QmKTsKK3N0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlckltcGwobWNvbnRleHRfdCYpOworI2VuZGlmIC8vICFVU0UoUExBVEZPUk1fUkVHSVNU
RVJTX1dJVEhfUFJPRklMRSkKKwordGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBUIHN0YWNr
UG9pbnRlcihjb25zdCBtY29udGV4dF90Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+
IHZvaWQgc2V0U3RhY2tQb2ludGVyKG1jb250ZXh0X3QmLCBUKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQgPSB2b2lkKj4gVCBmcmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYpOwordGVtcGxhdGU8
dHlwZW5hbWUgVCA9IHZvaWQqPiB2b2lkIHNldEZyYW1lUG9pbnRlcihtY29udGV4dF90JiwgVCk7
CitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gaW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKK2lubGluZSB2b2lkIHNldEluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRh
Zz4pOworCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRlcihtY29udGV4
dF90Jik7CiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZCogYXJndW1lbnRQb2ludGVyKGNvbnN0IG1j
b250ZXh0X3QmKTsKICNpZiBFTkFCTEUoSklUKQpAQCAtNjQsNyArNzksOSBAQCB2b2lkKiBsbGlu
dEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29uCiAjZW5kaWYgLy8gT1MoV0lORE9XUykgfHwg
SEFWRShNQUNISU5FX0NPTlRFWFQpCiAKICNpZiBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVf
Q09OVEVYVCkKLWlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiBy
ZWdzKQorCisjaWYgIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorc3RhdGlj
IGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVySW1wbChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykK
IHsKICNpZiBPUyhEQVJXSU4pCiAjaWYgX19EQVJXSU5fVU5JWDAzCkBAIC0xMTAsMjYgKzEyNyw1
MCBAQCBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzCiAjZW5kaWYKIAog
I2VsaWYgSEFWRShNQUNISU5FX0NPTlRFWFQpCi0gICAgcmV0dXJuIHN0YWNrUG9pbnRlcihyZWdz
Lm1hY2hpbmVDb250ZXh0KTsKKyAgICByZXR1cm4gc3RhY2tQb2ludGVySW1wbChyZWdzLm1hY2hp
bmVDb250ZXh0KTsKICNlbmRpZgogfQorI2VuZGlmIC8vICFVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKIAotaW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVncykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCBzdGFja1Bv
aW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9QTEFU
Rk9STV9SRUdJU1RFUlNfU1BfV0lUSF9QUk9GSUxFKHJlZ3MpOworICAgIGFzc2VydElzTm90VGFn
Z2VkKHZhbHVlKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHZhbHVlKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzdGFja1BvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxh
dGZvcm1SZWdpc3RlcnMmPihyZWdzKSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitpbmxpbmUgdm9pZCBzZXRTdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Ms
IFQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3Jt
UmVnaXN0ZXJzJj4ocmVncykpOworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9G
SUxFKQorICAgIGFzc2VydElzTm90VGFnZ2VkKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKTsK
KyAgICBXVEZfV1JJVEVfUExBVEZPUk1fUkVHSVNURVJTX1NQX1dJVEhfUFJPRklMRShyZWdzLCBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKSk7CisjZWxzZQorICAgIHN0YWNrUG9pbnRlckltcGwo
cmVncykgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZhbHVlKTsKKyNlbmRpZgogfQorCiAjZWxzZSAv
LyBub3QgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0
ZXJzJiByZWdzKQogewotICAgIHJldHVybiByZWdzLnN0YWNrUG9pbnRlcjsKKyAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFQ+KHJlZ3Muc3RhY2tQb2ludGVyKTsKIH0KICNlbmRpZiAvLyBPUyhXSU5E
T1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogI2lmIEhBVkUoTUFDSElORV9DT05URVhU
KQotaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
CisKKyNpZiAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCitzdGF0aWMgaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXJJbXBsKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQog
ewogI2lmIE9TKERBUldJTikKLSAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0
LT5fX3NzKTsKKyAgICByZXR1cm4gc3RhY2tQb2ludGVySW1wbChtYWNoaW5lQ29udGV4dC0+X19z
cyk7CiAjZWxpZiBPUyhGUkVFQlNEKQogCiAjaWYgQ1BVKFg4NikKQEAgLTE2MywxNiArMjA0LDM3
IEBAIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKG1jb250ZXh0X3QmIG0KICNlbmRpZgogI2Vu
ZGlmCiB9CisjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQog
Ci1pbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250
ZXh0KQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUIHN0YWNrUG9pbnRlcihjb25zdCBt
Y29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKIHsKLSAgICByZXR1cm4gc3RhY2tQb2ludGVyKGNv
bnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7CisjaWYgVVNFKFBMQVRGT1JN
X1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9NQUNI
SU5FX0NPTlRFWFRfU1BfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0KTsKKyAgICBhc3NlcnRJ
c05vdFRhZ2dlZCh2YWx1ZSk7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPih2YWx1ZSk7Cisj
ZWxzZQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oc3RhY2tQb2ludGVySW1wbChjb25zdF9j
YXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgc2V0U3RhY2tQb2ludGVyKG1jb250ZXh0X3QmIG1h
Y2hpbmVDb250ZXh0LCBUIHZhbHVlKQoreworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lU
SF9QUk9GSUxFKQorICAgIGFzc2VydElzTm90VGFnZ2VkKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFs
dWUpKTsKKyAgICBXVEZfV1JJVEVfTUFDSElORV9DT05URVhUX1NQX1dJVEhfUFJPRklMRShtYWNo
aW5lQ29udGV4dCwgYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworI2Vsc2UKKyAgICBzdGFj
a1BvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0KSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUp
OworI2VuZGlmCiB9CiAjZW5kaWYgLy8gSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKIAogI2lmIE9T
KFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQotaW5saW5lIHZvaWQqJiBmcmFtZVBv
aW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCisKKyNpZiAhVVNFKFBMQVRGT1JNX1JFR0lT
VEVSU19XSVRIX1BST0ZJTEUpCitzdGF0aWMgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXJJbXBs
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogI2lmIE9TKERBUldJTikKIApAQCAtMjE5LDIy
ICsyODEsNDMgQEAgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpcwogI2Vu
ZGlmCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgIHJldHVybiBmcmFtZVBvaW50
ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlckltcGwocmVn
cy5tYWNoaW5lQ29udGV4dCk7CiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JNX1JF
R0lTVEVSU19XSVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQg
ZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewotICAgIHJldHVy
biBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKKyNp
ZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1ZSA9
IFdURl9SRUFEX1BMQVRGT1JNX1JFR0lTVEVSU19GUF9XSVRIX1BST0ZJTEUocmVncyk7CisgICAg
YXNzZXJ0SXNOb3RUYWdnZWQodmFsdWUpOworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4odmFs
dWUpOworI2Vsc2UKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KGZyYW1lUG9pbnRlckltcGwo
Y29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKSk7CisjZW5kaWYKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldEZyYW1lUG9pbnRlcihQbGF0Zm9ybVJl
Z2lzdGVycyYgcmVncywgVCB2YWx1ZSkKK3sKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJ
VEhfUFJPRklMRSkKKyAgICBhc3NlcnRJc05vdFRhZ2dlZChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHZh
bHVlKSk7CisgICAgV1RGX1dSSVRFX1BMQVRGT1JNX1JFR0lTVEVSU19GUF9XSVRIX1BST0ZJTEUo
cmVncywgYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworI2Vsc2UKKyAgICBmcmFtZVBvaW50
ZXJJbXBsKHJlZ3MpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0KICNl
bmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYgSEFW
RShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJP
RklMRSkKK3N0YXRpYyBpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlckltcGwobWNvbnRleHRfdCYg
bWFjaGluZUNvbnRleHQpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBmcmFtZVBvaW50
ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworICAgIHJldHVybiBmcmFtZVBvaW50ZXJJbXBsKG1h
Y2hpbmVDb250ZXh0LT5fX3NzKTsKICNlbGlmIE9TKEZSRUVCU0QpCiAKICNpZiBDUFUoWDg2KQpA
QCAtMjcyLDE2ICszNTUsMzcgQEAgaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIobWNvbnRleHRf
dCYgbQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90
aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBM
QVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citp
bmxpbmUgVCBmcmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7
CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFs
dWUgPSBXVEZfUkVBRF9NQUNISU5FX0NPTlRFWFRfRlBfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250
ZXh0KTsKKyAgICBhc3NlcnRJc05vdFRhZ2dlZCh2YWx1ZSk7CisgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxUPih2YWx1ZSk7CisjZWxzZQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oZnJhbWVQ
b2ludGVySW1wbChjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpKTsKKyNl
bmRpZgorfQogCi1pbmxpbmUgdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1h
Y2hpbmVDb250ZXh0KQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHNldEZyYW1l
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCwgVCB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gZnJhbWVQb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7
CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisgICAgYXNzZXJ0SXNO
b3RUYWdnZWQoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworICAgIFdURl9XUklURV9NQUNI
SU5FX0NPTlRFWFRfRlBfV0lUSF9QUk9GSUxFKG1hY2hpbmVDb250ZXh0LCBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHZhbHVlKSk7CisjZWxzZQorICAgIGZyYW1lUG9pbnRlckltcGwobWFjaGluZUNvbnRl
eHQpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBI
QVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5F
X0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVncykKKworI2lmICFVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkK
K3N0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlckltcGwoUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQogI2lmIF9fREFSV0lOX1VOSVgwMwpAQCAt
MzIyLDIyICs0MjYsMzkgQEAgaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZv
cgogI2VuZGlmCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgIHJldHVybiBpbnN0
cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CisgICAgcmV0dXJuIGluc3RydWN0
aW9uUG9pbnRlckltcGwocmVncy5tYWNoaW5lQ29udGV4dCk7CisjZW5kaWYKK30KKyNlbmRpZiAv
LyAhVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19XSVRIX1BST0ZJTEUpCisKK2lubGluZSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19X
SVRIX1BST0ZJTEUpCisgICAgdm9pZCogdmFsdWUgPSBXVEZfUkVBRF9QTEFURk9STV9SRUdJU1RF
UlNfUENfV0lUSF9QUk9GSUxFKHJlZ3MpOworI2Vsc2UKKyAgICB2b2lkKiB2YWx1ZSA9IGluc3Ry
dWN0aW9uUG9pbnRlckltcGwoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsK
ICNlbmRpZgorICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFn
Pih2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmIHJlZ3MpCitpbmxpbmUgdm9pZCBzZXRJbnN0cnVjdGlvblBvaW50ZXIo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+IHZhbHVlKQogewotICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKKyAgICBXVEZfV1JJVEVfUExBVEZPUk1fUkVHSVNURVJTX1BDX1dJVEhf
UFJPRklMRShyZWdzLCB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgaW5z
dHJ1Y3Rpb25Qb2ludGVySW1wbChyZWdzKSA9IHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisj
ZW5kaWYKIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkK
IAogCiAjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQpCi1pbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKKworI2lmICFVU0UoUExBVEZPUk1f
UkVHSVNURVJTX1dJVEhfUFJPRklMRSkKK3N0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlckltcGwobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiB7CiAjaWYgT1MoREFSV0lO
KQotICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOwor
ICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsK
ICNlbGlmIE9TKEZSRUVCU0QpCiAKICNpZiBDUFUoWDg2KQpAQCAtMzc1LDE1ICs0OTYsNjAgQEAg
aW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleAogI2Vycm9yIE5lZWQgYSB3
YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0
aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKyNlbmRpZiAvLyAhVVNFKFBMQVRGT1JNX1JFR0lTVEVS
U19XSVRIX1BST0ZJTEUpCiAKLWlubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PENGdW5jdGlvblB0clRhZz4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1h
Y2hpbmVDb250ZXh0KQogewotICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2Fz
dDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKKyNpZiBVU0UoUExBVEZPUk1fUkVHSVNU
RVJTX1dJVEhfUFJPRklMRSkKKyAgICB2b2lkKiB2YWx1ZSA9IFdURl9SRUFEX01BQ0hJTkVfQ09O
VEVYVF9QQ19XSVRIX1BST0ZJTEUobWFjaGluZUNvbnRleHQpOworI2Vsc2UKKyAgICB2b2lkKiB2
YWx1ZSA9IGluc3RydWN0aW9uUG9pbnRlckltcGwoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFj
aGluZUNvbnRleHQpKTsKKyNlbmRpZgorICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
Q0Z1bmN0aW9uUHRyVGFnPih2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIHNldEluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PENGdW5jdGlvblB0clRhZz4gdmFsdWUpCit7CisjaWYgVVNFKFBMQVRGT1JNX1JFR0lTVEVSU19X
SVRIX1BST0ZJTEUpCisgICAgV1RGX1dSSVRFX01BQ0hJTkVfQ09OVEVYVF9QQ19XSVRIX1BST0ZJ
TEUobWFjaGluZUNvbnRleHQsIHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAg
ICBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKG1hY2hpbmVDb250ZXh0KSA9IHZhbHVlLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkK
IAogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCisKKyNpZiBPUyhE
QVJXSU4pICYmIF9fREFSV0lOX1VOSVgwMyAmJiBDUFUoQVJNNjQpCisjaWYgIVVTRShQTEFURk9S
TV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQoraW5saW5lIHZvaWQqJiBsaW5rUmVnaXN0ZXJJbXBs
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4ocmVncy5fX2xyKTsKK30KKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1fUkVHSVNURVJT
X1dJVEhfUFJPRklMRSkKKworCitpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlv
blB0clRhZz4gbGlua1JlZ2lzdGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQorewor
I2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQorICAgIHZvaWQqIHZhbHVl
ID0gV1RGX1JFQURfUExBVEZPUk1fUkVHSVNURVJTX1BDX1dJVEhfUFJPRklMRShyZWdzKTsKKyNl
bHNlCisgICAgdm9pZCogdmFsdWUgPSBsaW5rUmVnaXN0ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxhdGZv
cm1SZWdpc3RlcnMmPihyZWdzKSk7CisjZW5kaWYKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPENGdW5jdGlvblB0clRhZz4odmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBzZXRMaW5r
UmVnaXN0ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxD
RnVuY3Rpb25QdHJUYWc+IHZhbHVlKQoreworI2lmIFVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lU
SF9QUk9GSUxFKQorICAgIFdURl9XUklURV9QTEFURk9STV9SRUdJU1RFUlNfUENfV0lUSF9QUk9G
SUxFKHJlZ3MsIHZhbHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICBsaW5rUmVn
aXN0ZXJJbXBsKHJlZ3MpID0gdmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgorfQor
I2VuZGlmIC8vIE9TKERBUldJTikgJiYgX19EQVJXSU5fVU5JWDAzICYmIENQVShBUk02NCkKKwog
I2lmIEhBVkUoTUFDSElORV9DT05URVhUKQogdGVtcGxhdGU8PiB2b2lkKiYgYXJndW1lbnRQb2lu
dGVyPDE+KG1jb250ZXh0X3QmKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIzMDgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp0
YWtlU2FtcGxlKGNvbnN0IAogICAgICAgICAgICAgICAgIG1fanNjRXhlY3V0aW9uVGhyZWFkLT5n
ZXRSZWdpc3RlcnMocmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBtYWNoaW5lRnJhbWUgPSBN
YWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKHJlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAg
Y2FsbEZyYW1lID0gc3RhdGljX2Nhc3Q8RXhlY1N0YXRlKj4obWFjaGluZUZyYW1lKTsKLSAgICAg
ICAgICAgICAgICBtYWNoaW5lUEMgPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KHJlZ2lzdGVycyk7CisgICAgICAgICAgICAgICAgbWFjaGluZVBDID0gTWFjaGluZUNvbnRleHQ6
Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3Mo
KTsKICAgICAgICAgICAgICAgICBsbGludFBDID0gcmVtb3ZlQ29kZVB0clRhZyhNYWNoaW5lQ29u
dGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0SXNOb3RUYWdnZWQobWFjaGluZVBDKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCShyZXZpc2lvbiAyMzA4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJQdHJUYWcuaCIK
ICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2F0
Y2hkb2cuaCIKQEAgLTU4LDEyICs2MCwxMCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAg
ICAgICwgdHJhcFBDKE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJz
KSkKICAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihy
ZWdpc3RlcnMpKQogICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQ
b2ludGVyKHJlZ2lzdGVycykpCi0gICAgewotICAgICAgICBhc3NlcnRJc05vdFRhZ2dlZCh0cmFw
UEMpOwotICAgIH0KKyAgICB7IH0KIAogICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7
Ci0gICAgdm9pZCogdHJhcFBDOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+IHRyYXBQQzsKICAgICB2b2lkKiBzdGFja1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQ
b2ludGVyOwogfTsKQEAgLTg3LDE0ICs4NywxMyBAQCB2b2lkIFZNVHJhcHM6OnRyeUluc3RhbGxU
cmFwQnJlYWtwb2ludHMoCiAgICAgLy8gVGhpcyBtdXN0IGJlIHRoZSBpbml0aWFsIHNpZ25hbCB0
byBnZXQgdGhlIG11dGF0b3IgdGhyZWFkJ3MgYXR0ZW50aW9uLgogICAgIC8vIExldCdzIGdldCB0
aGUgdGhyZWFkIHRvIGJyZWFrIGF0IGludmFsaWRhdGlvbiBwb2ludHMgaWYgbmVlZGVkLgogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdm9pZCogdHJhcFBDID0gY29udGV4dC50cmFwUEM7
CisgICAgdm9pZCogdHJhcFBDID0gY29udGV4dC50cmFwUEMudW50YWdnZWRFeGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIC8vIFdlIG11c3QgZW5zdXJlIHdlJ3JlIGluIEpJVC9MTGludCBjb2RlLiBJ
ZiB3ZSBhcmUsIHdlIGtub3cgYSBmZXcgdGhpbmdzOgogICAgIC8vIC0gVGhlIEpTIHRocmVhZCBp
c24ndCBob2xkaW5nIHRoZSBtYWxsb2MgbG9jay4gVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gbWFs
bG9jIGJlbG93LgogICAgIC8vIC0gVGhlIEpTIHRocmVhZCBpc24ndCBob2xkaW5nIHRoZSBDb2Rl
QmxvY2tTZXQgbG9jay4KICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gSklUL0xMSW50IGNvZGUsIHdl
IGNhbid0IHJ1biB0aGUgQysrIGNvZGUgYmVsb3cgYmVjYXVzZSBpdAogICAgIC8vIG1hbGxvY3Ms
IGFuZCB3ZSBtdXN0IHByb3ZlIHRoZSBKUyB0aHJlYWQgaXNuJ3QgaG9sZGluZyB0aGUgbWFsbG9j
IGxvY2sKICAgICAvLyB0byBiZSBhYmxlIHRvIGRvIHRoYXQgd2l0aG91dCByaXNraW5nIGEgZGVh
ZGxvY2suCi0gICAgYXNzZXJ0SXNOb3RUYWdnZWQodHJhcFBDKTsKICAgICBpZiAoIWlzSklUUEMo
dHJhcFBDKSAmJiAhTExJbnQ6OmlzTExJbnRQQyh0cmFwUEMpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE4OSwxMSArMTg4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluc3RhbGxTaWduYWxI
YW5kbGVyKFNpZ25hbDo6QmFkQWNjZXNzLCBbXSAoU2lnbmFsLCBTaWdJbmZvJiwgUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ2lzdGVycykgLT4gU2lnbmFsQWN0aW9uIHsKICAgICAgICAgICAgICAgICBT
aWduYWxDb250ZXh0IGNvbnRleHQocmVnaXN0ZXJzKTsKIAotICAgICAgICAgICAgICAgIGFzc2Vy
dElzTm90VGFnZ2VkKGNvbnRleHQudHJhcFBDKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzSklU
UEMoY29udGV4dC50cmFwUEMpKQorICAgICAgICAgICAgICAgIHZvaWQqIHRyYXBQQyA9IGNvbnRl
eHQudHJhcFBDLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWlzSklUUEModHJhcFBDKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFj
dGlvbjo6Tm90SGFuZGxlZDsKIAotICAgICAgICAgICAgICAgIENvZGVCbG9jayogY3VycmVudENv
ZGVCbG9jayA9IERGRzo6Y29kZUJsb2NrRm9yVk1UcmFwUEMoY29udGV4dC50cmFwUEMpOworICAg
ICAgICAgICAgICAgIENvZGVCbG9jayogY3VycmVudENvZGVCbG9jayA9IERGRzo6Y29kZUJsb2Nr
Rm9yVk1UcmFwUEModHJhcFBDKTsKICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2RlQmxv
Y2spIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHdlIHRyYXBwZWQgZm9yIHNvbWUg
b3RoZXIgcmVhc29uLCBlLmcuIFdhc20gT09CLCBvciB3ZSBkaWRuJ3QgcHJvcGVybHkgbW9uaXRv
ciB0aGUgUEMuIFJlZ2FyZGxlc3MsIHdlIGNhbid0IGRvIG11Y2ggbm93Li4uCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCShyZXZpc2lvbiAyMzA4
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBwcm9maWxpbmdUaW1lcihpbnQs
IHNpZ2luZm9fCiB7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHBsYXRmb3JtUmVnaXN0ZXJzID0g
V1RGOjpyZWdpc3RlcnNGcm9tVUNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkp
OwogICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZSgKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihwbGF0Zm9ybVJlZ2lzdGVycyksCisgICAgICAgIE1hY2hpbmVDb250
ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpLnVudGFnZ2VkRXhlY3V0
YWJsZUFkZHJlc3MoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVD
b250ZXh0OjpmcmFtZVBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpKSk7CiB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFs
eXplci5jcHAJKHJldmlzaW9uIDIzMDgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE0ICsxMjcs
MTggQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChp
IDwgMjkpOwogICAgICAgICBsb2coInglZDogJTAxNmxseCBmcDogJTAxNmxseCBscjogJTAxNmxs
eCIsCi0gICAgICAgICAgICBpLCByZWdpc3RlcnMuX194W2ldLCByZWdpc3RlcnMuX19mcCwgcmVn
aXN0ZXJzLl9fbHIpOworICAgICAgICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwKKyAgICAgICAg
ICAgIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXI8dWludDY0X3Q+KHJlZ2lzdGVycyksCisg
ICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6bGlua1JlZ2lzdGVyKHJlZ2lzdGVycykudW50YWdn
ZWRFeGVjdXRhYmxlQWRkcmVzczx1aW50NjRfdD4oKSk7CiAgICAgICAgIGxvZygic3A6ICUwMTZs
bHggcGM6ICUwMTZsbHggY3BzcjogJTA4eCIsCi0gICAgICAgICAgICByZWdpc3RlcnMuX19zcCwg
cmVnaXN0ZXJzLl9fcGMsIHJlZ2lzdGVycy5fX2Nwc3IpOworICAgICAgICAgICAgTWFjaGluZUNv
bnRleHQ6OnN0YWNrUG9pbnRlcjx1aW50NjRfdD4ocmVnaXN0ZXJzKSwKKyAgICAgICAgICAgIE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKS51bnRhZ2dlZEV4ZWN1
dGFibGVBZGRyZXNzPHVpbnQ2NF90PigpLAorICAgICAgICAgICAgcmVnaXN0ZXJzLl9fY3Bzcik7
CiAjZW5kaWYKICAgICB9CiAKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzOwotICAg
IHZvaWQqIG1hY2hpbmVQQzsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRy
VGFnPiBtYWNoaW5lUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1l
UG9pbnRlcjsKIH07CkBAIC0xNDUsOCArMTQ5LDggQEAgc3RhdGljIHZvaWQgaW5zdGFsbENyYXNo
SGFuZGxlcigpCiAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGwsIFtdIChTaWdu
YWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgIFNp
Z25hbENvbnRleHQgY29udGV4dChyZWdpc3RlcnMpOwogCi0gICAgICAgIGFzc2VydElzTm90VGFn
Z2VkKGNvbnRleHQubWFjaGluZVBDKTsKLSAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFj
aGluZVBDKSkKKyAgICAgICAgdm9pZCogbWFjaGluZVBDID0gY29udGV4dC5tYWNoaW5lUEMudW50
YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBpZiAoIWlzSklUUEMobWFjaGluZVBD
KSkKICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CiAKICAgICAg
ICAgU2lnaWxsQ3Jhc2hBbmFseXplciYgYW5hbHl6ZXIgPSBTaWdpbGxDcmFzaEFuYWx5emVyOjpp
bnN0YW5jZSgpOwpAQCAtMTY1LDcgKzE2OSw3IEBAIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKIAog
ICAgIHZvaWQgZHVtcCgpIHsgfQogCi0gICAgdm9pZCogbWFjaGluZVBDOworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IG1hY2hpbmVQQzsKICAgICB2b2lkKiBzdGFj
a1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKQEAgLTIxNyw3ICsyMjEsNyBA
QCBhdXRvIFNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUoU2lnbmFsCiAgICAgICAgIH0KICAg
ICAgICAgYXV0byYgbG9ja2VyID0gZXhwZWN0ZWRMb2NrZXIudmFsdWUoKTsKIAotICAgICAgICB2
b2lkKiBwYyA9IGNvbnRleHQubWFjaGluZVBDOworICAgICAgICB2b2lkKiBwYyA9IGNvbnRleHQu
bWFjaGluZVBDLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgYXV0byBpc0lu
SklUTWVtb3J5ID0gaW5zcGVjdG9yLmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGxvY2tlciwgcGMp
OwogICAgICAgICBpZiAoIWlzSW5KSVRNZW1vcnkpIHsKICAgICAgICAgICAgIGxvZygiRVJST1I6
IFRpbWVkIG91dDogbm90IGFibGUgdG8gZGV0ZXJtaW5lIGlmIHBjICVwIGlzIGluIHZhbGlkIEpJ
VCBleGVjdXRhYmxlIG1lbW9yeSIsIHBjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMzA4
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgYm9vbCBmYXN0SGFu
ZGxlckluc3RhbGxlZCB7IGZhbHNlCiAKIHN0YXRpYyBTaWduYWxBY3Rpb24gdHJhcEhhbmRsZXIo
U2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgY29udGV4dCkKIHsK
LSAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0
aW9uUG9pbnRlcihjb250ZXh0KTsKKyAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFj
aGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KS51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCk7CiAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVy
bmFsOjp2ZXJib3NlLCAic3RhcnRpbmcgaGFuZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1BvaW50
ZXIoZmF1bHRpbmdJbnN0cnVjdGlvbikpOwogCiAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2ln
bmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5
UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRP
ZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBT
aWduYWxBY3Rpb24gdHJhcEhhbmRsZXIoU2lnbmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxI
YW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBSYXdQb2ludGVyKGV4Y2Vw
dGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsK
LSAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihj
b250ZXh0KSA9IGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjpzZXRJbnN0cnVjdGlvblBvaW50ZXIoY29u
dGV4dCwgZXhjZXB0aW9uU3R1Yi5jb2RlKCkucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>