<?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>158291</bug_id>
          
          <creation_ts>2016-06-01 18:09:13 -0700</creation_ts>
          <short_desc>canOptimizeStringObjectAccess should use ObjectPropertyConditions rather than structure watchpoints</short_desc>
          <delta_ts>2016-06-01 21:24:02 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198373</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-01 18:09:13 -0700</bug_when>
    <thetext>canOptimizeStringObjectAccess should use ObjectPropertyConditions rather than structure watchpoints</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198384</commentid>
    <comment_count>1</comment_count>
      <attachid>280294</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-01 19:11:25 -0700</bug_when>
    <thetext>Created attachment 280294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198386</commentid>
    <comment_count>2</comment_count>
      <attachid>280294</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-01 19:17:47 -0700</bug_when>
    <thetext>Comment on attachment 280294
Patch

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

&gt; Source/JavaScriptCore/bytecode/ObjectPropertyConditionSet.cpp:65
&gt; +    return (numberOfConditionsWithKind(PropertyCondition::Presence) ^ numberOfConditionsWithKind(PropertyCondition::Equivalence)) == 1;

Whoops, this should be (numberOfConditionsWithKind(PropertyCondition::Presence) == 1) != (numberOfConditionsWithKind(PropertyCondition::Equivalence) == 1).

I&apos;ll fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198392</commentid>
    <comment_count>3</comment_count>
      <attachid>280296</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-01 19:36:22 -0700</bug_when>
    <thetext>Created attachment 280296
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198405</commentid>
    <comment_count>4</comment_count>
      <attachid>280296</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 20:16:57 -0700</bug_when>
    <thetext>Comment on attachment 280296
Patch for landing

Clearing flags on attachment: 280296

Committed r201584: &lt;http://trac.webkit.org/changeset/201584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198406</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 20:17:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198435</commentid>
    <comment_count>6</comment_count>
      <attachid>280296</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-01 21:24:02 -0700</bug_when>
    <thetext>Comment on attachment 280296
Patch for landing

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

Can you do a follow-up fix to clean up the API?

&gt; Source/JavaScriptCore/bytecode/ObjectPropertyCondition.cpp:52
&gt; -    return m_condition.isStillValidAssumingImpurePropertyWatchpoint(structure);
&gt; +    return m_condition.isStillValidAssumingImpurePropertyWatchpoint(structure, m_object);

This part is wrong.

The documentation for structureEnsuresValidityAssumingImpurePropertyWatchpoint() says:

    // Checks if the object&apos;s structure claims that the property won&apos;t be intercepted. Validity
    // does not require watchpoints on the object.

Passing a non-null object to PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint() means that it will return true in cases where we actually need to set watchpoints on the object.

It may be that nobody calls isStillValidAssumingImpurePropertyWatchpoint() this way, but that&apos;s a super crazy assumption since the DFG assumes this meaning for structureEnsuresValidity(), which is supposed to only differ from structureEnsuresValidityAssumingImpurePropertyWatchpoint() in how it handles the impure property watchpoint thing.

So, this patch maybe causes a correctness bug somewhere (maybe not), but definitely makes the API inconsistent.  I don&apos;t think we want that.

Can you add a new method instead?  I guess it should be called ObjectPropertyCondition::isStillValidAssumingImpurePropertyWatchpoint()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280294</attachid>
            <date>2016-06-01 19:11:25 -0700</date>
            <delta_ts>2016-06-01 19:36:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158291-20160601191243.patch</filename>
            <type>text/plain</type>
            <size>12666</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWJhZDY4MzE1Y2M1YTUzNWE5NjVmZTM0NjMzYWViZmMxNTg4M2ZjLi4wNGI1YmM0MWE1MTQxMWY5
YTBhZjRiMzZjOGE2ZDhmZmIzMDBlNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNi0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2VzcyBzaG91bGQgdXNl
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9ucyByYXRoZXIgdGhhbiBzdHJ1Y3R1cmUgd2F0Y2hwb2lu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBv
bGQgU3RyaW5nT2JqZWN0IHByaW1pdGl2ZSBhY2Nlc3MgY29kZSB1c2VkIHN0cnVjdHVyZSB3YXRj
aHBvaW50cy4gVGhpcyBtZWFudCB0aGF0CisgICAgICAgIGlmIHlvdSBzZXQgYSB3YXRjaHBvaW50
IG9uIFN0cmluZy5wcm90b3R5cGUgcHJpb3IgdG8gdGllcmluZyB1cCB0byB0aGUgREZHIHRoZW4g
YWRkZWQKKyAgICAgICAgYSBuZXcgcHJvcGVydHkgdG8gU3RyaW5nLnByb3RvdHlwZSB0aGVuIHdl
IHdvdWxkIG5ldmVyIHVzZSBTdHJpbmdPYmplY3Qgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgVGhp
cyBtYWRlIHByb3BlcnR5IGNhY2hpbmcgaW4gdGhlIExMSW50IGJhZCBiZWNhdXNlIGl0IG1lYW50
IHdlIHdvdWxkIHdhdGNocG9pbnQKKyAgICAgICAgU3RyaW5nLnByb3RvdHlwZSB2ZXJ5IGVhcmx5
IGluIHRoZSBwcm9ncmFtLCB3aGljaCBodXJ0IGRhdGUtZm9ybWF0LXhwYWIuanMgc2luY2UgdGhh
dAorICAgICAgICBiZW5jaG1hcmsgcmVsaWVzIG9uIHRoZSBTdHJpbmdPYmplY3Qgb3B0aW1pemF0
aW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCB0byBiZSBhYmxlIHRvIGhhbmRsZSBhIHNsb3RCYXNlCisgICAgICAgIGVxdWl2
YWxlbmNlIGNvbmRpdGlvbi4gU2luY2UgdGhhdCBtYWtlcyB0aGUgY29kZSBmb3IgZ2VuZXJhdGlu
ZyB0aGUgREZHIHdhdGNocG9pbnRzCisgICAgICAgIHNpZ25pZmljYW50bHkgY2xlYW5lci4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb246OnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFz
c3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0OjpoYXNPbmVTbG90QmFzZUNvbmRpdGlvbik6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpzbG90QmFzZUNvbmRpdGlvbik6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZUVxdWl2YWxlbmNlQ29uY3VycmVudGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzU3Ry
aW5nUHJvdG90eXBlTWV0aG9kU2FuZSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNhbk9w
dGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKwog
MjAxNi0wNS0yNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW0pTQ10gUmVnRXhwIHdpdGggZGVlcGx5IG5lc3RlZCBzdWJleHByZXNzaW9ucyBvdmVy
ZmxvdyB0aGUgc3RhY2sgaW4gWWFycgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5jcHAKaW5kZXggMWYxNTNiOTU2
OGU4YTJjYjRhNmRiOGRlZTk1YTM1MTZjMzFmOTBiZC4uNjQ3OGE3YWJhMmVmMmMwOGFjN2Y5ZjFl
NmM4NDc4YzAyODg5YjA3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHZvaWQgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0
eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbmRpdGlvbi5pc1N0aWxsVmFsaWRBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChzdHJ1Y3R1cmUpOworICAgIHJldHVybiBtX2NvbmRp
dGlvbi5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChzdHJ1Y3R1
cmUsIG1fb2JqZWN0KTsKIH0KIAogYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0
dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKaW5kZXggMDU3MjNhZDgyMmZmOTFmNWIxMjQ2YzRm
N2I0NDFmMjFkNWQyOWNhNi4uYzM2ZjBlMjZkNWRjYjIyN2NjNDdjODlmNmNkYWYzMDI5ZjUwYzdh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHVuc2lnbmVk
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpudW1iZXJPZkNvbmRpdGlvbnNXaXRoS2luZChQ
cm9wZXJ0eUNvbmRpdGlvCiAKIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omhhc09u
ZVNsb3RCYXNlQ29uZGl0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbnVtYmVyT2ZDb25kaXRp
b25zV2l0aEtpbmQoUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKSA9PSAxOworICAgIHJldHVy
biAobnVtYmVyT2ZDb25kaXRpb25zV2l0aEtpbmQoUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNl
KSBeIG51bWJlck9mQ29uZGl0aW9uc1dpdGhLaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFs
ZW5jZSkpID09IDE7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0OjpzbG90QmFzZUNvbmRpdGlvbigpIGNvbnN0CkBAIC03MCw3ICs3MCw4IEBA
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpzbG90
QmFzZUNvbmRpdGlvbigpIGNvbnN0CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0
OwogICAgIHVuc2lnbmVkIG51bUZvdW5kID0gMDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiAqdGhpcykgewotICAgICAgICBpZiAoY29uZGl0aW9u
LmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpIHsKKyAgICAgICAgaWYgKGNv
bmRpdGlvbi5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlCisgICAgICAgICAg
ICB8fCBjb25kaXRpb24ua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSkg
ewogICAgICAgICAgICAgcmVzdWx0ID0gY29uZGl0aW9uOwogICAgICAgICAgICAgbnVtRm91bmQr
KzsKICAgICAgICAgfQpAQCAtMjEwLDYgKzIxMSwxNSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICAgICAgICAgIHZtLCBvd25lciwgb2JqZWN0LCB1aWQs
IG9iamVjdC0+c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlOiB7
CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlcyk7CisgICAg
ICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbigpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5n
ZXREaXJlY3Qob2Zmc2V0KTsKKyAgICAgICAgcmVzdWx0ID0gT2JqZWN0UHJvcGVydHlDb25kaXRp
b246OmVxdWl2YWxlbmNlKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbigpOwpAQCAt
MjUyLDcgKzI2Miw3IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0
aW9ucygKICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXBy
b3RvdHlwZSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJSZWFjaGVkIGVuZCB1cCBwcm90b3R5cGUgY2hhaW4gYXMgZXhwZWN0ZWQs
IGRvbmUuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVhY2hlZCBlbmQgb2Yg
cHJvdG90eXBlIGNoYWluIGFzIGV4cGVjdGVkLCBkb25lLlxuIik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKQEAgLTM2Myw2
ICszNzMsMjEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25z
Rm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCiAgICAgICAgIH0pOwogfQogCitPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVFcXVpdmFs
ZW5jZUNvbmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogaGVhZFN0cnVjdHVyZSwgSlNPYmplY3QqIHByb3RvdHlwZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVDb25kaXRpb25zKHZtLCBn
bG9iYWxPYmplY3QsIGhlYWRTdHJ1Y3R1cmUsIHByb3RvdHlwZSwKKyAgICAgICAgWyZdIChWZWN0
b3I8T2JqZWN0UHJvcGVydHlDb25kaXRpb24+JiBjb25kaXRpb25zLCBKU09iamVjdCogb2JqZWN0
KSAtPiBib29sIHsKKyAgICAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGtpbmQgPQor
ICAgICAgICAgICAgICAgIG9iamVjdCA9PSBwcm90b3R5cGUgPyBQcm9wZXJ0eUNvbmRpdGlvbjo6
RXF1aXZhbGVuY2UgOiBQcm9wZXJ0eUNvbmRpdGlvbjo6QWJzZW5jZTsKKyAgICAgICAgICAgIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdCA9IGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBudWxs
cHRyLCBvYmplY3QsIHVpZCwga2luZCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjb25kaXRpb25zLmFwcGVuZChy
ZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sIENvbmN1cnJlbnQp
OworfQorCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQ
cm9wZXJ0eU1pc3NDb25jdXJyZW50bHkoCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGhlYWRTdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDAxY2UxYTg0MWMzMzBmMmNiZTRiZjI3
YjkyZjE0YWRlYTJhYzkwZGIuLmYxZjE0ZDgxMDI5YjZkMjVhYmIxNWEyMWU0ZmI2ZDlhODViYWMw
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0xNjgsNyArMTY4LDkgQEAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlI
aXRDdXN0b20oCiAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
IGhlYWRTdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsCiAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCk7CiAKLQorT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRp
b25zRm9yUHJvdG90eXBlRXF1aXZhbGVuY2VDb25jdXJyZW50bHkoCisgICAgVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSogaGVhZFN0cnVjdHVyZSwgSlNPYmplY3QqIHByb3RvdHlwZSwK
KyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzc0NvbmN1cnJlbnRseSgKICAgICBWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBoZWFkU3RydWN0dXJlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKaW5kZXggZWEzMDhmNTIyYTFhNjUyZDI0ZmI5MGE2M2E5MDE0NWYxMDU3
ZmFlZC4uN2M4ZGQyOTVlMzVjNDE1NDhhNmIyZmI2MDE2ZmIyZTY5OWQyNjc2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTE1MzgsMjcgKzE1MzgsNiBAQCBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlRm9yKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUoKTsKIH0KIAotYm9vbCBHcmFwaDo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTT2Jq
ZWN0KiBzdHJpbmdQcm90b3R5cGUsIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3RydWN0dXJl
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQotewotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNVbnVz
ZWQ7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RyaW5nUHJvdG90eXBlU3RydWN0dXJl
LT5nZXRDb25jdXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzVW51c2VkKTsKLSAgICBpZiAoIWlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSlNWYWx1ZSB2
YWx1ZSA9IHRyeUdldENvbnN0YW50UHJvcGVydHkoc3RyaW5nUHJvdG90eXBlLCBzdHJpbmdQcm90
b3R5cGVTdHJ1Y3R1cmUsIG9mZnNldCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVu
Y3Rpb24qPih2YWx1ZSk7Ci0gICAgaWYgKCFmdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCktPmludHJpbnNpY0ZvcihDb2RlRm9y
Q2FsbCkgIT0gU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIEdyYXBoOjpnZXRSZWdF
eHBQcm90b3R5cGVQcm9wZXJ0eShKU09iamVjdCogcmVnRXhwUHJvdG90eXBlLCBTdHJ1Y3R1cmUq
IHJlZ0V4cFByb3RvdHlwZVN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNWYWx1
ZSYgcmV0dXJuSlNWYWx1ZSkKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzVW51c2VkOwpAQCAt
MTU4NywyNiArMTU2NiwzOCBAQCBib29sIEdyYXBoOjpnZXRSZWdFeHBQcm90b3R5cGVQcm9wZXJ0
eShKU09iamVjdCogcmVnRXhwUHJvdG90eXBlLCBTdHJ1Y3R1cmUqIHJlZwogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIEdyYXBoOjppc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25zID0gZ2VuZXJhdGVDb25kaXRpb25z
Rm9yUHJvdG90eXBlRXF1aXZhbGVuY2VDb25jdXJyZW50bHkobV92bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpLCBnbG9iYWxPYmplY3QtPnN0cmlu
Z1Byb3RvdHlwZSgpLCB1aWQpOworCisgICAgaWYgKCFjb25kaXRpb25zLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZXF1aXZh
bGVuY2VDb25kaXRpb24gPSBjb25kaXRpb25zLnNsb3RCYXNlQ29uZGl0aW9uKCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZXF1aXZhbGVuY2VDb25kaXRpb24uaGFzUmVxdWlyZWRWYWx1ZSgpKTsKKyAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGVxdWl2
YWxlbmNlQ29uZGl0aW9uLmNvbmRpdGlvbigpLnJlcXVpcmVkVmFsdWUoKSk7CisgICAgaWYgKCFm
dW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZ1bmN0aW9uLT5leGVj
dXRhYmxlKCktPmludHJpbnNpY0ZvcihDb2RlRm9yQ2FsbCkgIT0gU3RyaW5nUHJvdG90eXBlVmFs
dWVPZkludHJpbnNpYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB3
YXRjaENvbmRpdGlvbnMoY29uZGl0aW9ucyk7Cit9CisKKwogYm9vbCBHcmFwaDo6Y2FuT3B0aW1p
emVTdHJpbmdPYmplY3RBY2Nlc3MoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKIHsKICAg
ICBpZiAoaGFzRXhpdFNpdGUoY29kZU9yaWdpbiwgTm90U3RyaW5nT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKTsKICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJl
KCk7CiAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKICAgICBB
U1NFUlQoc3RyaW5nT2JqZWN0U3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5pc09iamVjdCgp
KTsKICAgICBBU1NFUlQoc3RyaW5nT2JqZWN0U3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5h
c0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gU3RyaW5nUHJvdG90eXBlOjppbmZvKCkpOwogCi0gICAg
RnJvemVuVmFsdWUqIHN0cmluZ1Byb3RvdHlwZU9iamVjdFZhbHVlID0gZnJlZXplKHN0cmluZ09i
amVjdFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkpOwotICAgIFN0cmluZ1Byb3RvdHlwZSog
c3RyaW5nUHJvdG90eXBlT2JqZWN0ID0gc3RyaW5nUHJvdG90eXBlT2JqZWN0VmFsdWUtPmR5bmFt
aWNDYXN0PFN0cmluZ1Byb3RvdHlwZSo+KCk7Ci0gICAgU3RydWN0dXJlKiBzdHJpbmdQcm90b3R5
cGVTdHJ1Y3R1cmUgPSBzdHJpbmdQcm90b3R5cGVPYmplY3RWYWx1ZS0+c3RydWN0dXJlKCk7Ci0g
ICAgaWYgKHJlZ2lzdGVyU3RydWN0dXJlKHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSkgIT0gU3Ry
dWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXdhdGNoQ29uZGl0aW9ucyhnZW5lcmF0ZUNvbmRpdGlv
bnNGb3JQcm9wZXJ0eU1pc3NDb25jdXJyZW50bHkobV92bSwgZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pLCBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9Qcmlt
aXRpdmVTeW1ib2wuaW1wbCgpKSkpCisgICAgaWYgKCF3YXRjaENvbmRpdGlvbnMoZ2VuZXJhdGVD
b25kaXRpb25zRm9yUHJvcGVydHlNaXNzQ29uY3VycmVudGx5KG1fdm0sIGdsb2JhbE9iamVjdCwg
c3RyaW5nT2JqZWN0U3RydWN0dXJlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvUHJpbWl0aXZlU3lt
Ym9sLmltcGwoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSdyZSBiZWlu
ZyBjb25zZXJ2YXRpdmUgaGVyZS4gV2Ugd2FudCBERkcncyBUb1N0cmluZyBvbiBTdHJpbmdPYmpl
Y3QgdG8gYmUKQEAgLTE2MTQsMTIgKzE2MDUsOSBAQCBib29sIEdyYXBoOjpjYW5PcHRpbWl6ZVN0
cmluZ09iamVjdEFjY2Vzcyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIC8vICh0
aGF0IHdvdWxkIGNhbGwgdG9TdHJpbmcoKSkuIFdlIGRvbid0IHdhbnQgdGhlIERGRyB0byBoYXZl
IHRvIGRpc3Rpbmd1aXNoCiAgICAgLy8gYmV0d2VlbiB0aGUgdHdvLCBqdXN0IGJlY2F1c2UgdGhh
dCBzZWVtcyBsaWtlIGl0IHdvdWxkIGdldCBjb25mdXNpbmcuIFNvIHdlCiAgICAgLy8ganVzdCBy
ZXF1aXJlIGJvdGggbWV0aG9kcyB0byBiZSBzYW5lLgotICAgIGlmICghaXNTdHJpbmdQcm90b3R5
cGVNZXRob2RTYW5lKHN0cmluZ1Byb3RvdHlwZU9iamVjdCwgc3RyaW5nUHJvdG90eXBlU3RydWN0
dXJlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YuaW1wbCgpKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKHN0cmluZ1Byb3Rv
dHlwZU9iamVjdCwgc3RyaW5nUHJvdG90eXBlU3RydWN0dXJlLCBtX3ZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nLmltcGwoKSkpCisgICAgaWYgKCFpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUo
Z2xvYmFsT2JqZWN0LCBtX3ZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YuaW1wbCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzU3RyaW5n
UHJvdG90eXBlTWV0aG9kU2FuZShnbG9iYWxPYmplY3QsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmcuaW1wbCgpKTsKIH0KIAogYm9vbCBHcmFwaDo6d2lsbENhdGNoRXhjZXB0aW9uSW5NYWNo
aW5lRnJhbWUoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDb2RlT3JpZ2luJiBvcENhdGNoT3JpZ2lu
T3V0LCBIYW5kbGVySW5mbyomIGNhdGNoSGFuZGxlck91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCBhMDQzYTQ4ZTA5ODU3YzE1NDcyZTYxOGM5YWQxYThiMWM0YzJlZDI2
Li4wMjFiMGVjODNlM2ZlYmY1Y2M1M2Q3ZTliNjIxYTRhMGNmN2FhY2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC05MTAsNyArOTEwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CiBwcml2YXRlOgogCi0gICAgYm9v
bCBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoSlNPYmplY3QqIHN0cmluZ1Byb3RvdHlwZSwg
U3RydWN0dXJlKiBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7
CisgICAgYm9vbCBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoSlNHbG9iYWxPYmplY3QqLCBV
bmlxdWVkU3RyaW5nSW1wbCopOwogCiAgICAgdm9pZCBoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJh
c2ljQmxvY2sqLCAxNj4mIHdvcmtsaXN0LCBCYXNpY0Jsb2NrKiwgQmFzaWNCbG9jayogc3VjY2Vz
c29yKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280296</attachid>
            <date>2016-06-01 19:36:22 -0700</date>
            <delta_ts>2016-06-01 20:16:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158291-20160601193739.patch</filename>
            <type>text/plain</type>
            <size>12676</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWJhZDY4MzE1Y2M1YTUzNWE5NjVmZTM0NjMzYWViZmMxNTg4M2ZjLi5jZDIwZmI2NTMzNTg4MGY3
MzFjMjJhYjVjNTIxNDIzMGQ4ZGExMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNi0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2VzcyBzaG91bGQgdXNl
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9ucyByYXRoZXIgdGhhbiBzdHJ1Y3R1cmUgd2F0Y2hwb2lu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgVGhl
IG9sZCBTdHJpbmdPYmplY3QgcHJpbWl0aXZlIGFjY2VzcyBjb2RlIHVzZWQgc3RydWN0dXJlIHdh
dGNocG9pbnRzLiBUaGlzIG1lYW50IHRoYXQKKyAgICAgICAgaWYgeW91IHNldCBhIHdhdGNocG9p
bnQgb24gU3RyaW5nLnByb3RvdHlwZSBwcmlvciB0byB0aWVyaW5nIHVwIHRvIHRoZSBERkcgdGhl
biBhZGRlZAorICAgICAgICBhIG5ldyBwcm9wZXJ0eSB0byBTdHJpbmcucHJvdG90eXBlIHRoZW4g
d2Ugd291bGQgbmV2ZXIgdXNlIFN0cmluZ09iamVjdCBvcHRpbWl6YXRpb25zLgorICAgICAgICBU
aGlzIG1hZGUgcHJvcGVydHkgY2FjaGluZyBpbiB0aGUgTExJbnQgYmFkIGJlY2F1c2UgaXQgbWVh
bnQgd2Ugd291bGQgd2F0Y2hwb2ludAorICAgICAgICBTdHJpbmcucHJvdG90eXBlIHZlcnkgZWFy
bHkgaW4gdGhlIHByb2dyYW0sIHdoaWNoIGh1cnQgZGF0ZS1mb3JtYXQteHBhYi5qcyBzaW5jZSB0
aGF0CisgICAgICAgIGJlbmNobWFyayByZWxpZXMgb24gdGhlIFN0cmluZ09iamVjdCBvcHRpbWl6
YXRpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBleHRlbmRzIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0IHRvIGJlIGFibGUgdG8gaGFuZGxlIGEgc2xvdEJhc2UKKyAgICAgICAgZXF1
aXZhbGVuY2UgY29uZGl0aW9uLiBTaW5jZSB0aGF0IG1ha2VzIHRoZSBjb2RlIGZvciBnZW5lcmF0
aW5nIHRoZSBERkcgd2F0Y2hwb2ludHMKKyAgICAgICAgc2lnbmlmaWNhbnRseSBjbGVhbmVyLgor
CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5
QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQ6Omhhc09uZVNsb3RCYXNlQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OnNsb3RCYXNlQ29uZGl0aW9uKToKKyAgICAgICAg
KEpTQzo6Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlRXF1aXZhbGVuY2VDb25jdXJyZW50
bHkpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNT
dHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2Fu
T3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
CiAyMDE2LTA1LTI1ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbSlNDXSBSZWdFeHAgd2l0aCBkZWVwbHkgbmVzdGVkIHN1YmV4cHJlc3Npb25zIG92
ZXJmbG93IHRoZSBzdGFjayBpbiBZYXJyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRleCAxZjE1M2I5
NTY4ZThhMmNiNGE2ZGI4ZGVlOTVhMzUxNmMzMWY5MGJkLi42NDc4YTdhYmEyZWYyYzA4YWM3Zjlm
MWU2Yzg0NzhjMDI4ODliMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgdm9pZCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6c3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29uZGl0aW9uLmlzU3RpbGxWYWxpZEFzc3Vt
aW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG1fY29u
ZGl0aW9uLmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KHN0cnVj
dHVyZSwgbV9vYmplY3QpOwogfQogCiBib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjpzdHJ1
Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRleCAwNTcyM2FkODIyZmY5MWY1YjEyNDZj
NGY3YjQ0MWYyMWQ1ZDI5Y2E2Li41YjBjZDdkNjZhMGU2NWNkN2QwZTY1MzVhNDUxZTk2YTZmMWYw
NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdW5zaWdu
ZWQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om51bWJlck9mQ29uZGl0aW9uc1dpdGhLaW5k
KFByb3BlcnR5Q29uZGl0aW8KIAogYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aGFz
T25lU2xvdEJhc2VDb25kaXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBudW1iZXJPZkNvbmRp
dGlvbnNXaXRoS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpID09IDE7CisgICAgcmV0
dXJuIChudW1iZXJPZkNvbmRpdGlvbnNXaXRoS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2Vu
Y2UpID09IDEpICE9IChudW1iZXJPZkNvbmRpdGlvbnNXaXRoS2luZChQcm9wZXJ0eUNvbmRpdGlv
bjo6RXF1aXZhbGVuY2UpID09IDEpOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c2xvdEJhc2VDb25kaXRpb24oKSBjb25zdApAQCAtNzAs
NyArNzAsOCBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldDo6c2xvdEJhc2VDb25kaXRpb24oKSBjb25zdAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uIHJlc3VsdDsKICAgICB1bnNpZ25lZCBudW1Gb3VuZCA9IDA7CiAgICAgZm9yIChjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogKnRoaXMpIHsKLSAgICAgICAgaWYg
KGNvbmRpdGlvbi5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKSB7CisgICAg
ICAgIGlmIChjb25kaXRpb24ua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZQor
ICAgICAgICAgICAgfHwgY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1
aXZhbGVuY2UpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbmRpdGlvbjsKICAgICAgICAgICAg
IG51bUZvdW5kKys7CiAgICAgICAgIH0KQEAgLTIxMCw2ICsyMTEsMTUgQEAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb24oCiAgICAgICAgICAgICB2bSwgb3duZXIsIG9i
amVjdCwgdWlkLCBvYmplY3QtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9uOjpFcXVp
dmFsZW5jZTogeworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0
ZXMpOworICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCisgICAgICAgICAgICBy
ZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CisgICAgICAgIHJlc3VsdCA9IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgb3duZXIsIG9iamVjdCwgdWlkLCB2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRp
b24oKTsKQEAgLTI1Miw3ICsyNjIsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5l
cmF0ZUNvbmRpdGlvbnMoCiAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkgewogICAgICAgICAg
ICAgaWYgKCFwcm90b3R5cGUpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiUmVhY2hlZCBlbmQgdXAgcHJvdG90eXBlIGNoYWluIGFz
IGV4cGVjdGVkLCBkb25lLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlJlYWNo
ZWQgZW5kIG9mIHByb3RvdHlwZSBjaGFpbiBhcyBleHBlY3RlZCwgZG9uZS5cbiIpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CkBAIC0zNjMsNiArMzczLDIxIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0Q3VzdG9tKAogICAgICAgICB9KTsKIH0K
IAorT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90
eXBlRXF1aXZhbGVuY2VDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGhlYWRTdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90b3R5
cGUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlQ29uZGl0
aW9ucyh2bSwgZ2xvYmFsT2JqZWN0LCBoZWFkU3RydWN0dXJlLCBwcm90b3R5cGUsCisgICAgICAg
IFsmXSAoVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiYgY29uZGl0aW9ucywgSlNPYmpl
Y3QqIG9iamVjdCkgLT4gYm9vbCB7CisgICAgICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6S2lu
ZCBraW5kID0KKyAgICAgICAgICAgICAgICBvYmplY3QgPT0gcHJvdG90eXBlID8gUHJvcGVydHlD
b25kaXRpb246OkVxdWl2YWxlbmNlIDogUHJvcGVydHlDb25kaXRpb246OkFic2VuY2U7CisgICAg
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQgPSBnZW5lcmF0ZUNvbmRpdGlv
bih2bSwgbnVsbHB0ciwgb2JqZWN0LCB1aWQsIGtpbmQpOworICAgICAgICAgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29uZGl0aW9u
cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LCBD
b25jdXJyZW50KTsKK30KKwogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25k
aXRpb25zRm9yUHJvcGVydHlNaXNzQ29uY3VycmVudGx5KAogICAgIFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBoZWFkU3RydWN0dXJlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAppbmRleCAwMWNlMWE4NDFjMzMw
ZjJjYmU0YmYyN2I5MmYxNGFkZWEyYWM5MGRiLi5mMWYxNGQ4MTAyOWI2ZDI1YWJiMTVhMjFlNGZi
NmQ5YTg1YmFjMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaApAQCAtMTY4LDcgKzE2OCw5IEBA
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlw
ZVByb3BlcnR5SGl0Q3VzdG9tKAogICAgIFZNJiwgSlNDZWxsKiBvd25lciwgRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiBoZWFkU3RydWN0dXJlLCBKU09iamVjdCogcHJvdG90eXBlLAogICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpOwogCi0KK09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVy
YXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZUVxdWl2YWxlbmNlQ29uY3VycmVudGx5KAorICAgIFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIGhlYWRTdHJ1Y3R1cmUsIEpTT2JqZWN0KiBw
cm90b3R5cGUsCisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3NDb25jdXJyZW50bHko
CiAgICAgVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogaGVhZFN0cnVjdHVyZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCk7CiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0
ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGVhMzA4ZjUyMmExYTY1MmQyNGZiOTBhNjNh
OTAxNDVmMTA1N2ZhZWQuLjdjOGRkMjk1ZTM1YzQxNTQ4YTZiMmZiNjAxNmZiMmU2OTlkMjY3NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNTM4LDI3ICsxNTM4
LDYgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZUZvcihOb2RlKiBub2RlKQogICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlKCk7CiB9CiAKLWJvb2wgR3JhcGg6OmlzU3RyaW5nUHJvdG90eXBlTWV0aG9k
U2FuZShKU09iamVjdCogc3RyaW5nUHJvdG90eXBlLCBTdHJ1Y3R1cmUqIHN0cmluZ1Byb3RvdHlw
ZVN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKLXsKLSAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzVW51c2VkOwotICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cmluZ1Byb3RvdHlw
ZVN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlc1VudXNlZCk7Ci0gICAg
aWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEpTVmFsdWUgdmFsdWUgPSB0cnlHZXRDb25zdGFudFByb3BlcnR5KHN0cmluZ1Byb3RvdHlwZSwg
c3RyaW5nUHJvdG90eXBlU3RydWN0dXJlLCBvZmZzZXQpOwotICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUpOwotICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpLT5pbnRyaW5zaWNG
b3IoQ29kZUZvckNhbGwpICE9IFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBHcmFw
aDo6Z2V0UmVnRXhwUHJvdG90eXBlUHJvcGVydHkoSlNPYmplY3QqIHJlZ0V4cFByb3RvdHlwZSwg
U3RydWN0dXJlKiByZWdFeHBQcm90b3R5cGVTdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIEpTVmFsdWUmIHJldHVybkpTVmFsdWUpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc1Vu
dXNlZDsKQEAgLTE1ODcsMjYgKzE1NjYsMzggQEAgYm9vbCBHcmFwaDo6Z2V0UmVnRXhwUHJvdG90
eXBlUHJvcGVydHkoSlNPYmplY3QqIHJlZ0V4cFByb3RvdHlwZSwgU3RydWN0dXJlKiByZWcKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBHcmFwaDo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RT
YW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
Cit7CisgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9ucyA9IGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3RvdHlwZUVxdWl2YWxlbmNlQ29uY3VycmVudGx5KG1fdm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwgZ2xvYmFsT2Jq
ZWN0LT5zdHJpbmdQcm90b3R5cGUoKSwgdWlkKTsKKworICAgIGlmICghY29uZGl0aW9ucy5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uIGVxdWl2YWxlbmNlQ29uZGl0aW9uID0gY29uZGl0aW9ucy5zbG90QmFzZUNvbmRpdGlvbigp
OworICAgIFJFTEVBU0VfQVNTRVJUKGVxdWl2YWxlbmNlQ29uZGl0aW9uLmhhc1JlcXVpcmVkVmFs
dWUoKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rp
b24qPihlcXVpdmFsZW5jZUNvbmRpdGlvbi5jb25kaXRpb24oKS5yZXF1aXJlZFZhbHVlKCkpOwor
ICAgIGlmICghZnVuY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmdW5j
dGlvbi0+ZXhlY3V0YWJsZSgpLT5pbnRyaW5zaWNGb3IoQ29kZUZvckNhbGwpICE9IFN0cmluZ1By
b3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICByZXR1cm4gd2F0Y2hDb25kaXRpb25zKGNvbmRpdGlvbnMpOworfQorCisKIGJvb2wgR3JhcGg6
OmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4pCiB7CiAgICAgaWYgKGhhc0V4aXRTaXRlKGNvZGVPcmlnaW4sIE5vdFN0cmluZ09iamVjdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgU3RydWN0dXJlKiBzdHJpbmdP
YmplY3RTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpOwogICAgIHJlZ2lzdGVyU3RydWN0dXJlKHN0cmluZ09iamVjdFN0cnVjdHVy
ZSk7CiAgICAgQVNTRVJUKHN0cmluZ09iamVjdFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCku
aXNPYmplY3QoKSk7CiAgICAgQVNTRVJUKHN0cmluZ09iamVjdFN0cnVjdHVyZS0+c3RvcmVkUHJv
dG90eXBlKCkuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IFN0cmluZ1Byb3RvdHlwZTo6aW5mbygp
KTsKIAotICAgIEZyb3plblZhbHVlKiBzdHJpbmdQcm90b3R5cGVPYmplY3RWYWx1ZSA9IGZyZWV6
ZShzdHJpbmdPYmplY3RTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpKTsKLSAgICBTdHJpbmdQ
cm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZU9iamVjdCA9IHN0cmluZ1Byb3RvdHlwZU9iamVjdFZh
bHVlLT5keW5hbWljQ2FzdDxTdHJpbmdQcm90b3R5cGUqPigpOwotICAgIFN0cnVjdHVyZSogc3Ry
aW5nUHJvdG90eXBlU3RydWN0dXJlID0gc3RyaW5nUHJvdG90eXBlT2JqZWN0VmFsdWUtPnN0cnVj
dHVyZSgpOwotICAgIGlmIChyZWdpc3RlclN0cnVjdHVyZShzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1
cmUpICE9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoc3RyaW5nUHJvdG90eXBlU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCF3YXRjaENvbmRpdGlvbnMoZ2VuZXJh
dGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzQ29uY3VycmVudGx5KG1fdm0sIGdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSwgc3RyaW5nT2JqZWN0U3RydWN0dXJlLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPnRvUHJpbWl0aXZlU3ltYm9sLmltcGwoKSkpKQorICAgIGlmICghd2F0Y2hDb25kaXRpb25z
KGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzc0NvbmN1cnJlbnRseShtX3ZtLCBnbG9i
YWxPYmplY3QsIHN0cmluZ09iamVjdFN0cnVjdHVyZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT50b1By
aW1pdGl2ZVN5bWJvbC5pbXBsKCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
V2UncmUgYmVpbmcgY29uc2VydmF0aXZlIGhlcmUuIFdlIHdhbnQgREZHJ3MgVG9TdHJpbmcgb24g
U3RyaW5nT2JqZWN0IHRvIGJlCkBAIC0xNjE0LDEyICsxNjA1LDkgQEAgYm9vbCBHcmFwaDo6Y2Fu
T3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3MoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikK
ICAgICAvLyAodGhhdCB3b3VsZCBjYWxsIHRvU3RyaW5nKCkpLiBXZSBkb24ndCB3YW50IHRoZSBE
RkcgdG8gaGF2ZSB0byBkaXN0aW5ndWlzaAogICAgIC8vIGJldHdlZW4gdGhlIHR3bywganVzdCBi
ZWNhdXNlIHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBnZXQgY29uZnVzaW5nLiBTbyB3ZQogICAg
IC8vIGp1c3QgcmVxdWlyZSBib3RoIG1ldGhvZHMgdG8gYmUgc2FuZS4KLSAgICBpZiAoIWlzU3Ry
aW5nUHJvdG90eXBlTWV0aG9kU2FuZShzdHJpbmdQcm90b3R5cGVPYmplY3QsIHN0cmluZ1Byb3Rv
dHlwZVN0cnVjdHVyZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLmltcGwoKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShz
dHJpbmdQcm90b3R5cGVPYmplY3QsIHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZy5pbXBsKCkpKQorICAgIGlmICghaXNTdHJpbmdQcm90b3R5cGVN
ZXRob2RTYW5lKGdsb2JhbE9iamVjdCwgbV92bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLmltcGwo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoZ2xvYmFsT2JqZWN0LCBtX3ZtLnByb3BlcnR5
TmFtZXMtPnRvU3RyaW5nLmltcGwoKSk7CiB9CiAKIGJvb2wgR3JhcGg6OndpbGxDYXRjaEV4Y2Vw
dGlvbkluTWFjaGluZUZyYW1lKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BD
YXRjaE9yaWdpbk91dCwgSGFuZGxlckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggYTA0M2E0OGUwOTg1N2MxNTQ3MmU2MThjOWFkMWE4
YjFjNGMyZWQyNi4uMDIxYjBlYzgzZTNmZWJmNWNjNTNkN2U5YjYyMWE0YTBjZjdhYWNmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTEwLDcgKzkxMCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwogcHJpdmF0ZToK
IAotICAgIGJvb2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTT2JqZWN0KiBzdHJpbmdQ
cm90b3R5cGUsIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3RydWN0dXJlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopOworICAgIGJvb2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFs
T2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIAogICAgIHZvaWQgaGFuZGxlU3VjY2Vzc29y
KFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+JiB3b3JrbGlzdCwgQmFzaWNCbG9jayosIEJhc2ljQmxv
Y2sqIHN1Y2Nlc3Nvcik7CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>