<?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>213043</bug_id>
          
          <creation_ts>2020-06-10 12:49:49 -0700</creation_ts>
          <short_desc>[Cocoa] Build callOnMainThread on WTF::RunLoop rather than on NSObject methods</short_desc>
          <delta_ts>2020-06-10 15:04:20 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>202874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661301</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-06-10 12:49:49 -0700</bug_when>
    <thetext>Unify some of RunLoop and callOnMainThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661305</commentid>
    <comment_count>1</comment_count>
      <attachid>401572</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-06-10 12:54:46 -0700</bug_when>
    <thetext>Created attachment 401572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661323</commentid>
    <comment_count>2</comment_count>
      <attachid>401572</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 13:25:05 -0700</bug_when>
    <thetext>Comment on attachment 401572
Patch

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

&gt; Source/WTF/ChangeLog:3
&gt; +        Unify some of RunLoop and callOnMainThread

Another possible title?

    [Cocoa] Build callOnMainThread on WTF::RunLoop rather than on NSObject methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661325</commentid>
    <comment_count>3</comment_count>
      <attachid>401572</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 13:28:31 -0700</bug_when>
    <thetext>Comment on attachment 401572
Patch

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

&gt; Source/WTF/wtf/RunLoop.h:66
&gt;      WTF_EXPORT_PRIVATE static void initializeMainRunLoop();
&gt; +#if USE(WEB_THREAD)
&gt; +    WTF_EXPORT_PRIVATE static void initializeWebRunLoop();
&gt; +#endif

Funny that these initialize functions include the word &quot;RunLoop&quot; but the getter functions don’t. Seems we don’t need to repeat the words &quot;run loop&quot;.

&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:104
&gt;      if (mainThreadPthread) {

I don’t understand this if statement. (Not new, but I find it really mysterious.)

&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:107
&gt; +        RunLoop::web().dispatch([] {
&gt; +            WTF::dispatchFunctionsFromMainThread();
&gt; +        });

Since this is just calling a function can we write this instead?

    RunLoop::web().dispatch(WTF::dispatchFunctionsFromMainThread);

I suspect it might be slightly more efficient as well.

&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:119
&gt; +    RunLoop::main().dispatch([] {
&gt; +        WTF::dispatchFunctionsFromMainThread();
&gt; +    });

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661326</commentid>
    <comment_count>4</comment_count>
      <attachid>401572</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-06-10 13:29:04 -0700</bug_when>
    <thetext>Comment on attachment 401572
Patch

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

&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:107
&gt; -        [staticMainThreadCaller performSelector:@selector(call) onThread:mainThreadNSThread withObject:nil waitUntilDone:NO];
&gt; +        RunLoop::web().dispatch([] {
&gt; +            WTF::dispatchFunctionsFromMainThread();
&gt; +        });

This seems wrong? The function is supposed to dispatch on the main thread.

&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:119
&gt; +    RunLoop::main().dispatch([] {
&gt; +        WTF::dispatchFunctionsFromMainThread();
&gt; +    });

This also seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661331</commentid>
    <comment_count>5</comment_count>
      <attachid>401572</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-06-10 13:35:33 -0700</bug_when>
    <thetext>Comment on attachment 401572
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:107
&gt;&gt;&gt; +        });
&gt;&gt; 
&gt;&gt; Since this is just calling a function can we write this instead?
&gt;&gt; 
&gt;&gt;     RunLoop::web().dispatch(WTF::dispatchFunctionsFromMainThread);
&gt;&gt; 
&gt;&gt; I suspect it might be slightly more efficient as well.
&gt; 
&gt; This seems wrong? The function is supposed to dispatch on the main thread.

Never mind, confused by the confusion of the past.

&gt;&gt;&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:119
&gt;&gt;&gt; +    });
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; This also seems wrong.

Never mind, confused by the confusion of the past.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661333</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-06-10 13:42:26 -0700</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/RunLoop.h:66
&gt; &gt;      WTF_EXPORT_PRIVATE static void initializeMainRunLoop();
&gt; &gt; +#if USE(WEB_THREAD)
&gt; &gt; +    WTF_EXPORT_PRIVATE static void initializeWebRunLoop();
&gt; &gt; +#endif
&gt; 
&gt; Funny that these initialize functions include the word &quot;RunLoop&quot; but the
&gt; getter functions don’t. Seems we don’t need to repeat the words &quot;run loop&quot;.

Why don&apos;t I make this style change in a follow-up patch, since it touches 26 more places in the code.

&gt; &gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:104
&gt; &gt;      if (mainThreadPthread) {
&gt; 
&gt; I don’t understand this if statement. (Not new, but I find it really
&gt; mysterious.)

It indicates that the web thread has been initialized. Paradoxically, we call the web thread the main thread. Another style change I&apos;d like to take up in a follow-up patch.

&gt; &gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:107
&gt; &gt; +        RunLoop::web().dispatch([] {
&gt; &gt; +            WTF::dispatchFunctionsFromMainThread();
&gt; &gt; +        });
&gt; 
&gt; Since this is just calling a function can we write this instead?
&gt; 
&gt;     RunLoop::web().dispatch(WTF::dispatchFunctionsFromMainThread);
&gt; 
&gt; I suspect it might be slightly more efficient as well.
&gt; 
&gt; &gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:119
&gt; &gt; +    RunLoop::main().dispatch([] {
&gt; &gt; +        WTF::dispatchFunctionsFromMainThread();
&gt; &gt; +    });
&gt; 
&gt; Ditto.

Okeedokee.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661335</commentid>
    <comment_count>7</comment_count>
      <attachid>401572</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 13:43:47 -0700</bug_when>
    <thetext>Comment on attachment 401572
Patch

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

&gt;&gt; Source/WTF/wtf/cocoa/MainThreadCocoa.mm:104
&gt;&gt;      if (mainThreadPthread) {
&gt; 
&gt; I don’t understand this if statement. (Not new, but I find it really mysterious.)

On reflection it seems to be that the idea here is that if &quot;mainThreadPthread&quot; is null, then we haven’t initialized the web thread yet, and so we should run on the main thread. Which seems like peculiar behavior to me, but not nonsensical behavior.

If this is our intent, then for greater clarity this should check if sWebThread is non-null, rather than checking if mainThreadPthread is non-null. An even better alternative in the future might be to ask RunLoop if initializeWebRunLoop has been called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661343</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-06-10 13:49:38 -0700</bug_when>
    <thetext>&gt; An even better alternative in the future might be to ask RunLoop
&gt; if initializeWebRunLoop has been called.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661346</commentid>
    <comment_count>9</comment_count>
      <attachid>401578</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-06-10 13:53:05 -0700</bug_when>
    <thetext>Created attachment 401578
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661348</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-10 13:53:54 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661352</commentid>
    <comment_count>11</comment_count>
      <attachid>401581</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-06-10 14:10:07 -0700</bug_when>
    <thetext>Created attachment 401581
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661362</commentid>
    <comment_count>12</comment_count>
      <attachid>401581</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 14:38:46 -0700</bug_when>
    <thetext>Comment on attachment 401581
Patch for landing

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

&gt; Source/WTF/ChangeLog:14
&gt; +        CFRunLoopSource1 in the future.

CFRunLoopSource1 looks like a typo here, but I assume it’s just something I don’t understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661379</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-10 15:03:17 -0700</bug_when>
    <thetext>Committed r262863: &lt;https://trac.webkit.org/changeset/262863&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401581.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661381</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-10 15:04:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/64226370&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401572</attachid>
            <date>2020-06-10 12:54:46 -0700</date>
            <delta_ts>2020-06-10 14:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213043-20200610125445.patch</filename>
            <type>text/plain</type>
            <size>5277</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjI4NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA2LTEwICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgc29tZSBvZiBSdW5Mb29wIGFuZCBjYWxs
T25NYWluVGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTMwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBieSBTaWh1aSBMaXUuCisKKyAgICAgICAgRnJvbSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODc0LCB0aGlzIGlzIHRoZSBzdWJzZXQKKyAgICAg
ICAgb2YgU2lodWkncyBwYXRjaCB0aGF0IHVuaWZpZXMgc29tZSBvZiBSdW5Mb29wIGFuZCBjYWxs
T25NYWluVGhyZWFkLgorCisgICAgICAgIE15IGdvYWwgaXMgdG8gc2ltcGxpZnkgdGhlIGNvZGUs
IGFuZCBzaHJpbmsgdGhlIGRpZmYgd2hlbiB0ZXN0aW5nCisgICAgICAgIENGUnVuTG9vcFNvdXJj
ZTEgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIHd0Zi9SdW5Mb29wLmNwcDoKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6aW5pdGlhbGl6ZVdlYlJ1bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjp3ZWIpOgorICAgICAgICAqIHd0Zi9SdW5Mb29wLmg6CisgICAgICAgICogd3RmL2NvY29h
L01haW5UaHJlYWRDb2NvYS5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQ
bGF0Zm9ybSk6CisgICAgICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5U
aHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkKToKKyAgICAgICAgKC1b
SlNXVEZNYWluVGhyZWFkQ2FsbGVyIGNhbGxdKTogRGVsZXRlZC4KKwogMjAyMC0wNi0wOSAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb3NfbG9n
IGluc3RlYWQgb2YgYXNsX2xvZwpJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAJKHJldmlzaW9uIDI2Mjg1MCkK
KysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw5IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogc3RhdGljIFJ1bkxvb3AqIHNfbWFpblJ1bkxvb3A7
CisjaWYgVVNFKFdFQl9USFJFQUQpCitzdGF0aWMgUnVuTG9vcCogc193ZWJSdW5Mb29wOworI2Vu
ZGlmCiAKIC8vIEhlbHBlciBjbGFzcyBmb3IgVGhyZWFkU3BlY2lmaWNEYXRhLgogY2xhc3MgUnVu
TG9vcDo6SG9sZGVyIHsKQEAgLTY5LDYgKzcyLDE5IEBAIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4o
KQogICAgIHJldHVybiAqc19tYWluUnVuTG9vcDsKIH0KIAorI2lmIFVTRShXRUJfVEhSRUFEKQor
dm9pZCBSdW5Mb29wOjppbml0aWFsaXplV2ViUnVuTG9vcCgpCit7CisgICAgc193ZWJSdW5Mb29w
ID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKK30KKworUnVuTG9vcCYgUnVuTG9vcDo6d2ViKCkKK3sK
KyAgICBBU1NFUlQoc193ZWJSdW5Mb29wKTsKKyAgICByZXR1cm4gKnNfd2ViUnVuTG9vcDsKK30K
KyNlbmRpZgorCiBib29sIFJ1bkxvb3A6OmlzTWFpbigpCiB7CiAgICAgQVNTRVJUKHNfbWFpblJ1
bkxvb3ApOwpJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAkocmV2aXNpb24gMjYyODUwKQorKysgU291cmNlL1dURi93
dGYvUnVuTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSwxNSBAQCBwdWJsaWM6CiAg
ICAgLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGV4Y2VwdCBmb3IgdGhl
IE1hYyBwbGF0Zm9ybSwgd2hlcmUgaXQKICAgICAvLyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRo
cmVhZCkuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOworI2lmIFVTRShXRUJfVEhSRUFEKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBpbml0aWFsaXplV2ViUnVuTG9vcCgpOworI2VuZGlmCiAKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJ1bkxvb3AmIGN1cnJlbnQoKTsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJ1bkxvb3AmIG1haW4oKTsKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJ1bkxvb3AmIHdlYigpOworI2VuZGlmCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzTWFpbigpOwogICAgIH5SdW5Mb29wKCkgZmlu
YWw7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NvY29hL01haW5UaHJlYWRDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHJldmlz
aW9uIDI2Mjg1MCkKKysrIFNvdXJjZS9XVEYvd3RmL2NvY29hL01haW5UaHJlYWRDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Cisj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2lt
cG9ydCA8d3RmL1RocmVhZGluZy5oPgogCkBAIC00MywxOSArNDQsNiBAQAogI2ltcG9ydCA8d3Rm
L2lvcy9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAotQGludGVyZmFjZSBKU1dURk1haW5UaHJl
YWRDYWxsZXIgOiBOU09iamVjdAotLSAodm9pZCljYWxsOwotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gSlNXVEZNYWluVGhyZWFkQ2FsbGVyCi0KLS0gKHZvaWQpY2FsbAotewotICAgIFdURjo6ZGlz
cGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpOwotfQotCi1AZW5kCi0KICNkZWZpbmUgTE9H
X0NIQU5ORUxfUFJFRklYIExvZwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTY2LDggKzU0LDYgQEAg
V1RGTG9nQ2hhbm5lbCBMb2dUaHJlYWRpbmcgPSB7IFdURkxvZ0NoYQogV1RGTG9nQ2hhbm5lbCBM
b2dUaHJlYWRpbmcgPSB7IFdURkxvZ0NoYW5uZWxTdGF0ZTo6T24sICJUaHJlYWRpbmciLCBXVEZM
b2dMZXZlbDo6RXJyb3IsIExPR19DSEFOTkVMX1dFQktJVF9TVUJTWVNURU0sIE9TX0xPR19ERUZB
VUxUIH07CiAjZW5kaWYKIAotCi1zdGF0aWMgSlNXVEZNYWluVGhyZWFkQ2FsbGVyKiBzdGF0aWNN
YWluVGhyZWFkQ2FsbGVyOwogc3RhdGljIGJvb2wgaXNUaW1lclBvc3RlZDsgLy8gVGhpcyBpcyBv
bmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KIAogI2lmIFVTRShXRUJfVEhSRUFEKQpA
QCAtODQsOSArNzAsNiBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQogICAg
IGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFRocmVh
ZGluZywgIldlYktpdCBUaHJlYWRpbmcgVmlvbGF0aW9uIC0gaW5pdGlhbCB1c2Ugb2YgV2ViS2l0
IGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLiIpOwogICAgIEFTU0VSVChwdGhyZWFkX21haW5fbnAo
KSk7Ci0KLSAgICBBU1NFUlQoIXN0YXRpY01haW5UaHJlYWRDYWxsZXIpOwotICAgIHN0YXRpY01h
aW5UaHJlYWRDYWxsZXIgPSBbW0pTV1RGTWFpblRocmVhZENhbGxlciBhbGxvY10gaW5pdF07CiB9
CiAKIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQq
KQpAQCAtMTEyLDggKzk1LDYgQEAgc3RhdGljIHZvaWQgcG9zdFRpbWVyKCkKIAogdm9pZCBzY2hl
ZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQoc3RhdGlj
TWFpblRocmVhZENhbGxlcik7Ci0gICAgCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgaWYgKGlz
V2ViVGhyZWFkKCkpIHsKICAgICAgICAgcG9zdFRpbWVyKCk7CkBAIC0xMjEsNyArMTAyLDkgQEAg
dm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZQogICAgIH0KIAogICAgIGlm
IChtYWluVGhyZWFkUHRocmVhZCkgewotICAgICAgICBbc3RhdGljTWFpblRocmVhZENhbGxlciBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGNhbGwpIG9uVGhyZWFkOm1haW5UaHJlYWROU1RocmVh
ZCB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25lOk5PXTsKKyAgICAgICAgUnVuTG9vcDo6d2Vi
KCkuZGlzcGF0Y2goW10geworICAgICAgICAgICAgV1RGOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21N
YWluVGhyZWFkKCk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UK
QEAgLTEzMSw3ICsxMTQsOSBAQCB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5U
aHJlCiAgICAgfQogI2VuZGlmCiAKLSAgICBbc3RhdGljTWFpblRocmVhZENhbGxlciBwZXJmb3Jt
U2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKGNhbGwpIHdpdGhPYmplY3Q6bmlsIHdhaXRV
bnRpbERvbmU6Tk9dOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CisgICAgICAg
IFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpOworICAgIH0pOwogfQogCiB2
b2lkIGRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKHZv
aWQgKF5ibG9jaykoKSkKQEAgLTE5Niw2ICsxODEsNyBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJl
YWQoKQogICAgICAgICBtYWluVGhyZWFkUHRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwogICAgICAg
ICBtYWluVGhyZWFkTlNUaHJlYWQgPSBbTlNUaHJlYWQgY3VycmVudFRocmVhZF07CiAgICAgICAg
IHNXZWJUaHJlYWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7CisgICAgICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVXZWJSdW5Mb29wKCk7CiAgICAgfSk7CiB9CiAK
</data>
<flag name="review"
          id="416979"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401578</attachid>
            <date>2020-06-10 13:53:05 -0700</date>
            <delta_ts>2020-06-10 14:10:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-213043-20200610135304.patch</filename>
            <type>text/plain</type>
            <size>5256</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjI4NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA2LTEwICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBCdWlsZCBjYWxsT25NYWluVGhyZWFk
IG9uIFdURjo6UnVuTG9vcCByYXRoZXIgdGhhbiBvbiBOU09iamVjdCBtZXRob2RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBi
eSBTaWh1aSBMaXUuCisKKyAgICAgICAgRnJvbSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyODc0LCB0aGlzIGlzIHRoZSBzdWJzZXQKKyAgICAgICAgb2YgU2lodWkn
cyBwYXRjaCB0aGF0IHVuaWZpZXMgc29tZSBvZiBSdW5Mb29wIGFuZCBjYWxsT25NYWluVGhyZWFk
LgorCisgICAgICAgIE15IGdvYWwgaXMgdG8gc2ltcGxpZnkgdGhlIGNvZGUsIGFuZCBzaHJpbmsg
dGhlIGRpZmYgd2hlbiB0ZXN0aW5nCisgICAgICAgIENGUnVuTG9vcFNvdXJjZTEgaW4gdGhlIGZ1
dHVyZS4KKworICAgICAgICAqIHd0Zi9SdW5Mb29wLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6aW5pdGlhbGl6ZVdlYlJ1bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3ZWIpOgor
ICAgICAgICAqIHd0Zi9SdW5Mb29wLmg6CisgICAgICAgICogd3RmL2NvY29hL01haW5UaHJlYWRD
b2NvYS5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6Cisg
ICAgICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkKToKKyAgICAgICAgKC1bSlNXVEZNYWluVGhy
ZWFkQ2FsbGVyIGNhbGxdKTogRGVsZXRlZC4KKwogMjAyMC0wNi0wOSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb3NfbG9nIGluc3RlYWQgb2Yg
YXNsX2xvZwpJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAJKHJldmlzaW9uIDI2Mjg1MCkKKysrIFNvdXJjZS9X
VEYvd3RmL1J1bkxvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw5IEBACiBuYW1l
c3BhY2UgV1RGIHsKIAogc3RhdGljIFJ1bkxvb3AqIHNfbWFpblJ1bkxvb3A7CisjaWYgVVNFKFdF
Ql9USFJFQUQpCitzdGF0aWMgUnVuTG9vcCogc193ZWJSdW5Mb29wOworI2VuZGlmCiAKIC8vIEhl
bHBlciBjbGFzcyBmb3IgVGhyZWFkU3BlY2lmaWNEYXRhLgogY2xhc3MgUnVuTG9vcDo6SG9sZGVy
IHsKQEAgLTY5LDYgKzcyLDE5IEBAIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQogICAgIHJldHVy
biAqc19tYWluUnVuTG9vcDsKIH0KIAorI2lmIFVTRShXRUJfVEhSRUFEKQordm9pZCBSdW5Mb29w
Ojppbml0aWFsaXplV2ViUnVuTG9vcCgpCit7CisgICAgc193ZWJSdW5Mb29wID0gJlJ1bkxvb3A6
OmN1cnJlbnQoKTsKK30KKworUnVuTG9vcCYgUnVuTG9vcDo6d2ViKCkKK3sKKyAgICBBU1NFUlQo
c193ZWJSdW5Mb29wKTsKKyAgICByZXR1cm4gKnNfd2ViUnVuTG9vcDsKK30KKyNlbmRpZgorCiBi
b29sIFJ1bkxvb3A6OmlzTWFpbigpCiB7CiAgICAgQVNTRVJUKHNfbWFpblJ1bkxvb3ApOwpJbmRl
eDogU291cmNlL1dURi93dGYvUnVuTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1J1bkxvb3AuaAkocmV2aXNpb24gMjYyODUwKQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSwxNSBAQCBwdWJsaWM6CiAgICAgLy8gTXVzdCBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGV4Y2VwdCBmb3IgdGhlIE1hYyBwbGF0Zm9y
bSwgd2hlcmUgaXQKICAgICAvLyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCkuCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYWluUnVuTG9vcCgpOwor
I2lmIFVTRShXRUJfVEhSRUFEKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
bml0aWFsaXplV2ViUnVuTG9vcCgpOworI2VuZGlmCiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJ1bkxvb3AmIGN1cnJlbnQoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJ1bkxvb3AmIG1haW4oKTsKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJ1bkxvb3AmIHdlYigpOworI2VuZGlmCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGlzTWFpbigpOwogICAgIH5SdW5Mb29wKCkgZmluYWw7CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2NvY29hL01haW5UaHJlYWRDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHJldmlzaW9uIDI2Mjg1MCkK
KysrIFNvdXJjZS9XVEYvd3RmL2NvY29hL01haW5UaHJlYWRDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
UnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2ltcG9ydCA8d3RmL1Ro
cmVhZGluZy5oPgogCkBAIC00MywxOSArNDQsNiBAQAogI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3Jl
VGhyZWFkLmg+CiAjZW5kaWYKIAotQGludGVyZmFjZSBKU1dURk1haW5UaHJlYWRDYWxsZXIgOiBO
U09iamVjdAotLSAodm9pZCljYWxsOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gSlNXVEZNYWlu
VGhyZWFkQ2FsbGVyCi0KLS0gKHZvaWQpY2FsbAotewotICAgIFdURjo6ZGlzcGF0Y2hGdW5jdGlv
bnNGcm9tTWFpblRocmVhZCgpOwotfQotCi1AZW5kCi0KICNkZWZpbmUgTE9HX0NIQU5ORUxfUFJF
RklYIExvZwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTY2LDggKzU0LDYgQEAgV1RGTG9nQ2hhbm5l
bCBMb2dUaHJlYWRpbmcgPSB7IFdURkxvZ0NoYQogV1RGTG9nQ2hhbm5lbCBMb2dUaHJlYWRpbmcg
PSB7IFdURkxvZ0NoYW5uZWxTdGF0ZTo6T24sICJUaHJlYWRpbmciLCBXVEZMb2dMZXZlbDo6RXJy
b3IsIExPR19DSEFOTkVMX1dFQktJVF9TVUJTWVNURU0sIE9TX0xPR19ERUZBVUxUIH07CiAjZW5k
aWYKIAotCi1zdGF0aWMgSlNXVEZNYWluVGhyZWFkQ2FsbGVyKiBzdGF0aWNNYWluVGhyZWFkQ2Fs
bGVyOwogc3RhdGljIGJvb2wgaXNUaW1lclBvc3RlZDsgLy8gVGhpcyBpcyBvbmx5IGFjY2Vzc2Vk
IG9uIHRoZSBtYWluIHRocmVhZC4KIAogI2lmIFVTRShXRUJfVEhSRUFEKQpAQCAtODQsOSArNzAs
NiBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQogICAgIGlmICghcHRocmVh
ZF9tYWluX25wKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFRocmVhZGluZywgIldlYktp
dCBUaHJlYWRpbmcgVmlvbGF0aW9uIC0gaW5pdGlhbCB1c2Ugb2YgV2ViS2l0IGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLiIpOwogICAgIEFTU0VSVChwdGhyZWFkX21haW5fbnAoKSk7Ci0KLSAgICBB
U1NFUlQoIXN0YXRpY01haW5UaHJlYWRDYWxsZXIpOwotICAgIHN0YXRpY01haW5UaHJlYWRDYWxs
ZXIgPSBbW0pTV1RGTWFpblRocmVhZENhbGxlciBhbGxvY10gaW5pdF07CiB9CiAKIHN0YXRpYyB2
b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQqKQpAQCAtMTEyLDgg
Kzk1LDYgQEAgc3RhdGljIHZvaWQgcG9zdFRpbWVyKCkKIAogdm9pZCBzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQoc3RhdGljTWFpblRocmVhZENh
bGxlcik7Ci0gICAgCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgaWYgKGlzV2ViVGhyZWFkKCkp
IHsKICAgICAgICAgcG9zdFRpbWVyKCk7CkBAIC0xMjEsNyArMTAyLDcgQEAgdm9pZCBzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZQogICAgIH0KIAogICAgIGlmIChtYWluVGhyZWFk
UHRocmVhZCkgewotICAgICAgICBbc3RhdGljTWFpblRocmVhZENhbGxlciBwZXJmb3JtU2VsZWN0
b3I6QHNlbGVjdG9yKGNhbGwpIG9uVGhyZWFkOm1haW5UaHJlYWROU1RocmVhZCB3aXRoT2JqZWN0
Om5pbCB3YWl0VW50aWxEb25lOk5PXTsKKyAgICAgICAgUnVuTG9vcDo6d2ViKCkuZGlzcGF0Y2go
ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZWxzZQpAQCAtMTMxLDcgKzExMiw3IEBAIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9u
c09uTWFpblRocmUKICAgICB9CiAjZW5kaWYKIAotICAgIFtzdGF0aWNNYWluVGhyZWFkQ2FsbGVy
IHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IoY2FsbCkgd2l0aE9iamVjdDpu
aWwgd2FpdFVudGlsRG9uZTpOT107CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGRpc3Bh
dGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpOwogfQogCiB2b2lkIGRpc3BhdGNoQXN5bmNPbk1h
aW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKHZvaWQgKF5ibG9jaykoKSkKQEAgLTE5
Niw2ICsxNzcsNyBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWQoKQogICAgICAgICBtYWluVGhy
ZWFkUHRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwogICAgICAgICBtYWluVGhyZWFkTlNUaHJlYWQg
PSBbTlNUaHJlYWQgY3VycmVudFRocmVhZF07CiAgICAgICAgIHNXZWJUaHJlYWQgPSAmVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgICAgIFJ1bkxvb3A6OmluaXRpYWxpemVXZWJSdW5Mb29wKCk7CiAg
ICAgfSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="416987"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401581</attachid>
            <date>2020-06-10 14:10:07 -0700</date>
            <delta_ts>2020-06-10 15:03:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-213043-20200610141006.patch</filename>
            <type>text/plain</type>
            <size>5254</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjI4NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA2LTEwICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBCdWlsZCBjYWxsT25NYWluVGhyZWFk
IG9uIFdURjo6UnVuTG9vcCByYXRoZXIgdGhhbiBvbiBOU09iamVjdCBtZXRob2RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgT3JpZ2luYWwgcGF0Y2ggYnkg
U2lodWkgTGl1LgorCisgICAgICAgIEZyb20gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjg3NCwgdGhpcyBpcyB0aGUgc3Vic2V0CisgICAgICAgIG9mIFNpaHVpJ3Mg
cGF0Y2ggdGhhdCB1bmlmaWVzIHNvbWUgb2YgUnVuTG9vcCBhbmQgY2FsbE9uTWFpblRocmVhZC4K
KworICAgICAgICBNeSBnb2FsIGlzIHRvIHNpbXBsaWZ5IHRoZSBjb2RlLCBhbmQgc2hyaW5rIHRo
ZSBkaWZmIHdoZW4gdGVzdGluZworICAgICAgICBDRlJ1bkxvb3BTb3VyY2UxIGluIHRoZSBmdXR1
cmUuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OmluaXRpYWxpemVXZWJSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2ViKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWluVGhyZWFkQ29j
b2EubW06CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOgorICAg
ICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZCk6CisgICAgICAgICgtW0pTV1RGTWFpblRocmVh
ZENhbGxlciBjYWxsXSk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMDkgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG9zX2xvZyBpbnN0ZWFkIG9mIGFz
bF9sb2cKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAyNjI4NTApCisrKyBTb3VyY2UvV1RG
L3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNw
YWNlIFdURiB7CiAKIHN0YXRpYyBSdW5Mb29wKiBzX21haW5SdW5Mb29wOworI2lmIFVTRShXRUJf
VEhSRUFEKQorc3RhdGljIFJ1bkxvb3AqIHNfd2ViUnVuTG9vcDsKKyNlbmRpZgogCiAvLyBIZWxw
ZXIgY2xhc3MgZm9yIFRocmVhZFNwZWNpZmljRGF0YS4KIGNsYXNzIFJ1bkxvb3A6OkhvbGRlciB7
CkBAIC02OSw2ICs3MiwxOSBAQCBSdW5Mb29wJiBSdW5Mb29wOjptYWluKCkKICAgICByZXR1cm4g
KnNfbWFpblJ1bkxvb3A7CiB9CiAKKyNpZiBVU0UoV0VCX1RIUkVBRCkKK3ZvaWQgUnVuTG9vcDo6
aW5pdGlhbGl6ZVdlYlJ1bkxvb3AoKQoreworICAgIHNfd2ViUnVuTG9vcCA9ICZSdW5Mb29wOjpj
dXJyZW50KCk7Cit9CisKK1J1bkxvb3AmIFJ1bkxvb3A6OndlYigpCit7CisgICAgQVNTRVJUKHNf
d2ViUnVuTG9vcCk7CisgICAgcmV0dXJuICpzX3dlYlJ1bkxvb3A7Cit9CisjZW5kaWYKKwogYm9v
bCBSdW5Mb29wOjppc01haW4oKQogewogICAgIEFTU0VSVChzX21haW5SdW5Mb29wKTsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wLmgJKHJldmlzaW9uIDI2Mjg1MCkKKysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAko
d29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsMTUgQEAgcHVibGljOgogICAgIC8vIE11c3QgYmUg
Y2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIChleGNlcHQgZm9yIHRoZSBNYWMgcGxhdGZvcm0s
IHdoZXJlIGl0CiAgICAgLy8gY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQpLgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKyNp
ZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVdlYlJ1bkxvb3AoKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSdW5Mb29wJiBjdXJyZW50KCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
dW5Mb29wJiBtYWluKCk7CisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSdW5Mb29wJiB3ZWIoKTsKKyNlbmRpZgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBpc01haW4oKTsKICAgICB+UnVuTG9vcCgpIGZpbmFsOwogCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvY29jb2EvTWFpblRocmVhZENvY29hLm1tCShyZXZpc2lvbiAyNjI4NTApCisr
KyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1
bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNpbXBvcnQgPHd0Zi9UaHJl
YWRpbmcuaD4KIApAQCAtNDMsMTkgKzQ0LDYgQEAKICNpbXBvcnQgPHd0Zi9pb3MvV2ViQ29yZVRo
cmVhZC5oPgogI2VuZGlmCiAKLUBpbnRlcmZhY2UgSlNXVEZNYWluVGhyZWFkQ2FsbGVyIDogTlNP
YmplY3QKLS0gKHZvaWQpY2FsbDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEpTV1RGTWFpblRo
cmVhZENhbGxlcgotCi0tICh2b2lkKWNhbGwKLXsKLSAgICBXVEY6OmRpc3BhdGNoRnVuY3Rpb25z
RnJvbU1haW5UaHJlYWQoKTsKLX0KLQotQGVuZAotCiAjZGVmaW5lIExPR19DSEFOTkVMX1BSRUZJ
WCBMb2cKIAogbmFtZXNwYWNlIFdURiB7CkBAIC02Niw4ICs1NCw2IEBAIFdURkxvZ0NoYW5uZWwg
TG9nVGhyZWFkaW5nID0geyBXVEZMb2dDaGEKIFdURkxvZ0NoYW5uZWwgTG9nVGhyZWFkaW5nID0g
eyBXVEZMb2dDaGFubmVsU3RhdGU6Ok9uLCAiVGhyZWFkaW5nIiwgV1RGTG9nTGV2ZWw6OkVycm9y
LCBMT0dfQ0hBTk5FTF9XRUJLSVRfU1VCU1lTVEVNLCBPU19MT0dfREVGQVVMVCB9OwogI2VuZGlm
CiAKLQotc3RhdGljIEpTV1RGTWFpblRocmVhZENhbGxlciogc3RhdGljTWFpblRocmVhZENhbGxl
cjsKIHN0YXRpYyBib29sIGlzVGltZXJQb3N0ZWQ7IC8vIFRoaXMgaXMgb25seSBhY2Nlc3NlZCBv
biB0aGUgbWFpbiB0aHJlYWQuCiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKQEAgLTg0LDkgKzcwLDYg
QEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKICAgICBpZiAoIXB0aHJlYWRf
bWFpbl9ucCgpKQogICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChUaHJlYWRpbmcsICJXZWJLaXQg
VGhyZWFkaW5nIFZpb2xhdGlvbiAtIGluaXRpYWwgdXNlIG9mIFdlYktpdCBmcm9tIGEgc2Vjb25k
YXJ5IHRocmVhZC4iKTsKICAgICBBU1NFUlQocHRocmVhZF9tYWluX25wKCkpOwotCi0gICAgQVNT
RVJUKCFzdGF0aWNNYWluVGhyZWFkQ2FsbGVyKTsKLSAgICBzdGF0aWNNYWluVGhyZWFkQ2FsbGVy
ID0gW1tKU1dURk1haW5UaHJlYWRDYWxsZXIgYWxsb2NdIGluaXRdOwogfQogCiBzdGF0aWMgdm9p
ZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lkKikKQEAgLTExMiw4ICs5
NSw2IEBAIHN0YXRpYyB2b2lkIHBvc3RUaW1lcigpCiAKIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1
bmN0aW9uc09uTWFpblRocmVhZCgpCiB7Ci0gICAgQVNTRVJUKHN0YXRpY01haW5UaHJlYWRDYWxs
ZXIpOwotICAgIAogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIGlmIChpc1dlYlRocmVhZCgpKSB7
CiAgICAgICAgIHBvc3RUaW1lcigpOwpAQCAtMTIxLDcgKzEwMiw3IEBAIHZvaWQgc2NoZWR1bGVE
aXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmUKICAgICB9CiAKICAgICBpZiAobWFpblRocmVhZFB0
aHJlYWQpIHsKLSAgICAgICAgW3N0YXRpY01haW5UaHJlYWRDYWxsZXIgcGVyZm9ybVNlbGVjdG9y
OkBzZWxlY3RvcihjYWxsKSBvblRocmVhZDptYWluVGhyZWFkTlNUaHJlYWQgd2l0aE9iamVjdDpu
aWwgd2FpdFVudGlsRG9uZTpOT107CisgICAgICAgIFJ1bkxvb3A6OndlYigpLmRpc3BhdGNoKGRp
c3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2Vsc2UKQEAgLTEzMSw3ICsxMTIsNyBAQCB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNP
bk1haW5UaHJlCiAgICAgfQogI2VuZGlmCiAKLSAgICBbc3RhdGljTWFpblRocmVhZENhbGxlciBw
ZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKGNhbGwpIHdpdGhPYmplY3Q6bmls
IHdhaXRVbnRpbERvbmU6Tk9dOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChkaXNwYXRj
aEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKTsKIH0KIAogdm9pZCBkaXNwYXRjaEFzeW5jT25NYWlu
VGhyZWFkV2l0aFdlYlRocmVhZExvY2tJZk5lZWRlZCh2b2lkICheYmxvY2spKCkpCkBAIC0xOTYs
NiArMTc3LDcgQEAgdm9pZCBpbml0aWFsaXplV2ViVGhyZWFkKCkKICAgICAgICAgbWFpblRocmVh
ZFB0aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKICAgICAgICAgbWFpblRocmVhZE5TVGhyZWFkID0g
W05TVGhyZWFkIGN1cnJlbnRUaHJlYWRdOwogICAgICAgICBzV2ViVGhyZWFkID0gJlRocmVhZDo6
Y3VycmVudCgpOworICAgICAgICBSdW5Mb29wOjppbml0aWFsaXplV2ViUnVuTG9vcCgpOwogICAg
IH0pOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>