<?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>152494</bug_id>
          
          <creation_ts>2015-12-21 17:30:00 -0800</creation_ts>
          <short_desc>FTL B3 should do tail calls</short_desc>
          <delta_ts>2015-12-22 12:03:51 -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>
          
          <blocked>151808</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>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150828</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 17:30:00 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150829</commentid>
    <comment_count>1</comment_count>
      <attachid>267768</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 17:31:31 -0800</bug_when>
    <thetext>Created attachment 267768
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150923</commentid>
    <comment_count>2</comment_count>
      <attachid>267792</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 11:27:41 -0800</bug_when>
    <thetext>Created attachment 267792
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150924</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-22 11:28:51 -0800</bug_when>
    <thetext>Attachment 267792 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5077:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5117:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 5 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>1150925</commentid>
    <comment_count>4</comment_count>
      <attachid>267792</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-12-22 11:32:13 -0800</bug_when>
    <thetext>Comment on attachment 267792
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150926</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 11:37:30 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 267792 [details]
&gt; the patch
&gt; 
&gt; r=me

Thanks!  I&apos;ll fix the build and land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150928</commentid>
    <comment_count>6</comment_count>
      <attachid>267793</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 11:38:18 -0800</bug_when>
    <thetext>Created attachment 267793
pathc for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150929</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-22 11:39:33 -0800</bug_when>
    <thetext>Attachment 267793 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5077:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:5117:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 5 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>1150930</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 12:03:51 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194368</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267768</attachid>
            <date>2015-12-21 17:31:31 -0800</date>
            <delta_ts>2015-12-22 11:27:41 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8846</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5
NDM1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwyNCBAQCB2b2lkIFZhbHVlUmVwOjplbWl0UmVzdG9yZShB
c3NlbWJseUhlbHBlCiAgICAgfQogfQogCitWYWx1ZVJlY292ZXJ5IFZhbHVlUmVwOjpyZWNvdmVy
eUZvckpTVmFsdWUoKQoreworICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBSZWdpc3Rl
cjoKKyAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmluR1BSKGdwcigpLCBEYXRhRm9ybWF0
SlMpOworICAgIGNhc2UgU3RhY2s6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEob2Zmc2V0RnJv
bUZQKCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgICAgIHJldHVybiBWYWx1ZVJl
Y292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIo
b2Zmc2V0RnJvbUZQKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKKyAgICAgICAgICAgIERh
dGFGb3JtYXRKUyk7CisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmNvbnN0YW50KEpTVmFsdWU6OmVuY29kZSh2YWx1ZSgpKSk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RG
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkocmV2aXNpb24gMTk0
MzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5o
IgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIy
NCw2ICsyMjUsMTIgQEAgcHVibGljOgogICAgIC8vIHdpbGwgd29yayBldmVuIGlmIGl0IHJlcXVp
cmVzIG1vdmluZyBiZXR3ZWVuIGJpdHMgYSBHUFIgYW5kIGEgRlBSLgogICAgIHZvaWQgZW1pdFJl
c3RvcmUoQXNzZW1ibHlIZWxwZXJzJiwgUmVnKTsKIAorICAgIC8vIENvbXB1dGVzIHRoZSBWYWx1
ZVJlY292ZXJ5IGFzc3VtaW5nIHRoYXQgdGhlIFZhbHVlKiB3YXMgZm9yIGEgSlNWYWx1ZSAoaS5l
LiBJbnQ2NCkuCisgICAgLy8gTk9URTogV2Ugc2hvdWxkIGF2b2lkIHB1dHRpbmcgSlNWYWx1ZS1y
ZWxhdGVkIG1ldGhvZHMgaW4gQjMsIGJ1dCB0aGlzIHdhcyBoYXJkIHRvIGF2b2lkCisgICAgLy8g
YmVjYXVzZSBzb21lIHBhcnRzIG9mIEpTQyB1c2UgVmFsdWVSZWNvdmVyeSBsaWtlIGEgZ2VuZXJh
bCAid2hlcmUgbXkgYml0cyBhdCIgb2JqZWN0LCBhbG1vc3QKKyAgICAvLyBleGFjdGx5IGxpa2Ug
VmFsdWVSZXAuCisgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeUZvckpTVmFsdWUoKTsKKwogcHJp
dmF0ZToKICAgICBLaW5kIG1fa2luZDsKICAgICB1bmlvbiBVIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAxOTQzNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA3OCw3ICs0MDc4LDcgQEAg
dm9pZCB0ZXN0U3RvcmUxNkFyZygpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUxNiwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUp
OwogCi0gICAgICAgIGludDhfdCBzdG9yYWdlID0gLTE7CisgICAgICAgIGludDE2X3Qgc3RvcmFn
ZSA9IC0xOwogICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAm
c3RvcmFnZSwgMSkgPT0gNDIpOwogICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE5NDM1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8g
V2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhwZXJpbWVudGFsIHRyYW5zaXRpb24gZnJvbSBM
TFZNIHRvIEIzIGFzIHRoZSBiYWNrZW5kIGZvciB0aGUgRlRMLiBXZSBkb24ndAogLy8geWV0IGtu
b3cgaG93IGl0IHdpbGwgdHVybiBvdXQuIEZvciBub3csIHRoaXMgZmxhZyB3aWxsIGNvbnRyb2wg
d2hldGhlciBGVEwgdXNlcyBCMy4gUmVtZW1iZXIgdG8gc2V0IHRoaXMKIC8vIHRvIDAgYmVmb3Jl
IGNvbW1pdHRpbmchCi0jZGVmaW5lIEZUTF9VU0VTX0IzIDAKKyNkZWZpbmUgRlRMX1VTRVNfQjMg
MQogCiBzdHJ1Y3QgTm9kZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5NDM1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MDM3LDE2ICs1MDM3LDEwMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxlVGFpbENhbGwo
KQogICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgdW5zaWduZWQg
bnVtQXJncyA9IG5vZGUtPm51bUNoaWxkcmVuKCkgLSAxOworCisgICAgICAgIExWYWx1ZSBqc0Nh
bGxlZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAg
IAogI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVk
KCkgfHwgIXZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIC8vIFdlIHdhbnQgQjMgdG8gZ2l2ZSB1cyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB1
c2luZyB3aGF0ZXZlciBtZWNoYW5pc20gaXQgdGhpbmtzIGlzCisgICAgICAgIC8vIGNvbnZlbmll
bnQuIFRoZSBnZW5lcmF0b3IgdGhlbiBzaHVmZmxlcyB0aG9zZSBhcmd1bWVudHMgaW50byBvdXIg
b3duIGNhbGwgZnJhbWUsCisgICAgICAgIC8vIGRlc3Ryb3lpbmcgb3VyIGZyYW1lIGluIHRoZSBw
cm9jZXNzLgorCisgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFZhbHVlPiBhcmd1bWVudHM7CisK
KyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGpzQ2FsbGVlLCBWYWx1
ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QwKSkpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKKyAgICAgICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGxl
dCB0aGUgc2h1ZmZsZXIgZG8gYm94aW5nIGZvciB1cywgYnV0IGl0J3Mgbm90IHN1cGVyIGNsZWFy
IHRoYXQgdGhpcworICAgICAgICAgICAgLy8gd291bGQgYmUgYmV0dGVyLiBBbHNvLCBpZiB3ZSB3
YW50ZWQgdG8gZG8gdGhhdCwgdGhlbiB3ZSdkIGhhdmUgdG8gdGVhY2ggdGhlIHNodWZmbGVyCisg
ICAgICAgICAgICAvLyB0aGF0IDMyLWJpdCB2YWx1ZXMgY291bGQgbGFuZCBhdCA0LWJ5dGUgYWxp
Z25tZW50IGJ1dCBub3QgOC1ieXRlIGFsaWdubWVudC4KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgQ29uc3RyYWluZWRWYWx1ZSBjb25zdHJhaW5lZFZhbHVlKAorICAgICAgICAgICAgICAgIGxv
d0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLAorICAgICAgICAgICAg
ICAgIFZhbHVlUmVwOjpXYXJtQW55KTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoY29u
c3RyYWluZWRWYWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRWZWN0b3IoYXJndW1lbnRzKTsKKworICAgICAgICAvLyBQcmV2ZW50IGFueSBvZiB0aGUg
YXJndW1lbnRzIGZyb20gdXNpbmcgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIuCisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OworCisgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgdG8gdGVsbCB0aGUgcGF0Y2hwb2ludCB0aGF0
IHdlIHdpbGwgY2xvYmJlciByZWdpc3RlcnMsIHNpbmNlIHdlIHdvbid0IHJldHVybgorICAgICAg
ICAvLyBhbnl3YXkuCisKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVP
cmlnaW4pOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZXJlIG1heSBiZSBzb21lIGV4
Y2VwdGlvbiB0aGluZ3MgdGhhdCBuZWVkIHRvIGhhcHBlbiBoZXJlLgorICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2ODYKKworICAg
ICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOworICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IEdQUkluZm86OnJlZ1QwOworCisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKKyAgICAgICAgICAg
ICAgICAgICAgc2h1ZmZsZURhdGEuYXJncy5hcHBlbmQocGFyYW1zWzEgKyBpXS5yZWNvdmVyeUZv
ckpTVmFsdWUoKSk7CisKKyAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNh
dmVSZWdpc3RlcnMoaml0LmNvZGVCbG9jaygpKTsKKworICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsK
KworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hl
Y2s7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxlcHJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJy
YW5jaFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLAorICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoMCkpOworCisgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5zZXRGcmFtZVNodWZmbGVEYXRhKHNodWZmbGVEYXRhKTsKKyAgICAgICAgICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlcihqaXQsIHNodWZmbGVEYXRhKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsK
KworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBmYXN0Q2FsbCA9IGppdC5uZWFy
VGFpbENhbGwoKTsKKworICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7CisKKyAg
ICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlciBzbG93UGF0aFNodWZmbGVyKGppdCwgc2h1
ZmZsZURhdGEpOworICAgICAgICAgICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIuc2V0Q2FsbGVlSlNW
YWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgICAgICBz
bG93UGF0aFNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgpOworCisgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUklu
Zm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd0NhbGwg
PSBqaXQubmVhckNhbGwoKTsKKworICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24o
SklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKKworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIGNvZGVPcmlnaW4sIEdQUkluZm86
OnJlZ1QwKTsKKworICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAg
ICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmtCdWZmZXIudm0oKS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5l
cmF0b3IpLmNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhz
bG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlvbnMoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwo
c2xvd0NhbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRp
b25PZih0YXJnZXRUb0NoZWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChmYXN0Q2FsbCkpOworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAjZWxz
ZQotICAgICAgICBpbnQgbnVtQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAgICAg
ICAgIFN0YWNrbWFwQXJndW1lbnRMaXN0IGV4aXRBcmd1bWVudHM7CiAgICAgICAgIGV4aXRBcmd1
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG51bUFyZ3MgKyA2KTsKIAogICAgICAgICB1bnNpZ25lZCBz
dGFja21hcElEID0gbV9zdGFja21hcElEcysrOwotICAgICAgICBleGl0QXJndW1lbnRzLmFwcGVu
ZChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSkpOworICAgICAgICBl
eGl0QXJndW1lbnRzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MCkpKTsKICAgICAgICAgZXhpdEFyZ3VtZW50cy5hcHBlbmQobV90YWdUeXBlTnVtYmVyKTsKIAog
ICAgICAgICBWZWN0b3I8RXhpdFZhbHVlPiBjYWxsQXJndW1lbnRzKG51bUFyZ3MpOwpAQCAtNTA1
NCwxMiArNTE0MSwxMiBAQCBwcml2YXRlOgogICAgICAgICBib29sIG5lZWRzVGFnVHlwZU51bWJl
ciB7IGZhbHNlIH07CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKSB7
CiAgICAgICAgICAgICBjYWxsQXJndW1lbnRzW2ldID0KLSAgICAgICAgICAgICAgICBleGl0VmFs
dWVGb3JUYWlsQ2FsbChleGl0QXJndW1lbnRzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MSArIGkpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgZXhpdFZhbHVlRm9yVGFpbENhbGwoZXhp
dEFyZ3VtZW50cywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkubm9kZSgpKTsKICAg
ICAgICAgICAgIGlmIChjYWxsQXJndW1lbnRzW2ldLmRhdGFGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
SW50MzIpCiAgICAgICAgICAgICAgICAgbmVlZHNUYWdUeXBlTnVtYmVyID0gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIEpTVGFpbENhbGwgdGFpbENhbGwoc3RhY2ttYXBJRCwgbV9ub2RlLCBX
VEY6Om1vdmUoY2FsbEFyZ3VtZW50cykpOworICAgICAgICBKU1RhaWxDYWxsIHRhaWxDYWxsKHN0
YWNrbWFwSUQsIG5vZGUsIFdURjo6bW92ZShjYWxsQXJndW1lbnRzKSk7CiAKICAgICAgICAgZXhp
dEFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMihuZWVkc1RhZ1R5cGVOdW1iZXIg
PyAyIDogMSkpOwogICAgICAgICBleGl0QXJndW1lbnRzLmluc2VydCgwLCBjb25zdE51bGwobV9v
dXQucmVmOCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267792</attachid>
            <date>2015-12-22 11:27:41 -0800</date>
            <delta_ts>2015-12-22 11:38:18 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11148</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE1LTEyLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIEIzIHNob3VsZCBkbyB0YWlsIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPTUcgdGhpcyB3YXMgc28gZWFzeS4KKworICAgICAgICBUaGUg
b25seSBzaGFkeSBwYXJ0IGlzIHRoYXQgSSBicm9rZSBhIGxheWVyaW5nIHJ1bGUgdGhhdCB3ZSBo
YWQgc28gZmFyIGJlZW4gZm9sbG93aW5nOiBCMyB3YXMKKyAgICAgICAgc2l0dGluZyBiZWxvdyB0
aGUgSlNDIHJ1bnRpbWUsIGFuZCBkaWQgbm90IHVzZSBKUy1zcGVjaWZpYyB0eXBlcy4gTm8gbW9y
ZSwgc2luY2UgQjM6OlZhbHVlUmVwCisgICAgICAgIGNhbiBub3cgdHVybiBpdHNlbGYgaW50byBh
IFZhbHVlUmVjb3ZlcnkgZm9yIGEgSlNWYWx1ZS4gVGhpcyBzbWFsbCBmZWF0dXJlIG1ha2VzIGEg
aHVnZQorICAgICAgICBkaWZmZXJlbmNlIGZvciB0aGUgcmVhZGFiaWxpdHkgb2YgdGFpbCBjYWxs
IGNvZGU6IGl0IG1ha2VzIGl0IHBsYWluIHRoYXQgdGhlIGNhbGwgZnJhbWUKKyAgICAgICAgc2h1
ZmZsZXIgaXMgYmFzaWNhbGx5IGp1c3QgZGlyZWN0bHkgY29uc3VtaW5nIHRoZSBzdGFja21hcCBn
ZW5lcmF0aW9uIHBhcmFtcywgYW5kIGluc29mYXIgYXMKKyAgICAgICAgdGhlcmUgaXMgYW55IGRh
dGEgdHJhbnNmb3JtYXRpb24sIGl0J3MganVzdCBiZWNhdXNlIGl0IHVzZXMgZGlmZmVyZW50IGNs
YXNzZXMgdG8gc2F5IHRoZSBzYW1lCisgICAgICAgIHRoaW5nLgorCisgICAgICAgIEkgdGhpbmsg
d2Ugc2hvdWxkIGF2b2lkIGFkZGluZyB0b28gbWFueSBKUy1zcGVjaWZpYyB0aGluZ3MgdG8gQjMu
IEJ1dCwgc28gbG9uZyBhcyBpdCdzIHN0aWxsCisgICAgICAgIHBvc3NpYmxlIHRvIHVzZSBCMyB0
byBjb21waWxlIHRoaW5ncyB0aGF0IGFyZW4ndCBKUywgSSB0aGluayB3ZSdsbCBiZSBmaW5lLgor
CisgICAgICAgICogYjMvQjNWYWx1ZVJlcC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJl
cDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6ZW1pdFJlc3RvcmUpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWVSZXA6OnJlY292ZXJ5Rm9ySlNWYWx1ZSk6CisgICAgICAgICog
YjMvQjNWYWx1ZVJlcC5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVRhaWxDYWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2FsbE9yQ29u
c3RydWN0VmFyYXJncyk6CisgICAgICAgICogdGVzdC9zdHJlc3MvZnRsLXRhaWwtY2FsbC5qczog
QWRkZWQuCisKIDIwMTUtMTItMjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNuaXBwZWZ5IG9wX25lZ2F0ZSBmb3IgdGhlIGJhc2VsaW5lIEpJVC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5NDM2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJs
eUhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCkBAIC01Nyw3ICs1OCw3IEBAIHZvaWQgVmFsdWVSZXA6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY28KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFZhbHVlUmVwOjplbWl0UmVzdG9yZShBc3NlbWJseUhlbHBlcnMmIGppdCwgUmVnIHJl
ZykKK3ZvaWQgVmFsdWVSZXA6OmVtaXRSZXN0b3JlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWcg
cmVnKSBjb25zdAogewogICAgIGlmIChyZWcuaXNHUFIoKSkgewogICAgICAgICBzd2l0Y2ggKGtp
bmQoKSkgewpAQCAtMTAwLDYgKzEwMSwyNCBAQCB2b2lkIFZhbHVlUmVwOjplbWl0UmVzdG9yZShB
c3NlbWJseUhlbHBlCiAgICAgfQogfQogCitWYWx1ZVJlY292ZXJ5IFZhbHVlUmVwOjpyZWNvdmVy
eUZvckpTVmFsdWUoKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBS
ZWdpc3RlcjoKKyAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmluR1BSKGdwcigpLCBEYXRh
Rm9ybWF0SlMpOworICAgIGNhc2UgU3RhY2s6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEob2Zm
c2V0RnJvbUZQKCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgICAgIHJldHVybiBW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCisgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIob2Zmc2V0RnJvbUZQKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKKyAgICAgICAg
ICAgIERhdGFGb3JtYXRKUyk7CisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIFZh
bHVlUmVjb3Zlcnk6OmNvbnN0YW50KEpTVmFsdWU6OmRlY29kZSh2YWx1ZSgpKSk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3Bh
Y2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkocmV2aXNp
b24gMTk0MzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNv
dmVyeS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTIyMiw3ICsyMjMsMTMgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBoYXMgYSBzaW1wbGUg
Y29udHJhY3Q6IGl0IGVtaXRzIGNvZGUgdG8gcmVzdG9yZSB0aGUgdmFsdWUgaW50byB0aGUgZ2l2
ZW4gcmVnaXN0ZXIuIFRoaXMKICAgICAvLyB3aWxsIHdvcmsgZXZlbiBpZiBpdCByZXF1aXJlcyBt
b3ZpbmcgYmV0d2VlbiBiaXRzIGEgR1BSIGFuZCBhIEZQUi4KLSAgICB2b2lkIGVtaXRSZXN0b3Jl
KEFzc2VtYmx5SGVscGVycyYsIFJlZyk7CisgICAgdm9pZCBlbWl0UmVzdG9yZShBc3NlbWJseUhl
bHBlcnMmLCBSZWcpIGNvbnN0OworCisgICAgLy8gQ29tcHV0ZXMgdGhlIFZhbHVlUmVjb3Zlcnkg
YXNzdW1pbmcgdGhhdCB0aGUgVmFsdWUqIHdhcyBmb3IgYSBKU1ZhbHVlIChpLmUuIEludDY0KS4K
KyAgICAvLyBOT1RFOiBXZSBzaG91bGQgYXZvaWQgcHV0dGluZyBKU1ZhbHVlLXJlbGF0ZWQgbWV0
aG9kcyBpbiBCMywgYnV0IHRoaXMgd2FzIGhhcmQgdG8gYXZvaWQKKyAgICAvLyBiZWNhdXNlIHNv
bWUgcGFydHMgb2YgSlNDIHVzZSBWYWx1ZVJlY292ZXJ5IGxpa2UgYSBnZW5lcmFsICJ3aGVyZSBt
eSBiaXRzIGF0IiBvYmplY3QsIGFsbW9zdAorICAgIC8vIGV4YWN0bHkgbGlrZSBWYWx1ZVJlcC4K
KyAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5Rm9ySlNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIEtpbmQgbV9raW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5NDM2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyR2VuZXJhdGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKQEAgLTUwMzcsMTYg
KzUwMzgsOTkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZVRhaWxDYWxsKCkKICAgICB7
CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ3Mg
PSBub2RlLT5udW1DaGlsZHJlbigpIC0gMTsKKworICAgICAgICBMVmFsdWUganNDYWxsZWUgPSBs
b3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAKICNpZiBG
VExfVVNFU19CMwotICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpIHx8ICF2
ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICAvLyBXZSB3YW50IEIzIHRvIGdpdmUgdXMgYWxsIG9mIHRoZSBhcmd1bWVudHMgdXNpbmcgd2hh
dGV2ZXIgbWVjaGFuaXNtIGl0IHRoaW5rcyBpcworICAgICAgICAvLyBjb252ZW5pZW50LiBUaGUg
Z2VuZXJhdG9yIHRoZW4gc2h1ZmZsZXMgdGhvc2UgYXJndW1lbnRzIGludG8gb3VyIG93biBjYWxs
IGZyYW1lLAorICAgICAgICAvLyBkZXN0cm95aW5nIG91ciBmcmFtZSBpbiB0aGUgcHJvY2Vzcy4K
KworICAgICAgICBWZWN0b3I8Q29uc3RyYWluZWRWYWx1ZT4gYXJndW1lbnRzOworCisgICAgICAg
IGFyZ3VtZW50cy5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShqc0NhbGxlZSwgVmFsdWVSZXA6OnJl
ZyhHUFJJbmZvOjpyZWdUMCkpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtQXJnczsgKytpKSB7CisgICAgICAgICAgICAvLyBOb3RlOiB3ZSBjb3VsZCBsZXQgdGhlIHNo
dWZmbGVyIGRvIGJveGluZyBmb3IgdXMsIGJ1dCBpdCdzIG5vdCBzdXBlciBjbGVhciB0aGF0IHRo
aXMKKyAgICAgICAgICAgIC8vIHdvdWxkIGJlIGJldHRlci4gQWxzbywgaWYgd2Ugd2FudGVkIHRv
IGRvIHRoYXQsIHRoZW4gd2UnZCBoYXZlIHRvIHRlYWNoIHRoZSBzaHVmZmxlcgorICAgICAgICAg
ICAgLy8gdGhhdCAzMi1iaXQgdmFsdWVzIGNvdWxkIGxhbmQgYXQgNC1ieXRlIGFsaWdubWVudCBi
dXQgbm90IDgtYnl0ZSBhbGlnbm1lbnQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIENvbnN0
cmFpbmVkVmFsdWUgY29uc3RyYWluZWRWYWx1ZSgKKyAgICAgICAgICAgICAgICBsb3dKU1ZhbHVl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwKKyAgICAgICAgICAgICAgICBWYWx1
ZVJlcDo6V2FybUFueSk7CisgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNvbnN0cmFpbmVk
VmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kVmVj
dG9yKGFyZ3VtZW50cyk7CisKKyAgICAgICAgLy8gUHJldmVudCBhbnkgb2YgdGhlIGFyZ3VtZW50
cyBmcm9tIHVzaW5nIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLgorICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAg
ICAgICAvLyBXZSBkb24ndCBoYXZlIHRvIHRlbGwgdGhlIHBhdGNocG9pbnQgdGhhdCB3ZSB3aWxs
IGNsb2JiZXIgcmVnaXN0ZXJzLCBzaW5jZSB3ZSB3b24ndCByZXR1cm4KKyAgICAgICAgLy8gYW55
d2F5LgorCisgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlw
dGlvbk9mQ2FsbFNpdGUoKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhlcmUgbWF5IGJlIHNvbWUgZXhjZXB0aW9uIHRoaW5ncyB0aGF0IG5lZWQgdG8gaGFwcGVuIGhl
cmUuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MTY4NgorCisgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1
ZmZsZURhdGE7CisgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNv
dmVyeTo6aW5HUFIoR1BSSW5mbzo6cmVnVDAsIERhdGFGb3JtYXRKUyk7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQorICAgICAgICAgICAg
ICAgICAgICBzaHVmZmxlRGF0YS5hcmdzLmFwcGVuZChwYXJhbXNbMSArIGldLnJlY292ZXJ5Rm9y
SlNWYWx1ZSgpKTsKKworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2
ZVJlZ2lzdGVycyhqaXQuY29kZUJsb2NrKCkpOworCisgICAgICAgICAgICAgICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwor
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVj
azsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc2xvd1BhdGggPSBqaXQuYnJh
bmNoUHRyV2l0aFBhdGNoKAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBHUFJJbmZvOjpyZWdUMCwgdGFyZ2V0VG9DaGVjaywKKyAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApKTsKKworICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEZyYW1lU2h1ZmZsZXIoaml0LCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxDYWxs
KCk7CisKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdENhbGwgPSBqaXQu
bmVhclRhaWxDYWxsKCk7CisKKyAgICAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwor
CisgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2xvd1BhdGhTaHVmZmxlcihqaXQs
IHNodWZmbGVEYXRhKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnNldENhbGxl
ZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAgICAg
ICAgc2xvd1BhdGhTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKKworICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBH
UFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dD
YWxsID0gaml0Lm5lYXJDYWxsKCk7CisKKyAgICAgICAgICAgICAgICBqaXQuYWJvcnRXaXRoUmVh
c29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CisKKyAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OlRhaWxDYWxsLCBjb2RlT3JpZ2luLCBHUFJJ
bmZvOjpyZWdUMCk7CisKKyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAg
ICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5r
R2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxp
bmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25z
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJD
YWxsKHNsb3dDYWxsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YodGFyZ2V0VG9DaGVjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoZmFzdENhbGwpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKICNlbHNlCi0gICAgICAgIGludCBudW1BcmdzID0gbV9u
b2RlLT5udW1DaGlsZHJlbigpIC0gMTsKICAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgZXhp
dEFyZ3VtZW50czsKICAgICAgICAgZXhpdEFyZ3VtZW50cy5yZXNlcnZlQ2FwYWNpdHkobnVtQXJn
cyArIDYpOwogCiAgICAgICAgIHVuc2lnbmVkIHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7
Ci0gICAgICAgIGV4aXRBcmd1bWVudHMuYXBwZW5kKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDApKSk7CisgICAgICAgIGV4aXRBcmd1bWVudHMuYXBwZW5kKGxvd0pTVmFs
dWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkpOwogICAgICAgICBleGl0QXJndW1lbnRz
LmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIpOwogCiAgICAgICAgIFZlY3RvcjxFeGl0VmFsdWU+IGNh
bGxBcmd1bWVudHMobnVtQXJncyk7CkBAIC01MDU0LDEyICs1MTM4LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgbmVlZHNUYWdUeXBlTnVtYmVyIHsgZmFsc2UgfTsKICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpIHsKICAgICAgICAgICAgIGNhbGxBcmd1bWVudHNb
aV0gPQotICAgICAgICAgICAgICAgIGV4aXRWYWx1ZUZvclRhaWxDYWxsKGV4aXRBcmd1bWVudHMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkubm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICBleGl0VmFsdWVGb3JUYWlsQ2FsbChleGl0QXJndW1lbnRzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKS5ub2RlKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHNb
aV0uZGF0YUZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikKICAgICAgICAgICAgICAgICBuZWVk
c1RhZ1R5cGVOdW1iZXIgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgSlNUYWlsQ2FsbCB0
YWlsQ2FsbChzdGFja21hcElELCBtX25vZGUsIFdURjo6bW92ZShjYWxsQXJndW1lbnRzKSk7Cisg
ICAgICAgIEpTVGFpbENhbGwgdGFpbENhbGwoc3RhY2ttYXBJRCwgbm9kZSwgV1RGOjptb3ZlKGNh
bGxBcmd1bWVudHMpKTsKIAogICAgICAgICBleGl0QXJndW1lbnRzLmluc2VydCgwLCBtX291dC5j
b25zdEludDMyKG5lZWRzVGFnVHlwZU51bWJlciA/IDIgOiAxKSk7CiAgICAgICAgIGV4aXRBcmd1
bWVudHMuaW5zZXJ0KDAsIGNvbnN0TnVsbChtX291dC5yZWY4KSk7CkBAIC01MDY4LDEwICs1MTUy
LDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0
LnZvaWRUeXBlLCBtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLCBleGl0QXJndW1lbnRz
KTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55
UmVnQ2FsbENvbnYpOwotICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogCiAgICAgICAgIG1f
ZnRsU3RhdGUuanNUYWlsQ2FsbHMuYXBwZW5kKHRhaWxDYWxsKTsKICNlbmRpZgorICAgICAgICAK
KyAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Z0bC10YWlsLWNhbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtdGFpbC1jYWxsLmpzCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtdGFpbC1jYWxsLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZm9v
KGEsIGIsIGMpIHsKKyAgICByZXR1cm4gYSArIGIgKiAyICsgYyAqIDM7Cit9CisKK25vSW5saW5l
KGZvbyk7CisKK2Z1bmN0aW9uIGJhcihhLCBiLCBjKSB7CisgICAgcmV0dXJuIGZvbyhhLmYsIGIu
ZywgYy5oKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGJhcih7ZjogNH0sIHtnOiA1fSwge2g6IDZ9KTsK
KyAgICBpZiAocmVzdWx0ICE9IDQgKyA1ICogMiArIDYgKiAzKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisK
</data>
<flag name="review"
          id="292800"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267793</attachid>
            <date>2015-12-22 11:38:18 -0800</date>
            <delta_ts>2015-12-22 11:38:18 -0800</delta_ts>
            <desc>pathc for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11136</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE1LTEyLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIEIzIHNob3VsZCBkbyB0YWlsIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVs
IFNhYm9mZi4KKworICAgICAgICBPTUcgdGhpcyB3YXMgc28gZWFzeS4KKworICAgICAgICBUaGUg
b25seSBzaGFkeSBwYXJ0IGlzIHRoYXQgSSBicm9rZSBhIGxheWVyaW5nIHJ1bGUgdGhhdCB3ZSBo
YWQgc28gZmFyIGJlZW4gZm9sbG93aW5nOiBCMyB3YXMKKyAgICAgICAgc2l0dGluZyBiZWxvdyB0
aGUgSlNDIHJ1bnRpbWUsIGFuZCBkaWQgbm90IHVzZSBKUy1zcGVjaWZpYyB0eXBlcy4gTm8gbW9y
ZSwgc2luY2UgQjM6OlZhbHVlUmVwCisgICAgICAgIGNhbiBub3cgdHVybiBpdHNlbGYgaW50byBh
IFZhbHVlUmVjb3ZlcnkgZm9yIGEgSlNWYWx1ZS4gVGhpcyBzbWFsbCBmZWF0dXJlIG1ha2VzIGEg
aHVnZQorICAgICAgICBkaWZmZXJlbmNlIGZvciB0aGUgcmVhZGFiaWxpdHkgb2YgdGFpbCBjYWxs
IGNvZGU6IGl0IG1ha2VzIGl0IHBsYWluIHRoYXQgdGhlIGNhbGwgZnJhbWUKKyAgICAgICAgc2h1
ZmZsZXIgaXMgYmFzaWNhbGx5IGp1c3QgZGlyZWN0bHkgY29uc3VtaW5nIHRoZSBzdGFja21hcCBn
ZW5lcmF0aW9uIHBhcmFtcywgYW5kIGluc29mYXIgYXMKKyAgICAgICAgdGhlcmUgaXMgYW55IGRh
dGEgdHJhbnNmb3JtYXRpb24sIGl0J3MganVzdCBiZWNhdXNlIGl0IHVzZXMgZGlmZmVyZW50IGNs
YXNzZXMgdG8gc2F5IHRoZSBzYW1lCisgICAgICAgIHRoaW5nLgorCisgICAgICAgIEkgdGhpbmsg
d2Ugc2hvdWxkIGF2b2lkIGFkZGluZyB0b28gbWFueSBKUy1zcGVjaWZpYyB0aGluZ3MgdG8gQjMu
IEJ1dCwgc28gbG9uZyBhcyBpdCdzIHN0aWxsCisgICAgICAgIHBvc3NpYmxlIHRvIHVzZSBCMyB0
byBjb21waWxlIHRoaW5ncyB0aGF0IGFyZW4ndCBKUywgSSB0aGluayB3ZSdsbCBiZSBmaW5lLgor
CisgICAgICAgICogYjMvQjNWYWx1ZVJlcC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJl
cDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6ZW1pdFJlc3RvcmUpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWVSZXA6OnJlY292ZXJ5Rm9ySlNWYWx1ZSk6CisgICAgICAgICog
YjMvQjNWYWx1ZVJlcC5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVRhaWxDYWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2FsbE9yQ29u
c3RydWN0VmFyYXJncyk6CisgICAgICAgICogdGVzdC9zdHJlc3MvZnRsLXRhaWwtY2FsbC5qczog
QWRkZWQuCisKIDIwMTUtMTItMjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNuaXBwZWZ5IG9wX25lZ2F0ZSBmb3IgdGhlIGJhc2VsaW5lIEpJVC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDE5NDM2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJs
eUhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCkBAIC01Nyw3ICs1OCw3IEBAIHZvaWQgVmFsdWVSZXA6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY28KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFZhbHVlUmVwOjplbWl0UmVzdG9yZShBc3NlbWJseUhlbHBlcnMmIGppdCwgUmVnIHJl
ZykKK3ZvaWQgVmFsdWVSZXA6OmVtaXRSZXN0b3JlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWcg
cmVnKSBjb25zdAogewogICAgIGlmIChyZWcuaXNHUFIoKSkgewogICAgICAgICBzd2l0Y2ggKGtp
bmQoKSkgewpAQCAtMTAwLDYgKzEwMSwyNCBAQCB2b2lkIFZhbHVlUmVwOjplbWl0UmVzdG9yZShB
c3NlbWJseUhlbHBlCiAgICAgfQogfQogCitWYWx1ZVJlY292ZXJ5IFZhbHVlUmVwOjpyZWNvdmVy
eUZvckpTVmFsdWUoKSBjb25zdAoreworICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgY2FzZSBS
ZWdpc3RlcjoKKyAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmluR1BSKGdwcigpLCBEYXRh
Rm9ybWF0SlMpOworICAgIGNhc2UgU3RhY2s6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEob2Zm
c2V0RnJvbUZQKCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgICAgIHJldHVybiBW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCisgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIob2Zmc2V0RnJvbUZQKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKKyAgICAgICAg
ICAgIERhdGFGb3JtYXRKUyk7CisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIFZh
bHVlUmVjb3Zlcnk6OmNvbnN0YW50KEpTVmFsdWU6OmRlY29kZSh2YWx1ZSgpKSk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3Bh
Y2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkocmV2aXNp
b24gMTk0MzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNv
dmVyeS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTIyMiw3ICsyMjMsMTMgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBoYXMgYSBzaW1wbGUg
Y29udHJhY3Q6IGl0IGVtaXRzIGNvZGUgdG8gcmVzdG9yZSB0aGUgdmFsdWUgaW50byB0aGUgZ2l2
ZW4gcmVnaXN0ZXIuIFRoaXMKICAgICAvLyB3aWxsIHdvcmsgZXZlbiBpZiBpdCByZXF1aXJlcyBt
b3ZpbmcgYmV0d2VlbiBiaXRzIGEgR1BSIGFuZCBhIEZQUi4KLSAgICB2b2lkIGVtaXRSZXN0b3Jl
KEFzc2VtYmx5SGVscGVycyYsIFJlZyk7CisgICAgdm9pZCBlbWl0UmVzdG9yZShBc3NlbWJseUhl
bHBlcnMmLCBSZWcpIGNvbnN0OworCisgICAgLy8gQ29tcHV0ZXMgdGhlIFZhbHVlUmVjb3Zlcnkg
YXNzdW1pbmcgdGhhdCB0aGUgVmFsdWUqIHdhcyBmb3IgYSBKU1ZhbHVlIChpLmUuIEludDY0KS4K
KyAgICAvLyBOT1RFOiBXZSBzaG91bGQgYXZvaWQgcHV0dGluZyBKU1ZhbHVlLXJlbGF0ZWQgbWV0
aG9kcyBpbiBCMywgYnV0IHRoaXMgd2FzIGhhcmQgdG8gYXZvaWQKKyAgICAvLyBiZWNhdXNlIHNv
bWUgcGFydHMgb2YgSlNDIHVzZSBWYWx1ZVJlY292ZXJ5IGxpa2UgYSBnZW5lcmFsICJ3aGVyZSBt
eSBiaXRzIGF0IiBvYmplY3QsIGFsbW9zdAorICAgIC8vIGV4YWN0bHkgbGlrZSBWYWx1ZVJlcC4K
KyAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5Rm9ySlNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIEtpbmQgbV9raW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5NDM2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyR2VuZXJhdGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKQEAgLTUwMzcsMjkg
KzUwMzgsMTEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVUYWlsQ2FsbCgpCiAgICAg
eworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICB1bnNpZ25lZCBudW1Bcmdz
ID0gbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CisKKyAgICAgICAgTFZhbHVlIGpzQ2FsbGVlID0g
bG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgCiAjaWYg
RlRMX1VTRVNfQjMKLSAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSB8fCAh
dmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgLy8gV2Ugd2FudCBCMyB0byBnaXZlIHVzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHVzaW5nIHdo
YXRldmVyIG1lY2hhbmlzbSBpdCB0aGlua3MgaXMKKyAgICAgICAgLy8gY29udmVuaWVudC4gVGhl
IGdlbmVyYXRvciB0aGVuIHNodWZmbGVzIHRob3NlIGFyZ3VtZW50cyBpbnRvIG91ciBvd24gY2Fs
bCBmcmFtZSwKKyAgICAgICAgLy8gZGVzdHJveWluZyBvdXIgZnJhbWUgaW4gdGhlIHByb2Nlc3Mu
CisKKyAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVmFsdWU+IGFyZ3VtZW50czsKKworICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoanNDYWxsZWUsIFZhbHVlUmVwOjpy
ZWcoR1BSSW5mbzo6cmVnVDApKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bUFyZ3M7ICsraSkgeworICAgICAgICAgICAgLy8gTm90ZTogd2UgY291bGQgbGV0IHRoZSBz
aHVmZmxlciBkbyBib3hpbmcgZm9yIHVzLCBidXQgaXQncyBub3Qgc3VwZXIgY2xlYXIgdGhhdCB0
aGlzCisgICAgICAgICAgICAvLyB3b3VsZCBiZSBiZXR0ZXIuIEFsc28sIGlmIHdlIHdhbnRlZCB0
byBkbyB0aGF0LCB0aGVuIHdlJ2QgaGF2ZSB0byB0ZWFjaCB0aGUgc2h1ZmZsZXIKKyAgICAgICAg
ICAgIC8vIHRoYXQgMzItYml0IHZhbHVlcyBjb3VsZCBsYW5kIGF0IDQtYnl0ZSBhbGlnbm1lbnQg
YnV0IG5vdCA4LWJ5dGUgYWxpZ25tZW50LgorICAgICAgICAgICAgCisgICAgICAgICAgICBDb25z
dHJhaW5lZFZhbHVlIGNvbnN0cmFpbmVkVmFsdWUoCisgICAgICAgICAgICAgICAgbG93SlNWYWx1
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksCisgICAgICAgICAgICAgICAgVmFs
dWVSZXA6Oldhcm1BbnkpOworICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChjb25zdHJhaW5l
ZFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZl
Y3Rvcihhcmd1bWVudHMpOworCisgICAgICAgIC8vIFByZXZlbnQgYW55IG9mIHRoZSBhcmd1bWVu
dHMgZnJvbSB1c2luZyB0aGUgc2NyYXRjaCByZWdpc3Rlci4KKyAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckVhcmx5KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisKKyAg
ICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byB0ZWxsIHRoZSBwYXRjaHBvaW50IHRoYXQgd2Ugd2ls
bCBjbG9iYmVyIHJlZ2lzdGVycywgc2luY2Ugd2Ugd29uJ3QgcmV0dXJuCisgICAgICAgIC8vIGFu
eXdheS4KKworICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3Jp
cHRpb25PZkNhbGxTaXRlKCk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAg
ICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoZXJlIG1heSBiZSBzb21lIGV4Y2VwdGlvbiB0aGluZ3MgdGhhdCBuZWVkIHRvIGhhcHBlbiBo
ZXJlLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE2ODYKKworICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNo
dWZmbGVEYXRhOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVj
b3Zlcnk6OmluR1BSKEdQUkluZm86OnJlZ1QwLCBEYXRhRm9ybWF0SlMpOworCisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKKyAgICAgICAgICAg
ICAgICAgICAgc2h1ZmZsZURhdGEuYXJncy5hcHBlbmQocGFyYW1zWzEgKyBpXS5yZWNvdmVyeUZv
ckpTVmFsdWUoKSk7CisKKyAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNh
dmVSZWdpc3RlcnMoaml0LmNvZGVCbG9jaygpKTsKKworICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsK
KworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hl
Y2s7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoID0gaml0LmJy
YW5jaFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgR1BSSW5mbzo6cmVnVDAsIHRhcmdldFRvQ2hlY2ssCisgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigwKSk7CisKKyAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOworICAgICAgICAgICAg
ICAgIENhbGxGcmFtZVNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2Fs
bCgpOworCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGZhc3RDYWxsID0gaml0
Lm5lYXJUYWlsQ2FsbCgpOworCisgICAgICAgICAgICAgICAgc2xvd1BhdGgubGluaygmaml0KTsK
KworICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0
LCBzaHVmZmxlRGF0YSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5zZXRDYWxs
ZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7CisKKyAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
Q2FsbCA9IGppdC5uZWFyQ2FsbCgpOworCisgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJl
YXNvbihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOworCisgICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgY29kZU9yaWdpbiwgR1BS
SW5mbzo6cmVnVDApOworCisgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAorICAgICAg
ICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci52bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVu
a0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9u
cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChzbG93Q2FsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHRhcmdldFRvQ2hlY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CiAjZWxzZQotICAgICAgICBpbnQgbnVtQXJncyA9IG1f
bm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAgICAgICAgIFN0YWNrbWFwQXJndW1lbnRMaXN0IGV4
aXRBcmd1bWVudHM7CiAgICAgICAgIGV4aXRBcmd1bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG51bUFy
Z3MgKyA2KTsKIAogICAgICAgICB1bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysr
OwotICAgICAgICBleGl0QXJndW1lbnRzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAwKSkpOworICAgICAgICBleGl0QXJndW1lbnRzLmFwcGVuZChqc0NhbGxl
ZSk7CiAgICAgICAgIGV4aXRBcmd1bWVudHMuYXBwZW5kKG1fdGFnVHlwZU51bWJlcik7CiAKICAg
ICAgICAgVmVjdG9yPEV4aXRWYWx1ZT4gY2FsbEFyZ3VtZW50cyhudW1BcmdzKTsKIAogICAgICAg
ICBib29sIG5lZWRzVGFnVHlwZU51bWJlciB7IGZhbHNlIH07Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtQXJnczsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1BcmdzOyArK2kpIHsKICAgICAgICAgICAgIGNhbGxBcmd1bWVudHNbaV0gPQotICAgICAg
ICAgICAgICAgIGV4aXRWYWx1ZUZvclRhaWxDYWxsKGV4aXRBcmd1bWVudHMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAxICsgaSkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICBleGl0VmFs
dWVGb3JUYWlsQ2FsbChleGl0QXJndW1lbnRzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEg
KyBpKS5ub2RlKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHNbaV0uZGF0YUZvcm1h
dCgpID09IERhdGFGb3JtYXRJbnQzMikKICAgICAgICAgICAgICAgICBuZWVkc1RhZ1R5cGVOdW1i
ZXIgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgSlNUYWlsQ2FsbCB0YWlsQ2FsbChzdGFj
a21hcElELCBtX25vZGUsIFdURjo6bW92ZShjYWxsQXJndW1lbnRzKSk7CisgICAgICAgIEpTVGFp
bENhbGwgdGFpbENhbGwoc3RhY2ttYXBJRCwgbm9kZSwgV1RGOjptb3ZlKGNhbGxBcmd1bWVudHMp
KTsKIAogICAgICAgICBleGl0QXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMyKG5l
ZWRzVGFnVHlwZU51bWJlciA/IDIgOiAxKSk7CiAgICAgICAgIGV4aXRBcmd1bWVudHMuaW5zZXJ0
KDAsIGNvbnN0TnVsbChtX291dC5yZWY4KSk7CkBAIC01MDY4LDEwICs1MTUyLDExIEBAIHByaXZh
dGU6CiAKICAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBlLCBt
X291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLCBleGl0QXJndW1lbnRzKTsKICAgICAgICAg
c2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYp
OwotICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogCiAgICAgICAgIG1fZnRsU3RhdGUuanNU
YWlsQ2FsbHMuYXBwZW5kKHRhaWxDYWxsKTsKICNlbmRpZgorICAgICAgICAKKyAgICAgICAgbV9v
dXQudW5yZWFjaGFibGUoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ2FsbE9yQ29u
c3RydWN0VmFyYXJncygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Z0bC10YWlsLWNhbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9mdGwtdGFpbC1jYWxsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtdGFpbC1jYWxsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjAgQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZm9vKGEsIGIsIGMpIHsK
KyAgICByZXR1cm4gYSArIGIgKiAyICsgYyAqIDM7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2Z1
bmN0aW9uIGJhcihhLCBiLCBjKSB7CisgICAgcmV0dXJuIGZvbyhhLmYsIGIuZywgYy5oKTsKK30K
Kworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgdmFyIHJlc3VsdCA9IGJhcih7ZjogNH0sIHtnOiA1fSwge2g6IDZ9KTsKKyAgICBpZiAocmVz
dWx0ICE9IDQgKyA1ICogMiArIDYgKiAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>