<?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>196384</bug_id>
          
          <creation_ts>2019-03-28 17:35:29 -0700</creation_ts>
          <short_desc>Worklist should have a more fine grained way to just stop for some VMs</short_desc>
          <delta_ts>2019-04-07 11:52:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1522305</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-28 17:35:29 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522307</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-28 17:41:21 -0700</bug_when>
    <thetext>So I have a WIP patch. I&apos;m testing on 2-core x86-64 MBP (using instruments to bring my core count down to 2 w/ hyper threading).

The patch makes us go from total CPU time spent in &quot;Heap::suspendCompilerThreads&quot; from 34000 ms to 400ms. However, it&apos;s not a progression on bomb-workers. And there&apos;s a slight chance it&apos;s even a regression.

I wonder if it&apos;s revealing other forms of contention that per-process locking was somehow saving us from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522309</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-28 17:49:40 -0700</bug_when>
    <thetext>When I test in four core mode, it&apos;s also repeatably just a bit slower. However, we&apos;re also repeatably spending ~2 orders of magnitude less time in Heap::suspendCompilerThreads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522326</commentid>
    <comment_count>3</comment_count>
      <attachid>366233</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-28 19:02:23 -0700</bug_when>
    <thetext>Created attachment 366233
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525087</commentid>
    <comment_count>4</comment_count>
      <attachid>366906</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-07 11:52:21 -0700</bug_when>
    <thetext>Created attachment 366906
WIP

Stashing this WIP here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366233</attachid>
            <date>2019-03-28 19:02:23 -0700</date>
            <delta_ts>2019-04-07 11:52:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8865</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lv
biAyNDM2MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUmVsZWFzZUhlYXBBY2Nlc3NTY29wZS5oIgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKK3N0YXRpYyBjb25zdCBib29sIG9sZFdheSA9IGZhbHNlOworCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKIGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVh
ZCB7CkBAIC01MiwyMCArNTUsNjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93b3JrbGlz
dC5tX3RocmVhZE5hbWUuZGF0YSgpOwogICAgIH0KIAorICAgIExvY2sgbV92bUxvY2s7CisgICAg
SGFzaFNldDxWTSo+IGlnbm9yZWRWTXM7CisgICAgUmVmUHRyPFBsYW4+IG1fcGxhbjsKKwogcHJv
dGVjdGVkOgotICAgIFBvbGxSZXN1bHQgcG9sbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
KSBvdmVycmlkZQorCisgICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBh
YnN0cmFjdExvY2tlcikgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmIChvbGRXYXkpIHsKKyAg
ICAgICAgICAgIGlmIChtX3dvcmtsaXN0Lm1fcXVldWUuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBQb2xsUmVzdWx0OjpXYWl0OworICAgICAgICAgICAgCisgICAgICAgICAgICBt
X3BsYW4gPSBtX3dvcmtsaXN0Lm1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgICAgICBpZiAo
IW1fcGxhbikgeworICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRp
b25RdWV1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fd29ya2xpc3QuZHVtcChhYnN0cmFj
dExvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
OiBUaHJlYWQgc2h1dHRpbmcgZG93blxuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpTdG9wOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSgpID09IFBsYW46OlByZXBhcmluZyk7Cisg
ICAgICAgICAgICBtX3dvcmtsaXN0Lm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzKys7CisgICAgICAg
ICAgICByZXR1cm4gUG9sbFJlc3VsdDo6V29yazsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICht
X3dvcmtsaXN0Lm1fcXVldWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1
bHQ6OldhaXQ7CiAgICAgICAgIAotICAgICAgICBtX3BsYW4gPSBtX3dvcmtsaXN0Lm1fcXVldWUu
dGFrZUZpcnN0KCk7Ci0gICAgICAgIGlmICghbV9wbGFuKSB7Ci0gICAgICAgICAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewotICAgICAgICAgICAgICAgIG1fd29y
a2xpc3QuZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgICAgICAgICAgZGF0
YUxvZygiOiBUaHJlYWQgc2h1dHRpbmcgZG93blxuIik7CisgICAgICAgIHsKKyAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92bUxvY2spOworCisgICAgICAgICAgICBpZiAoIW1f
d29ya2xpc3QubV9xdWV1ZS5maXJzdCgpKSB7CisgICAgICAgICAgICAgICAgbV9wbGFuID0gbV93
b3JrbGlzdC5tX3F1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fd29y
a2xpc3QuZHVtcChhYnN0cmFjdExvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiOiBUaHJlYWQgc2h1dHRpbmcgZG93blxuIik7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OlN0b3A7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxQbGFuPiByZXN1bHQ7CisgICAgICAgICAg
ICBWZWN0b3I8UmVmUHRyPFBsYW4+PiBpZ25vcmVkUGxhbnM7CisgICAgICAgICAgICB3aGlsZSAo
IW1fd29ya2xpc3QubV9xdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8
UGxhbj4gcGxhbiA9IG1fd29ya2xpc3QubV9xdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlnbm9yZWRWTXMuY29udGFpbnMocGxhbi0+dm0oKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShwbGFuKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWdub3JlZFBsYW5zLmFw
cGVuZChXVEZNb3ZlKHBsYW4pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gaWdub3JlZFBsYW5zLnNpemUoKTsgaS0tOyApCisgICAgICAgICAgICAgICAg
bV93b3JrbGlzdC5tX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGlnbm9yZWRQbGFuc1tpXSkpOworCisg
ICAgICAgICAgICBtX3BsYW4gPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoIW1f
cGxhbikgeworICAgICAgICAgICAgICAgIC8vIE9ubHkgY29udGFpbnMgVk1zIHdlIHNob3VsZCBp
Z25vcmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OldhaXQ7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gUG9sbFJlc3VsdDo6U3RvcDsKICAgICAgICAgfQor
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2UoKSA9PSBQbGFuOjpQcmVwYXJp
bmcpOwogICAgICAgICBtX3dvcmtsaXN0Lm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzKys7CiAgICAg
ICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOwpAQCAtODUsNyArMTM3LDYgQEAgcHJvdGVjdGVk
OgogICAgICAgICB+V29ya1Njb3BlKCkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fdGhyZWFkLm1fd29ya2xpc3QubV9sb2NrKTsKLSAgICAgICAgICAgIG1fdGhy
ZWFkLm1fcGxhbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX3RocmVhZC5tX3dvcmtsaXN0Lm1f
bnVtYmVyT2ZBY3RpdmVUaHJlYWRzLS07CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OCw2ICsx
NDksMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBXb3JrU2NvcGUgd29ya1Njb3BlKCp0aGlzKTsK
ICAgICAgICAgCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YS5tX3JpZ2h0VG9SdW4p
OworCisgICAgICAgIGF1dG8gY2xlYXJQbGFuID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZtTG9jayk7CisgICAgICAgICAgICBtX3Bs
YW4gPSBudWxscHRyOworICAgICAgICB9KTsKKwogICAgICAgICB7CiAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5tX2xvY2spOwogICAgICAgICAgICAgaWYgKG1fcGxh
bi0+c3RhZ2UoKSA9PSBQbGFuOjpDYW5jZWxsZWQpCkBAIC0xNjMsNyArMjIwLDExIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgQVNTRVJUKCFtX3BsYW4pOwogICAgICAgICAKICAgICAgICAgbV9jb21w
aWxhdGlvblNjb3BlID0gbnVsbHB0cjsKLSAgICAgICAgbV9wbGFuID0gbnVsbHB0cjsKKworICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdm1Mb2NrKTsKKyAg
ICAgICAgICAgIG1fcGxhbiA9IG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xNzEsNyArMjMyLDYgQEAgcHJpdmF0ZToKICAgICBUaHJlYWREYXRhJiBtX2RhdGE7CiAg
ICAgaW50IG1fcmVsYXRpdmVQcmlvcml0eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRp
b25TY29wZT4gbV9jb21waWxhdGlvblNjb3BlOwotICAgIFJlZlB0cjxQbGFuPiBtX3BsYW47CiB9
OwogCiBzdGF0aWMgQ1N0cmluZyBjcmVhdGVXb3JrbGlzdE5hbWUoQ1N0cmluZyYmIHRpZXJOYW1l
KQpAQCAtMzY0LDE4ICs0MjQsNzkgQEAgdm9pZCBXb3JrbGlzdDo6Y29tcGxldGVBbGxQbGFuc0Zv
clZNKFZNJgogICAgIGNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKHZtKTsKIH0KIAotdm9pZCBX
b3JrbGlzdDo6c3VzcGVuZEFsbFRocmVhZHMoKQorLyoKK3ZvaWQgV29ya2xpc3Q6OnN1c3BlbmRB
bGxUaHJlYWRzKFZNJikKK3sKK30KK3ZvaWQgV29ya2xpc3Q6OnJlc3VtZUFsbFRocmVhZHMoVk0m
KQogewotICAgIG1fc3VzcGVuc2lvbkxvY2subG9jaygpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCi0gICAgICAgIG1fdGhyZWFkc1tpXS0+bV9yaWdodFRv
UnVuLmxvY2soKTsKIH0KKyovCiAKLXZvaWQgV29ya2xpc3Q6OnJlc3VtZUFsbFRocmVhZHMoKQor
dm9pZCBXb3JrbGlzdDo6c3VzcGVuZEFsbFRocmVhZHMoVk0mIHZtKQogewotICAgIGZvciAodW5z
aWduZWQgaSA9IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCi0gICAgICAgIG1fdGhyZWFkc1tpXS0+
bV9yaWdodFRvUnVuLnVubG9jaygpOwotICAgIG1fc3VzcGVuc2lvbkxvY2sudW5sb2NrKCk7Cisg
ICAgaWYgKG9sZFdheSkgeworICAgICAgICBtX3N1c3BlbnNpb25Mb2NrLmxvY2soKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAg
IG1fdGhyZWFkc1tpXS0+bV9yaWdodFRvUnVuLmxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vbV9zdXNwZW5zaW9uTG9jay5sb2NrKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykgeworICAgICAgICBib29sIGlzVGFyZ2V0Vk0gPSBm
YWxzZTsKKworICAgICAgICBUaHJlYWRCb2R5KiBib2R5ID0gc3RhdGljX2Nhc3Q8VGhyZWFkQm9k
eSo+KG1fdGhyZWFkc1tpXS0+bV90aHJlYWQuZ2V0KCkpOworCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYm9keS0+bV92bUxvY2spOworICAgICAgICAgICAg
Ym9keS0+aWdub3JlZFZNcy5hZGQoJnZtKTsKKyAgICAgICAgICAgIGlmIChib2R5LT5tX3BsYW4g
JiYgYm9keS0+bV9wbGFuLT52bSgpID09ICZ2bSkKKyAgICAgICAgICAgICAgICBpc1RhcmdldFZN
ID0gdHJ1ZTsgLy8gVGhpcyBpcyBqdXN0IHByb2JhYmlsaXN0aWMuIE9uY2Ugd2UgZHJvcCB0aGlz
IGxvY2ssIHRoZXJlIGlzIGEgY2hhbmNlIHRoaXMgcGxhbiBjb21wbGV0ZXMsIGFuZCBwZXJoYXBz
LCBldmVuIHBpY2tzIHVwIGEgbmV3IHBsYW4hCisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNU
YXJnZXRWTSkgeworICAgICAgICAgICAgbV90aHJlYWRzW2ldLT5tX3JpZ2h0VG9SdW4ubG9jaygp
OworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhib2R5LT5tX3ZtTG9jayk7Cisg
ICAgICAgICAgICBpc1RhcmdldFZNID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoYm9keS0+bV9w
bGFuICYmIGJvZHktPm1fcGxhbi0+dm0oKSA9PSAmdm0pCisgICAgICAgICAgICAgICAgaXNUYXJn
ZXRWTSA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWlzVGFyZ2V0Vk0pIHsKKyAgICAgICAgICAg
ICAgICBib2R5LT5pZ25vcmVkVk1zLmFkZCgmdm0pOworICAgICAgICAgICAgICAgIC8vZGF0YUxv
Z0xuKCJHb3QgdGhlIHdyb25nIHZtIik7CisgICAgICAgICAgICAgICAgbV90aHJlYWRzW2ldLT5t
X3JpZ2h0VG9SdW4udW5sb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgV29ya2xpc3Q6OnJlc3VtZUFsbFRocmVhZHMoVk0mIHZtKQoreworICAgIGlmIChv
bGRXYXkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0t
OykKKyAgICAgICAgICAgIG1fdGhyZWFkc1tpXS0+bV9yaWdodFRvUnVuLnVubG9jaygpOworICAg
ICAgICBtX3N1c3BlbnNpb25Mb2NrLnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICB7CisgICAgICAgICAgICBUaHJlYWRCb2R5KiBib2R5ID0gc3RhdGljX2Nhc3Q8VGhyZWFkQm9k
eSo+KG1fdGhyZWFkc1tpXS0+bV90aHJlYWQuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGJvZHktPm1fdm1Mb2NrKTsKKyAgICAgICAgICAgIGlmIChib2R5LT5t
X3BsYW4gJiYgYm9keS0+bV9wbGFuLT52bSgpID09ICZ2bSkgeworICAgICAgICAgICAgICAgIGJv
ZHktPmlnbm9yZWRWTXMucmVtb3ZlKCZ2bSk7CisgICAgICAgICAgICAgICAgbV90aHJlYWRzW2ld
LT5tX3JpZ2h0VG9SdW4udW5sb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvL21fdGhyZWFkc1tpXS0+bV9yaWdodFRvUnVuLnVubG9jaygpOworICAgIH0KKworICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlB
bGwobG9ja2VyKTsKKworICAgIC8vbV9zdXNwZW5zaW9uTG9jay51bmxvY2soKTsKIH0KIAogdm9p
ZCBXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgJKHJldmlzaW9uIDI0MzYy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHF1ZXVlTGVu
Z3RoKCk7CiAgICAgCi0gICAgdm9pZCBzdXNwZW5kQWxsVGhyZWFkcygpOwotICAgIHZvaWQgcmVz
dW1lQWxsVGhyZWFkcygpOworICAgIHZvaWQgc3VzcGVuZEFsbFRocmVhZHMoVk0mKTsKKyAgICB2
b2lkIHJlc3VtZUFsbFRocmVhZHMoVk0mKTsKICAgICAKICAgICBib29sIGlzQWN0aXZlRm9yVk0o
Vk0mKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAyNDM2MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE0Nyw4ICsyMTQ3LDIwIEBAIHZvaWQgSGVhcDo6c3VzcGVuZENv
bXBpbGVyVGhyZWFkcygpCiAgICAgLy8gdGhlIHdvcmtsaXN0cyB1c2UgQXV0b21hdGljVGhyZWFk
cyBhbnl3YXkuCiAgICAgaWYgKCFWTTo6Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gc3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBERkc6Om51bWJlck9mV29ya2xpc3RzKCk7IGktLTspCi0gICAgICAgIERGRzo6ZW5zdXJl
V29ya2xpc3RGb3JJbmRleChpKS5zdXNwZW5kQWxsVGhyZWFkcygpOworICAgICAgICBERkc6OmVu
c3VyZVdvcmtsaXN0Rm9ySW5kZXgoaSkuc3VzcGVuZEFsbFRocmVhZHMoKm1fdm0pOworICAgIGF1
dG8gZW5kID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgeworICAgICAgICBzdGF0aWMgTG9j
ayBsb2NrOworICAgICAgICBzdGF0aWMgZG91YmxlIHRvdGFsID0gMC4wOworICAgICAgICBzdGF0
aWMgdWludDY0X3QgY291bnQgPSAwOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxv
Y2spOworICAgICAgICB0b3RhbCArPSAoZW5kIC0gc3RhcnQpLm1pbGxpc2Vjb25kcygpOworICAg
ICAgICBpZiAoKytjb3VudCAlIDEwMCA9PSAwKQorICAgICAgICAgICAgZGF0YUxvZ0xuKCJUb29r
ICIsIHRvdGFsLCAiIHRvIHN0b3AgY29tcGlsZXIgdGhyZWFkcyIpOworICAgIH0KICNlbmRpZgog
fQogCkBAIC0yMzY2LDggKzIzNzgsMTMgQEAgdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVh
ZHMoKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmICghVk06OmNhblVzZUpJVCgpKQogICAg
ICAgICByZXR1cm47CisgICAgc3RhdGljIGRvdWJsZSB0b3RhbCA9IDAuMDsKKyAgICBhdXRvIHN0
YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gREZHOjpu
dW1iZXJPZldvcmtsaXN0cygpOyBpLS07KQotICAgICAgICBERkc6OmV4aXN0aW5nV29ya2xpc3RG
b3JJbmRleChpKS5yZXN1bWVBbGxUaHJlYWRzKCk7CisgICAgICAgIERGRzo6ZXhpc3RpbmdXb3Jr
bGlzdEZvckluZGV4KGkpLnJlc3VtZUFsbFRocmVhZHMoKm1fdm0pOworICAgIGF1dG8gZW5kID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgdG90YWwgKz0gKGVuZCAtIHN0YXJ0KS5taWxsaXNl
Y29uZHMoKTsKKyAgICAvL2RhdGFMb2dMbigiVG9vayAiLCB0b3RhbCwgIiB0byByZXN1bWUgY29t
cGlsZXIgdGhyZWFkcyIpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366906</attachid>
            <date>2019-04-07 11:52:21 -0700</date>
            <delta_ts>2019-04-07 11:52:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>8865</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lv
biAyNDM2MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUmVsZWFzZUhlYXBBY2Nlc3NTY29wZS5oIgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKK3N0YXRpYyBjb25zdCBib29sIG9sZFdheSA9IGZhbHNlOworCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKIGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVh
ZCB7CkBAIC01MiwyMCArNTUsNjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93b3JrbGlz
dC5tX3RocmVhZE5hbWUuZGF0YSgpOwogICAgIH0KIAorICAgIExvY2sgbV92bUxvY2s7CisgICAg
SGFzaFNldDxWTSo+IGlnbm9yZWRWTXM7CisgICAgUmVmUHRyPFBsYW4+IG1fcGxhbjsKKwogcHJv
dGVjdGVkOgotICAgIFBvbGxSZXN1bHQgcG9sbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
KSBvdmVycmlkZQorCisgICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBh
YnN0cmFjdExvY2tlcikgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmIChvbGRXYXkpIHsKKyAg
ICAgICAgICAgIGlmIChtX3dvcmtsaXN0Lm1fcXVldWUuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBQb2xsUmVzdWx0OjpXYWl0OworICAgICAgICAgICAgCisgICAgICAgICAgICBt
X3BsYW4gPSBtX3dvcmtsaXN0Lm1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgICAgICBpZiAo
IW1fcGxhbikgeworICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRp
b25RdWV1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fd29ya2xpc3QuZHVtcChhYnN0cmFj
dExvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
OiBUaHJlYWQgc2h1dHRpbmcgZG93blxuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpTdG9wOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSgpID09IFBsYW46OlByZXBhcmluZyk7Cisg
ICAgICAgICAgICBtX3dvcmtsaXN0Lm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzKys7CisgICAgICAg
ICAgICByZXR1cm4gUG9sbFJlc3VsdDo6V29yazsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICht
X3dvcmtsaXN0Lm1fcXVldWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1
bHQ6OldhaXQ7CiAgICAgICAgIAotICAgICAgICBtX3BsYW4gPSBtX3dvcmtsaXN0Lm1fcXVldWUu
dGFrZUZpcnN0KCk7Ci0gICAgICAgIGlmICghbV9wbGFuKSB7Ci0gICAgICAgICAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewotICAgICAgICAgICAgICAgIG1fd29y
a2xpc3QuZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgICAgICAgICAgZGF0
YUxvZygiOiBUaHJlYWQgc2h1dHRpbmcgZG93blxuIik7CisgICAgICAgIHsKKyAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92bUxvY2spOworCisgICAgICAgICAgICBpZiAoIW1f
d29ya2xpc3QubV9xdWV1ZS5maXJzdCgpKSB7CisgICAgICAgICAgICAgICAgbV9wbGFuID0gbV93
b3JrbGlzdC5tX3F1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fd29y
a2xpc3QuZHVtcChhYnN0cmFjdExvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiOiBUaHJlYWQgc2h1dHRpbmcgZG93blxuIik7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OlN0b3A7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxQbGFuPiByZXN1bHQ7CisgICAgICAgICAg
ICBWZWN0b3I8UmVmUHRyPFBsYW4+PiBpZ25vcmVkUGxhbnM7CisgICAgICAgICAgICB3aGlsZSAo
IW1fd29ya2xpc3QubV9xdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8
UGxhbj4gcGxhbiA9IG1fd29ya2xpc3QubV9xdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlnbm9yZWRWTXMuY29udGFpbnMocGxhbi0+dm0oKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShwbGFuKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWdub3JlZFBsYW5zLmFw
cGVuZChXVEZNb3ZlKHBsYW4pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gaWdub3JlZFBsYW5zLnNpemUoKTsgaS0tOyApCisgICAgICAgICAgICAgICAg
bV93b3JrbGlzdC5tX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGlnbm9yZWRQbGFuc1tpXSkpOworCisg
ICAgICAgICAgICBtX3BsYW4gPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoIW1f
cGxhbikgeworICAgICAgICAgICAgICAgIC8vIE9ubHkgY29udGFpbnMgVk1zIHdlIHNob3VsZCBp
Z25vcmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OldhaXQ7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gUG9sbFJlc3VsdDo6U3RvcDsKICAgICAgICAgfQor
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2UoKSA9PSBQbGFuOjpQcmVwYXJp
bmcpOwogICAgICAgICBtX3dvcmtsaXN0Lm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzKys7CiAgICAg
ICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOwpAQCAtODUsNyArMTM3LDYgQEAgcHJvdGVjdGVk
OgogICAgICAgICB+V29ya1Njb3BlKCkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fdGhyZWFkLm1fd29ya2xpc3QubV9sb2NrKTsKLSAgICAgICAgICAgIG1fdGhy
ZWFkLm1fcGxhbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX3RocmVhZC5tX3dvcmtsaXN0Lm1f
bnVtYmVyT2ZBY3RpdmVUaHJlYWRzLS07CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OCw2ICsx
NDksMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBXb3JrU2NvcGUgd29ya1Njb3BlKCp0aGlzKTsK
ICAgICAgICAgCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YS5tX3JpZ2h0VG9SdW4p
OworCisgICAgICAgIGF1dG8gY2xlYXJQbGFuID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZtTG9jayk7CisgICAgICAgICAgICBtX3Bs
YW4gPSBudWxscHRyOworICAgICAgICB9KTsKKwogICAgICAgICB7CiAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5tX2xvY2spOwogICAgICAgICAgICAgaWYgKG1fcGxh
bi0+c3RhZ2UoKSA9PSBQbGFuOjpDYW5jZWxsZWQpCkBAIC0xNjMsNyArMjIwLDExIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgQVNTRVJUKCFtX3BsYW4pOwogICAgICAgICAKICAgICAgICAgbV9jb21w
aWxhdGlvblNjb3BlID0gbnVsbHB0cjsKLSAgICAgICAgbV9wbGFuID0gbnVsbHB0cjsKKworICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdm1Mb2NrKTsKKyAg
ICAgICAgICAgIG1fcGxhbiA9IG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xNzEsNyArMjMyLDYgQEAgcHJpdmF0ZToKICAgICBUaHJlYWREYXRhJiBtX2RhdGE7CiAg
ICAgaW50IG1fcmVsYXRpdmVQcmlvcml0eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRp
b25TY29wZT4gbV9jb21waWxhdGlvblNjb3BlOwotICAgIFJlZlB0cjxQbGFuPiBtX3BsYW47CiB9
OwogCiBzdGF0aWMgQ1N0cmluZyBjcmVhdGVXb3JrbGlzdE5hbWUoQ1N0cmluZyYmIHRpZXJOYW1l
KQpAQCAtMzY0LDE4ICs0MjQsNzkgQEAgdm9pZCBXb3JrbGlzdDo6Y29tcGxldGVBbGxQbGFuc0Zv
clZNKFZNJgogICAgIGNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKHZtKTsKIH0KIAotdm9pZCBX
b3JrbGlzdDo6c3VzcGVuZEFsbFRocmVhZHMoKQorLyoKK3ZvaWQgV29ya2xpc3Q6OnN1c3BlbmRB
bGxUaHJlYWRzKFZNJikKK3sKK30KK3ZvaWQgV29ya2xpc3Q6OnJlc3VtZUFsbFRocmVhZHMoVk0m
KQogewotICAgIG1fc3VzcGVuc2lvbkxvY2subG9jaygpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCi0gICAgICAgIG1fdGhyZWFkc1tpXS0+bV9yaWdodFRv
UnVuLmxvY2soKTsKIH0KKyovCiAKLXZvaWQgV29ya2xpc3Q6OnJlc3VtZUFsbFRocmVhZHMoKQor
dm9pZCBXb3JrbGlzdDo6c3VzcGVuZEFsbFRocmVhZHMoVk0mIHZtKQogewotICAgIGZvciAodW5z
aWduZWQgaSA9IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCi0gICAgICAgIG1fdGhyZWFkc1tpXS0+
bV9yaWdodFRvUnVuLnVubG9jaygpOwotICAgIG1fc3VzcGVuc2lvbkxvY2sudW5sb2NrKCk7Cisg
ICAgaWYgKG9sZFdheSkgeworICAgICAgICBtX3N1c3BlbnNpb25Mb2NrLmxvY2soKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAg
IG1fdGhyZWFkc1tpXS0+bV9yaWdodFRvUnVuLmxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vbV9zdXNwZW5zaW9uTG9jay5sb2NrKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykgeworICAgICAgICBib29sIGlzVGFyZ2V0Vk0gPSBm
YWxzZTsKKworICAgICAgICBUaHJlYWRCb2R5KiBib2R5ID0gc3RhdGljX2Nhc3Q8VGhyZWFkQm9k
eSo+KG1fdGhyZWFkc1tpXS0+bV90aHJlYWQuZ2V0KCkpOworCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYm9keS0+bV92bUxvY2spOworICAgICAgICAgICAg
Ym9keS0+aWdub3JlZFZNcy5hZGQoJnZtKTsKKyAgICAgICAgICAgIGlmIChib2R5LT5tX3BsYW4g
JiYgYm9keS0+bV9wbGFuLT52bSgpID09ICZ2bSkKKyAgICAgICAgICAgICAgICBpc1RhcmdldFZN
ID0gdHJ1ZTsgLy8gVGhpcyBpcyBqdXN0IHByb2JhYmlsaXN0aWMuIE9uY2Ugd2UgZHJvcCB0aGlz
IGxvY2ssIHRoZXJlIGlzIGEgY2hhbmNlIHRoaXMgcGxhbiBjb21wbGV0ZXMsIGFuZCBwZXJoYXBz
LCBldmVuIHBpY2tzIHVwIGEgbmV3IHBsYW4hCisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNU
YXJnZXRWTSkgeworICAgICAgICAgICAgbV90aHJlYWRzW2ldLT5tX3JpZ2h0VG9SdW4ubG9jaygp
OworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhib2R5LT5tX3ZtTG9jayk7Cisg
ICAgICAgICAgICBpc1RhcmdldFZNID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoYm9keS0+bV9w
bGFuICYmIGJvZHktPm1fcGxhbi0+dm0oKSA9PSAmdm0pCisgICAgICAgICAgICAgICAgaXNUYXJn
ZXRWTSA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWlzVGFyZ2V0Vk0pIHsKKyAgICAgICAgICAg
ICAgICBib2R5LT5pZ25vcmVkVk1zLmFkZCgmdm0pOworICAgICAgICAgICAgICAgIC8vZGF0YUxv
Z0xuKCJHb3QgdGhlIHdyb25nIHZtIik7CisgICAgICAgICAgICAgICAgbV90aHJlYWRzW2ldLT5t
X3JpZ2h0VG9SdW4udW5sb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgV29ya2xpc3Q6OnJlc3VtZUFsbFRocmVhZHMoVk0mIHZtKQoreworICAgIGlmIChv
bGRXYXkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0t
OykKKyAgICAgICAgICAgIG1fdGhyZWFkc1tpXS0+bV9yaWdodFRvUnVuLnVubG9jaygpOworICAg
ICAgICBtX3N1c3BlbnNpb25Mb2NrLnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICB7CisgICAgICAgICAgICBUaHJlYWRCb2R5KiBib2R5ID0gc3RhdGljX2Nhc3Q8VGhyZWFkQm9k
eSo+KG1fdGhyZWFkc1tpXS0+bV90aHJlYWQuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGJvZHktPm1fdm1Mb2NrKTsKKyAgICAgICAgICAgIGlmIChib2R5LT5t
X3BsYW4gJiYgYm9keS0+bV9wbGFuLT52bSgpID09ICZ2bSkgeworICAgICAgICAgICAgICAgIGJv
ZHktPmlnbm9yZWRWTXMucmVtb3ZlKCZ2bSk7CisgICAgICAgICAgICAgICAgbV90aHJlYWRzW2ld
LT5tX3JpZ2h0VG9SdW4udW5sb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvL21fdGhyZWFkc1tpXS0+bV9yaWdodFRvUnVuLnVubG9jaygpOworICAgIH0KKworICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlB
bGwobG9ja2VyKTsKKworICAgIC8vbV9zdXNwZW5zaW9uTG9jay51bmxvY2soKTsKIH0KIAogdm9p
ZCBXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgJKHJldmlzaW9uIDI0MzYy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHF1ZXVlTGVu
Z3RoKCk7CiAgICAgCi0gICAgdm9pZCBzdXNwZW5kQWxsVGhyZWFkcygpOwotICAgIHZvaWQgcmVz
dW1lQWxsVGhyZWFkcygpOworICAgIHZvaWQgc3VzcGVuZEFsbFRocmVhZHMoVk0mKTsKKyAgICB2
b2lkIHJlc3VtZUFsbFRocmVhZHMoVk0mKTsKICAgICAKICAgICBib29sIGlzQWN0aXZlRm9yVk0o
Vk0mKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAyNDM2MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE0Nyw4ICsyMTQ3LDIwIEBAIHZvaWQgSGVhcDo6c3VzcGVuZENv
bXBpbGVyVGhyZWFkcygpCiAgICAgLy8gdGhlIHdvcmtsaXN0cyB1c2UgQXV0b21hdGljVGhyZWFk
cyBhbnl3YXkuCiAgICAgaWYgKCFWTTo6Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gc3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBERkc6Om51bWJlck9mV29ya2xpc3RzKCk7IGktLTspCi0gICAgICAgIERGRzo6ZW5zdXJl
V29ya2xpc3RGb3JJbmRleChpKS5zdXNwZW5kQWxsVGhyZWFkcygpOworICAgICAgICBERkc6OmVu
c3VyZVdvcmtsaXN0Rm9ySW5kZXgoaSkuc3VzcGVuZEFsbFRocmVhZHMoKm1fdm0pOworICAgIGF1
dG8gZW5kID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgeworICAgICAgICBzdGF0aWMgTG9j
ayBsb2NrOworICAgICAgICBzdGF0aWMgZG91YmxlIHRvdGFsID0gMC4wOworICAgICAgICBzdGF0
aWMgdWludDY0X3QgY291bnQgPSAwOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxv
Y2spOworICAgICAgICB0b3RhbCArPSAoZW5kIC0gc3RhcnQpLm1pbGxpc2Vjb25kcygpOworICAg
ICAgICBpZiAoKytjb3VudCAlIDEwMCA9PSAwKQorICAgICAgICAgICAgZGF0YUxvZ0xuKCJUb29r
ICIsIHRvdGFsLCAiIHRvIHN0b3AgY29tcGlsZXIgdGhyZWFkcyIpOworICAgIH0KICNlbmRpZgog
fQogCkBAIC0yMzY2LDggKzIzNzgsMTMgQEAgdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVh
ZHMoKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmICghVk06OmNhblVzZUpJVCgpKQogICAg
ICAgICByZXR1cm47CisgICAgc3RhdGljIGRvdWJsZSB0b3RhbCA9IDAuMDsKKyAgICBhdXRvIHN0
YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gREZHOjpu
dW1iZXJPZldvcmtsaXN0cygpOyBpLS07KQotICAgICAgICBERkc6OmV4aXN0aW5nV29ya2xpc3RG
b3JJbmRleChpKS5yZXN1bWVBbGxUaHJlYWRzKCk7CisgICAgICAgIERGRzo6ZXhpc3RpbmdXb3Jr
bGlzdEZvckluZGV4KGkpLnJlc3VtZUFsbFRocmVhZHMoKm1fdm0pOworICAgIGF1dG8gZW5kID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgdG90YWwgKz0gKGVuZCAtIHN0YXJ0KS5taWxsaXNl
Y29uZHMoKTsKKyAgICAvL2RhdGFMb2dMbigiVG9vayAiLCB0b3RhbCwgIiB0byByZXN1bWUgY29t
cGlsZXIgdGhyZWFkcyIpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>