<?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>186360</bug_id>
          
          <creation_ts>2018-06-06 12:13:17 -0700</creation_ts>
          <short_desc>Do some hardening in JSLazyEventListener</short_desc>
          <delta_ts>2019-02-06 09:19:09 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1430547</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-06 12:13:17 -0700</bug_when>
    <thetext>Do some hardening in JSLazyEventListener.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430548</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-06 12:13:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/34297947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430550</commentid>
    <comment_count>2</comment_count>
      <attachid>342071</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-06 12:21:54 -0700</bug_when>
    <thetext>Created attachment 342071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430551</commentid>
    <comment_count>3</comment_count>
      <attachid>342071</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-06-06 12:30:27 -0700</bug_when>
    <thetext>Comment on attachment 342071
Patch

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

&gt; Source/WebCore/dom/NodeRareData.cpp:41
&gt;  struct SameSizeAsNodeRareData {
&gt;      unsigned m_bitfields : 20;
&gt; -    void* m_pointer[3];
&gt; +    void* m_pointer[4];
&gt;  };
&gt;  
&gt;  COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);

It looks like Ryosuke at one point believed it was important to performance for this class to stay small: &lt;https://trac.webkit.org/changeset/137003/webkit&gt;.

Are we sure it&apos;s OK to get bigger, especially just for hardening?

I believe that only elements can have inline event listeners. Maybe we reduce the pain by putting the weak pointer factory on element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430553</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-06 12:34:40 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 342071 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=342071&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/NodeRareData.cpp:41
&gt; &gt;  struct SameSizeAsNodeRareData {
&gt; &gt;      unsigned m_bitfields : 20;
&gt; &gt; -    void* m_pointer[3];
&gt; &gt; +    void* m_pointer[4];
&gt; &gt;  };
&gt; &gt;  
&gt; &gt;  COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);
&gt; 
&gt; It looks like Ryosuke at one point believed it was important to performance
&gt; for this class to stay small:
&gt; &lt;https://trac.webkit.org/changeset/137003/webkit&gt;.

I will let Ryosuke comment on this.

&gt; 
&gt; Are we sure it&apos;s OK to get bigger, especially just for hardening?

Well, hardening against a very valid crash (see radar).

&gt; 
&gt; I believe that only elements can have inline event listeners. Maybe we
&gt; reduce the pain by putting the weak pointer factory on element?

In this class, m_originalNode can either be an Element or a Document, so I don&apos;t think I can move it to Element / ElementRareData.

Note that until fairly recently, we had a WeakPtrFactory in ElementRareData. I killed recently because there were no more users for it. That said, we never saw a regression when I added this WeakPtrFactory in ElementRareData in the past.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430554</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-06-06 12:39:00 -0700</bug_when>
    <thetext>&gt; &gt; Are we sure it&apos;s OK to get bigger, especially just for hardening?
&gt; 
&gt; Well, hardening against a very valid crash (see radar).

Yeah, I guess it&apos;s a distraction to question the value of hardening. Let&apos;s focus on whether it&apos;s OK to grow this data structure, and what alternatives to consider if it&apos;s not OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430716</commentid>
    <comment_count>6</comment_count>
      <attachid>342071</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-06-06 22:35:15 -0700</bug_when>
    <thetext>Comment on attachment 342071
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/NodeRareData.cpp:41
&gt;&gt;&gt;  COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);
&gt;&gt; 
&gt;&gt; It looks like Ryosuke at one point believed it was important to performance for this class to stay small: &lt;https://trac.webkit.org/changeset/137003/webkit&gt;.
&gt;&gt; 
&gt;&gt; Are we sure it&apos;s OK to get bigger, especially just for hardening?
&gt;&gt; 
&gt;&gt; I believe that only elements can have inline event listeners. Maybe we reduce the pain by putting the weak pointer factory on element?
&gt; 
&gt; I will let Ryosuke comment on this.

I don&apos;t think this is okay. We make zillions of Text nodes with whitespaces in any given page.
We should limit this to only Element and also run Speedometer, PLT, &amp; our internal memory tests to ensure there is no regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430845</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-07 08:51:41 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Comment on attachment 342071 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=342071&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/dom/NodeRareData.cpp:41
&gt; &gt;&gt;&gt;  COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);
&gt; &gt;&gt; 
&gt; &gt;&gt; It looks like Ryosuke at one point believed it was important to performance for this class to stay small: &lt;https://trac.webkit.org/changeset/137003/webkit&gt;.
&gt; &gt;&gt; 
&gt; &gt;&gt; Are we sure it&apos;s OK to get bigger, especially just for hardening?
&gt; &gt;&gt; 
&gt; &gt;&gt; I believe that only elements can have inline event listeners. Maybe we reduce the pain by putting the weak pointer factory on element?
&gt; &gt; 
&gt; &gt; I will let Ryosuke comment on this.
&gt; 
&gt; I don&apos;t think this is okay. We make zillions of Text nodes with whitespaces
&gt; in any given page.
&gt; We should limit this to only Element and also run Speedometer, PLT, &amp; our
&gt; internal memory tests to ensure there is no regression.

As I previously explained, I did not limit this to Element because m_originalNode is a ContainerNode (can be an Element or a Document).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431318</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-08 11:16:30 -0700</bug_when>
    <thetext>WONTFIX for now, even though this seems power-neutral on Speedometer. I&apos;ll try and get better repro-steps for the crash to fix the underlying issue instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503323</commentid>
    <comment_count>9</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:19:09 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342071</attachid>
            <date>2018-06-06 12:21:54 -0700</date>
            <delta_ts>2018-06-08 11:15:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186360-20180606122154.patch</filename>
            <type>text/plain</type>
            <size>18119</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM5NzNjYzk2MTc1Zjc0
YTllNjcxNTZiNTY3NTNiODViZDFmNzExOC4uZWNiZDU5MWJlNmQyZWJmMDJiMzEzODAyMzMyNmI0
YjFiZmJiZGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA2LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gc29tZSBoYXJkZW5pbmcg
aW4gSlNMYXp5RXZlbnRMaXN0ZW5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2MzYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDI5Nzk0Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBzb21l
IGhhcmRlbmluZyBpbiBKU0xhenlFdmVudExpc3RlbmVyIGJ5IHVzaW5nIGEgV2Vha1B0ciBpbnN0
ZWFkIG9mIAorICAgICAgICBhIHJhdyBwb2ludGVyIGZvciBtX29yaWdpbmFsTm9kZSBkYXRhIG1l
bWJlciwgc2luY2Ugd2UgaGF2ZSBldmlkZW5jZSB0aGF0CisgICAgICAgIHRoZSBKU0xhenlFdmVu
dExpc3RlbmVyIGNhbiBvdXRsaXZlIGl0cyBvcmlnaW5hbCBub2RlLgorCisgICAgICAgICogTW9k
dWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6Y3JlZGVudGlhbHMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGNzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6
Ok1lZGlhUXVlcnlFdmFsdWF0b3IpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb250ZXh0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZVdlYWtQdHIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndlYWtQdHJGYWN0b3J5KToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuY3BwOgorICAgICAgICAq
IGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6d2Vh
a1B0ckZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRQaWN0dXJlRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50Ojp3ZWFrUHRyRmFjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVXZWFrUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQaWN0
dXJlRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWNvbm5lY3RJZk5lZWRlZCk6CisgICAgICAgICogbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNv
dXJjZUxvYWRlcjo6TWVkaWFSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogeG1sL0RPTVBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OkRPTVBhcnNlcik6CisKIDIwMTgt
MDYtMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBB
ZGQgbWFyZ2luIGNvbXB1dGF0aW9uIGZvciBmbG9hdGluZywgbm8tcmVwbGFjZWQgZWxlbWVudHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCmluZGV4IDlkOGYwY2ZlODk5
ZDVmN2M5MzlhY2VhMWI0MTE4M2U5NDU5MDg0MTIuLjVkOGMxZDU2M2YzMjAwMTRhZjFkZjUyNGEx
YmMxNzVlZjYzMWY1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIENyZWRlbnRpYWxzQ29udGFpbmVyKiBOYXZpZ2F0b3JDcmVkZW50
aWFsczo6Y3JlZGVudGlhbHMoTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgaWYgKCFuYXZp
Z2F0b3IuZnJhbWUoKSB8fCAhbmF2aWdhdG9yLmZyYW1lKCktPmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSgm
bmF2aWdhdG9yKS0+Y3JlZGVudGlhbHMobmF2aWdhdG9yLmZyYW1lKCktPmRvY3VtZW50KCktPmNy
ZWF0ZVdlYWtQdHIoKSk7CisgICAgcmV0dXJuIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKCZu
YXZpZ2F0b3IpLT5jcmVkZW50aWFscyhtYWtlV2Vha1B0cihuYXZpZ2F0b3IuZnJhbWUoKS0+ZG9j
dW1lbnQoKSkpOwogfQogCiBOYXZpZ2F0b3JDcmVkZW50aWFscyogTmF2aWdhdG9yQ3JlZGVudGlh
bHM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGIzODJiMWY5NDZhN2M1NGVm
MzhlYWZhNTI3MjY4ZTBlNzBlMGM5NjAuLmFhN2I5YmI5MjFlMmM2MTgwY2ZiNDZiMDQ1NGU3M2Vl
M2FhZDViOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2
ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2
ZW50TGlzdGVuZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNzEsNyArNzIsNyBAQCBK
U0xhenlFdmVudExpc3RlbmVyOjpKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0IENyZWF0aW9uQXJn
dW1lbnRzJiBhcmd1bWVudHMsIGNvbgogICAgICwgbV9jb2RlKGFyZ3VtZW50cy5hdHRyaWJ1dGVW
YWx1ZSkKICAgICAsIG1fc291cmNlVVJMKHNvdXJjZVVSTCkKICAgICAsIG1fc291cmNlUG9zaXRp
b24oY29udmVydFplcm9Ub09uZShzb3VyY2VQb3NpdGlvbikpCi0gICAgLCBtX29yaWdpbmFsTm9k
ZShhcmd1bWVudHMubm9kZSkKKyAgICAsIG1fb3JpZ2luYWxOb2RlKG1ha2VXZWFrUHRyKGFyZ3Vt
ZW50cy5ub2RlKSkKIHsKICAgICAvLyBXZSBkb24ndCByZWYgbV9vcmlnaW5hbE5vZGUgYmVjYXVz
ZSB3ZSBhc3N1bWUgaXQgd2lsbCBzdGF5IGFsaXZlIGFzIGxvbmcgYXMgdGhpcwogICAgIC8vIGhh
bmRsZXIgb2JqZWN0IGlzIGFyb3VuZCBhbmQgd2UgbmVlZCB0byBhdm9pZCBhIHJlZmVyZW5jZSBj
eWNsZS4gSWYgSlMgdHJhbnNmZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xhenlFdmVudExpc3RlbmVyLmgKaW5kZXggYmRlZTQyYTg0NWY5ZmUyOGE0ZmZjYjIyY2Q0NzA0
Y2FiYmY5MTkxMC4uN2VhZTQ2ZjRlNGE5ZDc1MzAwZDEyYzdlOWYxMjBiYjU4YTZhOTczNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaApA
QCAtMjAsNiArMjAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTUzLDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9jb2RlOwogICAgIFN0cmlu
ZyBtX3NvdXJjZVVSTDsKICAgICBUZXh0UG9zaXRpb24gbV9zb3VyY2VQb3NpdGlvbjsKLSAgICBD
b250YWluZXJOb2RlKiBtX29yaWdpbmFsTm9kZTsKKyAgICBXZWFrUHRyPENvbnRhaW5lck5vZGU+
IG1fb3JpZ2luYWxOb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDhjNzkzYzJiNzg2OTAzYTU4
MmM1MmEwOGVlYWI3Y2NmNDUzNTQyOTUuLmNjNmViMWIyNDY5NzY5NDU4ZWZlZjMwNjU5N2IzNDRl
ZWE5Mzk1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
QEAgLTExMCw3ICsxMTAsNyBAQCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpNZWRpYVF1ZXJ5RXZhbHVh
dG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGJvb2wgbQogCiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yOjpNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRp
YVR5cGUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
KQogICAgIDogbV9tZWRpYVR5cGUoYWNjZXB0ZWRNZWRpYVR5cGUpCi0gICAgLCBtX2RvY3VtZW50
KGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihkb2N1bWVudCkuY3JlYXRlV2Vha1B0cigpKQorICAgICwg
bV9kb2N1bWVudChtYWtlV2Vha1B0cihjb25zdF9jYXN0PERvY3VtZW50Jj4oZG9jdW1lbnQpKSkK
ICAgICAsIG1fc3R5bGUoc3R5bGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1
MGRkYzlhMTYwYTYzN2E0NTdiMTZiMDM2N2NkYjJiM2NjNGY3NTkxLi5lYTgwMTU4NTUxOGMwZTNm
MDIwNmU5MGU0MzlhMzRiNzZmNTk5MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU4
MjEsNyArNTgyMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nCiAKIHZvaWQgRG9jdW1lbnQ6
OnBvc3RUYXNrKFRhc2smJiB0YXNrKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2RvY3VtZW50
UmVmZXJlbmNlID0gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgdGFzayA9IFdU
Rk1vdmUodGFzayldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbZG9jdW1lbnRS
ZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSgpIG11
dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOwpAQCAtNzU1OSw3ICs3NTU5
LDcgQEAgdm9pZCBEb2N1bWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKICAgICAg
ICAgYXV0byBpZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOwogICAgICAgICBhdXRv
IHRvcEhvc3QgPSB0b3BTZWN1cml0eU9yaWdpbi5ob3N0KCk7Ci0gICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShpZnJhbWVIb3N0KSwgV1RGTW92
ZSh0b3BIb3N0KSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSwgW2RvY3VtZW50UmVm
ZXJlbmNlID0gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChib29sIGhhc0FjY2VzcykgeworICAgICAgICBwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUo
dG9wSG9zdCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVy
ZW5jZSA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChi
b29sIGhhc0FjY2VzcykgewogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1l
bnRSZWZlcmVuY2UuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTc2MjksMTQgKzc2MjksMTQgQEAgdm9pZCBEb2N1bWVudDo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoV1RGTW92ZShpZnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BIb3N0KSwgZnJhbWVJ
RC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSwgW2RvY3VtZW50UmVmZXJlbmNlID0gbV93ZWFrRmFj
dG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChi
b29sIHdhc0dyYW50ZWQpIG11dGFibGUgeworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCks
IGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHdhc0dy
YW50ZWQpIG11dGFibGUgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudFJl
ZmVyZW5jZS5nZXQoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgICAgIGlmICh3YXNHcmFudGVkKSB7CiAgICAgICAgICAgICBkb2N1
bWVudC0+c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0gICAgICAgICAg
ICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gZG9jdW1lbnQtPm1fd2Vha0Zh
Y3RvcnkuY3JlYXRlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rh
c2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1p
Y3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoZG9jdW1lbnQpXSAoKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2Uu
Z2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5lbmFibGVUZW1wb3JhcnlUaW1l
VXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
NDk5YmFjYmUxYTczODcyN2MxN2ZkYzVkNzIwYmMyM2JlZjQxNmQ2Ni4uMmRlNjE2OGNiMWFlZWE5
OGIxN2M5NDcwMTA3NGMyYTA5NDg0NzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTc5OSw3
ICs3OTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHdpbmRv
d1Byb3h5KCkgY29uc3Q7CiAKICAgICBEb2N1bWVudCYgY29udGV4dERvY3VtZW50KCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRDb250ZXh0RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSB7IG1fY29u
dGV4dERvY3VtZW50ID0gZG9jdW1lbnQuY3JlYXRlV2Vha1B0cigpOyB9CisgICAgdm9pZCBzZXRD
b250ZXh0RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSB7IG1fY29udGV4dERvY3VtZW50ID0g
bWFrZVdlYWtQdHIoZG9jdW1lbnQpOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBm
b3J3YXJkaW5nIERPTVdpbmRvdyBldmVudCByZWxhdGVkIHRhc2tzIHRvIHRoZSBET01XaW5kb3cg
aWYgaXQgZXhpc3RzLgogICAgIHZvaWQgc2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRE9NV3JhcHBlcldvcmxkJik7CkBA
IC0xMzExLDcgKzEzMTEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NhcHR1cmluZygpIGNvbnN0
IHsgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OmlzQ2FwdHVyaW5nKG1fbWVkaWFTdGF0ZSk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90ID0gSFRN
TE1lZGlhRWxlbWVudEludmFsaWRJRCk7CiAgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5n
ZSgpOwotICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dl
YWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOyB9CiAKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQo
TWVkaWFQbGF5YmFja1RhcmdldENsaWVudCYpOwpAQCAtMTY5NCw4ICsxNjkzLDYgQEAgcHJpdmF0
ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyVmlldz4gbV9yZW5kZXJWaWV3OwogICAgIG11dGFibGUg
RG9jdW1lbnRFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKIAotICAgIFdlYWtQdHJGYWN0b3J5PERv
Y3VtZW50PiBtX3dlYWtGYWN0b3J5OwotCiAgICAgSGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIqPiBtX21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnM7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzczNjRlNGNkZDVlZWQxYWU4OTQ1YThiYWY3ZDlmOTgw
NGE5MTgzOC4uNWE1YmJlMGYxZTBlYzUzMjZhYmYxYjZiMDdkMTBiODhhMjIzZmVhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMTA0NSw2ICsxMDQ1LDExIEBAIE5vZGUqIE5vZGU6OnBzZXVkb0F3YXJl
TGFzdENoaWxkKCkgY29uc3QKICAgICByZXR1cm4gbGFzdENoaWxkKCk7CiB9CiAKK2NvbnN0IFdl
YWtQdHJGYWN0b3J5PE5vZGU+JiBOb2RlOjp3ZWFrUHRyRmFjdG9yeSgpCit7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkud2Vha1B0ckZhY3RvcnkoKTsKK30KKwogY29uc3QgUmVuZGVyU3R5
bGUqIE5vZGU6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikK
IHsKICAgICBhdXRvKiBjb21wb3NlZFBhcmVudCA9IGNvbXBvc2VkVHJlZUFuY2VzdG9ycygqdGhp
cykuZmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDVjMjdmNmIwNjc5ZjQxYWM0NmU3ODI4YTdmYWQz
MTM1MmI1MDI3ZWMuLjkxM2Y1YWNiZGU5OTg1NmU5ODdlNDA0MGU5NDVkOGIzMDFmNjBhZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIC8vIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBi
ZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2RlZmluZSBEVU1QX05PREVf
U1RBVElTVElDUyAwCkBAIC0xNDUsNiArMTQ2LDggQEAgcHVibGljOgogICAgIE5vZGUqIHBzZXVk
b0F3YXJlRmlyc3RDaGlsZCgpIGNvbnN0OwogICAgIE5vZGUqIHBzZXVkb0F3YXJlTGFzdENoaWxk
KCkgY29uc3Q7CiAKKyAgICBjb25zdCBXZWFrUHRyRmFjdG9yeTxOb2RlPiYgd2Vha1B0ckZhY3Rv
cnkoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFVSTCYgYmFzZVVSSSgpIGNvbnN0Owog
ICAgIAogICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAKaW5kZXggODIxZGIxNzRlMDExODhmMjVi
ZDM2ODA4MWFhMmI3NzEzMmE4ODVlNC4uYTdjZTNjYmIxM2Y5NmI5OWU0ZDU5MDVhYTM4NTM2MmU5
ZGMxMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc05vZGVSYXJlRGF0YSB7
CiAgICAgdW5zaWduZWQgbV9iaXRmaWVsZHMgOiAyMDsKLSAgICB2b2lkKiBtX3BvaW50ZXJbM107
CisgICAgdm9pZCogbV9wb2ludGVyWzRdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5v
ZGVSYXJlRGF0YSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNOb2RlUmFyZURhdGEpLCBOb2RlUmFyZURh
dGFTaG91bGRTdGF5U21hbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDNiZTg3
NmM4ZDhkMGYzZTMxNjIzMzZlYzkwZTVmMzY1OTk1ZDdjNDguLmVmOTc3YTQ5NzJjYTEyNmZhMTUx
NWQ3ZjMzZWE3MWMwN2Q4MGU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiVGFnQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMjg0LDExICsyODUsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Nvbm5lY3Rl
ZEZyYW1lQ291bnQgLT0gYW1vdW50OwogICAgIH0KIAorICAgIGF1dG8mIHdlYWtQdHJGYWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeTsgfQorCiBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fY29ubmVjdGVkRnJhbWVDb3VudCA6IDEwOyAvLyBNdXN0IGZpdCBQYWdlOjptYXhO
dW1iZXJPZkZyYW1lcy4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlTGlzdHNOb2RlRGF0YT4g
bV9ub2RlTGlzdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0
YT4gbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKKyAgICBXZWFrUHRyRmFjdG9yeTxOb2RlPiBtX3dl
YWtQdHJGYWN0b3J5OwogfTsKIAogaW5saW5lIGJvb2wgTm9kZUxpc3RzTm9kZURhdGE6OmRlbGV0
ZVRoaXNBbmRVcGRhdGVOb2RlUmFyZURhdGFJZkFib3V0VG9SZW1vdmVMYXN0TGlzdChOb2RlJiBv
d25lck5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA1
NzM5OWE0ZDQ1NTJjNmU5NzJkODc4ZTNkMTZiMGM0Mzg3MGU4ZDQ4Li5hYmUwMDZkMDNmOTI4MzAz
NzVhMTQ2Yzc3NTJiMmYyYTMyMmM3YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNl
dFBpY3R1cmVFbGVtZW50KEhUTUxQaWN0dXJlRWxlbWVudCogcGljdHVyZUVsZW1lbnQpCiAgICAg
CiAgICAgaWYgKCFnUGljdHVyZU93bmVyTWFwKQogICAgICAgICBnUGljdHVyZU93bmVyTWFwID0g
bmV3IFBpY3R1cmVPd25lck1hcCgpOwotICAgIGdQaWN0dXJlT3duZXJNYXAtPmFkZCh0aGlzLCBw
aWN0dXJlRWxlbWVudC0+Y3JlYXRlV2Vha1B0cigpKTsKKyAgICBnUGljdHVyZU93bmVyTWFwLT5h
ZGQodGhpcywgbWFrZVdlYWtQdHIoKnBpY3R1cmVFbGVtZW50KSk7CiB9CiAgICAgCiB1bnNpZ25l
ZCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggYmY2MDVkZmMzZGZiMThh
Zjg1M2RkYTZkMjM4OGVlMDBlMGJmYmYwOC4uMDI5OWYwYzQ0OGQzMTI2Zjk3MTY2YjkyMjVhMzU4
NTI5NTFlYjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI4
LDcgKzI4LDYgQEAKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlN0ZXBSYW5nZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgi
CkBAIC0zNDMsOCArMzQyLDYgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
U2VsZWN0aW9uUmFuZ2VGb3JCaW5kaW5ncyhpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uKTsKIAotICAgIGF1dG8mIHdlYWtQdHJGYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV93ZWFrRmFjdG9yeTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcik7CiAKQEAgLTQ4NSw3ICs0ODIsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaXN0QXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXI+IG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOwogI2VuZGlmCi0gICAg
V2Vha1B0ckZhY3Rvcnk8SFRNTElucHV0RWxlbWVudD4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMjM3YzM2MGMzYTgwMjNh
MzQyNDBiZmQzOTBkMWY1NTU0ODlhNzdiZC4uNjMxZmUxYWVjY2ZmODliZWZiZjkxMDIxNDBmNDY4
NjZlZDE2ZDk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE0
Niw3ICsxNDYsNiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChIVE1MTWVkaWFFbGVtZW50KTsKIHB1YmxpYzoKLSAgICBXZWFrUHRyPEhUTUxN
ZWRpYUVsZW1lbnQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKnRoaXMpOyB9CiAgICAgUmVmUHRyPE1lZGlhUGxheWVyPiBwbGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX3BsYXllcjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpAQCAtOTIyLDcgKzkyMSw2IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsIHsgcmV0dXJuIGxvZ2dlcigpOyB9
CiAjZW5kaWYKIAotICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxNZWRpYUVsZW1lbnQ+IG1fd2Vha0Zh
Y3Rvcnk7CiAgICAgVGltZXIgbV9wZW5kaW5nQWN0aW9uVGltZXI7CiAgICAgVGltZXIgbV9wcm9n
cmVzc0V2ZW50VGltZXI7CiAgICAgVGltZXIgbV9wbGF5YmFja1Byb2dyZXNzVGltZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAppbmRleCAzZDUwN2NlYzMyMmNiNjkz
YjllYmVlM2M1ZjQ4N2I5YTFlODUyMzI5Li5hNjQxMGZhNTViZGYyZWU5NmYwODhkZGY1OTMyODJi
NjVlMGYyNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmgKQEAg
LTQ0LDggKzQ0LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCB2aWV3cG9ydENoYW5nZUFmZmVjdGVk
UGljdHVyZSgpIGNvbnN0OwogCi0gICAgV2Vha1B0cjxIVE1MUGljdHVyZUVsZW1lbnQ+IGNyZWF0
ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOyB9
Ci0KICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1N5
c3RlbVByZXZpZXdJbWFnZSgpIGNvbnN0OwogI2VuZGlmCkBAIC01NSw3ICs1Myw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAotICAgIFdlYWtQdHJGYWN0b3J5PEhU
TUxQaWN0dXJlRWxlbWVudD4gbV93ZWFrRmFjdG9yeTsKICAgICBWZWN0b3I8TWVkaWFRdWVyeVJl
c3VsdD4gbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGJjYjUwZDZjODVkMDQ2YjBkMjRhMTg0YWYz
MjkxODBlN2ZkYzk3ZjQuLmU2MzdiMzk5NWIxN2YwNTFhZmM1OTY4NjRjOTM1MGJkNjdiMWRiZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2
b2lkIExpbmtMb2FkZXI6OnByZWNvbm5lY3RJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRl
JiByZWxBdHRyaWJ1dGUsIGNvbnN0CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY3Jv
c3NPcmlnaW4sICJhbm9ueW1vdXMiKSAmJiBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhbkFj
Y2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYpKSkKICAgICAgICAgc3RvcmFnZUNyZWRl
bnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwogICAgIEFT
U0VSVChkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKTsKLSAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cHJlY29ubmVjdFRvKGRv
Y3VtZW50LmZyYW1lKCktPmxvYWRlcigpLCBocmVmLCBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3ks
IFt3ZWFrRG9jdW1lbnQgPSBkb2N1bWVudC5jcmVhdGVXZWFrUHRyKCksIGhyZWZdKFJlc291cmNl
RXJyb3IgZXJyb3IpIHsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3ko
KS0+cHJlY29ubmVjdFRvKGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLCBocmVmLCBzdG9yYWdl
Q3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQgPSBtYWtlV2Vha1B0cihkb2N1bWVudCks
IGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKCF3ZWFrRG9jdW1lbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAppbmRleCAzZDdjNGQ0YzU0ZDZmNDJiYmIxN2RhMWM5ZGJjNzVmYTQ0
NzFkNjQ3Li44MDc3ZDVhNWZlOGFjNThiNmU2MWRlYjcyOGZlYzg1YjMyNjJkYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1lZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVz
b3VyY2VMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQogICAgIDogQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQogICAgICwgbV9kb2N1bWVudCgmZG9jdW1lbnQpCi0g
ICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQuY3JlYXRlV2Vha1B0cigpKQorICAgICwg
bV9tZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIobWVkaWFFbGVtZW50KSkKICAgICAsIG1fY3Jvc3NP
cmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9ET01QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAK
aW5kZXggZGFmMmRiNmQ3YjhiODNkYjdmN2JmNGQxMTFlNjRmZWY2MGJiOTZlOC4uMjcxM2U1OTNk
NDM3NDY3NmYxMDUwMmRlOTZlMGQxYzY4MzJkNmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL0RPTVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5j
cHAKQEAgLTI1LDcgKzI1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIERPTVBh
cnNlcjo6RE9NUGFyc2VyKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCi0gICAgOiBtX2NvbnRl
eHREb2N1bWVudChjb250ZXh0RG9jdW1lbnQuY3JlYXRlV2Vha1B0cigpKQorICAgIDogbV9jb250
ZXh0RG9jdW1lbnQobWFrZVdlYWtQdHIoY29udGV4dERvY3VtZW50KSkKIHsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>