<?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>181350</bug_id>
          
          <creation_ts>2018-01-05 15:24:50 -0800</creation_ts>
          <short_desc>Add ability to disable indexed property masking for testing</short_desc>
          <delta_ts>2018-01-05 16:37:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</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="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1386309</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-01-05 15:24:50 -0800</bug_when>
    <thetext>Add the ability to disable indexed property access to simplify testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386313</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-05 15:26:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/36328842&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386334</commentid>
    <comment_count>2</comment_count>
      <attachid>330599</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-01-05 15:41:11 -0800</bug_when>
    <thetext>Created attachment 330599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386345</commentid>
    <comment_count>3</comment_count>
      <attachid>330599</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-01-05 15:56:06 -0800</bug_when>
    <thetext>Comment on attachment 330599
Patch

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

r=me with a nit.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13159
&gt; +        if (m_indexMaskingMode == IndexMaskingEnabled) {
&gt; +            LValue mask = m_out.load32(base, m_heaps.JSObject_butterflyMask);
&gt; +            offset = m_out.shl(m_out.zeroExtPtr(m_out.bitAnd(mask, index)), m_out.constIntPtr(logElementSize(type)));
&gt; +        } else
&gt; +            offset = m_out.shl(m_out.zeroExtPtr(index), m_out.constIntPtr(logElementSize(type)));

I think you can just make this.

if (m_indexMaskingMode == IndexMaskingEnabled)
    index = m_out.bitAnd(index, m_out.load32(base, m_heaps.JSObject_butterflyMask));
LValue offset = m_out.shl(m_out.zeroExtPtr(index), m_out.constIntPtr(logElementSize(type)));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386349</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-01-05 16:02:16 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #3)
&gt; Comment on attachment 330599 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=330599&amp;action=review
&gt; 
&gt; r=me with a nit.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13159
&gt; &gt; +        if (m_indexMaskingMode == IndexMaskingEnabled) {
&gt; &gt; +            LValue mask = m_out.load32(base, m_heaps.JSObject_butterflyMask);
&gt; &gt; +            offset = m_out.shl(m_out.zeroExtPtr(m_out.bitAnd(mask, index)), m_out.constIntPtr(logElementSize(type)));
&gt; &gt; +        } else
&gt; &gt; +            offset = m_out.shl(m_out.zeroExtPtr(index), m_out.constIntPtr(logElementSize(type)));
&gt; 
&gt; I think you can just make this.
&gt; 
&gt; if (m_indexMaskingMode == IndexMaskingEnabled)
&gt;     index = m_out.bitAnd(index, m_out.load32(base,
&gt; m_heaps.JSObject_butterflyMask));
&gt; LValue offset = m_out.shl(m_out.zeroExtPtr(index),
&gt; m_out.constIntPtr(logElementSize(type)));

Sure.  Done locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386360</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-01-05 16:37:10 -0800</bug_when>
    <thetext>Committed r226474: &lt;https://trac.webkit.org/changeset/226474&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330599</attachid>
            <date>2018-01-05 15:41:11 -0800</date>
            <delta_ts>2018-01-05 15:56:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>181350.patch</filename>
            <type>text/plain</type>
            <size>14640</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2NDY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE4LTAxLTA1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhYmlsaXR5IHRvIGRpc2FibGUgaW5kZXhlZCBwcm9wZXJ0eSBtYXNraW5nIGZvciB0
ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODEzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWRlIHRoZSBtYXNraW5nIG9mIGluZGV4ZWQgcHJvcGVydGllcyBydW50aW1lIGNvbnRyb2xsYWJs
ZSB2aWEgYSBuZXcgSlNDOjpPcHRpb24KKyAgICAgICAgbmFtZWQgZGlzYWJsZVNwZWN0cmVNaXRp
Z2F0aW9ucy4gIFRoaXMgaXMgZG9uZSB0byB0ZXN0IHRoZSBlZmZpY2FjeSBvZiB0aGF0IG1pdGln
YXRpb24uCisKKyAgICAgICAgVGhlIG5ldyBvcHRpb24gaGFzIGEgZ2VuZXJpYyBuYW1lIGFzIGl0
IHdpbGwgcHJvYmFibHkgYmUgdXNlZCB0byBkaXNhYmxlIGZ1dHVyZSBtaXRpZ2F0aW9ucy4KKwor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OlNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6bG9hZEZyb21JbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6Okxvd2VyREZHVG9CMyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6Om1hc2tlZEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6cG9pbnRlckludG9UeXBlZEFycmF5KToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpKSVQpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRE
b3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnMuaDoKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIp
OgorCiAyMDE4LTAxLTA0ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFR5cGVkQXJyYXlzIGFuZCBXYXNtIHNob3VsZCB1c2UgaW5kZXggbWFza2luZy4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMjI2NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0Niw3ICsyNzQ2LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAg
ICAgICAgICAgICBtX2ppdC5hbmQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCBwcm9wZXJ0eVJlZyk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1faW5kZXhNYXNraW5nTW9kZSA9PSBJbmRleE1hc2tpbmdFbmFi
bGVkKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5hbmQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCBw
cm9wZXJ0eVJlZyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlN
b2RlKCkuaXNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+
YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzKTsKQEAgLTI3ODEsNyArMjc4
Miw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogCi0g
ICAgICAgICAgICBtX2ppdC5hbmQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCBwcm9wZXJ0eVJlZyk7Cisg
ICAgICAgICAgICBpZiAobV9pbmRleE1hc2tpbmdNb2RlID09IEluZGV4TWFza2luZ0VuYWJsZWQp
CisgICAgICAgICAgICAgICAgbV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZywgSlNPYmplY3Q6OmJ1dHRlcmZseUluZGV4aW5nTWFza09mZnNldCgpKSwgcHJvcGVydHlS
ZWcpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVz
dWx0UmVnKTsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRSZWcpKTsKICAgICAgICAgICAgIApAQCAtMjgx
Miw3ICsyODE0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAotICAgICAgICAgICAgICAgIG1faml0LmFuZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0OjpidXR0ZXJmbHlJbmRl
eGluZ01hc2tPZmZzZXQoKSksIHByb3BlcnR5UmVnKTsKKyAgICAgICAgICAgICAgICBpZiAobV9p
bmRleE1hc2tpbmdNb2RlID09IEluZGV4TWFza2luZ0VuYWJsZWQpCisgICAgICAgICAgICAgICAg
ICAgIG1faml0LmFuZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0
OjpidXR0ZXJmbHlJbmRleGluZ01hc2tPZmZzZXQoKSksIHByb3BlcnR5UmVnKTsKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0UmVn
KTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkp
CiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQsIHJlc3VsdFJlZywgcmVzdWx0UmVnKSk7CkBAIC0yODQwLDcgKzI4
NDMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAot
ICAgICAgICAgICAgbV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNPYmplY3Q6OmJ1dHRlcmZseUluZGV4aW5nTWFza09mZnNldCgpKSwgcHJvcGVydHlSZWcpOwor
ICAgICAgICAgICAgaWYgKG1faW5kZXhNYXNraW5nTW9kZSA9PSBJbmRleE1hc2tpbmdFbmFibGVk
KQorICAgICAgICAgICAgICAgIG1faml0LmFuZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTT2JqZWN0OjpidXR0ZXJmbHlJbmRleGluZ01hc2tPZmZzZXQoKSksIHByb3BlcnR5
UmVnKTsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCB0ZW1wUmVnKTsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB0ZW1wUmVnLCB0
ZW1wUmVnKSk7CiAgICAgICAgICAgICBib3hEb3VibGUodGVtcFJlZywgcmVzdWx0UmVnKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAyMjY0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBTcGVjdWxhdGl2
ZUpJVDo6U3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsCiAgICAgLCBtX2N1cnJlbnROb2RlKDApCiAg
ICAgLCBtX2xhc3RHZW5lcmF0ZWROb2RlKExhc3ROb2RlVHlwZSkKICAgICAsIG1faW5kZXhJbkJs
b2NrKDApCisgICAgLCBtX2luZGV4TWFza2luZ01vZGUoT3B0aW9uczo6ZGlzYWJsZVNwZWN0cmVN
aXRpZ2F0aW9ucygpID8gSW5kZXhNYXNraW5nRGlzYWJsZWQgOiBJbmRleE1hc2tpbmdFbmFibGVk
KQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3Vu
dCgpKQogICAgICwgbV9zdGF0ZShtX2ppdC5ncmFwaCgpKQogICAgICwgbV9pbnRlcnByZXRlciht
X2ppdC5ncmFwaCgpLCBtX3N0YXRlKQpAQCAtMjg1Niw3ICsyODU3LDggQEAgSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGbwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpsb2Fk
RnJvbUludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBzdG9yYWdlUmVnLCBHUFJS
ZWcgcHJvcGVydHlSZWcsIEdQUlJlZyByZXN1bHRSZWcsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7
Ci0gICAgbV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmpl
Y3Q6OmJ1dHRlcmZseUluZGV4aW5nTWFza09mZnNldCgpKSwgcHJvcGVydHlSZWcpOworICAgIGlm
IChtX2luZGV4TWFza2luZ01vZGUgPT0gSW5kZXhNYXNraW5nRW5hYmxlZCkKKyAgICAgICAgbV9q
aXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmplY3Q6OmJ1dHRl
cmZseUluZGV4aW5nTWFza09mZnNldCgpKSwgcHJvcGVydHlSZWcpOwogICAgIHN3aXRjaCAoZWxl
bWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CiAgICAgICAgIGlmIChpc1NpZ25lZCh0eXBl
KSkKQEAgLTMxNTgsNyArMzE2MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uRmwKICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEZQUlJlZyByZXN1
bHRSZWcgPSByZXN1bHQuZnByKCk7CiAgICAgZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhub2Rl
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZyk7Ci0gICAgbV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNPYmplY3Q6OmJ1dHRlcmZseUluZGV4aW5nTWFza09mZnNldCgp
KSwgcHJvcGVydHlSZWcpOworICAgIGlmIChtX2luZGV4TWFza2luZ01vZGUgPT0gSW5kZXhNYXNr
aW5nRW5hYmxlZCkKKyAgICAgICAgbV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNPYmplY3Q6OmJ1dHRlcmZseUluZGV4aW5nTWFza09mZnNldCgpKSwgcHJvcGVy
dHlSZWcpOwogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDQ6CiAg
ICAgICAgIG1faml0LmxvYWRGbG9hdChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VS
ZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNGb3VyKSwgcmVzdWx0UmVnKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDIyNjQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMxNyw2ICszMzE3LDExIEBAIHB1YmxpYzoK
ICAgICBOb2RlKiBtX2N1cnJlbnROb2RlOwogICAgIE5vZGVUeXBlIG1fbGFzdEdlbmVyYXRlZE5v
ZGU7CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CisKKyAgICBlbnVtIEluZGV4TWFza2lu
Z01vZGUgeyBJbmRleE1hc2tpbmdEaXNhYmxlZCwgSW5kZXhNYXNraW5nRW5hYmxlZCB9OworICAg
IAorICAgIEluZGV4TWFza2luZ01vZGUgbV9pbmRleE1hc2tpbmdNb2RlOworCiAgICAgLy8gVmly
dHVhbCBhbmQgcGh5c2ljYWwgcmVnaXN0ZXIgbWFwcy4KICAgICBWZWN0b3I8R2VuZXJhdGlvbklu
Zm8sIDMyPiBtX2dlbmVyYXRpb25JbmZvOwogICAgIFJlZ2lzdGVyQmFuazxHUFJJbmZvPiBtX2dw
cnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyMjY0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw2ICsxNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9hdmFpbGFiaWxpdHlDYWxjdWxhdG9yKG1fZ3JhcGgpCiAgICAgICAgICwg
bV9zdGF0ZShzdGF0ZS5ncmFwaCkKICAgICAgICAgLCBtX2ludGVycHJldGVyKHN0YXRlLmdyYXBo
LCBtX3N0YXRlKQorICAgICAgICAsIG1faW5kZXhNYXNraW5nTW9kZShPcHRpb25zOjpkaXNhYmxl
U3BlY3RyZU1pdGlnYXRpb25zKCkgPyBJbmRleE1hc2tpbmdEaXNhYmxlZCA6IEluZGV4TWFza2lu
Z0VuYWJsZWQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTExMDcxLDYgKzExMDcyLDkgQEAgcHJp
dmF0ZToKIAogICAgIFR5cGVkUG9pbnRlciBtYXNrZWRJbmRleChJbmRleGVkQWJzdHJhY3RIZWFw
JiBoZWFwLCBMVmFsdWUgc3RvcmFnZSwgTFZhbHVlIGluZGV4LCBMVmFsdWUgYmFzZU9iamVjdCwg
RWRnZSBlZGdlLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkKICAgICB7CisgICAgICAgIGlmIChtX2lu
ZGV4TWFza2luZ01vZGUgPT0gSW5kZXhNYXNraW5nRGlzYWJsZWQpCisgICAgICAgICAgICByZXR1
cm4gYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBlZGdlLCBvZmZzZXQpOworCiAgICAg
ICAgIExWYWx1ZSBtYXNrID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzIoYmFzZU9iamVj
dCwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHlNYXNrKSk7CiAgICAgICAgIHJldHVybiBtX291
dC5iYXNlSW5kZXgoCiAgICAgICAgICAgICBoZWFwLCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRy
KGluZGV4KSwgcHJvdmVuVmFsdWUoZWRnZSksIG9mZnNldCwgbWFzayk7CkBAIC0xMzE0Niw4ICsx
MzE1MCwxNCBAQCBwcml2YXRlOgogICAgIAogICAgIFR5cGVkUG9pbnRlciBwb2ludGVySW50b1R5
cGVkQXJyYXkoTFZhbHVlIGJhc2UsIExWYWx1ZSBzdG9yYWdlLCBMVmFsdWUgaW5kZXgsIFR5cGVk
QXJyYXlUeXBlIHR5cGUpCiAgICAgewotICAgICAgICBMVmFsdWUgbWFzayA9IG1fb3V0LmxvYWQz
MihiYXNlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseU1hc2spOwotICAgICAgICBMVmFsdWUg
b2Zmc2V0ID0gbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIobV9vdXQuYml0QW5kKG1hc2ssIGlu
ZGV4KSksIG1fb3V0LmNvbnN0SW50UHRyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSk7CisgICAgICAg
IExWYWx1ZSBvZmZzZXQ7CisKKyAgICAgICAgaWYgKG1faW5kZXhNYXNraW5nTW9kZSA9PSBJbmRl
eE1hc2tpbmdFbmFibGVkKSB7CisgICAgICAgICAgICBMVmFsdWUgbWFzayA9IG1fb3V0LmxvYWQz
MihiYXNlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseU1hc2spOworICAgICAgICAgICAgb2Zm
c2V0ID0gbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIobV9vdXQuYml0QW5kKG1hc2ssIGluZGV4
KSksIG1fb3V0LmNvbnN0SW50UHRyKGxvZ0VsZW1lbnRTaXplKHR5cGUpKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgb2Zmc2V0ID0gbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIoaW5k
ZXgpLCBtX291dC5jb25zdEludFB0cihsb2dFbGVtZW50U2l6ZSh0eXBlKSkpOworCiAgICAgICAg
IHJldHVybiBUeXBlZFBvaW50ZXIoCiAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9w
ZXJ0aWVzLAogICAgICAgICAgICAgbV9vdXQuYWRkKApAQCAtMTU3MDMsNiArMTU3MTMsMTAgQEAg
cHJpdmF0ZToKICAgICBERkc6OkJhc2ljQmxvY2sqIG1fbmV4dEhpZ2hCbG9jazsKICAgICBMQmFz
aWNCbG9jayBtX25leHRMb3dCbG9jazsKIAorICAgIGVudW0gSW5kZXhNYXNraW5nTW9kZSB7IElu
ZGV4TWFza2luZ0Rpc2FibGVkLCBJbmRleE1hc2tpbmdFbmFibGVkIH07CisKKyAgICBJbmRleE1h
c2tpbmdNb2RlIG1faW5kZXhNYXNraW5nTW9kZTsKKwogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47
CiAgICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7CiAgICAgTm9kZSogbV9ub2RlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjI2NDY2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIEpJ
VDo6SklUKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHUKICAgICAsIG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKCp2bSkKICAgICAsIG1fY2FuQmVPcHRpbWl6ZWQoZmFsc2UpCiAgICAg
LCBtX3Nob3VsZEVtaXRQcm9maWxpbmcoZmFsc2UpCisgICAgLCBtX3Nob3VsZFVzZUluZGV4TWFz
a2luZyhPcHRpb25zOjpkaXNhYmxlU3BlY3RyZU1pdGlnYXRpb25zKCkgPyBmYWxzZSA6IHRydWUp
CiAgICAgLCBtX2xvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0KGxvb3BPU1JFbnRyeUJ5dGVjb2Rl
T2Zmc2V0KQogewogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjY0
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NDQsNiArOTQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9jYW5CZU9w
dGltaXplZDsKICAgICAgICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkT3JJbmxpbmVkOwogICAgICAg
ICBib29sIG1fc2hvdWxkRW1pdFByb2ZpbGluZzsKKyAgICAgICAgYm9vbCBtX3Nob3VsZFVzZUlu
ZGV4TWFza2luZzsKICAgICAgICAgdW5zaWduZWQgbV9sb29wT1NSRW50cnlCeXRlY29kZU9mZnNl
dCB7IDAgfTsKICAgICB9IEpJVF9DTEFTU19BTElHTk1FTlQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMjY0
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
RG91YmxlTG9hZChJbnN0cnUKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIs
IEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKLSAgICBhbmQzMihBZGRyZXNz
KHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCByZWdUMSk7
CisgICAgaWYgKG1fc2hvdWxkVXNlSW5kZXhNYXNraW5nKQorICAgICAgICBhbmQzMihBZGRyZXNz
KHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCByZWdUMSk7
CiAgICAgbG9hZERvdWJsZShCYXNlSW5kZXgocmVnVDIsIHJlZ1QxLCBUaW1lc0VpZ2h0KSwgZnBS
ZWdUMCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxP
clVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMCkpOwogICAgIApAQCAtMTg4LDcgKzE4OSw4IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoSW4KICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRT
aGFwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSkpOwotICAgIGFuZDMyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlJbmRl
eGluZ01hc2tPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBpZiAobV9zaG91bGRVc2VJbmRleE1hc2tp
bmcpCisgICAgICAgIGFuZDMyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlJbmRl
eGluZ01hc2tPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBsb2FkNjQoQmFzZUluZGV4KHJlZ1QyLCBy
ZWdUMSwgVGltZXNFaWdodCksIHJlZ1QwKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRl
c3Q2NChaZXJvLCByZWdUMCkpOwogICAgIApAQCAtMjA1LDcgKzIwNyw4IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCgKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3Rv
cmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKLSAgICBhbmQzMihBZGRyZXNzKHJlZ1Qw
LCBKU09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCByZWdUMSk7CisgICAg
aWYgKG1fc2hvdWxkVXNlSW5kZXhNYXNraW5nKQorICAgICAgICBhbmQzMihBZGRyZXNzKHJlZ1Qw
LCBKU09iamVjdDo6YnV0dGVyZmx5SW5kZXhpbmdNYXNrT2Zmc2V0KCkpLCByZWdUMSk7CiAgICAg
bG9hZDY0KEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6
dmVjdG9yT2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hUZXN0
NjQoWmVybywgcmVnVDApKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHJldmlzaW9uIDIyNjQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDU4LDYgKzQ1OCw4IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZUFzeW5jSXRlcmF0aW9uID0gZmEKICAgICBcCiAgICAgdihib29sLCB1
c2VXZWJBc3NlbWJseSwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWJBc3NlbWJseSBnbG9i
YWwgb2JqZWN0LiIpIFwKICAgICBcCisgICAgdihib29sLCBkaXNhYmxlU3BlY3RyZU1pdGlnYXRp
b25zLCBmYWxzZSwgUmVzdHJpY3RlZCwgIkRpc2FibGUgU3BlY3RyZSBtaXRpZ2F0aW9ucy4iKSBc
CisgICAgXAogICAgIHYoYm9vbCwgdXNlQXN5bmNJdGVyYXRvciwgZW5hYmxlQXN5bmNJdGVyYXRp
b24sIE5vcm1hbCwgIkFsbG93IHRvIHVzZSBBc3luYyBJdGVyYXRvciBpbiBKUy4iKSBcCiAgICAg
XAogICAgIHYoYm9vbCwgZmFpbFRvQ29tcGlsZVdlYkFzc2VtYmx5Q29kZSwgZmFsc2UsIE5vcm1h
bCwgIklmIHRydWUsIG5vIFdhc206OlBsYW4gd2lsbCBzdWNlc3NmdWxseSBjb21waWxlIGEgZnVu
Y3Rpb24uIikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjI2NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTAsNyAr
NjUwLDcgQEAgaW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbgogICAgICAg
ICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRsaW5nIGF0IGFsbCwgd2UgbXVzdCB0aGVy
ZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgbWVt
b3J5IHNpemUuCiAgICAgICAgIEFTU0VSVChtX21lbW9yeVNpemVHUFIpOwogICAgICAgICBBU1NF
UlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKLSAgICAgICAgR1BSUmVnIGlu
ZGV4aW5nTWFzayA9IHNob3VsZE1hc2sgPT0gU2hvdWxkTWFzazo6WWVzID8gbV9pbmRleGluZ01h
c2tHUFIgOiBJbnZhbGlkR1BSUmVnOworICAgICAgICBHUFJSZWcgaW5kZXhpbmdNYXNrID0gKHNo
b3VsZE1hc2sgPT0gU2hvdWxkTWFzazo6WWVzICYmICFPcHRpb25zOjpkaXNhYmxlU3BlY3RyZU1p
dGlnYXRpb25zKCkpID8gbV9pbmRleGluZ01hc2tHUFIgOiBJbnZhbGlkR1BSUmVnOwogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCBtX21lbW9yeVNpemVHUFIsIGluZGV4aW5nTWFzaywgcG9pbnRlciwgc2l6ZU9m
T3BlcmF0aW9uICsgb2Zmc2V0IC0gMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
</data>
<flag name="review"
          id="349616"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>