<?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>198079</bug_id>
          
          <creation_ts>2019-05-21 11:47:11 -0700</creation_ts>
          <short_desc>[WHLSL] ReadModifyWriteExpression always has a result and new value expression</short_desc>
          <delta_ts>2019-05-24 09:43:33 -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>WebGPU</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1537938</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 11:47:11 -0700</bug_when>
    <thetext>we branch on it being there in Visitor. Seems unnecessary, since we always set it after we create a ReadModifyWriteExpression. We should probably make it a ctor parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537939</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 11:48:21 -0700</bug_when>
    <thetext>Same with newValueExpression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537944</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 11:52:26 -0700</bug_when>
    <thetext>Spoke with Myles. We should assert it&apos;s non-null. We can&apos;t make it an argument to ctor though because of some circular references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538855</commentid>
    <comment_count>3</comment_count>
      <attachid>370533</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-23 17:26:37 -0700</bug_when>
    <thetext>Created attachment 370533
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538881</commentid>
    <comment_count>4</comment_count>
      <attachid>370533</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-23 18:48:34 -0700</bug_when>
    <thetext>Comment on attachment 370533
patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:90
&gt; -    Expression* newValueExpression() { return m_newValueExpression ? &amp;*m_newValueExpression : nullptr; }
&gt; -    Expression* resultExpression() { return m_resultExpression ? &amp;*m_resultExpression : nullptr; }
&gt; +    Expression&amp; newValueExpression() { ASSERT(m_newValueExpression); return *m_newValueExpression; }
&gt; +    Expression&amp; resultExpression() { ASSERT(m_resultExpression); return *m_resultExpression; }

I think it&apos;s better style to break this up into two lines

Expression&amp; newValueExpression()
{
    ASSERT(m_newValueExpression);
    return *m_newValueExpression;
}

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:97
&gt; +        m_newValueExpression.reset();

Is this line necessary?

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:103
&gt; +        m_resultExpression.reset();

Is this line necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538953</commentid>
    <comment_count>5</comment_count>
      <attachid>370533</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-24 00:34:12 -0700</bug_when>
    <thetext>Comment on attachment 370533
patch

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

Thanks for the review.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:90
&gt;&gt; +    Expression&amp; resultExpression() { ASSERT(m_resultExpression); return *m_resultExpression; }
&gt; 
&gt; I think it&apos;s better style to break this up into two lines
&gt; 
&gt; Expression&amp; newValueExpression()
&gt; {
&gt;     ASSERT(m_newValueExpression);
&gt;     return *m_newValueExpression;
&gt; }

Will do

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:97
&gt;&gt; +        m_newValueExpression.reset();
&gt; 
&gt; Is this line necessary?

Strictly speaking, no, given the context this is called in. However, it felt a bit odd to leave the optional engaged even after moving the contents of a UniqueRef out of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538954</commentid>
    <comment_count>6</comment_count>
      <attachid>370567</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-24 00:34:49 -0700</bug_when>
    <thetext>Created attachment 370567
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538959</commentid>
    <comment_count>7</comment_count>
      <attachid>370567</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-24 01:19:13 -0700</bug_when>
    <thetext>Comment on attachment 370567
patch for landing

Clearing flags on attachment: 370567

Committed r245745: &lt;https://trac.webkit.org/changeset/245745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538960</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-24 01:19:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538961</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-24 01:20:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/51099940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538992</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-24 09:43:33 -0700</bug_when>
    <thetext>*** Bug 198170 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370533</attachid>
            <date>2019-05-23 17:26:37 -0700</date>
            <delta_ts>2019-05-24 00:34:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10033</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA1LTIzICBTYWFtIGJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbiBhbHdheXMgaGFzIGEgcmVzdWx0IGFuZCBuZXcgdmFsdWUgZXhwcmVzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0J3Mg
bm90IHByZXRlbmQgaXQgbWlnaHQgbm90LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bmV3VmFsdWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb246OnJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6dGFrZU5ld1ZhbHVlRXhwcmVzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjp0YWtl
UmVzdWx0RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xB
U1REdW1wZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVER1bXBlcjo6dmlzaXQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6UHJvcGVydHlSZXNvbHZlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Vmlz
aXRvcjo6dmlzaXQpOgorCiAyMDE5LTA1LTIzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBPdmVybGF5OiBydWxlcnMgc2hvdWxkIHN3
aXRjaCBzaWRlcyBpZiB0aGV5IGludGVyc2VjdCB0aGUgaGlnaGxpZ2h0ZWQgbm9kZShzKSBzbyB0
aGV5IGRvbid0IG9ic3RydWN0IGFueSBjb250ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCShyZXZpc2lv
biAyNDU3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFT
VER1bXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpCiAKICAgICB2aXNpdChuZXdWYXJpYWJsZS5n
ZXQoKSk7CiAgICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KCpyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKKyAgICB2aXNpdChyZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKICAgICBtX291dC5wcmludCgi
LCAiKTsKIAogICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkp
OwpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJlYWRNb2Rp
ZnlXcmkKICAgICB2aXNpdChuZXdWYXJpYWJsZS5nZXQoKSk7CiAgICAgbV9vdXQucHJpbnQoIiwg
Iik7CiAKLSAgICB2aXNpdCgqcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNz
aW9uKCkpOworICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVz
c2lvbigpKTsKICAgICBtX291dC5wcmludCgiKSIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAJKHJldmlz
aW9uIDI0NTcyNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlCiAKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2NiBGaWd1cmUgb3V0IHdoYXQgdG8g
ZG8gd2l0aCB0aGUgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbidzIEFub255bW91c1ZhcmlhYmxl
cy4KIAotICAgIGF1dG8gbmV3VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oKnJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOworICAgIGF1dG8gbmV3VmFs
dWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdW
YWx1ZUV4cHJlc3Npb24oKSk7CiAgICAgaWYgKCFuZXdWYWx1ZUluZm8pCiAgICAgICAgIHJldHVy
bjsKIApAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZWFkTW9k
aWZ5V3JpdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0SW5mbyA9
IHJlY3Vyc2VBbmRHZXRJbmZvKCpyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJl
c3Npb24oKSk7CisgICAgYXV0byByZXN1bHRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwogICAgIGlmICghcmVzdWx0
SW5mbykKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAJ
KHJldmlzaW9uIDI0NTcyNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw4ICs0NzQs
NyBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAgICAgICAg
ICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2OSBJcyB0aGlzIHJpZ2h0PwogCiAgICAgICAgICAg
ICBhdXRvIG5ld1ZhbHVlRXhwcmVzc2lvbiA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24udGFr
ZU5ld1ZhbHVlRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgQVNTRVJUKG5ld1ZhbHVlRXhwcmVz
c2lvbik7IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MTcwIFJlbGF4IHRoaXMgY29uc3RyYWludC4KLSAgICAgICAgICAgIGF1dG8gYXNzaWdubWVu
dEV4cHJlc3Npb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KExl
eGVyOjpUb2tlbihyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9yaWdpbigpKSwgV1RGTW92ZSh2
YXJpYWJsZVJlZmVyZW5jZSksIFdURk1vdmUoKm5ld1ZhbHVlRXhwcmVzc2lvbikpOworICAgICAg
ICAgICAgYXV0byBhc3NpZ25tZW50RXhwcmVzc2lvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbj4oTGV4ZXI6OlRva2VuKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
b3JpZ2luKCkpLCBXVEZNb3ZlKHZhcmlhYmxlUmVmZXJlbmNlKSwgV1RGTW92ZShuZXdWYWx1ZUV4
cHJlc3Npb24pKTsKICAgICAgICAgICAgIGFzc2lnbm1lbnRFeHByZXNzaW9uLT5zZXRUeXBlKGJh
c2VUeXBlLT5jbG9uZSgpKTsKICAgICAgICAgICAgIGFzc2lnbm1lbnRFeHByZXNzaW9uLT5zZXRU
eXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7CiAKQEAgLTUwMyw5ICs1MDIsOCBAQCB2
b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIHJlc3VsdEV4cHJlc3Npb24gPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnRh
a2VSZXN1bHRFeHByZXNzaW9uKCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHRFeHByZXNzaW9uKTsg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNzAg
QmUgcmVzaWxpZW50IHRvIHRoaXMgYmVpbmcgbnVsbC4KLSAgICAgICAgYXV0byB0eXBlID0gKCpy
ZXN1bHRFeHByZXNzaW9uKS0+cmVzb2x2ZWRUeXBlKCkuY2xvbmUoKTsKLSAgICAgICAgZXhwcmVz
c2lvbnMuYXBwZW5kKFdURk1vdmUoKnJlc3VsdEV4cHJlc3Npb24pKTsKKyAgICAgICAgYXV0byB0
eXBlID0gcmVzdWx0RXhwcmVzc2lvbi0+cmVzb2x2ZWRUeXBlKCkuY2xvbmUoKTsKKyAgICAgICAg
ZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbikpOwogCiAgICAgICAg
IFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+IG9sZFZhcmlhYmxlRGVjbGFyYXRp
b24gPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnRha2VPbGRWYWx1ZSgpOwogICAgICAgICBV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYXJpYWJsZURlY2xhcmF0aW9u
ID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi50YWtlTmV3VmFsdWUoKTsKQEAgLTU0OSw4ICs1
NDcsNyBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAgICAg
ICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUg
eyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2OSBJcyB0aGlzIHJpZ2h0PwogCiAgICAgICAg
ICAgICBhdXRvIG5ld1ZhbHVlRXhwcmVzc2lvbiA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
dGFrZU5ld1ZhbHVlRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgQVNTRVJUKG5ld1ZhbHVlRXhw
cmVzc2lvbik7IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4MTcwIFJlbGF4IHRoaXMgY29uc3RyYWludAotICAgICAgICAgICAgYXV0byBhc3NpZ25t
ZW50RXhwcmVzc2lvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4o
TGV4ZXI6OlRva2VuKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkub3JpZ2lu
KCkpLCBXVEZNb3ZlKHZhcmlhYmxlUmVmZXJlbmNlKSwgV1RGTW92ZSgqbmV3VmFsdWVFeHByZXNz
aW9uKSk7CisgICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnRFeHByZXNzaW9uID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihMZXhlcjo6VG9rZW4ocmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5vcmlnaW4oKSksIFdURk1vdmUodmFyaWFibGVSZWZl
cmVuY2UpLCBXVEZNb3ZlKG5ld1ZhbHVlRXhwcmVzc2lvbikpOwogICAgICAgICAgICAgYXNzaWdu
bWVudEV4cHJlc3Npb24tPnNldFR5cGUocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFs
dWUoKS5yZXNvbHZlZFR5cGUoKS5jbG9uZSgpKTsKICAgICAgICAgICAgIGFzc2lnbm1lbnRFeHBy
ZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7CiAKQEAgLTU2Nyw5
ICs1NjQsOCBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAg
c2ltcGxpZnlMZWZ0VmFsdWUobW9kaWZ5UmVzdWx0LT5pbm5lckxlZnRWYWx1ZSk7CiAKICAgICBh
dXRvIHJlc3VsdEV4cHJlc3Npb24gPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnRha2VSZXN1
bHRFeHByZXNzaW9uKCk7Ci0gICAgQVNTRVJUKHJlc3VsdEV4cHJlc3Npb24pOyAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE3MCBCZSByZXNpbGll
bnQgdG8gdGhpcyBiZWluZyBudWxsLgotICAgIGF1dG8gdHlwZSA9ICgqcmVzdWx0RXhwcmVzc2lv
biktPnJlc29sdmVkVHlwZSgpLmNsb25lKCk7Ci0gICAgbW9kaWZ5UmVzdWx0LT5leHByZXNzaW9u
cy5hcHBlbmQoV1RGTW92ZSgqcmVzdWx0RXhwcmVzc2lvbikpOworICAgIGF1dG8gdHlwZSA9IHJl
c3VsdEV4cHJlc3Npb24tPnJlc29sdmVkVHlwZSgpLmNsb25lKCk7CisgICAgbW9kaWZ5UmVzdWx0
LT5leHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShyZXN1bHRFeHByZXNzaW9uKSk7CiAKICAgICBV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBvbGRWYXJpYWJsZURlY2xhcmF0aW9u
ID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi50YWtlT2xkVmFsdWUoKTsKICAgICBVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYXJpYWJsZURlY2xhcmF0aW9uID0gcmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi50YWtlTmV3VmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkocmV2
aXNpb24gMjQ1NzI3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM2LDEwICs1MzYsOCBAQCB2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlCiAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwogICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVlKCkpOwogICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkpOwotICAg
IGlmIChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFs
dWVFeHByZXNzaW9uKCkpOwotICAgIGlmIChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3Vs
dEV4cHJlc3Npb24oKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOworICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Np
b24oKSk7CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYg
dGVybmFyeUV4cHJlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDU3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDEzICs4NiwyMyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvbiYg
bGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xhcmF0
aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xh
cmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KLSAgICBFeHByZXNzaW9u
KiBuZXdWYWx1ZUV4cHJlc3Npb24oKSB7IHJldHVybiBtX25ld1ZhbHVlRXhwcmVzc2lvbiA/ICYq
bV9uZXdWYWx1ZUV4cHJlc3Npb24gOiBudWxscHRyOyB9Ci0gICAgRXhwcmVzc2lvbiogcmVzdWx0
RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fcmVzdWx0RXhwcmVzc2lvbiA/ICYqbV9yZXN1bHRFeHBy
ZXNzaW9uIDogbnVsbHB0cjsgfQorICAgIEV4cHJlc3Npb24mIG5ld1ZhbHVlRXhwcmVzc2lvbigp
IHsgQVNTRVJUKG1fbmV3VmFsdWVFeHByZXNzaW9uKTsgcmV0dXJuICptX25ld1ZhbHVlRXhwcmVz
c2lvbjsgfQorICAgIEV4cHJlc3Npb24mIHJlc3VsdEV4cHJlc3Npb24oKSB7IEFTU0VSVChtX3Jl
c3VsdEV4cHJlc3Npb24pOyByZXR1cm4gKm1fcmVzdWx0RXhwcmVzc2lvbjsgfQogICAgIFVuaXF1
ZVJlZjxFeHByZXNzaW9uPiB0YWtlTGVmdFZhbHVlKCkgeyByZXR1cm4gV1RGTW92ZShtX2xlZnRW
YWx1ZSk7IH0KICAgICBVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4gdGFrZU9sZFZhbHVl
KCkgeyByZXR1cm4gV1RGTW92ZShtX29sZFZhbHVlKTsgfQogICAgIFVuaXF1ZVJlZjxWYXJpYWJs
ZURlY2xhcmF0aW9uPiB0YWtlTmV3VmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fbmV3VmFsdWUp
OyB9Ci0gICAgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiB0YWtlTmV3VmFsdWVFeHBy
ZXNzaW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX25ld1ZhbHVlRXhwcmVzc2lvbik7IH0KLSAgICBP
cHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IHRha2VSZXN1bHRFeHByZXNzaW9uKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3Jlc3VsdEV4cHJlc3Npb24pOyB9CisgICAgVW5pcXVlUmVmPEV4cHJl
c3Npb24+IHRha2VOZXdWYWx1ZUV4cHJlc3Npb24oKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBXVEZNb3ZlKG1fbmV3VmFsdWVFeHByZXNzaW9uLnZhbHVlKCkpOworICAgICAgICBtX25l
d1ZhbHVlRXhwcmVzc2lvbi5yZXNldCgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gdGFrZVJlc3VsdEV4cHJlc3Npb24oKQorICAgIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBXVEZNb3ZlKG1fcmVzdWx0RXhwcmVzc2lvbi52YWx1ZSgp
KTsKKyAgICAgICAgbV9yZXN1bHRFeHByZXNzaW9uLnJlc2V0KCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4u
IEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gV1RGOjptYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7
Cg==
</data>
<flag name="review"
          id="386492"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370567</attachid>
            <date>2019-05-24 00:34:49 -0700</date>
            <delta_ts>2019-05-24 01:19:13 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>10089</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA1LTIzICBTYWFtIGJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbiBhbHdheXMgaGFzIGEgcmVzdWx0IGFuZCBuZXcgdmFsdWUgZXhwcmVzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgTGV0J3Mg
bm90IHByZXRlbmQgaXQgbWlnaHQgbm90LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bmV3VmFsdWVFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb246OnJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6dGFrZU5ld1ZhbHVlRXhwcmVzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjp0YWtl
UmVzdWx0RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xB
U1REdW1wZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVER1bXBlcjo6dmlzaXQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6UHJvcGVydHlSZXNvbHZlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Vmlz
aXRvcjo6dmlzaXQpOgorCiAyMDE5LTA1LTIzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBPdmVybGF5OiBydWxlcnMgc2hvdWxkIHN3
aXRjaCBzaWRlcyBpZiB0aGV5IGludGVyc2VjdCB0aGUgaGlnaGxpZ2h0ZWQgbm9kZShzKSBzbyB0
aGV5IGRvbid0IG9ic3RydWN0IGFueSBjb250ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCShyZXZpc2lv
biAyNDU3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFT
VER1bXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpCiAKICAgICB2aXNpdChuZXdWYXJpYWJsZS5n
ZXQoKSk7CiAgICAgbV9vdXQucHJpbnQoIiA9ICIpOwotICAgIHZpc2l0KCpyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKKyAgICB2aXNpdChyZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKTsKICAgICBtX291dC5wcmludCgi
LCAiKTsKIAogICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkp
OwpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJlYWRNb2Rp
ZnlXcmkKICAgICB2aXNpdChuZXdWYXJpYWJsZS5nZXQoKSk7CiAgICAgbV9vdXQucHJpbnQoIiwg
Iik7CiAKLSAgICB2aXNpdCgqcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNz
aW9uKCkpOworICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVz
c2lvbigpKTsKICAgICBtX291dC5wcmludCgiKSIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAJKHJldmlz
aW9uIDI0NTcyNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlCiAKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2NiBGaWd1cmUgb3V0IHdoYXQgdG8g
ZG8gd2l0aCB0aGUgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbidzIEFub255bW91c1ZhcmlhYmxl
cy4KIAotICAgIGF1dG8gbmV3VmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8oKnJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOworICAgIGF1dG8gbmV3VmFs
dWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdW
YWx1ZUV4cHJlc3Npb24oKSk7CiAgICAgaWYgKCFuZXdWYWx1ZUluZm8pCiAgICAgICAgIHJldHVy
bjsKIApAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZWFkTW9k
aWZ5V3JpdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0SW5mbyA9
IHJlY3Vyc2VBbmRHZXRJbmZvKCpyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJl
c3Npb24oKSk7CisgICAgYXV0byByZXN1bHRJbmZvID0gcmVjdXJzZUFuZEdldEluZm8ocmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOwogICAgIGlmICghcmVzdWx0
SW5mbykKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAJ
KHJldmlzaW9uIDI0NTcyNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw4ICs0NzQs
NyBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAgICAgICAg
ICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUgeyBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2OSBJcyB0aGlzIHJpZ2h0PwogCiAgICAgICAgICAg
ICBhdXRvIG5ld1ZhbHVlRXhwcmVzc2lvbiA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24udGFr
ZU5ld1ZhbHVlRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgQVNTRVJUKG5ld1ZhbHVlRXhwcmVz
c2lvbik7IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MTcwIFJlbGF4IHRoaXMgY29uc3RyYWludC4KLSAgICAgICAgICAgIGF1dG8gYXNzaWdubWVu
dEV4cHJlc3Npb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KExl
eGVyOjpUb2tlbihyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9yaWdpbigpKSwgV1RGTW92ZSh2
YXJpYWJsZVJlZmVyZW5jZSksIFdURk1vdmUoKm5ld1ZhbHVlRXhwcmVzc2lvbikpOworICAgICAg
ICAgICAgYXV0byBhc3NpZ25tZW50RXhwcmVzc2lvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbj4oTGV4ZXI6OlRva2VuKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
b3JpZ2luKCkpLCBXVEZNb3ZlKHZhcmlhYmxlUmVmZXJlbmNlKSwgV1RGTW92ZShuZXdWYWx1ZUV4
cHJlc3Npb24pKTsKICAgICAgICAgICAgIGFzc2lnbm1lbnRFeHByZXNzaW9uLT5zZXRUeXBlKGJh
c2VUeXBlLT5jbG9uZSgpKTsKICAgICAgICAgICAgIGFzc2lnbm1lbnRFeHByZXNzaW9uLT5zZXRU
eXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7CiAKQEAgLTUwMyw5ICs1MDIsOCBAQCB2
b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIHJlc3VsdEV4cHJlc3Npb24gPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnRh
a2VSZXN1bHRFeHByZXNzaW9uKCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHRFeHByZXNzaW9uKTsg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNzAg
QmUgcmVzaWxpZW50IHRvIHRoaXMgYmVpbmcgbnVsbC4KLSAgICAgICAgYXV0byB0eXBlID0gKCpy
ZXN1bHRFeHByZXNzaW9uKS0+cmVzb2x2ZWRUeXBlKCkuY2xvbmUoKTsKLSAgICAgICAgZXhwcmVz
c2lvbnMuYXBwZW5kKFdURk1vdmUoKnJlc3VsdEV4cHJlc3Npb24pKTsKKyAgICAgICAgYXV0byB0
eXBlID0gcmVzdWx0RXhwcmVzc2lvbi0+cmVzb2x2ZWRUeXBlKCkuY2xvbmUoKTsKKyAgICAgICAg
ZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUocmVzdWx0RXhwcmVzc2lvbikpOwogCiAgICAgICAg
IFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+IG9sZFZhcmlhYmxlRGVjbGFyYXRp
b24gPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnRha2VPbGRWYWx1ZSgpOwogICAgICAgICBV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYXJpYWJsZURlY2xhcmF0aW9u
ID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi50YWtlTmV3VmFsdWUoKTsKQEAgLTU0OSw4ICs1
NDcsNyBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAgICAg
ICAgICB2YXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpMZWZ0VmFsdWUg
eyBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkIH0pOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2OSBJcyB0aGlzIHJpZ2h0PwogCiAgICAgICAg
ICAgICBhdXRvIG5ld1ZhbHVlRXhwcmVzc2lvbiA9IHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
dGFrZU5ld1ZhbHVlRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgQVNTRVJUKG5ld1ZhbHVlRXhw
cmVzc2lvbik7IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4MTcwIFJlbGF4IHRoaXMgY29uc3RyYWludAotICAgICAgICAgICAgYXV0byBhc3NpZ25t
ZW50RXhwcmVzc2lvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4o
TGV4ZXI6OlRva2VuKHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkub3JpZ2lu
KCkpLCBXVEZNb3ZlKHZhcmlhYmxlUmVmZXJlbmNlKSwgV1RGTW92ZSgqbmV3VmFsdWVFeHByZXNz
aW9uKSk7CisgICAgICAgICAgICBhdXRvIGFzc2lnbm1lbnRFeHByZXNzaW9uID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihMZXhlcjo6VG9rZW4ocmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5vcmlnaW4oKSksIFdURk1vdmUodmFyaWFibGVSZWZl
cmVuY2UpLCBXVEZNb3ZlKG5ld1ZhbHVlRXhwcmVzc2lvbikpOwogICAgICAgICAgICAgYXNzaWdu
bWVudEV4cHJlc3Npb24tPnNldFR5cGUocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFs
dWUoKS5yZXNvbHZlZFR5cGUoKS5jbG9uZSgpKTsKICAgICAgICAgICAgIGFzc2lnbm1lbnRFeHBy
ZXNzaW9uLT5zZXRUeXBlQW5ub3RhdGlvbihBU1Q6OlJpZ2h0VmFsdWUoKSk7CiAKQEAgLTU2Nyw5
ICs1NjQsOCBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVhZE1vCiAgICAg
c2ltcGxpZnlMZWZ0VmFsdWUobW9kaWZ5UmVzdWx0LT5pbm5lckxlZnRWYWx1ZSk7CiAKICAgICBh
dXRvIHJlc3VsdEV4cHJlc3Npb24gPSByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnRha2VSZXN1
bHRFeHByZXNzaW9uKCk7Ci0gICAgQVNTRVJUKHJlc3VsdEV4cHJlc3Npb24pOyAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE3MCBCZSByZXNpbGll
bnQgdG8gdGhpcyBiZWluZyBudWxsLgotICAgIGF1dG8gdHlwZSA9ICgqcmVzdWx0RXhwcmVzc2lv
biktPnJlc29sdmVkVHlwZSgpLmNsb25lKCk7Ci0gICAgbW9kaWZ5UmVzdWx0LT5leHByZXNzaW9u
cy5hcHBlbmQoV1RGTW92ZSgqcmVzdWx0RXhwcmVzc2lvbikpOworICAgIGF1dG8gdHlwZSA9IHJl
c3VsdEV4cHJlc3Npb24tPnJlc29sdmVkVHlwZSgpLmNsb25lKCk7CisgICAgbW9kaWZ5UmVzdWx0
LT5leHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShyZXN1bHRFeHByZXNzaW9uKSk7CiAKICAgICBV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBvbGRWYXJpYWJsZURlY2xhcmF0aW9u
ID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi50YWtlT2xkVmFsdWUoKTsKICAgICBVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPiBuZXdWYXJpYWJsZURlY2xhcmF0aW9uID0gcmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi50YWtlTmV3VmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAkocmV2
aXNpb24gMjQ1NzI3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM2LDEwICs1MzYsOCBAQCB2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6UmVhZE1vZGlmeVdyaXRlCiAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkpOwogICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm9sZFZhbHVlKCkpOwogICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkpOwotICAg
IGlmIChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKQotICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFs
dWVFeHByZXNzaW9uKCkpOwotICAgIGlmIChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3Vs
dEV4cHJlc3Npb24oKSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOworICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Np
b24oKSk7CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYg
dGVybmFyeUV4cHJlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAyNDU3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDEzICs4NiwzMSBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvbiYg
bGVmdFZhbHVlKCkgeyByZXR1cm4gbV9sZWZ0VmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xhcmF0
aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KICAgICBWYXJpYWJsZURlY2xh
cmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KLSAgICBFeHByZXNzaW9u
KiBuZXdWYWx1ZUV4cHJlc3Npb24oKSB7IHJldHVybiBtX25ld1ZhbHVlRXhwcmVzc2lvbiA/ICYq
bV9uZXdWYWx1ZUV4cHJlc3Npb24gOiBudWxscHRyOyB9Ci0gICAgRXhwcmVzc2lvbiogcmVzdWx0
RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fcmVzdWx0RXhwcmVzc2lvbiA/ICYqbV9yZXN1bHRFeHBy
ZXNzaW9uIDogbnVsbHB0cjsgfQorICAgIEV4cHJlc3Npb24mIG5ld1ZhbHVlRXhwcmVzc2lvbigp
CisgICAgeworICAgICAgICBBU1NFUlQobV9uZXdWYWx1ZUV4cHJlc3Npb24pOworICAgICAgICBy
ZXR1cm4gKm1fbmV3VmFsdWVFeHByZXNzaW9uOworICAgIH0KKyAgICBFeHByZXNzaW9uJiByZXN1
bHRFeHByZXNzaW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jlc3VsdEV4cHJlc3Npb24p
OworICAgICAgICByZXR1cm4gKm1fcmVzdWx0RXhwcmVzc2lvbjsKKyAgICB9CiAgICAgVW5pcXVl
UmVmPEV4cHJlc3Npb24+IHRha2VMZWZ0VmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fbGVmdFZh
bHVlKTsgfQogICAgIFVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPiB0YWtlT2xkVmFsdWUo
KSB7IHJldHVybiBXVEZNb3ZlKG1fb2xkVmFsdWUpOyB9CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxl
RGVjbGFyYXRpb24+IHRha2VOZXdWYWx1ZSgpIHsgcmV0dXJuIFdURk1vdmUobV9uZXdWYWx1ZSk7
IH0KLSAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IHRha2VOZXdWYWx1ZUV4cHJl
c3Npb24oKSB7IHJldHVybiBXVEZNb3ZlKG1fbmV3VmFsdWVFeHByZXNzaW9uKTsgfQotICAgIE9w
dGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gdGFrZVJlc3VsdEV4cHJlc3Npb24oKSB7IHJl
dHVybiBXVEZNb3ZlKG1fcmVzdWx0RXhwcmVzc2lvbik7IH0KKyAgICBVbmlxdWVSZWY8RXhwcmVz
c2lvbj4gdGFrZU5ld1ZhbHVlRXhwcmVzc2lvbigpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IFdURk1vdmUobV9uZXdWYWx1ZUV4cHJlc3Npb24udmFsdWUoKSk7CisgICAgICAgIG1fbmV3
VmFsdWVFeHByZXNzaW9uLnJlc2V0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiB0YWtlUmVzdWx0RXhwcmVzc2lvbigpCisgICAgewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IFdURk1vdmUobV9yZXN1bHRFeHByZXNzaW9uLnZhbHVlKCkp
OworICAgICAgICBtX3Jlc3VsdEV4cHJlc3Npb24ucmVzZXQoKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4g
QXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBXVEY6Om1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>