<?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>194799</bug_id>
          
          <creation_ts>2019-02-18 16:11:19 -0800</creation_ts>
          <short_desc>[JSC] Introduce JSNonDestructibleProxy for JavaScriptCore.framework&apos;s GlobalThis</short_desc>
          <delta_ts>2019-02-19 12:16:00 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1507517</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-18 16:11:19 -0800</bug_when>
    <thetext>[JSC] Introduce JSNonDestructibleProxy for JavaScriptCore.framework&apos;s GlobalThis</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507518</commentid>
    <comment_count>1</comment_count>
      <attachid>362354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-18 16:14:30 -0800</bug_when>
    <thetext>Created attachment 362354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507529</commentid>
    <comment_count>2</comment_count>
      <attachid>362354</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-18 16:20:35 -0800</bug_when>
    <thetext>Comment on attachment 362354
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        This patch adds JSNonDestructibleProxy, which is not destructible JSProxy. While it inherits JSDestructibleObject,

not destructible =&gt; non-destructible

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        we can make the subclass still non-destructible thanks to Subspace mechanism. This drops one more low-usage MarkedBlock.

ooph. Not sure I&apos;m a fan of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507530</commentid>
    <comment_count>3</comment_count>
      <attachid>362354</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-18 16:20:55 -0800</bug_when>
    <thetext>Comment on attachment 362354
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        we can make the subclass still non-destructible thanks to Subspace mechanism. This drops one more low-usage MarkedBlock.
&gt; 
&gt; ooph. Not sure I&apos;m a fan of that.

Do we do this anywhere else? Feels super hacky</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507531</commentid>
    <comment_count>4</comment_count>
      <attachid>362354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-18 16:27:26 -0800</bug_when>
    <thetext>Comment on attachment 362354
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt;&gt; +        we can make the subclass still non-destructible thanks to Subspace mechanism. This drops one more low-usage MarkedBlock.
&gt;&gt; 
&gt;&gt; ooph. Not sure I&apos;m a fan of that.
&gt; 
&gt; Do we do this anywhere else? Feels super hacky

Opposite one can be found, like, JSGlobalLexicalEnvironment. It does not inherit JSDestructibleObject, but it want to make itself destructible. Currently, they has separate CompleteSubspace just for that (I don&apos;t like this because it is too costly).
Currently, only two JSProxies are created in simple JSC memory profile benchmarks, and it allocates 16KB, which should be dropped because this is not necessary essentially.

Another idea is that not allocating JSProxy for JavaScriptCore.framework. We just use JSGlobalObject for |this| / |globalThis| instead of putting JSProxy objects for that. This is OK since the spec says nothing about it[1].
This patch is a bit hacky because it takes the way not changing the current behavior of JavaScriptCore.framework. But if it is allowed, we can remove JSProxy instead. Anyway, I think we should not allocate additional MarkedBlock only for that.
[1]: https://tc39.github.io/proposal-global/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507532</commentid>
    <comment_count>5</comment_count>
      <attachid>362354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-18 16:40:47 -0800</bug_when>
    <thetext>Comment on attachment 362354
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt;&gt;&gt; +        we can make the subclass still non-destructible thanks to Subspace mechanism. This drops one more low-usage MarkedBlock.
&gt;&gt;&gt; 
&gt;&gt;&gt; ooph. Not sure I&apos;m a fan of that.
&gt;&gt; 
&gt;&gt; Do we do this anywhere else? Feels super hacky
&gt; 
&gt; Opposite one can be found, like, JSGlobalLexicalEnvironment. It does not inherit JSDestructibleObject, but it want to make itself destructible. Currently, they has separate CompleteSubspace just for that (I don&apos;t like this because it is too costly).
&gt; Currently, only two JSProxies are created in simple JSC memory profile benchmarks, and it allocates 16KB, which should be dropped because this is not necessary essentially.
&gt; 
&gt; Another idea is that not allocating JSProxy for JavaScriptCore.framework. We just use JSGlobalObject for |this| / |globalThis| instead of putting JSProxy objects for that. This is OK since the spec says nothing about it[1].
&gt; This patch is a bit hacky because it takes the way not changing the current behavior of JavaScriptCore.framework. But if it is allowed, we can remove JSProxy instead. Anyway, I think we should not allocate additional MarkedBlock only for that.
&gt; [1]: https://tc39.github.io/proposal-global/

I quickly grepped JSC source with `public JSDestructibleObject` thing and it seems like this JSProxy thing is only the objects which (1) has destructor and (2) has the same size class in JSC.framework objects :(
So, this MarkedBlock is just used for this two JSProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507622</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-19 01:19:26 -0800</bug_when>
    <thetext>After discussing with Saam, I think this is a simple approach for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507730</commentid>
    <comment_count>7</comment_count>
      <attachid>362354</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-19 11:23:55 -0800</bug_when>
    <thetext>Comment on attachment 362354
Patch

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

&gt; Source/JavaScriptCore/runtime/JSNonDestructibleProxy.cpp:2
&gt; + * Copyright (C) 2011-2012, 2016-2017 Apple Inc. All rights reserved.

2019

&gt; Source/JavaScriptCore/runtime/JSNonDestructibleProxy.h:41
&gt; +        return JSNonFinalObject::subspaceFor&lt;CellType, mode&gt;(vm);

it&apos;s worth a comment here IMO given how this is a bit weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507748</commentid>
    <comment_count>8</comment_count>
      <attachid>362354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-19 11:51:27 -0800</bug_when>
    <thetext>Comment on attachment 362354
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSNonDestructibleProxy.cpp:2
&gt;&gt; + * Copyright (C) 2011-2012, 2016-2017 Apple Inc. All rights reserved.
&gt; 
&gt; 2019

Oh! Thanks.

&gt;&gt; Source/JavaScriptCore/runtime/JSNonDestructibleProxy.h:41
&gt;&gt; +        return JSNonFinalObject::subspaceFor&lt;CellType, mode&gt;(vm);
&gt; 
&gt; it&apos;s worth a comment here IMO given how this is a bit weird.

Right. I&apos;ll do that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507768</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-19 12:15:02 -0800</bug_when>
    <thetext>Committed r241769: &lt;https://trac.webkit.org/changeset/241769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507769</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-19 12:16:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/48209822&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362354</attachid>
            <date>2019-02-18 16:14:30 -0800</date>
            <delta_ts>2019-02-19 11:23:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194799-20190218161430.patch</filename>
            <type>text/plain</type>
            <size>16335</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZjA1YWNiMWM4MmY1NzJmNTA1NGE1YjM3NmQ5Njc3YTdkNjZhODRmLi5hYmNiZjFiNmJhNjgxY2U4
ZDFjODI1ZWJlZGNlNjkzMzA4NjZlNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOS0wMi0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBKU05vbkRlc3RydWN0aWJsZVByb3h5IGZvciBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsncyBHbG9iYWxUaGlzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ3OTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU1Byb3h5IGlzIGRlc3RydWN0aWJsZSBvbmUg
YmVjYXVzZSB3ZSBoYXZlIEpTV2luZG93UHJveHkgd2hpY2ggaGFzIHJlZiBjb3VudGVkIG9iamVj
dC4KKyAgICAgICAgSG93ZXZlciwgSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrJ3MgSlNQcm94eSBm
b3IgR2xvYmFsVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlc3RydWN0aWJsZS4KKyAgICAgICAg
VGhpcyBpcyBpbXBvcnRhbnQgc2luY2Ugd2UgbmVlZCB0byBzZXBhcmF0ZSBIZWFwIHN1YnNwYWNl
cyBiZXR3ZWVuIGRlc3RydWN0aWJsZSBhbmQgbm9uLWRlc3RydWN0aWJsZSBvYmplY3RzLgorICAg
ICAgICBJZiB3ZSBjYW4gcHV0IG1vcmUgYW5kIG1vcmUgb2JqZWN0cyBpbiBub24tZGVzdHJ1Y3Rp
YmxlIHN0YXR1cywgd2UgY2FuIGdldCByaWQgb2YgbG93LXVzYWdlIE1hcmtlZEJsb2NrLgorICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgSlNOb25EZXN0cnVjdGlibGVQcm94eSwgd2hpY2ggaXMgbm90
IGRlc3RydWN0aWJsZSBKU1Byb3h5LiBXaGlsZSBpdCBpbmhlcml0cyBKU0Rlc3RydWN0aWJsZU9i
amVjdCwKKyAgICAgICAgd2UgY2FuIG1ha2UgdGhlIHN1YmNsYXNzIHN0aWxsIG5vbi1kZXN0cnVj
dGlibGUgdGhhbmtzIHRvIFN1YnNwYWNlIG1lY2hhbmlzbS4gVGhpcyBkcm9wcyBvbmUgbW9yZSBs
b3ctdXNhZ2UgTWFya2VkQmxvY2suCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNO
b25EZXN0cnVjdGlibGVQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNOb25E
ZXN0cnVjdGlibGVQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNOb25EZXN0cnVjdGli
bGVQcm94eTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoSlNDOjpKU05vbkRlc3RydWN0aWJsZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU05vbkRlc3RydWN0aWJsZVByb3h5OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU05vbkRlc3RydWN0aWJsZVByb3h5OjpKU05v
bkRlc3RydWN0aWJsZVByb3h5KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAg
ICAgKEpTQzo6SlNQcm94eTo6SlNQcm94eSk6CisKIDIwMTktMDItMTggIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgTGF6eUNsYXNzU3RydWN0
dXJlOjpnZXRJbml0aWFsaXplZE9uTWFpblRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGUzMTFhY2U0MjZhNzIzNzk1YWZhYzE3MmY4M2VhY2UxYmU4OTBhZTEuLjZh
ZmFiMjc3MzZiMWMxNTRhYzQ5OTc5ZjhiMTY0Y2ZkMmNkOWIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTg1OSw2ICs4NTksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAog
ICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAogICAgIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5oCisgICAgcnVudGltZS9KU05vbkRlc3RydWN0aWJsZVByb3h5LmgKICAgICBydW50aW1l
L0pTT05PYmplY3QuaAogICAgIHJ1bnRpbWUvSlNPYmplY3QuaAogICAgIHJ1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDYxM2VhMzJkYzhi
ZWZlZWUwYWIyYzAxZjM4ZmU1ZDdlMmVjODEyNi4uMTgxMjkzMDVkYTVmZTZiMWMyNGI4ZWQ3NDZj
NWVhZThlNGRjNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NjcsNiAr
MTc2Nyw3IEBACiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0
NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4OTNB
MUQyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODkzQTFD
MjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmgg
Ki87IH07CisJCUUzOEQ5OTlDMjIxQjc4QkIwMEQ1MDQ3NCAvKiBKU05vbkRlc3RydWN0aWJsZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhE
OTk5QTIyMUI3ODlGMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTAwNjIxMjIwOEJG
QzQwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNl
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM5M0FERDgxRkU3MDJEMDAwMjJENjgxIC8qIFdlYWtNYXBJbXBsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5M0FERDcxRkU3MDJD
QzAwMjJENjgxIC8qIFdlYWtNYXBJbXBsSW5saW5lcy5oICovOyB9OwogCQlFMzlENDVGNTFEMzkw
MDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50
ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTQ3MTMsNiArNDcxNCw4IEBACiAJCUUzOEQwNjBCMUY4RTgxNDEwMDY0OUNG
MiAvKiBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZldGNoUGFyYW1ldGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwRDFGOEU4MTQxMDA2NDlD
RjIgLyogSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzhEOTk5QTIyMUI3ODlGMDBENTA0NzQgLyogSlNOb25EZXN0cnVj
dGlibGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vbkRlc3RydWN0aWJsZVByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOEQ5OTlCMjIxQjc4OUYwMEQ1MDQ3NCAvKiBK
U05vbkRlc3RydWN0aWJsZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9uRGVzdHJ1
Y3RpYmxlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzkwMDYyMDIy
MDhCRkMzMDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3Vic3BhY2VBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM5M0FERDcxRkU3MDJDQzAwMjJENjgxIC8qIFdlYWtNYXBJbXBsSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwSW1wbElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkz
Myw2ICs2OTM2LDggQEAKIAkJCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLywKIAkJCQlFMzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHAgKi8sCiAJCQkJRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uaCAqLywKKwkJCQlFMzhEOTk5QjIyMUI3ODlGMDBENTA0NzQgLyogSlNOb25E
ZXN0cnVjdGlibGVQcm94eS5jcHAgKi8sCisJCQkJRTM4RDk5OUEyMjFCNzg5RjAwRDUwNDc0IC8q
IEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLywKIAkJCQlCQzIyQTM5ODBFMTZFMTQ4MDBBRjIx
QzggLyogSlNPYmplY3QuY3BwICovLAogCQkJCUJDMjJBMzk5MEUxNkUxNDgwMEFGMjFDOCAvKiBK
U09iamVjdC5oICovLAogCQkJCTBGOTMyNzVFMUMyMUVGN0YwMENGNjU2NCAvKiBKU09iamVjdElu
bGluZXMuaCAqLywKQEAgLTgzODksNiArODM5NCw3IEBACiAJCQkJNTM0RTAzNEUxRTRENEIxNjAw
MjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkZEMEJDMURBRjgw
OEUwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyNEU5RDczMjIwOTJCNTIw
MEE2QkVFRSAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJBQzU2QjFFOEEwQkQ1MDAwMUVFM0YgLyogQWlyQWxsb2Nh
dGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2
NUMyMTcxRTVENzk5NjAwQjc1OTFEIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9y
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU2RTFCREFDREM3MDA4MEZGNzQgLyogQWly
QWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODU3LDcg
Kzg4NjMsNiBAQAogCQkJCUE3RDg5Q0ZFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFi
aWxpdHlBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NzE0MURBRjEw
MDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI2MTdE
NTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTI0RTlENzMyMjA5MkI1MjAwQTZCRUVFIC8qIEFpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZB
MTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIz
NUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTkzMzYsNiArOTM0MSw3IEBACiAJCQkJRTMxOENCQzExQjhB
RUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzM0U4RDFEMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzhEOTk5QzIyMUI3OEJCMDBENTA0NzQgLyogSlNO
b25EZXN0cnVjdGlibGVQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjQwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMjc1RjFDMjFF
RjdGMDBDRjY1NjQgLyogSlNPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQyNTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNPYmplY3RSZWYuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMyZmJkNjZkOWIzYzZlNjJlMGNjMzkwODdlNjhm
NGIxZDgyZjYwNGUuLmFkNzE5NzE3Y2MyMmQ5MGNlMTQ0M2RjMjI1OWU0MjY3YWFjYjg3M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgzMiw2ICs4MzIsNyBAQCBydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcAogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKIHJ1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
CitydW50aW1lL0pTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuY3BwCiBydW50aW1lL0pTT05PYmplY3Qu
Y3BwCiBydW50aW1lL0pTT2JqZWN0LmNwcAogcnVudGltZS9KU1Byb21pc2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDkz
ZTQ4MWM3M2NiOGNjMGI1YTUwNGE3NGM5NDIzMTMxYzVjNzI5OS4uYTkxYWJkN2JjMzZhNmYzYTg5
NGNiMmYzNTdkNGQ0YThjNzdiZWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTA5LDYgKzEwOSw3IEBACiAjaW5jbHVkZSAi
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgog
I2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU05vbkRlc3RydWN0
aWJsZVByb3h5LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvbWlz
ZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCkBAIC0xNTQwLDcgKzE1NDEs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldFByb3RvdHlwZShWTSYgdm0sIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJvdG90eXBl
RGlyZWN0KHZtLCBvYmplY3RQcm90b3R5cGUpOwogCiAgICAgLy8gV2hlbmV2ZXIgd2UgY2hhbmdl
IHRoZSBwcm90b3R5cGUgb2YgdGhlIGdsb2JhbCBvYmplY3QsIHdlIG5lZWQgdG8gY3JlYXRlIGEg
bmV3IEpTUHJveHkgd2l0aCB0aGUgY29ycmVjdCBwcm90b3R5cGUuCi0gICAgc2V0R2xvYmFsVGhp
cyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIHByb3RvdHlwZSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpLCB0aGlzKSk7CisgICAgc2V0
R2xvYmFsVGhpcyh2bSwgSlNOb25EZXN0cnVjdGlibGVQcm94eTo6Y3JlYXRlKHZtLCBKU05vbkRl
c3RydWN0aWJsZVByb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIHByb3RvdHlwZSwgUHVy
ZUZvcndhcmRpbmdQcm94eVR5cGUpLCB0aGlzKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTE5
MzUsNyArMTkzNiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICAgICBzdHJ1Y3R1cmUodm0pLT5zZXRHbG9iYWxPYmplY3Qodm0sIHRoaXMpOwogICAgIG1f
cnVudGltZUZsYWdzID0gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZS0+amF2YVNjcmlwdFJ1bnRp
bWVGbGFncyh0aGlzKTsKICAgICBpbml0KHZtKTsKLSAgICBzZXRHbG9iYWxUaGlzKHZtLCBKU1By
b3h5OjpjcmVhdGUodm0sIEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZ2V0UHJv
dG90eXBlRGlyZWN0KHZtKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpLCB0aGlzKSk7CisgICAg
c2V0R2xvYmFsVGhpcyh2bSwgSlNOb25EZXN0cnVjdGlibGVQcm94eTo6Y3JlYXRlKHZtLCBKU05v
bkRlc3RydWN0aWJsZVByb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFByb3RvdHlw
ZURpcmVjdCh2bSksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhpcykpOwogICAgIEFTU0VS
VCh0eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb25EZXN0cnVjdGlibGVQcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjRiODAzMDdkNzRiODFiMzc0ODQ3YTUxMjA2Y2I0NTZhNWUyMmQ3ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm9uRGVzdHJ1Y3RpYmxl
UHJveHkuY3BwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
MiwgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU05vbkRlc3RydWN0aWJsZVBy
b3h5OjpzX2luZm8gPSB7ICJKU05vbkRlc3RydWN0aWJsZVByb3h5IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05vbkRlc3RydWN0aWJsZVBy
b3h5KSB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmY5
N2RmZWVjY2IzYTRiMTdkZmJjNmMwYjdjMDZmYjk1NmYzZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb25EZXN0cnVjdGlibGVQcm94eS5oCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTUHJveHkuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkgOiBwdWJsaWMgSlNQcm94eSB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTUHJveHk7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU05vbkZp
bmFsT2JqZWN0OjpzdWJzcGFjZUZvcjxDZWxsVHlwZSwgbW9kZT4odm0pOworICAgIH0KKworICAg
IHN0YXRpYyBKU05vbkRlc3RydWN0aWJsZVByb3h5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKKyAgICB7CisgICAgICAgIEpTTm9uRGVzdHJ1
Y3RpYmxlUHJveHkqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNOb25EZXN0
cnVjdGlibGVQcm94eT4odm0uaGVhcCkpIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkodm0sIHN0cnVj
dHVyZSk7CisgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbih2bSwgdGFyZ2V0KTsKKyAgICAg
ICAgcmV0dXJuIHByb3h5OworICAgIH0KKworICAgIHN0YXRpYyBKU05vbkRlc3RydWN0aWJsZVBy
b3h5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNOb25EZXN0cnVjdGlibGVQcm94eT4odm0uaGVhcCkpIEpTTm9uRGVzdHJ1Y3RpYmxlUHJv
eHkodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSwgSlNUeXBlIHByb3h5VHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChwcm94
eVR5cGUgPT0gSW1wdXJlUHJveHlUeXBlIHx8IHByb3h5VHlwZSA9PSBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKHByb3h5VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKK3Byb3RlY3RlZDoKKyAg
ICBKU05vbkRlc3RydWN0aWJsZVByb3h5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAw
YmQzNWM5ZDZmYTY3Yjg5MmI1Y2NhNjE2OWJlZDA3YjJmNjY4NTMxLi5hY2UxNzAzY2NmNGQ1NzRi
ZjFiNGNhOWY4MzkyOTc1YzVhYThkOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1By
b3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgdXNpbmcgQmFzZSA9IEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm87CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCkBAIC02Myw3ICs2
Myw3IEBAIGNsYXNzIEpTUHJveHkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiBw
cm90ZWN0ZWQ6CiAgICAgSlNQcm94eShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
ICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQogICAgIHsKICAgICB9CiAK
</data>
<flag name="review"
          id="378988"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>