<?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>6272</bug_id>
          
          <creation_ts>2005-12-28 12:52:33 -0800</creation_ts>
          <short_desc>XMLHttpRequest freezes on getting a missing document with overridden Content-Length</short_desc>
          <delta_ts>2007-01-15 10:18:17 -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>XML</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27048</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-12-28 12:52:33 -0800</bug_when>
    <thetext>Sync GET requests for missing documents freeze Safari if Content-Length header was set. When Safari un-
freezes on timeout, timeout, the request state is invalid (bogus status).

Steps to reproduce: open the attached test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27049</commentid>
    <comment_count>1</comment_count>
      <attachid>5342</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-12-28 12:53:28 -0800</bug_when>
    <thetext>Created attachment 5342
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28476</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-15 02:02:37 -0800</bug_when>
    <thetext>rdar://4409209 for NSURLConnection bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28479</commentid>
    <comment_count>3</comment_count>
      <attachid>5692</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-15 02:40:43 -0800</bug_when>
    <thetext>Created attachment 5692
proposed fix

No regression test, because the actual behavior (silently ignoring vs. throwing
an exception) is waiting to be defined in bug 6212.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28515</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-15 07:53:02 -0800</bug_when>
    <thetext>I&apos;m having trouble understanding this. The code prevents setting a Content-Length header in the request. 
which means that we send a request that will look &quot;incomplete&quot; to some servers. If the reason we freeze is 
that the server doesn&apos;t reply, then I don&apos;t think that we can blame the freeze on the ability to set that 
header. Other servers might not respond to a reqeust for other reasons.

So it seems like we should fix that &quot;request state is invalid (bogus status)&quot; issue you mentioned first, 
before we disallow this header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28516</commentid>
    <comment_count>5</comment_count>
      <attachid>5692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-15 07:56:17 -0800</bug_when>
    <thetext>Comment on attachment 5692
proposed fix

I don&apos;t think the right way to fix this bug is to disallow this header. We
might need to disallow setting the header for other reasons (compatibility with
other browsers&apos; implementations perhaps), but the loader should handles cases
where the server doesn&apos;t respond because it doesn&apos;t like our request, and
that&apos;s not specific to this header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28518</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-15 08:19:39 -0800</bug_when>
    <thetext>Actually, I&apos;ve misinterpreted what I saw in tcpdump (thought that the server replied correctly, but 
NSURLConnection didn&apos;t handle the response).

Thanks for catching this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28521</commentid>
    <comment_count>7</comment_count>
      <attachid>5699</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-15 10:04:48 -0800</bug_when>
    <thetext>Created attachment 5699
tests that use a bad local port

WinIE throws an exception in sync case, but misbehaves in async case (reaches
Completed state with status 12029).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41375</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-18 10:09:01 -0800</bug_when>
    <thetext>See &lt;http://www.w3.org/2006/webapi/track/issues/101&gt; for a discussion of expected behavior (not decided upon yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35225</commentid>
    <comment_count>9</comment_count>
      <attachid>12416</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-13 08:43:35 -0800</bug_when>
    <thetext>Created attachment 12416
proposed fix

Firefox trunk forbids a different set of headers than the draft says, so there may be some issues to discuss with the WG if we don&apos;t like what&apos;s in the draft. See &lt;http://lxr.mozilla.org/seamonkey/source/content/base/src/nsXMLHttpRequest.cpp&gt; (currently, it&apos;s &quot;host&quot;, &quot;content-length&quot;, &quot;transfer-encoding&quot;, &quot;via&quot;, &quot;upgrade&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35050</commentid>
    <comment_count>10</comment_count>
      <attachid>12416</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-14 06:20:07 -0800</bug_when>
    <thetext>Comment on attachment 12416
proposed fix

+        void loadResourceSynchronously(const ResourceRequest&amp; request, ResourceError&amp; error, ResourceResponse&amp; r, Vector&lt;char&gt;&amp; data);

Really should leave out those parameter names (&quot;request&quot;, &quot;error&quot;, &quot;r&quot;).

It&apos;s a real shame that canSetRequestHeader has to call lower on each string passed into it. Because of that, we lose much if not all of the performance advantage of using AtomicString. I could see just using a HashSet&lt;StringImpl*, CaseInsensitiveHash&lt;StringImpl*&gt; &gt; instead.

I think it&apos;s a little ugly and unnecessarily costly to have all those AtomicString globals. Instead you could just have a little helper function that makes an atomic string, adds it to the set and ref&apos;s the atomic string&apos;s impl. Like this:

    static void addString(HashSet&lt;AtomicStringImpl*&gt;&amp; set, const char* string)
    {
        AtomicString atomicString(string);
        set.add(atomicString.impl());
        atomicString.impl()-&gt;ref();
    }

    ...

    if (forbiddenHeaders.isEmpty()) {
        addString(forbiddenHeaders, &quot;accept-charset&quot;);
        ...

Where did the list of forbidden headers come from? How are you sure you have the right list?

+        // FIXME: Report a warning to the user.

We could put something on the console there. Why not do that, instead of having the FIXME?

Why not add SECURITY_ERR with this patch? Is there a risk that if after add it to DOM Core, the value will change?

There are enough questions here that I&apos;m going to say review-, but I really approve of everything in here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35051</commentid>
    <comment_count>11</comment_count>
      <attachid>12416</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-14 06:21:27 -0800</bug_when>
    <thetext>Comment on attachment 12416
proposed fix

Sorry, I meant review-.

And one more comment: I think we may need a Dashboard quirk to not raise an exception in one or both of these cases, and instead fail silently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35055</commentid>
    <comment_count>12</comment_count>
      <attachid>12426</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-14 07:29:06 -0800</bug_when>
    <thetext>Created attachment 12426
proposed fix

&gt; Really should leave out those parameter names (&quot;request&quot;, &quot;error&quot;, &quot;r&quot;).

  Done.

&gt; I could see just using a HashSet&lt;StringImpl*, CaseInsensitiveHash&lt;
&gt; StringImpl*&gt; &gt; instead.

  Changed (used String instead of StringImpl* though).

&gt; Where did the list of forbidden headers come from? How are you sure you have
&gt; the right list?

  They come from the XHR spec draft, plus Via from the Firefox implementation. As mentioned in comment 9, we may want to discuss this list on our own.

&gt; We could put something on the console there. Why not do that, instead of having
&gt; the FIXME?

  My thought was that we&apos;d need to know the script line and URL to properly log the warning. But this is a general problem elsewhere in WebCore, and logging &quot;something&quot; is indeed better. Added.

&gt; Why not add SECURITY_ERR with this patch? Is there a risk that if after add it
&gt; to DOM Core, the value will change?

  Yes, this was my concern. In Hixie&apos;s proposal, it&apos;s just has the next unused code (18), so a confict seems possible.

&gt; And one more comment: I think we may need a Dashboard quirk to not raise an
&gt; exception in one or both of these cases, and instead fail silently.

  I very much hope that it won&apos;t be needed. Unlike previous quirks that deal with coding mistakes, this would create a genuine difference in runtime error handling. Please note that blocking dangerous headers is silent per the standard anyway, so there&apos;s just the NETWORK_ERR case to worry about (admittedly, a rather significant one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35000</commentid>
    <comment_count>13</comment_count>
      <attachid>12426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-14 14:04:06 -0800</bug_when>
    <thetext>Comment on attachment 12426
proposed fix

If the code is &gt; XMLHttpRequestExceptionOffset, but &lt; NETWORK_ERR, it looks like the index into the nameTable is going to underflow. We need to add a check for values &lt; 0 to the line that gets the value from the nameTable or somehow ensure the number is not negative.

r=me (but would be nice to fix that)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34778</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-15 10:18:17 -0800</bug_when>
    <thetext>Committed revision 18863.

(In reply to comment #13)
&gt; We need to add a check
&gt; for values &lt; 0 to the line that gets the value from the nameTable or somehow
&gt; ensure the number is not negative.

  Fixed (this used to be an issue with XPath, too).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5342</attachid>
            <date>2005-12-28 12:53:28 -0800</date>
            <delta_ts>2005-12-28 12:53:28 -0800</delta_ts>
            <desc>test case</desc>
            <filename>req-hang.html</filename>
            <type>text/html</type>
            <size>468</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+VGVzdCBYbWxIdHRwUmVxdWVzdCBmcmVlemUgb24gR0VUIHdp
dGggb3ZlcnJpZGRlbiBDb250ZW50LUxlbmd0aDwvdGl0bGU+Cjxib2R5Pgo8c2NyaXB0PgoKICAg
IHRyeSB7CiAgICAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgCiAgICAg
ICAgcmVxLm9wZW4oJ0dFVCcsICdodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvbWlzc2lu
Z2cnLCBmYWxzZSk7CiAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtTGVuZ3Ro
JywgJzEnKTsKICAgICAgICByZXEuc2VuZChudWxsKTsKCiAgICAgICAgZG9jdW1lbnQud3JpdGUo
Ik9LLCBzdGF0dXM6ICIgKyByZXEuc3RhdHVzKTsKICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4KTsKICAgIH0KCjwvc2NyaXB0Pgo8L2Jv
ZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5692</attachid>
            <date>2006-01-15 02:40:43 -0800</date>
            <delta_ts>2007-01-13 08:43:35 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>6272r1_patch.txt</filename>
            <type>text/plain</type>
            <size>1418</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjEwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDYtMDEtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBueXBv
cC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSBmaXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjcy
CisgICAgICAgICAgWE1MSHR0cFJlcXVlc3QgZnJlZXplcyBvbiBnZXR0aW5nIGEgbWlzc2luZyBk
b2N1bWVudCB3aXRoIG92ZXJyaWRkZW4gQ29udGVudC1MZW5ndGguCisKKyAgICAgICAgKiBraHRt
bC9lY21hL3htbGh0dHByZXF1ZXN0LmNwcDogKEtKUzo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVl
c3RIZWFkZXIpOgorICAgICAgICBEaXNhbGxvdyBzZXR0aW5nIENvbnRlbnQtTGVuZ3RoLgorCiAy
MDA2LTAxLTE0ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IGFyZW5hLmNwcC8uaCBvdXQgb2Yga2h0bWwvbWlzYyBhbmQgaW50byBwbGF0Zm9ybS9BcmVuYS5j
cHAvaC4gIEFsc28gcmVtb3ZlZCBhbm90aGVyIHVudXNlZApJbmRleDogV2ViQ29yZS9raHRtbC9l
Y21hL3htbGh0dHByZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEv
eG1saHR0cHJlcXVlc3QuY3BwCShyZXZpc2lvbiAxMjEwNSkKKysrIFdlYkNvcmUva2h0bWwvZWNt
YS94bWxodHRwcmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw2ICs0MzAsMTEgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6YWJvcnQoKQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRS
ZXF1ZXN0SGVhZGVyKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcgJnZhbHVlKQog
eworICAvLyBGSVhNRTogPGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjIxMj4gYXNrcyB0byBpbnZlc3RpZ2F0ZSAKKyAgLy8gd2hpY2ggaGVhZGVycyBuZWVk
IHRvIGJlIGRpc2FsbG93ZWQuIEZvciBub3csIGp1c3Qgd29yayBhcm91bmQgYSBmcmVlemUgPHJk
YXI6Ly9wcm9ibGVtLzQ0MDkyMDk+LgorICBpZiAoMCA9PSBuYW1lLmxvd2VyKCkuY29tcGFyZSgi
Y29udGVudC1sZW5ndGgiKSkKKyAgICByZXR1cm47CisKICAgaWYgKHJlcXVlc3RIZWFkZXJzLmxl
bmd0aCgpID4gMCkgewogICAgIHJlcXVlc3RIZWFkZXJzICs9ICJcclxuIjsKICAgfQo=
</data>
<flag name="review"
          id="1277"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5699</attachid>
            <date>2006-01-15 10:04:48 -0800</date>
            <delta_ts>2006-01-15 10:04:48 -0800</delta_ts>
            <desc>tests that use a bad local port</desc>
            <filename>6272-local-tests.zip</filename>
            <type>application/zip</type>
            <size>1982</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">UEsDBBQACAAIAOOmLzQAAAAAAAAAAAAAAAAWABAAZ2V0LXJlZnVzZWQtYXN5bmMuaHRtbFVYDACe
jMpDeozKQ/UB9QGdVNtu2zAMfba/gvDDImOD3XQDCjROi6HrLkDbbV0G9G1QbSbWIEuuLOeyof8+
UU7SOEXXYfaDJZLn8GKSWWkreRJmJfLCfaywEk+u8SfmFgu4qeRHa+trvGuxsZBrpZxCaJWlnWWY
3epi5T5NbkRtT8IwmHNDho2W+KPCpuEzbGAMhc7bCpVNcoPc4rlEurFIyygehcFWTXwJr2tUxVkp
ZMH2ucg6DKat8oGA1DO2VsVh8DsMfADCYvUXp1J4pwGZ9ZztASa4tFe6wK0Hj9qPqMdAlGR1H+4E
2VhHdsUrZHMuY3BRAogpMIN3iXNUrL6RAYzHcBCTLjBoW6Mg+q6EElZwKX5hEY1Ih7LBJ8DDPvhC
80Ko2bOww8ewf3D2uo/6pCwa7tKd47PQN33oma5qiXbXJ30BNganp6dRV1KSWrOiCgbEvRCq0Ivk
5vJip099gQNHf+daQOEC+mrmf+J9F6C33DDuYt76VG4+39IosOiyWVby0DuaTL503eM4cm7zEhgu
42cJRG50o6d2n4Ni8XnRsz1Q0bTyZfPNk5dczVzxoDY6d33na3nmhaM+yLUiG3w4nwxewaB0WR+n
6fDwKDlw7/B4eOTE1rQYjyBNYXgEooHoa6vdj9FTsCXCO76KeoyN622mWildwF6xl/bGdjs7C+OG
gEXnyxxr3/4RvARcJsoNgDtFI1BtdYtmvJH7G2mAkYg9yF7AwfK9e2LSupjXIzcerKHrO2kHVFAf
3u7kPS4Xi58av8xPQkAbJXpc+2OfxsMk98F+M2x69z8pKIsE6Nw2nakvv793KyVLN3s2S9eLN+0W
+B9QSwcIV068V2oCAADIBQAAUEsDBAoAAAAAAPWmLzQAAAAAAAAAAAAAAAAJABAAX19NQUNPU1gv
VVgMAJ6MykOejMpD9QH1AVBLAwQUAAgACADjpi80AAAAAAAAAAAAAAAAIQAQAF9fTUFDT1NYLy5f
Z2V0LXJlZnVzZWQtYXN5bmMuaHRtbFVYDACejMpDeozKQ/UB9QFjYBVjZ2BiwAQgMU4gNgJiBSg/
CCQR4hoRohiUnIFFDxgAAFBLBwhG2fANIwAAAFIAAABQSwMEFAAIAAgA7KIvNAAAAAAAAAAAAAAA
ABAAEAByZXEtcmVmdXNlZC5odG1sVVgMAJ6MykMLhcpD9QH1AY1U32+bMBB+hr/i5IcB2gQhmxQp
gUTT1v2Q2m7rMimvDhzFE9gEm4Zs6v9e20na0KnKzIN99933ne9sk5SqruZuUiLN9aSYqnB+g78x
U5jDqq6+KNXc4KZDqSATnGuACZ5E+0g3WYt8pyeZtaxRc9d1io7bEJCKKrymNfp3tArgr+sAsAL8
Fjdhq9PtfpoASFMYBQZzWlRdy4H84owzxWjF/mBOZgbDSuIL5HhIvhQ0Z/z2LG38L+0/kr0dsr5y
hS3V5d7hWeq7IfWDqJsK1WlOMwMcAxaLhYHuXdd4VbszHXSM9pbxXGzD1dXlyeHYBjtafgMpcNzC
EPYDreXc7zdoI4+Kp5z3tpTVt7U5f59cyb6uxjbRcvmdWAmtkVGVleBjH5wVYFkrpCjUcw2zF1uX
GY8L0zTRIPe9zxdL7w14pS5gGkXxeBKO9BdP44l2F1QXEcwgiiCeAJNAfnRCN1kUoEqEj3RHBpIS
ee7zrqp08kcgF1lXI1fhtmUK/afLOjy5AF4DCcGsOzkFok0raW2tN6jhWWteSEUu+gwb+0SMHPYh
13lNnhnwrl5jmx791jII+MblP/lewaj/pIfdn+5FjVLSW0y9A/VgG9Qjh33qq5REx4eaRIeXG+3/
AA9QSwcI7ZeNUd4BAAAJBAAAUEsDBBQACAAIAOyiLzQAAAAAAAAAAAAAAAAbABAAX19NQUNPU1gv
Ll9yZXEtcmVmdXNlZC5odG1sVVgMAJ6MykMLhcpD9QH1AWNgFWNnYGLABCAxTiA2AmIFKD8IJBHi
GhGCRT0cAABQSwcIwc1lhR8AAABSAAAAUEsBAhUDFAAIAAgA46YvNFdOvFdqAgAAyAUAABYADAAA
AAAAAAAAQKSBAAAAAGdldC1yZWZ1c2VkLWFzeW5jLmh0bWxVWAgAnozKQ3qMykNQSwECFQMKAAAA
AAD1pi80AAAAAAAAAAAAAAAACQAMAAAAAAAAAABA/UG+AgAAX19NQUNPU1gvVVgIAJ6MykOejMpD
UEsBAhUDFAAIAAgA46YvNEbZ8A0jAAAAUgAAACEADAAAAAAAAAAAQKSB9QIAAF9fTUFDT1NYLy5f
Z2V0LXJlZnVzZWQtYXN5bmMuaHRtbFVYCACejMpDeozKQ1BLAQIVAxQACAAIAOyiLzTtl41R3gEA
AAkEAAAQAAwAAAAAAAAAAECkgXcDAAByZXEtcmVmdXNlZC5odG1sVVgIAJ6MykMLhcpDUEsBAhUD
FAAIAAgA7KIvNMHNZYUfAAAAUgAAABsADAAAAAAAAAAAQKSBowUAAF9fTUFDT1NYLy5fcmVxLXJl
ZnVzZWQuaHRtbFVYCACejMpDC4XKQ1BLBQYAAAAABQAFAI0BAAAbBgAAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12416</attachid>
            <date>2007-01-13 08:43:35 -0800</date>
            <delta_ts>2007-01-14 07:29:06 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>6272r2_patch.txt</filename>
            <type>text/plain</type>
            <size>19155</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4ODMyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDctMDEtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzIK
KyAgICAgICAgWE1MSHR0cFJlcXVlc3QgZnJlZXplcyBvbiBnZXR0aW5nIGEgbWlzc2luZyBkb2N1
bWVudCB3aXRoIG92ZXJyaWRkZW4gQ29udGVudC1MZW5ndGgKKworICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjEyCisgICAgICAgIEludmVzdGlnYXRlIGRp
c2FsbG93aW5nIHNvbWUgWE1MSHR0cFJlcXVlc3QgaGVhZGVycyBmcm9tIGJlaW5nIHNldCB2aWEg
c2V0UmVxdWVzdEhlYWRlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
Y29ubmVjdGlvbi1lcnJvci1zeW5jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb25uZWN0aW9uLWVycm9yLXN5bmMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvaW5maW5pdGUt
bG9vcC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL3ByaW50LWhlYWRlcnMuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3NldC1kYW5nZXJvdXMtaGVhZGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJz
Lmh0bWw6IEFkZGVkLgorCiAyMDA3LTAxLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBoeWF0dC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvY29ubmVjdGlvbi1lcnJvci1zeW5jLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nvbm5l
Y3Rpb24tZXJyb3Itc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGUgYmVoYXZpb3Igb2Yg
YSBzeW5jIFhNTEh0dHBSZXF1ZXN0IHRoYXQgZW5jb3VudGVycyBhbiBpbmZpbml0ZSByZWRpcmVj
dGlvbiBsb29wLgorCitFeGNlcHRpb24gRXJyb3I7IGNvZGU9MTAxOyBudW1iZXI9dW5kZWZpbmVk
ICgwKTsgbWVzc2FnZT0nTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDEn
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0
aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb25uZWN0
aW9uLWVycm9yLXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb25uZWN0aW9uLWVycm9y
LXN5bmMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4K
Kzxib2R5PgorPHA+VGVzdCB0aGUgYmVoYXZpb3Igb2YgYSBzeW5jIFhNTEh0dHBSZXF1ZXN0IHRo
YXQgZW5jb3VudGVycyBhbiBpbmZpbml0ZSByZWRpcmVjdGlvbiBsb29wLjwvcD4KKzxzY3JpcHQ+
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB0cnkgeworCQlpZiAod2luZG93LlhN
TEh0dHBSZXF1ZXN0KSB7CisJCQlyZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKwkJfSBlbHNl
IHsKKwkJCXRyeSB7CisJCQkJcmVxID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQ
Iik7CisJCQl9IGNhdGNoIChleCkgeworCQkJCXJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNy
b3NvZnQuWE1MSFRUUCIpOworCQkJfQorCQl9CisgICAgICAgIAorICAgICAgICByZXEub3Blbign
R0VUJywgJ3Jlc291cmNlcy9pbmZpbml0ZS1sb29wLnBocCcsIGZhbHNlKTsKKyAgICAgICAgcmVx
LnNlbmQobnVsbCk7CisKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIlN0YXR1czogIiArIHJlcS5z
dGF0dXMpOworICAgICAgICAKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBkb2N1bWVudC53
cml0ZSgiRXhjZXB0aW9uICIgKyBleC5uYW1lICsgIjsgY29kZT0iICsgZXguY29kZSArICI7IG51
bWJlcj0iICsgZXgubnVtYmVyICsgIiAoIiArIChleC5udW1iZXIgJiAweEZGRkYpICsgIik7IG1l
c3NhZ2U9JyIgKyBleC5tZXNzYWdlICsgIiciKTsKKyAgICB9CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9jb25uZWN0aW9uLWVycm9yLXN5bmMuaHRtbApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NldC1kYW5nZXJvdXMtaGVhZGVycy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFu
Z2Vyb3VzLWhlYWRlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRlcnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1Rlc3QgdGhhdCBzZXRSZXF1ZXN0SGVh
ZGVyIGNhbm5vdCBiZSB1c2VkIHRvIGFsdGVyIHNlY3VyaXR5LXNlbnNpdGl2ZSBoZWFkZXJzLgor
CitTVUNDRVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLWV4cGVjdGVkLnR4dApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5
bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3NldC1kYW5nZXJvdXMtaGVhZGVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1k
YW5nZXJvdXMtaGVhZGVycy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8aHRt
bD4KKzxib2R5PgorPHA+VGVzdCB0aGF0IHNldFJlcXVlc3RIZWFkZXIgY2Fubm90IGJlIHVzZWQg
dG8gYWx0ZXIgc2VjdXJpdHktc2Vuc2l0aXZlIGhlYWRlcnMuPC9wPgorPHByZSBpZD1yZXN1bHQ+
RkFJTDogc2NyaXB0IGRpZG4ndCBydW4gb3IgcmFpc2VkIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9u
LjwvcHJlPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgcmVx
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3By
aW50LWhlYWRlcnMuY2dpIiwgZmFsc2UpOworCisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkFD
Q0VQVC1DSEFSU0VUIiwgImZvb2JhciIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJBQ0NF
UFQtRU5DT0RJTkciLCAiZm9vYmFyIik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkNPTlRF
TlQtTEVOR1RIIiwgIjEyMzQ1NiIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJFWFBFQ1Qi
LCAiMTAwLWNvbnRpbnVlIik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkRBVEUiLCAiZm9v
YmFyIik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkhPU1QiLCAiZm9vYmFyIik7CisgICAg
cmVxLnNldFJlcXVlc3RIZWFkZXIoIktFRVAtQUxJVkUiLCAiZm9vYmFyIik7CisgICAgcmVxLnNl
dFJlcXVlc3RIZWFkZXIoIlJFRkVSRVIiLCAiZm9vYmFyIik7CisgICAgcmVxLnNldFJlcXVlc3RI
ZWFkZXIoIlRFIiwgImZvb2JhciIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJUUkFJTEVS
IiwgImZvb2JhciIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJUUkFOU0ZFUi1FTkNPRElO
RyIsICJmb29iYXIiKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiVVBHUkFERSIsICJmb29i
YXIiKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiVklBIiwgImZvb2JhciIpOworCisgICAg
dHJ5IHsKKyAgICAgICAgcmVxLnNlbmQoIiIpOworICAgICAgICBpZiAocmVxLnJlc3BvbnNlVGV4
dC5tYXRjaCgiMTAwLWNvbnRpbnVlfGZvb2JhcnwxMjM0NTYiKSkKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IHJlcS5yZXNwb25zZVRl
eHQ7CisgICAgICAgIGVsc2UKKwkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50
ZXh0Q29udGVudCA9ICJTVUNDRVNTIjsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBleDsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvaW5maW5pdGUtbG9v
cC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMvaW5maW5pdGUtbG9vcC5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9pbmZpbml0ZS1sb29wLnBocAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACis8P3BocAorICBoZWFkZXIoJ0hUVFAvMS4wIDMw
MiBGb3VuZCcpOworICBoZWFkZXIoJ0xvY2F0aW9uOiBpbmZpbml0ZS1sb29wLnBocCcpOworPz4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3By
aW50LWhlYWRlcnMuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWhlYWRlcnMuY2dpCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtaGVh
ZGVycy5jZ2kJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vcGVybCAt
d1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7Citw
cmludCAiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmVcblxuIjsKKworZm9yZWFjaCAoa2V5cyAlRU5W
KSB7CisgICAgaWYgKCRfID1+ICJIVFRQXyIpIHsKKyAgICAgICAgcHJpbnQgJF8gLiAiOiAiIC4g
JEVOVnskX30gLiAiXG4iOworICAgIH0KK30KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWhlYWRlcnMuY2dp
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCk5hbWU6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODgzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMDctMDEtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzIK
KyAgICAgICAgWE1MSHR0cFJlcXVlc3QgZnJlZXplcyBvbiBnZXR0aW5nIGEgbWlzc2luZyBkb2N1
bWVudCB3aXRoIG92ZXJyaWRkZW4gQ29udGVudC1MZW5ndGgKKworICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjEyCisgICAgICAgIEludmVzdGlnYXRlIGRp
c2FsbG93aW5nIHNvbWUgWE1MSHR0cFJlcXVlc3QgaGVhZGVycyBmcm9tIGJlaW5nIHNldCB2aWEg
c2V0UmVxdWVzdEhlYWRlci4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgLSBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy5odG1sCisgICAgICAgIC0gaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRlcnMuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjopOgorICAg
ICAgICAoS0pTOjpzZXRET01FeGNlcHRpb24pOiBBZGRlZCBzdXBwb3J0IGZvciBORVRXT1JLX0VS
Ui4gQ2hhbmdlZCB0aGUgdGVtcG9yYXJ5IAorICAgICAgICBQRVJNSVNTSU9OX0RFTklFRCBlcnJv
ciBpbnRvIGEgc3BlY2lhbCBjYXNlLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgUmV0dXJuIHRo
ZSBlcnJvciBvYmplY3QgdG8gdGhlIGNhbGxlci4gUmVtb3ZlZCBhbiBleHRyYSBsb2NhbCB2YXJp
YWJsZSBmb3IgZXJyb3IsIAorICAgICAgICB3aGljaCBzaGFkb3dlZCB0aGUgb25lIGZyb20gZW5j
bG9zaW5nIGJsb2NrLgorCisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpvcGVuRnVuYyk6IAorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOiAKKyAgICAgICAgVXBkYXRlZCB0byBw
YXNzIGFuIGVycm9yIG9iamVjdCAoY3VycmVudGx5IGlnbm9yZWQpLgorCisgICAgICAgICogeG1s
L3htbGh0dHByZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhblNldFJlcXVlc3RIZWFk
ZXIpOiBBZGRlZC4gVGhlIGhlYWRlcnMgdG8gYmxvY2sgaW5jbHVkZSB0aGUgb25lcyBmcm9tIAor
ICAgICAgICB0aGUgY3VycmVudCBYTUxIdHRwUmVxdWVzdCBkcmFmdCBwbHVzICJWaWEiLCB3aGlj
aCBpcyBibG9ja2VkIGJ5IEZpcmVmb3guCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6c2VuZCk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhIHN5bmMgcmVxdWVzdCByZXN1bHRzIGlu
IAorICAgICAgICBhbiBlcnJvci4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpz
ZXRSZXF1ZXN0SGVhZGVyKTogQ2FsbCBjYW5TZXRSZXF1ZXN0SGVhZGVyKCkuCisgICAgICAgICog
eG1sL3htbGh0dHByZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjopOiBBZGRlZCBORVRXT1JL
X0VSUiBhbmQgYSBjb21tZW50IGFib3V0IFBFUk1JU1NJT05fREVOSUVELgorCiAyMDA3LTAxLTEz
ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TWFjaWVqCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTg4
MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUzLDcgKzM1Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBldmVudEV4Y2Vw
dGlvbk4KIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB4bWxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbk5hbWVzW10gPSB7Ci0gICAgIlBlcm1pc3Npb24gZGVuaWVkIgorICAgICJORVRXT1JLX0VS
UiIKIH07CiAKICNpZmRlZiBYUEFUSF9TVVBQT1JUCkBAIC0zOTUsMTUgKzM5NSwxNyBAQCB2b2lk
IHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4CiAgICAgICAgIG5hbWVJbmRleCA9
IGNvZGU7CiAgICAgICAgIG5hbWVUYWJsZSA9IGV2ZW50RXhjZXB0aW9uTmFtZXM7CiAgICAgICAg
IG5hbWVUYWJsZVNpemUgPSBzaXplb2YoZXZlbnRFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXZl
bnRFeGNlcHRpb25OYW1lc1swXSk7Ci0gICAgfSBlbHNlIGlmIChjb2RlID49IFhNTEh0dHBSZXF1
ZXN0RXhjZXB0aW9uT2Zmc2V0ICYmIGNvZGUgPD0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25NYXgp
IHsKLSAgICAgICAgLy8gWE1MSHR0cFJlcXVlc3QgY2FzZSBpcyBzcGVjaWFsLCBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGV4Y2VwdGlvbiBjb2RlIGFzc2lnbmVkICh5ZXQ/KS4KKyAgICB9IGVsc2UgaWYg
KGNvZGUgPT0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQpIHsKKyAgICAgICAgLy8gRklY
TUU6IHRoaXMgZXhjZXB0aW9uIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIERPTSBTRUNVUklUWV9F
UlIgd2hlbiBpdCBmaW5kcyBpdHMgd2F5IHRvIHRoZSBzcGVjLgorICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIEdlbmVyYWxFcnJvciwgIlBlcm1pc3Npb24gZGVuaWVkIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9IGVsc2UgaWYgKGNvZGUgPiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCAm
JiBjb2RlIDw9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uTWF4KSB7CisgICAgICAgIHR5cGUgPSAi
WE1MSHR0cFJlcXVlc3QiOworICAgICAgICAvLyBYTUxIdHRwUmVxdWVzdCBleGNlcHRpb24gY29k
ZXMgc3RhcnQgd2l0aCAxMDEgYW5kIHdlIGRvbid0IHdhbnQgMTAwIGVtcHR5IGVsZW1lbnRzIGlu
IHRoZSBuYW1lIGFycmF5CisgICAgICAgIG5hbWVJbmRleCA9IGNvZGUgLSBORVRXT1JLX0VSUjsK
ICAgICAgICAgY29kZSAtPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldDsKLSAgICAgICAg
bmFtZUluZGV4ID0gY29kZTsKICAgICAgICAgbmFtZVRhYmxlID0geG1sSHR0cFJlcXVlc3RFeGNl
cHRpb25OYW1lczsKICAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZih4bWxIdHRwUmVxdWVz
dEV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzWzBd
KTsKLQotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIEdlbmVyYWxFcnJvciwgbmFtZUluZGV4IDwg
bmFtZVRhYmxlU2l6ZSA/IG5hbWVUYWJsZVtuYW1lSW5kZXhdIDogMCk7Ci0gICAgICAgIHJldHVy
bjsKICNpZmRlZiBYUEFUSF9TVVBQT1JUCiAgICAgfSBlbHNlIGlmIChjb2RlID49IFhQYXRoRXhj
ZXB0aW9uT2Zmc2V0ICYmIGNvZGUgPD0gWFBhdGhFeGNlcHRpb25NYXgpIHsKICAgICAgICAgdHlw
ZSA9ICJET00gWFBhdGgiOwpJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxODgzMCkK
KysrIFdlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Mywx
MSArMzczLDEyIEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAg
aWYgKCFnbG9iYWxEb2NMb2FkZXIgfHwgIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHVyaSkpCiAg
ICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAorICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0
YTsKICAgICAKICAgICBpZiAoZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgpKSAKLSAgICAgICAgZ2xv
YmFsRG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShLVVJMKHVyaSksIHJlc3BvbnNlLCBkYXRhKTsKKyAgICAgICAgZ2xvYmFsRG9jTG9hZGVyLT5m
cmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShLVVJMKHVyaSksIGVy
cm9yLCByZXNwb25zZSwgZGF0YSk7CiAKICAgICByZXR1cm4gbmV3IE9mZnNldEJ1ZmZlcihkYXRh
KTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4ODMwKQorKysgV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTY5LDcgKzI5
NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRW1wdHlEb2N1bWVudFN5bmNoCiAgICAgbG9h
ZChyZXF1ZXN0KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCiB7CiAgICAgLy8gU2luY2UgdGhpcyBpcyBhIHN1YnJlc291cmNlLCB3ZSBjYW4gbG9hZCBh
bnkgVVJMICh3ZSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSkuCiAgICAgLy8gQnV0IHdlIHN0aWxs
IHdhbnQgdG8ga25vdyB3aGV0aGVyIHdlIHNob3VsZCBoaWRlIHRoZSByZWZlcnJlciBvciBub3Qs
IHNvIHdlIGNhbGwgdGhlIGNhbkxvYWQgbWV0aG9kLgpAQCAtMjk5MywxNyArMjk5MywxMyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91CiAgICAgaW5pdGlhbFJlcXVl
c3Quc2V0TWFpbkRvY3VtZW50VVJMKG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJsKCkpOwogICAgIGluaXRpYWxSZXF1
ZXN0LnNldEhUVFBVc2VyQWdlbnQoY2xpZW50KCktPnVzZXJBZ2VudCgpKTsKICAgICAKLSAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IDA7ICAg
IAogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0KGluaXRpYWxSZXF1ZXN0KTsKICAgICBy
ZXF1ZXN0RnJvbURlbGVnYXRlKG5ld1JlcXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKIAogICAg
IGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxs
KCkpOwotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwotICAgICAgICAKICAgICAgICAgZGlk
VGVsbEJyaWRnZUFib3V0TG9hZChuZXdSZXF1ZXN0LnVybCgpLnVybCgpKTsKLQogICAgICAgICBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogICAgIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAko
cmV2aXNpb24gMTg4MzApCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IEZyYW1lKiBjcmVhdGVXaW5kb3coY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRv
d0ZlYXR1cmVzJik7CiAKLSAgICAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYgciwgVmVjdG9y
PGNoYXI+JiBkYXRhKTsKKyAgICAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHIsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICAgICAgYm9vbCBjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCkluZGV4OiBXZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yLmNwcAkocmV2aXNpb24gMTg4MzApCisrKyBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xv
YWRlckZ1bmMoY29uc3QgeG1sCiAgICAgICAgICAgICB4bWxDaGFyICpiYXNlID0geG1sTm9kZUdl
dEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7CiAgICAgICAgICAg
ICBLVVJMIHVybCgoY29uc3QgY2hhciopYmFzZSwgKGNvbnN0IGNoYXIqKXVyaSk7CiAgICAgICAg
ICAgICB4bWxGcmVlKGJhc2UpOworICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAg
ICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgICAgICAgICB4bWxHZW5l
cmljRXJyb3JGdW5jIG9sZEVycm9yRnVuYyA9IHhtbEdlbmVyaWNFcnJvcjsKICAgICAgICAgICAg
IHZvaWQgKm9sZEVycm9yQ29udGV4dCA9IHhtbEdlbmVyaWNFcnJvckNvbnRleHQ7CkBAIC05Niw3
ICs5Nyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKICAgICAg
ICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGdsb2JhbERvY0xvYWRlci0+ZnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgZ2xvYmFsRG9j
TG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh1cmws
IHJlc3BvbnNlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxEb2NMb2FkZXItPmZyYW1l
KCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHVybCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKIAogICAgICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCBwYXJz
ZUVycm9yRnVuYyk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFuIGVuY29kaW5n
IGhlcmUuIE5laXRoZXIgR2Vja28gbm9yIFdpbklFIHJlc3BlY3RzCkluZGV4OiBXZWJDb3JlL3ht
bC94bWxodHRwcmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwveG1saHR0cHJl
cXVlc3QuY3BwCShyZXZpc2lvbiAxODgzMCkKKysrIFdlYkNvcmUveG1sL3htbGh0dHByZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQWxleGV5
IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgorICogIENvcHlyaWdodCAoQykgMjAwNS0yMDA3
IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0xNDEsNiArMTQxLDQzIEBAIHN0YXRpYyBTdHJpbmcgZ2V0Q2hhcnNldChjb25zdCBTdHJp
bmcmIGMKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBib29sIGNhblNldFJlcXVl
c3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiBmb3JiaWRkZW5IZWFkZXJzOworICAgIAorICAgIGlmIChmb3JiaWRkZW5I
ZWFkZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGFjY2VwdENo
YXJzZXRIZWFkZXIoImFjY2VwdC1jaGFyc2V0Iik7CisgICAgICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgYWNjZXB0RW5jb2RpbmdIZWFkZXIoImFjY2VwdC1lbmNvZGluZyIpOworICAgICAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGNvbnRlbnRMZW5ndGhIZWFkZXIoImNvbnRlbnQtbGVuZ3RoIik7Cisg
ICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZXhwZWN0SGVhZGVyKCJleHBlY3QiKTsKKyAgICAg
ICAgc3RhdGljIEF0b21pY1N0cmluZyBkYXRlSGVhZGVyKCJkYXRlIik7CisgICAgICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgaG9zdEhlYWRlcigiaG9zdCIpOworICAgICAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGtlZXBBbGl2ZUhlYWRlcigia2VlcC1hbGl2ZSIpOworICAgICAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHJlZmVyZXJIZWFkZXIoInJlZmVyZXIiKTsKKyAgICAgICAgc3RhdGljIEF0b21p
Y1N0cmluZyB0ZUhlYWRlcigidGUiKTsKKyAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0cmFp
bGVySGVhZGVyKCJ0cmFpbGVyIik7CisgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdHJhbnNm
ZXJFbmNvZGluZ0hlYWRlcigidHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICAgICAgc3RhdGljIEF0
b21pY1N0cmluZyB1cGdyYWRlSGVhZGVyKCJ1cGdyYWRlIik7CisgICAgICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgdmlhSGVhZGVyKCJ2aWEiKTsKKworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFk
ZChhY2NlcHRDaGFyc2V0SGVhZGVyLmltcGwoKSk7CisgICAgICAgIGZvcmJpZGRlbkhlYWRlcnMu
YWRkKGFjY2VwdEVuY29kaW5nSGVhZGVyLmltcGwoKSk7CisgICAgICAgIGZvcmJpZGRlbkhlYWRl
cnMuYWRkKGNvbnRlbnRMZW5ndGhIZWFkZXIuaW1wbCgpKTsKKyAgICAgICAgZm9yYmlkZGVuSGVh
ZGVycy5hZGQoZXhwZWN0SGVhZGVyLmltcGwoKSk7CisgICAgICAgIGZvcmJpZGRlbkhlYWRlcnMu
YWRkKGRhdGVIZWFkZXIuaW1wbCgpKTsKKyAgICAgICAgZm9yYmlkZGVuSGVhZGVycy5hZGQoaG9z
dEhlYWRlci5pbXBsKCkpOworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZChrZWVwQWxpdmVI
ZWFkZXIuaW1wbCgpKTsKKyAgICAgICAgZm9yYmlkZGVuSGVhZGVycy5hZGQocmVmZXJlckhlYWRl
ci5pbXBsKCkpOworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCh0ZUhlYWRlci5pbXBsKCkp
OworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCh0cmFpbGVySGVhZGVyLmltcGwoKSk7Cisg
ICAgICAgIGZvcmJpZGRlbkhlYWRlcnMuYWRkKHRyYW5zZmVyRW5jb2RpbmdIZWFkZXIuaW1wbCgp
KTsKKyAgICAgICAgZm9yYmlkZGVuSGVhZGVycy5hZGQodXBncmFkZUhlYWRlci5pbXBsKCkpOwor
ICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCh2aWFIZWFkZXIuaW1wbCgpKTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuICFmb3JiaWRkZW5IZWFkZXJzLmNvbnRhaW5zKEF0b21pY1N0cmluZyhu
YW1lLmxvd2VyKCkpLmltcGwoKSk7Cit9CisKIFhNTEh0dHBSZXF1ZXN0U3RhdGUgWE1MSHR0cFJl
cXVlc3Q6OmdldFJlYWR5U3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXRlOwpAQCAt
NDAwLDE3ICs0MzcsMjEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZChjb25zdCBTdHJpbmcm
IAogCiAgICAgaWYgKCFtX2FzeW5jKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIGF2b2lkIGRlYWRsb2NrIGluIGNhc2Ug
dGhlIGxvYWRlciB3YW50cyB0byB1c2UgSlMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZAogICAgICAg
ICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wTG9ja3M7CiAgICAgICAgICAgICBp
ZiAobV9kb2MtPmZyYW1lKCkpIAotICAgICAgICAgICAgICAgIG1fZG9jLT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCByZXNwb25zZSwgZGF0YSk7
CisgICAgICAgICAgICAgICAgbV9kb2MtPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgIH0K
IAogICAgICAgICBtX2xvYWRlciA9IDA7Ci0gICAgICAgIHByb2Nlc3NTeW5jTG9hZFJlc3VsdHMo
ZGF0YSwgcmVzcG9uc2UpOworICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAg
ICBwcm9jZXNzU3luY0xvYWRSZXN1bHRzKGRhdGEsIHJlc3BvbnNlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZWMgPSBORVRXT1JLX0VSUjsKICAgICAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTQ2Niw2ICs1MDcsMTEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhl
YWRlcihjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFjYW5TZXRSZXF1ZXN0
SGVhZGVyKG5hbWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgYSB3YXJuaW5nIHRvIHRo
ZSB1c2VyLgorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFtX3JlcXVlc3RIZWFk
ZXJzLmNvbnRhaW5zKG5hbWUpKSB7CiAgICAgICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KG5hbWUs
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS94bWwveG1saHR0cHJlcXVl
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC94bWxodHRwcmVxdWVzdC5oCShyZXZpc2lv
biAxODgzMCkKKysrIFdlYkNvcmUveG1sL3htbGh0dHByZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDggKzQ0LDExIEBAIGNsYXNzIFN0cmluZzsKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKIGNvbnN0IGludCBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCA9IDUwMDsKLWNv
bnN0IGludCBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk1heCA9IDU5OTsKLWVudW0gWE1MSHR0cFJl
cXVlc3RFeGNlcHRpb25Db2RlIHsgUEVSTUlTU0lPTl9ERU5JRUQgPSBYTUxIdHRwUmVxdWVzdEV4
Y2VwdGlvbk9mZnNldCB9OworY29uc3QgaW50IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uTWF4ID0g
Njk5OworZW51bSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbkNvZGUgeworICAgIFBFUk1JU1NJT05f
REVOSUVEID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQsIC8vIFVzZSBTRUNVUklUWV9F
UlIgd2hlbiB0aGF0J3MgaW4gRE9NIENvcmUsIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMTgyCisgICAgTkVUV09SS19FUlIgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlv
bk9mZnNldCArIDEwMQorfTsKIAogLy8gdGhlc2UgZXhhY3QgbnVtZXJpYyB2YWx1ZXMgYXJlIGlt
cG9ydGFudCBiZWNhdXNlIEpTIGV4cGVjdHMgdGhlbQogZW51bSBYTUxIdHRwUmVxdWVzdFN0YXRl
IHsK
</data>
<flag name="review"
          id="4672"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12426</attachid>
            <date>2007-01-14 07:29:06 -0800</date>
            <delta_ts>2007-01-14 14:04:06 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>6272r3_patch.txt</filename>
            <type>text/plain</type>
            <size>18656</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4ODM5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDctMDEtMTQgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzIK
KyAgICAgICAgWE1MSHR0cFJlcXVlc3QgZnJlZXplcyBvbiBnZXR0aW5nIGEgbWlzc2luZyBkb2N1
bWVudCB3aXRoIG92ZXJyaWRkZW4gQ29udGVudC1MZW5ndGgKKworICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjEyCisgICAgICAgIEludmVzdGlnYXRlIGRp
c2FsbG93aW5nIHNvbWUgWE1MSHR0cFJlcXVlc3QgaGVhZGVycyBmcm9tIGJlaW5nIHNldCB2aWEg
c2V0UmVxdWVzdEhlYWRlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
Y29ubmVjdGlvbi1lcnJvci1zeW5jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb25uZWN0aW9uLWVycm9yLXN5bmMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvaW5maW5pdGUt
bG9vcC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL3ByaW50LWhlYWRlcnMuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3NldC1kYW5nZXJvdXMtaGVhZGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJz
Lmh0bWw6IEFkZGVkLgorCiAyMDA3LTAxLTE0ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWl0ei4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvY29ubmVjdGlvbi1lcnJvci1zeW5jLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nvbm5lY3Rp
b24tZXJyb3Itc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGUgYmVoYXZpb3Igb2YgYSBz
eW5jIFhNTEh0dHBSZXF1ZXN0IHRoYXQgZW5jb3VudGVycyBhbiBpbmZpbml0ZSByZWRpcmVjdGlv
biBsb29wLgorCitFeGNlcHRpb24gRXJyb3I7IGNvZGU9MTAxOyBudW1iZXI9dW5kZWZpbmVkICgw
KTsgbWVzc2FnZT0nTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDEnCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZl
CgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb25uZWN0aW9u
LWVycm9yLXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb25uZWN0aW9uLWVycm9yLXN5
bmMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxi
b2R5PgorPHA+VGVzdCB0aGUgYmVoYXZpb3Igb2YgYSBzeW5jIFhNTEh0dHBSZXF1ZXN0IHRoYXQg
ZW5jb3VudGVycyBhbiBpbmZpbml0ZSByZWRpcmVjdGlvbiBsb29wLjwvcD4KKzxzY3JpcHQ+CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB0cnkgeworCQlpZiAod2luZG93LlhNTEh0
dHBSZXF1ZXN0KSB7CisJCQlyZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKwkJfSBlbHNlIHsK
KwkJCXRyeSB7CisJCQkJcmVxID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7
CisJCQl9IGNhdGNoIChleCkgeworCQkJCXJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3Nv
ZnQuWE1MSFRUUCIpOworCQkJfQorCQl9CisgICAgICAgIAorICAgICAgICByZXEub3BlbignR0VU
JywgJ3Jlc291cmNlcy9pbmZpbml0ZS1sb29wLnBocCcsIGZhbHNlKTsKKyAgICAgICAgcmVxLnNl
bmQobnVsbCk7CisKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIlN0YXR1czogIiArIHJlcS5zdGF0
dXMpOworICAgICAgICAKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBkb2N1bWVudC53cml0
ZSgiRXhjZXB0aW9uICIgKyBleC5uYW1lICsgIjsgY29kZT0iICsgZXguY29kZSArICI7IG51bWJl
cj0iICsgZXgubnVtYmVyICsgIiAoIiArIChleC5udW1iZXIgJiAweEZGRkYpICsgIik7IG1lc3Nh
Z2U9JyIgKyBleC5tZXNzYWdlICsgIiciKTsKKyAgICB9CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9jb25uZWN0aW9uLWVycm9yLXN5bmMuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3NldC1kYW5nZXJvdXMtaGVhZGVycy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vy
b3VzLWhlYWRlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRlcnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1Rlc3QgdGhhdCBzZXRSZXF1ZXN0SGVhZGVy
IGNhbm5vdCBiZSB1c2VkIHRvIGFsdGVyIHNlY3VyaXR5LXNlbnNpdGl2ZSBoZWFkZXJzLgorCitT
VUNDRVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLWV4cGVjdGVkLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUK
ICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3NldC1kYW5nZXJvdXMtaGVhZGVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1kYW5n
ZXJvdXMtaGVhZGVycy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8aHRtbD4K
Kzxib2R5PgorPHA+VGVzdCB0aGF0IHNldFJlcXVlc3RIZWFkZXIgY2Fubm90IGJlIHVzZWQgdG8g
YWx0ZXIgc2VjdXJpdHktc2Vuc2l0aXZlIGhlYWRlcnMuPC9wPgorPHByZSBpZD1yZXN1bHQ+RkFJ
TDogc2NyaXB0IGRpZG4ndCBydW4gb3IgcmFpc2VkIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLjwv
cHJlPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgcmVxID0g
bmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3ByaW50
LWhlYWRlcnMuY2dpIiwgZmFsc2UpOworCisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkFDQ0VQ
VC1DSEFSU0VUIiwgImZvb2JhciIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJBQ0NFUFQt
RU5DT0RJTkciLCAiZm9vYmFyIik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkNPTlRFTlQt
TEVOR1RIIiwgIjEyMzQ1NiIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJFWFBFQ1QiLCAi
MTAwLWNvbnRpbnVlIik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkRBVEUiLCAiZm9vYmFy
Iik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIkhPU1QiLCAiZm9vYmFyIik7CisgICAgcmVx
LnNldFJlcXVlc3RIZWFkZXIoIktFRVAtQUxJVkUiLCAiZm9vYmFyIik7CisgICAgcmVxLnNldFJl
cXVlc3RIZWFkZXIoIlJFRkVSRVIiLCAiZm9vYmFyIik7CisgICAgcmVxLnNldFJlcXVlc3RIZWFk
ZXIoIlRFIiwgImZvb2JhciIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJUUkFJTEVSIiwg
ImZvb2JhciIpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJUUkFOU0ZFUi1FTkNPRElORyIs
ICJmb29iYXIiKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiVVBHUkFERSIsICJmb29iYXIi
KTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiVklBIiwgImZvb2JhciIpOworCisgICAgdHJ5
IHsKKyAgICAgICAgcmVxLnNlbmQoIiIpOworICAgICAgICBpZiAocmVxLnJlc3BvbnNlVGV4dC5t
YXRjaCgiMTAwLWNvbnRpbnVlfGZvb2JhcnwxMjM0NTYiKSkKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IHJlcS5yZXNwb25zZVRleHQ7
CisgICAgICAgIGVsc2UKKwkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0
Q29udGVudCA9ICJTVUNDRVNTIjsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBleDsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvaW5maW5pdGUtbG9vcC5w
aHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
ZXNvdXJjZXMvaW5maW5pdGUtbG9vcC5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9pbmZpbml0ZS1sb29wLnBocAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACis8P3BocAorICBoZWFkZXIoJ0hUVFAvMS4wIDMwMiBG
b3VuZCcpOworICBoZWFkZXIoJ0xvY2F0aW9uOiBpbmZpbml0ZS1sb29wLnBocCcpOworPz4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50
LWhlYWRlcnMuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWhlYWRlcnMuY2dpCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtaGVhZGVy
cy5jZ2kJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QK
K3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7Citwcmlu
dCAiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmVcblxuIjsKKworZm9yZWFjaCAoa2V5cyAlRU5WKSB7
CisgICAgaWYgKCRfID1+ICJIVFRQXyIpIHsKKyAgICAgICAgcHJpbnQgJF8gLiAiOiAiIC4gJEVO
VnskX30gLiAiXG4iOworICAgIH0KK30KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWhlYWRlcnMuY2dpCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCk5hbWU6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxODgzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMDctMDEtMTQgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzIKKyAg
ICAgICAgWE1MSHR0cFJlcXVlc3QgZnJlZXplcyBvbiBnZXR0aW5nIGEgbWlzc2luZyBkb2N1bWVu
dCB3aXRoIG92ZXJyaWRkZW4gQ29udGVudC1MZW5ndGgKKworICAgICAgICBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjEyCisgICAgICAgIEludmVzdGlnYXRlIGRpc2Fs
bG93aW5nIHNvbWUgWE1MSHR0cFJlcXVlc3QgaGVhZGVycyBmcm9tIGJlaW5nIHNldCB2aWEgc2V0
UmVxdWVzdEhlYWRlci4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgLSBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy5odG1sCisgICAgICAgIC0gaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRlcnMuaHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAg
ICAoS0pTOjpzZXRET01FeGNlcHRpb24pOiBBZGRlZCBzdXBwb3J0IGZvciBORVRXT1JLX0VSUi4g
Q2hhbmdlZCB0aGUgdGVtcG9yYXJ5IAorICAgICAgICBQRVJNSVNTSU9OX0RFTklFRCBlcnJvciBp
bnRvIGEgc3BlY2lhbCBjYXNlLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgUmV0dXJuIHRoZSBl
cnJvciBvYmplY3QgdG8gdGhlIGNhbGxlci4gUmVtb3ZlZCBhbiBleHRyYSBsb2NhbCB2YXJpYWJs
ZSBmb3IgZXJyb3IsIAorICAgICAgICB3aGljaCBzaGFkb3dlZCB0aGUgb25lIGZyb20gZW5jbG9z
aW5nIGJsb2NrLgorCisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6IAorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOiAKKyAgICAgICAgVXBkYXRlZCB0byBwYXNz
IGFuIGVycm9yIG9iamVjdCAoY3VycmVudGx5IGlnbm9yZWQpLgorCisgICAgICAgICogeG1sL3ht
bGh0dHByZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhblNldFJlcXVlc3RIZWFkZXIp
OiBBZGRlZC4gVGhlIGhlYWRlcnMgdG8gYmxvY2sgaW5jbHVkZSB0aGUgb25lcyBmcm9tIAorICAg
ICAgICB0aGUgY3VycmVudCBYTUxIdHRwUmVxdWVzdCBkcmFmdCBwbHVzICJWaWEiLCB3aGljaCBp
cyBibG9ja2VkIGJ5IEZpcmVmb3guCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
c2VuZCk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhIHN5bmMgcmVxdWVzdCByZXN1bHRzIGluIAor
ICAgICAgICBhbiBlcnJvci4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRS
ZXF1ZXN0SGVhZGVyKTogQ2FsbCBjYW5TZXRSZXF1ZXN0SGVhZGVyKCkuCisgICAgICAgICogeG1s
L3htbGh0dHByZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjopOiBBZGRlZCBORVRXT1JLX0VS
UiBhbmQgYSBjb21tZW50IGFib3V0IFBFUk1JU1NJT05fREVOSUVELgorCiAyMDA3LTAxLTE0ICBE
YXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIDEwMTQ1LCBy
ZWdyZXNzaW9uIHdoZXJlIGxpbmUgYnJlYWtzIGFyZSBub3QgYmVpbmcgaG9ub3JlZCBiZXR3ZWVu
IGFkamFjZW50IHJlcGxhY2VkIGVsZW1lbnRzLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfYmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmlu
ZGluZy5jcHAJKHJldmlzaW9uIDE4ODM5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmlu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgZXZlbnRFeGNlcHRpb25OCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lc1tdID0gewotICAgICJQZXJtaXNzaW9uIGRl
bmllZCIKKyAgICAiTkVUV09SS19FUlIiCiB9OwogCiAjaWZkZWYgWFBBVEhfU1VQUE9SVApAQCAt
Mzk1LDE1ICszOTUsMTcgQEAgdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eAogICAgICAgICBuYW1lSW5kZXggPSBjb2RlOwogICAgICAgICBuYW1lVGFibGUgPSBldmVudEV4
Y2VwdGlvbk5hbWVzOwogICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKGV2ZW50RXhjZXB0
aW9uTmFtZXMpIC8gc2l6ZW9mKGV2ZW50RXhjZXB0aW9uTmFtZXNbMF0pOwotICAgIH0gZWxzZSBp
ZiAoY29kZSA+PSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFhNTEh0
dHBSZXF1ZXN0RXhjZXB0aW9uTWF4KSB7Ci0gICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGNhc2Ug
aXMgc3BlY2lhbCwgYmVjYXVzZSB0aGVyZSBpcyBubyBleGNlcHRpb24gY29kZSBhc3NpZ25lZCAo
eWV0PykuCisgICAgfSBlbHNlIGlmIChjb2RlID09IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zm
c2V0KSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgcmVwbGFj
ZWQgd2l0aCBET00gU0VDVVJJVFlfRVJSIHdoZW4gaXQgZmluZHMgaXRzIHdheSB0byB0aGUgc3Bl
Yy4KKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsICJQZXJtaXNzaW9uIGRl
bmllZCIpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChjb2RlID4gWE1MSHR0cFJl
cXVlc3RFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8PSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk1h
eCkgeworICAgICAgICB0eXBlID0gIlhNTEh0dHBSZXF1ZXN0IjsKKyAgICAgICAgLy8gWE1MSHR0
cFJlcXVlc3QgZXhjZXB0aW9uIGNvZGVzIHN0YXJ0IHdpdGggMTAxIGFuZCB3ZSBkb24ndCB3YW50
IDEwMCBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQorICAgICAgICBuYW1lSW5kZXgg
PSBjb2RlIC0gTkVUV09SS19FUlI7CiAgICAgICAgIGNvZGUgLT0gWE1MSHR0cFJlcXVlc3RFeGNl
cHRpb25PZmZzZXQ7Ci0gICAgICAgIG5hbWVJbmRleCA9IGNvZGU7CiAgICAgICAgIG5hbWVUYWJs
ZSA9IHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXM7CiAgICAgICAgIG5hbWVUYWJsZVNpemUg
PSBzaXplb2YoeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeG1sSHR0cFJl
cXVlc3RFeGNlcHRpb25OYW1lc1swXSk7Ci0KLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5l
cmFsRXJyb3IsIG5hbWVJbmRleCA8IG5hbWVUYWJsZVNpemUgPyBuYW1lVGFibGVbbmFtZUluZGV4
XSA6IDApOwotICAgICAgICByZXR1cm47CiAjaWZkZWYgWFBBVEhfU1VQUE9SVAogICAgIH0gZWxz
ZSBpZiAoY29kZSA+PSBYUGF0aEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFhQYXRoRXhjZXB0
aW9uTWF4KSB7CiAgICAgICAgIHR5cGUgPSAiRE9NIFhQYXRoIjsKSW5kZXg6IFdlYkNvcmUvZG9t
L1hNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9rZW5pemVy
LmNwcAkocmV2aXNpb24gMTg4MzkpCisrKyBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzMsMTEgKzM3MywxMiBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMo
Y29uc3QgY2hhciogdXJpKQogICAgIGlmICghZ2xvYmFsRG9jTG9hZGVyIHx8ICFzaG91bGRBbGxv
d0V4dGVybmFsTG9hZCh1cmkpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAK
KyAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CiAgICAgCiAgICAgaWYgKGdsb2JhbERvY0xvYWRlci0+
ZnJhbWUoKSkgCi0gICAgICAgIGdsb2JhbERvY0xvYWRlci0+ZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoS1VSTCh1cmkpLCByZXNwb25zZSwgZGF0YSk7CisgICAg
ICAgIGdsb2JhbERvY0xvYWRlci0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoS1VSTCh1cmkpLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCiAgICAgcmV0dXJu
IG5ldyBPZmZzZXRCdWZmZXIoZGF0YSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxODgzOSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk2OSw3ICsyOTY5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEVtcHR5
RG9jdW1lbnRTeW5jaAogICAgIGxvYWQocmVxdWVzdCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzdWJy
ZXNvdXJjZSwgd2UgY2FuIGxvYWQgYW55IFVSTCAod2UgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUp
LgogICAgIC8vIEJ1dCB3ZSBzdGlsbCB3YW50IHRvIGtub3cgd2hldGhlciB3ZSBzaG91bGQgaGlk
ZSB0aGUgcmVmZXJyZXIgb3Igbm90LCBzbyB3ZSBjYWxsIHRoZSBjYW5Mb2FkIG1ldGhvZC4KQEAg
LTI5OTMsMTcgKzI5OTMsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdQogICAgIGluaXRpYWxSZXF1ZXN0LnNldE1haW5Eb2N1bWVudFVSTChtX2ZyYW1lLT5wYWdl
KCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLnVy
bCgpKTsKICAgICBpbml0aWFsUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KGNsaWVudCgpLT51c2Vy
QWdlbnQoKSk7CiAgICAgCi0gICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIgPSAwOyAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChp
bml0aWFsUmVxdWVzdCk7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShuZXdSZXF1ZXN0LCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgQVNT
RVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
LSAgICAgICAgCiAgICAgICAgIGRpZFRlbGxCcmlkZ2VBYm91dExvYWQobmV3UmVxdWVzdC51cmwo
KS51cmwoKSk7Ci0KICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICB9CiAgICAgCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDE4ODM5KQorKysgV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBGcmFtZSogY3JlYXRlV2luZG93KGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpOwogCi0gICAgICAgIHZvaWQgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmIHIsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CisgICAgICAgIHZvaWQgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICAgICAgYm9v
bCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCkluZGV4OiBXZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMTg4MzkpCisrKyBXZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBzdGF0aWMgeG1sRG9jUHRy
IGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sCiAgICAgICAgICAgICB4bWxDaGFyICpiYXNlID0geG1s
Tm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7CiAgICAg
ICAgICAgICBLVVJMIHVybCgoY29uc3QgY2hhciopYmFzZSwgKGNvbnN0IGNoYXIqKXVyaSk7CiAg
ICAgICAgICAgICB4bWxGcmVlKGJhc2UpOworICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKICAgICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgICAgICAgICB4
bWxHZW5lcmljRXJyb3JGdW5jIG9sZEVycm9yRnVuYyA9IHhtbEdlbmVyaWNFcnJvcjsKICAgICAg
ICAgICAgIHZvaWQgKm9sZEVycm9yQ29udGV4dCA9IHhtbEdlbmVyaWNFcnJvckNvbnRleHQ7CkBA
IC05Niw3ICs5Nyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwK
ICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKGdsb2JhbERvY0xvYWRlci0+ZnJhbWUoKSkgCi0gICAgICAgICAgICAgICAgZ2xv
YmFsRG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSh1cmwsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxEb2NMb2FkZXIt
PmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHVybCwgZXJyb3Is
IHJlc3BvbnNlLCBkYXRhKTsKIAogICAgICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygw
LCBwYXJzZUVycm9yRnVuYyk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFuIGVu
Y29kaW5nIGhlcmUuIE5laXRoZXIgR2Vja28gbm9yIFdpbklFIHJlc3BlY3RzCkluZGV4OiBXZWJD
b3JlL3htbC94bWxodHRwcmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwveG1s
aHR0cHJlcXVlc3QuY3BwCShyZXZpc2lvbiAxODgzOSkKKysrIFdlYkNvcmUveG1sL3htbGh0dHBy
ZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgorICogIENvcHlyaWdodCAoQykgMjAw
NS0yMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNz
aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTE0MSw2ICsxNDIsMjkgQEAg
c3RhdGljIFN0cmluZyBnZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgYwogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAorc3RhdGljIGJvb2wgY2FuU2V0UmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlSW5zZW5zaXRpdmVIYXNo
PFN0cmluZz4gPiBmb3JiaWRkZW5IZWFkZXJzOworICAgIAorICAgIGlmIChmb3JiaWRkZW5IZWFk
ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgiYWNjZXB0LWNo
YXJzZXQiKTsKKyAgICAgICAgZm9yYmlkZGVuSGVhZGVycy5hZGQoImFjY2VwdC1lbmNvZGluZyIp
OworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgiY29udGVudC1sZW5ndGgiKTsKKyAgICAg
ICAgZm9yYmlkZGVuSGVhZGVycy5hZGQoImV4cGVjdCIpOworICAgICAgICBmb3JiaWRkZW5IZWFk
ZXJzLmFkZCgiZGF0ZSIpOworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgiaG9zdCIpOwor
ICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgia2VlcC1hbGl2ZSIpOworICAgICAgICBmb3Ji
aWRkZW5IZWFkZXJzLmFkZCgicmVmZXJlciIpOworICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFk
ZCgidGUiKTsKKyAgICAgICAgZm9yYmlkZGVuSGVhZGVycy5hZGQoInRyYWlsZXIiKTsKKyAgICAg
ICAgZm9yYmlkZGVuSGVhZGVycy5hZGQoInRyYW5zZmVyLWVuY29kaW5nIik7CisgICAgICAgIGZv
cmJpZGRlbkhlYWRlcnMuYWRkKCJ1cGdyYWRlIik7CisgICAgICAgIGZvcmJpZGRlbkhlYWRlcnMu
YWRkKCJ2aWEiKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuICFmb3JiaWRkZW5IZWFkZXJzLmNv
bnRhaW5zKG5hbWUpOworfQorCiBYTUxIdHRwUmVxdWVzdFN0YXRlIFhNTEh0dHBSZXF1ZXN0Ojpn
ZXRSZWFkeVN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZTsKQEAgLTQwMCwxNyAr
NDI0LDIxIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3RyaW5nJiAKIAogICAg
IGlmICghbV9hc3luYykgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBhdm9pZCBkZWFkbG9jayBpbiBjYXNlIHRoZSBsb2Fk
ZXIgd2FudHMgdG8gdXNlIEpTIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQKICAgICAgICAgICAgIEtK
Uzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcExvY2tzOwogICAgICAgICAgICAgaWYgKG1fZG9j
LT5mcmFtZSgpKSAKLSAgICAgICAgICAgICAgICBtX2RvYy0+ZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEpOworICAgICAg
ICAgICAgICAgIG1fZG9jLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShyZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICB9CiAKICAgICAg
ICAgbV9sb2FkZXIgPSAwOwotICAgICAgICBwcm9jZXNzU3luY0xvYWRSZXN1bHRzKGRhdGEsIHJl
c3BvbnNlKTsKKyAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgcHJvY2Vz
c1N5bmNMb2FkUmVzdWx0cyhkYXRhLCByZXNwb25zZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGVjID0gTkVUV09SS19FUlI7CiAgICAgCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
NjYsNiArNDk0LDEyIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY28K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghY2FuU2V0UmVxdWVzdEhlYWRlcihu
YW1lKSkgeworICAgICAgICBpZiAobV9kb2MgJiYgbV9kb2MtPmZyYW1lKCkgJiYgbV9kb2MtPmZy
YW1lKCktPnBhZ2UoKSkKKyAgICAgICAgICAgIG1fZG9jLT5mcmFtZSgpLT5wYWdlKCktPmNocm9t
ZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKCJSZWZ1c2VkIHRvIHNldCB1bnNhZmUgaGVhZGVyICIg
KyBuYW1lLCAxLCBTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAo
IW1fcmVxdWVzdEhlYWRlcnMuY29udGFpbnMobmFtZSkpIHsKICAgICAgICAgbV9yZXF1ZXN0SGVh
ZGVycy5zZXQobmFtZSwgdmFsdWUpOwogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3ht
bC94bWxodHRwcmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL3htbGh0dHByZXF1
ZXN0LmgJKHJldmlzaW9uIDE4ODM5KQorKysgV2ViQ29yZS94bWwveG1saHR0cHJlcXVlc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTEgQEAgY2xhc3MgU3RyaW5nOwogdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKIAogY29uc3QgaW50IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zm
c2V0ID0gNTAwOwotY29uc3QgaW50IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uTWF4ID0gNTk5Owot
ZW51bSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbkNvZGUgeyBQRVJNSVNTSU9OX0RFTklFRCA9IFhN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0IH07Citjb25zdCBpbnQgWE1MSHR0cFJlcXVlc3RF
eGNlcHRpb25NYXggPSA2OTk7CitlbnVtIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uQ29kZSB7Cisg
ICAgUEVSTUlTU0lPTl9ERU5JRUQgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCwgLy8g
VXNlIFNFQ1VSSVRZX0VSUiB3aGVuIHRoYXQncyBpbiBET00gQ29yZSwgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODIKKyAgICBORVRXT1JLX0VSUiA9IFhNTEh0dHBS
ZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0ICsgMTAxCit9OwogCiAvLyB0aGVzZSBleGFjdCBudW1lcmlj
IHZhbHVlcyBhcmUgaW1wb3J0YW50IGJlY2F1c2UgSlMgZXhwZWN0cyB0aGVtCiBlbnVtIFhNTEh0
dHBSZXF1ZXN0U3RhdGUgewo=
</data>
<flag name="review"
          id="4680"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>