<?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>180190</bug_id>
          
          <creation_ts>2017-11-30 05:15:08 -0800</creation_ts>
          <short_desc>[DFG][FTL] operationHasIndexedProperty does not consider negative int32_t</short_desc>
          <delta_ts>2017-11-30 12:49:21 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>180192</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376279</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-30 05:15:08 -0800</bug_when>
    <thetext>Reported by @azu_re. https://twitter.com/azu_re/status/936187554235170816

var k = -1;  // k &gt;= 0 is no problem, k &lt; 0 is problem
var o = {};
o[k] = true;

function f() {
    // `(k + &quot;&quot;) in o` is no problem
    if (k in o) {
        return;
    }
    // `k in o` must be true, but Safari 11 reach here
    throw new Error(&quot;Never reach&quot;);
}
noInline(f);

var i = 0;
try {
    for (i = 0; i &lt; 100000; i++) {
        f();
    }
} catch (e) {
    // Reach here is problem
    // Safari on iOS 11.1.2
    // i: 5000~20000
    // Safari 11.0.1 (12604.3.5.1.1) on mac sierra
    // i: 1000~5000
    print(e.message + &quot; : &quot; + JSON.stringify({
        &quot;i&quot;: i,
        &quot;k in o&quot;: (k in o),
        &quot;(&apos;&apos;+k) in o&quot;: ((&apos;&apos; + k) in o),
        &quot;o.hasOwnProperty(k)&quot;: o.hasOwnProperty(k)
    }, null, 2));
}

print(&quot;Done&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376280</commentid>
    <comment_count>1</comment_count>
      <attachid>327969</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-30 05:27:20 -0800</bug_when>
    <thetext>Created attachment 327969
Patch

WIP: add more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376290</commentid>
    <comment_count>2</comment_count>
      <attachid>327972</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-30 06:05:29 -0800</bug_when>
    <thetext>Created attachment 327972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376453</commentid>
    <comment_count>3</comment_count>
      <attachid>327972</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 12:31:26 -0800</bug_when>
    <thetext>Comment on attachment 327972
Patch

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

r=me.  Is it possible to defer landing this until after https://bugs.webkit.org/show_bug.cgi?id=180192 is fixed?

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1817
&gt; +        // Go the slowest way possible becase negative indices don&apos;t use indexed storage.

typo: /becase/because/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376459</commentid>
    <comment_count>4</comment_count>
      <attachid>327972</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-30 12:42:12 -0800</bug_when>
    <thetext>Comment on attachment 327972
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:22
&gt; +        While fixing this bug, we found that our op_in does not record OutOfBound feedback.
&gt; +        This causes repeated OSR exit and significantly regresses the performance. We opened
&gt; +        a bug to track this issue[1].
&gt; +
&gt; +        [1]: https://bugs.webkit.org/show_bug.cgi?id=180192

Oops, sorry for my misleading comment. This patch does not introduce the above performance regression.
Our ToT already has the above performance issue.

Why I noted the above thing is that I found this issue when adding a test in this patch.
The test in this patch shows the above inefficient behavior.

So, I think landing this patch is OK since this patch&apos;s issue is not related to the above perf issue.
And this patch itself does not cause/fix the above performance issue. This patch&apos;s intent is just fixing negative int case.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1817
&gt;&gt; +        // Go the slowest way possible becase negative indices don&apos;t use indexed storage.
&gt; 
&gt; typo: /becase/because/

Thanks, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376462</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-30 12:48:58 -0800</bug_when>
    <thetext>Committed r225342: &lt;https://trac.webkit.org/changeset/225342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376463</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-30 12:49:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/35779895&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327969</attachid>
            <date>2017-11-30 05:27:20 -0800</date>
            <delta_ts>2017-11-30 06:05:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180190-20171130222719.patch</filename>
            <type>text/plain</type>
            <size>10608</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Njk4ODVjMGZhZjg5ODhhZDZhZTI2NjZiMGVhMGFlYWE4ZGUxMmUzLi4zODMxNDMzNjI3ODI4ZTc5
NDgyMjU5OGU0YzQ5NmMwZGQ3YTE4YmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMyBAQAogMjAxNy0xMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbREZHXVtGVExdIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSBk
b2VzIG5vdCBjb25zaWRlciBuZWdhdGl2ZSBpbnQzMl90CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUhh
c0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisKKzIwMTctMTEtMzAgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgUkVHUkVTU0lPTihyMjI1MzE0KTog
W0xpbnV4XSBNb3JlIHRoYW4gMjAwMCBqc2MgdGVzdHMgYXJlIGZhaWxpbmcgYWZ0ZXIgcjIyNTMx
NAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTg1
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGUx
MTQ3Njk0OGYzODdjMGYyOGMzNTUxMmUwNDZiODAxMjkzZTcwODYuLmM1NTRjMTMxMWZkNzI4NDY4
MDZkZDFlOGExNzdjNTE3YzQ0ZGUyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcApAQCAtMTgwOCw2ICsxODA4LDE4IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBj
ZWxsKQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihhc09iamVjdChjZWxsKS0+
ZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGJhc2VDZWxsLCBpbnQzMl90IHN1YnNjcmlwdCwgaW50MzJfdCBpbnRlcm5hbE1ldGhvZFR5
cGUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2VDZWxsLT50
b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGlmIChVTkxJ
S0VMWShzdWJzY3JpcHQgPCAwKSkgeworICAgICAgICAvLyBHbyB0aGUgc2xvd2VzdCB3YXkgcG9z
c2libGUgYmVjYXNlIG5lZ2F0aXZlIGluZGljZXMgZG9uJ3QgdXNlIGluZGV4ZWQgc3RvcmFnZS4K
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9w
ZXJ0eUdlbmVyaWMoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBzdWJzY3JpcHQpLCBzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZT4oaW50ZXJuYWxNZXRob2RU
eXBlKSkpKTsKKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2Jq
ZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZXhlYywgc3Vic2NyaXB0LCBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZT4oaW50ZXJuYWxNZXRob2RUeXBlKSkpKTsKK30K
KwogU3RyaW5nSW1wbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlUm9wZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggYWJmMDZiNjI3
YjNjMGE4NTdlOTA5ZGY5MTk5NzlmNDY3YzY3MzQwNS4uYWFkMGJlZmVmNjVjNTc3MDdjMDJjYTI5
MDRjMGRhOTAyOWRlNmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKQEAgLTgwLDYgKzgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlw
ZU9mKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludChFeGVjU3RhdGUqLCBKU0NlbGwqLCBp
bnQzMl90LCBpbnQzMl90KTsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXko
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdm9pZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QsIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdFbXB0eUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRF
Uk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IGJmZGE2MzhlNmU0MTg5YjUxOTcxZWY0OTcxNjg2ZGY4ODg1MTE0
MDguLjZjODJmMTcxMmI1NTA1Njg1M2ZmOWI5NGM4MGFmYWI4YWFmMDM2NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtNTI3MSw3ICs1MjcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBtb3ZlVHJ1ZVRvKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogCi0gICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
KSwgYmFzZUdQUiwgaW5kZXhHUFIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5vZGUtPmludGVybmFs
TWV0aG9kVHlwZSgpKSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludCwgSlNW
YWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZUdQUiwgaW5kZXhH
UFIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5vZGUtPmludGVybmFsTWV0aG9kVHlwZSgpKSkpOwog
ICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGJvb2xlYW5SZXN1
bHQocmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAwZmRlNDgyNmY0NWE3YzNiNjU4Y2Fm
MjkxNTc4YmQyOTk5NDUyNmExLi5iMzM4NjQ0NjYzZDdhNTBlZGQwMDgzMzFhODcyNmVhZDI5ODdl
OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKQEAgLTU3MzMsNyArNTczMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5LCByZXN1bHRHUFIsIGJhc2VHUFIsIGluZGV4R1BSLCBzdGF0aWNfY2FzdDxp
bnQzMl90Pihub2RlLT5pbnRlcm5hbE1ldGhvZFR5cGUoKSkpKTsKKyAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5QnlJbnQsIHJlc3VsdEdQUiwgYmFzZUdQUiwgaW5kZXhHUFIsIHN0YXRpY19j
YXN0PGludDMyX3Q+KG5vZGUtPmludGVybmFsTWV0aG9kVHlwZSgpKSkpOwogICAgICAgICAKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4p
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCAxMWM2NzAxMmJhMDVhMzIwYzExM2U3YzRiNTc5YWQ1NWIzM2I0ZGQw
Li4wYjZmMDk1ZTQ4YTNlZTcyOTZkZGYzMmJkNDAwMWE3MjAxMDZiMWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05NDI4LDcgKzk0Mjgs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xv
d0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAg
ICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgsIGludGVybmFsTWV0aG9kVHlwZSkpKTsK
KyAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlCeUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgaW50ZXJu
YWxNZXRob2RUeXBlKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwog
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAg
LTk0NjQsNyArOTQ2NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwoCiAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSks
IAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgaW50ZXJuYWxN
ZXRob2RUeXBlKSkpOworICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUJ5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2Us
IGluZGV4LCBpbnRlcm5hbE1ldGhvZFR5cGUpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggYWNkMjNlOGZmOGVhNjAxODQ4MTZiMGJiMjg3MDZjZGU0MWE0ZmNm
Ni4uYjZhYzg3NmFmMWI1NDI5YzcxZjJjZmE3MjBlMWVhMWRkNzBmOGMzNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMzk4LDE0ICsyMzk4LDYg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdlbmVyaWMoZXhlYywgYXNTdHJpbmcocHJvcGVydHlO
YW1lKS0+dG9JZGVudGlmaWVyKGV4ZWMpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNl
Q2VsbCwgaW50MzJfdCBzdWJzY3JpcHQsIGludDMyX3QgaW50ZXJuYWxNZXRob2RUeXBlKQotewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBiYXNlQ2VsbC0+dG9PYmplY3Qo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhleGVjLCBzdWJzY3Jp
cHQsIHN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlPihpbnRlcm5h
bE1ldGhvZFR5cGUpKSkpOwotfQotICAgIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldFByb3BlcnR5RW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCA2YTU5NDFjYmE3MGNhZjk0NTA0ZmM2MzE3MDcyNGI2ODJmMDc2OGJj
Li5mN2MyYTRlMzUxNjM0M2EzOWFiOGUwZDgwYjZkYzkxNzc0NWI5ODFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNDYxLDcgKzQ2MSw2IEBAIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFu
ZE5vdGlmeVByb2ZpbGVyKEV4CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFu
Y2VPZkN1c3RvbShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZf
SU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzR2Vu
ZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIGludDMyX3QsIGludDMyX3QpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvcihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV4dEVudW1lcmF0b3JQbmFtZShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub0luZGV4U3RyaW5nKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0NmZlMTMwYWY2YWQyMjNh
NGIzMGNmMjE4ZDUyMmE2MzkzMzY1Y2Q5Li44OWMzMDYxY2FkYzRjY2E4Zjc0N2E5OTBhNWRiMjUx
M2Y0MTVhZDViIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTMwICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtERkddW0ZUTF0gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5IGRvZXMgbm90IGNvbnNpZGVyIG5lZ2F0aXZlIGludDMyX3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL29wZXJhdGlv
bi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1pbnQzMi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICh0ZXN0Mik6CisKIDIwMTctMTEtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmljdCBhbmQgc2xvcHB5IGZ1bmN0aW9ucyBzaG91
bGRuJ3Qgc2hhcmUgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRp
b24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRp
b24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YjJlZTIzMjk4
YThhNjQ3MTgyYzJhMGIzNGZlODg1NjU4ZDgwYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL29wZXJhdGlvbi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1pbnQzMi5qcwpAQCAtMCwwICsx
LDMyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK3ZhciBrID0gLTE7Cit2YXIgbzEgPSB7fTsKK28xW2tdID0gdHJ1
ZTsKK3ZhciBvMiA9IHt9OworCitmdW5jdGlvbiB0ZXN0MShvKQoreworICAgIHJldHVybiBrIGlu
IG87Cit9Citub0lubGluZSh0ZXN0MSk7CisKK2Z1bmN0aW9uIHRlc3QyKG8pCit7CisgICAgcmV0
dXJuIGsgaW4gbzsKK30KK25vSW5saW5lKHRlc3QyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0MShvMSksIHRydWUpOworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0MShvMiksIGZhbHNlKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0MihvMiksIGZhbHNlKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdDIobzEpLCB0
cnVlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327972</attachid>
            <date>2017-11-30 06:05:29 -0800</date>
            <delta_ts>2017-11-30 12:31:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180190-20171130230528.patch</filename>
            <type>text/plain</type>
            <size>16285</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Njk4ODVjMGZhZjg5ODhhZDZhZTI2NjZiMGVhMGFlYWE4ZGUxMmUzLi4xOTE4YWY3ZjI4YTc0OTg5
MTYxMzdhZDQ3NzNhY2I2YWZhYTc1ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOSBAQAogMjAxNy0xMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbREZHXVtGVExdIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSBk
b2VzIG5vdCBjb25zaWRlciBuZWdhdGl2ZSBpbnQzMl90CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBERkcgSGFzSW5kZXhlZFByb3BlcnR5IG5vZGUg
b2JzZXJ2ZXMgbmVnYXRpdmUgaW5kZXgsIGl0IGdvZXMgdG8gYSBzbG93CisgICAgICAgIHBhdGgg
YnkgY2FsbGluZyBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkuIFRoZSBwcm9ibGVtIGlzIHRo
YXQKKyAgICAgICAgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5IGRvZXMgbm90IGFjY291bnQg
bmVnYXRpdmUgaW5kZXguIE5lZ2F0aXZlIGluZGV4CisgICAgICAgIHdhcyB1c2VkIGFzIHVpbnQz
MiBhcnJheSBpbmRleC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGFkZCBhIHBhdGggZm9y
IG5lZ2F0aXZlIGluZGV4IGluIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eS4KKyAgICAgICAg
QW5kIHJlbmFtZSBpdCB0byBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludCB0byBtYWtl
IGludGVuc2lvbiBjbGVhci4KKyAgICAgICAgV2UgYWxzbyBtb3ZlIG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eUJ5SW50IGZyb20gSklUT3BlcmF0aW9ucyB0byBERkdPcGVyYXRpb25zCisgICAg
ICAgIHNpbmNlIGl0IGlzIG9ubHkgdXNlZCBpbiBERkcgYW5kIEZUTC4KKworICAgICAgICBXaGls
ZSBmaXhpbmcgdGhpcyBidWcsIHdlIGZvdW5kIHRoYXQgb3VyIG9wX2luIGRvZXMgbm90IHJlY29y
ZCBPdXRPZkJvdW5kIGZlZWRiYWNrLgorICAgICAgICBUaGlzIGNhdXNlcyByZXBlYXRlZCBPU1Ig
ZXhpdCBhbmQgc2lnbmlmaWNhbnRseSByZWdyZXNzZXMgdGhlIHBlcmZvcm1hbmNlLiBXZSBvcGVu
ZWQKKyAgICAgICAgYSBidWcgdG8gdHJhY2sgdGhpcyBpc3N1ZVsxXS4KKworICAgICAgICBbMV06
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxOTIKKworICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisKKzIwMTctMTEtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKICAgICAgICAgUkVHUkVTU0lPTihyMjI1MzE0KTogW0xpbnV4XSBNb3JlIHRoYW4gMjAwMCBq
c2MgdGVzdHMgYXJlIGZhaWxpbmcgYWZ0ZXIgcjIyNTMxNAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGUxMTQ3Njk0OGYzODdjMGYyOGMzNTUxMmUw
NDZiODAxMjkzZTcwODYuLmM1NTRjMTMxMWZkNzI4NDY4MDZkZDFlOGExNzdjNTE3YzQ0ZGUyMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTgw
OCw2ICsxODA4LDE4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlQXJyYXlT
dG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsKQogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihhc09iamVjdChjZWxsKS0+ZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5QnlJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2VDZWxsLCBpbnQzMl90IHN1
YnNjcmlwdCwgaW50MzJfdCBpbnRlcm5hbE1ldGhvZFR5cGUpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2VDZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGlmIChVTkxJS0VMWShzdWJzY3JpcHQgPCAwKSkgewor
ICAgICAgICAvLyBHbyB0aGUgc2xvd2VzdCB3YXkgcG9zc2libGUgYmVjYXNlIG5lZ2F0aXZlIGlu
ZGljZXMgZG9uJ3QgdXNlIGluZGV4ZWQgc3RvcmFnZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbShleGVjLCBzdWJzY3JpcHQpLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZT4oaW50ZXJuYWxNZXRob2RUeXBlKSkpKTsKKyAgICB9CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMo
ZXhlYywgc3Vic2NyaXB0LCBzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZT4oaW50ZXJuYWxNZXRob2RUeXBlKSkpKTsKK30KKwogU3RyaW5nSW1wbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZXNvbHZlUm9wZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJp
bmcpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKaW5kZXggYWJmMDZiNjI3YjNjMGE4NTdlOTA5ZGY5MTk5NzlmNDY3
YzY3MzQwNS4uYWFkMGJlZmVmNjVjNTc3MDdjMDJjYTI5MDRjMGRhOTAyOWRlNmEyNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgwLDYgKzgwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldFByb3RvdHlwZU9mT2JqZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlCeUludChFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90LCBpbnQzMl90KTsKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwg
dm9pZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIHNpemVfdCkg
V1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdFbXB0eUFycmF5
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGJmZGE2
MzhlNmU0MTg5YjUxOTcxZWY0OTcxNjg2ZGY4ODg1MTE0MDguLjZjODJmMTcxMmI1NTA1Njg1M2Zm
OWI5NGM4MGFmYWI4YWFmMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTI3MSw3ICs1MjcxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtb3ZlVHJ1ZVRv
KHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSwgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZUdQUiwgaW5kZXhHUFIsIHN0
YXRpY19jYXN0PGludDMyX3Q+KG5vZGUtPmludGVybmFsTWV0aG9kVHlwZSgpKSkpOworICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludCwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgYmFzZUdQUiwgaW5kZXhHUFIsIHN0YXRpY19jYXN0PGludDMyX3Q+
KG5vZGUtPmludGVybmFsTWV0aG9kVHlwZSgpKSkpOwogICAgICAgICAKICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbm9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCAwZmRlNDgyNmY0NWE3YzNiNjU4Y2FmMjkxNTc4YmQyOTk5NDUyNmExLi5iMzM4
NjQ0NjYzZDdhNTBlZGQwMDgzMzFhODcyNmVhZDI5ODdlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTU3MzMsNyArNTcz
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5LCByZXN1bHRHUFIs
IGJhc2VHUFIsIGluZGV4R1BSLCBzdGF0aWNfY2FzdDxpbnQzMl90Pihub2RlLT5pbnRlcm5hbE1l
dGhvZFR5cGUoKSkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQsIHJlc3Vs
dEdQUiwgYmFzZUdQUiwgaW5kZXhHUFIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5vZGUtPmludGVy
bmFsTWV0aG9kVHlwZSgpKSkpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAxMWM2NzAx
MmJhMDVhMzIwYzExM2U3YzRiNTc5YWQ1NWIzM2I0ZGQwLi4wYjZmMDk1ZTQ4YTNlZTcyOTZkZGYz
MmJkNDAwMWE3MjAxMDZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC05NDI4LDcgKzk0MjgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0
LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgaW5kZXgsIGludGVybmFsTWV0aG9kVHlwZSkpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludCks
IG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgaW50ZXJuYWxNZXRob2RUeXBlKSkpOwogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTk0NjQsNyArOTQ2NCw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIAotICAgICAgICAgICAgICAgIHZtQ2Fs
bChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgaW50ZXJuYWxNZXRob2RUeXBlKSkpOworICAgICAgICAg
ICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUJ5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCBpbnRlcm5hbE1ldGhvZFR5
cGUpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYWNkMjNl
OGZmOGVhNjAxODQ4MTZiMGJiMjg3MDZjZGU0MWE0ZmNmNi4uYjZhYzg3NmFmMWI1NDI5YzcxZjJj
ZmE3MjBlMWVhMWRkNzBmOGMzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0yMzk4LDE0ICsyMzk4LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0
eUdlbmVyaWMoZXhlYywgYXNTdHJpbmcocHJvcGVydHlOYW1lKS0+dG9JZGVudGlmaWVyKGV4ZWMp
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlQ2VsbCwgaW50MzJfdCBzdWJzY3JpcHQs
IGludDMyX3QgaW50ZXJuYWxNZXRob2RUeXBlKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBiYXNlQ2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3Qt
Pmhhc1Byb3BlcnR5R2VuZXJpYyhleGVjLCBzdWJzY3JpcHQsIHN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlPihpbnRlcm5hbE1ldGhvZFR5cGUpKSkpOwotfQotICAg
IAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2YTU5NDFj
YmE3MGNhZjk0NTA0ZmM2MzE3MDcyNGI2ODJmMDc2OGJjLi5mN2MyYTRlMzUxNjM0M2EzOWFiOGUw
ZDgwYjZkYzkxNzc0NWI5ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtNDYxLDcgKzQ2MSw2IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4CiBpbnQz
Ml90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3Qs
IGludDMyX3QpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51
bWVyYXRvcihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV4dEVudW1lcmF0b3JQbmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQz
Ml90KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0luZGV4U3RyaW5nKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCA0NmZlMTMwYWY2YWQyMjNhNGIzMGNmMjE4ZDUyMmE2MzkzMzY1Y2Q5
Li42YjU5NzBkMjk0YjYxZTNjNDUxYWEwMWE5YzUyNjViZDJiYjBmNzY3IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE3LTExLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtERkddW0ZUTF0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5IGRvZXMgbm90IGNv
bnNpZGVyIG5lZ2F0aXZlIGludDMyX3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDE5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3RyZXNzL29wZXJhdGlvbi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1p
bnQzMi1hcnJheS1zdG9yYWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QxKToKKyAgICAgICAgKiBzdHJlc3Mvb3BlcmF0aW9uLWluLW1heS1oYXZlLW5lZ2F0
aXZlLWludDMyLWNvbnRpZ3VvdXMtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdDEpOgorICAgICAgICAqIHN0cmVzcy9vcGVyYXRpb24taW4tbWF5LWhh
dmUtbmVnYXRpdmUtaW50MzItZG91YmxlLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKiBzdHJlc3Mvb3BlcmF0aW9uLWluLW1h
eS1oYXZlLW5lZ2F0aXZlLWludDMyLWdlbmVyaWMtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAqIHN0cmVzcy9vcGVyYXRpb24t
aW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzItaW50MzItYXJyYXkuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAqIHN0cmVzcy9vcGVyYXRp
b24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAqIHN0cmVzcy9vcGVyYXRpb24taW4tbmVn
YXRpdmUtaW50MzItY2FzdC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0MSk6CisKIDIwMTctMTEtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFN0cmljdCBhbmQgc2xvcHB5IGZ1bmN0aW9ucyBzaG91bGRuJ3Qgc2hhcmUg
c3RydWN0dXJlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRpb24taW4tbWF5LWhh
dmUtbmVnYXRpdmUtaW50MzItYXJyYXktc3RvcmFnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL29wZXJh
dGlvbi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1pbnQzMi1hcnJheS1zdG9yYWdlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk4NmI5MjJmMmMwNDVlOTlkNWY5MGVjZjRmNGFjZTUzOWQ5YTAxNTgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRpb24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50
MzItYXJyYXktc3RvcmFnZS5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBrID0g
LTE7Cit2YXIgbzEgPSBbMjBdOworbzFba10gPSA0MjsKK2Vuc3VyZUFycmF5U3RvcmFnZShvMSk7
CisKK2Z1bmN0aW9uIHRlc3QxKG8pCit7CisgICAgcmV0dXJuIGsgaW4gbzsKK30KK25vSW5saW5l
KHRlc3QxKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0
ZXN0MShvMSksIHRydWUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3BlcmF0aW9uLWlu
LW1heS1oYXZlLW5lZ2F0aXZlLWludDMyLWNvbnRpZ3VvdXMtYXJyYXkuanMgYi9KU1Rlc3RzL3N0
cmVzcy9vcGVyYXRpb24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzItY29udGlndW91cy1hcnJh
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTc0YmE3ZmNjYjQ2ZGIwZmQ2MzA5MDg4MDFhYTUwMzFlNjM1NmUy
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3BlcmF0aW9uLWluLW1heS1oYXZl
LW5lZ2F0aXZlLWludDMyLWNvbnRpZ3VvdXMtYXJyYXkuanMKQEAgLTAsMCArMSwxOCBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCit2YXIgayA9IC0xOwordmFyIG8xID0gWyJDb2NvYSJdOworbzFba10gPSA0MjsKKwor
ZnVuY3Rpb24gdGVzdDEobykKK3sKKyAgICByZXR1cm4gayBpbiBvOworfQorbm9JbmxpbmUodGVz
dDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3Qx
KG8xKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRpb24taW4tbWF5
LWhhdmUtbmVnYXRpdmUtaW50MzItZG91YmxlLWFycmF5LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3Bl
cmF0aW9uLWluLW1heS1oYXZlLW5lZ2F0aXZlLWludDMyLWRvdWJsZS1hcnJheS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMzAxNDE4NzZhMDdjYzRkZmI1ZTMyNzQ5ZTgyZjUyMmE4MWM5YTZjCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3BlcmF0aW9uLWluLW1heS1oYXZlLW5lZ2F0aXZlLWlu
dDMyLWRvdWJsZS1hcnJheS5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBrID0g
LTE7Cit2YXIgbzEgPSBbNDIuNV07CitvMVtrXSA9IDMwMC4yOworCitmdW5jdGlvbiB0ZXN0MShv
KQoreworICAgIHJldHVybiBrIGluIG87Cit9Citub0lubGluZSh0ZXN0MSk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdDEobzEpLCB0cnVlKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29wZXJhdGlvbi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1p
bnQzMi1nZW5lcmljLWFycmF5LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3BlcmF0aW9uLWluLW1heS1o
YXZlLW5lZ2F0aXZlLWludDMyLWdlbmVyaWMtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVmYjI2MzA0
ZGI0ZDA4MDg2MmZhMTlmMWYzYjZmYTRlYTc3NDM5MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL29wZXJhdGlvbi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1pbnQzMi1nZW5lcmljLWFy
cmF5LmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGsgPSAtMTsKK3ZhciBvMSA9
IFtdOworbzFba10gPSA0MjsKKworZnVuY3Rpb24gdGVzdDEobykKK3sKKyAgICByZXR1cm4gayBp
biBvOworfQorbm9JbmxpbmUodGVzdDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytp
KQorICAgIHNob3VsZEJlKHRlc3QxKG8xKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9vcGVyYXRpb24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzItaW50MzItYXJyYXkuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRpb24taW4tbWF5LWhhdmUtbmVnYXRpdmUtaW50MzItaW50
MzItYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkNmRhOThkN2M3YTg1MmQzOGI0MjI5NWRhZTNmNzkw
ODNjMWE5YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29wZXJhdGlvbi1pbi1t
YXktaGF2ZS1uZWdhdGl2ZS1pbnQzMi1pbnQzMi1hcnJheS5qcwpAQCAtMCwwICsxLDE4IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK3ZhciBrID0gLTE7Cit2YXIgbzEgPSBbMjBdOworbzFba10gPSA0MjsKKworZnVu
Y3Rpb24gdGVzdDEobykKK3sKKyAgICByZXR1cm4gayBpbiBvOworfQorbm9JbmxpbmUodGVzdDEp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3QxKG8x
KSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRpb24taW4tbWF5LWhh
dmUtbmVnYXRpdmUtaW50MzIuanMgYi9KU1Rlc3RzL3N0cmVzcy9vcGVyYXRpb24taW4tbWF5LWhh
dmUtbmVnYXRpdmUtaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YjJlZTIzMjk4YThhNjQ3MTgyYzJh
MGIzNGZlODg1NjU4ZDgwYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29wZXJh
dGlvbi1pbi1tYXktaGF2ZS1uZWdhdGl2ZS1pbnQzMi5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK3ZhciBrID0gLTE7Cit2YXIgbzEgPSB7fTsKK28xW2tdID0gdHJ1ZTsKK3ZhciBvMiA9
IHt9OworCitmdW5jdGlvbiB0ZXN0MShvKQoreworICAgIHJldHVybiBrIGluIG87Cit9Citub0lu
bGluZSh0ZXN0MSk7CisKK2Z1bmN0aW9uIHRlc3QyKG8pCit7CisgICAgcmV0dXJuIGsgaW4gbzsK
K30KK25vSW5saW5lKHRlc3QyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAg
ICBzaG91bGRCZSh0ZXN0MShvMSksIHRydWUpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsr
aSkKKyAgICBzaG91bGRCZSh0ZXN0MShvMiksIGZhbHNlKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0MihvMiksIGZhbHNlKTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdDIobzEpLCB0cnVlKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL29wZXJhdGlvbi1pbi1uZWdhdGl2ZS1pbnQzMi1jYXN0Lmpz
IGIvSlNUZXN0cy9zdHJlc3Mvb3BlcmF0aW9uLWluLW5lZ2F0aXZlLWludDMyLWNhc3QuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjg1MjQ1YzQxNTFkY2Q0MmU1MDQzZmIzNGE4ZTYxNGM2ZDQyZmE2YQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29wZXJhdGlvbi1pbi1uZWdhdGl2ZS1pbnQzMi1j
YXN0LmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIElOVDMyX01JTiA9IC0yMTQ3
NDgzNjQ4OwordmFyIElOVDMyX01JTl9JTl9VSU5UMzIgPSAweDgwMDAwMDAwOwordmFyIG8xID0g
W107CitvMVtJTlQzMl9NSU5fSU5fVUlOVDMyXSA9IHRydWU7CitlbnN1cmVBcnJheVN0b3JhZ2Uo
bzEpOworCitmdW5jdGlvbiB0ZXN0MShvLCBrZXkpCit7CisgICAgcmV0dXJuIGtleSBpbiBvOwor
fQorbm9JbmxpbmUodGVzdDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAg
IHNob3VsZEJlKHRlc3QxKG8xLCBJTlQzMl9NSU4pLCBmYWxzZSk7Cg==
</data>
<flag name="review"
          id="347167"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>