<?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>67882</bug_id>
          
          <creation_ts>2011-09-09 20:31:09 -0700</creation_ts>
          <short_desc>Remove DocumentWriter::deprecatedFrameEncoding()</short_desc>
          <delta_ts>2012-01-18 06:12:46 -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>
          <dependson>75905</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eoconnor</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>julian.reschke</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>465208</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-09 20:31:09 -0700</bug_when>
    <thetext>Remove DocumentWriter::deprecatedFrameEncoding() by implementing RFC 6266</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465209</commentid>
    <comment_count>1</comment_count>
      <attachid>106957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-09 20:34:34 -0700</bug_when>
    <thetext>Created attachment 106957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465211</commentid>
    <comment_count>2</comment_count>
      <attachid>106958</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 20:38:04 -0700</bug_when>
    <thetext>Created attachment 106958
Mock HTTP response

To test whether we can handle UTF-8 encoded filename tokens, download this attachment and run:

nc -l 9999 &lt; resp.utf8

Next, navigate Safari to http://localhost:9999/xyzzy

Check whether the downloaded file has a file name consisting of Chinese characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465212</commentid>
    <comment_count>3</comment_count>
      <attachid>106959</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-09 20:51:57 -0700</bug_when>
    <thetext>Created attachment 106959
Updated to apply to tip of tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465233</commentid>
    <comment_count>4</comment_count>
      <attachid>106959</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-09 22:47:55 -0700</bug_when>
    <thetext>Comment on attachment 106959
Updated to apply to tip of tree

The attached patch doesn&apos;t implement any new encoding scheme, it only removes existing support for non-ASCII file names. So, it will break downloading files with non-ASCII names from Web sites. That&apos;s of course unacceptable.

There is more processing going on before Foundation puts a suggested file name into NSURLResponse, so new encoding schemes for Content-Disposition cannot be implemented in WebKit.

We&apos;ll need to pass suggested encoding to network layer in foreseeable future (perhaps as long as there remains a user visible concept of &quot;file&quot;), so what we need is to give deprecatedFrameEncoding a better name, and to remove comments implying that it&apos;s going away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465234</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 22:58:37 -0700</bug_when>
    <thetext>Did you run the test described in Comment #2 with the patch applied?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465236</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 23:08:29 -0700</bug_when>
    <thetext>Put another way, is your concern that this patch does not correctly implement the consensus among browser vendors or is your concern that you don&apos;t agree with that consensus?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465240</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-09 23:34:31 -0700</bug_when>
    <thetext>&gt; Did you run the test described in Comment #2 with the patch applied?

I didn&apos;t test it, but I&apos;m sure that it would pass (CFNetwork uses UTF-8 as default fallback). The practical issue is with pages that use other encodings for file names in Content-Disposition.

&gt; Put another way, is your concern that this patch does not correctly implement the consensus among browser vendors or is your concern that you don&apos;t agree with that consensus?

I don&apos;t know if there has ever been consensus. I certainly voiced concerns against the RFC, and didn&apos;t follow it afterwards to have a chance to agree. The blogs.msdn.com post has a fairly heated argument between RFC editor and Eric Lawrence, too.

The same blogs.msdn.com post doesn&apos;t say anything about dropping support for non-UTF-8 raw bytes, and I doubt that they did that. Can you test that? Note that to test IE, you need to change the primary language on Windows.

FWIW, old school specs don&apos;t acknowledge the fact that browsers have and use default encodings, so you can never just go ahead and implement those to the letter. RFC 6266 in particular fails to mention default encoding even in non-normative section that discusses existing implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465246</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 23:46:36 -0700</bug_when>
    <thetext>Ok.  If you&apos;d prefer Safari to retain this broken behavior, we can put this code behind the appropriate port-specific flags.  As things stand currently, this code only affects CFNetwork anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465248</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 23:48:58 -0700</bug_when>
    <thetext>&gt; I didn&apos;t test it, but I&apos;m sure that it would pass (CFNetwork uses UTF-8 as default fallback).

I&apos;d encourage you to test before making such statements.  CFNetwork (at least on Mac OS 10.6) does not appear to use UTF-8 as a fallback unless instructed, as it is in this patch.

&gt; The practical issue is with pages that use other encodings for file names in Content-Disposition.

Correct.  As far as I can tell, everyone except Safari and Opera has agreed not to support those sites.  If you don&apos;t wish to converge with other browsers, that&apos;s fine, but I&apos;d rather not have this junky code masquerade as not being port-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465249</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-09 23:55:02 -0700</bug_when>
    <thetext>Putting this behind a flag seems fine. We should also stop calling the functions &quot;deprecated&quot;, because an engineer seeing it is not supposed to do what they do when seeing other &quot;deprecated&quot; functions in WebKit code base.

&gt; I&apos;d encourage you to test before making such statements.  CFNetwork (at least on Mac OS 10.6) does not &gt; appear to use UTF-8 as a fallback unless instructed, as it is in this patch.

That&apos;s surprising, but OK. I appreciate that you made sure not to break this case.

&gt; As far as I can tell, everyone except Safari and Opera has agreed not to support those sites.

So, are you willing to test IE and Firefox to confirm whether they delivered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465250</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 23:56:51 -0700</bug_when>
    <thetext>&gt; We should also stop calling the functions &quot;deprecated&quot;, because an engineer seeing it is not supposed to do what they do when seeing other &quot;deprecated&quot; functions in WebKit code base.

On the contrary, I believe they should.  This function not be called by any more code and it should be removed as soon as possible, even if you&apos;re not willing to remove it today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465251</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-10 00:13:18 -0700</bug_when>
    <thetext>I think that you&apos;d be doing a disservice to WebKit contributors if you keep calling the function &quot;deprecated&quot;. Eric has already wasted his time trying to remove it, and others can fall into the same trap.

In order to call existing code &quot;junky&quot;, you need stronger evidence that it&apos;s incorrect - in the form of actually testing other browsers, or ideally in the form of testing the Internet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465252</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-10 00:27:33 -0700</bug_when>
    <thetext>Removing this function and it&apos;s associated paraphernalia is not a waste of time.  In fact, I would argue that it&apos;s the best thing for the project and for the web.  I wrote a long explanation, but I&apos;ve deleted it because I don&apos;t feel like this is a productive line of discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465256</commentid>
    <comment_count>14</comment_count>
      <attachid>106969</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-10 00:41:56 -0700</bug_when>
    <thetext>Created attachment 106969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465257</commentid>
    <comment_count>15</comment_count>
      <attachid>106969</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-10 00:50:34 -0700</bug_when>
    <thetext>Comment on attachment 106969
Patch

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

There is nothing contentious about this change.  This code is only used on the MAC and WIN ports and after investigations this evening is believed to be wrong, but isolating it to those ports for now will at least stop us from crashing here on other ports.

&gt; Source/WebCore/loader/FrameLoader.cpp:2549
&gt; +    // For a newly opened frame with an empty URL, encoding() should not be

You mean document-&gt;encoding(), no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465258</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-10 00:52:28 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 106969 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106969&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2549
&gt; &gt; +    // For a newly opened frame with an empty URL, encoding() should not be
&gt; 
&gt; You mean document-&gt;encoding(), no?

This comment has rotted.  I&apos;ll update it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465260</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-10 00:53:39 -0700</bug_when>
    <thetext>Committed r94902: &lt;http://trac.webkit.org/changeset/94902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465274</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-10 02:24:33 -0700</bug_when>
    <thetext>Eric, I think that you failed to exercise good judgement about what you should review and what you shouldn&apos;t.

This patch has multiple issues:
- investigation of other browsers behavior hasn&apos;t been performed, even though it has been explicitly requested;
- the patch has thus added a number of FIXME comments that have no basis in reality;
- it has a FIXME comment about CFNetwork-based ports behavior that you had no authority to make or approve;
- it introduces incorrect formatting of comments, even those that haven&apos;t been modified otherwise (we don&apos;t break lines at 80 characters);
- it does not do what bug title claims that it does.

This is an excessive amount of problems for a cleanup-only patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465297</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-10 09:10:40 -0700</bug_when>
    <thetext>Look, if you don&apos;t want to participate in standards and you want to maintain Apply-only quirks, I can respect your desire for self-determination.  If you want to impune someone&apos;e judgement because you don&apos;t like the format of the comments, that seems like you&apos;ve lost the forest for the trees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465299</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-10 10:33:53 -0700</bug_when>
    <thetext>So I&apos;ve tested today&apos;s nightly of Firefox 9, and it of course respects referring frame encoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465339</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-10 15:28:19 -0700</bug_when>
    <thetext>Look, we had this whole discussion in the IETF over six months ago.  I actually advocated the position you&apos;re espousing now.  There were many emails and lots of discussion about the pros and cons of various courses of action.  In the end, we decide not to use the referring page&apos;s encoding to understand the filename.  Standards are about compromise, and after that whole discussion I support the where the working group ended up.

It&apos;s a shame that you chose not to participate in the standards process, because that&apos;s the proper forum for these discussions.  Frankly, those of us who put in the time and effect to engage with other browser vendors and with the large standards community find your Monday morning quarterbacking distasteful.

Having said all that, no one is questioning your right to decide how the Apple port behaves in this regard.  If you want Apple&apos;s port to keep this quirk, I&apos;m not going to stand in your way.

The patch we landed causes zero change in behavior for anyone.  From my point of view, the main benefit of this patch is that non-Apple ports no longer need to link in this code, which has been known to crash in the past.  That code was providing zero benefit to anyone besides Apple and now any stability risk imposed by executing it also resides squarely with Apple.

My hope is that in the long term you&apos;ll come around and decide both to participate in standards and to converge behavior with other browsers.  I can only lead you to water.  I can&apos;t make you drink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465635</commentid>
    <comment_count>22</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2011-09-12 09:39:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I don&apos;t know if there has ever been consensus. I certainly voiced concerns against the RFC, and didn&apos;t follow it afterwards to have a chance to agree. The blogs.msdn.com post has a fairly heated argument between RFC editor and Eric Lawrence, too.

It was the rough consensus of the IETF HTTPbis working group, based on discussions on that WG&apos;s mailing list. Some vendors showed up, some did not. 

And yes, Eric Lawrence was not happy with the direction, but in the end Microsoft couldn&apos;t make a proposal that would work better. In the meantime, IE9 added the RFC5987 encoding, so IE9 interoperates (*) with all other desktop browsers except Safari. (* with the restriction that they only support UTF-8)
 
&gt; The same blogs.msdn.com post doesn&apos;t say anything about dropping support for non-UTF-8 raw bytes, and I doubt that they did that. Can you test that? Note that to test IE, you need to change the primary language on Windows.

I don&apos;t think any browser has dropped support for non-ASCII characters yet.

&gt; FWIW, old school specs don&apos;t acknowledge the fact that browsers have and use default encodings, so you can never just go ahead and implement those to the letter. RFC 6266 in particular fails to mention default encoding even in non-normative section that discusses existing implementations.

Indeed it does not. If you believe that this would be helpful then please go ahead and propose additional text. RFC 6266 is likely going to be revised when HTTPbis is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465674</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-12 10:48:12 -0700</bug_when>
    <thetext>Thank you for returning this discussion to professional tone and constructive direction, Julian!

&gt; Indeed it does not. If you believe that this would be helpful then please go ahead and
&gt; propose additional text. RFC 6266 is likely going to be revised when HTTPbis is done.

It seems appropriate that RFCs are not going to talk about browser specific concepts like default encoding and frames, but I hope that both HTTPbis spec and RFC 6266 could provide hooks for applications (AKA higher level specs) to provide a default encoding. Not sure how exactly it should be worded, but for document encoding in particular, it&apos;s clear that a very substantial amount of Web pages aren&apos;t going to gain proper encoding declarations, and browsers will keep using other default encodings in foreseeable future. And for Content-Disposition, dropping such tailoring is quite contentious, too.

&gt; so IE9 interoperates (*) with all other desktop browsers except Safari.

I haven&apos;t re-tested IE9 specifically, but I expect that in practice,  it interoperates will all major desktop browsers (except Chrome?) when using non-ASCII bytes in locale standard encoding, like earlier versions did. My opinion is that it would be good for network libraries beneath Safari to additionally support RFC 5987 encoding, but I cannot comment on whether or when that would happen.

FWIW, I&apos;m going to sit on this for a little more to make sure that emotions don&apos;t go in the way, and likely roll out this patch. It&apos;s at intersection of my primary competencies, and I believe that I&apos;m the right person to make the call on what the &quot;proper&quot; WebKit behavior should be. Ports are of course free to deviate by not taking the fallback list into account, just like they already did by Friday night.

We can re-consider once RFC 6266 actually becomes a standard, and other browsers actually stop using frame and/or default encoding for Content-Dispositon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465684</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-12 10:59:02 -0700</bug_when>
    <thetext>Please do not roll this patch out.  This code is actively harmful to non-Apple ports.  If you want to adjust the comments and rename the functions, that&apos;s fine, but the Chromium port, at the least, does not wish to execute these lines of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465685</commentid>
    <comment_count>25</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-12 11:07:02 -0700</bug_when>
    <thetext>I disagree that it&apos;s OK for any port to not execute these lines of code. If Chromium ifdefs this code out, there is a possibility of causing trouble to regular ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465686</commentid>
    <comment_count>26</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-12 11:09:00 -0700</bug_when>
    <thetext>It&apos;s especially undesirable to comment out regular code for a port that&apos;s used by commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465692</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-12 11:13:47 -0700</bug_when>
    <thetext>&gt; I disagree that it&apos;s OK for any port to not execute these lines of code.

I&apos;m not sure I understand.  Why should a port be required to execute lines of code that do nothing and yet can crash (and have crashed in the past)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465696</commentid>
    <comment_count>28</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2011-09-12 11:25:35 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Thank you for returning this discussion to professional tone and constructive direction, Julian!

Just trying to help :-)

&gt; &gt; Indeed it does not. If you believe that this would be helpful then please go ahead and
&gt; &gt; propose additional text. RFC 6266 is likely going to be revised when HTTPbis is done.
&gt; 
&gt; It seems appropriate that RFCs are not going to talk about browser specific concepts like default encoding and frames, but I hope that both HTTPbis spec and RFC 6266 could provide hooks for applications (AKA higher level specs) to provide a default encoding. Not sure how exactly it should be worded, but for document encoding in particular, it&apos;s clear that a very substantial amount of Web pages aren&apos;t going to gain proper encoding declarations, and browsers will keep using other default encodings in foreseeable future. And for Content-Disposition, dropping such tailoring is quite contentious, too.

There are multiple problems with that. First of all, RFC2616 can be read to say that the default is ISO-8859-1, and there are UAs that respect that; and we do not want to break them. Furthermore, making the semantics of an HTTP message depend on out-of-band data is a no-go.

The encoding defined in RFCs 2231 and 5987 helps; it allows senders to tunnel everything through ASCII. Problem solved; except for the UAs that need to keep old senders happy.

&gt; &gt; so IE9 interoperates (*) with all other desktop browsers except Safari.
&gt; 
&gt; I haven&apos;t re-tested IE9 specifically, but I expect that in practice,  it interoperates will all major desktop browsers (except Chrome?) when using non-ASCII bytes in locale standard encoding, like earlier versions did. My opinion is that it would be good for network libraries beneath Safari to additionally support RFC 5987 encoding, but I cannot comment on whether or when that would happen.

If you look at &lt;http://greenbytes.de/tech/tc2231/#attwithutf8fnplain&gt; you will see that UAs differ in what they do when the page encoding is ISO-8859-1, but the bytes smell like UTF-8. There is no interop here.

&gt; FWIW, I&apos;m going to sit on this for a little more to make sure that emotions don&apos;t go in the way, and likely roll out this patch. It&apos;s at intersection of my primary competencies, and I believe that I&apos;m the right person to make the call on what the &quot;proper&quot; WebKit behavior should be. Ports are of course free to deviate by not taking the fallback list into account, just like they already did by Friday night.
&gt; 
&gt; We can re-consider once RFC 6266 actually becomes a standard, and other browsers actually stop using frame and/or default encoding for Content-Dispositon.

For all practical purposes RFC 6266 is a &quot;standard&quot;, unless you&apos;re referring to the three IETF standards maturity levels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465700</commentid>
    <comment_count>29</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-12 11:42:42 -0700</bug_when>
    <thetext>Adam, I will post more complete rationale when/if rolling out the patch. I noted your disagreement, as well as the fact that two respected contributors were in favor of this change, so I want to take some time to consider what&apos;s best without haste. As mentioned above, I think that I have the authority to make a decision due to relevant expertise.

&gt; Why should a port be required to execute lines of code that do nothing and yet can crash (and have crashed in the past)?

This is a tradeoff. We want to have as few #ifdefed out parts as possible, because #ifdefing out code paths has lots of well known downsides that I&apos;m sure I don&apos;t need to tell you about. This is sometimes unavoidable when this code has high runtime costs, or is unequivocally of no interest to engineers working on other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465712</commentid>
    <comment_count>30</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-12 11:54:57 -0700</bug_when>
    <thetext>&gt; There are multiple problems with that. First of all, RFC2616 can be read to say that the
&gt; default is ISO-8859-1, and there are UAs that respect that; and we do not want to break
&gt; them. Furthermore, making the semantics of an HTTP message depend on out-of-band
&gt; data is a no-go.

This disagreement between spec authors and browser vendors is quite unfortunate. This approach is not a no-go for us, as every significant browser already went with it.

&gt; There is no interop here.

Right, we&apos;ve previously established that we have different concepts of &quot;interoperability&quot; in mind. For me, it&apos;s when you can make a Web page that works for your target audience. You could easily achieve that in IE, Firefox and Safari by using pages and HTTP headers encoded with default encoding for your region. Unfortunately, RFC 6266 disallows this method, which used to be the only &quot;interoperable&quot; one historically.

Many authors only care about this kind of interoperability, not declaring page encoding at all.

&gt; For all practical purposes RFC 6266 is a &quot;standard&quot;, unless you&apos;re referring to the three IETF standards maturity levels.

Indeed, that&apos;s what I&apos;ve been referring to. Someone just educated me that RFC maturity level doesn&apos;t matter all that much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465718</commentid>
    <comment_count>31</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2011-09-12 12:05:18 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; &gt; There are multiple problems with that. First of all, RFC2616 can be read to say that the
&gt; &gt; default is ISO-8859-1, and there are UAs that respect that; and we do not want to break
&gt; &gt; them. Furthermore, making the semantics of an HTTP message depend on out-of-band
&gt; &gt; data is a no-go.
&gt; 
&gt; This disagreement between spec authors and browser vendors is quite unfortunate. This approach is not a no-go for us, as every significant browser already went with it.

...in different ways.

&gt; &gt; There is no interop here.
&gt; 
&gt; Right, we&apos;ve previously established that we have different concepts of &quot;interoperability&quot; in mind. For me, it&apos;s when you can make a Web page that works for your target audience. You could easily achieve that in IE, Firefox and Safari by using pages and HTTP headers encoded with default encoding for your region. Unfortunately, RFC 6266 disallows this method, which used to be the only &quot;interoperable&quot; one historically.

This method doesn&apos;t work for sites that need to work for a global audience. There&apos;s no reliable way to sniff the locale of the client.

If this *was* something that works reliably, why do sites like GMail use something else?

Also, RFC6266 isn&apos;t in any position to allow or disallow it; it doesn&apos;t invent a new header but just clarifies the description of something that has been there for a long time.


&gt; Many authors only care about this kind of interoperability, not declaring page encoding at all.
&gt; 
&gt; &gt; For all practical purposes RFC 6266 is a &quot;standard&quot;, unless you&apos;re referring to the three IETF standards maturity levels.
&gt; 
&gt; Indeed, that&apos;s what I&apos;ve been referring to. Someone just educated me that RFC maturity level doesn&apos;t matter all that much.

It doesn&apos;t matter as much as it should, as most specs never progress. But that&apos;s a separate story :-).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537813</commentid>
    <comment_count>32</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2012-01-18 06:12:46 -0800</bug_when>
    <thetext>Here&apos;s a quick attempt at a test case:

  &lt;http://greenbytes.de/tech/tc2231/greek.asis#attwithisofnplain&gt;

The page is encoded in ISO-8859-7, and the actual test case linked from it uses non-ASCII characters in the filename parameter.

As far as I can tell, *Firefox* is the only UA that decodes this as ISO-8859-1.

Is there a problem with the test case?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106957</attachid>
            <date>2011-09-09 20:34:34 -0700</date>
            <delta_ts>2011-09-09 20:51:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67882-20110909203433.patch</filename>
            <type>text/plain</type>
            <size>19102</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZGY5MzAxZTk4OTk2ZmIx
YzU4ZGYwOTU0MGFmM2JiY2I0NTA3MDcyLi5iMWYyZTA2NmRhYTUzM2EyYjJkMzk0YWEwOTg5YjQ2
NWE0MzdhYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDktMDkgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBEb2N1bWVudFdyaXRl
cjo6ZGVwcmVjYXRlZEZyYW1lRW5jb2RpbmcoKSBieSBpbXBsZW1lbnRpbmcgUkZDIDYyNjYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhyZWUgeWVhcnMg
YWdvLCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zOTAyNiwgQWxleGV5Cisg
ICAgICAgIFByb3NrdXJ5YWtvdiBhZGRlZCBDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkgdG8gd29yaworICAgICAgICBhcm91bmQgYSB3ZWIgc2l0ZSBjb21wYXRpYmlsaXR5
IGlzc3VlIHdpdGggYSBub24tQVNDSUkgZmlsZSBuYW1lCisgICAgICAgIGJlY29taW5nIGdhcmJs
ZWQgd2hlbiByZWNlaXZlZCBpbiB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIuCisKKyAg
ICAgICAgU2luY2UgdGhhdCB0aW1lLCB0aGVyZSBoYXMgYmVlbiBjb3Bpb3VzIGRpc2N1c3Npb24g
b2YgdGhpcyB0b3BpYyBhbW9uZworICAgICAgICBicm93c2VyIHZlbmRvcnMsIGluIHRoZSBJRVRG
LCBhbmQgaW4gdGhlIGJyb2FkZXIgd2ViIGNvbW11bml0eS4gIEZvcgorICAgICAgICBleGFtcGxl
LCBoZXJlIGlzIGEgU3RhY2sgT3ZlcmZsb3cgdGhyZWFkIGFib3V0IHRoaXMgdG9waWM6CisKKyAg
ICAgICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85MzU1MS9ob3ctdG8tZW5j
b2RlLXRoZS1maWxlbmFtZS1wYXJhbWV0ZXItb2YtY29udGVudC1kaXNwb3NpdGlvbi1oZWFkZXIt
aW4taHR0cAorCisgICAgICAgIEVyaWMgTGF3cmVuY2UgaGFzIHdyaXR0ZW4gYSBibG9nIHBvc3Qg
dGhhdCBzdW1tYXJpemVzIElFJ3MgcGVyc3BlY3RpdmUKKyAgICAgICAgb24gdGhpcyBpc3N1ZToK
KworICAgICAgICBodHRwOi8vYmxvZ3MubXNkbi5jb20vYi9pZWludGVybmFscy9hcmNoaXZlLzIw
MTAvMDYvMDcvY29udGVudC1kaXNwb3NpdGlvbi1hdHRhY2htZW50LWFuZC1pbnRlcm5hdGlvbmFs
LXVuaWNvZGUtY2hhcmFjdGVycy5hc3B4CisKKyAgICAgICAgVGhlIGN1cnJlbnQgY29uc2Vuc3Vz
IGlzIHRoYXQgYnJvd3NlcnMgc2hvdWxkIGltcGxlbWVudCBSRkMgNjI2NiwKKyAgICAgICAgd2hp
Y2ggaXMgYSBuZXcgUkZDIHRoYXQgdXBkYXRlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAgICAg
ICAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIuICBDaHJvbWUgYW5kIEZpcmVmb3ggaGF2ZSBi
b3RoIGltcGxlbWVudGVkCisgICAgICAgIFJGQyA2MjY2IGFuZCBoYXZlIGVuY291bnRlcmVkIG9u
bHkgb25lIGlzc3VlLCB3aGljaCB3YXMgdGhlbiBmaXhlZCBieQorICAgICAgICB0aGUgd2ViIHNp
dGUgb3BlcmF0b3IuICBJRSBoYXMgYWxzbyBpbXBsZW1lbnRlZCBSRkMgNjI2NiwgYnV0IEkgZG9u
J3QKKyAgICAgICAgaGF2ZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBjb21wYXRp
YmlsaXR5IGV4cGVyaWVuY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBwcmV2
aW91cyBtZWNoYW5pc20gV2ViS2l0IHVzZWQgb24gTWFjL1dpbiB0byBhZGRyZXNzIHRoaXMKKyAg
ICAgICAgY29tcGF0aWJpbGl0eSBpc3N1ZSBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgY29uc2Vu
c3VzIG1lY2hhbmlzbS4KKyAgICAgICAgU3BlY2lmaWNhbGx5LCByYXRoZXIgdGhhbiB1c2UgYSBj
b21wbGV4IGVuY29kaW5nIGZhbGxiYWNrIGFycmF5IHRoYXQKKyAgICAgICAgaW5jbHVkZXMgdGhl
IGVuY29kaW5nIG9mIHRoZSByZWZlcnJpbmcgcGFnZSwgd2UgdXNlIG9ubHkgVVRGLTguCisKKyAg
ICAgICAgVG8gY29tcGx5IHdpdGggUkZDIDYyNjYgZnVsbHksIGZvbGtzIHdobyBzaGlwIFdlYktp
dCBzaG91bGQgdXBkYXRlCisgICAgICAgIHRoZWlyIG5ldHdvcmsgbGlicmFyaWVzIHRvIGluY2x1
ZGUgc3VwcG9ydCBmb3IgdGhlIGZpbGVuYW1lKiB0b2tlbiwKKyAgICAgICAgd2hpY2ggZ2l2ZXMg
d2ViIHNpdGVzIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYW4gZW5jb2RpbmcgYW5kIHRvCisgICAg
ICAgIHN1cHBvcnQgYm90aCBlbmNvZGluZy1hd2FyZSBhbmQgZW5jb2RpbmctdW5hd2FyZSB1c2Vy
IGFnZW50cy4KKworICAgICAgICBTZWUgYnVnIGZvciBtYW51YWwgdGVzdCAodGhlIGJ1ZyBtYW5p
ZmVzdHMgaW4gU2FmYXJpIGRvd25sb2FkIFVJKS4KKworICAgICAgICBBZGFtIEJhcnRoIGNvbnRy
aWJ1dGVkIGluIHRoZSBjb25zdHJ1Y3Rpb24vdGVzdGluZyBvZiB0aGlzIHBhdGNoLgorCisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVz
dFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVx
dWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKwogMjAxMS0wOS0wOCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0JpRGldIEFkZCBzdXBwb3J0IGZvciB0aGUgQkRJIGVsZW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGIwYzY3NDRkMmY5NzBj
NjA2NTY1ZTlkMDNkZWE5MWQ5ODE2ZTQwMmIuLjgyYTk3N2Y1MDUxZjY2ZDcxMzQ0NzYxNDJjOGRm
YWQ1ZjI0MzI2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApA
QCAtMjQzLDIxICsyNDMsNiBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgdXNlckNob3NlbikKICAgICBtX2VuY29kaW5nV2FzQ2hvc2Vu
QnlVc2VyID0gdXNlckNob3NlbjsKIH0KIAotU3RyaW5nIERvY3VtZW50V3JpdGVyOjpkZXByZWNh
dGVkRnJhbWVFbmNvZGluZygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fZW5jb2Rpbmc7Ci0KLSAgICBpZiAo
bV9lbmNvZGluZ1dhc0Nob3NlbkJ5VXNlciAmJiAhbV9lbmNvZGluZy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBtX2VuY29kaW5nOwotCi0gICAgaWYgKG1fZGVjb2RlciAmJiBtX2RlY29kZXIt
PmVuY29kaW5nKCkuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGlu
ZygpLm5hbWUoKTsKLQotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdz
KCk7Ci0gICAgcmV0dXJuIHNldHRpbmdzID8gc2V0dGluZ3MtPmRlZmF1bHRUZXh0RW5jb2RpbmdO
YW1lKCkgOiBTdHJpbmcoKTsKLX0KLQogdm9pZCBEb2N1bWVudFdyaXRlcjo6c2V0RG9jdW1lbnRX
YXNMb2FkZWRBc1BhcnRPZk5hdmlnYXRpb24oKQogewogICAgIEFTU0VSVCghbV9wYXJzZXItPmlz
U3RvcHBlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMGQy
NDgwMGJlZTA2YTk5ZTk1ZjQ2YWI2MDg3NjVlNWM4YTQ1Y2NiZC4uNzQ5ZDJkMjZjZWM1MzRhMTFh
NjUzNzRiMmIyMzNjNzI0YWM5OTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmgKQEAgLTU5LDExICs1OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgYm9vbCB1c2VyQ2hvc2VuKTsKIAotICAgIC8vIEZJWE1F
OiBJdCdzIHJlYWxseSB1bmZvcnVuYXRlIHRvIG5lZWQgdG8gZXhwb3NlIHRoaXMgcGllY2Ugb2Yg
c3RhdGUuCi0gICAgLy8gSSBzdXNwZWN0IGEgYmV0dGVyIGRlc2lnbiBpcyB0byBkaXNlbnRhbmds
ZSB1c2VyLXByb3ZpZGVkIGVuY29kaW5ncywKLSAgICAvLyBkZWZhdWx0IGVuY29kaW5ncywgYW5k
IHRoZSBkZWNvZGluZyB3ZSdyZSBjdXJyZW50bHkgdXNpbmcuCi0gICAgU3RyaW5nIGRlcHJlY2F0
ZWRGcmFtZUVuY29kaW5nKCkgY29uc3Q7Ci0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIHZvaWQgc2V0TUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKSB7IG1fbWltZVR5cGUgPSB0eXBlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGMxNGFkNmI4MmRkMDM2Mzk1NzU1ZTAxYmI0MzZhMzlmODk1
ODFkOTguLjE1NjA2YjA0YTkwZWEyOTUxN2JlODllYzAzZDdjMWM1Y2MxMDI3ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjUzOSwxMSArMjUzOSw2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgRnJhbWVMb2FkVHlwCiAKICAgICAvLyBNYWtlIHN1cmUgd2Ugc2VuZCB0aGUgT3JpZ2lu
IGhlYWRlci4KICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgU3RyaW5nKCkpOwot
Ci0gICAgLy8gQWx3YXlzIHRyeSBVVEYtOC4gSWYgdGhhdCBmYWlscywgdHJ5IGZyYW1lIGVuY29k
aW5nIChpZiBhbnkpIGFuZCB0aGVuIHRoZSBkZWZhdWx0LgotICAgIC8vIEZvciBhIG5ld2x5IG9w
ZW5lZCBmcmFtZSB3aXRoIGFuIGVtcHR5IFVSTCwgZW5jb2RpbmcoKSBzaG91bGQgbm90IGJlIHVz
ZWQsIGJlY2F1c2UgdGhpcyBtZXRob2RzIGFza3MgZGVjb2Rlciwgd2hpY2ggdXNlcyBJU08tODg1
OS0xLgotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Ci0gICAg
cmVxdWVzdC5zZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSgiVVRGLTgiLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+ZGVwcmVjYXRlZEZy
YW1lRW5jb2RpbmcoKSwgc2V0dGluZ3MgPyBzZXR0aW5ncy0+ZGVmYXVsdFRleHRFbmNvZGluZ05h
bWUoKSA6IFN0cmluZygpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklm
TmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcAppbmRleCA3OTM5Yzc0ZjIzYWQzOWU1NjYwY2VhZWMzNjllNjYyYTdmYmI4MzA1
Li4yOTgyZWE1NDE4YjRjMDdhMTdjMmI0ZmVjZDJhYWMxZDEzOTAyZTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAKQEAgLTU3LDE5ICs1Nyw2IEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjphZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzCiAgICAgcmVxdWVz
dC0+dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgcmVxdWVzdC0+bV9odHRwSGVhZGVyRmll
bGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKTsKIAotICAgIHNpemVfdCBl
bmNvZGluZ0NvdW50ID0gZGF0YS0+bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheS5zaXplKCk7Ci0gICAgaWYgKGVuY29kaW5nQ291bnQgPiAwKSB7Ci0gICAg
ICAgIFN0cmluZyBlbmNvZGluZzEgPSBkYXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5WzBdOwotICAgICAgICBTdHJpbmcgZW5jb2RpbmcyOwotICAg
ICAgICBTdHJpbmcgZW5jb2RpbmczOwotICAgICAgICBpZiAoZW5jb2RpbmdDb3VudCA+IDEpIHsK
LSAgICAgICAgICAgIGVuY29kaW5nMiA9IGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMV07Ci0gICAgICAgICAgICBpZiAoZW5jb2RpbmdDb3Vu
dCA+IDIpCi0gICAgICAgICAgICAgICAgZW5jb2RpbmczID0gZGF0YS0+bV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsyXTsKLSAgICAgICAgfQotICAgICAg
ICBBU1NFUlQoZW5jb2RpbmdDb3VudCA8PSAzKTsKLSAgICAgICAgcmVxdWVzdC0+c2V0UmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoZW5jb2RpbmcxLCBlbmNv
ZGluZzIsIGVuY29kaW5nMyk7Ci0gICAgfQogICAgIHJlcXVlc3QtPnNldEhUVFBCb2R5KGRhdGEt
Pm1faHR0cEJvZHkpOwogICAgIHJlcXVlc3QtPnNldEFsbG93Q29va2llcyhkYXRhLT5tX2FsbG93
Q29va2llcyk7CiAgICAgcmVxdWVzdC0+ZG9QbGF0Zm9ybUFkb3B0KGRhdGEpOwpAQCAtODcsMTEg
Kzc0LDYgQEAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291
cmNlUmVxdWVzdEJhc2U6OmNvcHlEYXRhKCkgY29uc3QKICAgICBkYXRhLT5tX2h0dHBIZWFkZXJz
ID0gaHR0cEhlYWRlckZpZWxkcygpLmNvcHlEYXRhKCk7CiAgICAgZGF0YS0+bV9wcmlvcml0eSA9
IHByaW9yaXR5KCk7CiAKLSAgICBkYXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCkpOwotICAgIHNpemVfdCBl
bmNvZGluZ0FycmF5U2l6ZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXkuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBl
bmNvZGluZ0FycmF5U2l6ZTsgKytpbmRleCkgewotICAgICAgICBkYXRhLT5tX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LmFwcGVuZChtX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2luZGV4XS5jcm9zc1RocmVhZFN0
cmluZygpKTsKLSAgICB9CiAgICAgaWYgKG1faHR0cEJvZHkpCiAgICAgICAgIGRhdGEtPm1faHR0
cEJvZHkgPSBtX2h0dHBCb2R5LT5kZWVwQ29weSgpOwogICAgIGRhdGEtPm1fYWxsb3dDb29raWVz
ID0gbV9hbGxvd0Nvb2tpZXM7CkBAIC0yNzEsMjIgKzI1Myw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6Y2xlYXJIVFRQT3JpZ2luKCkKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0UmVzcG9uc2VD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY29uc3QgU3RyaW5nJiBlbmNv
ZGluZzEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcyLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nMykK
LXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgbV9yZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5jbGVhcigpOwotICAgIGlmICgh
ZW5jb2RpbmcxLmlzTnVsbCgpKQotICAgICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5LmFwcGVuZChlbmNvZGluZzEpOwotICAgIGlmICghZW5jb2Rp
bmcyLmlzTnVsbCgpKQotICAgICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5LmFwcGVuZChlbmNvZGluZzIpOwotICAgIGlmICghZW5jb2RpbmczLmlz
TnVsbCgpKQotICAgICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5LmFwcGVuZChlbmNvZGluZzMpOwotICAgIAotICAgIGlmICh1cmwoKS5wcm90b2Nv
bEluSFRUUEZhbWlseSgpKQotICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxz
ZTsKLX0KLQogRm9ybURhdGEqIFJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBCb2R5KCkgY29uc3Qg
CiB7IAogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggNGIyNGRj
MzY2MmFhYmQ2NmU2MDE5ZDU4MmM1YjFjNTQwNzA4NzYyMi4uM2U3ODUxNTBhNGJhYjUxNDVkY2Fk
ZGU5OTMyOTI0MjgwZTM3OGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTEwMyw4ICsxMDMsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBodHRwQWNjZXB0KCkgY29uc3QgeyByZXR1
cm4gaHR0cEhlYWRlckZpZWxkKCJBY2NlcHQiKTsgfQogICAgICAgICB2b2lkIHNldEhUVFBBY2Nl
cHQoY29uc3QgU3RyaW5nJiBodHRwQWNjZXB0KSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXB0
IiwgaHR0cEFjY2VwdCk7IH0KIAotICAgICAgICB2b2lkIHNldFJlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNvbnN0IFN0cmluZyYgZW5jb2RpbmcxLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nMiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nMyA9
IFN0cmluZygpKTsKLQogICAgICAgICBGb3JtRGF0YSogaHR0cEJvZHkoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSk7CiAgICAg
ICAgIApAQCAtMTc0LDcgKzE3Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgS1VS
TCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwog
ICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eTsKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2h0dHBCb2R5OwogICAgICAgICBib29sIG1f
YWxsb3dDb29raWVzOwogICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RVcGRh
dGVkOwpAQCAtMjA3LDcgKzIwNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBT
dHJpbmcgbV9odHRwTWV0aG9kOwogICAgICAgICBPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVy
TWFwRGF0YT4gbV9odHRwSGVhZGVyczsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICAgICAgUmVmUHRy
PEZvcm1EYXRhPiBtX2h0dHBCb2R5OwogICAgICAgICBib29sIG1fYWxsb3dDb29raWVzOwogICAg
ICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAppbmRleCBjN2FhZWU0ODVkMDM2NzdiMDkwM2RkZmE3OTNhOTcxYTNjN2E0MTMzLi4xNDMzYjUz
YTA0ZDNkNjVmNzJiMWMyM2M1ODc4MjBlMzcwZjViMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cApAQCAtNTEsNyArNTEsNiBAQCBib29sIFJlc291cmNlUmVxdWVzdDo6c19odHRwUGlwZWxpbmlu
Z0VuYWJsZWQgPSBmYWxzZTsKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiB0eXBlZGVmIHZvaWQgKCpD
RlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5j
dGlvbikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgQ0ZBcnJheVJlZik7Ci10eXBlZGVmIENGQXJy
YXlSZWYgKCpDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5RnVuY3Rpb24pKENGVVJMUmVxdWVzdFJlZik7CiAKICNpZiBQTEFURk9STShXSU4pCiBz
dGF0aWMgSE1PRFVMRSBmaW5kQ0ZOZXR3b3JrTW9kdWxlKCkKQEAgLTY3LDIxICs2NiwxMSBAQCBz
dGF0aWMgQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5RnVuY3Rpb24gZmluZENGVVJMUgogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENG
VVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0
aW9uPihHZXRQcm9jQWRkcmVzcyhmaW5kQ0ZOZXR3b3JrTW9kdWxlKCksICJfQ0ZVUkxSZXF1ZXN0
U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwogfQotCi1zdGF0
aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5RnVuY3Rpb24oKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENG
VVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5j
dGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01vZHVsZSgpLCAiX0NGVVJMUmVxdWVz
dENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7Ci19CiAjZWxp
ZiBQTEFURk9STShNQUMpCiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24gZmluZENGVVJMUmVxdWVzdFNldENvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKIHsKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVz
dFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSIpKTsKIH0KLQotc3Rh
dGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxD
RlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVu
Y3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwotfQogI2VuZGlmCiAKIHN0YXRpYyB2b2lk
IHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIENGQXJyYXlSZWYgZmFsbGJhY2tBcnJheSkKQEAgLTkxLDE0ICs4
MCw2IEBAIHN0YXRpYyB2b2lkIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlCiAgICAgICAgIGZ1bmN0aW9uKHJlcXVlc3Qs
IGZhbGxiYWNrQXJyYXkpOwogfQogCi1zdGF0aWMgQ0ZBcnJheVJlZiBjb3B5Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0KQotewot
ICAgIHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5RnVuY3Rpb24gZnVuY3Rpb24gPSBmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCk7Ci0gICAgaWYgKCFmdW5j
dGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKHJlcXVlc3QpOwot
fQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoKSBjb25z
dAogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwpAQCAtMTU2LDE0ICsxMzcsOCBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIFdlYkNv
cmU6OnNldEhUVFBCb2R5KGNmUmVxdWVzdCwgaHR0cEJvZHkoKSk7CiAgICAgQ0ZVUkxSZXF1ZXN0
U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMoY2ZSZXF1ZXN0LCBhbGxvd0Nvb2tpZXMoKSk7CiAK
LSAgICB1bnNpZ25lZCBmYWxsYmFja0NvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFy
cmF5UmVmPiBlbmNvZGluZ0ZhbGxiYWNrcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0NvdW50LCAwKSk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSAhPSBmYWxsYmFja0NvdW50OyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBlbmNvZGluZ05hbWUoQWRvcHRDRiwgbV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAg
Q0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0TmFt
ZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKTsKLSAgICAgICAgaWYgKGVuY29kaW5nICE9
IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGVuY29kaW5nRmFsbGJhY2tzLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
PihlbmNvZGluZykpOwotICAgIH0KKyAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZCBv
bmNlIENGTmV0d29yayBpbXBsZW1lbnRzIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYy
NjYKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZW5jb2RpbmdGYWxsYmFja3MoQWRvcHRDRiwg
Q0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAma0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCAxLCAwKSk7CiAgICAgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
KGNmUmVxdWVzdCwgZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCkpOwogCiAgICAgaWYgKG1fY2ZSZXF1
ZXN0KSB7CkBAIC0yMTIsMTcgKzE4Nyw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVJlc291cmNlUmVxdWVzdCgpCiAgICAgICAgIENGUmVsZWFzZShoZWFkZXJzKTsKICAgICB9CiAK
LSAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LmNs
ZWFyKCk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGVuY29kaW5nRmFsbGJhY2tzKEFkb3B0
Q0YsIGNvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkobV9jZlJlcXVl
c3QuZ2V0KCkpKTsKLSAgICBpZiAoZW5jb2RpbmdGYWxsYmFja3MpIHsKLSAgICAgICAgQ0ZJbmRl
eCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSk7Ci0gICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIENG
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSByZWludGVycHJldF9jYXN0PENGSW5kZXg+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCksIGkpKTsKLSAgICAgICAg
ICAgIGlmIChlbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKLSAgICAgICAg
ICAgICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
LmFwcGVuZChDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1RvSUFOQUNoYXJTZXROYW1lKGVuY29kaW5n
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBtX2h0dHBCb2R5ID0gaHR0cEJvZHlGcm9tUmVx
dWVzdChtX2NmUmVxdWVzdC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQppbmRleCAyMTg5
OWIwODQwMjE3YzkwOWEwMjM0Njc4ZGMxYWQwZTcxZjdkYmY0Li4wZmI3ODg5MzNiZDQ5Y2U5MDc3
MzM1OTM0ZTA0NGZkMjM4MzM2M2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0zNSw3ICszNSw2
IEBACiAKIAogQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMp
Ci0tIChOU0FycmF5ICopY29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Owog
KyAodm9pZClzZXREZWZhdWx0VGltZW91dEludGVydmFsOihOU1RpbWVJbnRlcnZhbClzZWNvbmRz
OwogLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7CiAtIChpZClfaW5pdFdpdGhDRlVS
TFJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0OwpAQCAtOTQsMTkgKzkzLDYgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICB3aGlsZSAo
KG5hbWUgPSBbZSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQo
bmFtZSwgW2hlYWRlcnMgb2JqZWN0Rm9yS2V5Om5hbWVdKTsKIAotICAgIC8vIFRoZSBiZWxvdyBj
aGVjayBjYW4gYmUgcmVtb3ZlZCBvbmNlIHdlIHJlcXVpcmUgYSB2ZXJzaW9uIG9mIEZvdW5kYXRp
b24gd2l0aCAtW05TVVJMUmVxdWVzdCBjb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXldIG1ldGhvZC4KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheSA9IFtOU1VSTFJlcXVlc3QgaW5zdGFuY2VzUmVzcG9uZFRv
U2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSldOwotICAgIGlmIChzdXBwb3J0c0NvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheSkgewotICAgICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5LmNsZWFyKCk7Ci0gICAgICAgIE5TQXJyYXkgKmVuY29kaW5nRmFsbGJhY2tzID0g
W21fbnNSZXF1ZXN0LmdldCgpIGNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eV07Ci0gICAgICAgIE5TVUludGVnZXIgY291bnQgPSBbZW5jb2RpbmdGYWxsYmFja3MgY291bnRd
OwotICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAg
ICAgICAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0TlNTdHJp
bmdFbmNvZGluZ1RvRW5jb2RpbmcoWyhOU051bWJlciAqKVtlbmNvZGluZ0ZhbGxiYWNrcyBvYmpl
Y3RBdEluZGV4OmldIHVuc2lnbmVkTG9uZ1ZhbHVlXSk7Ci0gICAgICAgICAgICBpZiAoZW5jb2Rp
bmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCi0gICAgICAgICAgICAgICAgbV9yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQoQ0ZTdHJp
bmdDb252ZXJ0RW5jb2RpbmdUb0lBTkFDaGFyU2V0TmFtZShlbmNvZGluZykpOwotICAgICAgICB9
Ci0gICAgfQotCiAgICAgaWYgKE5TRGF0YSogYm9keURhdGEgPSBbbV9uc1JlcXVlc3QuZ2V0KCkg
SFRUUEJvZHldKQogICAgICAgICBtX2h0dHBCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShbYm9keURh
dGEgYnl0ZXNdLCBbYm9keURhdGEgbGVuZ3RoXSk7CiAgICAgZWxzZSBpZiAoTlNJbnB1dFN0cmVh
bSogYm9keVN0cmVhbSA9IFttX25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pCkBAIC0x
NTcsMTYgKzE0Myw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpCiAgICAgLy8gVGhlIGJlbG93IGNoZWNrIGNhbiBiZSByZW1vdmVkIG9uY2Ugd2UgcmVx
dWlyZSBhIHZlcnNpb24gb2YgRm91bmRhdGlvbiB3aXRoIC1bTlNNdXRhYmxlVVJMUmVxdWVzdCBz
ZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk6XSBtZXRob2QuCiAgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXkgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OildOwogICAg
IGlmIChzdXBwb3J0c0NvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkgewot
ICAgICAgICBOU011dGFibGVBcnJheSAqZW5jb2RpbmdGYWxsYmFja3MgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXldOwotICAgICAgICB1bnNpZ25lZCBjb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpICE9IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGVu
Y29kaW5nTmFtZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNF
bmNvZGluZyA9IENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3Ry
aW5nQ29udmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lKSk7Ci0gICAg
ICAgICAgICBDRlJlbGVhc2UoZW5jb2RpbmdOYW1lKTsKLSAgICAgICAgICAgIGlmIChuc0VuY29k
aW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQotICAgICAgICAgICAgICAgIFtlbmNv
ZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZExvbmc6
bnNFbmNvZGluZ11dOwotICAgICAgICB9Ci0gICAgICAgIFtuc1JlcXVlc3Qgc2V0Q29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OmVuY29kaW5nRmFsbGJhY2tzXTsKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSBDRk5ldHdvcmsgaW1wbGVtZW50
cyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY2CisgICAgICAgIE5TQXJyYXkgKmVu
Y29kaW5nRmFsbGJhY2sgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhVbnNpZ25lZExvbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgW25zUmVx
dWVzdCBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk6ZW5jb2RpbmdG
YWxsYmFja107CiAgICAgfQogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGh0dHBC
b2R5KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>106958</attachid>
            <date>2011-09-09 20:38:04 -0700</date>
            <delta_ts>2011-09-09 20:38:04 -0700</delta_ts>
            <desc>Mock HTTP response</desc>
            <filename>resp.utf8</filename>
            <type>application/octet-stream</type>
            <size>150</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SFRUUC8xLjAgMjAwIE9LCkRhdGU6IFNhdCwgMTAgU2VwIDIwMTEgMDM6MDc6MjAgR01UCkV4cGly
ZXM6IC0xCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgpDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRh
Y2htZW50OyBmaWxlbmFtZT3mjqjlub/pk77mjqUKCllZWVkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106959</attachid>
            <date>2011-09-09 20:51:57 -0700</date>
            <delta_ts>2011-09-10 00:41:52 -0700</delta_ts>
            <desc>Updated to apply to tip of tree</desc>
            <filename>bug-67882-20110909205156.patch</filename>
            <type>text/plain</type>
            <size>19001</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YjE4YTlkMDQ5YTM3Zjhh
NGI0ZmYyOTMyYjZjMjJiNzZlNWIxNTIwLi42MTM2OGY0MjE4NDM4MDk1Yjg1NDM4MGQ4YTg0N2Fh
Njc3NDBjNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDktMDkgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBEb2N1bWVudFdyaXRl
cjo6ZGVwcmVjYXRlZEZyYW1lRW5jb2RpbmcoKSBieSBpbXBsZW1lbnRpbmcgUkZDIDYyNjYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhyZWUgeWVhcnMg
YWdvLCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zOTAyNiwgQWxleGV5Cisg
ICAgICAgIFByb3NrdXJ5YWtvdiBhZGRlZCBDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkgdG8gd29yaworICAgICAgICBhcm91bmQgYSB3ZWIgc2l0ZSBjb21wYXRpYmlsaXR5
IGlzc3VlIHdpdGggYSBub24tQVNDSUkgZmlsZSBuYW1lCisgICAgICAgIGJlY29taW5nIGdhcmJs
ZWQgd2hlbiByZWNlaXZlZCBpbiB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIuCisKKyAg
ICAgICAgU2luY2UgdGhhdCB0aW1lLCB0aGVyZSBoYXMgYmVlbiBjb3Bpb3VzIGRpc2N1c3Npb24g
b2YgdGhpcyB0b3BpYyBhbW9uZworICAgICAgICBicm93c2VyIHZlbmRvcnMsIGluIHRoZSBJRVRG
LCBhbmQgaW4gdGhlIGJyb2FkZXIgd2ViIGNvbW11bml0eS4gIEZvcgorICAgICAgICBleGFtcGxl
LCBoZXJlIGlzIGEgU3RhY2sgT3ZlcmZsb3cgdGhyZWFkIGFib3V0IHRoaXMgdG9waWM6CisKKyAg
ICAgICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85MzU1MS9ob3ctdG8tZW5j
b2RlLXRoZS1maWxlbmFtZS1wYXJhbWV0ZXItb2YtY29udGVudC1kaXNwb3NpdGlvbi1oZWFkZXIt
aW4taHR0cAorCisgICAgICAgIEVyaWMgTGF3cmVuY2UgaGFzIHdyaXR0ZW4gYSBibG9nIHBvc3Qg
dGhhdCBzdW1tYXJpemVzIElFJ3MgcGVyc3BlY3RpdmUKKyAgICAgICAgb24gdGhpcyBpc3N1ZToK
KworICAgICAgICBodHRwOi8vYmxvZ3MubXNkbi5jb20vYi9pZWludGVybmFscy9hcmNoaXZlLzIw
MTAvMDYvMDcvY29udGVudC1kaXNwb3NpdGlvbi1hdHRhY2htZW50LWFuZC1pbnRlcm5hdGlvbmFs
LXVuaWNvZGUtY2hhcmFjdGVycy5hc3B4CisKKyAgICAgICAgVGhlIGN1cnJlbnQgY29uc2Vuc3Vz
IGlzIHRoYXQgYnJvd3NlcnMgc2hvdWxkIGltcGxlbWVudCBSRkMgNjI2NiwKKyAgICAgICAgd2hp
Y2ggaXMgYSBuZXcgUkZDIHRoYXQgdXBkYXRlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAgICAg
ICAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIuICBDaHJvbWUgYW5kIEZpcmVmb3ggaGF2ZSBi
b3RoIGltcGxlbWVudGVkCisgICAgICAgIFJGQyA2MjY2IGFuZCBoYXZlIGVuY291bnRlcmVkIG9u
bHkgb25lIGlzc3VlLCB3aGljaCB3YXMgdGhlbiBmaXhlZCBieQorICAgICAgICB0aGUgd2ViIHNp
dGUgb3BlcmF0b3IuICBJRSBoYXMgYWxzbyBpbXBsZW1lbnRlZCBSRkMgNjI2NiwgYnV0IEkgZG9u
J3QKKyAgICAgICAgaGF2ZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBjb21wYXRp
YmlsaXR5IGV4cGVyaWVuY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBwcmV2
aW91cyBtZWNoYW5pc20gV2ViS2l0IHVzZWQgb24gTWFjL1dpbiB0byBhZGRyZXNzIHRoaXMKKyAg
ICAgICAgY29tcGF0aWJpbGl0eSBpc3N1ZSBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgY29uc2Vu
c3VzIG1lY2hhbmlzbS4KKyAgICAgICAgU3BlY2lmaWNhbGx5LCByYXRoZXIgdGhhbiB1c2UgYSBj
b21wbGV4IGVuY29kaW5nIGZhbGxiYWNrIGFycmF5IHRoYXQKKyAgICAgICAgaW5jbHVkZXMgdGhl
IGVuY29kaW5nIG9mIHRoZSByZWZlcnJpbmcgcGFnZSwgd2UgdXNlIG9ubHkgVVRGLTguCisKKyAg
ICAgICAgVG8gY29tcGx5IHdpdGggUkZDIDYyNjYgZnVsbHksIGZvbGtzIHdobyBzaGlwIFdlYktp
dCBzaG91bGQgdXBkYXRlCisgICAgICAgIHRoZWlyIG5ldHdvcmsgbGlicmFyaWVzIHRvIGluY2x1
ZGUgc3VwcG9ydCBmb3IgdGhlIGZpbGVuYW1lKiB0b2tlbiwKKyAgICAgICAgd2hpY2ggZ2l2ZXMg
d2ViIHNpdGVzIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYW4gZW5jb2RpbmcgYW5kIHRvCisgICAg
ICAgIHN1cHBvcnQgYm90aCBlbmNvZGluZy1hd2FyZSBhbmQgZW5jb2RpbmctdW5hd2FyZSB1c2Vy
IGFnZW50cy4KKworICAgICAgICBTZWUgYnVnIGZvciBtYW51YWwgdGVzdCAodGhlIGJ1ZyBtYW5p
ZmVzdHMgaW4gU2FmYXJpIGRvd25sb2FkIFVJKS4KKworICAgICAgICBBZGFtIEJhcnRoIGNvbnRy
aWJ1dGVkIGluIHRoZSBjb25zdHJ1Y3Rpb24vdGVzdGluZyBvZiB0aGlzIHBhdGNoLgorCisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVz
dFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVx
dWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKwogMjAxMS0wOS0wOSAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIE1vdmUgRWxlbWVudC5jb250YWlucyB0byBOb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBhY2ZiZjJkZTk5YjBkMmVlOTMy
NzdlYjg5NGRhNThlNDQ1ODc2YzAxLi44MmE5NzdmNTA1MWY2NmQ3MTM0NDc2MTQyYzhkZmFkNWYy
NDMyNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTI0
MywyMCArMjQzLDYgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6c2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIHVzZXJDaG9zZW4pCiAgICAgbV9lbmNvZGluZ1dhc0Nob3NlbkJ5VXNl
ciA9IHVzZXJDaG9zZW47CiB9CiAKLVN0cmluZyBEb2N1bWVudFdyaXRlcjo6ZGVwcmVjYXRlZEZy
YW1lRW5jb2RpbmcoKSBjb25zdAotewotICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX2VuY29kaW5nOwotCi0gICAgaWYgKG1fZW5j
b2RpbmdXYXNDaG9zZW5CeVVzZXIgJiYgIW1fZW5jb2RpbmcuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gbV9lbmNvZGluZzsKLQotICAgIGlmIChtX2RlY29kZXIgJiYgbV9kZWNvZGVyLT5lbmNv
ZGluZygpLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIHZvaWQgRG9jdW1lbnRXcml0ZXI6
OnNldERvY3VtZW50V2FzTG9hZGVkQXNQYXJ0T2ZOYXZpZ2F0aW9uKCkKIHsKICAgICBBU1NFUlQo
IW1fcGFyc2VyLT5pc1N0b3BwZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oCmluZGV4IDBkMjQ4MDBiZWUwNmE5OWU5NWY0NmFiNjA4NzY1ZTVjOGE0NWNjYmQuLjc0OWQy
ZDI2Y2VjNTM0YTExYTY1Mzc0YjJiMjMzYzcyNGFjOTkwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oCkBAIC01OSwxMSArNTksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGJvb2wgdXNlckNob3Nlbik7CiAK
LSAgICAvLyBGSVhNRTogSXQncyByZWFsbHkgdW5mb3J1bmF0ZSB0byBuZWVkIHRvIGV4cG9zZSB0
aGlzIHBpZWNlIG9mIHN0YXRlLgotICAgIC8vIEkgc3VzcGVjdCBhIGJldHRlciBkZXNpZ24gaXMg
dG8gZGlzZW50YW5nbGUgdXNlci1wcm92aWRlZCBlbmNvZGluZ3MsCi0gICAgLy8gZGVmYXVsdCBl
bmNvZGluZ3MsIGFuZCB0aGUgZGVjb2Rpbmcgd2UncmUgY3VycmVudGx5IHVzaW5nLgotICAgIFN0
cmluZyBkZXByZWNhdGVkRnJhbWVFbmNvZGluZygpIGNvbnN0OwotCiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICB2b2lkIHNldE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgeyBtX21pbWVUeXBlID0gdHlwZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjMTRhZDZiODJkZDAzNjM5NTc1NWUw
MWJiNDM2YTM5Zjg5NTgxZDk4Li4xNTYwNmIwNGE5MGVhMjk1MTdiZTg5ZWMwM2Q3YzFjNWNjMTAy
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI1MzksMTEgKzI1
MzksNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lTG9hZFR5cAogCiAgICAgLy8gTWFrZSBzdXJlIHdlIHNl
bmQgdGhlIE9yaWdpbiBoZWFkZXIuCiAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3Qs
IFN0cmluZygpKTsKLQotICAgIC8vIEFsd2F5cyB0cnkgVVRGLTguIElmIHRoYXQgZmFpbHMsIHRy
eSBmcmFtZSBlbmNvZGluZyAoaWYgYW55KSBhbmQgdGhlbiB0aGUgZGVmYXVsdC4KLSAgICAvLyBG
b3IgYSBuZXdseSBvcGVuZWQgZnJhbWUgd2l0aCBhbiBlbXB0eSBVUkwsIGVuY29kaW5nKCkgc2hv
dWxkIG5vdCBiZSB1c2VkLCBiZWNhdXNlIHRoaXMgbWV0aG9kcyBhc2tzIGRlY29kZXIsIHdoaWNo
IHVzZXMgSVNPLTg4NTktMS4KLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0
aW5ncygpOwotICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkoIlVURi04IiwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkt
PmRlcHJlY2F0ZWRGcmFtZUVuY29kaW5nKCksIHNldHRpbmdzID8gc2V0dGluZ3MtPmRlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKCkgOiBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFk
ZEhUVFBPcmlnaW5JZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggNzkzOWM3NGYyM2FkMzllNTY2MGNlYWVjMzY5
ZTY2MmE3ZmJiODMwNS4uMjk4MmVhNTQxOGI0YzA3YTE3YzJiNGZlY2QyYWFjMWQxMzkwMmUzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCkBAIC01NywxOSArNTcsNiBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVx
dWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
cwogICAgIHJlcXVlc3QtPnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwogICAgIHJlcXVlc3QtPm1f
aHR0cEhlYWRlckZpZWxkcy5hZG9wdChkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7CiAK
LSAgICBzaXplX3QgZW5jb2RpbmdDb3VudCA9IGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwotICAgIGlmIChlbmNvZGluZ0NvdW50
ID4gMCkgewotICAgICAgICBTdHJpbmcgZW5jb2RpbmcxID0gZGF0YS0+bV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVswXTsKLSAgICAgICAgU3RyaW5nIGVu
Y29kaW5nMjsKLSAgICAgICAgU3RyaW5nIGVuY29kaW5nMzsKLSAgICAgICAgaWYgKGVuY29kaW5n
Q291bnQgPiAxKSB7Ci0gICAgICAgICAgICBlbmNvZGluZzIgPSBkYXRhLT5tX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5WzFdOwotICAgICAgICAgICAgaWYg
KGVuY29kaW5nQ291bnQgPiAyKQotICAgICAgICAgICAgICAgIGVuY29kaW5nMyA9IGRhdGEtPm1f
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMl07Ci0gICAg
ICAgIH0KLSAgICAgICAgQVNTRVJUKGVuY29kaW5nQ291bnQgPD0gMyk7Ci0gICAgICAgIHJlcXVl
c3QtPnNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGVu
Y29kaW5nMSwgZW5jb2RpbmcyLCBlbmNvZGluZzMpOwotICAgIH0KICAgICByZXF1ZXN0LT5zZXRI
VFRQQm9keShkYXRhLT5tX2h0dHBCb2R5KTsKICAgICByZXF1ZXN0LT5zZXRBbGxvd0Nvb2tpZXMo
ZGF0YS0+bV9hbGxvd0Nvb2tpZXMpOwogICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChkYXRh
KTsKQEAgLTg3LDExICs3NCw2IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgZGF0YS0+
bV9odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpOwogICAgIGRhdGEt
Pm1fcHJpb3JpdHkgPSBwcmlvcml0eSgpOwogCi0gICAgZGF0YS0+bV9yZXNwb25zZUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpKTsK
LSAgICBzaXplX3QgZW5jb2RpbmdBcnJheVNpemUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgZW5jb2RpbmdBcnJheVNpemU7ICsraW5kZXgpIHsKLSAgICAgICAgZGF0YS0+
bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQo
bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpbmRleF0u
Y3Jvc3NUaHJlYWRTdHJpbmcoKSk7Ci0gICAgfQogICAgIGlmIChtX2h0dHBCb2R5KQogICAgICAg
ICBkYXRhLT5tX2h0dHBCb2R5ID0gbV9odHRwQm9keS0+ZGVlcENvcHkoKTsKICAgICBkYXRhLT5t
X2FsbG93Q29va2llcyA9IG1fYWxsb3dDb29raWVzOwpAQCAtMjcxLDIyICsyNTMsNiBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUE9yaWdpbigpCiAgICAgICAgIG1fcGxhdGZv
cm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCi12b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6
OnNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcxLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nMiwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZzMpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAg
IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuY2xlYXIo
KTsKLSAgICBpZiAoIWVuY29kaW5nMS5pc051bGwoKSkKLSAgICAgICAgbV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQoZW5jb2RpbmcxKTsKLSAg
ICBpZiAoIWVuY29kaW5nMi5pc051bGwoKSkKLSAgICAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQoZW5jb2RpbmcyKTsKLSAgICBpZiAo
IWVuY29kaW5nMy5pc051bGwoKSkKLSAgICAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQoZW5jb2RpbmczKTsKLSAgICAKLSAgICBpZiAo
dXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkID0gZmFsc2U7Ci19Ci0KIEZvcm1EYXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRw
Qm9keSgpIGNvbnN0IAogeyAKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
CmluZGV4IDRiMjRkYzM2NjJhYWJkNjZlNjAxOWQ1ODJjNWIxYzU0MDcwODc2MjIuLjNlNzg1MTUw
YTRiYWI1MTQ1ZGNhZGRlOTkzMjkyNDI4MGUzNzhjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xMDMsOCAr
MTAzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgp
IGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KICAgICAgICAgdm9p
ZCBzZXRIVFRQQWNjZXB0KGNvbnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVy
RmllbGQoIkFjY2VwdCIsIGh0dHBBY2NlcHQpOyB9CiAKLSAgICAgICAgdm9pZCBzZXRSZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVu
Y29kaW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZzMgPSBTdHJpbmcoKSk7Ci0KICAgICAgICAgRm9ybURhdGEqIGh0dHBCb2R5KCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0
cEJvZHkpOwogICAgICAgICAKQEAgLTE3NCw3ICsxNzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIEtVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKICAgICAgICAgU3RyaW5nIG1f
aHR0cE1ldGhvZDsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7Ci0g
ICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXk7CiAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsKICAg
ICAgICAgYm9vbCBtX2FsbG93Q29va2llczsKICAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3Vy
Y2VSZXF1ZXN0VXBkYXRlZDsKQEAgLTIwNyw3ICsyMDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhvZDsKICAgICAgICAgT3duUHRyPENyb3NzVGhy
ZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7Ci0gICAgICAgIFZlY3RvcjxTdHJp
bmc+IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAg
ICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsKICAgICAgICAgYm9vbCBtX2FsbG93
Q29va2llczsKICAgICAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9wcmlvcml0eTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3RDRk5ldC5jcHAKaW5kZXggYzdhYWVlNDg1ZDAzNjc3YjA5MDNkZGZhNzkzYTk3MWEzYzdh
NDEzMy4uMTQzM2I1M2EwNGQzZDY1ZjcyYjFjMjNjNTg3ODIwZTM3MGY1YjA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3RDRk5ldC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNf
aHR0cFBpcGVsaW5pbmdFbmFibGVkID0gZmFsc2U7CiAjaWYgVVNFKENGTkVUV09SSykKIAogdHlw
ZWRlZiB2b2lkICgqQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5RnVuY3Rpb24pKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIENGQXJyYXlSZWYpOwot
dHlwZWRlZiBDRkFycmF5UmVmICgqQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRlVSTFJlcXVlc3RSZWYpOwogCiAjaWYgUExB
VEZPUk0oV0lOKQogc3RhdGljIEhNT0RVTEUgZmluZENGTmV0d29ya01vZHVsZSgpCkBAIC02Nywy
MSArNjYsMTEgQEAgc3RhdGljIENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFIKIHsKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXlGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01vZHVsZSgpLCAi
X0NGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSIp
KTsKIH0KLQotc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5RnVuY3Rpb24+KEdldFByb2NBZGRyZXNzKGZpbmRDRk5ldHdvcmtNb2R1bGUoKSwg
Il9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
IikpOwotfQogI2VsaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIENGVVJMUmVxdWVzdFNldENvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVl
c3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbigpCiB7
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwg
Il9DRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXki
KSk7CiB9Ci0KLXN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24gZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5bShSVExEX0RFRkFVTFQsICJfQ0ZVUkxSZXF1ZXN0Q29w
eUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSIpKTsKLX0KICNlbmRpZgog
CiBzdGF0aWMgdm9pZCBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXko
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRkFycmF5UmVmIGZhbGxiYWNrQXJyYXkp
CkBAIC05MSwxNCArODAsNiBAQCBzdGF0aWMgdm9pZCBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZQogICAgICAgICBmdW5j
dGlvbihyZXF1ZXN0LCBmYWxsYmFja0FycmF5KTsKIH0KIAotc3RhdGljIENGQXJyYXlSZWYgY29w
eUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShDRlVSTFJlcXVlc3RSZWYg
cmVxdWVzdCkKLXsKLSAgICBzdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZ1bmN0aW9uID0gZmluZENGVVJMUmVxdWVz
dENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbigpOwot
ICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBmdW5jdGlv
bihyZXF1ZXN0KTsKLX0KLQogQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxS
ZXF1ZXN0KCkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKQEAgLTE1Niwx
NCArMTM3LDggQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCkKICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVlc3QsIGh0dHBCb2R5KCkpOwogICAg
IENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dD
b29raWVzKCkpOwogCi0gICAgdW5zaWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwotICAgIFJldGFpblB0
cjxDRk11dGFibGVBcnJheVJlZj4gZW5jb2RpbmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJ
QU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSk7Ci0gICAgICAgIGlm
IChlbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4oZW5jb2RpbmcpKTsKLSAgICB9CisgICAgLy8gRklYTUU6IFRoaXMgY2Fu
IGJlIHJlbW92ZWQgb25jZSBDRk5ldHdvcmsgaW1wbGVtZW50cyBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM2MjY2CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGVuY29kaW5nRmFsbGJh
Y2tzKEFkb3B0Q0YsIENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgMSwgMCkpOwogICAgIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheShjZlJlcXVlc3QsIGVuY29kaW5nRmFsbGJhY2tzLmdldCgpKTsKIAogICAg
IGlmIChtX2NmUmVxdWVzdCkgewpAQCAtMjEyLDE3ICsxODcsNiBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBDRlJlbGVhc2UoaGVhZGVy
cyk7CiAgICAgfQogCi0gICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheS5jbGVhcigpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBlbmNvZGluZ0Zh
bGxiYWNrcyhBZG9wdENGLCBjb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5KG1fY2ZSZXF1ZXN0LmdldCgpKSk7Ci0gICAgaWYgKGVuY29kaW5nRmFsbGJhY2tzKSB7Ci0g
ICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoZW5jb2RpbmdGYWxsYmFja3Mu
Z2V0KCkpOwotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gcmVpbnRlcnByZXRfY2FzdDxD
RkluZGV4PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGVuY29kaW5nRmFsbGJhY2tzLmdldCgpLCBp
KSk7Ci0gICAgICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlk
SWQpCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheS5hcHBlbmQoQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb0lBTkFDaGFyU2V0
TmFtZShlbmNvZGluZykpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgbV9odHRwQm9keSA9IGh0
dHBCb2R5RnJvbVJlcXVlc3QobV9jZlJlcXVlc3QuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMu
bW0KaW5kZXggMjE4OTliMDg0MDIxN2M5MDlhMDIzNDY3OGRjMWFkMGU3MWY3ZGJmNC4uMGZiNzg4
OTMzYmQ0OWNlOTA3NzMzNTkzNGUwNDRmZDIzODMzNjNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpA
QCAtMzUsNyArMzUsNiBAQAogCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJl
cXVlc3REZXRhaWxzKQotLSAoTlNBcnJheSAqKWNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheTsKICsgKHZvaWQpc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbDooTlNUaW1lSW50
ZXJ2YWwpc2Vjb25kczsKIC0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwogLSAoaWQp
X2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKQEAgLTk0LDE5
ICs5Myw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgp
CiAgICAgd2hpbGUgKChuYW1lID0gW2UgbmV4dE9iamVjdF0pKQogICAgICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KG5hbWUsIFtoZWFkZXJzIG9iamVjdEZvcktleTpuYW1lXSk7CiAKLSAgICAv
LyBUaGUgYmVsb3cgY2hlY2sgY2FuIGJlIHJlbW92ZWQgb25jZSB3ZSByZXF1aXJlIGEgdmVyc2lv
biBvZiBGb3VuZGF0aW9uIHdpdGggLVtOU1VSTFJlcXVlc3QgY29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5XSBtZXRob2QuCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkgPSBbTlNVUkxSZXF1ZXN0IGluc3Rh
bmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkpXTsKLSAgICBpZiAoc3VwcG9ydHNDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkpIHsKLSAgICAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheS5jbGVhcigpOwotICAgICAgICBOU0FycmF5ICplbmNvZGlu
Z0ZhbGxiYWNrcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXldOwotICAgICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2VuY29kaW5nRmFs
bGJhY2tzIGNvdW50XTsKLSAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5n
Q29udmVydE5TU3RyaW5nRW5jb2RpbmdUb0VuY29kaW5nKFsoTlNOdW1iZXIgKilbZW5jb2RpbmdG
YWxsYmFja3Mgb2JqZWN0QXRJbmRleDppXSB1bnNpZ25lZExvbmdWYWx1ZV0pOwotICAgICAgICAg
ICAgaWYgKGVuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQotICAgICAgICAg
ICAgICAgIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXku
YXBwZW5kKENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9JQU5BQ2hhclNldE5hbWUoZW5jb2Rpbmcp
KTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGlmIChOU0RhdGEqIGJvZHlEYXRhID0gW21fbnNS
ZXF1ZXN0LmdldCgpIEhUVFBCb2R5XSkKICAgICAgICAgbV9odHRwQm9keSA9IEZvcm1EYXRhOjpj
cmVhdGUoW2JvZHlEYXRhIGJ5dGVzXSwgW2JvZHlEYXRhIGxlbmd0aF0pOwogICAgIGVsc2UgaWYg
KE5TSW5wdXRTdHJlYW0qIGJvZHlTdHJlYW0gPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHlT
dHJlYW1dKQpAQCAtMTU3LDE2ICsxNDMsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIC8vIFRoZSBiZWxvdyBjaGVjayBjYW4gYmUgcmVtb3Zl
ZCBvbmNlIHdlIHJlcXVpcmUgYSB2ZXJzaW9uIG9mIEZvdW5kYXRpb24gd2l0aCAtW05TTXV0YWJs
ZVVSTFJlcXVlc3Qgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Ol0g
bWV0aG9kLgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGFuY2VzUmVzcG9uZFRv
U2VsZWN0b3I6QHNlbGVjdG9yKHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheTopXTsKICAgICBpZiAoc3VwcG9ydHNDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkpIHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVuY29kaW5nRmFsbGJhY2tzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX3Jlc3Bv
bnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBD
RlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1RvTlNTdHJpbmdF
bmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5n
TmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVuY29kaW5nTmFtZSk7Ci0gICAgICAgICAg
ICBpZiAobnNFbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKLSAgICAgICAg
ICAgICAgICBbZW5jb2RpbmdGYWxsYmFja3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRMb25nOm5zRW5jb2RpbmddXTsKLSAgICAgICAgfQotICAgICAgICBbbnNSZXF1ZXN0
IHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTplbmNvZGluZ0ZhbGxi
YWNrc107CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgQ0ZOZXR3
b3JrIGltcGxlbWVudHMgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjI2NgorICAgICAg
ICBOU0FycmF5ICplbmNvZGluZ0ZhbGxiYWNrID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRMb25nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07Cisg
ICAgICAgIFtuc1JlcXVlc3Qgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5OmVuY29kaW5nRmFsbGJhY2tdOwogICAgIH0KIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9y
bURhdGEgPSBodHRwQm9keSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106969</attachid>
            <date>2011-09-10 00:41:56 -0700</date>
            <delta_ts>2011-09-10 00:50:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67882-20110910004154.patch</filename>
            <type>text/plain</type>
            <size>9892</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0OTAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDktMTAgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgRG9jdW1lbnRXcml0ZXI6
OmRlcHJlY2F0ZWRGcmFtZUVuY29kaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhyZWUgeWVhcnMgYWdvLCBpbiBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8zOTAyNiwgQWxleGV5CisgICAgICAgIFByb3NrdXJ5YWtvdiBhZGRlZCBD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkgdG8gd29yaworICAgICAgICBh
cm91bmQgYSB3ZWIgc2l0ZSBjb21wYXRpYmlsaXR5IGlzc3VlIHdpdGggYSBub24tQVNDSUkgZmls
ZSBuYW1lCisgICAgICAgIGJlY29taW5nIGdhcmJsZWQgd2hlbiByZWNlaXZlZCBpbiB0aGUgQ29u
dGVudC1EaXNwb3NpdGlvbiBoZWFkZXIuCisKKyAgICAgICAgU2luY2UgdGhhdCB0aW1lLCB0aGVy
ZSBoYXMgYmVlbiBjb3Bpb3VzIGRpc2N1c3Npb24gb2YgdGhpcyB0b3BpYyBhbW9uZworICAgICAg
ICBicm93c2VyIHZlbmRvcnMsIGluIHRoZSBJRVRGLCBhbmQgaW4gdGhlIGJyb2FkZXIgd2ViIGNv
bW11bml0eS4gIEZvcgorICAgICAgICBleGFtcGxlLCBoZXJlIGlzIGEgU3RhY2sgT3ZlcmZsb3cg
dGhyZWFkIGFib3V0IHRoaXMgdG9waWM6CisKKyAgICAgICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cu
Y29tL3F1ZXN0aW9ucy85MzU1MS9ob3ctdG8tZW5jb2RlLXRoZS1maWxlbmFtZS1wYXJhbWV0ZXIt
b2YtY29udGVudC1kaXNwb3NpdGlvbi1oZWFkZXItaW4taHR0cAorCisgICAgICAgIEVyaWMgTGF3
cmVuY2UgaGFzIHdyaXR0ZW4gYSBibG9nIHBvc3QgdGhhdCBzdW1tYXJpemVzIElFJ3MgcGVyc3Bl
Y3RpdmUKKyAgICAgICAgb24gdGhpcyBpc3N1ZToKKworICAgICAgICBodHRwOi8vYmxvZ3MubXNk
bi5jb20vYi9pZWludGVybmFscy9hcmNoaXZlLzIwMTAvMDYvMDcvY29udGVudC1kaXNwb3NpdGlv
bi1hdHRhY2htZW50LWFuZC1pbnRlcm5hdGlvbmFsLXVuaWNvZGUtY2hhcmFjdGVycy5hc3B4CisK
KyAgICAgICAgVGhlIGN1cnJlbnQgY29uc2Vuc3VzIGlzIHRoYXQgYnJvd3NlcnMgc2hvdWxkIGlt
cGxlbWVudCBSRkMgNjI2NiwKKyAgICAgICAgd2hpY2ggaXMgYSBuZXcgUkZDIHRoYXQgdXBkYXRl
cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKyAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFk
ZXIuICBDaHJvbWUgYW5kIEZpcmVmb3ggaGF2ZSBib3RoIGltcGxlbWVudGVkCisgICAgICAgIFJG
QyA2MjY2IGFuZCBoYXZlIGVuY291bnRlcmVkIG9ubHkgb25lIGlzc3VlLCB3aGljaCB3YXMgdGhl
biBmaXhlZCBieQorICAgICAgICB0aGUgd2ViIHNpdGUgb3BlcmF0b3IuICBJRSBoYXMgYWxzbyBp
bXBsZW1lbnRlZCBSRkMgNjI2NiwgYnV0IEkgZG9uJ3QKKyAgICAgICAgaGF2ZSBkZXRhaWxlZCBp
bmZvcm1hdGlvbiBhYm91dCB0aGVpciBjb21wYXRpYmlsaXR5IGV4cGVyaWVuY2UuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGQgZXhwbGljaXQgUExBVEZPUk0gI2lmZGVmcyBhcm91bmQgdGhlIHF1
aXJreQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBwcmV2aW91c2x5IHVzZWQgaW4gQXBwbGUncyBN
YWMgYW5kIFdpbmRvd3MgcG9ydHMuICBUaGlzCisgICAgICAgIGNvZGUgaXMgYWxyZWFkeSBvbmx5
IHVzZWQgb24gQXBwbGUncyBwb3J0cywgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vCisgICAg
ICAgIGZ1bmN0aW9uYWwgY2hhbmdlcy4gIEl0IGRvZXMsIGhvd2V2ZXIsIGRpc2NvdXJhZ2Ugb3Ro
ZXIgcG9ydHMgZnJvbQorICAgICAgICBhZG9wdGluZyB0aGlzIHF1aXJrLiAgSU1ITywgQXBwbGUg
c2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIGFzIHNvb24gYXMKKyAgICAgICAgY29tcGF0aWJpbGl0
eSBhbGxvd3MgYW5kIGNvbnZlcmdlIGJlaGF2aW9yIHdpdGggdGhlIG90aGVyIG1ham9yIGJyb3dz
ZXIKKyAgICAgICAgdmVuZG9ycy4KKworICAgICAgICBTZWUgYnVnIGZvciBtYW51YWwgdGVzdCAo
dGhlIGJ1ZyBtYW5pZmVzdHMgaW4gU2FmYXJpIGRvd25sb2FkIFVJKS4KKworICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaDoKKwogMjAxMS0wOS0wOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQXR0ZW1wdGVkIExlb3BhcmQgYnVpbGQgZml4LgpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiA5NDkwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0Myw2ICsyNDMsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpzZXRFbmNvZGluZyhjb25zdCBT
CiAgICAgbV9lbmNvZGluZ1dhc0Nob3NlbkJ5VXNlciA9IHVzZXJDaG9zZW47CiB9CiAKKyNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKIFN0cmluZyBEb2N1bWVudFdyaXRlcjo6ZGVw
cmVjYXRlZEZyYW1lRW5jb2RpbmcoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKS5pc0VtcHR5KCkpCkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIERvY3VtZW50
V3JpdGVyOjpkZXByZWNhdGVkRnJhbWVFbgogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQorI2Vu
ZGlmCiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnNldERvY3VtZW50V2FzTG9hZGVkQXNQYXJ0T2ZO
YXZpZ2F0aW9uKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CShyZXZpc2lvbiA5NDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMCArNTksMTEgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBib29sIHVzZXJDaG9zZW4pOwog
Ci0gICAgLy8gRklYTUU6IEl0J3MgcmVhbGx5IHVuZm9ydW5hdGUgdG8gbmVlZCB0byBleHBvc2Ug
dGhpcyBwaWVjZSBvZiBzdGF0ZS4KLSAgICAvLyBJIHN1c3BlY3QgYSBiZXR0ZXIgZGVzaWduIGlz
IHRvIGRpc2VudGFuZ2xlIHVzZXItcHJvdmlkZWQgZW5jb2RpbmdzLAotICAgIC8vIGRlZmF1bHQg
ZW5jb2RpbmdzLCBhbmQgdGhlIGRlY29kaW5nIHdlJ3JlIGN1cnJlbnRseSB1c2luZy4KKyNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKKyAgICAvLyBUaGlzIGNvZGUgZXhpc3RzIG9u
bHkgdG8gc2VydmljZSBhIHF1aXJrIGluIHRoZSBBcHBsZSBNYWMgYW5kIFdpbmRvd3MgcG9ydHMu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhpcyBjb2RlIG9uY2UgQ0ZOZXR3b3Jr
IGltcGxlbWVudHMgUkZDIDYyNjYuCiAgICAgU3RyaW5nIGRlcHJlY2F0ZWRGcmFtZUVuY29kaW5n
KCkgY29uc3Q7CisjZW5kaWYKIAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpIHsgbV9taW1lVHlwZSA9IHR5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gOTQ5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQwLDEwICsyNTQwLDE3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXMKICAgICAvLyBNYWtlIHN1cmUg
d2Ugc2VuZCB0aGUgT3JpZ2luIGhlYWRlci4KICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVx
dWVzdCwgU3RyaW5nKCkpOwogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisg
ICAgLy8gVGhlIEFwcGxlIE1hYyBhbmQgV2luZG93cyBwb3J0cyBoYXZlIGRlY2lkZWQgbm90IHRv
IGJlaGF2ZSBsaWtlIG90aGVyCisgICAgLy8gYnJvd3NlcnMgYW5kIGluc3RlYWQgdXNlIGEgcXVp
cmt5IGZhbGxiYWNrIGFycmF5LgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMg
Y29kZSBvbmNlIENGTmV0d29yayBpbXBsZW1lbnRzIFJGQyA2MjY2LgorCiAgICAgLy8gQWx3YXlz
IHRyeSBVVEYtOC4gSWYgdGhhdCBmYWlscywgdHJ5IGZyYW1lIGVuY29kaW5nIChpZiBhbnkpIGFu
ZCB0aGVuIHRoZSBkZWZhdWx0LgotICAgIC8vIEZvciBhIG5ld2x5IG9wZW5lZCBmcmFtZSB3aXRo
IGFuIGVtcHR5IFVSTCwgZW5jb2RpbmcoKSBzaG91bGQgbm90IGJlIHVzZWQsIGJlY2F1c2UgdGhp
cyBtZXRob2RzIGFza3MgZGVjb2Rlciwgd2hpY2ggdXNlcyBJU08tODg1OS0xLgorICAgIC8vIEZv
ciBhIG5ld2x5IG9wZW5lZCBmcmFtZSB3aXRoIGFuIGVtcHR5IFVSTCwgZW5jb2RpbmcoKSBzaG91
bGQgbm90IGJlCisgICAgLy8gdXNlZCwgYmVjYXVzZSB0aGlzIG1ldGhvZHMgYXNrcyBkZWNvZGVy
LCB3aGljaCB1c2VzIElTTy04ODU5LTEuCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFt
ZS0+c2V0dGluZ3MoKTsKICAgICByZXF1ZXN0LnNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5KCJVVEYtOCIsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLT5kZXByZWNhdGVkRnJhbWVFbmNvZGluZygpLCBzZXR0aW5ncyA/IHNldHRpbmdzLT5k
ZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpIDogU3RyaW5nKCkpOworI2VuZGlmCiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZpc2lvbiA5
NDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgUGFzc093blB0cjxSZXNv
dXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdQogICAgIHJlcXVlc3QtPnVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOwogICAgIHJlcXVlc3QtPm1faHR0cEhlYWRlckZpZWxkcy5hZG9wdChkYXRhLT5tX2h0
dHBIZWFkZXJzLnJlbGVhc2UoKSk7CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJ
TikKICAgICBzaXplX3QgZW5jb2RpbmdDb3VudCA9IGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIGlmIChlbmNvZGluZ0Nv
dW50ID4gMCkgewogICAgICAgICBTdHJpbmcgZW5jb2RpbmcxID0gZGF0YS0+bV9yZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVswXTsKQEAgLTcwLDYgKzcxLDcg
QEAgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdQogICAgICAgICBBU1NF
UlQoZW5jb2RpbmdDb3VudCA8PSAzKTsKICAgICAgICAgcmVxdWVzdC0+c2V0UmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoZW5jb2RpbmcxLCBlbmNvZGluZzIs
IGVuY29kaW5nMyk7CiAgICAgfQorI2VuZGlmCiAgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHkoZGF0
YS0+bV9odHRwQm9keSk7CiAgICAgcmVxdWVzdC0+c2V0QWxsb3dDb29raWVzKGRhdGEtPm1fYWxs
b3dDb29raWVzKTsKICAgICByZXF1ZXN0LT5kb1BsYXRmb3JtQWRvcHQoZGF0YSk7CkBAIC04Nywx
MSArODksMTMgQEAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdAogICAg
IGRhdGEtPm1faHR0cEhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsKICAg
ICBkYXRhLT5tX3ByaW9yaXR5ID0gcHJpb3JpdHkoKTsKIAorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oV0lOKQogICAgIGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc3BvbnNlQ29udGVu
dERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKSk7CiAgICAgc2l6ZV90IGVu
Y29kaW5nQXJyYXlTaXplID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheS5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGVu
Y29kaW5nQXJyYXlTaXplOyArK2luZGV4KSB7CiAgICAgICAgIGRhdGEtPm1fcmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuYXBwZW5kKG1fcmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaW5kZXhdLmNyb3NzVGhyZWFkU3Ry
aW5nKCkpOwogICAgIH0KKyNlbmRpZgogICAgIGlmIChtX2h0dHBCb2R5KQogICAgICAgICBkYXRh
LT5tX2h0dHBCb2R5ID0gbV9odHRwQm9keS0+ZGVlcENvcHkoKTsKICAgICBkYXRhLT5tX2FsbG93
Q29va2llcyA9IG1fYWxsb3dDb29raWVzOwpAQCAtMjcxLDYgKzI3NSw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6Y2xlYXJIVFRQT3JpZ2kKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkID0gZmFsc2U7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikK
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXkoY29uc3QgU3RyaW5nJiBlbmNvZGluZzEsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcyLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nMykKIHsKICAgICB1cGRhdGVSZXNv
dXJjZVJlcXVlc3QoKTsgCkBAIC0yODYsNiArMjkxLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRSZXNwb25zZUNvbgogICAgIGlmICh1cmwoKS5wcm90b2NvbEluSFRUUEZhbWlseSgp
KQogICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KKyNlbmRpZgog
CiBGb3JtRGF0YSogUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEJvZHkoKSBjb25zdCAKIHsgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaAkocmV2aXNpb24gOTQ5MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcg
KzEwMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBodHRwQWNjZXB0
KCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJBY2NlcHQiKTsgfQogICAgICAgICB2
b2lkIHNldEhUVFBBY2NlcHQoY29uc3QgU3RyaW5nJiBodHRwQWNjZXB0KSB7IHNldEhUVFBIZWFk
ZXJGaWVsZCgiQWNjZXB0IiwgaHR0cEFjY2VwdCk7IH0KIAorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oV0lOKQorICAgICAgICAvLyBGSVhNRTogVGhpcyBzdGF0ZSBzaG91bGQgZWl0aGVy
IGJlIG1vdmVkIHRvIGEgQ0ZOZXR3b3JrLXNwZWNpZmljCisgICAgICAgIC8vIFJlc291cmNlUmVx
dWVzdCBvciBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVuY29kaW5n
MSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZzMgPSBTdHJpbmcoKSk7CisjZW5kaWYKIAogICAgICAgICBGb3JtRGF0YSogaHR0cEJvZHko
KSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBo
dHRwQm9keSk7CkBAIC0xNzQsNyArMTc4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgS1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogICAgICAgICBTdHJpbmcgbV9odHRwTWV0
aG9kOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhdGUg
c2hvdWxkIGVpdGhlciBiZSBtb3ZlZCB0byBhIENGTmV0d29yay1zcGVjaWZpYworICAgICAgICAv
LyBSZXNvdXJjZVJlcXVlc3Qgb3Igc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7
CisjZW5kaWYKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2h0dHBCb2R5OwogICAgICAgICBi
b29sIG1fYWxsb3dDb29raWVzOwogICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVl
c3RVcGRhdGVkOwpAQCAtMjA3LDcgKzIxNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwogICAgICAgICBPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQ
SGVhZGVyTWFwRGF0YT4gbV9odHRwSGVhZGVyczsKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKFdJTikKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKKyNlbmRpZgogICAgICAgICBSZWZQdHI8Rm9ybURh
dGE+IG1faHR0cEJvZHk7CiAgICAgICAgIGJvb2wgbV9hbGxvd0Nvb2tpZXM7CiAgICAgICAgIFJl
c291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7Cg==
</data>
<flag name="review"
          id="103539"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="103540"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>