<?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>151370</bug_id>
          
          <creation_ts>2015-11-17 16:40:40 -0800</creation_ts>
          <short_desc>Implement the B3 equivalent of FTLCompile</short_desc>
          <delta_ts>2015-11-18 15:06:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151371</dependson>
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1142713</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-17 16:40:40 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142741</commentid>
    <comment_count>1</comment_count>
      <attachid>265724</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-17 17:57:26 -0800</bug_when>
    <thetext>Created attachment 265724
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142992</commentid>
    <comment_count>2</comment_count>
      <attachid>265784</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 14:52:47 -0800</bug_when>
    <thetext>Created attachment 265784
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142993</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 14:55:10 -0800</bug_when>
    <thetext>Attachment 265784 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLB3Compile.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142996</commentid>
    <comment_count>4</comment_count>
      <attachid>265784</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-18 14:58:30 -0800</bug_when>
    <thetext>Comment on attachment 265784
the patch

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

&gt; Source/JavaScriptCore/b3/B3Procedure.cpp:151
&gt; +RegisterAtOffsetList&amp; Procedure::calleeSaveRegisters()

Maybe const? I can&apos;t think of a valid change on the returned value.
    const RegisterAtOffsetList&amp; Procedure::calleeSaveRegisters() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142997</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 15:04:02 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 265784 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265784&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Procedure.cpp:151
&gt; &gt; +RegisterAtOffsetList&amp; Procedure::calleeSaveRegisters()
&gt; 
&gt; Maybe const? I can&apos;t think of a valid change on the returned value.
&gt;     const RegisterAtOffsetList&amp; Procedure::calleeSaveRegisters() const

True! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143001</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 15:06:47 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/192590</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265724</attachid>
            <date>2015-11-17 17:57:26 -0800</date>
            <delta_ts>2015-11-18 14:52:47 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11794</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24g
MTkyNTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFT
ZWN0aW9uKHNpemVfdCBzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUmVnaXN0ZXJBdE9mZnNl
dExpc3QmIFByb2NlZHVyZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7CisgICAgcmV0dXJuIGNv
ZGUoKS5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Cit9CisKIHNpemVfdCBQcm9jZWR1cmU6OmFkZFZh
bHVlSW5kZXgoKQogewogICAgIGlmIChtX3ZhbHVlSW5kZXhGcmVlTGlzdC5pc0VtcHR5KCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAxOTI1
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkIzT3JpZ2luLmgiCiAjaW5jbHVkZSAi
QjNUeXBlLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0yMjIsNiArMjIzLDggQEAgcHVi
bGljOgogCiAgICAgQWlyOjpDb2RlJiBjb2RlKCkgeyByZXR1cm4gKm1fY29kZTsgfQogCisgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QmIGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKwogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM0NvbXBpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM0NvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZUTENvbXBpbGUuaCIKKworI2lm
IEVOQUJMRShGVExfSklUKSAmJiBGVExfVVNFU19CMworCisjaW5jbHVkZSAiQjNHZW5lcmF0ZS5o
IgorI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1dp
dGhKSVRUeXBlLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiREZHQ29t
bW9uLmgiCisjaW5jbHVkZSAiREZHR3JhcGhTYWZlcG9pbnQuaCIKKyNpbmNsdWRlICJERkdPcGVy
YXRpb25zLmgiCisjaW5jbHVkZSAiRGF0YVZpZXcuaCIKKyNpbmNsdWRlICJEaXNhc3NlbWJsZXIu
aCIKKyNpbmNsdWRlICJGVExFeGNlcHRpb25IYW5kbGVyTWFuYWdlci5oIgorI2luY2x1ZGUgIkZU
TEV4aXRUaHVua0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkZUTElubGluZUNhY2hlU2l6ZS5oIgor
I2luY2x1ZGUgIkZUTEpJVENvZGUuaCIKKyNpbmNsdWRlICJGVExUaHVua3MuaCIKKyNpbmNsdWRl
ICJGVExVbndpbmRJbmZvLmgiCisjaW5jbHVkZSAiSklUU3ViR2VuZXJhdG9yLmgiCisjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CisKK3VzaW5nIG5hbWVzcGFjZSBERkc7
CisKK3ZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCit7CisgICAgR3JhcGgmIGdyYXBoID0gc3RhdGUuZ3JhcGg7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBncmFwaC5tX2NvZGVCbG9jazsKKyAgICBWTSYgdm0gPSBncmFwaC5t
X3ZtOworICAgIAorICAgIHsKKyAgICAgICAgR3JhcGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRl
LmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOworCisgICAgICAgIEIzOjpwcmVwYXJlRm9yR2VuZXJh
dGlvbigqc3RhdGUucHJvYyk7CisgICAgfQorCisgICAgaWYgKHNhZmVwb2ludFJlc3VsdC5kaWRH
ZXRDYW5jZWxsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNTRVJUKCFzdGF0
ZS5ncmFwaC5tX3ZtLmhlYXAuaXNDb2xsZWN0aW5nKCkpOworICAgIAorICAgIGlmIChzdGF0ZS5h
bGxvY2F0aW9uRmFpbGVkKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgc3RkOjp1bmlxdWVf
cHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPSBzdGF0ZS5wcm9jLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKSB7
CisgICAgICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlw
ZShzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwgIjpcbiIpOworICAg
ICAgICBkYXRhTG9nKCIgICAgIiwgKnJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7CisgICAgfQorICAg
IHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdURjo6bW92
ZShyZWdpc3Rlck9mZnNldHMpKTsKKworICAgIENDYWxsSGVscGVycyBqaXQoJnZtLCBjb2RlQmxv
Y2spOworICAgIEIzOjpnZW5lcmF0ZSgqc3RhdGUucHJvYywgaml0KTsKKworICAgIHN0YXRlLmZp
bmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4o
CisgICAgICAgIHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAg
ICBpZiAoc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0
ZSgpKSB7CisgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBzdGF0ZS5maW5h
bGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmVudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygp
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRM
X0pJVCkgJiYgRlRMX1VTRVNfQjMKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVENvZGUuY3BwCShyZXZpc2lvbiAxOTI1NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNCArNDIsMjUgQEAgSklU
Q29kZTo6fkpJVENvZGUoKQogICAgIGlmIChGVEw6OnNob3VsZER1bXBEaXNhc3NlbWJseSgpKSB7
CiAgICAgICAgIGRhdGFMb2coIkRlc3Ryb3lpbmcgRlRMIEpJVCBjb2RlIGF0ICIpOwogICAgICAg
ICBDb21tYVByaW50ZXIgY29tbWE7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgZGF0YUxvZyhj
b21tYSwgbV9iM0NvZGUpOworICAgICAgICBkYXRhTG9nKGNvbW1hLCBtX2FyaXR5Q2hlY2tFbnRy
eXBvaW50KTsKKyNlbHNlCiAgICAgICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9oYW5kbGVzKQog
ICAgICAgICAgICAgZGF0YUxvZyhjb21tYSwgcG9pbnRlckR1bXAoaGFuZGxlLmdldCgpKSk7CiAg
ICAgICAgIGRhdGFMb2coY29tbWEsIHBvaW50ZXJEdW1wKG1fYXJpdHlDaGVja0VudHJ5cG9pbnQu
ZXhlY3V0YWJsZU1lbW9yeSgpKSk7CiAgICAgICAgIGRhdGFMb2coY29tbWEsIHBvaW50ZXJEdW1w
KG1fZXhpdFRodW5rcy5leGVjdXRhYmxlTWVtb3J5KCkpKTsKICAgICAgICAgZGF0YUxvZygiXG4i
KTsKKyNlbmRpZgogICAgIH0KIH0KIAorI2lmIEZUTF9VU0VTX0IzCit2b2lkIEpJVENvZGU6Omlu
aXRpYWxpemVCM0NvZGUoQ29kZVJlZiBiM0NvZGUpCit7CisgICAgbV9iM0NvZGUgPSBiM0NvZGU7
Cit9CisjZWxzZSAvLyBGVExfVVNFU19CMwogdm9pZCBKSVRDb2RlOjppbml0aWFsaXplRXhpdFRo
dW5rcyhDb2RlUmVmIGV4aXRUaHVua3MpCiB7CiAgICAgbV9leGl0VGh1bmtzID0gZXhpdFRodW5r
czsKQEAgLTY1LDIxICs3NiwyNiBAQCB2b2lkIEpJVENvZGU6OmFkZERhdGFTZWN0aW9uKFBhc3NS
ZWZQdHI8CiAgICAgbV9kYXRhU2VjdGlvbnMuYXBwZW5kKGRhdGFTZWN0aW9uKTsKIH0KIAotdm9p
ZCBKSVRDb2RlOjppbml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZiBlbnRyeXBv
aW50KQordm9pZCBKSVRDb2RlOjppbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0ciBhZGRy
ZXNzKQogewotICAgIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQgPSBlbnRyeXBvaW50OworICAgIG1f
YWRkcmVzc0ZvckNhbGwgPSBhZGRyZXNzOwogfQorI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAKLXZv
aWQgSklUQ29kZTo6aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKENvZGVQdHIgYWRkcmVzcykKK3Zv
aWQgSklUQ29kZTo6aW5pdGlhbGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KENvZGVSZWYgZW50cnlw
b2ludCkKIHsKLSAgICBtX2FkZHJlc3NGb3JDYWxsID0gYWRkcmVzczsKKyAgICBtX2FyaXR5Q2hl
Y2tFbnRyeXBvaW50ID0gZW50cnlwb2ludDsKIH0KIAogSklUQ29kZTo6Q29kZVB0ciBKSVRDb2Rl
OjphZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSBhcml0eUNoZWNrKQogewogICAgIHN3aXRj
aCAoYXJpdHlDaGVjaykgewogICAgIGNhc2UgQXJpdHlDaGVja05vdFJlcXVpcmVkOgorI2lmIEZU
TF9VU0VTX0IzCisgICAgICAgIHJldHVybiBtX2IzQ29kZS5jb2RlKCk7CisjZWxzZQogICAgICAg
ICByZXR1cm4gbV9hZGRyZXNzRm9yQ2FsbDsKKyNlbmRpZgogICAgIGNhc2UgTXVzdENoZWNrQXJp
dHk6CiAgICAgICAgIHJldHVybiBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50LmNvZGUoKTsKICAgICB9
CkBAIC04OSw3ICsxMDUsNyBAQCBKSVRDb2RlOjpDb2RlUHRyIEpJVENvZGU6OmFkZHJlc3NGb3JD
YWxsCiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9m
ZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9hZGRyZXNzRm9y
Q2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSkgKyBv
ZmZzZXQ7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpA
QCAtMTIxLDEwICsxMzcsMTIgQEAgYm9vbCBKSVRDb2RlOjpjb250YWlucyh2b2lkKikKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKKyNpZiAhRlRMX1VTRVNfQjMKIEpJVENvZGU6OkNvZGVQdHIgSklU
Q29kZTo6ZXhpdFRodW5rcygpCiB7CiAgICAgcmV0dXJuIG1fZXhpdFRodW5rcy5jb2RlKCk7CiB9
CisjZW5kaWYKIAogSklUQ29kZSogSklUQ29kZTo6ZnRsKCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCShyZXZpc2lvbiAxOTI1NTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjggKzU4
LDM2IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgSlNDOjpKSVRDb2RlIHsKIHB1YmxpYzoKICAg
ICBKSVRDb2RlKCk7CiAgICAgfkpJVENvZGUoKTsKLSAgICAKKwogICAgIENvZGVQdHIgYWRkcmVz
c0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOwogICAgIHZvaWQqIGV4ZWN1dGFibGVB
ZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZGF0YUFk
ZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBvZmZz
ZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpIG92ZXJyaWRlOwogICAgIHNpemVfdCBzaXplKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjb250YWlucyh2b2lkKikgb3ZlcnJpZGU7Ci0gICAgCisKKyNp
ZiBGVExfVVNFU19CMworICAgIHZvaWQgaW5pdGlhbGl6ZUIzQ29kZShDb2RlUmVmKTsKKyNlbHNl
CiAgICAgdm9pZCBpbml0aWFsaXplRXhpdFRodW5rcyhDb2RlUmVmKTsKICAgICB2b2lkIGFkZEhh
bmRsZShQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+KTsKICAgICB2b2lkIGFkZERh
dGFTZWN0aW9uKFBhc3NSZWZQdHI8RGF0YVNlY3Rpb24+KTsKLSAgICB2b2lkIGluaXRpYWxpemVB
cml0eUNoZWNrRW50cnlwb2ludChDb2RlUmVmKTsKICAgICB2b2lkIGluaXRpYWxpemVBZGRyZXNz
Rm9yQ2FsbChDb2RlUHRyKTsKKyNlbmRpZgorICAgIHZvaWQgaW5pdGlhbGl6ZUFyaXR5Q2hlY2tF
bnRyeXBvaW50KENvZGVSZWYpOwogICAgIAogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNv
bnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgb3ZlcnJpZGU7CiAKICAgICBSZWdpc3RlclNldCBsaXZl
UmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sq
LCBDYWxsU2l0ZUluZGV4KSBvdmVycmlkZTsKLSAgICAKKworI2lmIEZUTF9VU0VTX0IzCisgICAg
Q29kZVJlZiBiM0NvZGUoKSBjb25zdCB7IHJldHVybiBtX2IzQ29kZTsgfQorI2Vsc2UKICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiYgaGFuZGxlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlczsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RGF0YVNl
Y3Rpb24+PiYgZGF0YVNlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU2VjdGlvbnM7IH0K
ICAgICAKICAgICBDb2RlUHRyIGV4aXRUaHVua3MoKTsKKyNlbmRpZgogICAgIAogICAgIEpJVENv
ZGUqIGZ0bCgpIG92ZXJyaWRlOwogICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uKCkgb3Zl
cnJpZGU7CkBAIC05MSwxMSArOTksMTcgQEAgcHVibGljOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8TGF6eVNsb3dQYXRoPj4gbGF6eVNsb3dQYXRoczsKICAgICAKIHByaXZhdGU6CisjaWYg
RlRMX1VTRVNfQjMKKyAgICBDb2RlUmVmIG1fYjNDb2RlOworI2Vsc2UKICAgICBWZWN0b3I8UmVm
UHRyPERhdGFTZWN0aW9uPj4gbV9kYXRhU2VjdGlvbnM7CiAgICAgVmVjdG9yPFJlZlB0cjxFeGVj
dXRhYmxlTWVtb3J5SGFuZGxlPj4gbV9oYW5kbGVzOwogICAgIENvZGVQdHIgbV9hZGRyZXNzRm9y
Q2FsbDsKKyNlbmRpZgogICAgIENvZGVSZWYgbV9hcml0eUNoZWNrRW50cnlwb2ludDsKKyNpZiAh
RlRMX1VTRVNfQjMKICAgICBDb2RlUmVmIG1fZXhpdFRodW5rczsKKyNlbmRpZgogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExKSVRGaW5hbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmNwcAkocmV2aXNpb24gMTkyNTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Mywx
MSArNzMsMjUgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIAogYm9vbCBKSVRGaW5h
bGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogeworI2lmIEZUTF9VU0VTX0IzCisgICAgZm9yIChP
U1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvIDogb3NyRXhpdCkgeworICAgICAgICBiM0NvZGVM
aW5rQnVmZmVyLT5saW5rKAorICAgICAgICAgICAgaW5mby5tX3RodW5rSnVtcCwKKyAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsKAorICAgICAgICAgICAgICAgIG1fcGxhbi52bS5nZXRDVElT
dHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIH0KKyAg
ICAKKyAgICBqaXRDb2RlLT5pbml0aWFsaXplQjNDb2RlKAorICAgICAgICBGSU5BTElaRV9ERkdf
Q09ERSgKKyAgICAgICAgICAgICpiM0NvZGVMaW5rQnVmZmVyLAorICAgICAgICAgICAgKCJGVEwg
QjMgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNv
ZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpKSkpOworCisjZWxzZSAvLyBGVExfVVNF
U19CMwogICAgIGZvciAodW5zaWduZWQgaSA9IGppdENvZGUtPmhhbmRsZXMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmNhY2hlRmx1c2goCiAgICAgICAgICAgICBq
aXRDb2RlLT5oYW5kbGVzKClbaV0tPnN0YXJ0KCksIGppdENvZGUtPmhhbmRsZXMoKVtpXS0+c2l6
ZUluQnl0ZXMoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGV4aXRUaHVua3NMaW5rQnVmZmVy
KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvc3JFeGl0LnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gb3NyRXhpdFtp
XTsKQEAgLTEyNCw2ICsxMzgsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlv
bigpCiAgICAgICAgICAgICAqb3V0T2ZMaW5lQ29kZUluZm9zW2ldLm1fbGlua0J1ZmZlciwKICAg
ICAgICAgICAgICgiRlRMIG91dCBvZiBsaW5lIGNvZGUgZm9yICVzIiwgb3V0T2ZMaW5lQ29kZUlu
Zm9zW2ldLm1fY29kZURlc2NyaXB0aW9uKSkuZXhlY3V0YWJsZU1lbW9yeSgpKTsKICAgICB9Cisj
ZW5kaWYgLy8gRlRMX1VTRVNfQjMKIAogICAgIGppdENvZGUtPmluaXRpYWxpemVBcml0eUNoZWNr
RW50cnlwb2ludCgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHJldmlzaW9uIDE5MjU1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDExICs2MCwyMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBmaW5hbGl6ZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgZmluYWxpemVGdW5jdGlvbigpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPExpbmtCdWZmZXI+IGV4aXRUaHVua3NMaW5rQnVmZmVyOworI2lmIEZUTF9VU0VT
X0IzCisgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGIzQ29kZUxpbmtCdWZmZXI7Cisj
ZW5kaWYKKworICAgIC8vIEV2ZW50dWFsbHksIHdlIGNhbiBnZXQgcmlkIG9mIHRoaXMgd2l0aCBC
My4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gZW50cnlwb2ludExpbmtCdWZmZXI7
CisgICAgCisjaWYgIUZUTF9VU0VTX0IzCisgICAgLy8gSW4gQjMsIHdlIGNhbiBkbyBhbGwgb2Yg
dGhpcyBkaXJlY3RseSBpbiB0aGUgQjMgY29kZS4gVGhhdCBpbmNsdWRlcyBzbG93IHBhdGhzIGFu
ZCBleGNlcHRpb24gaGFuZGxlcnMuCisgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGV4
aXRUaHVua3NMaW5rQnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBzaWRl
Q29kZUxpbmtCdWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGhhbmRsZUV4
Y2VwdGlvbnNMaW5rQnVmZmVyOwogICAgIFZlY3RvcjxPdXRPZkxpbmVDb2RlSW5mbz4gb3V0T2ZM
aW5lQ29kZUluZm9zOworI2VuZGlmCisgICAgCiAgICAgVmVjdG9yPE9TUkV4aXRDb21waWxhdGlv
bkluZm8+IG9zckV4aXQ7CiAgICAgVmVjdG9yPENDYWxsSGVscGVyczo6SnVtcD4gbGF6eVNsb3dQ
YXRoR2VuZXJhdG9ySnVtcHM7CiAgICAgR2VuZXJhdGVkRnVuY3Rpb24gZnVuY3Rpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265784</attachid>
            <date>2015-11-18 14:52:47 -0800</date>
            <delta_ts>2015-11-18 14:58:30 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23175</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBA
CisyMDE1LTExLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHRoZSBCMyBlcXVpdmFsZW50IG9mIEZUTENvbXBpbGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTM3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIEIzIHZlcnNpb24g
b2YgRlRMQ29tcGlsZSBhbmQgZ2V0cyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gaW5z
dGFsbGluZyBhbiBGVEwKKyAgICAgICAgY29tcGlsYXRpb24gKGkuZS4gdGhlIGZpbmFsaXplciBh
bmQgSklUQ29kZSkgdG8gYmUgYXdhcmUgb2YgQjMuIFRoYXQgcmVxdWlyZXMgc3R1YmJpbmcgYSBs
b3Qgb2Ygc3R1ZmYKKyAgICAgICAgb3V0IGFuZCBhbHNvIHNpbXBsaWZ5aW5nIGEgbG90IG9mIGNv
ZGUgYXJvdW5kIGhhdmluZyBldmVyeXRoaW5nIGluc2lkZSBhIHNpbmdsZSBjb250aWd1b3VzIGNo
dW5rIG9mCisgICAgICAgIEpJVCBjb2RlIHJhdGhlciB0aGFuIHNvbWUgb3BhcXVlIEpJVCBjb2Rl
IGhhbmRsZXMgcGx1cyBtaXNjZWxsYW5lb3VzIHNpZGUtY29kZXMuIFRoaXMgY29tcGlsZXMgYnV0
CisgICAgICAgIGNyYXNoZXMgYmVjYXVzZSBsb3dlcmluZyBpc24ndCBkb25lIHlldC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjphZGRE
YXRhU2VjdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmNhbGxlZVNhdmVSZWdp
c3RlcnMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjphZGRWYWx1ZUluZGV4KToKKyAg
ICAgICAgKiBiMy9CM1Byb2NlZHVyZS5oOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpj
b2RlKToKKyAgICAgICAgKiBmdGwvRlRMQjNDb21waWxlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6Om1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgICogZnRsL0ZUTEV4
Y2VwdGlvbkhhbmRsZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGNlcHRpb25I
YW5kbGVyTWFuYWdlcjo6Y2FsbE9wZXJhdGlvbkV4Y2VwdGlvblRhcmdldCk6CisgICAgICAgIChK
U0M6OkZUTDo6RXhjZXB0aW9uSGFuZGxlck1hbmFnZXI6OmxhenlTbG93UGF0aEV4Y2VwdGlvblRh
cmdldCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhjZXB0aW9uSGFuZGxlck1hbmFnZXI6OmdldEJ5
SWRPU1JFeGl0KToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6SklUQ29kZTo6fkpJVENvZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkpJVENvZGU6Omlu
aXRpYWxpemVCM0NvZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmluaXRpYWxpemVF
eGl0VGh1bmtzKToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjphZGREYXRhU2VjdGlvbik6
CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9p
bnQpOgorICAgICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpKSVRDb2RlOjpjb250YWlucyk6CisgICAgICAgIChKU0M6OkZUTDo6SklU
Q29kZTo6ZXhpdFRodW5rcyk6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZnRsKToKKyAg
ICAgICAgKiBmdGwvRlRMSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmIz
Q29kZSk6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6aGFuZGxlcyk6CisgICAgICAgIChK
U0M6OkZUTDo6SklUQ29kZTo6ZGF0YVNlY3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRMSklURmlu
YWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmNvZGVTaXplKToK
KyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgorICAg
ICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2gpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXQ6OmdhdGhlclJlZ2lzdGVyc1RvU3BpbGxGb3JDYWxs
SWZFeGNlcHRpb24pOgorCiAyMDE1LTExLTE4ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRoZXJlIGlzIGEgYnVnIHdoZW4gZGVmYXVsdCBwYXJhbWV0ZXIgdmFs
dWVzIGFyZSBtaXhlZCB3aXRoIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyIHZhbHVlcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5MjU1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC01MzAsNiArNTMwLDcgQEAKIAkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNB
QjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQjM4NzhCMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJCbG9ja1dvcmts
aXN0LmggKi87IH07CiAJCTBGQjM4NzhGMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJs
b2NrT3JkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCMzg3OEMxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5jcHAg
Ki87IH07CiAJCTBGQjM4NzkwMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3Jk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjM4
NzhEMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuaCAqLzsgfTsKKwkJ
MEZCMzg3OTIxQkZEMzFBMTAwRTNBQjFFIC8qIEZUTEIzQ29tcGlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkIzODc5MTFCRkQzMUExMDBFM0FC
MUUgLyogRlRMQjNDb21waWxlLmNwcCAqLzsgfTsKIAkJMEZCNDM4QTMxOTI3MEIxRDAwRTFGQkM5
IC8qIFN0cnVjdHVyZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCAq
LzsgfTsKIAkJMEZCNEZCNzMxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MDFC
Qzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLzsgfTsKIAkJMEZCNEZCNzQx
QkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZU
TExhenlTbG93UGF0aC5oICovOyB9OwpAQCAtMjU4Miw2ICsyNTgzLDcgQEAKIAkJMEZCMzg3OEIx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyQmxvY2tXb3JrbGlzdC5oOyBwYXRoID0gYjMvYWlyL0FpckJsb2Nr
V29ya2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCMzg3OEMxQkZCQzQ0
RDAwRTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwOyBwYXRoID0gYjMv
YWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQjM4NzhEMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyT3B0aW1pemVCbG9ja09yZGVyLmg7
IHBhdGggPSBiMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQjM4NzkxMUJGRDMxQTEwMEUzQUIxRSAvKiBGVExCM0NvbXBpbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMQjNDb21waWxlLmNwcDsg
cGF0aCA9IGZ0bC9GVExCM0NvbXBpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZVNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQjRCNTEwMTZCM0E5NjQwMDNGNjk2QiAvKiBERkdNaW5pZmll
ZElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01pbmlmaWVkSUQuaDsg
cGF0aCA9IGRmZy9ERkdNaW5pZmllZElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWxsb2NhdG9yLmg7IHBhdGggPSBkZmcvREZHQWxsb2Nh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzU0LDYgKzQzNTYsNyBAQAog
CQkJCTBGRUEwQTFBMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmggKi8sCiAJCQkJMEY0ODUzMjMxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292
ZXJ5LmNwcCAqLywKIAkJCQkwRjQ4NTMyNDE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxl
UmVjb3ZlcnkuaCAqLywKKwkJCQkwRkIzODc5MTFCRkQzMUExMDBFM0FCMUUgLyogRlRMQjNDb21w
aWxlLmNwcCAqLywKIAkJCQkyNjlENjM2RDFCRkJFNUQwMDAxMDFCMUQgLyogRlRMQjNPdXRwdXQu
aCAqLywKIAkJCQkwRkVBMDlGRTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNw
cCAqLywKIAkJCQkwRkVBMDlGRjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmgg
Ki8sCkBAIC04NzIwLDYgKzg3MjMsNyBAQAogCQkJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAv
KiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMThDQkMwMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEZCMzg3OTIxQkZEMzFBMTAwRTNBQjFFIC8qIEZUTEIzQ29tcGls
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI3MDA5MDBEQUM2QkJD
MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlE
NDEwN0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDE5MjU1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OCw2ICsxNDgsMTEgQEAgdm9pZCogUHJvY2VkdXJlOjphZGREYXRhU2VjdGlvbihz
aXplX3QgcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyQXRPZmZzZXRMaXN0JiBQ
cm9jZWR1cmU6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAgIHJldHVybiBjb2RlKCkuY2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOworfQorCiBzaXplX3QgUHJvY2VkdXJlOjphZGRWYWx1ZUluZGV4
KCkKIHsKICAgICBpZiAobV92YWx1ZUluZGV4RnJlZUxpc3QuaXNFbXB0eSgpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMTkyNTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCM09yaWdpbi5oIgogI2luY2x1ZGUgIkIzVHlwZS5o
IgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5o
IgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMjIyLDYgKzIyMyw4IEBAIHB1YmxpYzoKIAog
ICAgIEFpcjo6Q29kZSYgY29kZSgpIHsgcmV0dXJuICptX2NvZGU7IH0KIAorICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0JiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExCM0NvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQjNDb21waWxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQjNDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGVExDb21waWxlLmgiCisKKyNpZiBFTkFCTEUo
RlRMX0pJVCkgJiYgRlRMX1VTRVNfQjMKKworI2luY2x1ZGUgIkIzR2VuZXJhdGUuaCIKKyNpbmNs
dWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlw
ZS5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgor
I2luY2x1ZGUgIkRGR0dyYXBoU2FmZXBvaW50LmgiCisjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5o
IgorI2luY2x1ZGUgIkRhdGFWaWV3LmgiCisjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5j
bHVkZSAiRlRMRXhjZXB0aW9uSGFuZGxlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJGVExFeGl0VGh1
bmtHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJGVExJbmxpbmVDYWNoZVNpemUuaCIKKyNpbmNsdWRl
ICJGVExKSVRDb2RlLmgiCisjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCisjaW5jbHVkZSAiRlRMVW53
aW5kSW5mby5oIgorI2luY2x1ZGUgIkpJVFN1YkdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKKyNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCit1c2luZyBuYW1lc3BhY2UgREZHOworCit2b2lk
IGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0
KQoreworICAgIEdyYXBoJiBncmFwaCA9IHN0YXRlLmdyYXBoOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZ3JhcGgubV9jb2RlQmxvY2s7CisgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKKyAg
ICAKKyAgICB7CisgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwg
c2FmZXBvaW50UmVzdWx0KTsKKworICAgICAgICBCMzo6cHJlcGFyZUZvckdlbmVyYXRpb24oKnN0
YXRlLnByb2MpOworICAgIH0KKworICAgIGlmIChzYWZlcG9pbnRSZXN1bHQuZGlkR2V0Q2FuY2Vs
bGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVCghc3RhdGUuZ3JhcGgu
bV92bS5oZWFwLmlzQ29sbGVjdGluZygpKTsKKyAgICAKKyAgICBpZiAoc3RhdGUuYWxsb2NhdGlv
bkZhaWxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdp
c3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJPZmZzZXRzID0KKyAgICAgICAgc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpKTsKKyAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpIHsKKyAgICAgICAgZGF0YUxv
ZygiVW53aW5kIGluZm8gZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0YXRlLmdyYXBoLm1f
Y29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAiOlxuIik7CisgICAgICAgIGRhdGFMb2coIiAg
ICAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4iKTsKKyAgICB9CisgICAgc3RhdGUuZ3JhcGgubV9j
b2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RGOjptb3ZlKHJlZ2lzdGVyT2Zmc2V0
cykpOworCisgICAgQ0NhbGxIZWxwZXJzIGppdCgmdm0sIGNvZGVCbG9jayk7CisgICAgQjM6Omdl
bmVyYXRlKCpzdGF0ZS5wcm9jLCBqaXQpOworCisgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVM
aW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigKKyAgICAgICAgdm0sIGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGlmIChzdGF0ZS5maW5h
bGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKKyAgICAgICAg
c3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGJpdHdpc2VfY2FzdDxHZW5lcmF0ZWRGdW5j
dGlvbj4oCisgICAgICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZW50cnlw
b2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
RlRMCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkgJiYgRlRMX1VTRVNfQjMKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxOTI1NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRlRM
Q29tcGlsZS5oIgogCi0jaWYgRU5BQkxFKEZUTF9KSVQpCisjaWYgRU5BQkxFKEZUTF9KSVQpICYm
ICFGVExfVVNFU19CMwogCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNs
dWRlICJDQ2FsbEhlbHBlcnMuaCIKQEAgLTEzMTgsNSArMTMxOCw1IEBAIHZvaWQgY29tcGlsZShT
dGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmUKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAog
Ci0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpICYm
IEZUTF9VU0VTX0IzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhjZXB0
aW9uSGFuZGxlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMRXhjZXB0aW9uSGFuZGxlck1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI1NTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTEgQEAgdm9pZCBFeGNlcHRpb25IYW5kbGVy
TWFuYWdlcjo6YWRkTmV3RXhpdAogCiBDb2RlTG9jYXRpb25MYWJlbCBFeGNlcHRpb25IYW5kbGVy
TWFuYWdlcjo6Y2FsbE9wZXJhdGlvbkV4Y2VwdGlvblRhcmdldCh1aW50MzJfdCBzdGFja21hcFJl
Y29yZEluZGV4KQogeworI2lmIEZUTF9VU0VTX0IzCisgICAgVU5VU0VEX1BBUkFNKHN0YWNrbWFw
UmVjb3JkSW5kZXgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgIGF1dG8g
ZmluZFJlc3VsdCA9IG1fbWFwLmZpbmQoc3RhY2ttYXBSZWNvcmRJbmRleCk7CiAgICAgaWYgKGZp
bmRSZXN1bHQgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJl
bCgpOwpAQCAtNTUsMTAgKzYwLDE2IEBAIENvZGVMb2NhdGlvbkxhYmVsIEV4Y2VwdGlvbkhhbmRs
ZXJNYW5hZ2UKICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9zdGF0ZS5maW5h
bGl6ZXItPm9zckV4aXRbb3NyRXhpdEluZGV4XTsKICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLm1f
Y2FsbE9wZXJhdGlvbkV4Y2VwdGlvbk9TUkV4aXRFbnRyYW5jZS5pc1NldCgpKTsKICAgICByZXR1
cm4gbV9zdGF0ZS5maW5hbGl6ZXItPmV4aXRUaHVua3NMaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGlu
Zm8ubV9jYWxsT3BlcmF0aW9uRXhjZXB0aW9uT1NSRXhpdEVudHJhbmNlKTsKKyNlbmRpZiAvLyBG
VExfVVNFU19CMwogfQogCiBDb2RlTG9jYXRpb25MYWJlbCBFeGNlcHRpb25IYW5kbGVyTWFuYWdl
cjo6bGF6eVNsb3dQYXRoRXhjZXB0aW9uVGFyZ2V0KHVpbnQzMl90IHN0YWNrbWFwUmVjb3JkSW5k
ZXgpCiB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICBVTlVTRURfUEFSQU0oc3RhY2ttYXBSZWNvcmRJ
bmRleCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ29k
ZUxvY2F0aW9uTGFiZWwoKTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgYXV0byBmaW5kUmVz
dWx0ID0gbV9tYXAuZmluZChzdGFja21hcFJlY29yZEluZGV4KTsKICAgICBpZiAoZmluZFJlc3Vs
dCA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CkBA
IC02OCw2ICs3OSw3IEBAIENvZGVMb2NhdGlvbkxhYmVsIEV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2UK
ICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9zdGF0ZS5maW5hbGl6ZXItPm9z
ckV4aXRbb3NyRXhpdEluZGV4XTsKICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLm1fdGh1bmtMYWJl
bC5pc1NldCgpKTsKICAgICByZXR1cm4gbV9zdGF0ZS5maW5hbGl6ZXItPmV4aXRUaHVua3NMaW5r
QnVmZmVyLT5sb2NhdGlvbk9mKGluZm8ubV90aHVua0xhYmVsKTsKKyNlbmRpZiAvLyBGVExfVVNF
U19CMwogfQogCiBPU1JFeGl0KiBFeGNlcHRpb25IYW5kbGVyTWFuYWdlcjo6Z2V0QnlJZE9TUkV4
aXQodWludDMyX3Qgc3RhY2ttYXBSZWNvcmRJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkocmV2aXNpb24gMTkyNTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTQgKzQy
LDI1IEBAIEpJVENvZGU6On5KSVRDb2RlKCkKICAgICBpZiAoRlRMOjpzaG91bGREdW1wRGlzYXNz
ZW1ibHkoKSkgewogICAgICAgICBkYXRhTG9nKCJEZXN0cm95aW5nIEZUTCBKSVQgY29kZSBhdCAi
KTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworI2lmIEZUTF9VU0VTX0IzCisgICAgICAg
IGRhdGFMb2coY29tbWEsIG1fYjNDb2RlKTsKKyAgICAgICAgZGF0YUxvZyhjb21tYSwgbV9hcml0
eUNoZWNrRW50cnlwb2ludCk7CisjZWxzZQogICAgICAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IG1f
aGFuZGxlcykKICAgICAgICAgICAgIGRhdGFMb2coY29tbWEsIHBvaW50ZXJEdW1wKGhhbmRsZS5n
ZXQoKSkpOwogICAgICAgICBkYXRhTG9nKGNvbW1hLCBwb2ludGVyRHVtcChtX2FyaXR5Q2hlY2tF
bnRyeXBvaW50LmV4ZWN1dGFibGVNZW1vcnkoKSkpOwogICAgICAgICBkYXRhTG9nKGNvbW1hLCBw
b2ludGVyRHVtcChtX2V4aXRUaHVua3MuZXhlY3V0YWJsZU1lbW9yeSgpKSk7CiAgICAgICAgIGRh
dGFMb2coIlxuIik7CisjZW5kaWYKICAgICB9CiB9CiAKKyNpZiBGVExfVVNFU19CMwordm9pZCBK
SVRDb2RlOjppbml0aWFsaXplQjNDb2RlKENvZGVSZWYgYjNDb2RlKQoreworICAgIG1fYjNDb2Rl
ID0gYjNDb2RlOworfQorI2Vsc2UgLy8gRlRMX1VTRVNfQjMKIHZvaWQgSklUQ29kZTo6aW5pdGlh
bGl6ZUV4aXRUaHVua3MoQ29kZVJlZiBleGl0VGh1bmtzKQogewogICAgIG1fZXhpdFRodW5rcyA9
IGV4aXRUaHVua3M7CkBAIC02NCwxNSArNzUsMTYgQEAgdm9pZCBKSVRDb2RlOjphZGREYXRhU2Vj
dGlvbihQYXNzUmVmUHRyPAogewogICAgIG1fZGF0YVNlY3Rpb25zLmFwcGVuZChkYXRhU2VjdGlv
bik7CiB9CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXpl
QXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZiBlbnRyeXBvaW50KQordm9pZCBKSVRDb2RlOjpp
bml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0ciBhZGRyZXNzKQogewotICAgIG1fYXJpdHlD
aGVja0VudHJ5cG9pbnQgPSBlbnRyeXBvaW50OworICAgIG1fYWRkcmVzc0ZvckNhbGwgPSBhZGRy
ZXNzOwogfQogCi12b2lkIEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRy
IGFkZHJlc3MpCit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2ludChD
b2RlUmVmIGVudHJ5cG9pbnQpCiB7Ci0gICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7Cisg
ICAgbV9hcml0eUNoZWNrRW50cnlwb2ludCA9IGVudHJ5cG9pbnQ7CiB9CiAKIEpJVENvZGU6OkNv
ZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHlDaGVjaykK
QEAgLTEyMSwxMCArMTMzLDEyIEBAIGJvb2wgSklUQ29kZTo6Y29udGFpbnModm9pZCopCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCisjaWYgIUZUTF9VU0VTX0IzCiBKSVRDb2RlOjpDb2RlUHRyIEpJ
VENvZGU6OmV4aXRUaHVua3MoKQogewogICAgIHJldHVybiBtX2V4aXRUaHVua3MuY29kZSgpOwog
fQorI2VuZGlmCiAKIEpJVENvZGUqIEpJVENvZGU6OmZ0bCgpCiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMTkyNTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDI4ICs1
OCwzNiBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIEpTQzo6SklUQ29kZSB7CiBwdWJsaWM6CiAg
ICAgSklUQ29kZSgpOwogICAgIH5KSVRDb2RlKCk7Ci0gICAgCisKICAgICBDb2RlUHRyIGFkZHJl
c3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKICAgICB2b2lkKiBleGVjdXRhYmxl
QWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHZvaWQqIGRhdGFB
ZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgb2Zm
c2V0T2Yodm9pZCogcG9pbnRlckludG9Db2RlKSBvdmVycmlkZTsKICAgICBzaXplX3Qgc2l6ZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgY29udGFpbnModm9pZCopIG92ZXJyaWRlOwotICAgIAorCisj
aWYgRlRMX1VTRVNfQjMKKyAgICB2b2lkIGluaXRpYWxpemVCM0NvZGUoQ29kZVJlZik7CisjZWxz
ZQogICAgIHZvaWQgaW5pdGlhbGl6ZUV4aXRUaHVua3MoQ29kZVJlZik7CiAgICAgdm9pZCBhZGRI
YW5kbGUoUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPik7CiAgICAgdm9pZCBhZGRE
YXRhU2VjdGlvbihQYXNzUmVmUHRyPERhdGFTZWN0aW9uPik7Ci0gICAgdm9pZCBpbml0aWFsaXpl
QXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZik7CisjZW5kaWYKICAgICB2b2lkIGluaXRpYWxp
emVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyKTsKKyAgICB2b2lkIGluaXRpYWxpemVBcml0eUNoZWNr
RW50cnlwb2ludChDb2RlUmVmKTsKICAgICAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhj
b25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIG92ZXJyaWRlOwogCiAgICAgUmVnaXN0ZXJTZXQgbGl2
ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2Nr
KiwgQ2FsbFNpdGVJbmRleCkgb3ZlcnJpZGU7Ci0gICAgCisKKyNpZiBGVExfVVNFU19CMworICAg
IENvZGVSZWYgYjNDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9iM0NvZGU7IH0KKyNlbHNlCiAgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPj4mIGhhbmRsZXMoKSBj
b25zdCB7IHJldHVybiBtX2hhbmRsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPERhdGFT
ZWN0aW9uPj4mIGRhdGFTZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNlY3Rpb25zOyB9
CiAgICAgCiAgICAgQ29kZVB0ciBleGl0VGh1bmtzKCk7CisjZW5kaWYKICAgICAKICAgICBKSVRD
b2RlKiBmdGwoKSBvdmVycmlkZTsKICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbigpIG92
ZXJyaWRlOwpAQCAtOTEsMTEgKzk5LDE3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPExhenlTbG93UGF0aD4+IGxhenlTbG93UGF0aHM7CiAgICAgCiBwcml2YXRlOgorICAg
IENvZGVQdHIgbV9hZGRyZXNzRm9yQ2FsbDsKKyNpZiBGVExfVVNFU19CMworICAgIENvZGVSZWYg
bV9iM0NvZGU7CisjZWxzZQogICAgIFZlY3RvcjxSZWZQdHI8RGF0YVNlY3Rpb24+PiBtX2RhdGFT
ZWN0aW9uczsKICAgICBWZWN0b3I8UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiBtX2hh
bmRsZXM7Ci0gICAgQ29kZVB0ciBtX2FkZHJlc3NGb3JDYWxsOworI2VuZGlmCiAgICAgQ29kZVJl
ZiBtX2FyaXR5Q2hlY2tFbnRyeXBvaW50OworI2lmICFGVExfVVNFU19CMwogICAgIENvZGVSZWYg
bV9leGl0VGh1bmtzOworI2VuZGlmCiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShy
ZXZpc2lvbiAxOTI1NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwyMyBAQCBKSVRGaW5hbGl6ZXI6
On5KSVRGaW5hbGl6ZXIoKQogc2l6ZV90IEpJVEZpbmFsaXplcjo6Y29kZVNpemUoKQogewogICAg
IHNpemVfdCByZXN1bHQgPSAwOwotICAgIAorCisjaWYgRlRMX1VTRVNfQjMKKyAgICBpZiAoYjND
b2RlTGlua0J1ZmZlcikKKyAgICAgICAgcmVzdWx0ICs9IGIzQ29kZUxpbmtCdWZmZXItPnNpemUo
KTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgaWYgKGV4aXRUaHVua3NMaW5rQnVmZmVyKQog
ICAgICAgICByZXN1bHQgKz0gZXhpdFRodW5rc0xpbmtCdWZmZXItPnNpemUoKTsKLSAgICBpZiAo
ZW50cnlwb2ludExpbmtCdWZmZXIpCi0gICAgICAgIHJlc3VsdCArPSBlbnRyeXBvaW50TGlua0J1
ZmZlci0+c2l6ZSgpOwogICAgIGlmIChzaWRlQ29kZUxpbmtCdWZmZXIpCiAgICAgICAgIHJlc3Vs
dCArPSBzaWRlQ29kZUxpbmtCdWZmZXItPnNpemUoKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9u
c0xpbmtCdWZmZXIpCiAgICAgICAgIHJlc3VsdCArPSBoYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZl
ci0+c2l6ZSgpOwotICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGppdENvZGUtPmhhbmRsZXMo
KS5zaXplKCk7IGktLTspCiAgICAgICAgIHJlc3VsdCArPSBqaXRDb2RlLT5oYW5kbGVzKClbaV0t
PnNpemVJbkJ5dGVzKCk7CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKKyAgICAKKyAgICBpZiAoZW50
cnlwb2ludExpbmtCdWZmZXIpCisgICAgICAgIHJlc3VsdCArPSBlbnRyeXBvaW50TGlua0J1ZmZl
ci0+c2l6ZSgpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03MywxMSArNzgsMjUg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplRnVuY3Rpb24oKQogeworI2lmIEZUTF9VU0VTX0IzCisgICAgZm9yIChPU1JFeGl0Q29t
cGlsYXRpb25JbmZvJiBpbmZvIDogb3NyRXhpdCkgeworICAgICAgICBiM0NvZGVMaW5rQnVmZmVy
LT5saW5rKAorICAgICAgICAgICAgaW5mby5tX3RodW5rSnVtcCwKKyAgICAgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsKAorICAgICAgICAgICAgICAgIG1fcGxhbi52bS5nZXRDVElTdHViKG9zckV4
aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIH0KKyAgICAKKyAgICBq
aXRDb2RlLT5pbml0aWFsaXplQjNDb2RlKAorICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKKyAg
ICAgICAgICAgICpiM0NvZGVMaW5rQnVmZmVyLAorICAgICAgICAgICAgKCJGVEwgQjMgY29kZSBm
b3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywg
SklUQ29kZTo6RlRMSklUKSkuZGF0YSgpKSkpOworCisjZWxzZSAvLyBGVExfVVNFU19CMwogICAg
IGZvciAodW5zaWduZWQgaSA9IGppdENvZGUtPmhhbmRsZXMoKS5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OmNhY2hlRmx1c2goCiAgICAgICAgICAgICBqaXRDb2RlLT5o
YW5kbGVzKClbaV0tPnN0YXJ0KCksIGppdENvZGUtPmhhbmRsZXMoKVtpXS0+c2l6ZUluQnl0ZXMo
KSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGV4aXRUaHVua3NMaW5rQnVmZmVyKSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvc3JFeGl0LnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gb3NyRXhpdFtpXTsKQEAgLTEy
NCw2ICsxNDMsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAgICAg
ICAgICAgICAqb3V0T2ZMaW5lQ29kZUluZm9zW2ldLm1fbGlua0J1ZmZlciwKICAgICAgICAgICAg
ICgiRlRMIG91dCBvZiBsaW5lIGNvZGUgZm9yICVzIiwgb3V0T2ZMaW5lQ29kZUluZm9zW2ldLm1f
Y29kZURlc2NyaXB0aW9uKSkuZXhlY3V0YWJsZU1lbW9yeSgpKTsKICAgICB9CisjZW5kaWYgLy8g
RlRMX1VTRVNfQjMKIAogICAgIGppdENvZGUtPmluaXRpYWxpemVBcml0eUNoZWNrRW50cnlwb2lu
dCgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHJldmlzaW9uIDE5MjU1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDExICs2MCwyMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBmaW5hbGl6ZSgpIG92ZXJyaWRlOwogICAg
IGJvb2wgZmluYWxpemVGdW5jdGlvbigpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PExpbmtCdWZmZXI+IGV4aXRUaHVua3NMaW5rQnVmZmVyOworI2lmIEZUTF9VU0VTX0IzCisgICAg
c3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGIzQ29kZUxpbmtCdWZmZXI7CisjZW5kaWYKKwor
ICAgIC8vIEV2ZW50dWFsbHksIHdlIGNhbiBnZXQgcmlkIG9mIHRoaXMgd2l0aCBCMy4KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gZW50cnlwb2ludExpbmtCdWZmZXI7CisgICAgCisj
aWYgIUZUTF9VU0VTX0IzCisgICAgLy8gSW4gQjMsIHdlIGNhbiBkbyBhbGwgb2YgdGhpcyBkaXJl
Y3RseSBpbiB0aGUgQjMgY29kZS4gVGhhdCBpbmNsdWRlcyBzbG93IHBhdGhzIGFuZCBleGNlcHRp
b24gaGFuZGxlcnMuCisgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGV4aXRUaHVua3NM
aW5rQnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBzaWRlQ29kZUxpbmtC
dWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGhhbmRsZUV4Y2VwdGlvbnNM
aW5rQnVmZmVyOwogICAgIFZlY3RvcjxPdXRPZkxpbmVDb2RlSW5mbz4gb3V0T2ZMaW5lQ29kZUlu
Zm9zOworI2VuZGlmCisgICAgCiAgICAgVmVjdG9yPE9TUkV4aXRDb21waWxhdGlvbkluZm8+IG9z
ckV4aXQ7CiAgICAgVmVjdG9yPENDYWxsSGVscGVyczo6SnVtcD4gbGF6eVNsb3dQYXRoR2VuZXJh
dG9ySnVtcHM7CiAgICAgR2VuZXJhdGVkRnVuY3Rpb24gZnVuY3Rpb247CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE5MjU1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw4ICsx
NDMsMTEgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgZHVtcENvbnRleHQuZHVt
cChvdXQsIHByZWZpeCk7CiAgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9m
aWxlcjo6T3JpZ2luU3RhY2soKSwgb3V0LnRvQ1N0cmluZygpKTsKICAgICAgICAgb3V0LnJlc2V0
KCk7Ci0gICAgICAgIAorCiAgICAgICAgIG91dC5wcmludCgiICAgIERpc2Fzc2VtYmx5OlxuIik7
CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgb3V0LnByaW50KCIgICAgICAgIDxub3QgaW1wbGVt
ZW50ZWQgeWV0PlxuIik7CisjZWxzZQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3RhdGUuaml0Q29kZS0+aGFuZGxlcygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAo
c3RhdGUuY29kZVNlY3Rpb25OYW1lc1tpXSAhPSBTRUNUSU9OX05BTUUoInRleHQiKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTE1NCw2ICsxNTcsNyBAQCB2b2lkIGxpbmsoU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihoYW5kbGUtPnN0
YXJ0KCkpLCBoYW5kbGUtPnNpemVJbkJ5dGVzKCksCiAgICAgICAgICAgICAgICAgIiAgICAgICIs
IG91dCwgTExWTVN1YnNldCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBjb21waWxhdGlv
bi0+YWRkRGVzY3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmco
KSk7CiAgICAgICAgIG91dC5yZXNldCgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcAkocmV2aXNpb24gMTkyNTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDEw
ICsxMzcsMTcgQEAgT1NSRXhpdDo6T1NSRXhpdChPU1JFeGl0RGVzY3JpcHRvciYgZGVzYwogCiBD
b2RlTG9jYXRpb25KdW1wIE9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2Nr
KiBmdGxDb2RlQmxvY2spIGNvbnN0CiB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICByZXR1cm4gQ29k
ZUxvY2F0aW9uSnVtcCgKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCisgICAgICAg
ICAgICBmdGxDb2RlQmxvY2stPmppdENvZGUoKS0+ZnRsKCktPmIzQ29kZSgpLmNvZGUoKS5kYXRh
TG9jYXRpb24oKSkgKworICAgICAgICBtX3BhdGNoYWJsZUNvZGVPZmZzZXQpOworI2Vsc2UgLy8g
RlRMX1VTRVNfQjMKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcCgKICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oCiAgICAgICAgICAgICBmdGxDb2RlQmxvY2stPmppdENvZGUoKS0+
ZnRsKCktPmV4aXRUaHVua3MoKS5kYXRhTG9jYXRpb24oKSkgKwogICAgICAgICBtX3BhdGNoYWJs
ZUNvZGVPZmZzZXQpOworI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiB9CiAKIHZvaWQgT1NSRXhpdDo6
Z2F0aGVyUmVnaXN0ZXJzVG9TcGlsbEZvckNhbGxJZkV4Y2VwdGlvbihTdGFja01hcHMmIHN0YWNr
bWFwcywgU3RhY2tNYXBzOjpSZWNvcmQmIHJlY29yZCkK
</data>
<flag name="review"
          id="290808"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>