<?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>39026</bug_id>
          
          <creation_ts>2010-05-12 14:08:19 -0700</creation_ts>
          <short_desc>Recognize async attribute on script tags</short_desc>
          <delta_ts>2010-06-20 18:05:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>20710</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>224875</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-05-12 14:08:19 -0700</bug_when>
    <thetext>Recognize async attribute on script tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224880</commentid>
    <comment_count>1</comment_count>
      <attachid>55895</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-05-12 14:11:16 -0700</bug_when>
    <thetext>Created attachment 55895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225037</commentid>
    <comment_count>2</comment_count>
      <attachid>55895</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-05-12 18:31:36 -0700</bug_when>
    <thetext>Comment on attachment 55895
Patch

This doesn&apos;t actually implement async behavior. Do you plan on adding that? It is also not true that this is not testable as the async property is now detectable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225040</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-05-12 18:38:02 -0700</bug_when>
    <thetext>Yes. I have a follow-up patch almost ready that implements defer and async. But I thought it would be good to break this out into a separate patch.

But you are right that in the interest of detectability, they should be landed at about the same time. Unfortunately detectability was already broken for defer.

I&apos;ll ping this review once the actual implementation is up for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228710</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-05-20 19:38:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Yes. I have a follow-up patch almost ready that implements defer and async. But I thought it would be good to break this out into a separate patch.
&gt; 
&gt; But you are right that in the interest of detectability, they should be landed at about the same time. Unfortunately detectability was already broken for defer.
&gt; 
&gt; I&apos;ll ping this review once the actual implementation is up for review.

I&apos;ve added the full patch at https://bugs.webkit.org/show_bug.cgi?id=20710

It is a little over 20k. Let me know if you think it is reasonable to resurrect this patch to split it up or if you think it needs to stay together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233021</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-01 18:35:20 -0700</bug_when>
    <thetext>Uploading a new patch with a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233023</commentid>
    <comment_count>6</comment_count>
      <attachid>57612</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-01 18:40:57 -0700</bug_when>
    <thetext>Created attachment 57612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233059</commentid>
    <comment_count>7</comment_count>
      <attachid>57612</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-01 20:58:19 -0700</bug_when>
    <thetext>Comment on attachment 57612
Patch

Seems at least the SVG part of this change is untested.

This test could be much simpler using a little document.write().  Since then you could have a function which writes a script tag with a specific ID and then returns the .async value.

testAsyncValue(&quot;ASYNC&quot;)

function testAsyncValue(async_value)
{
    var scriptId = &quot;test&quot; + testNumber;
    document.write(&quot;&lt;script id=&apos;&quot; + scriptId + &quot;&apos; src=&apos;ignored.js&apos; async=&apos;&quot; + async_value + &quot;&apos;&gt;&lt;/scr&quot; + &quot;ipt&gt;&quot;);
    scriptElement = document.getElementById(scriptId);
    testNumber++;
    return scriptElement.async;
}

or something like that.  You can document.write to an iframe if that works nicer.

r- for lack of SVG testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233099</commentid>
    <comment_count>8</comment_count>
      <attachid>57624</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-01 23:20:26 -0700</bug_when>
    <thetext>Created attachment 57624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233101</commentid>
    <comment_count>9</comment_count>
      <attachid>57624</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-01 23:30:22 -0700</bug_when>
    <thetext>Comment on attachment 57624
Patch

We haven&apos;t yet shown you the wonderful world of script-tests it seems.

Your long mass of:
+&lt;script&gt;
+if (isParserInsertedScriptAsync(&quot;async&quot;) === true)
+    writePass(&quot;p1&quot;);
+&lt;/script&gt;

Could be fixed by making isParserInsertedScriptAsync work on an iframe (newly created or otherwise), and then using:

shouldBeTrue(&quot;isParserInsertedScriptAsync(&apos;async&apos;)&quot;);

That will do all the beautiful &quot;PASS&quot;, &quot;FAIL&quot; stuff for you.  script-tests are javascript files only.

You can see lots of examples in LayoutTests looking in the script-tests directory.  Sadly they only work (easily) for .html files, however you can use the scirpt-test scripts (fast/js/resources/js-test-pre.js and -post.js) in any file, including a .svg file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233116</commentid>
    <comment_count>10</comment_count>
      <attachid>57631</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-02 00:26:25 -0700</bug_when>
    <thetext>Created attachment 57631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233312</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-02 10:14:28 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=57631) [details]
&gt; Patch

(In reply to comment #9)
&gt; (From update of attachment 57624 [details])
&gt; We haven&apos;t yet shown you the wonderful world of script-tests it seems.
&gt; 
&gt; Your long mass of:
&gt; +&lt;script&gt;
&gt; +if (isParserInsertedScriptAsync(&quot;async&quot;) === true)
&gt; +    writePass(&quot;p1&quot;);
&gt; +&lt;/script&gt;
&gt; 
&gt; Could be fixed by making isParserInsertedScriptAsync work on an iframe (newly created or otherwise), and then using:
&gt; 
&gt; shouldBeTrue(&quot;isParserInsertedScriptAsync(&apos;async&apos;)&quot;);
&gt; 
&gt; That will do all the beautiful &quot;PASS&quot;, &quot;FAIL&quot; stuff for you.  script-tests are javascript files only.
&gt; 
&gt; You can see lots of examples in LayoutTests looking in the script-tests directory.  Sadly they only work (easily) for .html files, however you can use the scirpt-test scripts (fast/js/resources/js-test-pre.js and -post.js) in any file, including a .svg file.

Thanks for showing me the light. That is so much cleaner!

However, for the HTMLScriptElement test, I went back to actually writing the &lt;script&gt; tags in the source HTML rather than document.writing them. This was for two reasons:
 1 There seems to be a bug with:
    &lt;script&gt;
        document.write(&apos;&lt;script id=foo&gt;&lt;/scri&apos;+&apos;pt&gt;&apos;);
        document.getElementById(&apos;foo&apos;);
        document.write(&apos;&lt;script id=bar&gt;&lt;/scri&apos;+&apos;pt&gt;&apos;);
        document.getElementById(&apos;bar&apos;);
    &lt;/script&gt;
    The first getElementById(&apos;foo&apos;) will succeed but the second getElementById(&apos;bar&apos;) will return NULL. I plan to file a bug and look into that separately. But it is orthogonal to this patch and there is no reason to complicate this LayoutTest with that issue.
 2 It turns out to be fewer lines overall and, IMHO, easier to read.

For the SVGScriptElement test, I just left it as-is because the test case is so simple. Let me know if you think I should try to use script-tests there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233452</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-02 14:22:12 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Created an attachment (id=57631) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 57624 [details] [details])
&gt; &gt; We haven&apos;t yet shown you the wonderful world of script-tests it seems.
&gt; &gt; 
&gt; &gt; Your long mass of:
&gt; &gt; +&lt;script&gt;
&gt; &gt; +if (isParserInsertedScriptAsync(&quot;async&quot;) === true)
&gt; &gt; +    writePass(&quot;p1&quot;);
&gt; &gt; +&lt;/script&gt;
&gt; &gt; 
&gt; &gt; Could be fixed by making isParserInsertedScriptAsync work on an iframe (newly created or otherwise), and then using:
&gt; &gt; 
&gt; &gt; shouldBeTrue(&quot;isParserInsertedScriptAsync(&apos;async&apos;)&quot;);
&gt; &gt; 
&gt; &gt; That will do all the beautiful &quot;PASS&quot;, &quot;FAIL&quot; stuff for you.  script-tests are javascript files only.
&gt; &gt; 
&gt; &gt; You can see lots of examples in LayoutTests looking in the script-tests directory.  Sadly they only work (easily) for .html files, however you can use the scirpt-test scripts (fast/js/resources/js-test-pre.js and -post.js) in any file, including a .svg file.
&gt; 
&gt; Thanks for showing me the light. That is so much cleaner!
&gt; 
&gt; However, for the HTMLScriptElement test, I went back to actually writing the &lt;script&gt; tags in the source HTML rather than document.writing them. This was for two reasons:
&gt;  1 There seems to be a bug with:
&gt;     &lt;script&gt;
&gt;         document.write(&apos;&lt;script id=foo&gt;&lt;/scri&apos;+&apos;pt&gt;&apos;);
&gt;         document.getElementById(&apos;foo&apos;);
&gt;         document.write(&apos;&lt;script id=bar&gt;&lt;/scri&apos;+&apos;pt&gt;&apos;);
&gt;         document.getElementById(&apos;bar&apos;);
&gt;     &lt;/script&gt;
&gt;     The first getElementById(&apos;foo&apos;) will succeed but the second getElementById(&apos;bar&apos;) will return NULL. I plan to file a bug and look into that separately.

Since it doesn&apos;t block this bug, for posterity sake, I&apos;m adding a link to the bug:
https://bugs.webkit.org/show_bug.cgi?id=40068

 But it is orthogonal to this patch and there is no reason to complicate this LayoutTest with that issue.
&gt;  2 It turns out to be fewer lines overall and, IMHO, easier to read.
&gt; 
&gt; For the SVGScriptElement test, I just left it as-is because the test case is so simple. Let me know if you think I should try to use script-tests there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237462</commentid>
    <comment_count>13</comment_count>
      <attachid>57631</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-12 21:00:24 -0700</bug_when>
    <thetext>Comment on attachment 57631
Patch

Lets do this after the HTML5 Parser is turned on (to minimize how much we&apos;re changing at once).  r- until then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240028</commentid>
    <comment_count>14</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-18 10:48:30 -0700</bug_when>
    <thetext>What do you think, is it okay to move forward with this now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240030</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-18 10:50:08 -0700</bug_when>
    <thetext>Yes.  https://bugs.webkit.org/show_bug.cgi?id=39891 is one tricky case that we may need to logic out first though.  (The test case inline has a couple errors, but I can post a fixed copy which reveals some of the problems in our current impl.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240388</commentid>
    <comment_count>16</comment_count>
      <attachid>57631</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-19 16:58:48 -0700</bug_when>
    <thetext>Comment on attachment 57631
Patch

Looks good.  We should land support for executing these soon too, otherwise people&apos;s feature detection scripts might get confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240391</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-19 17:09:18 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 57631 [details])
&gt; Looks good.  We should land support for executing these soon too, otherwise people&apos;s feature detection scripts might get confused.

Agreed.

I&apos;ll post separate patches for async and defer on Monday or Tuesday. Depending on whether Eric&apos;s fixes block them, we can probably get them landed this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240397</commentid>
    <comment_count>18</comment_count>
      <attachid>57631</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-19 17:21:19 -0700</bug_when>
    <thetext>Comment on attachment 57631
Patch

Rejecting patch 57631 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
om/ScriptElement.cpp
patching file WebCore/dom/ScriptElement.h
patching file WebCore/html/HTMLAttributeNames.in
Hunk #1 succeeded at 43 (offset 1 line).
patching file WebCore/html/HTMLScriptElement.cpp
patching file WebCore/html/HTMLScriptElement.h
patching file WebCore/html/HTMLScriptElement.idl
Hunk #1 FAILED at 24.
1 out of 1 hunk FAILED -- saving rejects to file WebCore/html/HTMLScriptElement.idl.rej
patching file WebCore/svg/SVGScriptElement.cpp
patching file WebCore/svg/SVGScriptElement.h

Full output: http://webkit-commit-queue.appspot.com/results/3336425</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240469</commentid>
    <comment_count>19</comment_count>
      <attachid>59198</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 10:43:31 -0700</bug_when>
    <thetext>Created attachment 59198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240471</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 10:45:57 -0700</bug_when>
    <thetext>Synced up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240475</commentid>
    <comment_count>21</comment_count>
      <attachid>59198</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-20 10:51:07 -0700</bug_when>
    <thetext>Comment on attachment 59198
Patch

There are a bunch of stray changes to WebKitTools/WinLauncher/WinLauncher.vcproj in your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240477</commentid>
    <comment_count>22</comment_count>
      <attachid>59199</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 10:57:56 -0700</bug_when>
    <thetext>Created attachment 59199
Sync up and remove a stray diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240482</commentid>
    <comment_count>23</comment_count>
      <attachid>59198</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-20 11:16:01 -0700</bug_when>
    <thetext>Comment on attachment 59198
Patch

WebCore/dom/ScriptElement.cpp:312
 +      return !m_scriptElement-&gt;sourceAttributeValue().isEmpty() &amp;&amp; m_scriptElement-&gt;asyncAttributeValue();
I suspect that AtomicString has a bool operator, which probably uses isEmpty() under the covers, so you could probably just write this as &quot;m_scriptElement-&gt;sourceAttributeValue()&quot;

WebCore/html/HTMLScriptElement.cpp:159
 +      setAttribute(asyncAttr, async ? &quot;&quot; : 0);
The two sides of the ternary are different types.  Intentional?

WebKitTools/WinLauncher/WinLauncher.vcproj:215
 +  				AdditionalDependencies=&quot;comctl32.lib shlwapi.lib user32.lib ole32.lib oleaut32.lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib&quot;
Confused by the project changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240495</commentid>
    <comment_count>24</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 12:01:36 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 59198 [details])
&gt; WebCore/dom/ScriptElement.cpp:312
&gt;  +      return !m_scriptElement-&gt;sourceAttributeValue().isEmpty() &amp;&amp; m_scriptElement-&gt;asyncAttributeValue();
&gt; I suspect that AtomicString has a bool operator, which probably uses isEmpty() under the covers, so you could probably just write this as &quot;m_scriptElement-&gt;sourceAttributeValue()&quot;

The ! operator checks isNull() rather than isEmpty().

&gt; 
&gt; WebCore/html/HTMLScriptElement.cpp:159
&gt;  +      setAttribute(asyncAttr, async ? &quot;&quot; : 0);
&gt; The two sides of the ternary are different types.  Intentional?
&gt; 

This was just copied from setDefer(). Should I update them both to something else?

&gt; WebKitTools/WinLauncher/WinLauncher.vcproj:215
&gt;  +                  AdditionalDependencies=&quot;comctl32.lib shlwapi.lib user32.lib ole32.lib oleaut32.lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib&quot;
&gt; Confused by the project changes?

Sorry for the noise. That was a stray diff that accidentally crept in during my sync. It is removed in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240546</commentid>
    <comment_count>25</comment_count>
      <attachid>59199</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-20 16:36:42 -0700</bug_when>
    <thetext>Comment on attachment 59199
Sync up and remove a stray diff

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240551</commentid>
    <comment_count>26</comment_count>
      <attachid>59199</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-20 18:05:27 -0700</bug_when>
    <thetext>Comment on attachment 59199
Sync up and remove a stray diff

Clearing flags on attachment: 59199

Committed r61518: &lt;http://trac.webkit.org/changeset/61518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240552</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-20 18:05:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55895</attachid>
            <date>2010-05-12 14:11:16 -0700</date>
            <delta_ts>2010-06-01 18:40:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39026-20100512141115.patch</filename>
            <type>text/plain</type>
            <size>3036</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTQwMTBhNzlkNDkwYmMwNDg2YWM5ZjA2MWFiMDczMGVhOWNjMGE1Mi4uZGE2M2ZkYThkZWYyOGE2
N2M1MjdlZjg0MzdlMDc3MjdkYjFkYjljMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0xMiAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY29nbml6ZSBhc3luYyBhdHRyaWJ1dGUgb24g
c2NyaXB0IHRhZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTAyNgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAg
ICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0RWxlbWVudDo6YXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6
OnNldEFzeW5jKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5pZGw6CisKIDIwMTAtMDUtMTAgIFJvZHJpZ28gQmVs
ZW0gIDxyb2RyaWdvLmJlbGVtQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBDaHJpc3RpYW5zZW4gLCBTaW1vbiBIYXVzbWFubiBhbmQgR3VzdGF2byBOb3Jvbmhh
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggN2EzNTNiMmU4NGZkODIwMjZmZGJl
YzI3ZTljMTM2YmNhYjE1NTc3Mi4uODdhMWQzYzExYzY0MDI0MDIzNWU1ZjQyNDdhZjFmMjBlOWRm
MzVkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC00Miw2ICs0Miw3IEBAIGFy
aWEtdmFsdWVtYXgKIGFyaWEtdmFsdWVtaW4KIGFyaWEtdmFsdWVub3cKIGFyaWEtdmFsdWV0ZXh0
Cithc3luYwogYXV0b2NvbXBsZXRlCiBhdXRvZm9jdXMKIGF1dG9wbGF5CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcAppbmRleCA1OGMzYjAzZjI0M2Q1M2E3OGU5MDNkNzMxZjE2Y2E0NjEyYzRk
MGRmLi5lOGNmNjhiMjljYmEyZTJmOTI2ZjI5NDViZjExODBkMDk4MzBkNWVlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE0OCw2ICsxNDgsMTYgQEAgdm9pZCBIVE1MU2NyaXB0
RWxlbWVudDo6c2V0Q2hhcnNldChjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgIHNldEF0dHJpYnV0
ZShjaGFyc2V0QXR0ciwgdmFsdWUpOwogfQogCitib29sIEhUTUxTY3JpcHRFbGVtZW50Ojphc3lu
YygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoYXN5bmNBdHRyKS5pc051bGwo
KTsKK30KKwordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0QXN5bmMoYm9vbCBhc3luYykKK3sK
KyAgICBzZXRBdHRyaWJ1dGUoYXN5bmNBdHRyLCBhc3luYyA/ICIiIDogMCk7Cit9CisKIGJvb2wg
SFRNTFNjcmlwdEVsZW1lbnQ6OmRlZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWdldEF0dHJp
YnV0ZShkZWZlckF0dHIpLmlzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCBi
NmQ2ODNmMDUxYWIyMWE1N2M2MzUwMzIwZGQzMTRkYTllMTQ3MjczLi5mYTJjOWYzZGZjOWMxYzBj
OTA1Mjc1ODM1OTZhNmE1ZjM2OWZhNDdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaApAQCAt
NjIsNiArNjIsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNoYXJzZXQoKSBjb25zdDsKICAgICB2
b2lkIHNldENoYXJzZXQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIGFzeW5jKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRBc3luYyhib29sKTsKKwogICAgIGJvb2wgZGVmZXIoKSBjb25zdDsKICAg
ICB2b2lkIHNldERlZmVyKGJvb2wpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmlkbAppbmRl
eCA4OTg1NTEyYjIxY2VhYjFiZWQ5NmI3MzFlZDZkYmZlYzUxYjNjYWI2Li5mYjhmMzNhNTEwMzk0
MmU0NzI2MGE0Mjg3MTRjNTZmZjhlM2I1MWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5p
ZGwKQEAgLTI0LDYgKzI0LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaHRtbEZvcjsKICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGV2ZW50OwogICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgY2hhcnNldDsKKyAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gYXN5bmM7CiAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFu
IGRlZmVyOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgc3JjOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgdHlwZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57612</attachid>
            <date>2010-06-01 18:40:57 -0700</date>
            <delta_ts>2010-06-01 23:20:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39026-20100601184055.patch</filename>
            <type>text/plain</type>
            <size>11772</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzRiZTU5M2FmNWFmYzM2YjZmZjg1MDc5YjQ5OTk3YzU0ZDMzMGM1Li4xNGFlZDU0
NjA4YjkzNmNjYmQwZTAzMWFmNzc3MTA4YWU3ZmE2N2RmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDYtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSB0ZXN0
IHRvIG1ha2Ugc3VyZSB0aGUgYXN5bmMgYXR0cmlidXRlIGlzIGNvcnJlY3RseSBwYXJzZWQgb24K
KyAgICAgICAgYm90aCBkeW5hbWljIGFuZCBwYXJzZXIgaW5zZXJ0ZWQgc2NyaXB0IHRhZ3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTAyNgorCisg
ICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9z
Y3JpcHQtYXN5bmMtYXR0ci5odG1sOiBBZGRlZC4KKwogMjAxMC0wNi0wMSAgUm9iIEJ1aXMgIDxy
d2xidWlzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1h
bm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9z
Y3JpcHQtYXN5bmMtYXR0ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
U2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmM2ZWVkYWZjYzhkODI3MWU5ZWMzZWIyNGQ1ZjQwNDRhZjM3ZTY4NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1h
dHRyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3RzIGZvciBwcm9wZXIg
cGFyc2luZyBvZiB0aGUgYXN5bmMgYXR0cmlidXRlIG9uIHNjcmlwdCB0YWdzLgorUGFyc2VyLWNy
ZWF0ZWQgc2NyaXB0IGVsZW1lbnRzOgorCitOb3QgYXN5bmM6IFBBU1MKKworQXN5bmMgd2l0aG91
dCB2YWx1ZTogUEFTUworCitBc3luYyBsb3dlcmNhc2U6IFBBU1MKKworQXN5bmMgdXBwZXJjYXNl
OlBBU1MKKworQXN5bmMgdHJ1ZTogUEFTUworCitEeW5hbWljYWxseS1pbnNlcnRlZCBzY3JpcHQg
ZWxlbWVudHM6CisKK0FzeW5jIHRydWU6UEFTUworCitBc3luYyBhYnNlbnQ6IFBBU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3lu
Yy1hdHRyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3Jp
cHQtYXN5bmMtYXR0ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NTQzMzljNTg1YjMyMWE3MWZiOTM5ZDQw
ZmJkYjE5Mzk1NjZmZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sCkBAIC0wLDAgKzEsNTkgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IGlkPSJzMCIgc3JjPSJkb250LWNhcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iczEiIHNyYz0iZG9udC1jYXJlLmpzIiBhc3luYz48L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9InMyIiBzcmM9ImRvbnQtY2FyZS5qcyIgYXN5bmM9ImFzeW5jIj48L3Njcmlw
dD4KKzxzY3JpcHQgaWQ9InMzIiBzcmM9ImRvbnQtY2FyZS5qcyIgYXN5bmM9IkFTWU5DIj48L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9InM0IiBzcmM9ImRvbnQtY2FyZS5qcyIgYXN5bmM9InRydWUiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgordmFyIGU1ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CitlNS5pZCA9ICJzNSI7CitlNS5zcmMgPSAiZG9u
dC1jYXJlLmpzIjsKK2U1LmFzeW5jID0gdHJ1ZTsKK2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZTUpOworCit2YXIgZTYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzY3JpcHQiKTsKK2U2LmlkID0gInM2IjsKK2U2LnNyYyA9ICJkb250LWNhcmUu
anMiOworZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGls
ZChlNik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIH0KKworICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczAiKS5hc3luYyA9PT0g
ZmFsc2UpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMCIpLmlubmVySFRNTCA9
ICJQQVNTIjsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMxIikuYXN5bmMgPT09
IHRydWUpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLmlubmVySFRNTCA9
ICJQQVNTIjsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMyIikuYXN5bmMgPT09
IHRydWUpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMiIpLmlubmVySFRNTCA9
ICJQQVNTIjsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMzIikuYXN5bmMgPT09
IHRydWUpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMyIpLmlubmVySFRNTCA9
ICJQQVNTIjsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInM0IikuYXN5bmMgPT09
IHRydWUpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNCIpLmlubmVySFRNTCA9
ICJQQVNTIjsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInM1IikuYXN5bmMgPT09
IHRydWUpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNSIpLmlubmVySFRNTCA9
ICJQQVNTIjsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInM2IikuYXN5bmMgPT09
IGZhbHNlKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDYiKS5pbm5lckhUTUwg
PSAiUEFTUyI7CisKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7
Ij4KK1RoaXMgdGVzdHMgZm9yIHByb3BlciBwYXJzaW5nIG9mIHRoZSBhc3luYyBhdHRyaWJ1dGUg
b24gc2NyaXB0IHRhZ3MuCis8aHI+Cis8cD5QYXJzZXItY3JlYXRlZCBzY3JpcHQgZWxlbWVudHM6
PC9wPgorPHA+Tm90IGFzeW5jOiA8c3BhbiBpZD0icDAiPkZBSUw8L3NwYW4+PC9wPgorPHA+QXN5
bmMgd2l0aG91dCB2YWx1ZTogPHNwYW4gaWQ9InAxIj5GQUlMPC9zcGFuPjwvcD4KKzxwPkFzeW5j
IGxvd2VyY2FzZTogPHNwYW4gaWQ9InAyIj5GQUlMPC9zcGFuPjwvcD4KKzxwPkFzeW5jIHVwcGVy
Y2FzZTo8c3BhbiBpZD0icDMiPkZBSUw8L3NwYW4+PC9wPgorPHA+QXN5bmMgdHJ1ZTogPHNwYW4g
aWQ9InA0Ij5GQUlMPC9zcGFuPjwvcD4KKzxocj4KKzxwPkR5bmFtaWNhbGx5LWluc2VydGVkIHNj
cmlwdCBlbGVtZW50czo8L3A+Cis8cD5Bc3luYyB0cnVlOjxzcGFuIGlkPSJwNSI+RkFJTDwvc3Bh
bj48L3A+Cis8cD5Bc3luYyBhYnNlbnQ6IDxzcGFuIGlkPSJwNiI+RkFJTDwvc3Bhbj48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYmExYTFhYzIyMTMxZTNhNzNmMWMyYWNiMzdjMmFlMjA0MTIwMzI5
YS4uZTFjNTkzMDAyODdjYzYyODZmZjJjMjkxN2VjY2U2NTFiNzAxMzBiZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBA
QAorMjAxMC0wNi0wMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY29nbml6ZSBh
c3luYyBhdHRyaWJ1dGUgb24gc2NyaXB0IHRhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MDI2CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5v
dCBhY3R1YWxseSBhZGQgc3VwcG9ydCBmb3IgYXN5bmMuIEl0IG1lcmVseSBwYXJzZXMKKyAgICAg
ICAgYW5kIG1ha2VzIHRoZSBhdHRyaWJ1dGUgZGV0ZWN0YWJsZSB2aWEgSlMuIEFjdHVhbCBzdXBw
b3J0IGNvbWluZyBpbgorICAgICAgICBzdWJzZXF1ZW50IHBhdGNoLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLmh0bWwKKworICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnREYXRhOjppc0FzeW5jaHJvbm91cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50RGF0YTo6aXNEZWZlcnJlZCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojph
c3luYyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0QXN5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmRlZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojphc3luY0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpkZWZlckF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpkZWZlckF0dHJpYnV0ZVZhbHVlKToKKyAg
ICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDEwLTA2LTAxICBSb2IgQnVpcyAg
PHJ3bGJ1aXNAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVy
bWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMGFjMDg0NmExMjQyMTA3YWYwNWU0Yzg5NTg0
ODhhOWE0NDRhYjM5Mi4uNTE4YWVhZGE3NGRkZWRmZTM0OGI5ZWY0NTMzZTJhZDNhNDNmOWM2OSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTMwNSw2ICszMDUsMjAgQEAgU3RyaW5nIFNjcmlwdEVs
ZW1lbnREYXRhOjpzY3JpcHRDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjphZG9w
dCh2YWwpOwogfQogCitib29sIFNjcmlwdEVsZW1lbnREYXRhOjppc0FzeW5jaHJvbm91cygpIGNv
bnN0Cit7CisgICAgLy8gT25seSBleHRlcm5hbCBzY3JpcHRzIG1heSBiZSBhc3luY2hyb25vdXMu
CisgICAgLy8gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwj
YXR0ci1zY3JpcHQtYXN5bmMKKyAgICByZXR1cm4gIW1fc2NyaXB0RWxlbWVudC0+c291cmNlQXR0
cmlidXRlVmFsdWUoKS5pc0VtcHR5KCkgJiYgbV9zY3JpcHRFbGVtZW50LT5hc3luY0F0dHJpYnV0
ZVZhbHVlKCk7Cit9CisKK2Jvb2wgU2NyaXB0RWxlbWVudERhdGE6OmlzRGVmZXJyZWQoKSBjb25z
dAoreworICAgIC8vIE9ubHkgZXh0ZXJuYWwgc2NyaXB0cyBtYXkgYmUgZGVmZXJyZWQgYW5kIGFz
eW5jIHRydW1wcyBkZWZlciB0byBhbGxvdyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyAg
ICAvLyBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNhdHRy
LXNjcmlwdC1kZWZlcgorICAgIHJldHVybiAhbV9zY3JpcHRFbGVtZW50LT5zb3VyY2VBdHRyaWJ1
dGVWYWx1ZSgpLmlzRW1wdHkoKSAmJiAhbV9zY3JpcHRFbGVtZW50LT5hc3luY0F0dHJpYnV0ZVZh
bHVlKCkgJiYgbV9zY3JpcHRFbGVtZW50LT5kZWZlckF0dHJpYnV0ZVZhbHVlKCk7Cit9CisKIFNj
cmlwdEVsZW1lbnQqIHRvU2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlm
IChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNjcmlwdFRhZykpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Lmgg
Yi9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggOGNjODRmY2Q0OWVlYmU4YTJhNjY2
NWU1MjU5ZGVhOGUwODIwNDZjMy4uYzY2M2U0Mzc2Mzg0MDgwNzY3YzExOGNiZDU3NDdjODk4NmNl
MzdlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBh
c3luY0F0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0
dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9h
ZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKSA9IDA7
CkBAIC03NCw2ICs3Niw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzY3JpcHRDb250ZW50KCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHNjcmlwdENoYXJzZXQoKSBjb25zdDsKKyAgICBib29sIGlzQXN5
bmNocm9ub3VzKCkgY29uc3Q7CisgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3Q7CiAKICAgICBF
bGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgYm9vbCBj
cmVhdGVkQnlQYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRCeVBhcnNlcjsgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggN2NkZTMyZjYyZmFjYmJiOTI1MjJiYzMwYmIx
ZDg4ZWM4ZDVmNzMzMi4uYWQxYjQxM2NkNGUzMGU5NDFkN2ZjMDRjZGQ3MDczZmYyYTg2ODU4MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC00Miw2ICs0Miw3IEBAIGFyaWEtdmFs
dWVtYXgKIGFyaWEtdmFsdWVtaW4KIGFyaWEtdmFsdWVub3cKIGFyaWEtdmFsdWV0ZXh0Cithc3lu
YwogYXV0b2NvbXBsZXRlCiBhdXRvZm9jdXMKIGF1dG9wbGF5CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcAppbmRleCBmNGMzYWU4NTkxZjkzZmU2M2I4OTRmYmRiY2ZlMWQyYWJlZDI1NzA4Li5j
ODM1NjNhZDIyOGE2NDQ5YTJhZmFlNjZmMmJmZGMxNTE1YTFhMmM5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTE0OSw5ICsxNDksMTkgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVu
dDo6c2V0Q2hhcnNldChjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgIHNldEF0dHJpYnV0ZShjaGFy
c2V0QXR0ciwgdmFsdWUpOwogfQogCitib29sIEhUTUxTY3JpcHRFbGVtZW50Ojphc3luYygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGFzeW5jQXR0cmlidXRlVmFsdWUoKTsKK30KKwordm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6c2V0QXN5bmMoYm9vbCBhc3luYykKK3sKKyAgICBzZXRBdHRyaWJ1dGUo
YXN5bmNBdHRyLCBhc3luYyA/ICIiIDogMCk7Cit9CisKIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6
OmRlZmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShkZWZlckF0dHIpLmlz
TnVsbCgpOworICAgIHJldHVybiBkZWZlckF0dHJpYnV0ZVZhbHVlKCk7CiB9CiAKIHZvaWQgSFRN
TFNjcmlwdEVsZW1lbnQ6OnNldERlZmVyKGJvb2wgZGVmZXIpCkBAIC0yMjYsNiArMjM2LDE2IEBA
IFN0cmluZyBIVE1MU2NyaXB0RWxlbWVudDo6ZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGdldEF0dHJpYnV0ZShldmVudEF0dHIpLnN0cmluZygpOwogfQogCitib29sIEhU
TUxTY3JpcHRFbGVtZW50Ojphc3luY0F0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIWdldEF0dHJpYnV0ZShhc3luY0F0dHIpLmlzTnVsbCgpOworfQorCitib29sIEhUTUxTY3Jp
cHRFbGVtZW50OjpkZWZlckF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWdl
dEF0dHJpYnV0ZShkZWZlckF0dHIpLmlzTnVsbCgpOworfQorCiB2b2lkIEhUTUxTY3JpcHRFbGVt
ZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGEuaGF2ZUZpcmVk
TG9hZEV2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCAxNGExMjY0MmVmYTU4
YmJhNTc4NjUxYTViMzIwZGZlNDM3YTY1M2E1Li4zYzhlOGNlMDZmZWViNmI2YmYwNDU1OGU4OTYy
YjE1ODYzZmMwZGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaApAQCAtNDcsNiArNDcsOSBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGNoYXJzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldENoYXJz
ZXQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIGFzeW5jKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBc3luYyhib29sKTsKKwogICAgIGJvb2wgZGVmZXIoKSBjb25zdDsKICAgICB2b2lkIHNldERl
ZmVyKGJvb2wpOwogCkBAIC04NSw2ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJp
bmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGZv
ckF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgZXZlbnRBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc3luY0F0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEVycm9yRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRsCmluZGV4IDg5
ODU1MTJiMjFjZWFiMWJlZDk2YjczMWVkNmRiZmVjNTFiM2NhYjYuLmZiOGYzM2E1MTAzOTQyZTQ3
MjYwYTQyODcxNGM1NmZmOGUzYjUxYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmlkbApA
QCAtMjQsNiArMjQsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBodG1sRm9yOwogICAgICAgICBhdHRyaWJ1dGUg
W0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZXZlbnQ7CiAgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBjaGFyc2V0OworICAgICAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiBhc3luYzsKICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZGVm
ZXI7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyB0eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAg
Yi9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAppbmRleCA2MWM2OGI2ZjE1NmE2ZjQx
NmZiNmRhMmU3YTVjYjA1OTIzMmVjM2NkLi5hYmU3N2E5MjMwMmUxZWZmNzE3M2MzOWRkMmYyYTNl
MWQxOTM2OGFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtMTk5LDYgKzE5OSwxNiBA
QCBTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6ZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCitib29sIFNWR1NjcmlwdEVsZW1lbnQ6OmFzeW5jQXR0
cmlidXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTVkdT
Y3JpcHRFbGVtZW50OjpkZWZlckF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQog
ewogICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRCYXNlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVs
ZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAppbmRleCBiODY0YWQ1NjQ0
YmRiMTkwNGM1MzRiMWJiZjM2NmI1ZTBiMmZmZjlmLi43NzBkYzg5MDY4ZmQzMWNlOWE0NjFmODYw
YzkzZTY4NmUzYzFkYTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC02Nyw2ICs2Nyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBldmVudEF0dHJpYnV0ZVZhbHVl
KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhc3luY0F0dHJpYnV0ZVZhbHVlKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57624</attachid>
            <date>2010-06-01 23:20:26 -0700</date>
            <delta_ts>2010-06-02 00:26:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39026-20100601232025.patch</filename>
            <type>text/plain</type>
            <size>13527</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMDMwNDE2NzU5NmFkNjcwYzIzYzQ5OGY2M2Y1ODliN2M0MjA2MmY4Li5hZmE0ZTBi
YmQzMzA4NzhlYTQ3ZThhOWM4ZjYwODI4MzEwYWY4MzdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDYtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRvIG1ha2Ug
c3VyZSBwYXJzaW5nIG9mIGFzeW5jIGF0dHJpYnV0ZSB3b3JrcyBmb3IgSFRNTCBzY3JpcHQgdGFn
cworICAgICAgICBhbmQgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBhc3luYyBpcyBub3QgcGFyc2Vk
IGZvciBTVkcgc2NyaXB0IHRhZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTAyNgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1l
bnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LWFzeW5jLWF0dHIuc3ZnOiBBZGRlZC4KKwogMjAxMC0wNi0wMSAgRGlyayBTY2h1bHplICA8a3Jp
dEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Njcmlw
dC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzZl
ZWRhZmNjOGQ4MjcxZTllYzNlYjI0ZDVmNDA0NGFmMzdlNjg0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdHMgZm9yIHByb3BlciBwYXJz
aW5nIG9mIHRoZSBhc3luYyBhdHRyaWJ1dGUgb24gc2NyaXB0IHRhZ3MuCitQYXJzZXItY3JlYXRl
ZCBzY3JpcHQgZWxlbWVudHM6CisKK05vdCBhc3luYzogUEFTUworCitBc3luYyB3aXRob3V0IHZh
bHVlOiBQQVNTCisKK0FzeW5jIGxvd2VyY2FzZTogUEFTUworCitBc3luYyB1cHBlcmNhc2U6UEFT
UworCitBc3luYyB0cnVlOiBQQVNTCisKK0R5bmFtaWNhbGx5LWluc2VydGVkIHNjcmlwdCBlbGVt
ZW50czoKKworQXN5bmMgdHJ1ZTpQQVNTCisKK0FzeW5jIGFic2VudDogUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0
dHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1h
c3luYy1hdHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliNDc1OTI1NzQ1YjM2ZjY1Mjg0MDRkMWE4NWJl
N2EyZGUyYTg4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxT
Y3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3ZhciBuZXh0U2Ny
aXB0SUQgPSAwOworCitmdW5jdGlvbiBpc1BhcnNlckluc2VydGVkU2NyaXB0QXN5bmMoYXR0cmli
dXRlcykKK3sKKyAgICB2YXIgaWQgPSAicyIgKyBuZXh0U2NyaXB0SUQrKzsKKyAgICBkb2N1bWVu
dC53cml0ZSgnPHNjcmlwdCBpZD0iJyArIGlkICsgJyIgc3JjPSJyZXNvdXJjZXMvc2NyaXB0LWxv
YWQuanMiICcgKyBhdHRyaWJ1dGVzICsgJz48L3NjcicgKyAnaXB0PicpOworICAgIHJldHVybiBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuYXN5bmM7Cit9CisKK2Z1bmN0aW9uIGlzRHluYW1p
Y2FsbHlJbnNlcnRlZFNjcmlwdEFzeW5jKGFzeW5jKQoreworICAgIHZhciBpZCA9ICJzIiArIG5l
eHRTY3JpcHRJRCsrOworICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
Y3JpcHQiKTsKKyAgICBzY3JpcHQuaWQgPSBpZDsKKyAgICBzY3JpcHQuc3JjID0gInJlc291cmNl
L3NjcmlwdC1sb2FkLmpzIjsKKyAgICBpZiAoYXN5bmMpCisgICAgICAgIHNjcmlwdC5hc3luYyA9
ICJhc3luYyI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5h
cHBlbmRDaGlsZChzY3JpcHQpOworICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChp
ZCkuYXN5bmM7Cit9CisKK2Z1bmN0aW9uIHdyaXRlUGFzcyhpZCkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZCkuaW5uZXJIVE1MID0gIlBBU1MiOworfQorCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIGZvciBwcm9wZXIgcGFy
c2luZyBvZiB0aGUgYXN5bmMgYXR0cmlidXRlIG9uIHNjcmlwdCB0YWdzLgorPGhyPgorPHA+UGFy
c2VyLWNyZWF0ZWQgc2NyaXB0IGVsZW1lbnRzOjwvcD4KKzxwPk5vdCBhc3luYzogPHNwYW4gaWQ9
InAwIj5GQUlMPC9zcGFuPjwvcD4KKzxzY3JpcHQ+CitpZiAoaXNQYXJzZXJJbnNlcnRlZFNjcmlw
dEFzeW5jKCIiKSA9PT0gZmFsc2UpCisgICAgd3JpdGVQYXNzKCJwMCIpOworPC9zY3JpcHQ+Cis8
cD5Bc3luYyB3aXRob3V0IHZhbHVlOiA8c3BhbiBpZD0icDEiPkZBSUw8L3NwYW4+PC9wPgorPHNj
cmlwdD4KK2lmIChpc1BhcnNlckluc2VydGVkU2NyaXB0QXN5bmMoImFzeW5jIikgPT09IHRydWUp
CisgICAgd3JpdGVQYXNzKCJwMSIpOworPC9zY3JpcHQ+Cis8cD5Bc3luYyBsb3dlcmNhc2U6IDxz
cGFuIGlkPSJwMiI+RkFJTDwvc3Bhbj48L3A+Cis8c2NyaXB0PgoraWYgKGlzUGFyc2VySW5zZXJ0
ZWRTY3JpcHRBc3luYygnYXN5bmM9ImFzeW5jIicpID09PSB0cnVlKQorICAgIHdyaXRlUGFzcygi
cDIiKTsKKzwvc2NyaXB0PgorPHA+QXN5bmMgdXBwZXJjYXNlOjxzcGFuIGlkPSJwMyI+RkFJTDwv
c3Bhbj48L3A+Cis8c2NyaXB0PgoraWYgKGlzUGFyc2VySW5zZXJ0ZWRTY3JpcHRBc3luYygnYXN5
bmM9IkFTWU5DIicpID09PSB0cnVlKQorICAgIHdyaXRlUGFzcygicDMiKTsKKzwvc2NyaXB0Pgor
PHA+QXN5bmMgdHJ1ZTogPHNwYW4gaWQ9InA0Ij5GQUlMPC9zcGFuPjwvcD4KKzxzY3JpcHQ+Citp
ZiAoaXNQYXJzZXJJbnNlcnRlZFNjcmlwdEFzeW5jKCdhc3luYz0idHJ1ZSInKSA9PT0gdHJ1ZSkK
KyAgICB3cml0ZVBhc3MoInA0Iik7Cis8L3NjcmlwdD4KKzxocj4KKzxwPkR5bmFtaWNhbGx5LWlu
c2VydGVkIHNjcmlwdCBlbGVtZW50czo8L3A+Cis8cD5Bc3luYyB0cnVlOjxzcGFuIGlkPSJwNSI+
RkFJTDwvc3Bhbj48L3A+Cis8c2NyaXB0PgoraWYgKGlzRHluYW1pY2FsbHlJbnNlcnRlZFNjcmlw
dEFzeW5jKHRydWUpID09PSB0cnVlKQorICAgIHdyaXRlUGFzcygicDUiKTsKKzwvc2NyaXB0Pgor
PHA+QXN5bmMgYWJzZW50OiA8c3BhbiBpZD0icDYiPkZBSUw8L3NwYW4+PC9wPgorPHNjcmlwdD4K
K2lmIChpc0R5bmFtaWNhbGx5SW5zZXJ0ZWRTY3JpcHRBc3luYyhmYWxzZSkgPT09IGZhbHNlKQor
ICAgIHdyaXRlUGFzcygicDYiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5j
LWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50
L3NjcmlwdC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWIwOTE3NGI3NmUy
ODU1MmZmNzkwMjExZGQwZTY3MTQ0OGUxNDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKK1Rlc3RzIHRoYXQgdGhlIGFzeW5jIGF0dHJpYnV0ZSBpcyBub3Qg
c3VwcG9ydGVkIGZvciBTVkcgc2NyaXB0cy4KKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLnN2ZyBiL0xheW91
dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWRlOTM0YTMyMjNlZWIyOGE0NzI4ZGQyMWRhNTA3NGZiNDA2Nzk5YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
YXN5bmMtYXR0ci5zdmcKQEAgLTAsMCArMSwyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8
c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5z
OnhodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBvbmxvYWQ9InRlc3QoKSI+Cis8
ZGVmcz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgaWYgKCFkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiczAiKS5hc3luYykKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInAwIikuaW5uZXJIVE1MID0gIlBBU1MiOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgaWQ9InMwIiB4bGluazpocmVmPSJyZXNvdXJjZXMvdGhpc1Nob3Vs
ZE5vdEV4aXN0Lm51bGwiIGFzeW5jPSJhc3luYyI+PC9zY3JpcHQ+Cis8L2RlZnM+Cis8Zm9yZWln
bk9iamVjdD4KKzx4aHRtbDpwPlRlc3RzIHRoYXQgdGhlIGFzeW5jIGF0dHJpYnV0ZSBpcyBub3Qg
c3VwcG9ydGVkIGZvciBTVkcgc2NyaXB0cy48L3hodG1sOnA+Cis8eGh0bWw6c3BhbiBpZD0icDAi
PkZBSUw8L3hodG1sOnNwYW4+Cis8L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAzYmI0YjUzZjg4
ZDVmMGE2MzdjNzJiOTQ2OGQ1OGE2ZDAzOGI3ZS4uNzg5ZGY5Njc0YTViYzg2YmUxZmZiYzVlMDU1
Mjc1MmIzZjY1MjBjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0wNi0wMSAgVG9ueSBHZW50aWxjb3Jl
ICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlY29nbml6ZSBhc3luYyBhdHRyaWJ1dGUgb24gSFRNTCBzY3JpcHQg
dGFncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
MDI2CisKKyAgICAgICAgVGhpcyBkb2VzIG5vdCBpbXBsZW1lbnQgYXN5bmMgYmVoYXZpb3IsIGl0
IG9ubHkgcGFyc2VzIHRoZSBhc3luYworICAgICAgICBhdHRyaWJ1dGUgZm9yIEhUTUwgc2NyaXB0
IHRhZ3MuIFNWRyBzY3JpcHQgdGFncyBjb250aW51ZSB0byBub3QKKyAgICAgICAgc3VwcG9ydCB0
aGUgYXN5bmMgYXR0cmlidXRlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MU2NyaXB0
RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sCisgICAgICAgICAgICAgICBzdmcvZG9tL1NW
R1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIuc3ZnCisKKyAgICAgICAgKiBkb20vU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6aXNB
c3luY2hyb25vdXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudERhdGE6OmlzRGVm
ZXJyZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnNldEFzeW5jKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTY3JpcHRFbGVtZW50OjpkZWZlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRsOgor
ICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NjcmlwdEVsZW1lbnQ6OmFzeW5jQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaDoKKwogMjAxMC0wNi0wMSAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAKaW5kZXggMGFjMDg0NmExMjQyMTA3YWYwNWU0Yzg5NTg0ODhhOWE0NDRhYjM5
Mi4uNTE4YWVhZGE3NGRkZWRmZTM0OGI5ZWY0NTMzZTJhZDNhNDNmOWM2OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKQEAgLTMwNSw2ICszMDUsMjAgQEAgU3RyaW5nIFNjcmlwdEVsZW1lbnREYXRhOjpz
Y3JpcHRDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdCh2YWwpOwogfQog
Citib29sIFNjcmlwdEVsZW1lbnREYXRhOjppc0FzeW5jaHJvbm91cygpIGNvbnN0Cit7CisgICAg
Ly8gT25seSBleHRlcm5hbCBzY3JpcHRzIG1heSBiZSBhc3luY2hyb25vdXMuCisgICAgLy8gU2Vl
OiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjYXR0ci1zY3JpcHQt
YXN5bmMKKyAgICByZXR1cm4gIW1fc2NyaXB0RWxlbWVudC0+c291cmNlQXR0cmlidXRlVmFsdWUo
KS5pc0VtcHR5KCkgJiYgbV9zY3JpcHRFbGVtZW50LT5hc3luY0F0dHJpYnV0ZVZhbHVlKCk7Cit9
CisKK2Jvb2wgU2NyaXB0RWxlbWVudERhdGE6OmlzRGVmZXJyZWQoKSBjb25zdAoreworICAgIC8v
IE9ubHkgZXh0ZXJuYWwgc2NyaXB0cyBtYXkgYmUgZGVmZXJyZWQgYW5kIGFzeW5jIHRydW1wcyBk
ZWZlciB0byBhbGxvdyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyAgICAvLyBTZWU6IGh0
dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNhdHRyLXNjcmlwdC1kZWZl
cgorICAgIHJldHVybiAhbV9zY3JpcHRFbGVtZW50LT5zb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpLmlz
RW1wdHkoKSAmJiAhbV9zY3JpcHRFbGVtZW50LT5hc3luY0F0dHJpYnV0ZVZhbHVlKCkgJiYgbV9z
Y3JpcHRFbGVtZW50LT5kZWZlckF0dHJpYnV0ZVZhbHVlKCk7Cit9CisKIFNjcmlwdEVsZW1lbnQq
IHRvU2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmIChlbGVtZW50LT5p
c0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRh
ZykpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmgKaW5kZXggOGNjODRmY2Q0OWVlYmU4YTJhNjY2NWU1MjU5ZGVhOGUw
ODIwNDZjMy4uYzY2M2U0Mzc2Mzg0MDgwNzY3YzExOGNiZDU3NDdjODk4NmNlMzdlNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
bGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBm
b3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBldmVudEF0
dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhc3luY0F0dHJpYnV0
ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0dHJpYnV0ZVZhbHVl
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKSA9IDA7CkBAIC03NCw2ICs3
Niw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzY3JpcHRDb250ZW50KCkgY29uc3Q7CiAgICAg
U3RyaW5nIHNjcmlwdENoYXJzZXQoKSBjb25zdDsKKyAgICBib29sIGlzQXN5bmNocm9ub3VzKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3Q7CiAKICAgICBFbGVtZW50KiBlbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRCeVBhcnNlcjsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4KaW5kZXggN2NkZTMyZjYyZmFjYmJiOTI1MjJiYzMwYmIxZDg4ZWM4ZDVmNzMz
Mi4uYWQxYjQxM2NkNGUzMGU5NDFkN2ZjMDRjZGQ3MDczZmYyYTg2ODU4MCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCkBAIC00Miw2ICs0Miw3IEBAIGFyaWEtdmFsdWVtYXgKIGFyaWEt
dmFsdWVtaW4KIGFyaWEtdmFsdWVub3cKIGFyaWEtdmFsdWV0ZXh0Cithc3luYwogYXV0b2NvbXBs
ZXRlCiBhdXRvZm9jdXMKIGF1dG9wbGF5CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAppbmRl
eCBmNGMzYWU4NTkxZjkzZmU2M2I4OTRmYmRiY2ZlMWQyYWJlZDI1NzA4Li5jODM1NjNhZDIyOGE2
NDQ5YTJhZmFlNjZmMmJmZGMxNTE1YTFhMmM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHAKQEAgLTE0OSw5ICsxNDksMTkgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0Q2hhcnNl
dChjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgIHNldEF0dHJpYnV0ZShjaGFyc2V0QXR0ciwgdmFs
dWUpOwogfQogCitib29sIEhUTUxTY3JpcHRFbGVtZW50Ojphc3luYygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGFzeW5jQXR0cmlidXRlVmFsdWUoKTsKK30KKwordm9pZCBIVE1MU2NyaXB0RWxlbWVu
dDo6c2V0QXN5bmMoYm9vbCBhc3luYykKK3sKKyAgICBzZXRBdHRyaWJ1dGUoYXN5bmNBdHRyLCBh
c3luYyA/ICIiIDogMCk7Cit9CisKIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmRlZmVyKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShkZWZlckF0dHIpLmlzTnVsbCgpOworICAg
IHJldHVybiBkZWZlckF0dHJpYnV0ZVZhbHVlKCk7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1l
bnQ6OnNldERlZmVyKGJvb2wgZGVmZXIpCkBAIC0yMjYsNiArMjM2LDE2IEBAIFN0cmluZyBIVE1M
U2NyaXB0RWxlbWVudDo6ZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShldmVudEF0dHIpLnN0cmluZygpOwogfQogCitib29sIEhUTUxTY3JpcHRFbGVt
ZW50Ojphc3luY0F0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWdldEF0dHJp
YnV0ZShhc3luY0F0dHIpLmlzTnVsbCgpOworfQorCitib29sIEhUTUxTY3JpcHRFbGVtZW50Ojpk
ZWZlckF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShk
ZWZlckF0dHIpLmlzTnVsbCgpOworfQorCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRj
aExvYWRFdmVudCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGEuaGF2ZUZpcmVkTG9hZEV2ZW50KCkp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCAxNGExMjY0MmVmYTU4YmJhNTc4NjUxYTVi
MzIwZGZlNDM3YTY1M2E1Li4zYzhlOGNlMDZmZWViNmI2YmYwNDU1OGU4OTYyYjE1ODYzZmMwZGRm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaApAQCAtNDcsNiArNDcsOSBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGNoYXJzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldENoYXJzZXQoY29uc3QgU3Ry
aW5nJik7CiAKKyAgICBib29sIGFzeW5jKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBc3luYyhib29s
KTsKKwogICAgIGJvb2wgZGVmZXIoKSBjb25zdDsKICAgICB2b2lkIHNldERlZmVyKGJvb2wpOwog
CkBAIC04NSw2ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGZvckF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBhc3luY0F0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaExvYWRFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVycm9y
RXZlbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5pZGwg
Yi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRsCmluZGV4IDg5ODU1MTJiMjFjZWFi
MWJlZDk2YjczMWVkNmRiZmVjNTFiM2NhYjYuLmZiOGYzM2E1MTAzOTQyZTQ3MjYwYTQyODcxNGM1
NmZmOGUzYjUxYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5p
ZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmlkbApAQCAtMjQsNiArMjQs
NyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyBodG1sRm9yOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBjaGFyc2V0OworICAgICAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBhc3luYzsKICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZGVmZXI7CiAgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzcmM7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0eXBlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAppbmRleCA2MWM2OGI2ZjE1NmE2ZjQxNmZiNmRhMmU3YTVj
YjA1OTIzMmVjM2NkLi5hYmU3N2E5MjMwMmUxZWZmNzE3M2MzOWRkMmYyYTNlMWQxOTM2OGFmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtMTk5LDYgKzE5OSwxNiBAQCBTdHJpbmcgU1ZH
U2NyaXB0RWxlbWVudDo6ZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQogCitib29sIFNWR1NjcmlwdEVsZW1lbnQ6OmFzeW5jQXR0cmlidXRlVmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTVkdTY3JpcHRFbGVtZW50
OjpkZWZlckF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIGJvb2wg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNl
VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1dl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAppbmRleCBiODY0YWQ1NjQ0YmRiMTkwNGM1MzRi
MWJiZjM2NmI1ZTBiMmZmZjlmLi43NzBkYzg5MDY4ZmQzMWNlOWE0NjFmODYwYzkzZTY4NmUzYzFk
YTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKKysrIGIvV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBhc3luY0F0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBkZWZlckF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaEVycm9yRXZlbnQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57631</attachid>
            <date>2010-06-02 00:26:25 -0700</date>
            <delta_ts>2010-06-20 10:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39026-20100602002624.patch</filename>
            <type>text/plain</type>
            <size>13019</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTc2NTA5NmY2MGNmNmU3ZGZkNjUxYzdhMmM5NjA2MmJhZTZjMzU5Li5iOThmZmMz
YjU0MTZjNTg2NjE4ZjYyZGJiMTRmZmE1M2U3MzZmZDQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDYtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRvIG1ha2Ug
c3VyZSBwYXJzaW5nIG9mIGFzeW5jIGF0dHJpYnV0ZSB3b3JrcyBmb3IgSFRNTCBzY3JpcHQgdGFn
cworICAgICAgICBhbmQgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBhc3luYyBpcyBub3QgcGFyc2Vk
IGZvciBTVkcgc2NyaXB0IHRhZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTAyNgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1l
bnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LWFzeW5jLWF0dHIuc3ZnOiBBZGRlZC4KKwogMjAxMC0wNi0wMiAgRGlyayBTY2h1bHplICA8a3Jp
dEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVuZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3lu
Yy1hdHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjhiZjRkZDYzMmRjMWM5ZjQwMmYyMzFh
ZTcwMzFhOTExMGRmYjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTYgQEAKK1RoaXMgdGVzdCBjaGVja3MgZm9yIHByb3BlciBwYXJzaW5nIG9mIHRoZSBhc3lu
YyBhdHRyaWJ1dGUgb24gSFRNTCBzY3JpcHQgdGFncy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgaXNBc3luYygnczAnKSBpcyBmYWxzZQorUEFTUyBpc0FzeW5jKCdzMScp
IGlzIHRydWUKK1BBU1MgaXNBc3luYygnczInKSBpcyB0cnVlCitQQVNTIGlzQXN5bmMoJ3MzJykg
aXMgdHJ1ZQorUEFTUyBpc0FzeW5jKCdzNCcpIGlzIHRydWUKK1BBU1MgaXNEeW5hbWljYWxseUlu
c2VydGVkU2NyaXB0QXN5bmModHJ1ZSkgaXMgdHJ1ZQorUEFTUyBpc0R5bmFtaWNhbGx5SW5zZXJ0
ZWRTY3JpcHRBc3luYyhmYWxzZSkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YTNmM2FmOTA1MmQ3MjliMzQ3MWRjYmI0NGE5NmU4MWIxNzZjYzBmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFz
eW5jLWF0dHIuaHRtbApAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9InMwIiBzcmM9Imlnbm9yZWQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0iczEiIHNyYz0iaWdub3JlZC5qcyIgYXN5bmM+PC9zY3JpcHQ+Cis8
c2NyaXB0IGlkPSJzMiIgc3JjPSJpZ25vcmVkLmpzIiBhc3luYz0iYXN5bmMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0iczMiIHNyYz0iaWdub3JlZC5qcyIgYXN5bmM9IkFTWU5DIj48L3NjcmlwdD4K
KzxzY3JpcHQgaWQ9InM0IiBzcmM9Imlnbm9yZWQuanMiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3QgY2hlY2tzIGZvciBwcm9wZXIgcGFy
c2luZyBvZiB0aGUgYXN5bmMgYXR0cmlidXRlIG9uIEhUTUwgc2NyaXB0IHRhZ3MuJyk7CisKK3Zh
ciBuZXh0U2NyaXB0SUQgPSAwOworCitmdW5jdGlvbiBpc0FzeW5jKGlkKQoreworICAgIHJldHVy
biBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuYXN5bmM7Cit9CisKK2Z1bmN0aW9uIGlzRHlu
YW1pY2FsbHlJbnNlcnRlZFNjcmlwdEFzeW5jKGFzeW5jKQoreworICAgIHZhciBpZCA9ICJzIiAr
IG5leHRTY3JpcHRJRCsrOworICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzY3JpcHQiKTsKKyAgICBzY3JpcHQuaWQgPSBpZDsKKyAgICBzY3JpcHQuc3JjID0gInJlc291
cmNlcy9zY3JpcHQtbG9hZC5qcyI7CisgICAgaWYgKGFzeW5jKQorICAgICAgICBzY3JpcHQuYXN5
bmMgPSAiYXN5bmMiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilb
MF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTsKKyAgICByZXR1cm4gaXNBc3luYyhpZCk7Cit9CisKK3No
b3VsZEJlRmFsc2UoImlzQXN5bmMoJ3MwJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNBc3luYygnczEn
KSIpOworc2hvdWxkQmVUcnVlKCJpc0FzeW5jKCdzMicpIik7CitzaG91bGRCZVRydWUoImlzQXN5
bmMoJ3MzJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNBc3luYygnczQnKSIpOworc2hvdWxkQmVUcnVl
KCJpc0R5bmFtaWNhbGx5SW5zZXJ0ZWRTY3JpcHRBc3luYyh0cnVlKSIpOworc2hvdWxkQmVGYWxz
ZSgiaXNEeW5hbWljYWxseUluc2VydGVkU2NyaXB0QXN5bmMoZmFsc2UpIik7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
YXN5bmMtYXR0ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YjA5MTc0
Yjc2ZTI4NTUyZmY3OTAyMTFkZDBlNjcxNDQ4ZTE0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdHMgdGhhdCB0aGUgYXN5bmMgYXR0cmlidXRlIGlz
IG5vdCBzdXBwb3J0ZWQgZm9yIFNWRyBzY3JpcHRzLgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIuc3ZnIGIv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZGU5MzRhMzIyM2VlYjI4YTQ3MjhkZDIxZGE1MDc0ZmI0MDY3OTlhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Nj
cmlwdC1hc3luYy1hdHRyLnN2ZwpAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
Pz4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIg
eG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIG9ubG9hZD0idGVzdCgp
Ij4KKzxkZWZzPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisKKyAgICBpZiAoIWRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzMCIpLmFzeW5jKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicDAiKS5pbm5lckhUTUwgPSAiUEFTUyI7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0iczAiIHhsaW5rOmhyZWY9InJlc291cmNlcy90aGlz
U2hvdWxkTm90RXhpc3QubnVsbCIgYXN5bmM9ImFzeW5jIj48L3NjcmlwdD4KKzwvZGVmcz4KKzxm
b3JlaWduT2JqZWN0PgorPHhodG1sOnA+VGVzdHMgdGhhdCB0aGUgYXN5bmMgYXR0cmlidXRlIGlz
IG5vdCBzdXBwb3J0ZWQgZm9yIFNWRyBzY3JpcHRzLjwveGh0bWw6cD4KKzx4aHRtbDpzcGFuIGlk
PSJwMCI+RkFJTDwveGh0bWw6c3Bhbj4KKzwvZm9yZWlnbk9iamVjdD4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDI4YzQ4
MTg3NTA1ZjAwYmU2ZmE3ZDE4M2E1YWQzNmNiN2NiYWQyLi4xNGVkNDUzNDE5N2M5MTc3MmJlYjE3
ODZmYjA1NzhmNWQ5MDA5ZjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEwLTA2LTAxICBUb255IEdlbnRp
bGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVjb2duaXplIGFzeW5jIGF0dHJpYnV0ZSBvbiBIVE1MIHNj
cmlwdCB0YWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzkwMjYKKworICAgICAgICBUaGlzIGRvZXMgbm90IGltcGxlbWVudCBhc3luYyBiZWhhdmlv
ciwgaXQgb25seSBwYXJzZXMgdGhlIGFzeW5jCisgICAgICAgIGF0dHJpYnV0ZSBmb3IgSFRNTCBz
Y3JpcHQgdGFncy4gU1ZHIHNjcmlwdCB0YWdzIGNvbnRpbnVlIHRvIG5vdAorICAgICAgICBzdXBw
b3J0IHRoZSBhc3luYyBhdHRyaWJ1dGUuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL0hUTUxT
Y3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5zdmcKKworICAgICAgICAqIGRv
bS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRh
Ojppc0FzeW5jaHJvbm91cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6
aXNEZWZlcnJlZCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojphc3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0QXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmRlZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRFbGVtZW50Ojphc3luY0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTY3JpcHRFbGVtZW50OjpkZWZlckF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBodG1s
L0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5p
ZGw6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTY3JpcHRFbGVtZW50OjpkZWZlckF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBz
dmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDEwLTA2LTAxICBEaXJrIFNjaHVsemUgIDxrcml0
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAppbmRleCAwYWMwODQ2YTEyNDIxMDdhZjA1ZTRjODk1ODQ4OGE5YTQ0
NGFiMzkyLi41MThhZWFkYTc0ZGRlZGZlMzQ4YjllZjQ1MzNlMmFkM2E0M2Y5YzY5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcApAQCAtMzA1LDYgKzMwNSwyMCBAQCBTdHJpbmcgU2NyaXB0RWxlbWVudERh
dGE6OnNjcmlwdENvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHZhbCk7
CiB9CiAKK2Jvb2wgU2NyaXB0RWxlbWVudERhdGE6OmlzQXN5bmNocm9ub3VzKCkgY29uc3QKK3sK
KyAgICAvLyBPbmx5IGV4dGVybmFsIHNjcmlwdHMgbWF5IGJlIGFzeW5jaHJvbm91cy4KKyAgICAv
LyBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNhdHRyLXNj
cmlwdC1hc3luYworICAgIHJldHVybiAhbV9zY3JpcHRFbGVtZW50LT5zb3VyY2VBdHRyaWJ1dGVW
YWx1ZSgpLmlzRW1wdHkoKSAmJiBtX3NjcmlwdEVsZW1lbnQtPmFzeW5jQXR0cmlidXRlVmFsdWUo
KTsKK30KKworYm9vbCBTY3JpcHRFbGVtZW50RGF0YTo6aXNEZWZlcnJlZCgpIGNvbnN0Cit7Cisg
ICAgLy8gT25seSBleHRlcm5hbCBzY3JpcHRzIG1heSBiZSBkZWZlcnJlZCBhbmQgYXN5bmMgdHJ1
bXBzIGRlZmVyIHRvIGFsbG93IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorICAgIC8vIFNl
ZTogaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2F0dHItc2NyaXB0
LWRlZmVyCisgICAgcmV0dXJuICFtX3NjcmlwdEVsZW1lbnQtPnNvdXJjZUF0dHJpYnV0ZVZhbHVl
KCkuaXNFbXB0eSgpICYmICFtX3NjcmlwdEVsZW1lbnQtPmFzeW5jQXR0cmlidXRlVmFsdWUoKSAm
JiBtX3NjcmlwdEVsZW1lbnQtPmRlZmVyQXR0cmlidXRlVmFsdWUoKTsKK30KKwogU2NyaXB0RWxl
bWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1l
bnQtPmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2Ny
aXB0VGFnKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCA4Y2M4NGZjZDQ5ZWViZThhMmE2NjY1ZTUyNTlk
ZWE4ZTA4MjA0NmMzLi5jNjYzZTQzNzYzODQwODA3NjdjMTE4Y2JkNTc0N2M4OTg2Y2UzN2U0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGZvckF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGV2
ZW50QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFzeW5jQXR0
cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRl
VmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpID0gMDsKQEAgLTc0
LDYgKzc2LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHNjcmlwdENvbnRlbnQoKSBjb25zdDsK
ICAgICBTdHJpbmcgc2NyaXB0Q2hhcnNldCgpIGNvbnN0OworICAgIGJvb2wgaXNBc3luY2hyb25v
dXMoKSBjb25zdDsKKyAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdDsKIAogICAgIEVsZW1lbnQq
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICBib29sIGNyZWF0ZWRC
eVBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEJ5UGFyc2VyOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgppbmRleCA3Y2RlMzJmNjJmYWNiYmI5MjUyMmJjMzBiYjFkODhlYzhk
NWY3MzMyLi5hZDFiNDEzY2Q0ZTMwZTk0MWQ3ZmMwNGNkZDcwNzNmZjJhODY4NTgwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTQyLDYgKzQyLDcgQEAgYXJpYS12YWx1ZW1heAog
YXJpYS12YWx1ZW1pbgogYXJpYS12YWx1ZW5vdwogYXJpYS12YWx1ZXRleHQKK2FzeW5jCiBhdXRv
Y29tcGxldGUKIGF1dG9mb2N1cwogYXV0b3BsYXkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
CmluZGV4IGY0YzNhZTg1OTFmOTNmZTYzYjg5NGZiZGJjZmUxZDJhYmVkMjU3MDguLmM4MzU2M2Fk
MjI4YTY0NDlhMmFmYWU2NmYyYmZkYzE1MTVhMWEyYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcApAQCAtMTQ5LDkgKzE0OSwxOSBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRD
aGFyc2V0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiAgICAgc2V0QXR0cmlidXRlKGNoYXJzZXRBdHRy
LCB2YWx1ZSk7CiB9CiAKK2Jvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmFzeW5jKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gYXN5bmNBdHRyaWJ1dGVWYWx1ZSgpOworfQorCit2b2lkIEhUTUxTY3JpcHRF
bGVtZW50OjpzZXRBc3luYyhib29sIGFzeW5jKQoreworICAgIHNldEF0dHJpYnV0ZShhc3luY0F0
dHIsIGFzeW5jID8gIiIgOiAwKTsKK30KKwogYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXIo
KSBjb25zdAogewotICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGRlZmVyQXR0cikuaXNOdWxsKCk7
CisgICAgcmV0dXJuIGRlZmVyQXR0cmlidXRlVmFsdWUoKTsKIH0KIAogdm9pZCBIVE1MU2NyaXB0
RWxlbWVudDo6c2V0RGVmZXIoYm9vbCBkZWZlcikKQEAgLTIyNiw2ICsyMzYsMTYgQEAgU3RyaW5n
IEhUTUxTY3JpcHRFbGVtZW50OjpldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKICAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKGV2ZW50QXR0cikuc3RyaW5nKCk7CiB9CiAKK2Jvb2wgSFRNTFNjcmlw
dEVsZW1lbnQ6OmFzeW5jQXR0cmlidXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiAhZ2V0
QXR0cmlidXRlKGFzeW5jQXR0cikuaXNOdWxsKCk7Cit9CisKK2Jvb2wgSFRNTFNjcmlwdEVsZW1l
bnQ6OmRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiAhZ2V0QXR0cmli
dXRlKGRlZmVyQXR0cikuaXNOdWxsKCk7Cit9CisKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRp
c3BhdGNoTG9hZEV2ZW50KCkKIHsKICAgICBBU1NFUlQoIW1fZGF0YS5oYXZlRmlyZWRMb2FkRXZl
bnQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCmluZGV4IDE0YTEyNjQyZWZhNThiYmE1Nzg2
NTFhNWIzMjBkZmU0MzdhNjUzYTUuLjNjOGU4Y2UwNmZlZWI2YjZiZjA0NTU4ZTg5NjJiMTU4NjNm
YzBkZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCkBAIC00Nyw2ICs0Nyw5IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgY2hhcnNldCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2hhcnNldChjb25z
dCBTdHJpbmcmKTsKIAorICAgIGJvb2wgYXN5bmMoKSBjb25zdDsKKyAgICB2b2lkIHNldEFzeW5j
KGJvb2wpOworCiAgICAgYm9vbCBkZWZlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0RGVmZXIoYm9v
bCk7CiAKQEAgLTg1LDYgKzg4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBsYW5n
dWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgZm9yQXR0cmli
dXRlVmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBldmVudEF0dHJpYnV0ZVZhbHVl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzeW5jQXR0cmlidXRlVmFsdWUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RXJyb3JFdmVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5pZGwKaW5kZXggODk4NTUxMmIy
MWNlYWIxYmVkOTZiNzMxZWQ2ZGJmZWM1MWIzY2FiNi4uZmI4ZjMzYTUxMDM5NDJlNDcyNjBhNDI4
NzE0YzU2ZmY4ZTNiNTFjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRsCkBAIC0yNCw2
ICsyNCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nIGh0bWxGb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBldmVudDsKICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGNoYXJzZXQ7CisgICAgICAgIGF0dHJp
YnV0ZSBib29sZWFuIGFzeW5jOwogICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBkZWZlcjsKICAg
ICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHNyYzsK
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5
cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCBiL1dlYkNv
cmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDYxYzY4YjZmMTU2YTZmNDE2ZmI2ZGEy
ZTdhNWNiMDU5MjMyZWMzY2QuLmFiZTc3YTkyMzAyZTFlZmY3MTczYzM5ZGQyZjJhM2UxZDE5MzY4
YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0xOTksNiArMTk5LDE2IEBAIFN0cmlu
ZyBTVkdTY3JpcHRFbGVtZW50OjpldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKK2Jvb2wgU1ZHU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFNWR1NjcmlwdEVs
ZW1lbnQ6OmRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CiAgICAg
Ym9vbCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEJhc2VWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5o
IGIvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmluZGV4IGI4NjRhZDU2NDRiZGIxOTA0
YzUzNGIxYmJmMzY2YjVlMGIyZmZmOWYuLjc3MGRjODkwNjhmZDMxY2U5YTQ2MWY4NjBjOTNlNjg2
ZTNjMWRhNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFnZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZvckF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50QXR0cmlidXRlVmFsdWUoKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBib29sIGFzeW5jQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRXJyb3JFdmVudCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59198</attachid>
            <date>2010-06-20 10:43:31 -0700</date>
            <delta_ts>2010-06-20 11:16:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39026-20100620104330.patch</filename>
            <type>text/plain</type>
            <size>15752</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNGRlNWQ1NjU2NDMyY2Y5NjBhMWQ3YjEzODgwMzE4MDlhOGYxZTEyLi4yOTI4ZDdk
YTAwNjI0ZDRiMTdlMWYyMjMzZmJiNzYyZjQwYzI4MTVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDYtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRvIG1ha2Ug
c3VyZSBwYXJzaW5nIG9mIGFzeW5jIGF0dHJpYnV0ZSB3b3JrcyBmb3IgSFRNTCBzY3JpcHQgdGFn
cworICAgICAgICBhbmQgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBhc3luYyBpcyBub3QgcGFyc2Vk
IGZvciBTVkcgc2NyaXB0IHRhZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTAyNgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1l
bnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LWFzeW5jLWF0dHIuc3ZnOiBBZGRlZC4KKwogMjAxMC0wNi0yMCAgUm9iZXJ0IEhvZ2FuICA8cm9i
ZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQt
YXN5bmMtYXR0ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0
RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I4YmY0
ZGQ2MzJkYzFjOWY0MDJmMjMxYWU3MDMxYTkxMTBkZmI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3QgY2hlY2tzIGZvciBwcm9wZXIg
cGFyc2luZyBvZiB0aGUgYXN5bmMgYXR0cmlidXRlIG9uIEhUTUwgc2NyaXB0IHRhZ3MuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzQXN5bmMoJ3MwJykgaXMgZmFsc2UK
K1BBU1MgaXNBc3luYygnczEnKSBpcyB0cnVlCitQQVNTIGlzQXN5bmMoJ3MyJykgaXMgdHJ1ZQor
UEFTUyBpc0FzeW5jKCdzMycpIGlzIHRydWUKK1BBU1MgaXNBc3luYygnczQnKSBpcyB0cnVlCitQ
QVNTIGlzRHluYW1pY2FsbHlJbnNlcnRlZFNjcmlwdEFzeW5jKHRydWUpIGlzIHRydWUKK1BBU1Mg
aXNEeW5hbWljYWxseUluc2VydGVkU2NyaXB0QXN5bmMoZmFsc2UpIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3lu
Yy1hdHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEzZjNhZjkwNTJkNzI5YjM0NzFkY2JiNDRhOTZlODFi
MTc2Y2MwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJzMCIgc3Jj
PSJpZ25vcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InMxIiBzcmM9Imlnbm9yZWQuanMi
IGFzeW5jPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0iczIiIHNyYz0iaWdub3JlZC5qcyIgYXN5bmM9
ImFzeW5jIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InMzIiBzcmM9Imlnbm9yZWQuanMiIGFzeW5j
PSJBU1lOQyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJzNCIgc3JjPSJpZ25vcmVkLmpzIiBhc3lu
Yz0idHJ1ZSI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0IGNo
ZWNrcyBmb3IgcHJvcGVyIHBhcnNpbmcgb2YgdGhlIGFzeW5jIGF0dHJpYnV0ZSBvbiBIVE1MIHNj
cmlwdCB0YWdzLicpOworCit2YXIgbmV4dFNjcmlwdElEID0gMDsKKworZnVuY3Rpb24gaXNBc3lu
YyhpZCkKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmFzeW5jOwor
fQorCitmdW5jdGlvbiBpc0R5bmFtaWNhbGx5SW5zZXJ0ZWRTY3JpcHRBc3luYyhhc3luYykKK3sK
KyAgICB2YXIgaWQgPSAicyIgKyBuZXh0U2NyaXB0SUQrKzsKKyAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgc2NyaXB0LmlkID0gaWQ7CisgICAg
c2NyaXB0LnNyYyA9ICJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiOworICAgIGlmIChhc3luYykK
KyAgICAgICAgc2NyaXB0LmFzeW5jID0gImFzeW5jIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7CisgICAgcmV0dXJuIGlz
QXN5bmMoaWQpOworfQorCitzaG91bGRCZUZhbHNlKCJpc0FzeW5jKCdzMCcpIik7CitzaG91bGRC
ZVRydWUoImlzQXN5bmMoJ3MxJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNBc3luYygnczInKSIpOwor
c2hvdWxkQmVUcnVlKCJpc0FzeW5jKCdzMycpIik7CitzaG91bGRCZVRydWUoImlzQXN5bmMoJ3M0
JykiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNEeW5hbWljYWxseUluc2VydGVkU2NyaXB0QXN5bmModHJ1
ZSkiKTsKK3Nob3VsZEJlRmFsc2UoImlzRHluYW1pY2FsbHlJbnNlcnRlZFNjcmlwdEFzeW5jKGZh
bHNlKSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Nj
cmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWIwOTE3NGI3NmUyODU1MmZmNzkwMjExZGQwZTY3MTQ0OGUxNDQwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Njcmlw
dC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3RzIHRoYXQgdGhl
IGFzeW5jIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBTVkcgc2NyaXB0cy4KKworUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Njcmlw
dC1hc3luYy1hdHRyLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9z
Y3JpcHQtYXN5bmMtYXR0ci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlOTM0YTMyMjNlZWIyOGE0NzI4ZGQy
MWRhNTA3NGZiNDA2Nzk5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20v
U1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5zdmcKQEAgLTAsMCArMSwyMCBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIiBvbmxvYWQ9InRlc3QoKSI+Cis8ZGVmcz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
fQorCisgICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczAiKS5hc3luYykKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAwIikuaW5uZXJIVE1MID0gIlBBU1MiOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InMwIiB4bGluazpo
cmVmPSJyZXNvdXJjZXMvdGhpc1Nob3VsZE5vdEV4aXN0Lm51bGwiIGFzeW5jPSJhc3luYyI+PC9z
Y3JpcHQ+Cis8L2RlZnM+Cis8Zm9yZWlnbk9iamVjdD4KKzx4aHRtbDpwPlRlc3RzIHRoYXQgdGhl
IGFzeW5jIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBTVkcgc2NyaXB0cy48L3hodG1s
OnA+Cis8eGh0bWw6c3BhbiBpZD0icDAiPkZBSUw8L3hodG1sOnNwYW4+Cis8L2ZvcmVpZ25PYmpl
Y3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZmZjZWMyYmE5ZTMxYjI0YTVhYTc3Y2Y4YmYxYTlhMGFkZWM5OGRmNC4uZGI2
OWExMWMyOGUxYTc0MjZkYTg4NmUzODZlNTlhYWRlOWE1Mzc5NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAx
MC0wNi0wMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY29nbml6ZSBhc3luYyBh
dHRyaWJ1dGUgb24gSFRNTCBzY3JpcHQgdGFncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MDI2CisKKyAgICAgICAgVGhpcyBkb2VzIG5vdCBpbXBs
ZW1lbnQgYXN5bmMgYmVoYXZpb3IsIGl0IG9ubHkgcGFyc2VzIHRoZSBhc3luYworICAgICAgICBh
dHRyaWJ1dGUgZm9yIEhUTUwgc2NyaXB0IHRhZ3MuIFNWRyBzY3JpcHQgdGFncyBjb250aW51ZSB0
byBub3QKKyAgICAgICAgc3VwcG9ydCB0aGUgYXN5bmMgYXR0cmlidXRlLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sCisg
ICAgICAgICAgICAgICBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIu
c3ZnCisKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFbGVtZW50RGF0YTo6aXNBc3luY2hyb25vdXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudERhdGE6OmlzRGVmZXJyZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0
RWxlbWVudDo6YXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnNl
dEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpkZWZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVWYWx1
ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmFzeW5jQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVW
YWx1ZSk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKwogMjAxMC0wNi0yMCAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cCBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDBhYzA4NDZhMTI0MjEwN2Fm
MDVlNGM4OTU4NDg4YTlhNDQ0YWIzOTIuLjUxOGFlYWRhNzRkZGVkZmUzNDhiOWVmNDUzM2UyYWQz
YTQzZjljNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0zMDUsNiArMzA1LDIwIEBAIFN0cmlu
ZyBTY3JpcHRFbGVtZW50RGF0YTo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQodmFsKTsKIH0KIAorYm9vbCBTY3JpcHRFbGVtZW50RGF0YTo6aXNBc3luY2hy
b25vdXMoKSBjb25zdAoreworICAgIC8vIE9ubHkgZXh0ZXJuYWwgc2NyaXB0cyBtYXkgYmUgYXN5
bmNocm9ub3VzLgorICAgIC8vIFNlZTogaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVy
dmlldy5odG1sI2F0dHItc2NyaXB0LWFzeW5jCisgICAgcmV0dXJuICFtX3NjcmlwdEVsZW1lbnQt
PnNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkuaXNFbXB0eSgpICYmIG1fc2NyaXB0RWxlbWVudC0+YXN5
bmNBdHRyaWJ1dGVWYWx1ZSgpOworfQorCitib29sIFNjcmlwdEVsZW1lbnREYXRhOjppc0RlZmVy
cmVkKCkgY29uc3QKK3sKKyAgICAvLyBPbmx5IGV4dGVybmFsIHNjcmlwdHMgbWF5IGJlIGRlZmVy
cmVkIGFuZCBhc3luYyB0cnVtcHMgZGVmZXIgdG8gYWxsb3cgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkuCisgICAgLy8gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3
Lmh0bWwjYXR0ci1zY3JpcHQtZGVmZXIKKyAgICByZXR1cm4gIW1fc2NyaXB0RWxlbWVudC0+c291
cmNlQXR0cmlidXRlVmFsdWUoKS5pc0VtcHR5KCkgJiYgIW1fc2NyaXB0RWxlbWVudC0+YXN5bmNB
dHRyaWJ1dGVWYWx1ZSgpICYmIG1fc2NyaXB0RWxlbWVudC0+ZGVmZXJBdHRyaWJ1dGVWYWx1ZSgp
OworfQorCiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpzY3JpcHRUYWcpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDhjYzg0ZmNkNDll
ZWJlOGEyYTY2NjVlNTI1OWRlYThlMDgyMDQ2YzMuLmM2NjNlNDM3NjM4NDA4MDc2N2MxMThjYmQ1
NzQ3Yzg5ODZjZTM3ZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAor
KysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZm9yQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgYXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaExvYWRFdmVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2
ZW50KCkgPSAwOwpAQCAtNzQsNiArNzYsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc2NyaXB0
Q29udGVudCgpIGNvbnN0OwogICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0KCkgY29uc3Q7CisgICAg
Ym9vbCBpc0FzeW5jaHJvbm91cygpIGNvbnN0OworICAgIGJvb2wgaXNEZWZlcnJlZCgpIGNvbnN0
OwogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQog
ICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQYXJz
ZXI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDkwYjI0OWE0YTE3NGRiMmYz
YzQ2NWVkNGZiODdiZTY5NjI4YWI2YTQuLjYwZDVkNzM5MWI0ODI4Y2MzZGVlMTc3OGI4NzlkMDJh
ODM1ZjVlYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4K
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtNDMsNiArNDMsNyBA
QCBhcmlhLXZhbHVlbWF4CiBhcmlhLXZhbHVlbWluCiBhcmlhLXZhbHVlbm93CiBhcmlhLXZhbHVl
dGV4dAorYXN5bmMKIGF1dG9jb21wbGV0ZQogYXV0b2ZvY3VzCiBhdXRvcGxheQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNGY2ZWM1NGU4OWMxNmI5Y2M3OWU1YzlkMGE2NjlhOWE0
ODY5YTQ4ZC4uNDhkYTRiOTRiN2Y2NjViMDNmZGUxZGQzZTQ1OGE1NDAxYTU0YzVmMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xNDksOSArMTQ5LDE5IEBAIHZvaWQgSFRNTFNj
cmlwdEVsZW1lbnQ6OnNldENoYXJzZXQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICBzZXRBdHRy
aWJ1dGUoY2hhcnNldEF0dHIsIHZhbHVlKTsKIH0KIAorYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6
YXN5bmMoKSBjb25zdAoreworICAgIHJldHVybiBhc3luY0F0dHJpYnV0ZVZhbHVlKCk7Cit9CisK
K3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEFzeW5jKGJvb2wgYXN5bmMpCit7CisgICAgc2V0
QXR0cmlidXRlKGFzeW5jQXR0ciwgYXN5bmMgPyAiIiA6IDApOworfQorCiBib29sIEhUTUxTY3Jp
cHRFbGVtZW50OjpkZWZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoZGVm
ZXJBdHRyKS5pc051bGwoKTsKKyAgICByZXR1cm4gZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpOwogfQog
CiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXREZWZlcihib29sIGRlZmVyKQpAQCAtMjI2LDYg
KzIzNiwxNiBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OmV2ZW50QXR0cmlidXRlVmFsdWUo
KSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZXZlbnRBdHRyKS5zdHJpbmcoKTsKIH0K
IAorYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoYXN5bmNBdHRyKS5pc051bGwoKTsKK30KKworYm9v
bCBIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFnZXRBdHRyaWJ1dGUoZGVmZXJBdHRyKS5pc051bGwoKTsKK30KKwogdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIEFTU0VSVCghbV9kYXRh
LmhhdmVGaXJlZExvYWRFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKaW5kZXggMTRh
MTI2NDJlZmE1OGJiYTU3ODY1MWE1YjMyMGRmZTQzN2E2NTNhNS4uM2M4ZThjZTA2ZmVlYjZiNmJm
MDQ1NThlODk2MmIxNTg2M2ZjMGRkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTQ3
LDYgKzQ3LDkgQEAgcHVibGljOgogICAgIFN0cmluZyBjaGFyc2V0KCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYpOwogCisgICAgYm9vbCBhc3luYygpIGNvbnN0Owor
ICAgIHZvaWQgc2V0QXN5bmMoYm9vbCk7CisKICAgICBib29sIGRlZmVyKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXREZWZlcihib29sKTsKIApAQCAtODUsNiArODgsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGV2
ZW50QXR0cmlidXRlVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXN5bmNBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50Lmlk
bAppbmRleCAyOWZmMzY3NTgwMWNjZDIxMjM1NWRkNDI4ZDJhNDQxOTUwZWYyYmIzLi4zOTliNWNk
MDMyYWY2Mzk0Yjk4NDQ0NjZhNWJjOGUwODBkZWMxYmZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5pZGwKQEAgLTI0LDYgKzI0LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3Q9Zm9yXSBET01TdHJpbmcgaHRtbEZvcjsKICAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0XSBET01TdHJpbmcgZXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9N
U3RyaW5nIGNoYXJzZXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiBhc3lu
YzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGRlZmVyOwogICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3RVUkxdIERPTVN0cmluZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDYx
YzY4YjZmMTU2YTZmNDE2ZmI2ZGEyZTdhNWNiMDU5MjMyZWMzY2QuLmFiZTc3YTkyMzAyZTFlZmY3
MTczYzM5ZGQyZjJhM2UxZDE5MzY4YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0x
OTksNiArMTk5LDE2IEBAIFN0cmluZyBTVkdTY3JpcHRFbGVtZW50OjpldmVudEF0dHJpYnV0ZVZh
bHVlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK2Jvb2wgU1ZHU2NyaXB0RWxl
bWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFNWR1NjcmlwdEVsZW1lbnQ6OmRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdAor
eworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRj
aExvYWRFdmVudCgpCiB7CiAgICAgYm9vbCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmlu
ZGV4IGI4NjRhZDU2NDRiZGIxOTA0YzUzNGIxYmJmMzY2YjVlMGIyZmZmOWYuLjc3MGRjODkwNjhm
ZDMxY2U5YTQ2MWY4NjBjOTNlNjg2ZTNjMWRhNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAg
LTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGZvckF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50
QXR0cmlidXRlVmFsdWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGFzeW5jQXR0cmli
dXRlVmFsdWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFs
dWUoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmNwcm9qIGIvV2ViS2l0VG9vbHMv
V2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmNwcm9qCmluZGV4IDdjNGMzNWM4YTFkM2IwMjQyMjM5
YzFhNDI1NzJhNThhNjFjMDFlMWQuLjQ1NDY4NjVjZWMyN2ZjNDcwN2Y2ZTFjMGU2OTljODRlNTBm
MDhmYWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZj
cHJvagorKysgYi9XZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2oKQEAg
LTU2LDcgKzU2LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJ
TGlua0xpYnJhcnlEZXBlbmRlbmNpZXM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzPSJjb21kbGczMi5saWIgZ2RpMzIubGliIGNvbWN0bDMyLmxpYiBzaGx3YXBpLmxpYiB1c2Vy
MzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgV2ViS2l0R1VJRCQoV2ViS2l0Q29uZmlnU3Vm
Zml4KS5saWIgV2ViS2l0JChXZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiINCisJCQkJQWRkaXRp
b25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIHNobHdhcGkubGliIHVzZXIzMi5saWIgb2xl
MzIubGliIG9sZWF1dDMyLmxpYiBXZWJLaXRHVUlEJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBX
ZWJLaXQkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9
IjIiDQogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxsaWImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlwuLlwuLlwmcXVvdDsiDQog
CQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCkBAIC0xMzQsNyArMTM0LDcgQEAK
IAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUxpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPSJm
YWxzZSINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiYjeDBEOyYjeDBBOyINCi0JCQkJQWRkaXRp
b25hbERlcGVuZGVuY2llcz0iY29tZGxnMzIubGliIGdkaTMyLmxpYiBjb21jdGwzMi5saWIgc2hs
d2FwaS5saWIgdXNlcjMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIFdlYktpdEdVSUQkKFdl
YktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYktpdCQoV2ViS2l0RExMQ29uZmlnU3VmZml4KS5saWIi
DQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBzaGx3YXBpLmxpYiB1
c2VyMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgV2ViS2l0R1VJRCQoV2ViS2l0Q29uZmln
U3VmZml4KS5saWIgV2ViS2l0JChXZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiINCiAJCQkJTGlu
a0luY3JlbWVudGFsPSIxIg0KIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSImcXVv
dDskKFdlYktpdE91dHB1dERpcilcbGliJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cLi5c
Li5cJnF1b3Q7Ig0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQpAQCAtMjEy
LDcgKzIxMiw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUxp
bmtMaWJyYXJ5RGVwZW5kZW5jaWVzPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2ll
cz0iY29tZGxnMzIubGliIGdkaTMyLmxpYiBjb21jdGwzMi5saWIgc2hsd2FwaS5saWIgdXNlcjMy
LmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIFdlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZp
eCkubGliIFdlYktpdCQoV2ViS2l0RExMQ29uZmlnU3VmZml4KS5saWIiDQorCQkJCUFkZGl0aW9u
YWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBzaGx3YXBpLmxpYiB1c2VyMzIubGliIG9sZTMy
LmxpYiBvbGVhdXQzMi5saWIgV2ViS2l0R1VJRCQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIgV2Vi
S2l0JChXZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiINCiAJCQkJTGlua0luY3JlbWVudGFsPSIy
Ig0KIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1
dERpcilcbGliJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cLi5cLi5cJnF1b3Q7Ig0KIAkJ
CQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQpAQCAtMjg4LDcgKzI4OCw3IEBACiAJ
CQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUxpbmtMaWJyYXJ5RGVwZW5k
ZW5jaWVzPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tZGxnMzIubGli
IGdkaTMyLmxpYiBjb21jdGwzMi5saWIgc2hsd2FwaS5saWIgdXNlcjMyLmxpYiBvbGUzMi5saWIg
b2xlYXV0MzIubGliIFdlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYktpdCQo
V2ViS2l0RExMQ29uZmlnU3VmZml4KS5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9
ImNvbWN0bDMyLmxpYiBzaGx3YXBpLmxpYiB1c2VyMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5s
aWIgV2ViS2l0R1VJRCQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIgV2ViS2l0JChXZWJLaXRETExD
b25maWdTdWZmaXgpLmxpYiINCiAJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KIAkJCQlBZGRpdGlv
bmFsTGlicmFyeURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1dERpcilcbGliJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcilcLi5cLi5cLi5cJnF1b3Q7Ig0KIAkJCQlHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb249InRydWUiDQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59199</attachid>
            <date>2010-06-20 10:57:56 -0700</date>
            <delta_ts>2010-06-20 18:05:27 -0700</delta_ts>
            <desc>Sync up and remove a stray diff</desc>
            <filename>bug-39026-20100620105754.patch</filename>
            <type>text/plain</type>
            <size>12983</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNGRlNWQ1NjU2NDMyY2Y5NjBhMWQ3YjEzODgwMzE4MDlhOGYxZTEyLi4yOTI4ZDdk
YTAwNjI0ZDRiMTdlMWYyMjMzZmJiNzYyZjQwYzI4MTVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDYtMDEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRvIG1ha2Ug
c3VyZSBwYXJzaW5nIG9mIGFzeW5jIGF0dHJpYnV0ZSB3b3JrcyBmb3IgSFRNTCBzY3JpcHQgdGFn
cworICAgICAgICBhbmQgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBhc3luYyBpcyBub3QgcGFyc2Vk
IGZvciBTVkcgc2NyaXB0IHRhZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTAyNgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1l
bnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LWFzeW5jLWF0dHIuc3ZnOiBBZGRlZC4KKwogMjAxMC0wNi0yMCAgUm9iZXJ0IEhvZ2FuICA8cm9i
ZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQt
YXN5bmMtYXR0ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0
RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I4YmY0
ZGQ2MzJkYzFjOWY0MDJmMjMxYWU3MDMxYTkxMTBkZmI4MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3QgY2hlY2tzIGZvciBwcm9wZXIg
cGFyc2luZyBvZiB0aGUgYXN5bmMgYXR0cmlidXRlIG9uIEhUTUwgc2NyaXB0IHRhZ3MuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlzQXN5bmMoJ3MwJykgaXMgZmFsc2UK
K1BBU1MgaXNBc3luYygnczEnKSBpcyB0cnVlCitQQVNTIGlzQXN5bmMoJ3MyJykgaXMgdHJ1ZQor
UEFTUyBpc0FzeW5jKCdzMycpIGlzIHRydWUKK1BBU1MgaXNBc3luYygnczQnKSBpcyB0cnVlCitQ
QVNTIGlzRHluYW1pY2FsbHlJbnNlcnRlZFNjcmlwdEFzeW5jKHRydWUpIGlzIHRydWUKK1BBU1Mg
aXNEeW5hbWljYWxseUluc2VydGVkU2NyaXB0QXN5bmMoZmFsc2UpIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3lu
Yy1hdHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEzZjNhZjkwNTJkNzI5YjM0NzFkY2JiNDRhOTZlODFi
MTc2Y2MwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJzMCIgc3Jj
PSJpZ25vcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InMxIiBzcmM9Imlnbm9yZWQuanMi
IGFzeW5jPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0iczIiIHNyYz0iaWdub3JlZC5qcyIgYXN5bmM9
ImFzeW5jIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InMzIiBzcmM9Imlnbm9yZWQuanMiIGFzeW5j
PSJBU1lOQyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJzNCIgc3JjPSJpZ25vcmVkLmpzIiBhc3lu
Yz0idHJ1ZSI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0IGNo
ZWNrcyBmb3IgcHJvcGVyIHBhcnNpbmcgb2YgdGhlIGFzeW5jIGF0dHJpYnV0ZSBvbiBIVE1MIHNj
cmlwdCB0YWdzLicpOworCit2YXIgbmV4dFNjcmlwdElEID0gMDsKKworZnVuY3Rpb24gaXNBc3lu
YyhpZCkKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmFzeW5jOwor
fQorCitmdW5jdGlvbiBpc0R5bmFtaWNhbGx5SW5zZXJ0ZWRTY3JpcHRBc3luYyhhc3luYykKK3sK
KyAgICB2YXIgaWQgPSAicyIgKyBuZXh0U2NyaXB0SUQrKzsKKyAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgc2NyaXB0LmlkID0gaWQ7CisgICAg
c2NyaXB0LnNyYyA9ICJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiOworICAgIGlmIChhc3luYykK
KyAgICAgICAgc2NyaXB0LmFzeW5jID0gImFzeW5jIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7CisgICAgcmV0dXJuIGlz
QXN5bmMoaWQpOworfQorCitzaG91bGRCZUZhbHNlKCJpc0FzeW5jKCdzMCcpIik7CitzaG91bGRC
ZVRydWUoImlzQXN5bmMoJ3MxJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNBc3luYygnczInKSIpOwor
c2hvdWxkQmVUcnVlKCJpc0FzeW5jKCdzMycpIik7CitzaG91bGRCZVRydWUoImlzQXN5bmMoJ3M0
JykiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNEeW5hbWljYWxseUluc2VydGVkU2NyaXB0QXN5bmModHJ1
ZSkiKTsKK3Nob3VsZEJlRmFsc2UoImlzRHluYW1pY2FsbHlJbnNlcnRlZFNjcmlwdEFzeW5jKGZh
bHNlKSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Nj
cmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWIwOTE3NGI3NmUyODU1MmZmNzkwMjExZGQwZTY3MTQ0OGUxNDQwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Njcmlw
dC1hc3luYy1hdHRyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3RzIHRoYXQgdGhl
IGFzeW5jIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBTVkcgc2NyaXB0cy4KKworUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Njcmlw
dC1hc3luYy1hdHRyLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9z
Y3JpcHQtYXN5bmMtYXR0ci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlOTM0YTMyMjNlZWIyOGE0NzI4ZGQy
MWRhNTA3NGZiNDA2Nzk5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20v
U1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5zdmcKQEAgLTAsMCArMSwyMCBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIiBvbmxvYWQ9InRlc3QoKSI+Cis8ZGVmcz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
fQorCisgICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczAiKS5hc3luYykKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAwIikuaW5uZXJIVE1MID0gIlBBU1MiOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InMwIiB4bGluazpo
cmVmPSJyZXNvdXJjZXMvdGhpc1Nob3VsZE5vdEV4aXN0Lm51bGwiIGFzeW5jPSJhc3luYyI+PC9z
Y3JpcHQ+Cis8L2RlZnM+Cis8Zm9yZWlnbk9iamVjdD4KKzx4aHRtbDpwPlRlc3RzIHRoYXQgdGhl
IGFzeW5jIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBTVkcgc2NyaXB0cy48L3hodG1s
OnA+Cis8eGh0bWw6c3BhbiBpZD0icDAiPkZBSUw8L3hodG1sOnNwYW4+Cis8L2ZvcmVpZ25PYmpl
Y3Q+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZmZjZWMyYmE5ZTMxYjI0YTVhYTc3Y2Y4YmYxYTlhMGFkZWM5OGRmNC4uZGI2
OWExMWMyOGUxYTc0MjZkYTg4NmUzODZlNTlhYWRlOWE1Mzc5NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAx
MC0wNi0wMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY29nbml6ZSBhc3luYyBh
dHRyaWJ1dGUgb24gSFRNTCBzY3JpcHQgdGFncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MDI2CisKKyAgICAgICAgVGhpcyBkb2VzIG5vdCBpbXBs
ZW1lbnQgYXN5bmMgYmVoYXZpb3IsIGl0IG9ubHkgcGFyc2VzIHRoZSBhc3luYworICAgICAgICBh
dHRyaWJ1dGUgZm9yIEhUTUwgc2NyaXB0IHRhZ3MuIFNWRyBzY3JpcHQgdGFncyBjb250aW51ZSB0
byBub3QKKyAgICAgICAgc3VwcG9ydCB0aGUgYXN5bmMgYXR0cmlidXRlLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtYXN5bmMtYXR0ci5odG1sCisg
ICAgICAgICAgICAgICBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWFzeW5jLWF0dHIu
c3ZnCisKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFbGVtZW50RGF0YTo6aXNBc3luY2hyb25vdXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudERhdGE6OmlzRGVmZXJyZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0
RWxlbWVudDo6YXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnNl
dEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpkZWZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVWYWx1
ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmFzeW5jQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVW
YWx1ZSk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKwogMjAxMC0wNi0yMCAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cCBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDBhYzA4NDZhMTI0MjEwN2Fm
MDVlNGM4OTU4NDg4YTlhNDQ0YWIzOTIuLjUxOGFlYWRhNzRkZGVkZmUzNDhiOWVmNDUzM2UyYWQz
YTQzZjljNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0zMDUsNiArMzA1LDIwIEBAIFN0cmlu
ZyBTY3JpcHRFbGVtZW50RGF0YTo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQodmFsKTsKIH0KIAorYm9vbCBTY3JpcHRFbGVtZW50RGF0YTo6aXNBc3luY2hy
b25vdXMoKSBjb25zdAoreworICAgIC8vIE9ubHkgZXh0ZXJuYWwgc2NyaXB0cyBtYXkgYmUgYXN5
bmNocm9ub3VzLgorICAgIC8vIFNlZTogaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVy
dmlldy5odG1sI2F0dHItc2NyaXB0LWFzeW5jCisgICAgcmV0dXJuICFtX3NjcmlwdEVsZW1lbnQt
PnNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkuaXNFbXB0eSgpICYmIG1fc2NyaXB0RWxlbWVudC0+YXN5
bmNBdHRyaWJ1dGVWYWx1ZSgpOworfQorCitib29sIFNjcmlwdEVsZW1lbnREYXRhOjppc0RlZmVy
cmVkKCkgY29uc3QKK3sKKyAgICAvLyBPbmx5IGV4dGVybmFsIHNjcmlwdHMgbWF5IGJlIGRlZmVy
cmVkIGFuZCBhc3luYyB0cnVtcHMgZGVmZXIgdG8gYWxsb3cgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkuCisgICAgLy8gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3
Lmh0bWwjYXR0ci1zY3JpcHQtZGVmZXIKKyAgICByZXR1cm4gIW1fc2NyaXB0RWxlbWVudC0+c291
cmNlQXR0cmlidXRlVmFsdWUoKS5pc0VtcHR5KCkgJiYgIW1fc2NyaXB0RWxlbWVudC0+YXN5bmNB
dHRyaWJ1dGVWYWx1ZSgpICYmIG1fc2NyaXB0RWxlbWVudC0+ZGVmZXJBdHRyaWJ1dGVWYWx1ZSgp
OworfQorCiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpzY3JpcHRUYWcpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDhjYzg0ZmNkNDll
ZWJlOGEyYTY2NjVlNTI1OWRlYThlMDgyMDQ2YzMuLmM2NjNlNDM3NjM4NDA4MDc2N2MxMThjYmQ1
NzQ3Yzg5ODZjZTM3ZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAor
KysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZm9yQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgYXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaExvYWRFdmVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2
ZW50KCkgPSAwOwpAQCAtNzQsNiArNzYsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc2NyaXB0
Q29udGVudCgpIGNvbnN0OwogICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0KCkgY29uc3Q7CisgICAg
Ym9vbCBpc0FzeW5jaHJvbm91cygpIGNvbnN0OworICAgIGJvb2wgaXNEZWZlcnJlZCgpIGNvbnN0
OwogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQog
ICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQYXJz
ZXI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDkwYjI0OWE0YTE3NGRiMmYz
YzQ2NWVkNGZiODdiZTY5NjI4YWI2YTQuLjYwZDVkNzM5MWI0ODI4Y2MzZGVlMTc3OGI4NzlkMDJh
ODM1ZjVlYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4K
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtNDMsNiArNDMsNyBA
QCBhcmlhLXZhbHVlbWF4CiBhcmlhLXZhbHVlbWluCiBhcmlhLXZhbHVlbm93CiBhcmlhLXZhbHVl
dGV4dAorYXN5bmMKIGF1dG9jb21wbGV0ZQogYXV0b2ZvY3VzCiBhdXRvcGxheQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNGY2ZWM1NGU4OWMxNmI5Y2M3OWU1YzlkMGE2NjlhOWE0
ODY5YTQ4ZC4uNDhkYTRiOTRiN2Y2NjViMDNmZGUxZGQzZTQ1OGE1NDAxYTU0YzVmMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xNDksOSArMTQ5LDE5IEBAIHZvaWQgSFRNTFNj
cmlwdEVsZW1lbnQ6OnNldENoYXJzZXQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICBzZXRBdHRy
aWJ1dGUoY2hhcnNldEF0dHIsIHZhbHVlKTsKIH0KIAorYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6
YXN5bmMoKSBjb25zdAoreworICAgIHJldHVybiBhc3luY0F0dHJpYnV0ZVZhbHVlKCk7Cit9CisK
K3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEFzeW5jKGJvb2wgYXN5bmMpCit7CisgICAgc2V0
QXR0cmlidXRlKGFzeW5jQXR0ciwgYXN5bmMgPyAiIiA6IDApOworfQorCiBib29sIEhUTUxTY3Jp
cHRFbGVtZW50OjpkZWZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoZGVm
ZXJBdHRyKS5pc051bGwoKTsKKyAgICByZXR1cm4gZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpOwogfQog
CiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXREZWZlcihib29sIGRlZmVyKQpAQCAtMjI2LDYg
KzIzNiwxNiBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OmV2ZW50QXR0cmlidXRlVmFsdWUo
KSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZXZlbnRBdHRyKS5zdHJpbmcoKTsKIH0K
IAorYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoYXN5bmNBdHRyKS5pc051bGwoKTsKK30KKworYm9v
bCBIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFnZXRBdHRyaWJ1dGUoZGVmZXJBdHRyKS5pc051bGwoKTsKK30KKwogdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIEFTU0VSVCghbV9kYXRh
LmhhdmVGaXJlZExvYWRFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKaW5kZXggMTRh
MTI2NDJlZmE1OGJiYTU3ODY1MWE1YjMyMGRmZTQzN2E2NTNhNS4uM2M4ZThjZTA2ZmVlYjZiNmJm
MDQ1NThlODk2MmIxNTg2M2ZjMGRkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTQ3
LDYgKzQ3LDkgQEAgcHVibGljOgogICAgIFN0cmluZyBjaGFyc2V0KCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYpOwogCisgICAgYm9vbCBhc3luYygpIGNvbnN0Owor
ICAgIHZvaWQgc2V0QXN5bmMoYm9vbCk7CisKICAgICBib29sIGRlZmVyKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXREZWZlcihib29sKTsKIApAQCAtODUsNiArODgsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGV2
ZW50QXR0cmlidXRlVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXN5bmNBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50Lmlk
bAppbmRleCAyOWZmMzY3NTgwMWNjZDIxMjM1NWRkNDI4ZDJhNDQxOTUwZWYyYmIzLi4zOTliNWNk
MDMyYWY2Mzk0Yjk4NDQ0NjZhNWJjOGUwODBkZWMxYmZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5pZGwKQEAgLTI0LDYgKzI0LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3Q9Zm9yXSBET01TdHJpbmcgaHRtbEZvcjsKICAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0XSBET01TdHJpbmcgZXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9N
U3RyaW5nIGNoYXJzZXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiBhc3lu
YzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGRlZmVyOwogICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3RVUkxdIERPTVN0cmluZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDYx
YzY4YjZmMTU2YTZmNDE2ZmI2ZGEyZTdhNWNiMDU5MjMyZWMzY2QuLmFiZTc3YTkyMzAyZTFlZmY3
MTczYzM5ZGQyZjJhM2UxZDE5MzY4YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0x
OTksNiArMTk5LDE2IEBAIFN0cmluZyBTVkdTY3JpcHRFbGVtZW50OjpldmVudEF0dHJpYnV0ZVZh
bHVlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK2Jvb2wgU1ZHU2NyaXB0RWxl
bWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFNWR1NjcmlwdEVsZW1lbnQ6OmRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdAor
eworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRj
aExvYWRFdmVudCgpCiB7CiAgICAgYm9vbCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmlu
ZGV4IGI4NjRhZDU2NDRiZGIxOTA0YzUzNGIxYmJmMzY2YjVlMGIyZmZmOWYuLjc3MGRjODkwNjhm
ZDMxY2U5YTQ2MWY4NjBjOTNlNjg2ZTNjMWRhNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAg
LTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGZvckF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50
QXR0cmlidXRlVmFsdWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGFzeW5jQXR0cmli
dXRlVmFsdWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFs
dWUoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>