<?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>225630</bug_id>
          
          <creation_ts>2021-05-10 18:04:41 -0700</creation_ts>
          <short_desc>[MSE] QuotaExceededError Exception not thrown even if the sum of totalTrackBufferSize and appendBuffer size exceeds maximumBufferSize.</short_desc>
          <delta_ts>2021-06-07 02:16:41 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226034</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226711</see_also>
          <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="Toshio Ogasawara">toshio.ogasawara</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tomoki.imai</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>Yousuke.Kimoto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758767</commentid>
    <comment_count>0</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-05-10 18:04:41 -0700</bug_when>
    <thetext>When appendBuffer is executed, the exception of QuotaExceededError is not thrown even if the sum of totalTrackBufferSize and appendBuffer size exceeds maximumBufferSize.
It is also possible to send large size data exceeding the maximumBufferSize to the platform layer.
When appendBuffer is called, if it exceeds maximumBufferSize, it is better to throw QuotaExceededError exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758790</commentid>
    <comment_count>1</comment_count>
      <attachid>428237</attachid>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-05-10 19:34:15 -0700</bug_when>
    <thetext>Created attachment 428237
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759111</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-11 17:46:25 -0700</bug_when>
    <thetext>Committed r277345 (237603@main): &lt;https://commits.webkit.org/237603@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428237.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759112</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-11 17:47:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/77872373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760540</commentid>
    <comment_count>4</comment_count>
      <attachid>428237</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-05-15 19:20:37 -0700</bug_when>
    <thetext>Comment on attachment 428237
patch

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

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:494
&gt; +    if (m_private-&gt;bufferFull() || m_private-&gt;totalTrackBufferSizeInBytes() + m_pendingAppendData.capacity() + size &gt;= maximumBufferSize()) {

Looks like this won&apos;t work when &quot;Media in GPU Process&quot; is enabled. `SourceBufferPrivateRemote` does not provide a correct implementation of totalTrackBufferSizeInBytes().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760662</commentid>
    <comment_count>5</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-05-16 16:08:27 -0700</bug_when>
    <thetext>Also this doesn&apos;t seem to take into account that amount of data that can be evicted if any. So it will always read low.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762068</commentid>
    <comment_count>6</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-05-20 11:51:51 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #4)
&gt; Comment on attachment 428237 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:494
&gt; &gt; +    if (m_private-&gt;bufferFull() || m_private-&gt;totalTrackBufferSizeInBytes() + m_pendingAppendData.capacity() + size &gt;= maximumBufferSize()) {
&gt; 
&gt; Looks like this won&apos;t work when &quot;Media in GPU Process&quot; is enabled.
&gt; `SourceBufferPrivateRemote` does not provide a correct implementation of
&gt; totalTrackBufferSizeInBytes().

Filed bug 226034  to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762242</commentid>
    <comment_count>7</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-05-20 17:39:46 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #6)
&gt; (In reply to Peng Liu from comment #4)
&gt; &gt; Comment on attachment 428237 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=428237&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:494
&gt; &gt; &gt; +    if (m_private-&gt;bufferFull() || m_private-&gt;totalTrackBufferSizeInBytes() + m_pendingAppendData.capacity() + size &gt;= maximumBufferSize()) {
&gt; &gt; 
&gt; &gt; Looks like this won&apos;t work when &quot;Media in GPU Process&quot; is enabled.
&gt; &gt; `SourceBufferPrivateRemote` does not provide a correct implementation of
&gt; &gt; totalTrackBufferSizeInBytes().
&gt; 
&gt; Filed bug 226034  to track this.

I understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767265</commentid>
    <comment_count>8</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-06 17:57:08 -0700</bug_when>
    <thetext>(In reply to Toshio Ogasawara from comment #0)
&gt; When appendBuffer is executed, the exception of QuotaExceededError is not
&gt; thrown even if the sum of totalTrackBufferSize and appendBuffer size exceeds
&gt; maximumBufferSize.
&gt; It is also possible to send large size data exceeding the maximumBufferSize
&gt; to the platform layer.
&gt; When appendBuffer is called, if it exceeds maximumBufferSize, it is better
&gt; to throw QuotaExceededError exception.

On further thought, this assessment was incorrect.

If the size of the source buffer + pending data capacity + new size is greater than the maximum buffer size; then SourceBufferPrivate::bufferFull() would return true and the QuotaExceededError would have been thrown.

It sounds like in your case, you have a SourceBufferPrivate::evictCodedFrames that doesn&apos;t properly update the value returned by SourceBufferPrivate::bufferFull. This is where the fix is needed if any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767336</commentid>
    <comment_count>9</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-07 00:42:54 -0700</bug_when>
    <thetext>To add.

The issue here is a spec issue.

We are to reject a buffer only once we know that the source buffer is full.
The first appendBuffer should always complete.

https://w3c.github.io/media-source/#sourcebuffer-buffer-full-flag
&quot;The buffer full flag keeps track of whether appendBuffer() is allowed to accept more bytes. It is set to false when the SourceBuffer object is created and gets updated as data is appended and removed.&quot;

&quot;buffer full flag&quot; only gets modified to true in the 3.5.1 Segment Parser Loop algorithm, step 6.3
https://w3c.github.io/media-source/#sourcebuffer-segment-parser-loop
&quot;If this SourceBuffer is full and cannot accept more media data, then set the buffer full flag to true.&quot;

On the 2nd call to the appendBuffer, in the Prepare Append algorithm, step 3.5.4.6:
https://w3c.github.io/media-source/#sourcebuffer-prepare-append

&quot;If the buffer full flag equals true, then throw a QuotaExceededError exception and abort these steps.&quot;

This change as such, made the WebKit implementation non-compliant. 

However, I can understand why this change would be desired.

I will have a follow-up bug to rework how we handle source buffer size and checking capacity. It will make it easier to toggle between the two behaviours if needed (one before and after this fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767354</commentid>
    <comment_count>10</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-07 01:38:28 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #9)
&gt; To add.
&gt; 
&gt; The issue here is a spec issue.
&gt; 
&gt; We are to reject a buffer only once we know that the source buffer is full.
&gt; The first appendBuffer should always complete.
&gt; 
&gt; https://w3c.github.io/media-source/#sourcebuffer-buffer-full-flag
&gt; &quot;The buffer full flag keeps track of whether appendBuffer() is allowed to
&gt; accept more bytes. It is set to false when the SourceBuffer object is
&gt; created and gets updated as data is appended and removed.&quot;
&gt; 
&gt; &quot;buffer full flag&quot; only gets modified to true in the 3.5.1 Segment Parser
&gt; Loop algorithm, step 6.3
&gt; https://w3c.github.io/media-source/#sourcebuffer-segment-parser-loop
&gt; &quot;If this SourceBuffer is full and cannot accept more media data, then set
&gt; the buffer full flag to true.&quot;
&gt; 
&gt; On the 2nd call to the appendBuffer, in the Prepare Append algorithm, step
&gt; 3.5.4.6:
&gt; https://w3c.github.io/media-source/#sourcebuffer-prepare-append
&gt; 
&gt; &quot;If the buffer full flag equals true, then throw a QuotaExceededError
&gt; exception and abort these steps.&quot;
&gt; 
&gt; This change as such, made the WebKit implementation non-compliant. 
&gt; 
&gt; However, I can understand why this change would be desired.
&gt; 
&gt; I will have a follow-up bug to rework how we handle source buffer size and
&gt; checking capacity. It will make it easier to toggle between the two
&gt; behaviours if needed (one before and after this fix)

Thank you for your comment.
I will consider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767376</commentid>
    <comment_count>11</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-07 02:16:41 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=226711

Thank you for follow-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428237</attachid>
            <date>2021-05-10 19:34:15 -0700</date>
            <delta_ts>2021-05-11 17:46:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8736</size>
            <attacher name="Toshio Ogasawara">toshio.ogasawara</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NGQ1NmQ1OGMyNTIuLjM2ZmRjYjMwM2U4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA1LTEwICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3Mt
Y29tcGFueS5jb20+CisKKyAgICAgICAgW01TRV0gUXVvdGFFeGNlZWRlZEVycm9yIEV4Y2VwdGlv
biBub3QgdGhyb3duIGV2ZW4gaWYgdGhlIHN1bSBvZiB0b3RhbFRyYWNrQnVmZmVyU2l6ZSBhbmQg
YXBwZW5kQnVmZmVyIHNpemUgZXhjZWVkcyBtYXhpbXVtQnVmZmVyU2l6ZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTYzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLWZ1bGwtcXVvdGEtZXhjZWVkZWQtZXJyb3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLWFwcGVuZC1idWZmZXItZnVsbC1xdW90YS1leGNlZWRlZC1lcnJvci5odG1sOiBBZGRlZC4K
KwogMjAyMS0wNS0xMCAgQ2hyaXMgR2FtYnJlbGwgIDxjZ2FtYnJlbGxAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMYXlvdXRUZXN0c10gRGVjb3VwbGUgaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMv
Y3JlYXRlLWlkMy1kYi5waHAgZnJvbSB3ZWJzZXJ2ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1mdWxsLXF1b3Rh
LWV4Y2VlZGVkLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1mdWxsLXF1b3RhLWV4Y2VlZGVkLWVycm9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ5
MTFmOWU2MTZiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1mdWxsLXF1b3RhLWV4Y2VlZGVkLWVycm9y
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACisKK0VWRU5UKHNvdXJjZW9wZW4pCitFVkVO
VCh1cGRhdGVlbmQpCitBcHBlbmRpbmcgUFRTPTAKK0VWRU5UKHVwZGF0ZWVuZCkKK0FwcGVuZGlu
ZyBQVFM9MQorRVZFTlQodXBkYXRlZW5kKQorQXBwZW5kaW5nIFBUUz0yCitFVkVOVCh1cGRhdGVl
bmQpCitBcHBlbmRpbmcgUFRTPTMKK0VWRU5UKHVwZGF0ZWVuZCkKK0FwcGVuZGluZyBQVFM9NAor
RVZFTlQodXBkYXRlZW5kKQorQXBwZW5kaW5nIFBUUz01CitFVkVOVCh1cGRhdGVlbmQpCitBcHBl
bmRpbmcgUFRTPTYKK0VWRU5UKHVwZGF0ZWVuZCkKK0FwcGVuZGluZyBQVFM9NworRVZFTlQodXBk
YXRlZW5kKQorQXBwZW5kaW5nIFBUUz04CitFVkVOVCh1cGRhdGVlbmQpCitBcHBlbmRpbmcgUFRT
PTkKK0VWRU5UKHVwZGF0ZWVuZCkKK0FwcGVuZGluZyBQVFM9MTAKK0VWRU5UKHVwZGF0ZWVuZCkK
K0FwcGVuZGluZyBQVFM9MTEKK0VWRU5UKHVwZGF0ZWVuZCkKK0FwcGVuZGluZyBQVFM9MTIKK0VW
RU5UKHVwZGF0ZWVuZCkKK0VYUEVDVEVEIChleGNlcHRpb24gIT0gJ1F1b3RhRXhjZWVkZWRFcnJv
cjogVGhlIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLicpIE9LCitBcHBlbmRpbmcgUFRTPTEzLTE1
CitFWFBFQ1RFRCAoZXhjZXB0aW9uID09ICdRdW90YUV4Y2VlZGVkRXJyb3I6IFRoZSBxdW90YSBo
YXMgYmVlbiBleGNlZWRlZC4nKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLWZ1bGwt
cXVvdGEtZXhjZWVkZWQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1mdWxsLXF1b3RhLWV4Y2VlZGVkLWVycm9yLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNGMxMTVhODE0MDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLWFwcGVuZC1idWZmZXItZnVsbC1xdW90YS1leGNlZWRlZC1lcnJvci5odG1sCkBAIC0w
LDAgKzEsODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+
bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNv
dXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVm
ZmVyOworICAgIHZhciBpbml0U2VnbWVudDsKKyAgICB2YXIgZXhjZXB0aW9uOworCisgICAgYXN5
bmMgZnVuY3Rpb24gYXBwZW5kUHRzUmFuZ2UoZmlyc3RQdHMsIGxhc3RQdHMpIHsKKyAgICAgICAg
dmFyIHJlc3VsdEV4Y2VwdGlvbiA9IG51bGw7CisgICAgICAgIGZvciAodmFyIHB0cyA9IGZpcnN0
UHRzOyBwdHMgPD0gbGFzdFB0czsgcHRzKyspIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCdBcHBlbmRpbmcgUFRTPScrcHRzKTsKKyAgICAgICAgICAg
ICAgICBzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKG1ha2VBU2FtcGxlKHB0cywgcHRzLCAxLCAx
LCAxLCBTQU1QTEVfRkxBRy5TWU5DLCAxKSk7CisgICAgICAgICAgICAgICAgYXdhaXQgd2FpdEZv
cihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgICAgICByZXN1bHRFeGNlcHRpb24gPSBlOworICAgICAgICAgICAgICAgIHNv
dXJjZUJ1ZmZlci5hYm9ydCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRFeGNlcHRpb247CisgICAgfQorCisg
ICAgYXN5bmMgZnVuY3Rpb24gYXBwZW5kQ29uY2F0ZW5hdGVTYW1wbGVzKHN0YXJ0LCBlbmQpIHsK
KyAgICAgICAgdmFyIHJlc3VsdEV4Y2VwdGlvbiA9IG51bGw7CisgICAgICAgIGNvbnN0IHNhbXBs
ZXMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgdGltZSA9IHN0YXJ0OyB0aW1lIDw9IGVuZDsgdGlt
ZSsrKQorICAgICAgICAgICAgc2FtcGxlcy5wdXNoKG1ha2VBU2FtcGxlKHRpbWUsIHRpbWUsIDEs
IDEsIDEsIHRpbWUgPT09IHN0YXJ0ID8gU0FNUExFX0ZMQUcuU1lOQyA6IFNBTVBMRV9GTEFHLk5P
TkUpKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdBcHBlbmRp
bmcgUFRTPScrc3RhcnQrJy0nK2VuZCApOworICAgICAgICAgICAgc291cmNlQnVmZmVyLmFwcGVu
ZEJ1ZmZlcihjb25jYXRlbmF0ZVNhbXBsZXMoc2FtcGxlcykpOworICAgICAgICAgICAgYXdhaXQg
d2FpdEZvcihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnKTsKKyAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgcmVzdWx0RXhjZXB0aW9uID0gZTsKKyAgICAgICAgICAgIHNvdXJjZUJ1
ZmZlci5hYm9ydCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRFeGNlcHRpb247
CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5p
bml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIGFzeW5jKCkgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAg
ICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworCisgICAgICAgIGNvbnN0IHZpZGVvU291
cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc291cmNlJyk7CisgICAgICAgIHZpZGVvU291
cmNlLnR5cGUgPSAndmlkZW8vbW9jazsgY29kZWNzPW1vY2snOworICAgICAgICB2aWRlb1NvdXJj
ZS5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSk7CisgICAgICAgIHZpZGVvLmFwcGVu
ZENoaWxkKHZpZGVvU291cmNlKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHNvdXJjZSwgJ3Nv
dXJjZW9wZW4nKTsKKyAgICAgICAgc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZl
cigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKTsKKyAgICAgICAgaW5pdFNlZ21lbnQgPSBtYWtl
QUluaXQoMzUwLCBbbWFrZUFUcmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7Cisg
ICAgICAgIHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoaW5pdFNlZ21lbnQpOworICAgICAgICBh
d2FpdCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworICAgICAgICB3YWl0Rm9y
KHNvdXJjZUJ1ZmZlciwgJ2Vycm9yJyk7CisKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dE1heGltdW1Tb3VyY2VCdWZmZXJTaXplKDEwMDApOworCisgICAgICAgIGV4Y2VwdGlvbiA9IGF3
YWl0IGFwcGVuZFB0c1JhbmdlKDAsIDEyKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdleGNlcHRp
b24nLCAnUXVvdGFFeGNlZWRlZEVycm9yOiBUaGUgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQuJywg
JyE9Jyk7CisKKyAgICAgICAgZXhjZXB0aW9uID0gYXdhaXQgYXBwZW5kQ29uY2F0ZW5hdGVTYW1w
bGVzKDEzLCAxNSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnZXhjZXB0aW9uJywgJ1F1b3RhRXhj
ZWVkZWRFcnJvcjogVGhlIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLicsICc9PScpOworCisgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDx2aWRlbz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYyNTc3
M2M0YmE2OS4uYTc5ZTE3NTdmMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEt
MDUtMTAgIFRvc2hpbyBPZ2FzYXdhcmEgIDx0b3NoaW8ub2dhc2F3YXJhQGFjY2Vzcy1jb21wYW55
LmNvbT4KKworICAgICAgICBbTVNFXSBRdW90YUV4Y2VlZGVkRXJyb3IgRXhjZXB0aW9uIG5vdCB0
aHJvd24gZXZlbiBpZiB0aGUgc3VtIG9mIHRvdGFsVHJhY2tCdWZmZXJTaXplIGFuZCBhcHBlbmRC
dWZmZXIgc2l6ZSBleGNlZWRzIG1heGltdW1CdWZmZXJTaXplLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NjMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLWZ1bGwtcXVvdGEtZXhjZWVkZWQtZXJyb3IuaHRtbAor
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisKIDIwMjEtMDUtMTAg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjc3MjgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGNjYWZkMGNhYTU5Yi4uMjEyZTk5
YmRhZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCkBAIC00OTEsNyArNDkxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU291
cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LAogICAgIG1fcHJpdmF0ZS0+ZXZpY3RDb2RlZEZyYW1lcyhzaXplLCBtX3BlbmRpbmdBcHBlbmRE
YXRhLmNhcGFjaXR5KCksIG1heGltdW1CdWZmZXJTaXplKCksIG1fc291cmNlLT5jdXJyZW50VGlt
ZSgpLCBtX3NvdXJjZS0+ZHVyYXRpb24oKSwgbV9zb3VyY2UtPmlzRW5kZWQoKSk7CiAKICAgICAv
LyA1LiBJZiB0aGUgYnVmZmVyIGZ1bGwgZmxhZyBlcXVhbHMgdHJ1ZSwgdGhlbiB0aHJvdyBhIFF1
b3RhRXhjZWVkZWRFcnJvciBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXAuCi0gICAgaWYg
KG1fcHJpdmF0ZS0+YnVmZmVyRnVsbCgpKSB7CisgICAgaWYgKG1fcHJpdmF0ZS0+YnVmZmVyRnVs
bCgpIHx8IG1fcHJpdmF0ZS0+dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgKyBtX3BlbmRp
bmdBcHBlbmREYXRhLmNhcGFjaXR5KCkgKyBzaXplID49IG1heGltdW1CdWZmZXJTaXplKCkpIHsK
ICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJidWZmZXIgZnVsbCwgZmFpbGluZyB3
aXRoIFF1b3RhRXhjZWVkZWRFcnJvciBlcnJvciIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUXVvdGFFeGNlZWRlZEVycm9yIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCBlN2Vm
YjI0NWRiMzkuLjIxMmQyMTBhNjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTYzOSw3ICs2Mzks
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3Qg
bmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbgogICAgIC8vIFRoaXMgYWxnb3JpdGhtIGlzIHJ1
biB0byBmcmVlIHVwIHNwYWNlIGluIHRoaXMgc291cmNlIGJ1ZmZlciB3aGVuIG5ldyBkYXRhIGlz
IGFwcGVuZGVkLgogICAgIC8vIDEuIExldCBuZXcgZGF0YSBlcXVhbCB0aGUgZGF0YSB0aGF0IGlz
IGFib3V0IHRvIGJlIGFwcGVuZGVkIHRvIHRoaXMgU291cmNlQnVmZmVyLgogICAgIC8vIDIuIElm
IHRoZSBidWZmZXIgZnVsbCBmbGFnIGVxdWFscyBmYWxzZSwgdGhlbiBhYm9ydCB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fYnVmZmVyRnVsbCkKKyAgICBpZiAoIW1fYnVmZmVyRnVsbCAmJiB0b3Rh
bFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSArIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHkgKyBu
ZXdEYXRhU2l6ZSA8IG1heGltdW1CdWZmZXJTaXplKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyAzLiBMZXQgcmVtb3ZhbCByYW5nZXMgZXF1YWwgYSBsaXN0IG9mIHByZXNlbnRhdGlvbiB0aW1l
IHJhbmdlcyB0aGF0IGNhbiBiZSBldmljdGVkIGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBmYzllZGMx
YzU3MjUuLjFiOTEyNjM1ZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtMTA4LDYgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaWRlbzsgfQog
CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFtcE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0
YW1wT2Zmc2V0OyB9CisgICAgdWludDY0X3QgdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkg
Y29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tCdWZmZXIgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjgsNyArMTY5LDYgQEAgcHJvdGVjdGVkOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFu
Z2VzJik7CiAgICAgdm9pZCBzZXRCdWZmZXJGdWxsKGJvb2wgYnVmZmVyRnVsbCkgeyBtX2J1ZmZl
ckZ1bGwgPSBidWZmZXJGdWxsOyB9CiAgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSUQpOwotICAgIHVpbnQ2NF90IHRvdGFsVHJhY2tCdWZmZXJTaXplSW5C
eXRlcygpIGNvbnN0OwogCiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>