<?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>175754</bug_id>
          
          <creation_ts>2017-08-19 18:28:39 -0700</creation_ts>
          <short_desc>We should have more tests of tail calls</short_desc>
          <delta_ts>2017-10-18 06:43:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178451</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lforschler</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340454</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-19 18:28:39 -0700</bug_when>
    <thetext>TailBench9000!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340455</commentid>
    <comment_count>1</comment_count>
      <attachid>318594</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-19 18:30:16 -0700</bug_when>
    <thetext>Created attachment 318594
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340459</commentid>
    <comment_count>2</comment_count>
      <attachid>318595</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-19 20:42:40 -0700</bug_when>
    <thetext>Created attachment 318595
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346017</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-06 11:17:12 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/221685/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353758</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 13:00:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694457&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318594</attachid>
            <date>2017-08-19 18:30:16 -0700</date>
            <delta_ts>2017-08-19 20:42:40 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>6347</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjA5NTQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTE5ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUg
bW9yZSB0ZXN0cyBvZiB0YWlsIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzU3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50cm9kdWNlcyBhIG5ldyB0ZXN0IHN1aXRl
IGNhbGxlZCBUYWlsQmVuY2g5MDAwLCB3aGljaCB3aWxsIGhhdmUgYmVuY2htYXJrcyB3cml0dGVu
IGluCisgICAgICAgIEphdmFTY3JpcHQgdGhhdCBhdm9pZCBhbGwgbG9vcGluZyBleGNlcHQgYnkg
dGFpbCBjYWxsLiBBcyBhIHdhcm11cCwgSSB3cm90ZSBhIG1lcmdlc29ydAorICAgICAgICBiZW5j
aG1hcmsuCisKKyAgICAgICAgKiBUYWlsQmVuY2g5MDAwOiBBZGRlZC4KKyAgICAgICAgKiBUYWls
QmVuY2g5MDAwL21lcmdlLXNvcnQtcnVuLmpzOiBBZGRlZC4KKyAgICAgICAgKiBUYWlsQmVuY2g5
MDAwL21lcmdlLXNvcnQuanM6IEFkZGVkLgorICAgICAgICAoVEVTVF9tZXJnZVNvcnQuY3JlYXRl
Uk5HKToKKyAgICAgICAgKFRFU1RfbWVyZ2VTb3J0Lik6CisgICAgICAgIChURVNUX21lcmdlU29y
dC5tZXJnZSk6CisgICAgICAgIChURVNUX21lcmdlU29ydC5tZXJnZVNvcnRlZCk6CisgICAgICAg
IChURVNUX21lcmdlU29ydC5jaGVja1NvcnRlZC5jaGVjayk6CisgICAgICAgIChURVNUX21lcmdl
U29ydC5jaGVja1NvcnRlZCk6CisgICAgICAgIChURVNUX21lcmdlU29ydC5hZGQpOgorICAgICAg
ICAoVEVTVF9tZXJnZVNvcnQuYnVpbGQpOgorICAgICAgICAoVEVTVF9tZXJnZVNvcnQuY29tcGFy
ZSk6CisgICAgICAgIChURVNUX21lcmdlU29ydC5jaGVja1NwZWN0cnVtKToKKyAgICAgICAgKFRF
U1RfbWVyZ2VTb3J0LmJ1aWxkQXJyYXkpOgorICAgICAgICAoVEVTVF9tZXJnZVNvcnQpOgorCiAy
MDE3LTA4LTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjIxOTY0MCk6IFNwZWVkb21ldGVyIG5vIGxvbmdlciBydW5zIG9uIFNhZmFyaSA3
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1RhaWxCZW5jaDkwMDAvbWVyZ2Utc29ydC1ydW4uanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQt
cnVuLmpzCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvVGFpbEJlbmNoOTAwMC9t
ZXJnZS1zb3J0LXJ1bi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2xvYWQoIm1l
cmdlLXNvcnQuanMiKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisgICAgVEVT
VF9tZXJnZVNvcnQoKTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvVGFpbEJlbmNoOTAwMC9tZXJn
ZS1zb3J0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvVGFpbEJlbmNoOTAwMC9t
ZXJnZS1zb3J0LmpzCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvVGFpbEJlbmNo
OTAwMC9tZXJnZS1zb3J0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU0IEBACisidXNl
IHN0cmljdCI7CisKK2Z1bmN0aW9uIFRFU1RfbWVyZ2VTb3J0KCkKK3sKKyAgICBmdW5jdGlvbiBj
cmVhdGVSTkcoc2VlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIC8vIFJvYmVydCBKZW5raW5zJyAzMiBiaXQgaW50ZWdlciBoYXNoIGZ1bmN0aW9uLgor
ICAgICAgICAgICAgc2VlZCA9ICgoc2VlZCArIDB4N2VkNTVkMTYpICsgKHNlZWQgPDwgMTIpKSAg
JiAweGZmZmZmZmZmOworICAgICAgICAgICAgc2VlZCA9ICgoc2VlZCBeIDB4Yzc2MWMyM2MpIF4g
KHNlZWQgPj4+IDE5KSkgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgc2VlZCA9ICgoc2VlZCAr
IDB4MTY1NjY3YjEpICsgKHNlZWQgPDwgNSkpICAgJiAweGZmZmZmZmZmOworICAgICAgICAgICAg
c2VlZCA9ICgoc2VlZCArIDB4ZDNhMjY0NmMpIF4gKHNlZWQgPDwgOSkpICAgJiAweGZmZmZmZmZm
OworICAgICAgICAgICAgc2VlZCA9ICgoc2VlZCArIDB4ZmQ3MDQ2YzUpICsgKHNlZWQgPDwgMykp
ICAgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgc2VlZCA9ICgoc2VlZCBeIDB4YjU1YTRmMDkp
IF4gKHNlZWQgPj4+IDE2KSkgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgcmV0dXJuIChzZWVk
ICYgMHhmZmZmZmZmKSAvIDB4MTAwMDAwMDA7CisgICAgICAgIH07CisgICAgfQorICAgIAorICAg
IGxldCByYW5kb20gPSBjcmVhdGVSTkcoMHg3YTExYmVjOCk7CisKKyAgICBmdW5jdGlvbiBtZXJn
ZVNvcnRlZChhcnJheSwgY29tcGFyZSkKKyAgICB7CisgICAgICAgIGlmIChhcnJheS5sZW5ndGgg
PD0gMSkKKyAgICAgICAgICAgIHJldHVybiBhcnJheTsKKyAgICAgICAgCisgICAgICAgIGxldCBt
aWRJbmRleCA9IE1hdGguZmxvb3IoYXJyYXkubGVuZ3RoIC8gMik7CisgICAgICAgIGxldCBsZWZ0
ID0gbWVyZ2VTb3J0ZWQoYXJyYXkuc2xpY2UoMCwgbWlkSW5kZXgpLCBjb21wYXJlKTsKKyAgICAg
ICAgbGV0IHJpZ2h0ID0gbWVyZ2VTb3J0ZWQoYXJyYXkuc2xpY2UobWlkSW5kZXgpLCBjb21wYXJl
KTsKKyAgICAgICAgCisgICAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgCisgICAgICAg
IGZ1bmN0aW9uIGZpbmlzaChzb3VyY2UsIGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPj0gc291cmNlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXN1bHQucHVzaChzb3VyY2VbaW5kZXhdKTsKKyAgICAgICAgICAgIHJldHVybiBm
aW5pc2goc291cmNlLCBpbmRleCArIDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBm
dW5jdGlvbiBtZXJnZShsZWZ0SW5kZXgsIHJpZ2h0SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChsZWZ0SW5kZXggPj0gbGVmdC5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZpbmlzaChyaWdodCwgcmlnaHRJbmRleCk7CisgICAgICAgICAgICBpZiAocmlnaHRJbmRleCA+
PSByaWdodC5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmlzaChsZWZ0LCBsZWZ0
SW5kZXgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBsZXQgbGVmdFZhbHVlID0gbGVmdFts
ZWZ0SW5kZXhdOworICAgICAgICAgICAgbGV0IHJpZ2h0VmFsdWUgPSByaWdodFtyaWdodEluZGV4
XTsKKyAgICAgICAgICAgIGxldCBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZShsZWZ0VmFsdWUs
IHJpZ2h0VmFsdWUpOworICAgICAgICAgICAgaWYgKGNvbXBhcmlzb25SZXN1bHQgPCAwKSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobGVmdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVyZ2UobGVmdEluZGV4ICsgMSwgcmlnaHRJbmRleCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXN1bHQucHVzaChyaWdodFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBt
ZXJnZShsZWZ0SW5kZXgsIHJpZ2h0SW5kZXggKyAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgbWVyZ2UoMCwgMCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBmdW5jdGlvbiBjaGVja1NvcnRlZChhcnJheSkKKyAgICB7CisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrKGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXgg
Pj0gYXJyYXkubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChhcnJheVtpbmRleF0gPiBhcnJheVtpbmRleCArIDFdKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXJyYXkgbm90IHNvcnRlZCBhdCBpbmRleCAi
ICsgaW5kZXggKyAiOiAiICsgYXJyYXkpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1
cm4gY2hlY2soaW5kZXggKyAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2hlY2so
MCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNoZWNrU3BlY3RydW0oYSwgYikKKyAgICB7
CisgICAgICAgIHZhciBhTWFwID0gbmV3IE1hcCgpOworICAgICAgICB2YXIgYk1hcCA9IG5ldyBN
YXAoKTsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGFkZChtYXAsIHZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICBsZXQgZXhpc3RpbmcgPSBtYXAuZ2V0KHZhbHVlKTsKKyAgICAgICAg
ICAgIGlmIChleGlzdGluZyA9PSBudWxsKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nID0gMDsK
KyAgICAgICAgICAgIG1hcC5zZXQodmFsdWUsIGV4aXN0aW5nICsgMSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGJ1aWxkKG1hcCwgYXJyYXksIGluZGV4KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gYXJyYXkubGVuZ3RoKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWRkKG1hcCwgYXJyYXlbaW5k
ZXhdKTsKKyAgICAgICAgICAgIHJldHVybiBidWlsZChtYXAsIGFycmF5LCBpbmRleCArIDEpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBidWlsZChhTWFwLCBhLCAwKTsKKyAgICAgICAg
YnVpbGQoYk1hcCwgYiwgMCk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjb21wYXJlKGtl
eXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBlbnRyeSA9IGtleXMubmV4dCgpOworICAg
ICAgICAgICAgaWYgKGVudHJ5LmRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgaWYgKGFNYXAuZ2V0KGVudHJ5LnZhbHVlKSAhPSBiTWFwLmdldChlbnRyeS52YWx1ZSkp
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhcnJheXMgZG9uJ3QgaGF2ZSB0aGUg
c2FtZSBudW1iZXIgb2Y6ICIgKyBlbnRyeS52YWx1ZSArICIgKGEgPSAiICsgYSArICIsIGIgPSAi
ICsgYiArICIpIik7CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZShrZXlzKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgY29tcGFyZShhTWFwLmtleXMoKSk7CisgICAgfQorICAgIAor
ICAgIGZ1bmN0aW9uIGJ1aWxkQXJyYXkobGVuZ3RoLCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGxl
dCBhcnJheSA9IFtdOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gYnVpbGQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoYXJyYXkubGVuZ3RoID49IGxlbmd0aCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBhcnJheS5wdXNoKHZhbHVlKGFycmF5Lmxlbmd0aCkp
OworICAgICAgICAgICAgcmV0dXJuIGJ1aWxkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGJ1aWxkKCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorICAg
IAorICAgIGxldCBhcnJheXMgPSBbCisgICAgICAgIGJ1aWxkQXJyYXkoMTAsIHggPT4geCksCisg
ICAgICAgIGJ1aWxkQXJyYXkoMTAsIHggPT4gLXgpLAorICAgICAgICBidWlsZEFycmF5KDEwMDAs
IHggPT4geCksCisgICAgICAgIGJ1aWxkQXJyYXkoMTAwMDAsIHggPT4gLXgpLAorICAgICAgICBi
dWlsZEFycmF5KDEwMDAwLCB4ID0+IHJhbmRvbSgpKQorICAgIF07CisgICAgCisgICAgZnVuY3Rp
b24gdGVzdChpbmRleCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBhcnJheXMubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgbGV0IGFycmF5ID0gYXJy
YXlzW2luZGV4XTsKKyAgICAgICAgbGV0IHNvcnRlZCA9IG1lcmdlU29ydGVkKGFycmF5LCAoYSwg
YikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApOworICAgICAgICBjaGVja1NvcnRlZChz
b3J0ZWQpOworICAgICAgICBjaGVja1NwZWN0cnVtKGFycmF5LCBzb3J0ZWQpOworICAgIH0KKyAg
ICAKKyAgICB0ZXN0KDApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318595</attachid>
            <date>2017-08-19 20:42:40 -0700</date>
            <delta_ts>2017-08-19 21:49:54 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13986</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjA5NTUpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE3LTA4LTE5ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUg
bW9yZSB0ZXN0cyBvZiB0YWlsIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzU3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50cm9kdWNlcyBhIG5ldyB0ZXN0IHN1aXRl
IGNhbGxlZCBUYWlsQmVuY2g5MDAwLCB3aGljaCB3aWxsIGhhdmUgYmVuY2htYXJrcyB3cml0dGVu
IGluCisgICAgICAgIEphdmFTY3JpcHQgdGhhdCBhdm9pZCBhbGwgbG9vcGluZyBleGNlcHQgYnkg
dGFpbCBjYWxsLiBBcyBhIHdhcm11cCwgSSB3cm90ZSBhIG1lcmdlc29ydAorICAgICAgICBiZW5j
aG1hcmsgYW5kIEkgcHJvdGVkIG4tYm9keSB0byB1c2UgdGFpbCBjYWxscyBpbnN0ZWFkIG9mIGZv
ciBsb29wcy4KKworICAgICAgICAqIFRhaWxCZW5jaDkwMDA6IEFkZGVkLgorICAgICAgICAqIFRh
aWxCZW5jaDkwMDAvbWVyZ2Utc29ydC1ydW4uanM6IEFkZGVkLgorICAgICAgICAqIFRhaWxCZW5j
aDkwMDAvbWVyZ2Utc29ydC5qczogQWRkZWQuCisgICAgICAgIChURVNUX21lcmdlU29ydC5jcmVh
dGVSTkcpOgorICAgICAgICAoVEVTVF9tZXJnZVNvcnQuKToKKyAgICAgICAgKFRFU1RfbWVyZ2VT
b3J0Lm1lcmdlKToKKyAgICAgICAgKFRFU1RfbWVyZ2VTb3J0Lm1lcmdlU29ydGVkKToKKyAgICAg
ICAgKFRFU1RfbWVyZ2VTb3J0LmNoZWNrU29ydGVkLmNoZWNrKToKKyAgICAgICAgKFRFU1RfbWVy
Z2VTb3J0LmNoZWNrU29ydGVkKToKKyAgICAgICAgKFRFU1RfbWVyZ2VTb3J0LmFkZCk6CisgICAg
ICAgIChURVNUX21lcmdlU29ydC5idWlsZCk6CisgICAgICAgIChURVNUX21lcmdlU29ydC5jb21w
YXJlKToKKyAgICAgICAgKFRFU1RfbWVyZ2VTb3J0LmNoZWNrU3BlY3RydW0pOgorICAgICAgICAo
VEVTVF9tZXJnZVNvcnQuYnVpbGRBcnJheSk6CisgICAgICAgIChURVNUX21lcmdlU29ydCk6Cisg
ICAgICAgICogVGFpbEJlbmNoOTAwMC9uLWJvZHktcnVuLmpzOiBBZGRlZC4KKyAgICAgICAgKiBU
YWlsQmVuY2g5MDAwL24tYm9keS5qczogQWRkZWQuCisgICAgICAgIChURVNUX25Cb2R5LkJvZHkp
OgorICAgICAgICAoVEVTVF9uQm9keS5Cb2R5LnByb3RvdHlwZS5vZmZzZXRNb21lbnR1bSk6Cisg
ICAgICAgIChURVNUX25Cb2R5Lkp1cGl0ZXIpOgorICAgICAgICAoVEVTVF9uQm9keS5TYXR1cm4p
OgorICAgICAgICAoVEVTVF9uQm9keS5VcmFudXMpOgorICAgICAgICAoVEVTVF9uQm9keS5OZXB0
dW5lKToKKyAgICAgICAgKFRFU1RfbkJvZHkuU3VuKToKKyAgICAgICAgKFRFU1RfbkJvZHkuTkJv
ZHlTeXN0ZW0pOgorICAgICAgICAoVEVTVF9uQm9keS5OQm9keVN5c3RlbS5wcm90b3R5cGUuYWR2
YW5jZSk6CisgICAgICAgIChURVNUX25Cb2R5Lk5Cb2R5U3lzdGVtLnByb3RvdHlwZS5lbmVyZ3kp
OgorICAgICAgICAoVEVTVF9uQm9keSk6CisKIDIwMTctMDgtMTggIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjE5NjQwKTogU3BlZWRvbWV0
ZXIgbm8gbG9uZ2VyIHJ1bnMgb24gU2FmYXJpIDcKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvVGFp
bEJlbmNoOTAwMC9tZXJnZS1zb3J0LXJ1bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL1RhaWxCZW5jaDkwMDAvbWVyZ2Utc29ydC1ydW4uanMJKG5vbmV4aXN0ZW50KQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQtcnVuLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNCBAQAorbG9hZCgibWVyZ2Utc29ydC5qcyIpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDMwMDA7ICsraSkKKyAgICBURVNUX21lcmdlU29ydCgpOwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQuanMJKG5vbmV4aXN0ZW50KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNTQgQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gVEVTVF9t
ZXJnZVNvcnQoKQoreworICAgIGZ1bmN0aW9uIGNyZWF0ZVJORyhzZWVkKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gUm9iZXJ0IEplbmtpbnMnIDMy
IGJpdCBpbnRlZ2VyIGhhc2ggZnVuY3Rpb24uCisgICAgICAgICAgICBzZWVkID0gKChzZWVkICsg
MHg3ZWQ1NWQxNikgKyAoc2VlZCA8PCAxMikpICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBz
ZWVkID0gKChzZWVkIF4gMHhjNzYxYzIzYykgXiAoc2VlZCA+Pj4gMTkpKSAmIDB4ZmZmZmZmZmY7
CisgICAgICAgICAgICBzZWVkID0gKChzZWVkICsgMHgxNjU2NjdiMSkgKyAoc2VlZCA8PCA1KSkg
ICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBzZWVkID0gKChzZWVkICsgMHhkM2EyNjQ2Yykg
XiAoc2VlZCA8PCA5KSkgICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBzZWVkID0gKChzZWVk
ICsgMHhmZDcwNDZjNSkgKyAoc2VlZCA8PCAzKSkgICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAg
ICBzZWVkID0gKChzZWVkIF4gMHhiNTVhNGYwOSkgXiAoc2VlZCA+Pj4gMTYpKSAmIDB4ZmZmZmZm
ZmY7CisgICAgICAgICAgICByZXR1cm4gKHNlZWQgJiAweGZmZmZmZmYpIC8gMHgxMDAwMDAwMDsK
KyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgbGV0IHJhbmRvbSA9IGNyZWF0ZVJORygweDdh
MTFiZWM4KTsKKworICAgIGZ1bmN0aW9uIG1lcmdlU29ydGVkKGFycmF5LCBjb21wYXJlKQorICAg
IHsKKyAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA8PSAxKQorICAgICAgICAgICAgcmV0dXJuIGFy
cmF5OworICAgICAgICAKKyAgICAgICAgbGV0IG1pZEluZGV4ID0gTWF0aC5mbG9vcihhcnJheS5s
ZW5ndGggLyAyKTsKKyAgICAgICAgbGV0IGxlZnQgPSBtZXJnZVNvcnRlZChhcnJheS5zbGljZSgw
LCBtaWRJbmRleCksIGNvbXBhcmUpOworICAgICAgICBsZXQgcmlnaHQgPSBtZXJnZVNvcnRlZChh
cnJheS5zbGljZShtaWRJbmRleCksIGNvbXBhcmUpOworICAgICAgICAKKyAgICAgICAgbGV0IHJl
c3VsdCA9IFtdOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gZmluaXNoKHNvdXJjZSwgaW5k
ZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBzb3VyY2UubGVuZ3RoKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNvdXJjZVtp
bmRleF0pOworICAgICAgICAgICAgcmV0dXJuIGZpbmlzaChzb3VyY2UsIGluZGV4ICsgMSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIG1lcmdlKGxlZnRJbmRleCwgcmln
aHRJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxlZnRJbmRleCA+PSBsZWZ0Lmxl
bmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmluaXNoKHJpZ2h0LCByaWdodEluZGV4KTsK
KyAgICAgICAgICAgIGlmIChyaWdodEluZGV4ID49IHJpZ2h0Lmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmluaXNoKGxlZnQsIGxlZnRJbmRleCk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGxldCBsZWZ0VmFsdWUgPSBsZWZ0W2xlZnRJbmRleF07CisgICAgICAgICAgICBsZXQg
cmlnaHRWYWx1ZSA9IHJpZ2h0W3JpZ2h0SW5kZXhdOworICAgICAgICAgICAgbGV0IGNvbXBhcmlz
b25SZXN1bHQgPSBjb21wYXJlKGxlZnRWYWx1ZSwgcmlnaHRWYWx1ZSk7CisgICAgICAgICAgICBp
ZiAoY29tcGFyaXNvblJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChs
ZWZ0VmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZShsZWZ0SW5kZXggKyAxLCBy
aWdodEluZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJpZ2h0
VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIG1lcmdlKGxlZnRJbmRleCwgcmlnaHRJbmRleCAr
IDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtZXJnZSgwLCAwKTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNoZWNr
U29ydGVkKGFycmF5KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2soaW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFycmF5W2lu
ZGV4XSA+IGFycmF5W2luZGV4ICsgMV0pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJhcnJheSBub3Qgc29ydGVkIGF0IGluZGV4ICIgKyBpbmRleCArICI6ICIgKyBhcnJheSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBjaGVjayhpbmRleCArIDEpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBjaGVjaygwKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gY2hlY2tTcGVjdHJ1bShhLCBiKQorICAgIHsKKyAgICAgICAgdmFyIGFNYXAgPSBuZXcgTWFw
KCk7CisgICAgICAgIHZhciBiTWFwID0gbmV3IE1hcCgpOworICAgICAgICAKKyAgICAgICAgZnVu
Y3Rpb24gYWRkKG1hcCwgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBleGlzdGlu
ZyA9IG1hcC5nZXQodmFsdWUpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nID09IG51bGwpCisg
ICAgICAgICAgICAgICAgZXhpc3RpbmcgPSAwOworICAgICAgICAgICAgbWFwLnNldCh2YWx1ZSwg
ZXhpc3RpbmcgKyAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gYnVp
bGQobWFwLCBhcnJheSwgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+
PSBhcnJheS5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBhZGQobWFwLCBhcnJheVtpbmRleF0pOworICAgICAgICAgICAgcmV0dXJuIGJ1
aWxkKG1hcCwgYXJyYXksIGluZGV4ICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGJ1aWxkKGFNYXAsIGEsIDApOworICAgICAgICBidWlsZChiTWFwLCBiLCAwKTsKKyAgICAgICAg
CisgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmUoa2V5cykKKyAgICAgICAgeworICAgICAgICAgICAg
bGV0IGVudHJ5ID0ga2V5cy5uZXh0KCk7CisgICAgICAgICAgICBpZiAoZW50cnkuZG9uZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoYU1hcC5nZXQoZW50cnkudmFs
dWUpICE9IGJNYXAuZ2V0KGVudHJ5LnZhbHVlKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFycmF5cyBkb24ndCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZjogIiArIGVudHJ5LnZh
bHVlICsgIiAoYSA9ICIgKyBhICsgIiwgYiA9ICIgKyBiICsgIikiKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlKGtleXMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb21wYXJl
KGFNYXAua2V5cygpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gYnVpbGRBcnJheShsZW5n
dGgsIHZhbHVlKQorICAgIHsKKyAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgIAorICAg
ICAgICBmdW5jdGlvbiBidWlsZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhcnJheS5s
ZW5ndGggPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFy
cmF5LnB1c2godmFsdWUoYXJyYXkubGVuZ3RoKSk7CisgICAgICAgICAgICByZXR1cm4gYnVpbGQo
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYnVpbGQoKTsKKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBhcnJheTsKKyAgICB9CisgICAgCisgICAgbGV0IGFycmF5cyA9IFsKKyAgICAg
ICAgYnVpbGRBcnJheSgxMCwgeCA9PiB4KSwKKyAgICAgICAgYnVpbGRBcnJheSgxMCwgeCA9PiAt
eCksCisgICAgICAgIGJ1aWxkQXJyYXkoMTAwMCwgeCA9PiB4KSwKKyAgICAgICAgYnVpbGRBcnJh
eSgxMDAwMCwgeCA9PiAteCksCisgICAgICAgIGJ1aWxkQXJyYXkoMTAwMDAsIHggPT4gcmFuZG9t
KCkpCisgICAgXTsKKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KGluZGV4KQorICAgIHsKKyAgICAg
ICAgaWYgKGluZGV4ID49IGFycmF5cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgICAgICBsZXQgYXJyYXkgPSBhcnJheXNbaW5kZXhdOworICAgICAgICBsZXQgc29y
dGVkID0gbWVyZ2VTb3J0ZWQoYXJyYXksIChhLCBiKSA9PiBhIDwgYiA/IC0xIDogYSA+IGIgPyAx
IDogMCk7CisgICAgICAgIGNoZWNrU29ydGVkKHNvcnRlZCk7CisgICAgICAgIGNoZWNrU3BlY3Ry
dW0oYXJyYXksIHNvcnRlZCk7CisgICAgfQorICAgIAorICAgIHRlc3QoMCk7Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL1RhaWxCZW5jaDkwMDAvbi1ib2R5LXJ1bi5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL1RhaWxCZW5jaDkwMDAvbi1ib2R5LXJ1bi5qcwkobm9uZXhpc3Rl
bnQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1RhaWxCZW5jaDkwMDAvbi1ib2R5LXJ1bi5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK2xvYWQoIm4tYm9keS5qcyIpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDMwMDsgKytpKQorICAgIFRFU1RfbkJvZHkoKTsKSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvVGFpbEJlbmNoOTAwMC9uLWJvZHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9UYWlsQmVuY2g5MDAwL24tYm9keS5qcwkobm9uZXhpc3RlbnQpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL1RhaWxCZW5jaDkwMDAvbi1ib2R5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjM3IEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIFRFU1RfbkJvZHkoKQoreworICAg
IC8qIFRoZSBHcmVhdCBDb21wdXRlciBMYW5ndWFnZSBTaG9vdG91dAorICAgICAgIGh0dHA6Ly9z
aG9vdG91dC5hbGlvdGguZGViaWFuLm9yZy8KKyAgICAgICBjb250cmlidXRlZCBieSBJc2FhYyBH
b3V5ICovCisKKyAgICB2YXIgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzsKKyAgICB2YXIgU09MQVJf
TUFTUyA9IDQgKiBQSSAqIFBJOworICAgIHZhciBEQVlTX1BFUl9ZRUFSID0gMzY1LjI0OworCisg
ICAgZnVuY3Rpb24gQm9keSh4LHkseix2eCx2eSx2eixtYXNzKXsKKyAgICAgICAgdGhpcy54ID0g
eDsKKyAgICAgICAgdGhpcy55ID0geTsKKyAgICAgICAgdGhpcy56ID0gejsKKyAgICAgICAgdGhp
cy52eCA9IHZ4OworICAgICAgICB0aGlzLnZ5ID0gdnk7CisgICAgICAgIHRoaXMudnogPSB2ejsK
KyAgICAgICAgdGhpcy5tYXNzID0gbWFzczsKKyAgICB9CisKKyAgICBCb2R5LnByb3RvdHlwZS5v
ZmZzZXRNb21lbnR1bSA9IGZ1bmN0aW9uKHB4LHB5LHB6KSB7CisgICAgICAgIHRoaXMudnggPSAt
cHggLyBTT0xBUl9NQVNTOworICAgICAgICB0aGlzLnZ5ID0gLXB5IC8gU09MQVJfTUFTUzsKKyAg
ICAgICAgdGhpcy52eiA9IC1weiAvIFNPTEFSX01BU1M7CisgICAgICAgIHJldHVybiB0aGlzOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIEp1cGl0ZXIoKXsKKyAgICAgICAgcmV0dXJuIG5ldyBCb2R5
KAorICAgICAgICAgICAgNC44NDE0MzE0NDI0NjQ3MjA5MGUrMDAsCisgICAgICAgICAgICAgICAg
LTEuMTYwMzIwMDQ0MDI3NDI4MzllKzAwLAorICAgICAgICAgICAgICAgIC0xLjAzNjIyMDQ0NDcx
MTIzMTA5ZS0wMSwKKyAgICAgICAgICAgIDEuNjYwMDc2NjQyNzQ0MDM2OTRlLTAzICogREFZU19Q
RVJfWUVBUiwKKyAgICAgICAgICAgIDcuNjk5MDExMTg0MTk3NDA0MjVlLTAzICogREFZU19QRVJf
WUVBUiwKKyAgICAgICAgICAgICAgICAtNi45MDQ2MDAxNjk3MjA2MzAyM2UtMDUgKiBEQVlTX1BF
Ul9ZRUFSLAorICAgICAgICAgICAgOS41NDc5MTkzODQyNDMyNjYwOWUtMDQgKiBTT0xBUl9NQVNT
CisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gU2F0dXJuKCl7CisgICAgICAgIHJl
dHVybiBuZXcgQm9keSgKKyAgICAgICAgICAgIDguMzQzMzY2NzE4MjQ0NTc5ODdlKzAwLAorICAg
ICAgICAgICAgNC4xMjQ3OTg1NjQxMjQzMDQ3OWUrMDAsCisgICAgICAgICAgICAgICAgLTQuMDM1
MjM0MTcxMTQzMjEzODFlLTAxLAorICAgICAgICAgICAgICAgIC0yLjc2NzQyNTEwNzI2ODYyNDEx
ZS0wMyAqIERBWVNfUEVSX1lFQVIsCisgICAgICAgICAgICA0Ljk5ODUyODAxMjM0OTE3MjM4ZS0w
MyAqIERBWVNfUEVSX1lFQVIsCisgICAgICAgICAgICAyLjMwNDE3Mjk3NTczNzYzOTI5ZS0wNSAq
IERBWVNfUEVSX1lFQVIsCisgICAgICAgICAgICAyLjg1ODg1OTgwNjY2MTMwODEyZS0wNCAqIFNP
TEFSX01BU1MKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBVcmFudXMoKXsKKyAg
ICAgICAgcmV0dXJuIG5ldyBCb2R5KAorICAgICAgICAgICAgMS4yODk0MzY5NTYyMTM5MTMxMGUr
MDEsCisgICAgICAgICAgICAgICAgLTEuNTExMTE1MTQwMTY5ODYzMTJlKzAxLAorICAgICAgICAg
ICAgICAgIC0yLjIzMzA3NTc4ODkyNjU1NzM0ZS0wMSwKKyAgICAgICAgICAgIDIuOTY0NjAxMzc1
NjQ3NjE2MThlLTAzICogREFZU19QRVJfWUVBUiwKKyAgICAgICAgICAgIDIuMzc4NDcxNzM5NTk0
ODA5NTBlLTAzICogREFZU19QRVJfWUVBUiwKKyAgICAgICAgICAgICAgICAtMi45NjU4OTU2ODU0
MDIzNzU1NmUtMDUgKiBEQVlTX1BFUl9ZRUFSLAorICAgICAgICAgICAgNC4zNjYyNDQwNDMzNTE1
NjI5OGUtMDUgKiBTT0xBUl9NQVNTCisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
TmVwdHVuZSgpeworICAgICAgICByZXR1cm4gbmV3IEJvZHkoCisgICAgICAgICAgICAxLjUzNzk2
OTcxMTQ4NTA5MTY1ZSswMSwKKyAgICAgICAgICAgICAgICAtMi41OTE5MzE0NjA5OTg3OTY0MWUr
MDEsCisgICAgICAgICAgICAxLjc5MjU4NzcyOTUwMzcxMTgxZS0wMSwKKyAgICAgICAgICAgIDIu
NjgwNjc3NzI0OTAzODkzMjJlLTAzICogREFZU19QRVJfWUVBUiwKKyAgICAgICAgICAgIDEuNjI4
MjQxNzAwMzgyNDIyOTVlLTAzICogREFZU19QRVJfWUVBUiwKKyAgICAgICAgICAgICAgICAtOS41
MTU5MjI1NDUxOTcxNTg3MGUtMDUgKiBEQVlTX1BFUl9ZRUFSLAorICAgICAgICAgICAgNS4xNTEz
ODkwMjA0NjYxMTQ1MWUtMDUgKiBTT0xBUl9NQVNTCisgICAgICAgICk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gU3VuKCl7CisgICAgICAgIHJldHVybiBuZXcgQm9keSgwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCBTT0xBUl9NQVNTKTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9uIE5Cb2R5
U3lzdGVtKGJvZGllcyl7CisgICAgICAgIHRoaXMuYm9kaWVzID0gYm9kaWVzOworICAgICAgICB2
YXIgcHggPSAwLjA7CisgICAgICAgIHZhciBweSA9IDAuMDsKKyAgICAgICAgdmFyIHB6ID0gMC4w
OworICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuYm9kaWVzLmxlbmd0aDsKKyAgICAgICAgCisgICAg
ICAgIGxldCBpdGVyYXRlID0gaSA9PiB7CisgICAgICAgICAgICBpZiAoaSA+PSBzaXplKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHZhciBiID0gdGhpcy5ib2RpZXNbaV07
CisgICAgICAgICAgICB2YXIgbSA9IGIubWFzczsKKyAgICAgICAgICAgIHB4ICs9IGIudnggKiBt
OworICAgICAgICAgICAgcHkgKz0gYi52eSAqIG07CisgICAgICAgICAgICBweiArPSBiLnZ6ICog
bTsKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRlKGkgKyAxKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaXRlcmF0ZSgwKTsKKworICAgICAgICB0aGlzLmJvZGllc1swXS5vZmZzZXRN
b21lbnR1bShweCxweSxweik7CisgICAgfQorCisgICAgTkJvZHlTeXN0ZW0ucHJvdG90eXBlLmFk
dmFuY2UgPSBmdW5jdGlvbihkdCl7CisgICAgICAgIHZhciBkeCwgZHksIGR6LCBkaXN0YW5jZSwg
bWFnOworICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuYm9kaWVzLmxlbmd0aDsKKyAgICAgICAgCisg
ICAgICAgIGxldCBvdXRlckl0ZXJhdGUgPSBpID0+IHsKKyAgICAgICAgICAgIGlmIChpID49IHNp
emUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICB2
YXIgYm9keWkgPSB0aGlzLmJvZGllc1tpXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbGV0
IGlubmVySXRlcmF0ZSA9IGogPT4geworICAgICAgICAgICAgICAgIGlmIChqID49IHNpemUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICB2YXIgYm9keWogPSB0aGlzLmJvZGllc1tqXTsKKyAgICAgICAgICAgICAgICBkeCA9IGJv
ZHlpLnggLSBib2R5ai54OworICAgICAgICAgICAgICAgIGR5ID0gYm9keWkueSAtIGJvZHlqLnk7
CisgICAgICAgICAgICAgICAgZHogPSBib2R5aS56IC0gYm9keWouejsKKworICAgICAgICAgICAg
ICAgIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkgKyBkeipkeik7CisgICAgICAg
ICAgICAgICAgbWFnID0gZHQgLyAoZGlzdGFuY2UgKiBkaXN0YW5jZSAqIGRpc3RhbmNlKTsKKwor
ICAgICAgICAgICAgICAgIGJvZHlpLnZ4IC09IGR4ICogYm9keWoubWFzcyAqIG1hZzsKKyAgICAg
ICAgICAgICAgICBib2R5aS52eSAtPSBkeSAqIGJvZHlqLm1hc3MgKiBtYWc7CisgICAgICAgICAg
ICAgICAgYm9keWkudnogLT0gZHogKiBib2R5ai5tYXNzICogbWFnOworCisgICAgICAgICAgICAg
ICAgYm9keWoudnggKz0gZHggKiBib2R5aS5tYXNzICogbWFnOworICAgICAgICAgICAgICAgIGJv
ZHlqLnZ5ICs9IGR5ICogYm9keWkubWFzcyAqIG1hZzsKKyAgICAgICAgICAgICAgICBib2R5ai52
eiArPSBkeiAqIGJvZHlpLm1hc3MgKiBtYWc7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5u
ZXJJdGVyYXRlKGogKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaW5uZXJJdGVyYXRlKGkgKyAxKTsKKworICAgICAgICAgICAgcmV0dXJuIG91dGVySXRlcmF0
ZShpICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG91dGVySXRlcmF0ZSgwKTsK
KworICAgICAgICBsZXQgaXRlcmF0ZSA9IGkgPT4geworICAgICAgICAgICAgaWYgKGkgPj0gc2l6
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBib2R5ID0gdGhp
cy5ib2RpZXNbaV07CisgICAgICAgICAgICBib2R5LnggKz0gZHQgKiBib2R5LnZ4OworICAgICAg
ICAgICAgYm9keS55ICs9IGR0ICogYm9keS52eTsKKyAgICAgICAgICAgIGJvZHkueiArPSBkdCAq
IGJvZHkudno7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRlKGkgKyAx
KTsKKyAgICAgICAgfQorCisgICAgICAgIGl0ZXJhdGUoMCk7CisgICAgfQorCisgICAgTkJvZHlT
eXN0ZW0ucHJvdG90eXBlLmVuZXJneSA9IGZ1bmN0aW9uKCl7CisgICAgICAgIHZhciBkeCwgZHks
IGR6LCBkaXN0YW5jZTsKKyAgICAgICAgdmFyIGUgPSAwLjA7CisgICAgICAgIHZhciBzaXplID0g
dGhpcy5ib2RpZXMubGVuZ3RoOworCisgICAgICAgIGxldCBvdXRlckl0ZXJhdGUgPSBpID0+IHsK
KyAgICAgICAgICAgIGlmIChpID49IHNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB2YXIgYm9keWkgPSB0aGlzLmJvZGllc1tpXTsKKworICAg
ICAgICAgICAgZSArPSAwLjUgKiBib2R5aS5tYXNzICoKKyAgICAgICAgICAgICAgICAoIGJvZHlp
LnZ4ICogYm9keWkudngKKyAgICAgICAgICAgICAgICAgICsgYm9keWkudnkgKiBib2R5aS52eQor
ICAgICAgICAgICAgICAgICAgKyBib2R5aS52eiAqIGJvZHlpLnZ6ICk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGxldCBpbm5lckl0ZXJhdGUgPSBqID0+IHsKKyAgICAgICAgICAgICAgICBp
ZiAoaiA+PSBzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgdmFyIGJvZHlqID0gdGhpcy5ib2RpZXNbal07CisgICAgICAg
ICAgICAgICAgZHggPSBib2R5aS54IC0gYm9keWoueDsKKyAgICAgICAgICAgICAgICBkeSA9IGJv
ZHlpLnkgLSBib2R5ai55OworICAgICAgICAgICAgICAgIGR6ID0gYm9keWkueiAtIGJvZHlqLno7
CisKKyAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IE1hdGguc3FydChkeCpkeCArIGR5KmR5ICsg
ZHoqZHopOworICAgICAgICAgICAgICAgIGUgLT0gKGJvZHlpLm1hc3MgKiBib2R5ai5tYXNzKSAv
IGRpc3RhbmNlOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGlubmVySXRlcmF0ZShqICsgMSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlubmVySXRlcmF0ZShp
ICsgMSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBvdXRlckl0ZXJhdGUoaSAr
IDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBvdXRlckl0ZXJhdGUoMCk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gZTsKKyAgICB9CisKKyAgICB2YXIgcmV0ID0gMDsKKworICAg
IGxldCBwcm9ibGVtID0gbiA9PiB7CisgICAgICAgIGlmIChuID4gMjQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgICAgICAoZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIHZhciBi
b2RpZXMgPSBuZXcgTkJvZHlTeXN0ZW0oIEFycmF5KAorICAgICAgICAgICAgICAgIFN1bigpLEp1
cGl0ZXIoKSxTYXR1cm4oKSxVcmFudXMoKSxOZXB0dW5lKCkKKyAgICAgICAgICAgICkpOworICAg
ICAgICAgICAgdmFyIG1heCA9IG4gKiAxMDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJl
dCArPSBib2RpZXMuZW5lcmd5KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxldCBpdGVy
YXRlID0gaSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGkgPj0gbWF4KQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYm9kaWVz
LmFkdmFuY2UoMC4wMSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0ZShpICsgMSk7
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaXRlcmF0ZSgwKTsKKworICAgICAgICAgICAg
cmV0ICs9IGJvZGllcy5lbmVyZ3koKTsKKyAgICAgICAgfSkoKTsKKworICAgICAgICByZXR1cm4g
cHJvYmxlbShuICogMik7CisgICAgfQorCisgICAgcHJvYmxlbSgzKTsKKworICAgIHZhciBleHBl
Y3RlZCA9IC0xLjM1MjQ4NjI0MDg1MzczODE7CisgICAgaWYgKHJldCAhPSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgIkVSUk9SOiBiYWQgcmVzdWx0OiBleHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAi
IGJ1dCBnb3QgIiArIHJldDsKK30K
</data>
<flag name="review"
          id="338963"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>