<?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>102012</bug_id>
          
          <creation_ts>2012-11-12 16:58:25 -0800</creation_ts>
          <short_desc>Disable frame loading instead of throwing exceptions on subtree modifications in ChildFrameDisconnector</short_desc>
          <delta_ts>2012-11-15 14:35:02 -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>Page Loading</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>serg.glazunov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>764981</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-12 16:58:25 -0800</bug_when>
    <thetext>Disable frame loading instead of throwing exceptions on subtree modifications in ChildFrameDisconnector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765000</commentid>
    <comment_count>1</comment_count>
      <attachid>173764</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-12 17:12:36 -0800</bug_when>
    <thetext>Created attachment 173764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765124</commentid>
    <comment_count>2</comment_count>
      <attachid>173764</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-12 19:09:01 -0800</bug_when>
    <thetext>Comment on attachment 173764
Patch

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

If possible, I&apos;d like Adam to take a look at this since he&apos;s more familiar with frame loading. Looks good to me though.

&gt; Source/WebCore/ChangeLog:16
&gt; +        This works because either the subtree will be removed and the frame never
&gt; +        loading doesn&apos;t matter, or some section of the subtree that contains the
&gt; +        frame will be moved to another part of the document which will cause the
&gt; +        frame to load when it&apos;s inserted there.

Kind of &quot;works&quot;. Better than the old behavior for sure, but we don&apos;t actually load the frame and in theory we could.

&gt; Source/WebCore/ChangeLog:25
&gt; +        An better fix could be to repeatedly walk the subtree until all frames
&gt; +        were disconnected or some iteration limit was hit and then force all leftover
&gt; +        subframes to disconnect without firing unload handlers but this is such an
&gt; +        edge case I don&apos;t think the complexity is necessary.

If we keep a count of the unload handlers in the subtree, then we can actually do this properly. Once we&apos;ve fired all the unload handlers, then we can load the subframes. Might even be worth adding a FIXME for this. I&apos;m OK with this being broken for now, but it&apos;s worth documenting that we have a bug in the code.

&gt; Source/WebCore/ChangeLog:27
&gt; +        No new tests, this is covered by existing tests.

Can you add a test for the case where we used too throw an exception for moving non-frame nodes during unload handlers? The iframe node case seems to be handled by the existing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765280</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-12 22:59:48 -0800</bug_when>
    <thetext>I&apos;m happy to look, but I&apos;ll need to do so when more awake.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765933</commentid>
    <comment_count>4</comment_count>
      <attachid>173764</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 12:29:39 -0800</bug_when>
    <thetext>Comment on attachment 173764
Patch

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

&gt; Source/WebCore/dom/Node.cpp:-1202
&gt; -    if (newParent-&gt;inDocument() &amp;&amp; ChildFrameDisconnector::nodeHasDisconnector(newParent)) {
&gt; -        ec = NO_MODIFICATION_ALLOWED_ERR;
&gt; -        return;
&gt; -    }

This seems way more general than just frames.  Are there other cases we need to worry about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766017</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-13 13:49:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 173764 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173764&amp;action=review
&gt;...
&gt; &gt; Source/WebCore/ChangeLog:25
&gt; &gt; +        An better fix could be to repeatedly walk the subtree until all frames
&gt; &gt; +        were disconnected or some iteration limit was hit and then force all leftover
&gt; &gt; +        subframes to disconnect without firing unload handlers but this is such an
&gt; &gt; +        edge case I don&apos;t think the complexity is necessary.
&gt; 
&gt; If we keep a count of the unload handlers in the subtree, then we can actually do this properly. Once we&apos;ve fired all the unload handlers, then we can load the subframes. Might even be worth adding a FIXME for this. I&apos;m OK with this being broken for now, but it&apos;s worth documenting that we have a bug in the code.

That still requires a loop and some fallback behavior to prevent infinite loops. For example if these new frames have unload handlers we have to keep running the disconnect until there&apos;s no more frames.

You end up with code like:

for (i = 0; i &lt; maxIterations &amp;&amp; hasConnectedFrames(); i++)
  disconnectAllSubframes();

if (hasConnectedFrames())
  disconnectWithFrameLoadingDisabled();

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:27
&gt; &gt; +        No new tests, this is covered by existing tests.
&gt; 
&gt; Can you add a test for the case where we used too throw an exception for moving non-frame nodes during unload handlers? The iframe node case seems to be handled by the existing test.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766019</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-13 13:50:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 173764 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173764&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:-1202
&gt; &gt; -    if (newParent-&gt;inDocument() &amp;&amp; ChildFrameDisconnector::nodeHasDisconnector(newParent)) {
&gt; &gt; -        ec = NO_MODIFICATION_ALLOWED_ERR;
&gt; &gt; -        return;
&gt; &gt; -    }
&gt; 
&gt; This seems way more general than just frames.  Are there other cases we need to worry about?

Nope. The point of this patch is to relax the restriction but still keep the security fix that this code was added for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766119</commentid>
    <comment_count>7</comment_count>
      <attachid>174012</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-13 15:41:53 -0800</bug_when>
    <thetext>Created attachment 174012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766348</commentid>
    <comment_count>8</comment_count>
      <attachid>174012</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 20:25:43 -0800</bug_when>
    <thetext>Comment on attachment 174012
Patch

Clearing flags on attachment: 174012

Committed r134528: &lt;http://trac.webkit.org/changeset/134528&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766349</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 20:25:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768416</commentid>
    <comment_count>10</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-15 13:06:42 -0800</bug_when>
    <thetext>After some testing it seems Gecko calls unload *after* the subtree removal so they won&apos;t load frames either:

&lt;div&gt;
    &lt;iframe&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;script&gt;
onload = function() {
    div = document.querySelector(&apos;div&apos;);
    frame = document.querySelector(&apos;iframe&apos;);
    frame.contentWindow.onunload = function() {
        console.log(top.frame.parentNode.parentNode);
        // In Gecko the div is already removed so parentNode == null
        // In WebKit we do this before the real remove so parentNode == body
        frame = div.appendChild(document.createElement(&apos;iframe&apos;));
        console.log(frame.contentDocument);
        // In Gecko and WebKit (after r134528) frame.contentDocument == null
        // In older WebKit the appendChild throws a NO_MODIFICATION_ALLOWED_ERR
    };
    div.parentNode.removeChild(div);
};
&lt;/script&gt;

So this patch made us match Gecko by not loading frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768504</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-15 14:35:02 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; After some testing it seems Gecko calls unload *after* the subtree removal so they won&apos;t load frames either:

Unfortunately, IE9/10 do the unload before the subtree removal. I couldn&apos;t get Opera to fire unload events at all from iframes.

Maybe we should try having the unload fire after the frame has been unloaded. We can do it behind a flag to start with so Chromium can ship it as a way of vetting it&apos;s safety before turning it on for other ports.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173764</attachid>
            <date>2012-11-12 17:12:36 -0800</date>
            <delta_ts>2012-11-13 15:41:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102012-20121112171037.patch</filename>
            <type>text/plain</type>
            <size>11056</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI1NTRmYTAwNGI2OGUx
YzdjY2RkMmM5MGFlZTMzYTRhYTEwYzVhYS4uZTM5YTA1ZWIzZTc5OWVjOGVmMGVkNTBjZTc0MTdi
Y2RlMzI5Y2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTExLTEyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERpc2FibGUgZnJh
bWUgbG9hZGluZyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMgb24gc3VidHJlZSBtb2Rp
ZmljYXRpb25zIGluIENoaWxkRnJhbWVEaXNjb25uZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAxMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHkgaWYgeW91IG1vZGlmaWVkIHRo
ZSBzdWJ0cmVlIHRoYXQgd2FzIGJlaW5nIHJlbW92ZWQgZnJvbSBhCisgICAgICAgIHJlbW92ZUNo
aWxkIGZyb20gaW5zaWRlIGFuIHVubG9hZCBoYW5kbGVyIG9uIGFuIDxpZnJhbWU+IGluc2lkZSB0
aGUKKyAgICAgICAgc3VidHJlZSB5b3UnZCBnZXQgYW4gZXhjZXB0aW9uIHdoaWNoIGlzIHdyb25n
LiBJbnN0ZWFkIHdlIGp1c3QgbmVlZCB0bworICAgICAgICBkaXNhYmxlIGFsbCBmcmFtZSBsb2Fk
aW5nIHRoZXJlLgorCisgICAgICAgIFRoaXMgd29ya3MgYmVjYXVzZSBlaXRoZXIgdGhlIHN1YnRy
ZWUgd2lsbCBiZSByZW1vdmVkIGFuZCB0aGUgZnJhbWUgbmV2ZXIKKyAgICAgICAgbG9hZGluZyBk
b2Vzbid0IG1hdHRlciwgb3Igc29tZSBzZWN0aW9uIG9mIHRoZSBzdWJ0cmVlIHRoYXQgY29udGFp
bnMgdGhlCisgICAgICAgIGZyYW1lIHdpbGwgYmUgbW92ZWQgdG8gYW5vdGhlciBwYXJ0IG9mIHRo
ZSBkb2N1bWVudCB3aGljaCB3aWxsIGNhdXNlIHRoZQorICAgICAgICBmcmFtZSB0byBsb2FkIHdo
ZW4gaXQncyBpbnNlcnRlZCB0aGVyZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBjaGVjayBm
b3IgPG9iamVjdD4gZWxlbWVudHMuIEl0IGRvZXNuJ3Qgc2VlbSB0aGlzIGlzIGFjdHVhbGx5Cisg
ICAgICAgIHJlYWNoYWJsZSBpbiB0aGUgZXhpc3RpbmcgY29kZSwgYnV0IEknbSBub3QgZW50aXJl
bHkgc3VyZSBzaW5jZSB0aGUgZnJhbWUKKyAgICAgICAgbG9hZGluZyBhbmQgb2JqZWN0L3BsdWdp
biBoYW5kbGluZyBpcyB2ZXJ5IGNvbmZ1c2luZy4KKworICAgICAgICBBbiBiZXR0ZXIgZml4IGNv
dWxkIGJlIHRvIHJlcGVhdGVkbHkgd2FsayB0aGUgc3VidHJlZSB1bnRpbCBhbGwgZnJhbWVzCisg
ICAgICAgIHdlcmUgZGlzY29ubmVjdGVkIG9yIHNvbWUgaXRlcmF0aW9uIGxpbWl0IHdhcyBoaXQg
YW5kIHRoZW4gZm9yY2UgYWxsIGxlZnRvdmVyCisgICAgICAgIHN1YmZyYW1lcyB0byBkaXNjb25u
ZWN0IHdpdGhvdXQgZmlyaW5nIHVubG9hZCBoYW5kbGVycyBidXQgdGhpcyBpcyBzdWNoIGFuCisg
ICAgICAgIGVkZ2UgY2FzZSBJIGRvbid0IHRoaW5rIHRoZSBjb21wbGV4aXR5IGlzIG5lY2Vzc2Fy
eS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMgY292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6Q2hpbGRGcmFtZURpc2Nvbm5lY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjp+Q2hpbGRGcmFt
ZURpc2Nvbm5lY3Rvcik6CisgICAgICAgIChDaGlsZEZyYW1lRGlzY29ubmVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmRpc2Nvbm5lY3QpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOiBS
ZW1vdmVkIGV4Y2VwdGlvbi4KKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWROb3RpZnlTdWJ0
cmVlSW5zZXJ0aW9ucyk6IENoZWNrIGNhbkxvYWRGcmFtZSgpLgorICAgICAgICAqIGh0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcjo6U3ViZnJhbWVMb2Fk
aW5nRGlzYWJsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkaW5nRGlzYWJsZXI6
On5TdWJmcmFtZUxvYWRpbmdEaXNhYmxlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6Y2FuTG9hZEZyYW1lKToKKyAgICAgICAgICBSZXR1cm5zIHRydWUgaWYg
ZnJhbWVzIGNhbiBiZSBsb2FkZWQgaW4gdGhlIHN1YnRyZWUuCisgICAgICAgIChXZWJDb3JlOjpT
dWJmcmFtZUxvYWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAq
IGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVj
dEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6CisgICAgICAgICAgQ2hlY2sgY2FuTG9hZEZyYW1lKCku
IEkgdGhpbmsgdGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ1dCBpdCdzIGJldHRlcgorICAgICAg
ICAgIHRvIGJlIHNhZmUgdGhhbiBzb3JyeSBsYXRlci4KKwogMjAxMi0xMS0wOSAgVGllbi1SZW4g
Q2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29ycmVjdCBoaXQtdGVzdCBw
b2ludCBzY2FsaW5nIGZvciBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDk4NDA4ODk3YjFiMDQxYThm
YmNhNDdmMmU4ZDljMzVjNWMzNTYyOTMuLjIxOWE1ZDQ5NjBjYmIyZTMzNGYzZmQxZGRmOGE5OTlj
YTA5OTc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5oCkBAIC0yNzksMTIgKzI3OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChmcmFtZSAmJiAh
ZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjb2xsZWN0RGVzY2VuZGFudChtX3Jvb3QsIHNob3VsZEluY2x1ZGVSb290KTsKLSAgICAgICAg
cm9vdE5vZGVzKCkuYWRkKG1fcm9vdCk7CiAgICAgfQogCiAgICAgfkNoaWxkRnJhbWVEaXNjb25u
ZWN0b3IoKQogICAgIHsKLSAgICAgICAgcm9vdE5vZGVzKCkucmVtb3ZlKG1fcm9vdCk7CiAgICAg
fQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CkBAIC0yOTUsMTIgKzI5Myw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb2xsZWN0RGVzY2VuZGFudChOb2RlKiByb290LCBTaG91bGRJbmNsdWRlUm9v
dCk7CiAgICAgdm9pZCBjb2xsZWN0RGVzY2VuZGFudChFbGVtZW50U2hhZG93Kik7CiAKLSAgICBz
dGF0aWMgSGFzaFNldDxOb2RlKj4mIHJvb3ROb2RlcygpCi0gICAgewotICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8Tm9kZSo+LCBub2RlcywgKCkpOwotICAgICAgICByZXR1cm4g
bm9kZXM7Ci0gICAgfQotCiAgICAgY2xhc3MgVGFyZ2V0IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IFRhcmdldChIVE1MRnJhbWVPd25lckVsZW1lbnQqIGVsZW1lbnQpCkBAIC0zMzcsNiArMzI5LDkg
QEAgaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6Y29sbGVjdERlc2NlbmRhbnQo
Tm9kZSogcm9vdCwgU2hvdWxkSW5jbHVkZVIKIAogaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nv
bm5lY3Rvcjo6ZGlzY29ubmVjdCgpCiB7CisgICAgLy8gTXVzdCBkaXNhYmxlIGZyYW1lIGxvYWRp
bmcgaW4gdGhlIHN1YnRyZWUgc28gYW4gdW5sb2FkIGhhbmRsZXIgY2Fubm90CisgICAgLy8gaW5z
ZXJ0IG1vcmUgZnJhbWVzIGFuZCBjcmVhdGUgbG9hZGVkIGZyYW1lcyBpbiBkZXRhY2hlZCBzdWJ0
cmVlcy4KKyAgICBTdWJmcmFtZUxvYWRpbmdEaXNhYmxlciBkaXNhYmxlcihtX3Jvb3QpOwogICAg
IHVuc2lnbmVkIHNpemUgPSBtX2xpc3Quc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgVGFyZ2V0JiB0YXJnZXQgPSBtX2xpc3RbaV07CkBA
IC0zNDUsMjAgKzM0MCw2IEBAIGlubGluZSB2b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmRp
c2Nvbm5lY3QoKQogICAgIH0KIH0KIAotaW5saW5lIGJvb2wgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rv
cjo6bm9kZUhhc0Rpc2Nvbm5lY3RvcihOb2RlKiBub2RlKQotewotICAgIEhhc2hTZXQ8Tm9kZSo+
JiBub2RlcyA9IHJvb3ROb2RlcygpOwotCi0gICAgaWYgKG5vZGVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCkpCi0gICAgICAgIGlmIChub2Rlcy5jb250YWlucyhub2RlKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBDb250YWluZXJOb2RlQWxnb3JpdGhtc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggMmRjY2EyNmFjODU0NDY4ZGE5NzZkMTc5YzZkNDEwZjJhODQ3M2NiZC4uYmQ4ODdlOTRj
YjBkYzA5MDJhY2U1ZjAzZDJkMDhhZjg3MjhjY2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTE5
NSwxMSArMTE5NSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrQWNjZXB0Q2hpbGQoTm9kZSogbmV3UGFy
ZW50LCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSElF
UkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaWYgKG5l
d1BhcmVudC0+aW5Eb2N1bWVudCgpICYmIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6Om5vZGVIYXNE
aXNjb25uZWN0b3IobmV3UGFyZW50KSkgewotICAgICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIH0KIAogdm9pZCBOb2RlOjpjaGVj
a1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApp
bmRleCBkNzg4MmYzN2MzY2YyMGM1ZjBiNzk5N2RmNTVlODUxZDcwZDExN2I1Li45NzViMzAyNzU0
MmM5YjYxYTg5MDRkM2U3ZTdmZjEwNTliOGYwM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMTcwLDYgKzE3MCw5IEBAIHZvaWQgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OmRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zKENvbnRhaW5lck5vZGUq
KQogICAgIGlmICghZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKCFTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcjo6Y2FuTG9hZEZyYW1lKHRoaXMpKQorICAgICAg
ICByZXR1cm47CisKICAgICAvLyBKYXZhU2NyaXB0IGluIHNyYz1qYXZhc2NyaXB0OiBhbmQgYmVm
b3Jlb25sb2FkIGNhbiBhY2Nlc3MgdGhlIHJlbmRlcmVyCiAgICAgLy8gZHVyaW5nIGF0dHJpYnV0
ZSBwYXJzaW5nICpiZWZvcmUqIHRoZSBub3JtYWwgcGFyc2VyIG1hY2hpbmVyeSB3b3VsZAogICAg
IC8vIGF0dGFjaCB0aGUgZWxlbWVudC4gVG8gc3VwcG9ydCB0aGlzLCB3ZSBsYXp5QXR0YWNoIGhl
cmUsIGJ1dCBvbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93
bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
aAppbmRleCA1ZTI0MjZhN2Q5ZTZlNjNkYTM4NjZiYjM5MmRjYWYwMzI2NTRiODEwLi5lZWZmYzg5
ZTFhNTBiMGQyZTUxNzcwOTAxNzcwMWZhMjY4MmYyNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTc2LDYgKzc2LDM4IEBAIGlubGluZSBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIHRvRnJhbWVPd25lckVsZW1lbnQoTm9kZSogbm9kZSkKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7CiB9CiAKK2Ns
YXNzIFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdWJm
cmFtZUxvYWRpbmdEaXNhYmxlcihOb2RlKiByb290KQorICAgICAgICA6IG1fcm9vdChyb290KQor
ICAgIHsKKyAgICAgICAgZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKS5hZGQobV9yb290KTsKKyAgICB9
CisKKyAgICB+U3ViZnJhbWVMb2FkaW5nRGlzYWJsZXIoKQorICAgIHsKKyAgICAgICAgZGlzYWJs
ZWRTdWJ0cmVlUm9vdHMoKS5yZW1vdmUobV9yb290KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBjYW5Mb2FkRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lcikKKyAgICB7CisgICAg
ICAgIGZvciAoTm9kZSogbm9kZSA9IG93bmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7CisgICAgICAgICAgICBpZiAoZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKS5jb250YWlucyhu
b2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBIYXNoU2V0PE5vZGUq
PiYgZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChIYXNoU2V0PE5vZGUqPiwgbm9kZXMsICgpKTsKKyAgICAgICAgcmV0dXJuIG5vZGVzOwor
ICAgIH0KKworICAgIE5vZGUqIG1fcm9vdDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGJjMmVmZmNhMTk4M2YyYzYzNWQ0YTYxMzQzODY3
OWFhYzVmNDhkZTQuLjc4YWVlNmQ4ZTk3NDg4ZmYyYzZjYmQ2ZDA1MjRlZjBhZTM5MWIxYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0yODIsNyArMjgy
LDEzIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlv
bk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
QVNTRVJUIGlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSBpbnN0ZWFkLgogICAgIGlmICghaXNG
aW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICAv
LyBGSVhNRTogSSdtIG5vdCBzdXJlIGl0J3MgZXZlciBwb3NzaWJsZSB0byBnZXQgaW50byB1cGRh
dGVXaWRnZXQgZHVyaW5nIGEKKyAgICAvLyByZW1vdmFsLCBidXQganVzdCBpbiBjYXNlIHdlIHNo
b3VsZCBhdm9pZCBsb2FkaW5nIHRoZSBmcmFtZSB0byBwcmV2ZW50CisgICAgLy8gc2VjdXJpdHkg
YnVncy4KKyAgICBpZiAoIVN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpjYW5Mb2FkRnJhbWUodGhp
cykpCisgICAgICAgIHJldHVybjsKKwogICAgIFN0cmluZyB1cmwgPSB0aGlzLT51cmwoKTsKICAg
ICBTdHJpbmcgc2VydmljZVR5cGUgPSB0aGlzLT5zZXJ2aWNlVHlwZSgpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWZi
YmMzODA1NTY0MTQ2ZTQ4NzNlMDU1ODdjNWZjMjkwYzE5ODlkZC4uOTRhZTY4YjQ5Y2I1ZTU2N2Ey
NWFhMGE3Zjk4OTE3Y2QzOGY1MDE1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTExLTEy
ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERpc2Fi
bGUgZnJhbWUgbG9hZGluZyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMgb24gc3VidHJl
ZSBtb2RpZmljYXRpb25zIGluIENoaWxkRnJhbWVEaXNjb25uZWN0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBjb25zb2xlIGxvZyBvdXRw
dXQgZnJvbSB0aGUgZXhjZXB0aW9uIHdlIG5vIGxvbmdlciB0aHJvdy4gU2luY2Ugd2Ugbm8KKyAg
ICAgICAgbG9uZ2VyIHRocm93IGFuIGV4Y2VwdGlvbiB3ZSBkb24ndCBuZWVkIGEgcGxhdGZvcm0g
c3BlY2lmaWMgb3V0cHV0IGZpbGUgZWl0aGVyLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvb3V0
LW9mLWRvY3VtZW50LWlmcmFtZS1oYXMtY2hpbGQtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZnJhbWVzL291dC1vZi1kb2N1bWVudC1pZnJhbWUt
aGFzLWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKwogMjAxMi0xMS0wOSAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5y
ZXZpZXdlZCBnYXJkZW5pbmcuIE9uZSBtb3JlIGJhc2VsaW5lIGZvbGxvd2luZyAxMzQxMTIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9vdXQtb2YtZG9jdW1lbnQtaWZyYW1l
LWhhcy1jaGlsZC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9v
dXQtb2YtZG9jdW1lbnQtaWZyYW1lLWhhcy1jaGlsZC1mcmFtZS1leHBlY3RlZC50eHQKaW5kZXgg
YWViMzNiMzViZGYxYzNlYjEwNzkyNDY5MWQwNTM2YTc4YmJmZGI5Zi4uYWUxZjQxYmVhNTE0ZDk3
NmJlODdmMzlkMzcxYzEwYTMwODM1MzI2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvb3V0LW9mLWRvY3VtZW50LWlmcmFtZS1oYXMtY2hpbGQtZnJhbWUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL291dC1vZi1kb2N1bWVudC1pZnJhbWUtaGFz
LWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxOTogTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBET00gRXhjZXB0aW9uIDc6
IEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gbW9kaWZ5IGFuIG9iamVjdCB3aGVyZSBtb2RpZmljYXRp
b25zIGFyZSBub3QgYWxsb3dlZC4KIFRoaXMgdGVzdHMgdGhhdCBzZXZlcmFsIHdheXMgb2YgbWFr
aW5nIGFuIGlmcmFtZSB0aGF0IGlzbid0IGluc2VydGVkIGludG8gYSBkb2N1bWVudCB0cmVlIGJ1
dCBoYXMgYSBjaGlsZCBmcmFtZSB3aWxsIGZhaWwuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZnJhbWVz
L291dC1vZi1kb2N1bWVudC1pZnJhbWUtaGFzLWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZnJhbWVzL291dC1vZi1kb2N1bWVudC1p
ZnJhbWUtaGFzLWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDE4ZjI1NGVhYWE1MzM5YTEwZDFjMWFkMzM0ZDEyNGQzYWVkMjkxMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2ZyYW1lcy9vdXQtb2YtZG9jdW1lbnQtaWZyYW1lLWhhcy1jaGls
ZC1mcmFtZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTk6IFVuY2F1Z2h0IEVycm9yOiBOT19NT0RJRklDQVRJT05fQUxM
T1dFRF9FUlI6IERPTSBFeGNlcHRpb24gNwotVGhpcyB0ZXN0cyB0aGF0IHNldmVyYWwgd2F5cyBv
ZiBtYWtpbmcgYW4gaWZyYW1lIHRoYXQgaXNuJ3QgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50IHRy
ZWUgYnV0IGhhcyBhIGNoaWxkIGZyYW1lIHdpbGwgZmFpbC4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1MgdGFyZ2V0RnJhbWUxLmNvbnRlbnRXaW5kb3cgPT0gdW5kZWZpbmVk
IGlzIHRydWUKLVBBU1MgdGFyZ2V0RnJhbWUyLmNvbnRlbnRXaW5kb3cgPT0gdW5kZWZpbmVkIGlz
IHRydWUKLVBBU1MgdGFyZ2V0RnJhbWUzLmNvbnRlbnRXaW5kb3cgPT0gdW5kZWZpbmVkIGlzIHRy
dWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174012</attachid>
            <date>2012-11-13 15:41:53 -0800</date>
            <delta_ts>2012-11-13 20:25:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102012-20121113153953.patch</filename>
            <type>text/plain</type>
            <size>12885</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiNTYwMWQ0MzRlYTYz
NWEzZjI4YTVjN2QyZjZjYmYyYjVjYTMyOS4uMTU1NTk4MTk1MjM0NDc5NThkZDQ1ODUwMTAyOTRk
OGRhMTJlNzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTExLTEzICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIERpc2FibGUgZnJh
bWUgbG9hZGluZyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2VwdGlvbnMgb24gc3VidHJlZSBtb2Rp
ZmljYXRpb25zIGluIENoaWxkRnJhbWVEaXNjb25uZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAxMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHkgaWYgeW91IG1vZGlmaWVkIHRo
ZSBzdWJ0cmVlIHRoYXQgd2FzIGJlaW5nIHJlbW92ZWQgZnJvbSBhCisgICAgICAgIHJlbW92ZUNo
aWxkIGZyb20gaW5zaWRlIGFuIHVubG9hZCBoYW5kbGVyIG9uIGFuIDxpZnJhbWU+IGluc2lkZSB0
aGUKKyAgICAgICAgc3VidHJlZSB5b3UnZCBnZXQgYW4gZXhjZXB0aW9uIHdoaWNoIGlzIHdyb25n
LiBJbnN0ZWFkIHdlIGp1c3QgbmVlZCB0bworICAgICAgICBkaXNhYmxlIGFsbCBmcmFtZSBsb2Fk
aW5nIHRoZXJlLgorCisgICAgICAgIFRoaXMgd29ya3MgYmVjYXVzZSBlaXRoZXIgdGhlIHN1YnRy
ZWUgd2lsbCBiZSByZW1vdmVkIGFuZCB0aGUgZnJhbWUgbmV2ZXIKKyAgICAgICAgbG9hZGluZyBk
b2Vzbid0IG1hdHRlciwgb3Igc29tZSBzZWN0aW9uIG9mIHRoZSBzdWJ0cmVlIHRoYXQgY29udGFp
bnMgdGhlCisgICAgICAgIGZyYW1lIHdpbGwgYmUgbW92ZWQgdG8gYW5vdGhlciBwYXJ0IG9mIHRo
ZSBkb2N1bWVudCB3aGljaCB3aWxsIGNhdXNlIHRoZQorICAgICAgICBmcmFtZSB0byBsb2FkIHdo
ZW4gaXQncyBpbnNlcnRlZCB0aGVyZS4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBjaGVjayBm
b3IgPG9iamVjdD4gZWxlbWVudHMuIEl0IGRvZXNuJ3Qgc2VlbSB0aGlzIGlzIGFjdHVhbGx5Cisg
ICAgICAgIHJlYWNoYWJsZSBpbiB0aGUgZXhpc3RpbmcgY29kZSwgYnV0IEknbSBub3QgZW50aXJl
bHkgc3VyZSBzaW5jZSB0aGUgZnJhbWUKKyAgICAgICAgbG9hZGluZyBhbmQgb2JqZWN0L3BsdWdp
biBoYW5kbGluZyBpcyB2ZXJ5IGNvbmZ1c2luZy4KKworICAgICAgICBBIGJldHRlciBmaXggY291
bGQgYmUgdG8gcmVwZWF0ZWRseSB3YWxrIHRoZSBzdWJ0cmVlIHVudGlsIGFsbCBmcmFtZXMKKyAg
ICAgICAgd2VyZSBkaXNjb25uZWN0ZWQgb3Igc29tZSBpdGVyYXRpb24gbGltaXQgd2FzIGhpdCBh
bmQgdGhlbiBmb3JjZSBhbGwgbGVmdG92ZXIKKyAgICAgICAgc3ViZnJhbWVzIHRvIGRpc2Nvbm5l
Y3Qgd2l0aG91dCBmaXJpbmcgdW5sb2FkIGhhbmRsZXJzIGJ1dCB0aGlzIGlzIHN1Y2ggYW4KKyAg
ICAgICAgZWRnZSBjYXNlIEkgZG9uJ3QgdGhpbmsgdGhlIGNvbXBsZXhpdHkgaXMgbmVjZXNzYXJ5
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL21vZGlmaWNhdGlvbnMtaW4tc3VidHJlZS11
bmxvYWQuaHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpDaGlsZEZyYW1lRGlzY29u
bmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkRnJhbWVEaXNjb25uZWN0b3I6On5DaGls
ZEZyYW1lRGlzY29ubmVjdG9yKToKKyAgICAgICAgKENoaWxkRnJhbWVEaXNjb25uZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdCk6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tBY2NlcHRDaGls
ZCk6IFJlbW92ZWQgZXhjZXB0aW9uLgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OmRpZE5vdGlm
eVN1YnRyZWVJbnNlcnRpb25zKTogQ2hlY2sgY2FuTG9hZEZyYW1lKCkuCisgICAgICAgICogaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKFN1YmZyYW1lTG9hZGluZ0Rpc2Fi
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpTdWJmcmFt
ZUxvYWRpbmdEaXNhYmxlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRpbmdEaXNh
Ymxlcjo6flN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZy
YW1lTG9hZGluZ0Rpc2FibGVyOjpjYW5Mb2FkRnJhbWUpOgorICAgICAgICAgIFJldHVybnMgdHJ1
ZSBpZiBmcmFtZXMgY2FuIGJlIGxvYWRlZCBpbiB0aGUgc3VidHJlZS4KKyAgICAgICAgKFdlYkNv
cmU6OlN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpkaXNhYmxlZFN1YnRyZWVSb290cyk6CisgICAg
ICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KToKKyAgICAgICAgICBDaGVjayBjYW5Mb2FkRnJh
bWUoKS4gSSB0aGluayB0aGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnV0IGl0J3MgYmV0dGVyCisg
ICAgICAgICAgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5IGxhdGVyLgorCiAyMDEyLTExLTEzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1Y4XSBpbnN0YW50aWF0ZVY4
T2JqZWN0IHNob3VsZCBlbmNhcHVsYXRlIHRoZSB0cmlja3kgY3JlYXRpb25Db250ZXh0IGxvZ2lj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDk4
NDA4ODk3YjFiMDQxYThmYmNhNDdmMmU4ZDljMzVjNWMzNTYyOTMuLjIxOWE1ZDQ5NjBjYmIyZTMz
NGYzZmQxZGRmOGE5OTljYTA5OTc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yNzksMTIgKzI3OSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChmcmFtZSAmJiAhZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBjb2xsZWN0RGVzY2VuZGFudChtX3Jvb3QsIHNob3VsZEluY2x1ZGVS
b290KTsKLSAgICAgICAgcm9vdE5vZGVzKCkuYWRkKG1fcm9vdCk7CiAgICAgfQogCiAgICAgfkNo
aWxkRnJhbWVEaXNjb25uZWN0b3IoKQogICAgIHsKLSAgICAgICAgcm9vdE5vZGVzKCkucmVtb3Zl
KG1fcm9vdCk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CkBAIC0yOTUsMTIgKzI5
Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0RGVzY2VuZGFudChOb2RlKiByb290LCBT
aG91bGRJbmNsdWRlUm9vdCk7CiAgICAgdm9pZCBjb2xsZWN0RGVzY2VuZGFudChFbGVtZW50U2hh
ZG93Kik7CiAKLSAgICBzdGF0aWMgSGFzaFNldDxOb2RlKj4mIHJvb3ROb2RlcygpCi0gICAgewot
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8Tm9kZSo+LCBub2RlcywgKCkpOwot
ICAgICAgICByZXR1cm4gbm9kZXM7Ci0gICAgfQotCiAgICAgY2xhc3MgVGFyZ2V0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFRhcmdldChIVE1MRnJhbWVPd25lckVsZW1lbnQqIGVsZW1lbnQpCkBA
IC0zMzcsNiArMzI5LDkgQEAgaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6Y29s
bGVjdERlc2NlbmRhbnQoTm9kZSogcm9vdCwgU2hvdWxkSW5jbHVkZVIKIAogaW5saW5lIHZvaWQg
Q2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdCgpCiB7CisgICAgLy8gTXVzdCBkaXNh
YmxlIGZyYW1lIGxvYWRpbmcgaW4gdGhlIHN1YnRyZWUgc28gYW4gdW5sb2FkIGhhbmRsZXIgY2Fu
bm90CisgICAgLy8gaW5zZXJ0IG1vcmUgZnJhbWVzIGFuZCBjcmVhdGUgbG9hZGVkIGZyYW1lcyBp
biBkZXRhY2hlZCBzdWJ0cmVlcy4KKyAgICBTdWJmcmFtZUxvYWRpbmdEaXNhYmxlciBkaXNhYmxl
cihtX3Jvb3QpOwogICAgIHVuc2lnbmVkIHNpemUgPSBtX2xpc3Quc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgVGFyZ2V0JiB0YXJnZXQg
PSBtX2xpc3RbaV07CkBAIC0zNDUsMjAgKzM0MCw2IEBAIGlubGluZSB2b2lkIENoaWxkRnJhbWVE
aXNjb25uZWN0b3I6OmRpc2Nvbm5lY3QoKQogICAgIH0KIH0KIAotaW5saW5lIGJvb2wgQ2hpbGRG
cmFtZURpc2Nvbm5lY3Rvcjo6bm9kZUhhc0Rpc2Nvbm5lY3RvcihOb2RlKiBub2RlKQotewotICAg
IEhhc2hTZXQ8Tm9kZSo+JiBub2RlcyA9IHJvb3ROb2RlcygpOwotCi0gICAgaWYgKG5vZGVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICg7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgIGlmIChub2Rlcy5jb250YWlucyhub2RlKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDb250YWluZXJOb2RlQWxnb3JpdGhtc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggMmRjY2EyNmFjODU0NDY4ZGE5NzZkMTc5YzZkNDEwZjJhODQ3
M2NiZC4uYmQ4ODdlOTRjYjBkYzA5MDJhY2U1ZjAzZDJkMDhhZjg3MjhjY2E4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMTE5NSwxMSArMTE5NSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrQWNjZXB0Q2hp
bGQoTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQotCi0gICAgaWYgKG5ld1BhcmVudC0+aW5Eb2N1bWVudCgpICYmIENoaWxkRnJhbWVEaXNjb25u
ZWN0b3I6Om5vZGVIYXNEaXNjb25uZWN0b3IobmV3UGFyZW50KSkgewotICAgICAgICBlYyA9IE5P
X01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIH0KIAog
dm9pZCBOb2RlOjpjaGVja1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hp
bGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmNwcAppbmRleCBkNzg4MmYzN2MzY2YyMGM1ZjBiNzk5N2RmNTVlODUxZDcwZDEx
N2I1Li45NzViMzAyNzU0MmM5YjYxYTg5MDRkM2U3ZTdmZjEwNTliOGYwM2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMTcwLDYgKzE3MCw5
IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25z
KENvbnRhaW5lck5vZGUqKQogICAgIGlmICghZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKCFTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcjo6Y2FuTG9hZEZyYW1l
KHRoaXMpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBKYXZhU2NyaXB0IGluIHNyYz1qYXZh
c2NyaXB0OiBhbmQgYmVmb3Jlb25sb2FkIGNhbiBhY2Nlc3MgdGhlIHJlbmRlcmVyCiAgICAgLy8g
ZHVyaW5nIGF0dHJpYnV0ZSBwYXJzaW5nICpiZWZvcmUqIHRoZSBub3JtYWwgcGFyc2VyIG1hY2hp
bmVyeSB3b3VsZAogICAgIC8vIGF0dGFjaCB0aGUgZWxlbWVudC4gVG8gc3VwcG9ydCB0aGlzLCB3
ZSBsYXp5QXR0YWNoIGhlcmUsIGJ1dCBvbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuaAppbmRleCA0ZjAzNDhkZGNjYTc4MGQzMDQwYjA2YzA1OWQwMDVlMjgy
YjYzYmNjLi4wYTk4ZmNmZTgxOWU1ZmQxZDViYzQzYzYxMTcyZDdmOWE3ZTVjOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTc4LDYgKzc4LDM4
IEBAIGlubGluZSBIVE1MRnJhbWVPd25lckVsZW1lbnQqIHRvRnJhbWVPd25lckVsZW1lbnQoTm9k
ZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4o
bm9kZSk7CiB9CiAKK2NsYXNzIFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcihOb2RlKiByb290KQorICAgICAgICA6
IG1fcm9vdChyb290KQorICAgIHsKKyAgICAgICAgZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKS5hZGQo
bV9yb290KTsKKyAgICB9CisKKyAgICB+U3ViZnJhbWVMb2FkaW5nRGlzYWJsZXIoKQorICAgIHsK
KyAgICAgICAgZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKS5yZW1vdmUobV9yb290KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBjYW5Mb2FkRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
cikKKyAgICB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG93bmVyOyBub2RlOyBub2RlID0g
bm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoZGlzYWJsZWRTdWJ0cmVlUm9v
dHMoKS5jb250YWlucyhub2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBIYXNoU2V0PE5vZGUqPiYgZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKQorICAgIHsKKyAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PE5vZGUqPiwgbm9kZXMsICgpKTsKKyAgICAgICAg
cmV0dXJuIG5vZGVzOworICAgIH0KKworICAgIE5vZGUqIG1fcm9vdDsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDc0M2Y1ZTY0MzBiMmI3
ZjlhNDY2M2ZmYmY0NmU3NzBkNTgxMGQ4NGYuLmVjOGJkZDM0YjBlN2UwZmQ3ZWJhODYxMjg4ZjUw
YjBkODAxODE0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CkBAIC0yODIsNyArMjgyLDEzIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdl
dChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgQVNTRVJUIGlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSBpbnN0ZWFk
LgogICAgIGlmICghaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKKyAgICAvLyBGSVhNRTogSSdtIG5vdCBzdXJlIGl0J3MgZXZlciBwb3NzaWJsZSB0
byBnZXQgaW50byB1cGRhdGVXaWRnZXQgZHVyaW5nIGEKKyAgICAvLyByZW1vdmFsLCBidXQganVz
dCBpbiBjYXNlIHdlIHNob3VsZCBhdm9pZCBsb2FkaW5nIHRoZSBmcmFtZSB0byBwcmV2ZW50Cisg
ICAgLy8gc2VjdXJpdHkgYnVncy4KKyAgICBpZiAoIVN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpj
YW5Mb2FkRnJhbWUodGhpcykpCisgICAgICAgIHJldHVybjsKKwogICAgIFN0cmluZyB1cmwgPSB0
aGlzLT51cmwoKTsKICAgICBTdHJpbmcgc2VydmljZVR5cGUgPSB0aGlzLT5zZXJ2aWNlVHlwZSgp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDkzNWVjMzI4NDU2MjA3MjAzYjc1YjQ3YjFiN2ZjNzAxZjhjYzA5YS4uNmVh
ZjBiYmQ0NWE0NjY4MGNjNDg0YjU0YzdiMWI1MjY0Mjc4NGQ1MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEyLTExLTEzICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIERpc2FibGUgZnJhbWUgbG9hZGluZyBpbnN0ZWFkIG9mIHRocm93aW5nIGV4Y2Vw
dGlvbnMgb24gc3VidHJlZSBtb2RpZmljYXRpb25zIGluIENoaWxkRnJhbWVEaXNjb25uZWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBj
b25zb2xlIGxvZyBvdXRwdXQgZnJvbSB0aGUgZXhjZXB0aW9uIHdlIG5vIGxvbmdlciB0aHJvdy4g
U2luY2Ugd2Ugbm8KKyAgICAgICAgbG9uZ2VyIHRocm93IGFuIGV4Y2VwdGlvbiB3ZSBkb24ndCBu
ZWVkIGEgcGxhdGZvcm0gc3BlY2lmaWMgb3V0cHV0IGZpbGUgZWl0aGVyLgorCisgICAgICAgIEFs
c28gYWRkIGEgdGVzdCB0aGF0IHdlIGRvbid0IHRocm93IGFuIGV4Y2VwdGlvbiBkdXJpbmcgbW9k
aWZpY2F0aW9ucyB0byBzdWJ0cmVlcworICAgICAgICBkdXJpbmcgdW5sb2FkLgorCisgICAgICAg
ICogZmFzdC9mcmFtZXMvbW9kaWZpY2F0aW9ucy1pbi1zdWJ0cmVlLXVubG9hZC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9tb2RpZmljYXRpb25zLWluLXN1YnRy
ZWUtdW5sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL291dC1vZi1kb2N1
bWVudC1pZnJhbWUtaGFzLWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2ZyYW1lcy9vdXQtb2YtZG9jdW1lbnQtaWZyYW1lLWhhcy1jaGls
ZC1mcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTItMTEtMTMgIFNpbHZpYSBQZmVp
ZmZlciAgPHNpbHZpYXBmQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVhbiB1cCB0aGUgaW5o
ZXJpdGFuY2UgdHJlZSB1bmRlciB0aGUgTWVkaWFDb250cm9scyBDbGFzcy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL21vZGlmaWNhdGlvbnMtaW4tc3VidHJlZS11bmxvYWQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL21vZGlmaWNhdGlvbnMtaW4t
c3VidHJlZS11bmxvYWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTdmNWZhYjJhM2UyNTNh
ZDIxODM3NWU0MWI1YjRiNjJkYTNjNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvbW9kaWZpY2F0aW9ucy1pbi1zdWJ0cmVlLXVubG9hZC1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxwPgorICAgIFRoaXMgdGVzdHMg
dGhhdCB5b3UgY2FuIGFwcGVuZCBjaGlsZHJlbiB0byBhIHN1YnRyZWUgdGhhdCdzIGJlaW5nIHJl
bW92ZWQKKyAgICBmcm9tIGluc2lkZSBvZiBhbiB1bmxvYWQgaGFuZGxlciBvbiBhIGZyYW1lIGlu
IHRoYXQgc3VidHJlZS4KKzwvcD4KKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvbW9kaWZpY2F0aW9ucy1pbi1zdWJ0cmVlLXVubG9hZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvbW9kaWZpY2F0aW9ucy1pbi1zdWJ0cmVlLXVubG9hZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk5NTk4YmZiZGM2ZjlmZWQ4ZTM5Y2FmMzdiYjhmZjYxZTNmMTExYjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9tb2RpZmljYXRpb25zLWluLXN1YnRy
ZWUtdW5sb2FkLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxwPgor
ICAgIFRoaXMgdGVzdHMgdGhhdCB5b3UgY2FuIGFwcGVuZCBjaGlsZHJlbiB0byBhIHN1YnRyZWUg
dGhhdCdzIGJlaW5nIHJlbW92ZWQKKyAgICBmcm9tIGluc2lkZSBvZiBhbiB1bmxvYWQgaGFuZGxl
ciBvbiBhIGZyYW1lIGluIHRoYXQgc3VidHJlZS4KKzwvcD4KKworPGRpdj48aWZyYW1lIHNyYz0i
YWJvdXQ6YmxhbmsiPjwvaWZyYW1lPjwvZGl2PgorCis8c2NyaXB0PgorZGl2ID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiZGl2Iik7CitpZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJp
ZnJhbWUiKTsKK2lmcmFtZS5jb250ZW50V2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24oKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NwYW4nKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ1BBU1MnKSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdGQUlMOiAnICsgZSkp
OworICAgIH0KK307CisKK2Rpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpdik7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL291dC1vZi1kb2N1bWVudC1p
ZnJhbWUtaGFzLWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL291dC1vZi1kb2N1bWVudC1pZnJhbWUtaGFzLWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dApp
bmRleCBhZWIzM2IzNWJkZjFjM2ViMTA3OTI0NjkxZDA1MzZhNzhiYmZkYjlmLi5hZTFmNDFiZWE1
MTRkOTc2YmU4N2YzOWQzNzFjMTBhMzA4MzUzMjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9vdXQtb2YtZG9jdW1lbnQtaWZyYW1lLWhhcy1jaGlsZC1mcmFtZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvb3V0LW9mLWRvY3VtZW50LWlmcmFt
ZS1oYXMtY2hpbGQtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE5OiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IERPTSBFeGNlcHRp
b24gNzogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBtb2RpZnkgYW4gb2JqZWN0IHdoZXJlIG1vZGlm
aWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLgogVGhpcyB0ZXN0cyB0aGF0IHNldmVyYWwgd2F5cyBv
ZiBtYWtpbmcgYW4gaWZyYW1lIHRoYXQgaXNuJ3QgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50IHRy
ZWUgYnV0IGhhcyBhIGNoaWxkIGZyYW1lIHdpbGwgZmFpbC4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9m
cmFtZXMvb3V0LW9mLWRvY3VtZW50LWlmcmFtZS1oYXMtY2hpbGQtZnJhbWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mcmFtZXMvb3V0LW9mLWRvY3Vt
ZW50LWlmcmFtZS1oYXMtY2hpbGQtZnJhbWUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkMThmMjU0ZWFhYTUzMzlhMTBkMWMxYWQzMzRkMTI0ZDNhZWQyOTExLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZnJhbWVzL291dC1vZi1kb2N1bWVudC1pZnJhbWUtaGFz
LWNoaWxkLWZyYW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOTogVW5jYXVnaHQgRXJyb3I6IE5PX01PRElGSUNBVElP
Tl9BTExPV0VEX0VSUjogRE9NIEV4Y2VwdGlvbiA3Ci1UaGlzIHRlc3RzIHRoYXQgc2V2ZXJhbCB3
YXlzIG9mIG1ha2luZyBhbiBpZnJhbWUgdGhhdCBpc24ndCBpbnNlcnRlZCBpbnRvIGEgZG9jdW1l
bnQgdHJlZSBidXQgaGFzIGEgY2hpbGQgZnJhbWUgd2lsbCBmYWlsLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUEFTUyB0YXJnZXRGcmFtZTEuY29udGVudFdpbmRvdyA9PSB1bmRl
ZmluZWQgaXMgdHJ1ZQotUEFTUyB0YXJnZXRGcmFtZTIuY29udGVudFdpbmRvdyA9PSB1bmRlZmlu
ZWQgaXMgdHJ1ZQotUEFTUyB0YXJnZXRGcmFtZTMuY29udGVudFdpbmRvdyA9PSB1bmRlZmluZWQg
aXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>