<?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>211935</bug_id>
          
          <creation_ts>2020-05-14 17:12:40 -0700</creation_ts>
          <short_desc>GetByVal and PutByVal runtime operations shouldn&apos;t fall off a performance cliff when the property is an integer boxed as a double</short_desc>
          <delta_ts>2020-05-14 23:56:16 -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>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>211877</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652880</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-14 17:12:40 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652918</commentid>
    <comment_count>1</comment_count>
      <attachid>399442</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-14 19:04:19 -0700</bug_when>
    <thetext>Created attachment 399442
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652919</commentid>
    <comment_count>2</comment_count>
      <attachid>399442</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-14 19:10:07 -0700</bug_when>
    <thetext>Comment on attachment 399442
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652920</commentid>
    <comment_count>3</comment_count>
      <attachid>399442</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-14 19:21:10 -0700</bug_when>
    <thetext>Comment on attachment 399442
patch

r=me too.  The style complaint seems legit.  Please fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652934</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-14 20:28:50 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 399442 [details]
&gt; patch
&gt; 
&gt; r=me too.  The style complaint seems legit.  Please fix.

I agree, but the code is unrelated to this patch. 
I can drive by fix it though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652942</commentid>
    <comment_count>5</comment_count>
      <attachid>399453</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-14 21:24:49 -0700</bug_when>
    <thetext>Created attachment 399453
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652957</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-14 23:55:11 -0700</bug_when>
    <thetext>Committed r261731: &lt;https://trac.webkit.org/changeset/261731&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399453.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652958</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-14 23:56:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/63259625&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399442</attachid>
            <date>2020-05-14 19:04:19 -0700</date>
            <delta_ts>2020-05-14 21:24:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17248</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjE3MjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEdldEJ5VmFsIGFuZCBQdXRCeVZhbCBydW50aW1lIG9wZXJhdGlvbnMg
c2hvdWxkbid0IGZhbGwgb2ZmIGEgcGVyZm9ybWFuY2UgY2xpZmYgd2hlbiB0aGUgcHJvcGVydHkg
aXMgYW4gaW50ZWdlciBib3hlZCBhcyBhIGRvdWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZ2V0LWFuZC1wdXQtYnkt
dmFsLWRvdWJsZS1pbmRleC1kb250LWZhbGwtb2ZmLWEtY2xpZmYuanM6IEFkZGVkLgorICAgICAg
ICAodGVzdCk6CisKIDIwMjAtMDUtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5kZWNpZGVkIEFycmF5cyBzaG91bGRuJ3QgbmVlZCB0byBiZSBP
cmlnaW5hbEFycmF5IHRvIGNvdmVydCB0byBHZXRBcnJheUxlbmd0aApJbmRleDogSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZ2V0LWFuZC1wdXQtYnktdmFsLWRvdWJsZS1pbmRleC1kb250LWZhbGwt
b2ZmLWEtY2xpZmYuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0
LWFuZC1wdXQtYnktdmFsLWRvdWJsZS1pbmRleC1kb250LWZhbGwtb2ZmLWEtY2xpZmYuanMJKG5v
bmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0LWFuZC1wdXQtYnktdmFs
LWRvdWJsZS1pbmRleC1kb250LWZhbGwtb2ZmLWEtY2xpZmYuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NyBAQAorY29uc3QgbnVtUGl4ZWxzID0gMjQwMDAwMDA7CitsZXQgc291cmNlID0g
bmV3IFVpbnQ4QXJyYXkobnVtUGl4ZWxzKTsKK2xldCB0YXJnZXQgPSBuZXcgVWludDhBcnJheShu
dW1QaXhlbHMpOworCitmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkgewor
ICAgIGlmIChNYXRoLnJhbmRvbSgpID4gMC4zNSkKKyAgICAgICAgc291cmNlW2ldID0gMDsKKyAg
ICBlbHNlCisgICAgICAgIHNvdXJjZVtpXSA9IDE7Cit9CisKK2NvbnN0IGFyZWEgPSB7CisgICAg
eDogYXNEb3VibGVOdW1iZXIoMS4wKSwKKyAgICB5OiBhc0RvdWJsZU51bWJlcigxLjApLAorICAg
IHgyOiBhc0RvdWJsZU51bWJlcigxMDAxLjApLAorICAgIHkyOiBhc0RvdWJsZU51bWJlcigxMDAx
LjApLAorICAgIHdpZHRoOiBhc0RvdWJsZU51bWJlcigxMDAwLjApLAorICAgIGhlaWdodDogYXNE
b3VibGVOdW1iZXIoMTAwMC4wKSwKKyAgICBzZWdtZW50YXRpb25XaWR0aDogYXNEb3VibGVOdW1i
ZXIoNjAwMC4wKSwKKyAgICBlZGdlc0NhY2hlV2lkdGg6IGFzRG91YmxlTnVtYmVyKDYwMDAuMCks
Cit9OworCitmdW5jdGlvbiB0ZXN0KHNvdXJjZSwgdGFyZ2V0LCBhcmVhKSB7CisgICAgLy8gZmFz
dCBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbid0IGhhbmRsZSBlZGdlcyBvZiBzZWdtZW50YXRpb24g
YXJlYQorICAgIGNvbnN0IHNlZ21lbnRhdGlvbldpZHRoID0gYXJlYS5zZWdtZW50YXRpb25XaWR0
aDsKKyAgICBjb25zdCBlZGdlc0NhY2hlV2lkdGggPSBhcmVhLmVkZ2VzQ2FjaGVXaWR0aDsKKyAg
ICBjb25zdCB7eDIsIHkyfSA9IGFyZWE7CisKKyAgICBmb3IgKGxldCB5ID0gYXJlYS55OyB5IDwg
eTI7ICsreSkgeworICAgICAgICBmb3IgKGxldCB4ID0gYXJlYS54OyB4IDwgeDI7ICsreCkgewor
ICAgICAgICAgICAgY29uc3Qgc291cmNlSW5kZXggPSAoeSAqIHNlZ21lbnRhdGlvbldpZHRoKSAr
IHg7CisgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtzb3VyY2VJbmRleF07CisKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSAhPT0gc291cmNlW3NvdXJjZUluZGV4IC0gMV0gfHwKKyAgICAg
ICAgICAgICAgICB2YWx1ZSAhPT0gc291cmNlW3NvdXJjZUluZGV4ICsgMV0gfHwKKyAgICAgICAg
ICAgICAgICB2YWx1ZSAhPT0gc291cmNlW3NvdXJjZUluZGV4IC0gc2VnbWVudGF0aW9uV2lkdGhd
IHx8CisgICAgICAgICAgICAgICAgdmFsdWUgIT09IHNvdXJjZVtzb3VyY2VJbmRleCArIHNlZ21l
bnRhdGlvbldpZHRoXSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB0YXJn
ZXRJbmRleCA9ICh5ICogZWRnZXNDYWNoZVdpZHRoKSArIHg7CisgICAgICAgICAgICAgICAgdGFy
Z2V0W3RhcmdldEluZGV4XSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
Citub0lubGluZSh0ZXN0KTsKKwordGVzdChzb3VyY2UsIHRhcmdldCwgYXJlYSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTcwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0w
NS0xNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBHZXRCeVZh
bCBhbmQgUHV0QnlWYWwgcnVudGltZSBvcGVyYXRpb25zIHNob3VsZG4ndCBmYWxsIG9mZiBhIHBl
cmZvcm1hbmNlIGNsaWZmIHdoZW4gdGhlIHByb3BlcnR5IGlzIGFuIGludGVnZXIgYm94ZWQgYXMg
YSBkb3VibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMTkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZXJlIHdlcmUgcGFydHMgaW4gdGhlIHJ1bnRpbWUgZm9yIGdldF9ieV92YWwgdGhhdCB3ZXJl
bid0IHByb3Blcmx5IGhhbmRsaW5nCisgICAgICAgIGludHMgYm94ZWQgYXMgZG91YmxlcyBhbG9u
ZyB0aGUgZmFzdCBwYXRoLiBUaGlzIGNvdWxkIGxlYWQgdG8gdGVycmlibGUKKyAgICAgICAgcGVy
Zm9ybWFuY2UgYXMgd2UgY291bGQgZ28gZnJvbSBkb3VibGUgLT4gc3RyaW5nIC0+IGludCB3aGls
ZSBjb252ZXJ0aW5nIHRoZQorICAgICAgICBzdWJzY3JpcHQgaW50byBhIHByb3BlcnR5IHRvIGFj
Y2Vzcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCwgYW5kIHJlbW92
ZXMgdGhlIGR1cGxpY2F0ZSBjb2RlIHdlIGhhZCB0aHJvdWdob3V0IHRoZQorICAgICAgICBjb2Rl
YmFzZSB0aGF0IGRvZXMgdGhpcyBjb252ZXJzaW9uLiBJJ20gYWRkaW5nIGEgbmV3IGZ1bmN0aW9u
cyB0cnlHZXRBc1VpbnQzMkluZGV4CisgICAgICAgIGFuZCB0cnlHZXRBc0ludDMyIHdoaWNoIHdp
bGwgaGFuZGxlIHRoZSBkb3VibGUgdG8gaW50IGNvbnZlcnNpb24uCisgICAgICAgIAorICAgICAg
ICBUaGlzIGlzIGEgMTB4IHNwZWVkdXAgb24gdGhlIG1pY3JvYmVuY2htYXJrIGdldC1hbmQtcHV0
LWJ5LXZhbC1kb3VibGUtaW5kZXgtZG9udC1mYWxsLW9mZi1hLWNsaWZmLmpzCisKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHV0QnlWYWxJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpn
ZXRCeVZhbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uQXNEb3VibGVO
dW1iZXIpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRyeUdldEFz
VWludDMySW5kZXgpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0cnlHZXRBc0ludDMyKToKKwog
MjAyMC0wNS0xMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBpdGVyYXRpb24gYnl0ZWNvZGVzIG5lZWQgdG8gaGFuZGxlIG9zciBleGl0aW5nIGZyb20g
aW5saW5lZCBnZXR0ZXIgZnJhbWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24g
MjYxNzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3Myw2ICszNzMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRvdGFsQ29t
cGlsZVRpbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
ayhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Bc0RvdWJsZU51bWJlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiBzdHJ1Y3QgU2NyaXB0IHsKICAgICBlbnVtIGNsYXNzIFN0cmljdE1vZGUgewpA
QCAtNjQxLDYgKzY0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAidG90
YWxDb21waWxlVGltZSIsIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZSwgMCk7CiAKICAgICAgICAg
YWRkRnVuY3Rpb24odm0sICJzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayIsIGZ1bmN0aW9u
U2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2ssIDEpOworCisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAiYXNEb3VibGVOdW1iZXIiLCBmdW5jdGlvbkFzRG91YmxlTnVtYmVyLCAxKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBhZGRGdW5jdGlvbihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QsIGNv
bnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVu
dHMpCkBAIC0yNDkyLDYgKzI0OTUsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblNldAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc0RvdWJsZU51bWJlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGRvdWJsZSBudW0gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51
bWJlcihudW0pKTsKK30KKwogLy8gVXNlIFNFSCBmb3IgUmVsZWFzZSBidWlsZHMgb25seSB0byBn
ZXQgcmlkIG9mIHRoZSBjcmFzaCByZXBvcnQgZGlhbG9nCiAvLyAobHVja2lseSB0aGUgc2FtZSB0
ZXN0cyBmYWlsIGluIFJlbGVhc2UgYW5kIERlYnVnIGJ1aWxkcyBzbyBmYXIpLiBOZWVkIHRvCiAv
LyBiZSBpbiBhIHNlcGFyYXRlIG1haW4gZnVuY3Rpb24gYmVjYXVzZSB0aGUganNjbWFpbiBmdW5j
dGlvbiByZXF1aXJlcyBvYmplY3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjYxNzA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDI0ICsxMjks
MTIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbEludGVybgogICAgIEpTVmFs
dWUgcHJvcGVydHkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBpZiAoTElL
RUxZKHByb3BlcnR5LmlzVUludDMyKCkpKSB7Ci0gICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUs
IEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94
ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KLSAg
ICAgICAgQVNTRVJUKGlzSW5kZXgocHJvcGVydHkuYXNVSW50MzIoKSkpOworICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwcm9wZXJ0eS50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsK
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBwdXRCeVZhbDxzdHJpY3QsIGRpcmVj
dD4oZ2xvYmFsT2JqZWN0LCB2bSwgYmFzZVZhbHVlLCBwcm9wZXJ0eS5hc1VJbnQzMigpLCB2YWx1
ZSk7CisgICAgICAgIHB1dEJ5VmFsPHN0cmljdCwgZGlyZWN0PihnbG9iYWxPYmplY3QsIHZtLCBi
YXNlVmFsdWUsICppbmRleCwgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKLSAgICAgICAgZG91YmxlIHByb3BlcnR5QXNEb3Vi
bGUgPSBwcm9wZXJ0eS5hc0RvdWJsZSgpOwotICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUlu
dDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwotICAgICAgICBp
ZiAocHJvcGVydHlBc0RvdWJsZSA9PSBwcm9wZXJ0eUFzVUludDMyICYmIGlzSW5kZXgocHJvcGVy
dHlBc1VJbnQzMikpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAg
IHB1dEJ5VmFsPHN0cmljdCwgZGlyZWN0PihnbG9iYWxPYmplY3QsIHZtLCBiYXNlVmFsdWUsIHBy
b3BlcnR5QXNVSW50MzIsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyb3dz
IGFuIGV4Y2VwdGlvbi4KICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LnRvUHJvcGVy
dHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwpAQCAtNjY4LDE2ICs2NTYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogCiAgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkUHJvcGVydHkpOwogCi0gICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpCi0gICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxXaXRoSW5kZXgoZ2xvYmFsT2JqZWN0LCBi
YXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKSk7Ci0KLSAgICBpZiAocHJvcGVydHkuaXNEb3VibGUo
KSkgewotICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91Ymxl
KCk7Ci0gICAgICAgIHVpbnQzMl90IHByb3BlcnR5QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4ocHJvcGVydHlBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eUFzVUludDMyID09
IHByb3BlcnR5QXNEb3VibGUpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGdldEJ5VmFsV2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlBc1VJbnQzMikp
OworICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwcm9wZXJ0eS50cnlHZXRBc1Vp
bnQzMkluZGV4KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxX
aXRoSW5kZXgoZ2xvYmFsT2JqZWN0LCBiYXNlLCAqaW5kZXgpKTsKIAotICAgIH0gZWxzZSBpZiAo
cHJvcGVydHkuaXNTdHJpbmcoKSkgeworICAgIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7CiAg
ICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2UtPnN0cnVjdHVyZSh2bSk7CiAgICAg
ICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbVN0cmluZyA9IGFz
U3RyaW5nKHByb3BlcnR5KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAg
LTE1NzEsOCArMTU1Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2UKICAgICB9CiAgICAgCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgUHJvcGVydHlT
bG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICBpZiAoc3Vi
c2NyaXB0LmlzVUludDMyKCkpIHsKLSAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJ
bnQzMigpOworICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5
R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAg
ICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5n
KGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MjYxNzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzE1LDkgKzcxNSw5IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChMSUtFTFko
c3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFz
VUludDMyKCk7CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNr
bHkoaSwgdmFsdWUpKSB7CkBAIC03NTcsMTEgKzc1Nyw5IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1
dEJ5VmFsKEpTR2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKExJS0VM
WShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKLSAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwg
SlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hl
ZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgorICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gbWF5YmVJbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1Vp
bnQzMkluZGV4KCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwot
ICAgICAgICB1aW50MzJfdCBpbmRleCA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBB
U1NFUlQoaXNJbmRleChpbmRleCkpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9ICptYXliZUlu
ZGV4OwogCiAgICAgICAgIHN3aXRjaCAoYmFzZU9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC03ODEsMTcgKzc3OSw2IEBA
IHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChzdWJzY3JpcHQuaXNEb3VibGUoKSkgewotICAgICAgICBkb3Vi
bGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKLSAgICAgICAgdWlu
dDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0
QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNV
SW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vi
c2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0
SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFu
IG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0
eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTE5NzAsOCArMTk1Nyw4IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlMKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChzdWJzY3JpcHQuaXNJbnQzMigpKSB7Ci0gICAgICAgIGludDMyX3QgaSA9IHN1YnNjcmlw
dC5hc0ludDMyKCk7CisgICAgaWYgKE9wdGlvbmFsPGludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAg
IGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChpID49IDAgJiYg
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9i
YWxPYmplY3QsIGkpKTsKQEAgLTIwODMsMTUgKzIwNzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
KSkgewogICAgICAgICBKU0NlbGwqIGJhc2UgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAKLSAgICAg
ICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGdldEJ5VmFsV2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHku
YXNVSW50MzIoKSkpOworICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcHJv
cGVydHkudHJ5R2V0QXNVaW50MzJJbmRleCgpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBnZXRCeVZhbFdpdGhJbmRleChnbG9iYWxPYmplY3QsIGJhc2UsICppbmRleCkp
OwogCi0gICAgICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7Ci0gICAgICAgICAgICBkb3Vi
bGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7Ci0gICAgICAgICAgICB1
aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5
QXNEb3VibGUpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlB
c0RvdWJsZSAmJiBpc0luZGV4KHByb3BlcnR5QXNVSW50MzIpKQotICAgICAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxXaXRoSW5kZXgoZ2xvYmFsT2JqZWN0LCBi
YXNlLCBwcm9wZXJ0eUFzVUludDMyKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNT
dHJpbmcoKSkgeworICAgICAgICBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkgewogICAgICAgICAg
ICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAg
ICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CiAg
ICAgICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlzdGluZ0F0b21TdHJpbmcg
PSBhc1N0cmluZyhwcm9wZXJ0eSktPnRvRXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDI2MTcwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsOCArMTAxMiw4IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0KICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKLSAgICAgICAgdWludDMyX3QgaSA9
IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIHVpbnQzMl90IGkg
PSAqaW5kZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CiAKQEAgLTEwOTEsOCArMTA5MSw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmEKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0
ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIAotICAgIGlmIChMSUtFTFkoc3Vic2Ny
aXB0LmlzVUludDMyKCkpKSB7Ci0gICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50
MzIoKTsKKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdl
dEFzVWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAg
ICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0
SW5kZXhRdWlja2x5KGksIHZhbHVlKSkKQEAgLTExMjMsMjIgKzExMjMsMTEgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YQogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VW
YWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlz
U3RyaWN0KCk7Ci0gICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKLSAgICAg
ICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1
ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2
YWxpZCBhcnJheSBpbmRpY2VzLgotICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNV
SW50MzIoKSkpOwotICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGly
ZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOworICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQo
KTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKLSAgICAgICAgZG91
YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7Ci0gICAgICAgIHVp
bnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1YnNjcmlw
dEFzRG91YmxlKTsKLSAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFz
VUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7Ci0gICAgICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2
YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERp
cmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwotICAgICAgICAgICAgTExJTlRfRU5EKCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KICAgICAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5n
IHRocmV3IGFuIGV4Y2VwdGlvbi4KICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNl
cHRpb24oKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCShyZXZpc2lvbiAyNjE3MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsOCBAQCBwdWJsaWM6CiAK
ICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNv
bnN0OworICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0cnlHZXRBc1VpbnQzMkluZGV4KCk7CisgICAg
T3B0aW9uYWw8aW50MzJfdD4gdHJ5R2V0QXNJbnQzMigpOwogICAgIGludDY0X3QgYXNBbnlJbnQo
KSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMkFzQW55SW50KCkgY29uc3Q7CiAgICAgaW50
MzJfdCBhc0ludDMyQXNBbnlJbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjYxNzA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMzQgQEAgaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc051
bWJlcigpIGNvbnN0CiAgICAgcmV0dXJuIGlzSW50MzIoKSA/IGFzSW50MzIoKSA6IGFzRG91Ymxl
KCk7CiB9CiAKK2lubGluZSBPcHRpb25hbDx1aW50MzJfdD4gSlNWYWx1ZTo6dHJ5R2V0QXNVaW50
MzJJbmRleCgpCit7CisgICAgaWYgKGlzVUludDMyKCkpIHsKKyAgICAgICAgQVNTRVJUKGlzSW5k
ZXgoYXNVSW50MzIoKSkpOworICAgICAgICByZXR1cm4gYXNVSW50MzIoKTsKKyAgICB9CisgICAg
aWYgKGlzTnVtYmVyKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IGFzTnVtYmVyKCk7Cisg
ICAgICAgIHVpbnQzMl90IGFzVWludCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihudW1iZXIpOwor
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihhc1VpbnQpID09IG51bWJlciAmJiBpc0lu
ZGV4KGFzVWludCkpCisgICAgICAgICAgICByZXR1cm4gYXNVaW50OworICAgIH0KKyAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUgT3B0aW9uYWw8aW50MzJfdD4gSlNWYWx1ZTo6
dHJ5R2V0QXNJbnQzMigpCit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFz
SW50MzIoKTsKKyAgICBpZiAoaXNOdW1iZXIoKSkgeworICAgICAgICBkb3VibGUgbnVtYmVyID0g
YXNOdW1iZXIoKTsKKyAgICAgICAgaW50MzJfdCBhc0ludCA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KG51bWJlcik7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGFzSW50KSA9PSBudW1i
ZXIpCisgICAgICAgICAgICByZXR1cm4gYXNJbnQ7CisgICAgfQorICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Cit9CisKIGlubGluZSBKU1ZhbHVlIGpzTmFOKCkKIHsKICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUE5hTik7Cg==
</data>
<flag name="review"
          id="414872"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399453</attachid>
            <date>2020-05-14 21:24:49 -0700</date>
            <delta_ts>2020-05-14 23:55:12 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17611</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjE3MzApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEdldEJ5VmFsIGFuZCBQdXRCeVZhbCBydW50aW1lIG9wZXJhdGlvbnMg
c2hvdWxkbid0IGZhbGwgb2ZmIGEgcGVyZm9ybWFuY2UgY2xpZmYgd2hlbiB0aGUgcHJvcGVydHkg
aXMgYW4gaW50ZWdlciBib3hlZCBhcyBhIGRvdWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVz
dWtlIFN1enVraSBhbmQgTWFyayBMYW0uCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZ2V0
LWFuZC1wdXQtYnktdmFsLWRvdWJsZS1pbmRleC1kb250LWZhbGwtb2ZmLWEtY2xpZmYuanM6IEFk
ZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMjAtMDUtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFtFU05leHRdIGVuYWJsZSBsb2dpY2FsIGFzc2lnbm1l
bnQgb3BlcmF0b3JzIGJ5IGRlZmF1bHQKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2dl
dC1hbmQtcHV0LWJ5LXZhbC1kb3VibGUtaW5kZXgtZG9udC1mYWxsLW9mZi1hLWNsaWZmLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2dldC1hbmQtcHV0LWJ5LXZhbC1k
b3VibGUtaW5kZXgtZG9udC1mYWxsLW9mZi1hLWNsaWZmLmpzCShub25leGlzdGVudCkKKysrIEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2dldC1hbmQtcHV0LWJ5LXZhbC1kb3VibGUtaW5kZXgtZG9u
dC1mYWxsLW9mZi1hLWNsaWZmLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKK2Nv
bnN0IG51bVBpeGVscyA9IDI0MDAwMDAwOworbGV0IHNvdXJjZSA9IG5ldyBVaW50OEFycmF5KG51
bVBpeGVscyk7CitsZXQgdGFyZ2V0ID0gbmV3IFVpbnQ4QXJyYXkobnVtUGl4ZWxzKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyArK2kpIHsKKyAgICBpZiAoTWF0aC5yYW5k
b20oKSA+IDAuMzUpCisgICAgICAgIHNvdXJjZVtpXSA9IDA7CisgICAgZWxzZQorICAgICAgICBz
b3VyY2VbaV0gPSAxOworfQorCitjb25zdCBhcmVhID0geworICAgIHg6IGFzRG91YmxlTnVtYmVy
KDEuMCksCisgICAgeTogYXNEb3VibGVOdW1iZXIoMS4wKSwKKyAgICB4MjogYXNEb3VibGVOdW1i
ZXIoMTAwMS4wKSwKKyAgICB5MjogYXNEb3VibGVOdW1iZXIoMTAwMS4wKSwKKyAgICB3aWR0aDog
YXNEb3VibGVOdW1iZXIoMTAwMC4wKSwKKyAgICBoZWlnaHQ6IGFzRG91YmxlTnVtYmVyKDEwMDAu
MCksCisgICAgc2VnbWVudGF0aW9uV2lkdGg6IGFzRG91YmxlTnVtYmVyKDYwMDAuMCksCisgICAg
ZWRnZXNDYWNoZVdpZHRoOiBhc0RvdWJsZU51bWJlcig2MDAwLjApLAorfTsKKworZnVuY3Rpb24g
dGVzdChzb3VyY2UsIHRhcmdldCwgYXJlYSkgeworICAgIC8vIGZhc3QgaW1wbGVtZW50YXRpb24g
dGhhdCBjYW4ndCBoYW5kbGUgZWRnZXMgb2Ygc2VnbWVudGF0aW9uIGFyZWEKKyAgICBjb25zdCBz
ZWdtZW50YXRpb25XaWR0aCA9IGFyZWEuc2VnbWVudGF0aW9uV2lkdGg7CisgICAgY29uc3QgZWRn
ZXNDYWNoZVdpZHRoID0gYXJlYS5lZGdlc0NhY2hlV2lkdGg7CisgICAgY29uc3Qge3gyLCB5Mn0g
PSBhcmVhOworCisgICAgZm9yIChsZXQgeSA9IGFyZWEueTsgeSA8IHkyOyArK3kpIHsKKyAgICAg
ICAgZm9yIChsZXQgeCA9IGFyZWEueDsgeCA8IHgyOyArK3gpIHsKKyAgICAgICAgICAgIGNvbnN0
IHNvdXJjZUluZGV4ID0gKHkgKiBzZWdtZW50YXRpb25XaWR0aCkgKyB4OworICAgICAgICAgICAg
Y29uc3QgdmFsdWUgPSBzb3VyY2Vbc291cmNlSW5kZXhdOworCisgICAgICAgICAgICBpZiAodmFs
dWUgIT09IHNvdXJjZVtzb3VyY2VJbmRleCAtIDFdIHx8CisgICAgICAgICAgICAgICAgdmFsdWUg
IT09IHNvdXJjZVtzb3VyY2VJbmRleCArIDFdIHx8CisgICAgICAgICAgICAgICAgdmFsdWUgIT09
IHNvdXJjZVtzb3VyY2VJbmRleCAtIHNlZ21lbnRhdGlvbldpZHRoXSB8fAorICAgICAgICAgICAg
ICAgIHZhbHVlICE9PSBzb3VyY2Vbc291cmNlSW5kZXggKyBzZWdtZW50YXRpb25XaWR0aF0pCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSAoeSAqIGVk
Z2VzQ2FjaGVXaWR0aCkgKyB4OworICAgICAgICAgICAgICAgIHRhcmdldFt0YXJnZXRJbmRleF0g
PSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorbm9JbmxpbmUodGVzdCk7
CisKK3Rlc3Qoc291cmNlLCB0YXJnZXQsIGFyZWEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNjE3MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMDUtMTQgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsIHJ1
bnRpbWUgb3BlcmF0aW9ucyBzaG91bGRuJ3QgZmFsbCBvZmYgYSBwZXJmb3JtYW5jZSBjbGlmZiB3
aGVuIHRoZSBwcm9wZXJ0eSBpcyBhbiBpbnRlZ2VyIGJveGVkIGFzIGEgZG91YmxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE5MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBNYXJrIExhbS4KKworICAgICAgICBUaGVy
ZSB3ZXJlIHBhcnRzIGluIHRoZSBydW50aW1lIGZvciBnZXRfYnlfdmFsIHRoYXQgd2VyZW4ndCBw
cm9wZXJseSBoYW5kbGluZworICAgICAgICBpbnRzIGJveGVkIGFzIGRvdWJsZXMgYWxvbmcgdGhl
IGZhc3QgcGF0aC4gVGhpcyBjb3VsZCBsZWFkIHRvIHRlcnJpYmxlCisgICAgICAgIHBlcmZvcm1h
bmNlIGFzIHdlIGNvdWxkIGdvIGZyb20gZG91YmxlIC0+IHN0cmluZyAtPiBpbnQgd2hpbGUgY29u
dmVydGluZyB0aGUKKyAgICAgICAgc3Vic2NyaXB0IGludG8gYSBwcm9wZXJ0eSB0byBhY2Nlc3Mu
CisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoYXQsIGFuZCByZW1vdmVzIHRo
ZSBkdXBsaWNhdGUgY29kZSB3ZSBoYWQgdGhyb3VnaG91dCB0aGUKKyAgICAgICAgY29kZWJhc2Ug
dGhhdCBkb2VzIHRoaXMgY29udmVyc2lvbi4gSSdtIGFkZGluZyBhIG5ldyBmdW5jdGlvbnMgdHJ5
R2V0QXNVaW50MzJJbmRleAorICAgICAgICBhbmQgdHJ5R2V0QXNJbnQzMiB3aGljaCB3aWxsIGhh
bmRsZSB0aGUgZG91YmxlIHRvIGludCBjb252ZXJzaW9uLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBhIDEweCBzcGVlZHVwIG9uIHRoZSBtaWNyb2JlbmNobWFyayBnZXQtYW5kLXB1dC1ieS12
YWwtZG91YmxlLWluZGV4LWRvbnQtZmFsbC1vZmYtYS1jbGlmZi5qcworCisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsSW50ZXJuYWwp
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0QnlW
YWwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkFzRG91YmxlTnVtYmVy
KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0cnlHZXRBc1VpbnQz
MkluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dHJ5R2V0QXNJbnQzMik6CisKIDIwMjAt
MDUtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtFU05l
eHRdIGVuYWJsZSBsb2dpY2FsIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGJ5IGRlZmF1bHQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyNjE3MzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDYgKzM3Myw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uVG90YWxDb21waWxlVGltZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzRG91Ymxl
TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0cnVjdCBTY3JpcHQgewog
ICAgIGVudW0gY2xhc3MgU3RyaWN0TW9kZSB7CkBAIC02NDEsNiArNjQyLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJ0b3RhbENvbXBpbGVUaW1lIiwgZnVuY3Rpb25Ub3Rh
bENvbXBpbGVUaW1lLCAwKTsKIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFVuaGFuZGxl
ZFJlamVjdGlvbkNhbGxiYWNrIiwgZnVuY3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
aywgMSk7CisKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJhc0RvdWJsZU51bWJlciIsIGZ1bmN0
aW9uQXNEb3VibGVOdW1iZXIsIDEpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFkZEZ1bmN0aW9u
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKQEAgLTI0OTIsNiArMjQ5NSwxNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkFzRG91YmxlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgZG91Ymxl
IG51bSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKG51bSkpOworfQorCiAvLyBVc2UgU0VI
IGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhlIGNyYXNoIHJlcG9ydCBk
aWFsb2cKIC8vIChsdWNraWx5IHRoZSBzYW1lIHRlc3RzIGZhaWwgaW4gUmVsZWFzZSBhbmQgRGVi
dWcgYnVpbGRzIHNvIGZhcikuIE5lZWQgdG8KIC8vIGJlIGluIGEgc2VwYXJhdGUgbWFpbiBmdW5j
dGlvbiBiZWNhdXNlIHRoZSBqc2NtYWluIGZ1bmN0aW9uIHJlcXVpcmVzIG9iamVjdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
NjE3MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksMjQgKzEyOSwxMiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIHB1dEJ5VmFsSW50ZXJuCiAgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkUHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKIAotICAgIGlmIChMSUtFTFkocHJvcGVydHkuaXNVSW50MzIoKSkpIHsK
LSAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1
cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVz
IGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgotICAgICAgICBBU1NFUlQoaXNJbmRleChwcm9wZXJ0
eS5hc1VJbnQzMigpKSk7CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHByb3Bl
cnR5LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIHB1dEJ5VmFsPHN0cmljdCwgZGlyZWN0PihnbG9iYWxPYmplY3QsIHZtLCBiYXNlVmFs
dWUsIHByb3BlcnR5LmFzVUludDMyKCksIHZhbHVlKTsKKyAgICAgICAgcHV0QnlWYWw8c3RyaWN0
LCBkaXJlY3Q+KGdsb2JhbE9iamVjdCwgdm0sIGJhc2VWYWx1ZSwgKmluZGV4LCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydHkuaXNEb3VibGUoKSkgewot
ICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7Ci0g
ICAgICAgIHVpbnQzMl90IHByb3BlcnR5QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
cHJvcGVydHlBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eUFzRG91YmxlID09IHByb3Bl
cnR5QXNVSW50MzIgJiYgaXNJbmRleChwcm9wZXJ0eUFzVUludDMyKSkgewotICAgICAgICAgICAg
c2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcHV0QnlWYWw8c3RyaWN0LCBkaXJlY3Q+KGds
b2JhbE9iamVjdCwgdm0sIGJhc2VWYWx1ZSwgcHJvcGVydHlBc1VJbnQzMiwgdmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRv
IGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJvd3MgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CkBAIC02NjgsMTYgKzY1NiwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAKICAgICBKU1ZhbHVlIHBy
b3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CiAKLSAgICBpZiAocHJv
cGVydHkuaXNVSW50MzIoKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRC
eVZhbFdpdGhJbmRleChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpKTsK
LQotICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIGRvdWJsZSBwcm9wZXJ0
eUFzRG91YmxlID0gcHJvcGVydHkuYXNEb3VibGUoKTsKLSAgICAgICAgdWludDMyX3QgcHJvcGVy
dHlBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9wZXJ0eUFzRG91YmxlKTsKLSAg
ICAgICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkKLSAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxXaXRoSW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKSk7CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHByb3BlcnR5LnRyeUdldEFzVWludDMySW5kZXgoKSkKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRCeVZhbFdpdGhJbmRleChnbG9iYWxPYmplY3QsIGJhc2Us
ICppbmRleCkpOwogCi0gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7CisgICAg
aWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUg
PSAqYmFzZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKEpTQ2VsbDo6Y2FuVXNlRmFzdEdl
dE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxBdG9tU3RyaW5n
SW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0V4aXN0aW5n
QXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwpAQCAtMTU3MSw4ICsxNTUzLDggQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIH0KICAgICAKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXQpOwotICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgewotICAgICAg
ICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICAg
ICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVl
KSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpKSk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjE3MzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTUsOSArNzE1
LDkgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMy
SW5kZXgoKSkgewogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAg
ICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgdWludDMyX3Qg
aSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICAgICAgICAg
IGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpLCB2YWx1ZSkpIHsKQEAgLTczNCw3ICs3
MzQsOCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgIHJldHVybjsKLSAg
ICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKKyAgICB9IAorICAgIGlmIChzdWJz
Y3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICAgICAgYnlWYWxJ
bmZvLT5hcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CkBAIC03NTcsMTEgKzc1OCw5IEBA
IHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKLSAgICAgICAg
Ly8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBv
bmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxp
ZCBhcnJheSBpbmRpY2VzLgorICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gbWF5YmVJbmRleCA9
IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICB1aW50MzJfdCBpbmRleCA9IHN1YnNjcmlwdC5h
c1VJbnQzMigpOwotICAgICAgICBBU1NFUlQoaXNJbmRleChpbmRleCkpOworICAgICAgICB1aW50
MzJfdCBpbmRleCA9ICptYXliZUluZGV4OwogCiAgICAgICAgIHN3aXRjaCAoYmFzZU9iamVjdC0+
aW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6
CkBAIC03ODEsMTcgKzc4MCw2IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzdWJzY3JpcHQuaXNEb3Vi
bGUoKSkgewotICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNE
b3VibGUoKTsKLSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNE
b3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikp
IHsKLSAgICAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBlY21hTW9kZS5p
c1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hv
dWxkTm90VGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAg
ICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRp
b24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTE5NzAs
OCArMTk1OCw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlMKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdWJzY3JpcHQuaXNJbnQzMigpKSB7Ci0gICAgICAg
IGludDMyX3QgaSA9IHN1YnNjcmlwdC5hc0ludDMyKCk7CisgICAgaWYgKE9wdGlvbmFsPGludDMy
X3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90
IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAg
ICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkp
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNl
VmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKQEAgLTIwODMsMTUgKzIwNzEsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIGlmIChMSUtF
TFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICBKU0NlbGwqIGJhc2UgPSBiYXNlVmFs
dWUuYXNDZWxsKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpCi0gICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFsV2l0aEluZGV4KGdsb2JhbE9i
amVjdCwgYmFzZSwgcHJvcGVydHkuYXNVSW50MzIoKSkpOworICAgICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0QXNVaW50MzJJbmRleCgpKQorICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRCeVZhbFdpdGhJbmRleChnbG9iYWxP
YmplY3QsIGJhc2UsICppbmRleCkpOwogCi0gICAgICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgp
KSB7Ci0gICAgICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91
YmxlKCk7Ci0gICAgICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5
QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSAmJiBpc0luZGV4KHByb3BlcnR5QXNVSW50MzIp
KQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxXaXRo
SW5kZXgoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkgeworICAgICAgICBpZiAocHJvcGVydHkuaXNT
dHJpbmcoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZS0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9w
ZXJ0eShzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBs
PiBleGlzdGluZ0F0b21TdHJpbmcgPSBhc1N0cmluZyhwcm9wZXJ0eSktPnRvRXhpc3RpbmdBdG9t
U3RyaW5nKGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2MTczMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MTIsOCArMTAxMiw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0K
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsK
LSAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7
CisgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKQEAgLTEwOTEsOCArMTA5MSw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmEKICAgICBKU1ZhbHVl
IHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIGJv
b2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIAot
ICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7Ci0gICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgICAgICB1aW50MzJf
dCBpID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgICAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkKQEAgLTExMjMsMjIg
KzExMjMsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YQogICAg
IFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBi
eXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7Ci0gICAgaWYgKExJS0VMWShzdWJzY3JpcHQu
aXNVSW50MzIoKSkpIHsKLSAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNV
SW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBh
bGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgotICAgICAgICBBU1NFUlQo
aXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOwotICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwg
aXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOworICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJz
Y3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8g
UHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cp
OwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91
YmxlKCkpIHsKLSAgICAgICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFz
RG91YmxlKCk7Ci0gICAgICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHN1YnNjcmlwdEFzRG91YmxlKTsKLSAgICAgICAgaWYgKHN1YnNjcmlwdEFz
RG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIp
KSB7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5k
ZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwotICAgICAgICAg
ICAgTExJTlRfRU5EKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBEb24ndCBwdXQgdG8g
YW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4Y2VwdGlvbi4KICAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5M
SUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAyNjE3MzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2
ICsyMTYsOCBAQCBwdWJsaWM6CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1
aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OworICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0cnlHZXRB
c1VpbnQzMkluZGV4KCk7CisgICAgT3B0aW9uYWw8aW50MzJfdD4gdHJ5R2V0QXNJbnQzMigpOwog
ICAgIGludDY0X3QgYXNBbnlJbnQoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMkFzQW55
SW50KCkgY29uc3Q7CiAgICAgaW50MzJfdCBhc0ludDMyQXNBbnlJbnQoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAkocmV2aXNpb24gMjYxNzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMzQgQEAgaW5saW5l
IGRvdWJsZSBKU1ZhbHVlOjphc051bWJlcigpIGNvbnN0CiAgICAgcmV0dXJuIGlzSW50MzIoKSA/
IGFzSW50MzIoKSA6IGFzRG91YmxlKCk7CiB9CiAKK2lubGluZSBPcHRpb25hbDx1aW50MzJfdD4g
SlNWYWx1ZTo6dHJ5R2V0QXNVaW50MzJJbmRleCgpCit7CisgICAgaWYgKGlzVUludDMyKCkpIHsK
KyAgICAgICAgQVNTRVJUKGlzSW5kZXgoYXNVSW50MzIoKSkpOworICAgICAgICByZXR1cm4gYXNV
SW50MzIoKTsKKyAgICB9CisgICAgaWYgKGlzTnVtYmVyKCkpIHsKKyAgICAgICAgZG91YmxlIG51
bWJlciA9IGFzTnVtYmVyKCk7CisgICAgICAgIHVpbnQzMl90IGFzVWludCA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihudW1iZXIpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihhc1Vp
bnQpID09IG51bWJlciAmJiBpc0luZGV4KGFzVWludCkpCisgICAgICAgICAgICByZXR1cm4gYXNV
aW50OworICAgIH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUgT3B0aW9u
YWw8aW50MzJfdD4gSlNWYWx1ZTo6dHJ5R2V0QXNJbnQzMigpCit7CisgICAgaWYgKGlzSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICBpZiAoaXNOdW1iZXIoKSkgeworICAg
ICAgICBkb3VibGUgbnVtYmVyID0gYXNOdW1iZXIoKTsKKyAgICAgICAgaW50MzJfdCBhc0ludCA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KG51bWJlcik7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxk
b3VibGU+KGFzSW50KSA9PSBudW1iZXIpCisgICAgICAgICAgICByZXR1cm4gYXNJbnQ7CisgICAg
fQorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIGlubGluZSBKU1ZhbHVlIGpzTmFOKCkK
IHsKICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgUE5hTik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>