<?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>25562</bug_id>
          
          <creation_ts>2009-05-05 04:18:04 -0700</creation_ts>
          <short_desc>Potential crash after ApplicationCacheStorage::storeNewestCache() fails.</short_desc>
          <delta_ts>2009-06-04 13:07:29 -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>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andreip</cc>
    
    <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119947</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-05 04:18:04 -0700</bug_when>
    <thetext>In ApplicationCacheGroup.cpp:736 we have:

(...)
cacheStorage().storeNewestCache(this, maxAppCacheSize());
if (oldNewestCache)
    cacheStorage().remove(oldNewestCache.get());
postListenerTask(someSuccessCallback);
(...)

The problem with this is that the return value of
cacheStorage().storeNewestCache() is never checked. If it fails (e.g. the
user&apos;s data partition if full), the code should fire an error event and bail
out. Instead, the existing newest cache is wiped out, thereby leaving an orphan
cache group in the CachedGroups table. This orphan cache group now points to a
non-existing &quot;newest cache&quot; so next time this group will be loaded, there will
be no associated manifest resource and an assertion will fire in
applicationcachegroup.cpp:597:

ApplicationCacheResource* newestManifest = m_newestCache-&gt;manifestResource();
ASSERT(newestManifest);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119949</commentid>
    <comment_count>1</comment_count>
      <attachid>30017</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-05 04:34:08 -0700</bug_when>
    <thetext>Created attachment 30017
Check return value of ApplicationCacheStorage::storeNewestCache()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119953</commentid>
    <comment_count>2</comment_count>
      <attachid>30017</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-05 05:30:43 -0700</bug_when>
    <thetext>Comment on attachment 30017
Check return value of ApplicationCacheStorage::storeNewestCache()

+        Check return value of ApplicationCacheStorage::storeNewestCache()
+        at its call site in ApplicationCacheGroup::checkIfLoadIsComplete().
+        https://bugs.webkit.org/show_bug.cgi?id=25562
+
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):

I&apos;d structure the ChangeLog differently:

        https://bugs.webkit.org/show_bug.cgi?id=25562
        Potential crash after ApplicationCacheStorage::storeNewestCache() fails

        * loader/appcache/ApplicationCacheGroup.cpp:
        (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):
        Check return value of ApplicationCacheStorage::storeNewestCache(), and &lt;...&gt;
        if it failed.

+            // We failed to store the new cache. Report an error.
+            postListenerTask(&amp;DOMApplicationCache::callErrorListener, m_associatedDocumentLoaders);

Is this sufficient? I would expect cache failure steps to be run &lt;http://www.whatwg.org/specs/web-apps/current-work/#cache-failure-steps&gt;, just like in case when subresource loading fails. With this code, we just get a non-stored newest cache, which will likely cause problems later on.

r-, because I think that cache failure steps need to be run here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120089</commentid>
    <comment_count>3</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-06 05:39:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 30017 [review])
&gt; +        Check return value of ApplicationCacheStorage::storeNewestCache()
&gt; +        at its call site in ApplicationCacheGroup::checkIfLoadIsComplete().
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25562
&gt; +
&gt; +        * loader/appcache/ApplicationCacheGroup.cpp:
&gt; +        (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):
&gt; 
&gt; I&apos;d structure the ChangeLog differently:
&gt; 
&gt;         https://bugs.webkit.org/show_bug.cgi?id=25562
&gt;         Potential crash after ApplicationCacheStorage::storeNewestCache() fails
&gt; 

Done.

&gt;         * loader/appcache/ApplicationCacheGroup.cpp:
&gt;         (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):
&gt;         Check return value of ApplicationCacheStorage::storeNewestCache(), and
&gt; &lt;...&gt;
&gt;         if it failed.
&gt; 
&gt; +            // We failed to store the new cache. Report an error.
&gt; +            postListenerTask(&amp;DOMApplicationCache::callErrorListener,
&gt; m_associatedDocumentLoaders);
&gt; 
&gt; Is this sufficient? I would expect cache failure steps to be run
&gt; &lt;http://www.whatwg.org/specs/web-apps/current-work/#cache-failure-steps&gt;, just
&gt; like in case when subresource loading fails. With this code, we just get a
&gt; non-stored newest cache, which will likely cause problems later on.
&gt; 

Done. 

New patch uploaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120090</commentid>
    <comment_count>4</comment_count>
      <attachid>30047</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-06 05:40:36 -0700</bug_when>
    <thetext>Created attachment 30047
Fix for 25562 (take 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120095</commentid>
    <comment_count>5</comment_count>
      <attachid>30048</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-06 07:39:06 -0700</bug_when>
    <thetext>Created attachment 30048
30047: Fix for 25562 (take 3)

Uploading the correct patch this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120261</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-07 03:58:52 -0700</bug_when>
    <thetext>I&apos;m yet to think through what happens here, but here are some preliminary comments.

It would be easier to understand this patch if it had detailed per-function comments in the ChangeLog.

+            mainResourceCache-&gt;group()-&gt;associateDocumentLoaderWithCache(documentLoader, mainResourceCache, false);

We are not doing this in code consistently, but we try to stop using booleans as parameters in cases like this, which are difficult to read. You could define an enum to have named parameters, or you could split this function in two.

+void ApplicationCacheGroup::associateDocumentLoaderWithCache(DocumentLoader* loader, ApplicationCache* cache, bool wasPendingEntry)

There is a slight clash of terminology between HTML5 and WebCore - the pending entries correspond to document loaders, not to any entries in m_pendingEntries map. My choice was to have a comment before definition m_pendingMasterResourceLoaders, and to avoid using the word &quot;entry&quot; for pending master resource loaders. The argument name doesn&apos;t follow this convention.

What are the possible side effects of cacheStorage().storeNewestCache() that need to be undone when this function returns false?

+    // The mapped flag is true if the loader was a &apos;pending master entry&apos; and false otherwise.

This comment could be a little more helpful if it had some sort of a hint at why it is important to remember this forever (my guess is that it&apos;s transient information that is only necessary during update, in which case it would be best to keep it in a separate data member).

It&apos;s too bad that we don&apos;t have any way to test this. One way to simulate errors would be to create a shim library for sqlite that would return errors when asked to. That&apos;s out of the scope for this bug, but would be extremely helpful for improving appcache robustness, as well as other uses of sqlite in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120262</commentid>
    <comment_count>7</comment_count>
      <attachid>30048</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-07 04:04:40 -0700</bug_when>
    <thetext>Comment on attachment 30048
30047: Fix for 25562 (take 3)

Oh yes, and marking r- to get this out of review queue for now, as this needs some more work in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121039</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-13 08:48:18 -0700</bug_when>
    <thetext>A notable discrepancy between WebCore implementation and the HTML5 cache update algorithm is that in HTML5, master entries are not removed from the list of pending master entries after each one is downloaded. While there is of course no requirement to follow the HTML5 algorithm as long as observable effects are the same, in this case it might make code simpler and easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123263</commentid>
    <comment_count>9</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-27 04:26:53 -0700</bug_when>
    <thetext>Hi Alexey,

Thanks a lot for the review. Back from vacation and a work trip so I can get back to fixing this bug:

(In reply to comment #6)
&gt; I&apos;m yet to think through what happens here, but here are some preliminary
&gt; comments.
&gt; 
&gt; It would be easier to understand this patch if it had detailed per-function
&gt; comments in the ChangeLog.
&gt; 

Added.

&gt; +           
&gt; mainResourceCache-&gt;group()-&gt;associateDocumentLoaderWithCache(documentLoader,
&gt; mainResourceCache, false);
&gt; 
&gt; We are not doing this in code consistently, but we try to stop using booleans
&gt; as parameters in cases like this, which are difficult to read. You could define
&gt; an enum to have named parameters, or you could split this function in two.
&gt; 

Used an enum.

&gt; +void ApplicationCacheGroup::associateDocumentLoaderWithCache(DocumentLoader*
&gt; loader, ApplicationCache* cache, bool wasPendingEntry)
&gt; 
&gt; There is a slight clash of terminology between HTML5 and WebCore - the pending
&gt; entries correspond to document loaders, not to any entries in m_pendingEntries
&gt; map. My choice was to have a comment before definition
&gt; m_pendingMasterResourceLoaders, and to avoid using the word &quot;entry&quot; for pending
&gt; master resource loaders. The argument name doesn&apos;t follow this convention.
&gt; 

Fixed.

&gt; What are the possible side effects of cacheStorage().storeNewestCache() that
&gt; need to be undone when this function returns false?
&gt; 

As far as I can tell, the following:

- The document loaders that correspond to the formerly-pedning master entries need to be removed from m_associatedDocumentLoaders. We do this by calling disassociateDocumentLoader().
- If there was an old newset cache for this application cache group, that needs to be restored and the failed cache needs to be deleted.
- If there wasn&apos;t any old newset cache, then deleting the failed cache will delete the groups as well.

&gt; +    // The mapped flag is true if the loader was a &apos;pending master entry&apos; and
&gt; false otherwise.
&gt; 
&gt; This comment could be a little more helpful if it had some sort of a hint at
&gt; why it is important to remember this forever (my guess is that it&apos;s transient
&gt; information that is only necessary during update, in which case it would be
&gt; best to keep it in a separate data member).
&gt; 

Added a comment above the new enum. I don&apos;t think we need to add a new member for this.

&gt; It&apos;s too bad that we don&apos;t have any way to test this. One way to simulate
&gt; errors would be to create a shim library for sqlite that would return errors
&gt; when asked to. That&apos;s out of the scope for this bug, but would be extremely
&gt; helpful for improving appcache robustness, as well as other uses of sqlite in
&gt; WebCore.
&gt; 

The way I tested was to force a maximum size on the database file. We will be able to do this properly when we fix 22700 (https://bugs.webkit.org/show_bug.cgi?id=22700) as that allows the chrome client implementer to set the maximum size. The test cases can then try to store something that&apos;s larger then the limit and cause SQLite to return an error.

Andrei

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123265</commentid>
    <comment_count>10</comment_count>
      <attachid>30702</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-05-27 04:27:58 -0700</bug_when>
    <thetext>Created attachment 30702
Fix for 25562 (take 4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123558</commentid>
    <comment_count>11</comment_count>
      <attachid>30702</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-29 09:56:12 -0700</bug_when>
    <thetext>Comment on attachment 30702
Fix for 25562 (take 4)

Discussed this on IRC in some depth. I have two technical concerns about this patch:
1) Since failing ApplicationCacheStorage::store() leaves memory objects with hanging StorageIDs, it&apos;s hard to prove that this broken invariant doesn&apos;t cause problems later on.
2) There is a good deal of confusion about m_pendingMasterResourceLoaders and &quot;pending master entries&quot;, e.g. in comments about NewDocumentLoader. The names New/OldDocumentLoader names are not good, which I think is a sign of using data structures that don&apos;t match the logic well.

I&apos;m really holding you up to a somewhat higher bar than customary, sorry for being so picky. That&apos;s because appcache code is rather complicated, and because this doesn&apos;t have automated testing to guarantee sustained progress in future patches. So, we&apos;d better get it right on the first try.

More globally, it doesn&apos;t seem obvious at all that reinstating the old cache is indeed the best behavior. We already have a fully downloaded up to date application in memory, why not use it? Looks like the spec should talk about out of quota situations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124049</commentid>
    <comment_count>12</comment_count>
      <attachid>30880</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-06-02 13:53:19 -0700</bug_when>
    <thetext>Created attachment 30880
30702: Fix for 25562 (take 5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124051</commentid>
    <comment_count>13</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-06-02 13:57:19 -0700</bug_when>
    <thetext>Thanks Alexey,

(In reply to comment #11)
&gt; (From update of attachment 30702 [review])
&gt; Discussed this on IRC in some depth. I have two technical concerns about this
&gt; patch:
&gt; 1) Since failing ApplicationCacheStorage::store() leaves memory objects with
&gt; hanging StorageIDs, it&apos;s hard to prove that this broken invariant doesn&apos;t cause
&gt; problems later on.

Done.

&gt; 2) There is a good deal of confusion about m_pendingMasterResourceLoaders and
&gt; &quot;pending master entries&quot;, e.g. in comments about NewDocumentLoader. The names
&gt; New/OldDocumentLoader names are not good, which I think is a sign of using data
&gt; structures that don&apos;t match the logic well.
&gt; 

Fixed.

&gt; I&apos;m really holding you up to a somewhat higher bar than customary, sorry for
&gt; being so picky. That&apos;s because appcache code is rather complicated, and because
&gt; this doesn&apos;t have automated testing to guarantee sustained progress in future
&gt; patches. So, we&apos;d better get it right on the first try.
&gt; 

Agreed.

&gt; More globally, it doesn&apos;t seem obvious at all that reinstating the old cache is
&gt; indeed the best behavior. We already have a fully downloaded up to date
&gt; application in memory, why not use it? Looks like the spec should talk about
&gt; out of quota situations.
&gt; 

IMHO, we should reinstate the old cache to match what is on the disk. Else, the user will get the new version of the content after a failed update and will fallback to the old content once the browser is restarted. But I will send an email to WHATWG / Hixie and ask this question while pointing to the discussion in this bug.

All the best,
Andrei

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124129</commentid>
    <comment_count>14</comment_count>
      <attachid>30899</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-06-03 04:16:41 -0700</bug_when>
    <thetext>Created attachment 30899
30880: 30702: Fix for 25562 (take 5)

Small improvement: the logger object needs to live inside storeNewestCache() in order to be able to also catch the (unlikely) case where the &quot;Update the newest cache in the group&quot; step fails.

Also improved the comments and removed some whitespace changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124133</commentid>
    <comment_count>15</comment_count>
      <attachid>30880</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-03 05:25:22 -0700</bug_when>
    <thetext>Comment on attachment 30880
30702: Fix for 25562 (take 5)

&gt; Index: WebCore/ChangeLog

There are tabs in ChangeLog that will need to be fixed before landing.

&gt;  void ApplicationCacheGroup::setNewestCache(PassRefPtr&lt;ApplicationCache&gt; newestCache)
&gt;  {
&gt; -    ASSERT(!m_caches.contains(newestCache.get()));
&gt; +    // We can set an old cache as the new cache. This can happen if we failed
&gt; +    // to store a newly downloaded cache to the database and we are now reinstating
&gt; +    // the former newest cache.
&gt;  
&gt;      m_newestCache = newestCache;

This comment will look a bit surprising - it would be perfect in ChangeLog, but it answers a question that wasn&apos;t asked for a person reading the code without assertion.

&gt; +class ResourceStorageIDLogger {

All the &quot;log&quot; names look as if we were logging something to console. I&apos;d probably say &quot;journal&quot;, not &quot;log&quot;, e.g. storageIDJournal.add() instead of logger.log(). Maybe there&apos;s a better yet name.

&gt; +        LogRecord() : m_resource(0), m_storageID(0) {}

We usually put a space in &quot;{ }&quot;.

&gt; +        RefPtr&lt;ApplicationCacheResource&gt; m_resource;

Can this be a plain pointer, not a RefPtr?

&gt; +            if (!store(it-&gt;second.get(), cacheStorageID)) {
&gt;                  return false;
&gt; +            }

We don&apos;t put braces around single line blocks.

Please consider addressing some of these comments, but this looks good enough to be landed as is, too.

&gt; But I will send an email to WHATWG / Hixie and ask this question while pointing to
&gt; the discussion in this bug.

Please do! It&apos;s great to get a well defined defined behavior where we used to crash - it would be even better to have an agreed upon behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124134</commentid>
    <comment_count>16</comment_count>
      <attachid>30899</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-03 05:28:05 -0700</bug_when>
    <thetext>Comment on attachment 30899
30880: 30702: Fix for 25562 (take 5)

Transferring r+ to the newer patch that was added while I was reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124144</commentid>
    <comment_count>17</comment_count>
      <attachid>30904</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-06-03 07:34:47 -0700</bug_when>
    <thetext>Created attachment 30904
30899: 30880: 30702: Fix for 25562 (take 6)

Thanks Alexey, I&apos;ve addressed your comments and uploaded a new patch. I wasn&apos;t sure whether to obsolete the old ones or not so I didn&apos;t :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124148</commentid>
    <comment_count>18</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-06-03 07:37:16 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 30880 [review])
&gt; &gt; Index: WebCore/ChangeLog
&gt; 
&gt; There are tabs in ChangeLog that will need to be fixed before landing.
&gt; 

Fixed.

&gt; &gt;  void ApplicationCacheGroup::setNewestCache(PassRefPtr&lt;ApplicationCache&gt; newestCache)
&gt; &gt;  {
&gt; &gt; -    ASSERT(!m_caches.contains(newestCache.get()));
&gt; &gt; +    // We can set an old cache as the new cache. This can happen if we failed
&gt; &gt; +    // to store a newly downloaded cache to the database and we are now reinstating
&gt; &gt; +    // the former newest cache.
&gt; &gt;  
&gt; &gt;      m_newestCache = newestCache;
&gt; 
&gt; This comment will look a bit surprising - it would be perfect in ChangeLog, but
&gt; it answers a question that wasn&apos;t asked for a person reading the code without
&gt; assertion.
&gt; 

Moved to Changelog.

&gt; &gt; +class ResourceStorageIDLogger {
&gt; 
&gt; All the &quot;log&quot; names look as if we were logging something to console. I&apos;d
&gt; probably say &quot;journal&quot;, not &quot;log&quot;, e.g. storageIDJournal.add() instead of
&gt; logger.log(). Maybe there&apos;s a better yet name.
&gt; 

Used &quot;journal&quot; instead.

&gt; &gt; +        LogRecord() : m_resource(0), m_storageID(0) {}
&gt; 
&gt; We usually put a space in &quot;{ }&quot;.
&gt; 

Added.

&gt; &gt; +        RefPtr&lt;ApplicationCacheResource&gt; m_resource;
&gt; 
&gt; Can this be a plain pointer, not a RefPtr?
&gt; 

It can. I was over-cautious, I guess. The resources are guaranteed to live for at least as long as the cache object does. But the cache should survive until after storeNewsetCache() has returned.

&gt; &gt; +            if (!store(it-&gt;second.get(), cacheStorageID)) {
&gt; &gt;                  return false;
&gt; &gt; +            }
&gt; 
&gt; We don&apos;t put braces around single line blocks.
&gt; 

Removed braces.

&gt; Please consider addressing some of these comments, but this looks good enough
&gt; to be landed as is, too.
&gt; 

Sure, done.

&gt; &gt; But I will send an email to WHATWG / Hixie and ask this question while pointing to
&gt; &gt; the discussion in this bug.
&gt; 
&gt; Please do! It&apos;s great to get a well defined defined behavior where we used to
&gt; crash - it would be even better to have an agreed upon behavior.
&gt; 

Ok, sending in a bit.

Thanks,
Andrei
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124361</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-04 12:59:03 -0700</bug_when>
    <thetext>Assign for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124365</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-04 13:07:29 -0700</bug_when>
    <thetext>Landed in @r44424.  Corrected tab characters in ChangeLog file.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30017</attachid>
            <date>2009-05-05 04:34:08 -0700</date>
            <delta_ts>2009-05-06 05:40:36 -0700</delta_ts>
            <desc>Check return value of ApplicationCacheStorage::storeNewestCache()</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>2112</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzIxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDktMDUtMDUgIGFuZHJlaXAgIDxhbmRyZWlwQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sg
cmV0dXJuIHZhbHVlIG9mIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZU5ld2VzdENhY2hl
KCkKKyAgICAgICAgYXQgaXRzIGNhbGwgc2l0ZSBpbiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNo
ZWNrSWZMb2FkSXNDb21wbGV0ZSgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjU1NjIKKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUpOgorCiAyMDA5LTA1LTA1ICBTaW1vbiBIYXVzbWFu
biAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBcml5
YSBIaWRheWF0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA0Mjk5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMiwx
MiArNzMyLDE2IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZEkKICAg
ICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG9sZE5ld2VzdENhY2hlID0gKG1fbmV3ZXN0
Q2FjaGUgPT0gbV9jYWNoZUJlaW5nVXBkYXRlZCkgPyAwIDogbV9uZXdlc3RDYWNoZTsKIAogICAg
ICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7Ci0gICAg
ICAgIGNhY2hlU3RvcmFnZSgpLnN0b3JlTmV3ZXN0Q2FjaGUodGhpcyk7Ci0KLSAgICAgICAgaWYg
KG9sZE5ld2VzdENhY2hlKQotICAgICAgICAgICAgY2FjaGVTdG9yYWdlKCkucmVtb3ZlKG9sZE5l
d2VzdENhY2hlLmdldCgpKTsKLQotICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGlzVXBncmFkZUF0
dGVtcHQgPyAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbFVwZGF0ZVJlYWR5TGlzdGVuZXIgOiAm
RE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbENhY2hlZExpc3RlbmVyLCBtX2Fzc29jaWF0ZWREb2N1
bWVudExvYWRlcnMpOworICAgICAgICBpZiAoY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNo
ZSh0aGlzKSkgew0KKyAgICAgICAgICAgIC8vIE5ldyBjYWNoZSBzdG9yZWQsIG5vdyByZW1vdmUg
dGhlIG9sZCBjYWNoZS4NCisgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpDQorICAgICAg
ICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQoKSk7DQor
DQorICAgICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gJkRPTUFw
cGxpY2F0aW9uQ2FjaGU6OmNhbGxVcGRhdGVSZWFkeUxpc3RlbmVyIDogJkRPTUFwcGxpY2F0aW9u
Q2FjaGU6OmNhbGxDYWNoZWRMaXN0ZW5lciwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsN
CisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIHN0b3JlIHRo
ZSBuZXcgY2FjaGUuIFJlcG9ydCBhbiBlcnJvci4NCisgICAgICAgICAgICBwb3N0TGlzdGVuZXJU
YXNrKCZET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsRXJyb3JMaXN0ZW5lciwgbV9hc3NvY2lhdGVk
RG9jdW1lbnRMb2FkZXJzKTsNCisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IH0K
</data>
<flag name="review"
          id="15061"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30047</attachid>
            <date>2009-05-06 05:40:36 -0700</date>
            <delta_ts>2009-05-06 07:39:06 -0700</delta_ts>
            <desc>Fix for 25562 (take 2)</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>10541</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDUtMDYgIGFuZHJlaXAgIDxhbmRyZWlwQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTYyCisgICAgICAgIFBvdGVudGlh
bCBjcmFzaCBhZnRlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZSgp
IGZhaWxzCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZVdpdGhvdXRNYW5pZmVzdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2V0TmV3ZXN0Q2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lm
TG9hZElzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
Ojphc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKwogMjAwOS0wNS0wNiAgSmFuIE1p
Y2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDQzMjUwKQorKysgV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSgKICAgICAKICAgICBpZiAobWFpblJlc291cmNlQ2FjaGUpIHsKICAgICAgICAgaWYgKG1hbmlm
ZXN0VVJMID09IG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5tX21hbmlmZXN0VVJMKSB7Ci0g
ICAgICAgICAgICBtYWluUmVzb3VyY2VDYWNoZS0+Z3JvdXAoKS0+YXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXJXaXRoQ2FjaGUoZG9jdW1lbnRMb2FkZXIsIG1haW5SZXNvdXJjZUNhY2hlKTsKKyAgICAg
ICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5hc3NvY2lhdGVEb2N1bWVudExvYWRl
cldpdGhDYWNoZShkb2N1bWVudExvYWRlciwgbWFpblJlc291cmNlQ2FjaGUsIGZhbHNlKTsKICAg
ICAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUsIEFwcGxp
Y2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJvd3NpbmdDb250ZXh0KTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIHdhcyBsb2FkZWQgZnJvbSBjYWNoZSwg
c28gdGhlIGNhY2hlIG11c3QgaGF2ZSBhbiBlbnRyeSBmb3IgaXQuIE1hcmsgaXQgYXMgZm9yZWln
bi4KQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0
Q2FjaGVXCiAgICAgQXBwbGljYXRpb25DYWNoZSogbWFpblJlc291cmNlQ2FjaGUgPSBkb2N1bWVu
dExvYWRlci0+bWFpblJlc291cmNlQXBwbGljYXRpb25DYWNoZSgpOwogCiAgICAgaWYgKG1haW5S
ZXNvdXJjZUNhY2hlKSB7Ci0gICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5hc3Nv
Y2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShkb2N1bWVudExvYWRlciwgbWFpblJlc291cmNl
Q2FjaGUpOworICAgICAgICBtYWluUmVzb3VyY2VDYWNoZS0+Z3JvdXAoKS0+YXNzb2NpYXRlRG9j
dW1lbnRMb2FkZXJXaXRoQ2FjaGUoZG9jdW1lbnRMb2FkZXIsIG1haW5SZXNvdXJjZUNhY2hlLCBm
YWxzZSk7CiAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUs
IEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJvd3NpbmdDb250ZXh0KTsKICAgICB9CiB9CkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9h
ZAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOb1VwZGF0ZToKICAgICAgICAgQVNTRVJUKCFt
X2NhY2hlQmVpbmdVcGRhdGVkKTsKLSAgICAgICAgYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRo
Q2FjaGUobG9hZGVyLCBtX25ld2VzdENhY2hlLmdldCgpKTsKKyAgICAgICAgYXNzb2NpYXRlRG9j
dW1lbnRMb2FkZXJXaXRoQ2FjaGUobG9hZGVyLCBtX25ld2VzdENhY2hlLmdldCgpLCBmYWxzZSk7
CiAKICAgICAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSBtX25l
d2VzdENhY2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpKSB7CiAgICAgICAgICAgICBpZiAoIShyZXNv
dXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIpKSB7CkBAIC0z
MDUsNyArMzA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5nKAog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46
Oml0ZXJhdG9yIGl0ID0gbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmZpbmQobG9hZGVyKTsK
KyAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgYm9vbD46Oml0ZXJhdG9yIGl0ID0gbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzLmZpbmQobG9hZGVyKTsKICAgICBpZiAoaXQgIT0gbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzLmVuZCgpKQogICAgICAgICBtX2Fzc29jaWF0ZWREb2N1bWVu
dExvYWRlcnMucmVtb3ZlKGl0KTsKIApAQCAtMzQ3LDcgKzM0Nyw5IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpjYWNoZURlc3Ryb3kKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnNldE5ld2VzdENhY2hlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbmV3ZXN0Q2FjaGUp
CiB7Ci0gICAgQVNTRVJUKCFtX2NhY2hlcy5jb250YWlucyhuZXdlc3RDYWNoZS5nZXQoKSkpOwor
ICAgIC8vIFdlIGNhbiBzZXQgYW4gb2xkIGNhY2hlIGFzIHRoZSBuZXcgY2FjaGUuIFRoaXMgY2Fu
IGhhcHBlbiBpZiB3ZSBmYWlsZWQKKyAgICAvLyB0byBzdG9yZSBhIG5ld2x5IGRvd25sb2FkZWQg
Y2FjaGUgdG8gdGhlIGRhdGFiYXNlIGFuZCB3ZSBhcmUgbm93IHJlaW5zdGF0aW5nCisgICAgLy8g
dGhlIGZvcm1lciBuZXdlc3QgY2FjaGUuCiAKICAgICBtX25ld2VzdENhY2hlID0gbmV3ZXN0Q2Fj
aGU7CiAKQEAgLTYxOCw3ICs2MjAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hCiAKICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9y
IG1hc3RlckVuZCA9IG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5lbmQoKTsKICAgICBm
b3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcGVu
ZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5iZWdpbigpOyBpdGVyICE9IG1hc3RlckVuZDsgKytp
dGVyKQotICAgICAgICBhc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZSgqaXRlciwgbV9j
YWNoZUJlaW5nVXBkYXRlZC5nZXQoKSk7CisgICAgICAgIGFzc29jaWF0ZURvY3VtZW50TG9hZGVy
V2l0aENhY2hlKCppdGVyLCBtX2NhY2hlQmVpbmdVcGRhdGVkLmdldCgpLCB0cnVlKTsKIAogICAg
IC8vIFdlIGhhdmUgdGhlIG1hbmlmZXN0LCBub3cgZG93bmxvYWQgdGhlIHJlc291cmNlcy4KICAg
ICBtX3VwZGF0ZVN0YXR1cyA9IERvd25sb2FkaW5nOwpAQCAtNzMyLDEyICs3MzQsNDUgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gb2xkTmV3ZXN0Q2FjaGUgPSAobV9uZXdlc3RDYWNoZSA9PSBtX2NhY2hl
QmVpbmdVcGRhdGVkKSA/IDAgOiBtX25ld2VzdENhY2hlOwogCiAgICAgICAgIHNldE5ld2VzdENh
Y2hlKG1fY2FjaGVCZWluZ1VwZGF0ZWQucmVsZWFzZSgpKTsKLSAgICAgICAgY2FjaGVTdG9yYWdl
KCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKTsKLQotICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUp
Ci0gICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xkTmV3ZXN0Q2FjaGUuZ2V0KCkp
OwotCi0gICAgICAgIHBvc3RMaXN0ZW5lclRhc2soaXNVcGdyYWRlQXR0ZW1wdCA/ICZET01BcHBs
aWNhdGlvbkNhY2hlOjpjYWxsVXBkYXRlUmVhZHlMaXN0ZW5lciA6ICZET01BcHBsaWNhdGlvbkNh
Y2hlOjpjYWxsQ2FjaGVkTGlzdGVuZXIsIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7Cisg
ICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5zdG9yZU5ld2VzdENhY2hlKHRoaXMpKSB7DQorICAg
ICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLg0K
KyAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkNCisgICAgICAgICAgICAgICAgY2FjaGVT
dG9yYWdlKCkucmVtb3ZlKG9sZE5ld2VzdENhY2hlLmdldCgpKTsNCisgICAgICAgICAgICAvLyBG
b3JnZXQgYWJvdXQgdGhlIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMuDQorICAgICAgICAgICAgSGFz
aE1hcDxEb2N1bWVudExvYWRlciosIGJvb2w+OjppdGVyYXRvciBsb2FkZXJNYXBFbmQgPSBtX2Fz
c29jaWF0ZWREb2N1bWVudExvYWRlcnMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hNYXA8
RG9jdW1lbnRMb2FkZXIqLCBib29sPjo6aXRlcmF0b3IgaXRlciA9IG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycy5iZWdpbigpOyBpdGVyICE9IGxvYWRlck1hcEVuZDsgKytpdGVyKQorICAgICAg
ICAgICAgICAgIGl0ZXItPnNlY29uZCA9IHRydWU7CisgICAgICAgICAgICAvLyBGaXJlIHRoZSBz
dWNjZXNzIGV2ZW50cy4KKyAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soaXNVcGdyYWRlQXR0
ZW1wdCA/ICZET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsVXBkYXRlUmVhZHlMaXN0ZW5lciA6ICZE
T01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsQ2FjaGVkTGlzdGVuZXIsIG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycyk7DQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUnVuIHRoZSAi
Y2FjaGUgZmFpbHVyZSBzdGVwcyIKKyAgICAgICAgICAgIC8vIEZpcmUgdGhlIGVycm9yIGV2ZW50
cyB0byBhbGwgcGVuZGluZyBtYXN0ZXIgZW50cmllcywgYXMgd2VsbCBhbnkgb3RoZXIgY2FjaGUg
aG9zdHMKKyAgICAgICAgICAgIC8vIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggYSBjYWNoZSBp
biB0aGlzIGdyb3VwLgorICAgICAgICAgICAgcG9zdExpc3RlbmVyVGFzaygmRE9NQXBwbGljYXRp
b25DYWNoZTo6Y2FsbEVycm9yTGlzdGVuZXIsIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7
CisgICAgICAgICAgICAvLyBEaXNhc3NvY2lhdGUgdGhlIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMg
ZnJvbSB0aGUgZmFpbGVkIG5ldyBjYWNoZS4gTm90ZSB0aGF0CisgICAgICAgICAgICAvLyBhbGwg
b3RoZXIgbG9hZGVycyBpbiB0aGUgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzIGFyZSBzdGls
bCBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgIC8vIHNvbWUgb3RoZXIgY2FjaGUgaW4gdGhp
cyBncm91cC4gVGhleSBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFpbGVkIG5ldyBjYWNo
ZS4KKyAgICAgICAgICAgIC8vIEZpcnN0IGZpbmQgb3V0IHdoYXQgdGhlIHBlbmRpbmcgbWFzdGVy
IGVudHJpZXMgYXJlLiBUaGVyZSBzaG91bGQgYmUgb25seSBhIGZldy4KKyAgICAgICAgICAgIFZl
Y3RvcjxEb2N1bWVudExvYWRlcio+IG1hc3RlckxvYWRlcnM7CisgICAgICAgICAgICBIYXNoTWFw
PERvY3VtZW50TG9hZGVyKiwgYm9vbD46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlck1hcEVuZCA9IG1f
YXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoSGFzaE1h
cDxEb2N1bWVudExvYWRlciosIGJvb2w+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9hc3NvY2lh
dGVkRG9jdW1lbnRMb2FkZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbG9hZGVyTWFwRW5kOyArK2l0ZXIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlci0+c2Vjb25kKQorICAgICAgICAgICAgICAgICAg
ICBtYXN0ZXJMb2FkZXJzLmFwcGVuZChpdGVyLT5maXJzdCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAvLyBOb3cgZGlzYXNzb2NpYXRlIHRoZW0uCisgICAgICAgICAgICBzaXplX3QgY291
bnQgPSBtYXN0ZXJMb2FkZXJzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgZGlzYXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXIobWFzdGVyTG9hZGVyc1tpXSk7IC8vIFRoaXMgY2FuIGRlbGV0ZSB0aGlzIGdyb3VwLg0K
Kw0KKyAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJl
IHdhcyBvbmUuCisgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsKKyAgICAgICAgICAg
ICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4KKyAgICAgICAg
ICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkpOw0KKyAgICAg
ICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBiZWVuIGRl
bGV0ZWQgYnkgdGhlIGxhc3QgY2FsbCB0byBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcigpLg0K
KyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtODE0LDcgKzg0OSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb24KICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgfD0gdHlwZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURv
Y3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9u
Q2FjaGUqIGNhY2hlKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvY3Vt
ZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2Fj
aGUqIGNhY2hlLCBib29sIHdhc1BlbmRpbmdFbnRyeSkKIHsKICAgICAvLyBJZiB0ZWFyZG93biBz
dGFydGVkIGFscmVhZHksIHJldml2ZSB0aGUgZ3JvdXAuCiAgICAgaWYgKCFtX25ld2VzdENhY2hl
ICYmICFtX2NhY2hlQmVpbmdVcGRhdGVkKQpAQCAtODI1LDcgKzg2MCw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjphc3NvY2lhdGVEb2MKICAgICBsb2FkZXItPnNldEFwcGxpY2F0aW9u
Q2FjaGUoY2FjaGUpOwogCiAgICAgQVNTRVJUKCFtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMu
Y29udGFpbnMobG9hZGVyKSk7Ci0gICAgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmFkZChs
b2FkZXIpOworICAgIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5hZGQobG9hZGVyLCB3YXNQ
ZW5kaW5nRW50cnkpOwogfQogIAogY2xhc3MgQ2FsbENhY2hlTGlzdGVuZXJUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtODYxLDYgKzg5NiwxMyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyCiAgICAgICAgIHBvc3RMaXN0ZW5l
clRhc2sobGlzdGVuZXJGdW5jdGlvbiwgKml0ZXIpOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhMaXN0ZW5lckZ1bmN0aW9uIGxpc3RlbmVyRnVuY3Rp
b24sIGNvbnN0IEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBib29sPiYgbG9hZGVyTWFwKQorewor
ICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBib29sPjo6Y29uc3RfaXRlcmF0b3IgbG9hZGVy
TWFwRW5kID0gbG9hZGVyTWFwLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxEb2N1bWVudExvYWRl
ciosIGJvb2w+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbG9hZGVyTWFwLmJlZ2luKCk7IGl0ZXIg
IT0gbG9hZGVyTWFwRW5kOyArK2l0ZXIpCisgICAgICAgIHBvc3RMaXN0ZW5lclRhc2sobGlzdGVu
ZXJGdW5jdGlvbiwgaXRlci0+Zmlyc3QpOworfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6cG9zdExpc3RlbmVyVGFzayhMaXN0ZW5lckZ1bmN0aW9uIGxpc3RlbmVyRnVuY3Rpb24sIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbG9hZGVyLT5mcmFt
ZSgpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmgJKHJldmlzaW9uIDQzMjUwKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB0eXBlZGVmIHZvaWQgKERPTUFwcGxpY2F0aW9uQ2FjaGU6OipM
aXN0ZW5lckZ1bmN0aW9uKSgpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soTGlz
dGVuZXJGdW5jdGlvbiwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRlcio+Jik7CisgICAgc3Rh
dGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhMaXN0ZW5lckZ1bmN0aW9uLCBjb25zdCBIYXNoTWFw
PERvY3VtZW50TG9hZGVyKiwgYm9vbD4mKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJU
YXNrKExpc3RlbmVyRnVuY3Rpb24sIGNvbnN0IFZlY3RvcjxSZWZQdHI8RG9jdW1lbnRMb2FkZXI+
ID4mIGxvYWRlcnMpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soTGlzdGVuZXJG
dW5jdGlvbiwgRG9jdW1lbnRMb2FkZXIqKTsKIApAQCAtMTE1LDcgKzExNiw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdm9pZCBhZGRFbnRyeShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCB0eXBlKTsK
ICAgICAKLSAgICB2b2lkIGFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50
TG9hZGVyKiwgQXBwbGljYXRpb25DYWNoZSopOworICAgIHZvaWQgYXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBBcHBsaWNhdGlvbkNhY2hlKiwgYm9vbCB3
YXNQZW5kaW5nRW50cnkpOwogICAgIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAKQEAg
LTEzNiw3ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiBt
X3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnM7CiAgICAgCiAgICAgLy8gVGhlc2UgYXJlIGFs
bCB0aGUgZG9jdW1lbnQgbG9hZGVycyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBjYWNoZSBp
biB0aGlzIGdyb3VwLgotICAgIEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiBtX2Fzc29jaWF0ZWRE
b2N1bWVudExvYWRlcnM7CisgICAgLy8gVGhlIG1hcHBlZCBmbGFnIGlzIHRydWUgaWYgdGhlIGxv
YWRlciB3YXMgYSAncGVuZGluZyBtYXN0ZXIgZW50cnknIGFuZCBmYWxzZSBvdGhlcndpc2UuCisg
ICAgSGFzaE1hcDxEb2N1bWVudExvYWRlciosIGJvb2w+IG1fYXNzb2NpYXRlZERvY3VtZW50TG9h
ZGVyczsKIAogICAgIC8vIFRoZSBVUkxzIGFuZCB0eXBlcyBvZiBwZW5kaW5nIGNhY2hlIGVudHJp
ZXMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IEVudHJ5TWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30048</attachid>
            <date>2009-05-06 07:39:06 -0700</date>
            <delta_ts>2009-05-27 04:27:58 -0700</delta_ts>
            <desc>30047: Fix for 25562 (take 3)</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>10542</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDUtMDYgIGFuZHJlaXAgIDxhbmRyZWlwQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTYyCisgICAgICAgIFBvdGVudGlh
bCBjcmFzaCBhZnRlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZSgp
IGZhaWxzCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZVdpdGhvdXRNYW5pZmVzdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2V0TmV3ZXN0Q2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lm
TG9hZElzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
Ojphc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKwogMjAwOS0wNS0wNiAgSmFuIE1p
Y2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDQzMjUwKQorKysgV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZSgKICAgICAKICAgICBpZiAobWFpblJlc291cmNlQ2FjaGUpIHsKICAgICAgICAgaWYgKG1hbmlm
ZXN0VVJMID09IG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5tX21hbmlmZXN0VVJMKSB7Ci0g
ICAgICAgICAgICBtYWluUmVzb3VyY2VDYWNoZS0+Z3JvdXAoKS0+YXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXJXaXRoQ2FjaGUoZG9jdW1lbnRMb2FkZXIsIG1haW5SZXNvdXJjZUNhY2hlKTsKKyAgICAg
ICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5hc3NvY2lhdGVEb2N1bWVudExvYWRl
cldpdGhDYWNoZShkb2N1bWVudExvYWRlciwgbWFpblJlc291cmNlQ2FjaGUsIGZhbHNlKTsKICAg
ICAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUsIEFwcGxp
Y2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJvd3NpbmdDb250ZXh0KTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIHdhcyBsb2FkZWQgZnJvbSBjYWNoZSwg
c28gdGhlIGNhY2hlIG11c3QgaGF2ZSBhbiBlbnRyeSBmb3IgaXQuIE1hcmsgaXQgYXMgZm9yZWln
bi4KQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0
Q2FjaGVXCiAgICAgQXBwbGljYXRpb25DYWNoZSogbWFpblJlc291cmNlQ2FjaGUgPSBkb2N1bWVu
dExvYWRlci0+bWFpblJlc291cmNlQXBwbGljYXRpb25DYWNoZSgpOwogCiAgICAgaWYgKG1haW5S
ZXNvdXJjZUNhY2hlKSB7Ci0gICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5hc3Nv
Y2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShkb2N1bWVudExvYWRlciwgbWFpblJlc291cmNl
Q2FjaGUpOworICAgICAgICBtYWluUmVzb3VyY2VDYWNoZS0+Z3JvdXAoKS0+YXNzb2NpYXRlRG9j
dW1lbnRMb2FkZXJXaXRoQ2FjaGUoZG9jdW1lbnRMb2FkZXIsIG1haW5SZXNvdXJjZUNhY2hlLCBm
YWxzZSk7CiAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUs
IEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJvd3NpbmdDb250ZXh0KTsKICAgICB9CiB9CkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9h
ZAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOb1VwZGF0ZToKICAgICAgICAgQVNTRVJUKCFt
X2NhY2hlQmVpbmdVcGRhdGVkKTsKLSAgICAgICAgYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRo
Q2FjaGUobG9hZGVyLCBtX25ld2VzdENhY2hlLmdldCgpKTsKKyAgICAgICAgYXNzb2NpYXRlRG9j
dW1lbnRMb2FkZXJXaXRoQ2FjaGUobG9hZGVyLCBtX25ld2VzdENhY2hlLmdldCgpLCBmYWxzZSk7
CiAKICAgICAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSBtX25l
d2VzdENhY2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpKSB7CiAgICAgICAgICAgICBpZiAoIShyZXNv
dXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIpKSB7CkBAIC0z
MDUsNyArMzA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5nKAog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46
Oml0ZXJhdG9yIGl0ID0gbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmZpbmQobG9hZGVyKTsK
KyAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgYm9vbD46Oml0ZXJhdG9yIGl0ID0gbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzLmZpbmQobG9hZGVyKTsKICAgICBpZiAoaXQgIT0gbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzLmVuZCgpKQogICAgICAgICBtX2Fzc29jaWF0ZWREb2N1bWVu
dExvYWRlcnMucmVtb3ZlKGl0KTsKIApAQCAtMzQ3LDcgKzM0Nyw5IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpjYWNoZURlc3Ryb3kKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnNldE5ld2VzdENhY2hlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbmV3ZXN0Q2FjaGUp
CiB7Ci0gICAgQVNTRVJUKCFtX2NhY2hlcy5jb250YWlucyhuZXdlc3RDYWNoZS5nZXQoKSkpOwor
ICAgIC8vIFdlIGNhbiBzZXQgYW4gb2xkIGNhY2hlIGFzIHRoZSBuZXcgY2FjaGUuIFRoaXMgY2Fu
IGhhcHBlbiBpZiB3ZSBmYWlsZWQKKyAgICAvLyB0byBzdG9yZSBhIG5ld2x5IGRvd25sb2FkZWQg
Y2FjaGUgdG8gdGhlIGRhdGFiYXNlIGFuZCB3ZSBhcmUgbm93IHJlaW5zdGF0aW5nCisgICAgLy8g
dGhlIGZvcm1lciBuZXdlc3QgY2FjaGUuCiAKICAgICBtX25ld2VzdENhY2hlID0gbmV3ZXN0Q2Fj
aGU7CiAKQEAgLTYxOCw3ICs2MjAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hCiAKICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9y
IG1hc3RlckVuZCA9IG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5lbmQoKTsKICAgICBm
b3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcGVu
ZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5iZWdpbigpOyBpdGVyICE9IG1hc3RlckVuZDsgKytp
dGVyKQotICAgICAgICBhc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZSgqaXRlciwgbV9j
YWNoZUJlaW5nVXBkYXRlZC5nZXQoKSk7CisgICAgICAgIGFzc29jaWF0ZURvY3VtZW50TG9hZGVy
V2l0aENhY2hlKCppdGVyLCBtX2NhY2hlQmVpbmdVcGRhdGVkLmdldCgpLCB0cnVlKTsKIAogICAg
IC8vIFdlIGhhdmUgdGhlIG1hbmlmZXN0LCBub3cgZG93bmxvYWQgdGhlIHJlc291cmNlcy4KICAg
ICBtX3VwZGF0ZVN0YXR1cyA9IERvd25sb2FkaW5nOwpAQCAtNzMyLDEyICs3MzQsNDUgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gb2xkTmV3ZXN0Q2FjaGUgPSAobV9uZXdlc3RDYWNoZSA9PSBtX2NhY2hl
QmVpbmdVcGRhdGVkKSA/IDAgOiBtX25ld2VzdENhY2hlOwogCiAgICAgICAgIHNldE5ld2VzdENh
Y2hlKG1fY2FjaGVCZWluZ1VwZGF0ZWQucmVsZWFzZSgpKTsKLSAgICAgICAgY2FjaGVTdG9yYWdl
KCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKTsKLQotICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUp
Ci0gICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xkTmV3ZXN0Q2FjaGUuZ2V0KCkp
OwotCi0gICAgICAgIHBvc3RMaXN0ZW5lclRhc2soaXNVcGdyYWRlQXR0ZW1wdCA/ICZET01BcHBs
aWNhdGlvbkNhY2hlOjpjYWxsVXBkYXRlUmVhZHlMaXN0ZW5lciA6ICZET01BcHBsaWNhdGlvbkNh
Y2hlOjpjYWxsQ2FjaGVkTGlzdGVuZXIsIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7Cisg
ICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5zdG9yZU5ld2VzdENhY2hlKHRoaXMpKSB7DQorICAg
ICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLg0K
KyAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkNCisgICAgICAgICAgICAgICAgY2FjaGVT
dG9yYWdlKCkucmVtb3ZlKG9sZE5ld2VzdENhY2hlLmdldCgpKTsNCisgICAgICAgICAgICAvLyBG
b3JnZXQgYWJvdXQgdGhlIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMuDQorICAgICAgICAgICAgSGFz
aE1hcDxEb2N1bWVudExvYWRlciosIGJvb2w+OjppdGVyYXRvciBsb2FkZXJNYXBFbmQgPSBtX2Fz
c29jaWF0ZWREb2N1bWVudExvYWRlcnMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hNYXA8
RG9jdW1lbnRMb2FkZXIqLCBib29sPjo6aXRlcmF0b3IgaXRlciA9IG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycy5iZWdpbigpOyBpdGVyICE9IGxvYWRlck1hcEVuZDsgKytpdGVyKQorICAgICAg
ICAgICAgICAgIGl0ZXItPnNlY29uZCA9IGZhbHNlOworICAgICAgICAgICAgLy8gRmlyZSB0aGUg
c3VjY2VzcyBldmVudHMuCisgICAgICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGlzVXBncmFkZUF0
dGVtcHQgPyAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbFVwZGF0ZVJlYWR5TGlzdGVuZXIgOiAm
RE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbENhY2hlZExpc3RlbmVyLCBtX2Fzc29jaWF0ZWREb2N1
bWVudExvYWRlcnMpOw0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFJ1biB0aGUg
ImNhY2hlIGZhaWx1cmUgc3RlcHMiCisgICAgICAgICAgICAvLyBGaXJlIHRoZSBlcnJvciBldmVu
dHMgdG8gYWxsIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMsIGFzIHdlbGwgYW55IG90aGVyIGNhY2hl
IGhvc3RzCisgICAgICAgICAgICAvLyBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUg
aW4gdGhpcyBncm91cC4KKyAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soJkRPTUFwcGxpY2F0
aW9uQ2FjaGU6OmNhbGxFcnJvckxpc3RlbmVyLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMp
OworICAgICAgICAgICAgLy8gRGlzYXNzb2NpYXRlIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyaWVz
IGZyb20gdGhlIGZhaWxlZCBuZXcgY2FjaGUuIE5vdGUgdGhhdAorICAgICAgICAgICAgLy8gYWxs
IG90aGVyIGxvYWRlcnMgaW4gdGhlIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyBhcmUgc3Rp
bGwgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgICAgICAvLyBzb21lIG90aGVyIGNhY2hlIGluIHRo
aXMgZ3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZhaWxlZCBuZXcgY2Fj
aGUuCisgICAgICAgICAgICAvLyBGaXJzdCBmaW5kIG91dCB3aGF0IHRoZSBwZW5kaW5nIG1hc3Rl
ciBlbnRyaWVzIGFyZS4gVGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBmZXcuCisgICAgICAgICAgICBW
ZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBtYXN0ZXJMb2FkZXJzOworICAgICAgICAgICAgSGFzaE1h
cDxEb2N1bWVudExvYWRlciosIGJvb2w+Ojpjb25zdF9pdGVyYXRvciBsb2FkZXJNYXBFbmQgPSBt
X2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hN
YXA8RG9jdW1lbnRMb2FkZXIqLCBib29sPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycy5iZWdpbigpOyBpdGVyICE9IGxvYWRlck1hcEVuZDsgKytpdGVy
KSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnNlY29uZCkKKyAgICAgICAgICAgICAgICAg
ICAgbWFzdGVyTG9hZGVycy5hcHBlbmQoaXRlci0+Zmlyc3QpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLy8gTm93IGRpc2Fzc29jaWF0ZSB0aGVtLgorICAgICAgICAgICAgc2l6ZV90IGNv
dW50ID0gbWFzdGVyTG9hZGVycy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIGRpc2Fzc29jaWF0ZURvY3VtZW50
TG9hZGVyKG1hc3RlckxvYWRlcnNbaV0pOyAvLyBUaGlzIGNhbiBkZWxldGUgdGhpcyBncm91cC4N
CisNCisgICAgICAgICAgICAvLyBSZWluc3RhdGUgdGhlIG9sZE5ld2VzdENhY2hlLCBpZiB0aGVy
ZSB3YXMgb25lLgorICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyB3aWxsIGRpc2NhcmQgdGhlIGZhaWxlZCBuZXcgY2FjaGUuCisgICAgICAg
ICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgpKTsNCisgICAg
ICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGhhdmUgYmVlbiBk
ZWxldGVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8gZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoKS4N
CisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTgxNCw3ICs4NDksNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkoY29uCiAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kIHw9IHR5cGU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphc3NvY2lhdGVE
b2N1bWVudExvYWRlcldpdGhDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBBcHBsaWNhdGlv
bkNhY2hlKiBjYWNoZSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphc3NvY2lhdGVEb2N1
bWVudExvYWRlcldpdGhDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBBcHBsaWNhdGlvbkNh
Y2hlKiBjYWNoZSwgYm9vbCB3YXNQZW5kaW5nRW50cnkpCiB7CiAgICAgLy8gSWYgdGVhcmRvd24g
c3RhcnRlZCBhbHJlYWR5LCByZXZpdmUgdGhlIGdyb3VwLgogICAgIGlmICghbV9uZXdlc3RDYWNo
ZSAmJiAhbV9jYWNoZUJlaW5nVXBkYXRlZCkKQEAgLTgyNSw3ICs4NjAsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9jCiAgICAgbG9hZGVyLT5zZXRBcHBsaWNhdGlv
bkNhY2hlKGNhY2hlKTsKIAogICAgIEFTU0VSVCghbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJz
LmNvbnRhaW5zKGxvYWRlcikpOwotICAgIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5hZGQo
bG9hZGVyKTsKKyAgICBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMuYWRkKGxvYWRlciwgd2Fz
UGVuZGluZ0VudHJ5KTsKIH0KICAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKQEAgLTg2MSw2ICs4OTYsMTMgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lcgogICAgICAgICBwb3N0TGlzdGVu
ZXJUYXNrKGxpc3RlbmVyRnVuY3Rpb24sICppdGVyKTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soTGlzdGVuZXJGdW5jdGlvbiBsaXN0ZW5lckZ1bmN0
aW9uLCBjb25zdCBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgYm9vbD4mIGxvYWRlck1hcCkKK3sK
KyAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgYm9vbD46OmNvbnN0X2l0ZXJhdG9yIGxvYWRl
ck1hcEVuZCA9IGxvYWRlck1hcC5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8RG9jdW1lbnRMb2Fk
ZXIqLCBib29sPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxvYWRlck1hcC5iZWdpbigpOyBpdGVy
ICE9IGxvYWRlck1hcEVuZDsgKytpdGVyKQorICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGxpc3Rl
bmVyRnVuY3Rpb24sIGl0ZXItPmZpcnN0KTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OnBvc3RMaXN0ZW5lclRhc2soTGlzdGVuZXJGdW5jdGlvbiBsaXN0ZW5lckZ1bmN0aW9uLCBE
b2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGxvYWRlci0+ZnJh
bWUoKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oCShyZXZpc2lvbiA0MzI1MCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiB2b2lkIChET01BcHBsaWNhdGlvbkNhY2hlOjoq
TGlzdGVuZXJGdW5jdGlvbikoKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKExp
c3RlbmVyRnVuY3Rpb24sIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYpOworICAgIHN0
YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soTGlzdGVuZXJGdW5jdGlvbiwgY29uc3QgSGFzaE1h
cDxEb2N1bWVudExvYWRlciosIGJvb2w+Jik7CiAgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVy
VGFzayhMaXN0ZW5lckZ1bmN0aW9uLCBjb25zdCBWZWN0b3I8UmVmUHRyPERvY3VtZW50TG9hZGVy
PiA+JiBsb2FkZXJzKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKExpc3RlbmVy
RnVuY3Rpb24sIERvY3VtZW50TG9hZGVyKik7CiAKQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgYWRkRW50cnkoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgdHlwZSk7
CiAgICAgCi0gICAgdm9pZCBhc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShEb2N1bWVu
dExvYWRlciosIEFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICB2b2lkIGFzc29jaWF0ZURvY3VtZW50
TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9hZGVyKiwgQXBwbGljYXRpb25DYWNoZSosIGJvb2wg
d2FzUGVuZGluZ0VudHJ5KTsKICAgICAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgCkBA
IC0xMzYsNyArMTM3LDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4g
bV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzOwogICAgIAogICAgIC8vIFRoZXNlIGFyZSBh
bGwgdGhlIGRvY3VtZW50IGxvYWRlcnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUg
aW4gdGhpcyBncm91cC4KLSAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4gbV9hc3NvY2lhdGVk
RG9jdW1lbnRMb2FkZXJzOworICAgIC8vIFRoZSBtYXBwZWQgZmxhZyBpcyB0cnVlIGlmIHRoZSBs
b2FkZXIgd2FzIGEgJ3BlbmRpbmcgbWFzdGVyIGVudHJ5JyBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgor
ICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBib29sPiBtX2Fzc29jaWF0ZWREb2N1bWVudExv
YWRlcnM7CiAKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMgb2YgcGVuZGluZyBjYWNoZSBlbnRy
aWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBFbnRyeU1hcDsK
</data>
<flag name="review"
          id="15082"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30702</attachid>
            <date>2009-05-27 04:27:58 -0700</date>
            <delta_ts>2009-06-02 13:53:19 -0700</delta_ts>
            <desc>Fix for 25562 (take 4)</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>12480</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDE4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDUtMjcgIGFuZHJlaXAgIDxhbmRyZWlwQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTYyCisgICAgICAgIFBvdGVudGlh
bCBjcmFzaCBhZnRlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZSgp
IGZhaWxzCisgICAgICAgIAorICAgICAgICBGaXggdGhlIGNyYXNoIGJ5IGNoZWNraW5nIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKQorICAg
ICAgICBpbiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21w
bGV0ZS4gSWYgc3RvcmVOZXdlc3RDYWNoZSBmYWlsZWQsCisgICAgICAgIHdlIHJ1biB0aGUgY2Fj
aGUgZmFpbHVyZSBzdGVwczoKKyAgICAgICAgCisgICAgICAgIDEuIEZpcmUgdGhlIGVycm9yIGV2
ZW50cyB0byBhbGwgcGVuZGluZyBtYXN0ZXIgZW50cmllcywgYXMgd2VsbCBhbnkgb3RoZXIgY2Fj
aGUgaG9zdHMKKyAgICAgICAgICAgY3VycmVudGx5IGFzc29jaWF0ZWQgd2l0aCBhIGNhY2hlIGlu
IHRoaXMgZ3JvdXAuCisgICAgICAgIDIuIERpc2Fzc29jaWF0ZSB0aGUgcGVuZGluZyBtYXN0ZXIg
ZW50cmllcyBmcm9tIHRoZSBmYWlsZWQgbmV3IGNhY2hlLgorICAgICAgICAzLiBSZWluc3RhdGUg
dGhlIG9sZCAibmV3ZXN0IGNhY2hlIiwgaWYgdGhlcmUgd2FzIG9uZS4KKworICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkaW5n
TWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzZXROZXdlc3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAg
ICAgIFJ1biB0aGUgY2FjaGUgZmFpbHVyZSBzdGVwcyBpbiBjYWNoZSBzYXZpbmcgdGhlIG5ld2Vz
dCBjYWNoZSB0byBwZXJzaXN0ZW50IHN0b3JhZ2UgZmFpbHMuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFz
ayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgor
ICAgICAgICBBZGQgYW4gZW51bSB0aGF0IGFsbG93cyB1cyB0byBkaWZmZXJlbnRpYXRlIGJldHdl
ZW4gbmV3IGxvYWRlcnMgdGhhdCBhcmUgYmVpbmcgYWRkZWQgdG8KKyAgICAgICAgYW4gYXBwbGlj
YXRpb24gY2FjaGUgKHRoZXNlIGxvYWRlcnMgd2VyZSAicGVuZGluZyBtYXN0ZXIgZW50cmllcyIp
IGFuZCBvbGQgbG9hZGVycyB0aGF0CisgICAgICAgIHdlcmUgYWxyZWFkeSBwYXJ0IG9mIHRoZSBj
YWNoZSBiZWluZyB1cGRhdGVkLiBJZiBzYXZpbmcgb2YgdGhlIGNhY2hlIHRvIHN0YWJsZSBzdG9y
YWdlCisgICAgICAgIGZhaWxzLCB0aGUgbmV3IGxvYWRlcnMgYXJlIGRpc2Fzc29jaWF0ZWQgZnJv
bSB0aGUgZmFpbGVkIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjopOgorCiAyMDA5LTA1LTI2ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tl
QHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAko
cmV2aXNpb24gNDMyNTApCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKAogICAgIAogICAgIGlmIChtYWluUmVzb3Vy
Y2VDYWNoZSkgewogICAgICAgICBpZiAobWFuaWZlc3RVUkwgPT0gbWFpblJlc291cmNlQ2FjaGUt
Pmdyb3VwKCktPm1fbWFuaWZlc3RVUkwpIHsKLSAgICAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hl
LT5ncm91cCgpLT5hc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShkb2N1bWVudExvYWRl
ciwgbWFpblJlc291cmNlQ2FjaGUpOworICAgICAgICAgICAgbWFpblJlc291cmNlQ2FjaGUtPmdy
b3VwKCktPmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKGRvY3VtZW50TG9hZGVyLCBt
YWluUmVzb3VyY2VDYWNoZSwgT2xkRG9jdW1lbnRMb2FkZXIpOwogICAgICAgICAgICAgbWFpblJl
c291cmNlQ2FjaGUtPmdyb3VwKCktPnVwZGF0ZShmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0
ZVdpdGhCcm93c2luZ0NvbnRleHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
VGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIGNhY2hlLCBzbyB0aGUgY2FjaGUgbXVz
dCBoYXZlIGFuIGVudHJ5IGZvciBpdC4gTWFyayBpdCBhcyBmb3JlaWduLgpAQCAtMTgyLDcgKzE4
Miw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVcKICAgICBBcHBs
aWNhdGlvbkNhY2hlKiBtYWluUmVzb3VyY2VDYWNoZSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVz
b3VyY2VBcHBsaWNhdGlvbkNhY2hlKCk7CiAKICAgICBpZiAobWFpblJlc291cmNlQ2FjaGUpIHsK
LSAgICAgICAgbWFpblJlc291cmNlQ2FjaGUtPmdyb3VwKCktPmFzc29jaWF0ZURvY3VtZW50TG9h
ZGVyV2l0aENhY2hlKGRvY3VtZW50TG9hZGVyLCBtYWluUmVzb3VyY2VDYWNoZSk7CisgICAgICAg
IG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgpLT5hc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhD
YWNoZShkb2N1bWVudExvYWRlciwgbWFpblJlc291cmNlQ2FjaGUsIE9sZERvY3VtZW50TG9hZGVy
KTsKICAgICAgICAgbWFpblJlc291cmNlQ2FjaGUtPmdyb3VwKCktPnVwZGF0ZShmcmFtZSwgQXBw
bGljYXRpb25DYWNoZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRleHQpOwogICAgIH0KIH0KQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkCiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIE5vVXBkYXRlOgogICAgICAgICBBU1NFUlQoIW1fY2Fj
aGVCZWluZ1VwZGF0ZWQpOwotICAgICAgICBhc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNo
ZShsb2FkZXIsIG1fbmV3ZXN0Q2FjaGUuZ2V0KCkpOworICAgICAgICBhc3NvY2lhdGVEb2N1bWVu
dExvYWRlcldpdGhDYWNoZShsb2FkZXIsIG1fbmV3ZXN0Q2FjaGUuZ2V0KCksIE9sZERvY3VtZW50
TG9hZGVyKTsKIAogICAgICAgICBpZiAoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJj
ZSA9IG1fbmV3ZXN0Q2FjaGUtPnJlc291cmNlRm9yVVJMKHVybCkpIHsKICAgICAgICAgICAgIGlm
ICghKHJlc291cmNlLT50eXBlKCkgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3Rlcikp
IHsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExv
YWRpbmcoCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIEhhc2hTZXQ8RG9jdW1lbnRM
b2FkZXIqPjo6aXRlcmF0b3IgaXQgPSBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMuZmluZChs
b2FkZXIpOworICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBEb2N1bWVudExvYWRlclR5cGU+
OjppdGVyYXRvciBpdCA9IG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5maW5kKGxvYWRlcik7
CiAgICAgaWYgKGl0ICE9IG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5lbmQoKSkKICAgICAg
ICAgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLnJlbW92ZShpdCk7CiAKQEAgLTM0Nyw3ICsz
NDcsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVEZXN0cm95CiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZXROZXdlc3RDYWNoZShQYXNzUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IG5ld2VzdENhY2hlKQogewotICAgIEFTU0VSVCghbV9jYWNoZXMuY29udGFpbnMo
bmV3ZXN0Q2FjaGUuZ2V0KCkpKTsKKyAgICAvLyBXZSBjYW4gc2V0IGFuIG9sZCBjYWNoZSBhcyB0
aGUgbmV3IGNhY2hlLiBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgZmFpbGVkCisgICAgLy8gdG8gc3Rv
cmUgYSBuZXdseSBkb3dubG9hZGVkIGNhY2hlIHRvIHRoZSBkYXRhYmFzZSBhbmQgd2UgYXJlIG5v
dyByZWluc3RhdGluZworICAgIC8vIHRoZSBmb3JtZXIgbmV3ZXN0IGNhY2hlLgogCiAgICAgbV9u
ZXdlc3RDYWNoZSA9IG5ld2VzdENhY2hlOwogCkBAIC02MTgsNyArNjIwLDcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYQogCiAgICAgSGFzaFNldDxEb2N1bWVudExv
YWRlcio+Ojpjb25zdF9pdGVyYXRvciBtYXN0ZXJFbmQgPSBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJj
ZUxvYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuYmVnaW4oKTsg
aXRlciAhPSBtYXN0ZXJFbmQ7ICsraXRlcikKLSAgICAgICAgYXNzb2NpYXRlRG9jdW1lbnRMb2Fk
ZXJXaXRoQ2FjaGUoKml0ZXIsIG1fY2FjaGVCZWluZ1VwZGF0ZWQuZ2V0KCkpOworICAgICAgICBh
c3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZSgqaXRlciwgbV9jYWNoZUJlaW5nVXBkYXRl
ZC5nZXQoKSwgTmV3RG9jdW1lbnRMb2FkZXIpOwogCiAgICAgLy8gV2UgaGF2ZSB0aGUgbWFuaWZl
c3QsIG5vdyBkb3dubG9hZCB0aGUgcmVzb3VyY2VzLgogICAgIG1fdXBkYXRlU3RhdHVzID0gRG93
bmxvYWRpbmc7CkBAIC03MzIsMTIgKzczNCw0NSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y2hlY2tJZkxvYWRJCiAgICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBvbGROZXdl
c3RDYWNoZSA9IChtX25ld2VzdENhY2hlID09IG1fY2FjaGVCZWluZ1VwZGF0ZWQpID8gMCA6IG1f
bmV3ZXN0Q2FjaGU7CiAKICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUobV9jYWNoZUJlaW5nVXBkYXRl
ZC5yZWxlYXNlKCkpOwotICAgICAgICBjYWNoZVN0b3JhZ2UoKS5zdG9yZU5ld2VzdENhY2hlKHRo
aXMpOwotCi0gICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkKLSAgICAgICAgICAgIGNhY2hlU3Rv
cmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQoKSk7Ci0KLSAgICAgICAgcG9zdExpc3Rl
bmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxVcGRh
dGVSZWFkeUxpc3RlbmVyIDogJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxDYWNoZWRMaXN0ZW5l
ciwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKKyAgICAgICAgaWYgKGNhY2hlU3RvcmFn
ZSgpLnN0b3JlTmV3ZXN0Q2FjaGUodGhpcykpIHsNCisgICAgICAgICAgICAvLyBOZXcgY2FjaGUg
c3RvcmVkLCBub3cgcmVtb3ZlIHRoZSBvbGQgY2FjaGUuDQorICAgICAgICAgICAgaWYgKG9sZE5l
d2VzdENhY2hlKQ0KKyAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xkTmV3
ZXN0Q2FjaGUuZ2V0KCkpOw0KKyAgICAgICAgICAgIC8vIEZvcmdldCBhYm91dCB0aGUgcGVuZGlu
ZyBtYXN0ZXIgZW50cmllcy4NCisgICAgICAgICAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwg
RG9jdW1lbnRMb2FkZXJUeXBlPjo6aXRlcmF0b3IgbG9hZGVyTWFwRW5kID0gbV9hc3NvY2lhdGVk
RG9jdW1lbnRMb2FkZXJzLmVuZCgpOworICAgICAgICAgICAgZm9yIChIYXNoTWFwPERvY3VtZW50
TG9hZGVyKiwgRG9jdW1lbnRMb2FkZXJUeXBlPjo6aXRlcmF0b3IgaXRlciA9IG1fYXNzb2NpYXRl
ZERvY3VtZW50TG9hZGVycy5iZWdpbigpOyBpdGVyICE9IGxvYWRlck1hcEVuZDsgKytpdGVyKQor
ICAgICAgICAgICAgICAgIGl0ZXItPnNlY29uZCA9IE9sZERvY3VtZW50TG9hZGVyOworICAgICAg
ICAgICAgLy8gRmlyZSB0aGUgc3VjY2VzcyBldmVudHMuCisgICAgICAgICAgICBwb3N0TGlzdGVu
ZXJUYXNrKGlzVXBncmFkZUF0dGVtcHQgPyAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbFVwZGF0
ZVJlYWR5TGlzdGVuZXIgOiAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbENhY2hlZExpc3RlbmVy
LCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOw0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIFJ1biB0aGUgImNhY2hlIGZhaWx1cmUgc3RlcHMiCisgICAgICAgICAgICAvLyBG
aXJlIHRoZSBlcnJvciBldmVudHMgdG8gYWxsIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMsIGFzIHdl
bGwgYW55IG90aGVyIGNhY2hlIGhvc3RzCisgICAgICAgICAgICAvLyBjdXJyZW50bHkgYXNzb2Np
YXRlZCB3aXRoIGEgY2FjaGUgaW4gdGhpcyBncm91cC4KKyAgICAgICAgICAgIHBvc3RMaXN0ZW5l
clRhc2soJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxFcnJvckxpc3RlbmVyLCBtX2Fzc29jaWF0
ZWREb2N1bWVudExvYWRlcnMpOworICAgICAgICAgICAgLy8gRGlzYXNzb2NpYXRlIHRoZSBwZW5k
aW5nIG1hc3RlciBlbnRyaWVzIGZyb20gdGhlIGZhaWxlZCBuZXcgY2FjaGUuIE5vdGUgdGhhdAor
ICAgICAgICAgICAgLy8gYWxsIG90aGVyIGxvYWRlcnMgaW4gdGhlIG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycyBhcmUgc3RpbGwgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgICAgICAvLyBzb21l
IG90aGVyIGNhY2hlIGluIHRoaXMgZ3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGgg
dGhlIGZhaWxlZCBuZXcgY2FjaGUuCisgICAgICAgICAgICAvLyBGaXJzdCBmaW5kIG91dCB3aGF0
IHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyaWVzIGFyZS4gVGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBm
ZXcuCisgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBtYXN0ZXJMb2FkZXJzOwor
ICAgICAgICAgICAgSGFzaE1hcDxEb2N1bWVudExvYWRlciosIERvY3VtZW50TG9hZGVyVHlwZT46
OmNvbnN0X2l0ZXJhdG9yIGxvYWRlck1hcEVuZCA9IG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVy
cy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoSGFzaE1hcDxEb2N1bWVudExvYWRlciosIERvY3Vt
ZW50TG9hZGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2Fzc29jaWF0ZWREb2N1bWVu
dExvYWRlcnMuYmVnaW4oKTsgaXRlciAhPSBsb2FkZXJNYXBFbmQ7ICsraXRlcikgeworICAgICAg
ICAgICAgICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gTmV3RG9jdW1lbnRMb2FkZXIpCisgICAgICAg
ICAgICAgICAgICAgIG1hc3RlckxvYWRlcnMuYXBwZW5kKGl0ZXItPmZpcnN0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIE5vdyBkaXNhc3NvY2lhdGUgdGhlbS4KKyAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IG1hc3RlckxvYWRlcnMuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgIT0gY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICBkaXNhc3NvY2lh
dGVEb2N1bWVudExvYWRlcihtYXN0ZXJMb2FkZXJzW2ldKTsgLy8gVGhpcyBjYW4gZGVsZXRlIHRo
aXMgZ3JvdXAuDQorDQorICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNo
ZSwgaWYgdGhlcmUgd2FzIG9uZS4KKyAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkgewor
ICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBkaXNjYXJkIHRoZSBmYWlsZWQgbmV3IGNhY2hl
LgorICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKG9sZE5ld2VzdENhY2hlLnJlbGVhc2Uo
KSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBo
YXZlIGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50
TG9hZGVyKCkuDQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC04MTQsNyArODQ5LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbgogICAgICAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCB8PSB0eXBlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
QXBwbGljYXRpb25DYWNoZSogY2FjaGUpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNz
b2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQXBw
bGljYXRpb25DYWNoZSogY2FjaGUsIERvY3VtZW50TG9hZGVyVHlwZSB0eXBlKQogewogICAgIC8v
IElmIHRlYXJkb3duIHN0YXJ0ZWQgYWxyZWFkeSwgcmV2aXZlIHRoZSBncm91cC4KICAgICBpZiAo
IW1fbmV3ZXN0Q2FjaGUgJiYgIW1fY2FjaGVCZWluZ1VwZGF0ZWQpCkBAIC04MjUsNyArODYwLDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvYwogICAgIGxvYWRlci0+
c2V0QXBwbGljYXRpb25DYWNoZShjYWNoZSk7CiAKICAgICBBU1NFUlQoIW1fYXNzb2NpYXRlZERv
Y3VtZW50TG9hZGVycy5jb250YWlucyhsb2FkZXIpKTsKLSAgICBtX2Fzc29jaWF0ZWREb2N1bWVu
dExvYWRlcnMuYWRkKGxvYWRlcik7CisgICAgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmFk
ZChsb2FkZXIsIHR5cGUpOwogfQogIAogY2xhc3MgQ2FsbENhY2hlTGlzdGVuZXJUYXNrIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtODYxLDYgKzg5NiwxMyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyCiAgICAgICAgIHBvc3RMaXN0
ZW5lclRhc2sobGlzdGVuZXJGdW5jdGlvbiwgKml0ZXIpOwogfQogCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhMaXN0ZW5lckZ1bmN0aW9uIGxpc3RlbmVyRnVu
Y3Rpb24sIGNvbnN0IEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBEb2N1bWVudExvYWRlclR5cGU+
JiBsb2FkZXJNYXApCit7CisgICAgSGFzaE1hcDxEb2N1bWVudExvYWRlciosIERvY3VtZW50TG9h
ZGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlck1hcEVuZCA9IGxvYWRlck1hcC5lbmQoKTsK
KyAgICBmb3IgKEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBEb2N1bWVudExvYWRlclR5cGU+Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gbG9hZGVyTWFwLmJlZ2luKCk7IGl0ZXIgIT0gbG9hZGVyTWFw
RW5kOyArK2l0ZXIpCisgICAgICAgIHBvc3RMaXN0ZW5lclRhc2sobGlzdGVuZXJGdW5jdGlvbiwg
aXRlci0+Zmlyc3QpOworfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3Rl
bmVyVGFzayhMaXN0ZW5lckZ1bmN0aW9uIGxpc3RlbmVyRnVuY3Rpb24sIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbG9hZGVyLT5mcmFtZSgpOwpJbmRleDog
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJl
dmlzaW9uIDQzMjUwKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDIwIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb3B5OyB9CiAKIHByaXZhdGU6CisgICAg
Ly8gQ2F0ZWdvcml6ZXMgdGhlIHR5cGUgb2YgdGhlIGRvY3VtZW50IGxvYWRlcnMgdGhhdCBhcmUg
dG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXBwbGljYXRpb24KKyAgICAvLyBjYWNoZSB2
aWEgdGhlIGFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKCkgbWV0aG9kLiBBIGRvY3Vt
ZW50IGxvYWRlciBjYW4gZWl0aGVyIGJlIG5ldywKKyAgICAvLyBpLmUuIGEgZm9ybWVybHkgInBl
bmRpbmcgbWFzdGVyIGVudHJ5Iiwgb3Igb2xkLCBpLmUuIGFscmVhZHkgcGFydCBvZiB0aGUgZ2l2
ZW4gYXBwbGljYXRpb24gY2FjaGUuCisgICAgLy8KKyAgICAvLyBXZSBuZWVkIHRvIG1ha2UgdGhp
cyBkaXNjdGluY3Rpb24gc28gdGhhdCwgaW4gY2FzZSBvZiBhIGNhY2hlIHVwZGF0ZSBmYWlsdXJl
LCB3ZSBjYW4gZGlzYXNzb2NpYXRlCisgICAgLy8gdGhlIGZvcm1lcmx5IHBlbmRpbmcgbWFzdGVy
IGVudHJpZXMgZnJvbSB0aGUgZmFpbGVkIGNhY2hlLiBUaGlzIGlzIGRvbmUgYXMgcGFydCBvZiB0
aGUgSFRNTCA1J3MKKyAgICAvLyAiY2FjaGUgZmFpbHVyZSBzdGVwcyIgcHJvY2VkdXJlIChzdGVw
IDEuMikuCisgICAgZW51bSBEb2N1bWVudExvYWRlclR5cGUgeworICAgICAgICBOZXdEb2N1bWVu
dExvYWRlciA9IDAsCisgICAgICAgIE9sZERvY3VtZW50TG9hZGVyLAorICAgIH07CiAgICAgdHlw
ZWRlZiB2b2lkIChET01BcHBsaWNhdGlvbkNhY2hlOjoqTGlzdGVuZXJGdW5jdGlvbikoKTsKICAg
ICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKExpc3RlbmVyRnVuY3Rpb24sIGNvbnN0IEhh
c2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYpOworICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRh
c2soTGlzdGVuZXJGdW5jdGlvbiwgY29uc3QgSGFzaE1hcDxEb2N1bWVudExvYWRlciosIERvY3Vt
ZW50TG9hZGVyVHlwZT4mKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKExpc3Rl
bmVyRnVuY3Rpb24sIGNvbnN0IFZlY3RvcjxSZWZQdHI8RG9jdW1lbnRMb2FkZXI+ID4mIGxvYWRl
cnMpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soTGlzdGVuZXJGdW5jdGlvbiwg
RG9jdW1lbnRMb2FkZXIqKTsKIApAQCAtMTE0LDggKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBtYW5pZmVzdE5vdEZvdW5kKCk7CiAgICAgCiAgICAgdm9pZCBhZGRFbnRyeShjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCB0eXBlKTsKLSAgICAKLSAgICB2b2lkIGFzc29jaWF0ZURvY3VtZW50TG9h
ZGVyV2l0aENhY2hlKERvY3VtZW50TG9hZGVyKiwgQXBwbGljYXRpb25DYWNoZSopOworCisgICAg
dm9pZCBhc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShEb2N1bWVudExvYWRlciosIEFw
cGxpY2F0aW9uQ2FjaGUqLCBEb2N1bWVudExvYWRlclR5cGUgdHlwZSk7CiAgICAgCiAgICAgdm9p
ZCBzdG9wTG9hZGluZygpOwogICAgIApAQCAtMTM2LDcgKzE0OCw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxEb2N1bWVudExvYWRlcio+IG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyczsK
ICAgICAKICAgICAvLyBUaGVzZSBhcmUgYWxsIHRoZSBkb2N1bWVudCBsb2FkZXJzIHRoYXQgYXJl
IGFzc29jaWF0ZWQgd2l0aCBhIGNhY2hlIGluIHRoaXMgZ3JvdXAuCi0gICAgSGFzaFNldDxEb2N1
bWVudExvYWRlcio+IG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVyczsKKyAgICBIYXNoTWFwPERv
Y3VtZW50TG9hZGVyKiwgRG9jdW1lbnRMb2FkZXJUeXBlPiBtX2Fzc29jaWF0ZWREb2N1bWVudExv
YWRlcnM7CiAKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMgb2YgcGVuZGluZyBjYWNoZSBlbnRy
aWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBFbnRyeU1hcDsK
</data>
<flag name="review"
          id="15557"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30880</attachid>
            <date>2009-06-02 13:53:19 -0700</date>
            <delta_ts>2009-06-03 12:36:40 -0700</delta_ts>
            <desc>30702: Fix for 25562 (take 5)</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>11789</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDM2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMDYtMDIgIEFuZHJlaSBQb3Blc2N1IDxhbmRyZWlwQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTYyCisgICAgICAgIFBv
dGVudGlhbCBjcmFzaCBhZnRlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RD
YWNoZSgpIGZhaWxzCisKKwlGaXggdGhlIGNyYXNoIGJ5IGNoZWNraW5nIHRoZSByZXR1cm4gdmFs
dWUgb2YgY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKQorCWluIFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlLiBJZiBzdG9yZU5l
d2VzdENhY2hlIGZhaWxlZCwKKwl3ZSBydW4gdGhlIGNhY2hlIGZhaWx1cmUgc3RlcHM6CisKKwkx
LiBGaXJlIHRoZSBlcnJvciBldmVudHMgdG8gYWxsIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMsIGFz
IHdlbGwgYW55IG90aGVyIGNhY2hlIGhvc3RzCisJICAgY3VycmVudGx5IGFzc29jaWF0ZWQgd2l0
aCBhIGNhY2hlIGluIHRoaXMgZ3JvdXAuCisJMi4gRGlzYXNzb2NpYXRlIHRoZSBwZW5kaW5nIG1h
c3RlciBlbnRyaWVzIGZyb20gdGhlIGZhaWxlZCBuZXcgY2FjaGUuCisJMy4gUmVpbnN0YXRlIHRo
ZSBvbGQgIm5ld2VzdCBjYWNoZSIsIGlmIHRoZXJlIHdhcyBvbmUuCisKKyAgICAgICAgV2UgYWxz
byBpbnRyb2R1Y2UgdHdvIG90aGVyIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICAxLiBhIG1l
Y2hhbmlzbSB0byByb2xsYmFjayBzdG9yYWdlSUQgY2hhbmdlcyB0byB0aGUgaW4tbWVtb3J5IHJl
c291cmNlCisgICAgICAgICAgIG9iamVjdHMgd2hlbiB0aGUgc3RvcmluZyBvZiBhbiBBcHBsaWNh
dGlvbkNhY2hlIG9iamVjdCBmYWlscy4KKworICAgICAgICAyLiBkZWZlciByZW1vdmluZyB0aGUg
cGVuZGluZyBtYXN0ZXIgZW50cmllcyBmcm9tIHRoZSBsaXN0IG9mIHBlbmRpbmcgbWFzdGVyIGVu
dHJpZXMKKyAgICAgICAgICAgdW50aWwgdGhlIGVudGlyZSBsb2FkIGlzIGNvbXBsZXRlLiBUaGlz
IG1hdGNoZXMgdGhlIEhUTUwgNSBzcGVjIGJldHRlci4gVG8gdHJhY2sKKyAgICAgICAgICAgaWYg
dGhlIGxvYWQgaXMgY29tcGxldGUgd2Ugbm93IGludHJvZHVjZSBhIGNvdW50ZXIgZm9yIHRob3Nl
IHBlbmRpbmcgbWFzdGVyIGVudHJpZXMKKyAgICAgICAgICAgdGhhdCBoYXZlbid0IHlldCBmaW5z
aGVkIGRvd25sb2FkaW5nLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCk6IGluaXRpYWxpemVzIHRoZSBuZXcgY291bnRlciB0byAw
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKTog
aW5jcmVtZW50cyB0aGUgY291bnRlciB3aGVuIGEgbmV3IHBlbmRpbmcKKyAgICAgICAgbWFzdGVy
IGVudHJ5IGlzIGFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UpOiBkZWNyZW1lbnRzIHRoZSBjb3VudGVyCisg
ICAgICAgIGluc3RlYWQgb2YgcmVtb3ZpbmcgdGhlIHBlbmRpbmcgbWFzdGVyIGVudHJ5LgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWlsZWRMb2FkaW5nTWFpblJl
c291cmNlKTogZGVjcmVtZW50cyB0aGUgY291bnRlcgorICAgICAgICBpbnN0ZWFkIG9mIHJlbW92
aW5nIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyeS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2V0TmV3ZXN0Q2FjaGUpOiByZW1vdmVzIGFuIGFzc2VydGlvbiB0aGF0
IG5vIGxvbmdlcgorICAgICAgICBob2xkcyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEZvdW5kKTogcmVzZXRzIHRoZSBjb3VudGVyIHRv
IDAuCisgICAgICAgIHRoZSBsaXN0IG9mIHBlbmRpbmcgbWFzdGVyIGVuCisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6IGNoZWNr
IGlmIHRoZSBsb2FkaW5nIGlzIGNvbXBsZXRlCisgICAgICAgIGJhc2VkIG9uIHRoZSBjb3VudGVy
IGluc3RlYWQgb2YgdGhlIGxpc3Qgb2YgcGVuZGluZyBtYXN0ZXIgZW50cmllcy4gRW1wdHkgdGhl
IGxpc3Qgb2YKKyAgICAgICAgbWFzdGVyIGVudHJpZXMgaWYgdGhlIGxvYWQgaXMgY29tcGxldGUu
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOiBhZGQg
dGhlIG5ldyBjb3VudGVyLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6IGludHJvZHVjZSB0aGUgbG9nZ2luZyBtZWNoYW5pc20gZm9yCisgICAg
ICAgIGluLW1lbW9yeSByZXNvdXJjZSBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VTdG9yYWdlSURMb2dnZXI6On5SZXNvdXJjZVN0b3JhZ2VJRExvZ2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVN0b3JhZ2VJRExvZ2dlcjo6bG9nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlU3RvcmFnZUlETG9nZ2VyOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VTdG9yYWdlSURMb2dnZXI6OkxvZ1JlY29yZDo6TG9nUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlU3RvcmFnZUlETG9nZ2VyOjpMb2dSZWNvcmQ6OnJlc3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKTogbG9nIHRoZSBj
aGFuZ2VzIHRvIHRoZSBpbi1tZW1vcnkgcmVzb3VyY2UKKyAgICAgICAgb2JqZWN0cy4KKworCiAy
MDA5LTA2LTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24gNDMyNTApCisrKyBXZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBi
b29sIGlzQ29weSkKICAgICA6IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX3Vw
ZGF0ZVN0YXR1cyhJZGxlKQorICAgICwgbV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJj
ZUxvYWRlcnNDb3VudCgwKQogICAgICwgbV9mcmFtZSgwKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
ICAgICAsIG1faXNPYnNvbGV0ZShmYWxzZSkKQEAgLTE2Niw2ICsxNjcsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoCiAKICAgICBkb2N1bWVudExvYWRlci0+c2V0
Q2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKGdyb3VwKTsKICAgICBncm91cC0+bV9wZW5k
aW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmFkZChkb2N1bWVudExvYWRlcik7CisgICAgZ3JvdXAt
Pm1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzQ291bnQrKzsKIAogICAg
IEFTU0VSVCghZ3JvdXAtPm1fY2FjaGVCZWluZ1VwZGF0ZWQgfHwgZ3JvdXAtPm1fdXBkYXRlU3Rh
dHVzICE9IElkbGUpOwogICAgIGdyb3VwLT51cGRhdGUoZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVV
cGRhdGVXaXRoQnJvd3NpbmdDb250ZXh0KTsKQEAgLTIzMiw3ICsyMzQsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyKTsKKyAgICBt
X2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50LS07CiAgICAgY2hl
Y2tJZkxvYWRJc0NvbXBsZXRlKCk7CiB9CiAKQEAgLTI3Niw3ICsyNzgsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZmFpbGVkTG9hZGluCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyKTsKKyAgICBt
X2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50LS07CiAgICAgY2hl
Y2tJZkxvYWRJc0NvbXBsZXRlKCk7CiB9CiAKQEAgLTM0Nyw3ICszNDksOSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVEZXN0cm95CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpzZXROZXdlc3RDYWNoZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG5ld2VzdENh
Y2hlKQogewotICAgIEFTU0VSVCghbV9jYWNoZXMuY29udGFpbnMobmV3ZXN0Q2FjaGUuZ2V0KCkp
KTsKKyAgICAvLyBXZSBjYW4gc2V0IGFuIG9sZCBjYWNoZSBhcyB0aGUgbmV3IGNhY2hlLiBUaGlz
IGNhbiBoYXBwZW4gaWYgd2UgZmFpbGVkDQorICAgIC8vIHRvIHN0b3JlIGEgbmV3bHkgZG93bmxv
YWRlZCBjYWNoZSB0byB0aGUgZGF0YWJhc2UgYW5kIHdlIGFyZSBub3cgcmVpbnN0YXRpbmcNCisg
ICAgLy8gdGhlIGZvcm1lciBuZXdlc3QgY2FjaGUuCiAKICAgICBtX25ld2VzdENhY2hlID0gbmV3
ZXN0Q2FjaGU7CiAKQEAgLTY4MSw2ICs2ODUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6bWFuaWZlc3ROb3RGCiAgICAgICAgIG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5y
ZW1vdmUoaXQpOwogICAgIH0KIAorICAgIG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3Vy
Y2VMb2FkZXJzQ291bnQgPSAwOwogICAgIG1fdXBkYXRlU3RhdHVzID0gSWRsZTsgICAgCiAgICAg
bV9mcmFtZSA9IDA7CiAgICAgCkBAIC02OTMsNyArNjk4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6Om1hbmlmZXN0Tm90RgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hl
Y2tJZkxvYWRJc0NvbXBsZXRlKCkKIHsKLSAgICBpZiAobV9tYW5pZmVzdEhhbmRsZSB8fCAhbV9w
ZW5kaW5nRW50cmllcy5pc0VtcHR5KCkgfHwgIW1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVy
cy5pc0VtcHR5KCkpCisgICAgaWYgKG1fbWFuaWZlc3RIYW5kbGUgfHwgIW1fcGVuZGluZ0VudHJp
ZXMuaXNFbXB0eSgpIHx8IG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJz
Q291bnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBXZSdyZSBkb25lLCBhbGwgcmVz
b3VyY2VzIGhhdmUgZmluaXNoZWQgZG93bmxvYWRpbmcgKHN1Y2Nlc3NmdWxseSBvciBub3QpLgpA
QCAtNzMyLDE2ICs3MzcsNDMgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZM
b2FkSQogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gb2xkTmV3ZXN0Q2FjaGUgPSAo
bV9uZXdlc3RDYWNoZSA9PSBtX2NhY2hlQmVpbmdVcGRhdGVkKSA/IDAgOiBtX25ld2VzdENhY2hl
OwogCiAgICAgICAgIHNldE5ld2VzdENhY2hlKG1fY2FjaGVCZWluZ1VwZGF0ZWQucmVsZWFzZSgp
KTsKLSAgICAgICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKTsKLQotICAg
ICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpCi0gICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1v
dmUob2xkTmV3ZXN0Q2FjaGUuZ2V0KCkpOwotCi0gICAgICAgIHBvc3RMaXN0ZW5lclRhc2soaXNV
cGdyYWRlQXR0ZW1wdCA/ICZET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsVXBkYXRlUmVhZHlMaXN0
ZW5lciA6ICZET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsQ2FjaGVkTGlzdGVuZXIsIG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5zdG9yZU5l
d2VzdENhY2hlKHRoaXMpKSB7DQorICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93
IHJlbW92ZSB0aGUgb2xkIGNhY2hlLg0KKyAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkN
CisgICAgICAgICAgICAgICAgY2FjaGVTdG9yYWdlKCkucmVtb3ZlKG9sZE5ld2VzdENhY2hlLmdl
dCgpKTsNCisgICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50cy4NCisgICAgICAg
ICAgICBwb3N0TGlzdGVuZXJUYXNrKGlzVXBncmFkZUF0dGVtcHQgPyAmRE9NQXBwbGljYXRpb25D
YWNoZTo6Y2FsbFVwZGF0ZVJlYWR5TGlzdGVuZXIgOiAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2Fs
bENhY2hlZExpc3RlbmVyLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOw0KKyAgICAgICAg
fSBlbHNlIHsNCisgICAgICAgICAgICAvLyBSdW4gdGhlICJjYWNoZSBmYWlsdXJlIHN0ZXBzIg0K
KyAgICAgICAgICAgIC8vIEZpcmUgdGhlIGVycm9yIGV2ZW50cyB0byBhbGwgcGVuZGluZyBtYXN0
ZXIgZW50cmllcywgYXMgd2VsbCBhbnkgb3RoZXIgY2FjaGUgaG9zdHMNCisgICAgICAgICAgICAv
LyBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUgaW4gdGhpcyBncm91cC4NCisgICAg
ICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKCZET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsRXJyb3JM
aXN0ZW5lciwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsNCisgICAgICAgICAgICAvLyBE
aXNhc3NvY2lhdGUgdGhlIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMgZnJvbSB0aGUgZmFpbGVkIG5l
dyBjYWNoZS4gTm90ZSB0aGF0DQorICAgICAgICAgICAgLy8gYWxsIG90aGVyIGxvYWRlcnMgaW4g
dGhlIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyBhcmUgc3RpbGwgYXNzb2NpYXRlZCB3aXRo
DQorICAgICAgICAgICAgLy8gc29tZSBvdGhlciBjYWNoZSBpbiB0aGlzIGdyb3VwLiBUaGV5IGFy
ZSBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBmYWlsZWQgbmV3IGNhY2hlLg0KKw0KKyAgICAgICAg
ICAgIC8vIE5lZWQgdG8gY29weSBsb2FkZXJzLCBiZWNhdXNlIHRoZSBjYWNoZSBncm91cCBtYXkg
YmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgaXRlcmF0aW9uLgorICAgICAgICAgICAgVmVjdG9y
PERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsKKyAgICAgICAgICAgIGNvcHlUb1ZlY3RvcihtX3Bl
bmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMsIGxvYWRlcnMpOworICAgICAgICAgICAgc2l6ZV90
IGNvdW50ID0gbG9hZGVycy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSAhPSBjb3VudDsgKytpKQ0KKyAgICAgICAgICAgICAgICBkaXNhc3NvY2lhdGVEb2N1bWVudExv
YWRlcihsb2FkZXJzW2ldKTsgLy8gVGhpcyBjYW4gZGVsZXRlIHRoaXMgZ3JvdXAuDQorDQorICAg
ICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZSwgaWYgdGhlcmUgd2FzIG9u
ZS4NCisgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsNCisgICAgICAgICAgICAgICAg
Ly8gVGhpcyB3aWxsIGRpc2NhcmQgdGhlIGZhaWxlZCBuZXcgY2FjaGUuDQorICAgICAgICAgICAg
ICAgIHNldE5ld2VzdENhY2hlKG9sZE5ld2VzdENhY2hlLnJlbGVhc2UoKSk7DQorICAgICAgICAg
ICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZlIGJlZW4gZGVsZXRl
ZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKCkuDQorICAg
ICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgfQogCisgICAgLy8gRW1wdHkgY2FjaGUgZ3JvdXAncyBsaXN0
IG9mIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMuCisgICAgbV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VM
b2FkZXJzLmNsZWFyKCk7CiAgICAgbV9jb21wbGV0aW9uVHlwZSA9IE5vbmU7CiAgICAgbV91cGRh
dGVTdGF0dXMgPSBJZGxlOwogICAgIG1fZnJhbWUgPSAwOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDQzMjUwKQor
KysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzNCw2ICsxMzQsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gTGlzdCBvZiBw
ZW5kaW5nIG1hc3RlciBlbnRyaWVzLCB1c2VkIGR1cmluZyB0aGUgdXBkYXRlIHByb2Nlc3MgdG8g
ZW5zdXJlIHRoYXQgbmV3IG1hc3RlciBlbnRyaWVzIGFyZSBjYWNoZWQuCiAgICAgSGFzaFNldDxE
b2N1bWVudExvYWRlcio+IG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyczsKKyAgICAvLyBI
b3cgbWFueSBvZiB0aGUgYWJvdmUgcGVuZGluZyBtYXN0ZXIgZW50cmllcyBoYXZlIG5vdCB5ZXQg
ZmluaXNoZWQgZG93bmxvYWRpbmcuCisgICAgaW50IG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVy
UmVzb3VyY2VMb2FkZXJzQ291bnQ7CiAgICAgCiAgICAgLy8gVGhlc2UgYXJlIGFsbCB0aGUgZG9j
dW1lbnQgbG9hZGVycyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBjYWNoZSBpbiB0aGlzIGdy
b3VwLgogICAgIEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiBtX2Fzc29jaWF0ZWREb2N1bWVudExv
YWRlcnM7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiA0MzI1MCkKKysrIFdlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNDQgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBSZXNvdXJjZVN0b3JhZ2VJRExvZ2dlciB7CitwdWJsaWM6ICAKKyAgICB+UmVzb3Vy
Y2VTdG9yYWdlSURMb2dnZXIoKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3JlY29y
ZHMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgICAgIG1fcmVjb3Jkc1tpXS5yZXN0b3JlKCk7CisgICAgfQorCisgICAgdm9pZCBsb2co
UGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHJlc291cmNlLCB1bnNpZ25lZCBz
dG9yYWdlSUQpCisgICAgeworICAgICAgICBtX3JlY29yZHMuYXBwZW5kKExvZ1JlY29yZChyZXNv
dXJjZSwgc3RvcmFnZUlEKSk7CisgICAgfQorCisgICAgdm9pZCBjb21taXQoKQorICAgIHsKKyAg
ICAgICAgbV9yZWNvcmRzLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGNsYXNzIExv
Z1JlY29yZCB7CisgICAgcHVibGljOgorICAgICAgICBMb2dSZWNvcmQoKSA6IG1fcmVzb3VyY2Uo
MCksIG1fc3RvcmFnZUlEKDApIHt9CisgICAgICAgIExvZ1JlY29yZChQYXNzUmVmUHRyPEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZT4gcmVzb3VyY2UsIHVuc2lnbmVkIHN0b3JhZ2VJRCkgOiBtX3Jl
c291cmNlKHJlc291cmNlKSwgbV9zdG9yYWdlSUQoc3RvcmFnZUlEKSB7fQorICAKKyAgICAgICAg
dm9pZCByZXN0b3JlKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9yZXNvdXJjZS0+c2V0U3Rv
cmFnZUlEKG1fc3RvcmFnZUlEKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
UmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gbV9yZXNvdXJjZTsKKyAgICAgICAgdW5z
aWduZWQgbV9zdG9yYWdlSUQ7CisgICAgfTsKKworICAgIFZlY3RvcjxMb2dSZWNvcmQ+IG1fcmVj
b3JkczsKK307CisKIHN0YXRpYyB1bnNpZ25lZCB1cmxIb3N0SGFzaChjb25zdCBLVVJMJiB1cmwp
CiB7CiAgICAgdW5zaWduZWQgaG9zdFN0YXJ0ID0gdXJsLmhvc3RTdGFydCgpOwpAQCAtNDUyLDE1
ICs0OTAsMjMgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbAogICAg
IAogICAgIHVuc2lnbmVkIGNhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
ZGF0YWJhc2UubGFzdEluc2VydFJvd0lEKCkpOwogCisgICAgLy8gTG9nIHRoZSBjaGFuZ2VzIHRv
IHRoZSBpbi1tZW1vcnkgcmVzb3VyY2Ugb2JqZWN0cy4gVGhleSBtYXkgbmVlZCB0byBiZQorICAg
IC8vIHJvbGxlZCBiYWNrLgorICAgIFJlc291cmNlU3RvcmFnZUlETG9nZ2VyIGxvZ2dlcjsKICAg
ICAvLyBTdG9yZSBhbGwgcmVzb3VyY2VzCiAgICAgewogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
OjpSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2FjaGUtPmVuZCgpOwogICAgICAg
ICBmb3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGNhY2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghc3Rv
cmUoaXQtPnNlY29uZC5nZXQoKSwgY2FjaGVTdG9yYWdlSUQpKQorICAgICAgICAgICAgdW5zaWdu
ZWQgb2xkU3RvcmFnZUlEID0gaXQtPnNlY29uZC0+c3RvcmFnZUlEKCk7CisgICAgICAgICAgICBp
ZiAoIXN0b3JlKGl0LT5zZWNvbmQuZ2V0KCksIGNhY2hlU3RvcmFnZUlEKSkgewogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFN0b3Jp
bmcgdGhlIHJlc291cmNlIHN1Y2NlZWRlZC4gQmFjayB1cCBpdHMgSUQgaW4gY2FzZSBzb21ldGhp
bmcKKyAgICAgICAgICAgIC8vIGVsc2UgZmFpbHMgbGF0ZXIuCisgICAgICAgICAgICBsb2dnZXIu
bG9nKGl0LT5zZWNvbmQsIG9sZFN0b3JhZ2VJRCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisK
ICAgICAvLyBTdG9yZSB0aGUgb25saW5lIHdoaXRlbGlzdAogICAgIGNvbnN0IFZlY3RvcjxLVVJM
PiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUtPm9ubGluZVdoaXRlbGlzdCgpOwogICAgIHsKQEAg
LTQ5NCw3ICs1NDAsMTAgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gU2V0IHRoZSBzdG9yYWdlIElEIGZvciB0aGUg
Y2FjaGUgb2JqZWN0IGFuZCBjb21taXQgdGhlIHN0b3JhZ2UgSURzCisgICAgLy8gZm9yIHRoZSBy
ZXNvdXJjZSBvYmplY3RzLgogICAgIGNhY2hlLT5zZXRTdG9yYWdlSUQoY2FjaGVTdG9yYWdlSUQp
OworICAgIGxvZ2dlci5jb21taXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30899</attachid>
            <date>2009-06-03 04:16:41 -0700</date>
            <delta_ts>2009-06-03 12:36:35 -0700</delta_ts>
            <desc>30880: 30702: Fix for 25562 (take 5)</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>13404</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDM2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMDYtMDIgIEFuZHJlaSBQb3Blc2N1IDxhbmRyZWlwQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTYyCisgICAgICAgIFBv
dGVudGlhbCBjcmFzaCBhZnRlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RD
YWNoZSgpIGZhaWxzCisKKwlGaXggdGhlIGNyYXNoIGJ5IGNoZWNraW5nIHRoZSByZXR1cm4gdmFs
dWUgb2YgY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKQorCWluIFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlLiBJZiBzdG9yZU5l
d2VzdENhY2hlIGZhaWxlZCwKKwl3ZSBydW4gdGhlIGNhY2hlIGZhaWx1cmUgc3RlcHM6CisKKwkx
LiBGaXJlIHRoZSBlcnJvciBldmVudHMgdG8gYWxsIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMsIGFz
IHdlbGwgYW55IG90aGVyIGNhY2hlIGhvc3RzCisJICAgY3VycmVudGx5IGFzc29jaWF0ZWQgd2l0
aCBhIGNhY2hlIGluIHRoaXMgZ3JvdXAuCisJMi4gRGlzYXNzb2NpYXRlIHRoZSBwZW5kaW5nIG1h
c3RlciBlbnRyaWVzIGZyb20gdGhlIGZhaWxlZCBuZXcgY2FjaGUuCisJMy4gUmVpbnN0YXRlIHRo
ZSBvbGQgIm5ld2VzdCBjYWNoZSIsIGlmIHRoZXJlIHdhcyBvbmUuCisKKyAgICAgICAgV2UgYWxz
byBpbnRyb2R1Y2UgdHdvIG90aGVyIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICAxLiBhIG1l
Y2hhbmlzbSB0byByb2xsYmFjayBzdG9yYWdlSUQgY2hhbmdlcyB0byB0aGUgaW4tbWVtb3J5IHJl
c291cmNlCisgICAgICAgICAgIG9iamVjdHMgd2hlbiB0aGUgc3RvcmluZyBvZiBhbiBBcHBsaWNh
dGlvbkNhY2hlIG9iamVjdCBmYWlscy4KKworICAgICAgICAyLiBkZWZlciByZW1vdmluZyB0aGUg
cGVuZGluZyBtYXN0ZXIgZW50cmllcyBmcm9tIHRoZSBsaXN0IG9mIHBlbmRpbmcgbWFzdGVyIGVu
dHJpZXMKKyAgICAgICAgICAgdW50aWwgdGhlIGVudGlyZSBsb2FkIGlzIGNvbXBsZXRlLiBUaGlz
IG1hdGNoZXMgdGhlIEhUTUwgNSBzcGVjIGJldHRlci4gVG8gdHJhY2sKKyAgICAgICAgICAgaWYg
dGhlIGxvYWQgaXMgY29tcGxldGUgd2Ugbm93IGludHJvZHVjZSBhIGNvdW50ZXIgZm9yIHRob3Nl
IHBlbmRpbmcgbWFzdGVyIGVudHJpZXMKKyAgICAgICAgICAgdGhhdCBoYXZlbid0IHlldCBmaW5z
aGVkIGRvd25sb2FkaW5nLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCk6IGluaXRpYWxpemVzIHRoZSBuZXcgY291bnRlciB0byAw
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKTog
aW5jcmVtZW50cyB0aGUgY291bnRlciB3aGVuIGEgbmV3IHBlbmRpbmcKKyAgICAgICAgbWFzdGVy
IGVudHJ5IGlzIGFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UpOiBkZWNyZW1lbnRzIHRoZSBjb3VudGVyCisg
ICAgICAgIGluc3RlYWQgb2YgcmVtb3ZpbmcgdGhlIHBlbmRpbmcgbWFzdGVyIGVudHJ5LgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWlsZWRMb2FkaW5nTWFpblJl
c291cmNlKTogZGVjcmVtZW50cyB0aGUgY291bnRlcgorICAgICAgICBpbnN0ZWFkIG9mIHJlbW92
aW5nIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyeS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2V0TmV3ZXN0Q2FjaGUpOiByZW1vdmVzIGFuIGFzc2VydGlvbiB0aGF0
IG5vIGxvbmdlcgorICAgICAgICBob2xkcyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEZvdW5kKTogcmVzZXRzIHRoZSBjb3VudGVyIHRv
IDAuCisgICAgICAgIHRoZSBsaXN0IG9mIHBlbmRpbmcgbWFzdGVyIGVuCisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6IGNoZWNr
IGlmIHRoZSBsb2FkaW5nIGlzIGNvbXBsZXRlCisgICAgICAgIGJhc2VkIG9uIHRoZSBjb3VudGVy
IGluc3RlYWQgb2YgdGhlIGxpc3Qgb2YgcGVuZGluZyBtYXN0ZXIgZW50cmllcy4gRW1wdHkgdGhl
IGxpc3Qgb2YKKyAgICAgICAgbWFzdGVyIGVudHJpZXMgaWYgdGhlIGxvYWQgaXMgY29tcGxldGUu
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOiBhZGQg
dGhlIG5ldyBjb3VudGVyLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6IGludHJvZHVjZSB0aGUgbG9nZ2luZyBtZWNoYW5pc20gZm9yCisgICAg
ICAgIGluLW1lbW9yeSByZXNvdXJjZSBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VTdG9yYWdlSURMb2dnZXI6On5SZXNvdXJjZVN0b3JhZ2VJRExvZ2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVN0b3JhZ2VJRExvZ2dlcjo6bG9nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlU3RvcmFnZUlETG9nZ2VyOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VTdG9yYWdlSURMb2dnZXI6OkxvZ1JlY29yZDo6TG9nUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlU3RvcmFnZUlETG9nZ2VyOjpMb2dSZWNvcmQ6OnJlc3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKTogbG9nIHRoZSBj
aGFuZ2VzIHRvIHRoZSBpbi1tZW1vcnkgcmVzb3VyY2UKKyAgICAgICAgb2JqZWN0cy4KKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDogbW9kaWZ5IHRo
ZSBzaWduYXR1cmUgb2YNCisJIGJvb2wgc3RvcmUoQXBwbGljYXRpb25DYWNoZSopIHRvIGFkZCBh
IHBvaW50ZXIgdG8gdGhlIGxvZ2dlciBvYmplY3QgdXNlZCB0byB0cmFjZSB0aGUNCisJIGNoYW5n
ZXMgdG8gdGhlIHN0b3JhZ2VJRCBvZiB0aGUgcmVzb3VyY2Ugb2JqZWN0cy4NCisKKwogMjAwOS0w
Ni0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDQzMjUwKQorKysgV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBp
c0NvcHkpCiAgICAgOiBtX21hbmlmZXN0VVJMKG1hbmlmZXN0VVJMKQogICAgICwgbV91cGRhdGVT
dGF0dXMoSWRsZSkKKyAgICAsIG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2Fk
ZXJzQ291bnQoMCkKICAgICAsIG1fZnJhbWUoMCkKICAgICAsIG1fc3RvcmFnZUlEKDApCiAgICAg
LCBtX2lzT2Jzb2xldGUoZmFsc2UpCkBAIC0xNjYsNiArMTY3LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKAogCiAgICAgZG9jdW1lbnRMb2FkZXItPnNldENhbmRp
ZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cChncm91cCk7CiAgICAgZ3JvdXAtPm1fcGVuZGluZ01h
c3RlclJlc291cmNlTG9hZGVycy5hZGQoZG9jdW1lbnRMb2FkZXIpOworICAgIGdyb3VwLT5tX2Rv
d25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50Kys7CiAKICAgICBBU1NF
UlQoIWdyb3VwLT5tX2NhY2hlQmVpbmdVcGRhdGVkIHx8IGdyb3VwLT5tX3VwZGF0ZVN0YXR1cyAh
PSBJZGxlKTsKICAgICBncm91cC0+dXBkYXRlKGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRl
V2l0aEJyb3dzaW5nQ29udGV4dCk7CkBAIC0yMzIsNyArMjM0LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBt
X3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7CisgICAgbV9kb3du
bG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudC0tOwogICAgIGNoZWNrSWZM
b2FkSXNDb21wbGV0ZSgpOwogfQogCkBAIC0yNzYsNyArMjc4LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmZhaWxlZExvYWRpbgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBt
X3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7CisgICAgbV9kb3du
bG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudC0tOwogICAgIGNoZWNrSWZM
b2FkSXNDb21wbGV0ZSgpOwogfQogCkBAIC0zNDcsNyArMzQ5LDkgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c2V0TmV3ZXN0Q2FjaGUoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBuZXdlc3RDYWNoZSkK
IHsKLSAgICBBU1NFUlQoIW1fY2FjaGVzLmNvbnRhaW5zKG5ld2VzdENhY2hlLmdldCgpKSk7Cisg
ICAgLy8gV2UgY2FuIHNldCBhbiBvbGQgY2FjaGUgYXMgdGhlIG5ldyBjYWNoZS4gVGhpcyBjYW4g
aGFwcGVuIGlmIHdlIGZhaWxlZA0KKyAgICAvLyB0byBzdG9yZSBhIG5ld2x5IGRvd25sb2FkZWQg
Y2FjaGUgdG8gdGhlIGRhdGFiYXNlIGFuZCB3ZSBhcmUgbm93IHJlaW5zdGF0aW5nDQorICAgIC8v
IHRoZSBmb3JtZXIgbmV3ZXN0IGNhY2hlLgogCiAgICAgbV9uZXdlc3RDYWNoZSA9IG5ld2VzdENh
Y2hlOwogCkBAIC02ODEsNiArNjg1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Om1h
bmlmZXN0Tm90RgogICAgICAgICBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMucmVtb3Zl
KGl0KTsKICAgICB9CiAKKyAgICBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9h
ZGVyc0NvdW50ID0gMDsKICAgICBtX3VwZGF0ZVN0YXR1cyA9IElkbGU7ICAgIAogICAgIG1fZnJh
bWUgPSAwOwogICAgIApAQCAtNjkzLDcgKzY5OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjptYW5pZmVzdE5vdEYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZM
b2FkSXNDb21wbGV0ZSgpCiB7Ci0gICAgaWYgKG1fbWFuaWZlc3RIYW5kbGUgfHwgIW1fcGVuZGlu
Z0VudHJpZXMuaXNFbXB0eSgpIHx8ICFtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNF
bXB0eSgpKQorICAgIGlmIChtX21hbmlmZXN0SGFuZGxlIHx8ICFtX3BlbmRpbmdFbnRyaWVzLmlz
RW1wdHkoKSB8fCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV2UncmUgZG9uZSwgYWxsIHJlc291cmNl
cyBoYXZlIGZpbmlzaGVkIGRvd25sb2FkaW5nIChzdWNjZXNzZnVsbHkgb3Igbm90KS4KQEAgLTcz
MiwxNiArNzM3LDQzIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZEkK
ICAgICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG9sZE5ld2VzdENhY2hlID0gKG1fbmV3
ZXN0Q2FjaGUgPT0gbV9jYWNoZUJlaW5nVXBkYXRlZCkgPyAwIDogbV9uZXdlc3RDYWNoZTsKIAog
ICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7Ci0g
ICAgICAgIGNhY2hlU3RvcmFnZSgpLnN0b3JlTmV3ZXN0Q2FjaGUodGhpcyk7Ci0KLSAgICAgICAg
aWYgKG9sZE5ld2VzdENhY2hlKQotICAgICAgICAgICAgY2FjaGVTdG9yYWdlKCkucmVtb3ZlKG9s
ZE5ld2VzdENhY2hlLmdldCgpKTsKLQotICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGlzVXBncmFk
ZUF0dGVtcHQgPyAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbFVwZGF0ZVJlYWR5TGlzdGVuZXIg
OiAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbENhY2hlZExpc3RlbmVyLCBtX2Fzc29jaWF0ZWRE
b2N1bWVudExvYWRlcnMpOworICAgICAgICBpZiAoY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RD
YWNoZSh0aGlzKSkgew0KKyAgICAgICAgICAgIC8vIE5ldyBjYWNoZSBzdG9yZWQsIG5vdyByZW1v
dmUgdGhlIG9sZCBjYWNoZS4NCisgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpDQorICAg
ICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQoKSk7
DQorICAgICAgICAgICAgLy8gRmlyZSB0aGUgc3VjY2VzcyBldmVudHMuDQorICAgICAgICAgICAg
cG9zdExpc3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gJkRPTUFwcGxpY2F0aW9uQ2FjaGU6
OmNhbGxVcGRhdGVSZWFkeUxpc3RlbmVyIDogJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxDYWNo
ZWRMaXN0ZW5lciwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsNCisgICAgICAgIH0gZWxz
ZSB7DQorICAgICAgICAgICAgLy8gUnVuIHRoZSAiY2FjaGUgZmFpbHVyZSBzdGVwcyINCisgICAg
ICAgICAgICAvLyBGaXJlIHRoZSBlcnJvciBldmVudHMgdG8gYWxsIHBlbmRpbmcgbWFzdGVyIGVu
dHJpZXMsIGFzIHdlbGwgYW55IG90aGVyIGNhY2hlIGhvc3RzDQorICAgICAgICAgICAgLy8gY3Vy
cmVudGx5IGFzc29jaWF0ZWQgd2l0aCBhIGNhY2hlIGluIHRoaXMgZ3JvdXAuDQorICAgICAgICAg
ICAgcG9zdExpc3RlbmVyVGFzaygmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbEVycm9yTGlzdGVu
ZXIsIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7DQorICAgICAgICAgICAgLy8gRGlzYXNz
b2NpYXRlIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyaWVzIGZyb20gdGhlIGZhaWxlZCBuZXcgY2Fj
aGUuIE5vdGUgdGhhdA0KKyAgICAgICAgICAgIC8vIGFsbCBvdGhlciBsb2FkZXJzIGluIHRoZSBt
X2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMgYXJlIHN0aWxsIGFzc29jaWF0ZWQgd2l0aA0KKyAg
ICAgICAgICAgIC8vIHNvbWUgb3RoZXIgY2FjaGUgaW4gdGhpcyBncm91cC4gVGhleSBhcmUgbm90
IGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4NCisNCisgICAgICAgICAgICAv
LyBOZWVkIHRvIGNvcHkgbG9hZGVycywgYmVjYXVzZSB0aGUgY2FjaGUgZ3JvdXAgbWF5IGJlIGRl
c3Ryb3llZCBhdCB0aGUgZW5kIG9mIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgIFZlY3RvcjxEb2N1
bWVudExvYWRlcio+IGxvYWRlcnM7CisgICAgICAgICAgICBjb3B5VG9WZWN0b3IobV9wZW5kaW5n
TWFzdGVyUmVzb3VyY2VMb2FkZXJzLCBsb2FkZXJzKTsKKyAgICAgICAgICAgIHNpemVfdCBjb3Vu
dCA9IGxvYWRlcnMuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0g
Y291bnQ7ICsraSkNCisgICAgICAgICAgICAgICAgZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIo
bG9hZGVyc1tpXSk7IC8vIFRoaXMgY2FuIGRlbGV0ZSB0aGlzIGdyb3VwLg0KKw0KKyAgICAgICAg
ICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJlIHdhcyBvbmUuDQor
ICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKSB7DQorICAgICAgICAgICAgICAgIC8vIFRo
aXMgd2lsbCBkaXNjYXJkIHRoZSBmYWlsZWQgbmV3IGNhY2hlLg0KKyAgICAgICAgICAgICAgICBz
ZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkpOw0KKyAgICAgICAgICAgIH0g
ZWxzZSB7DQorICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQgYnkg
dGhlIGxhc3QgY2FsbCB0byBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcigpLg0KKyAgICAgICAg
ICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIH0KIAorICAgIC8vIEVtcHR5IGNhY2hlIGdyb3VwJ3MgbGlzdCBvZiBw
ZW5kaW5nIG1hc3RlciBlbnRyaWVzLgorICAgIG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVy
cy5jbGVhcigpOwogICAgIG1fY29tcGxldGlvblR5cGUgPSBOb25lOwogICAgIG1fdXBkYXRlU3Rh
dHVzID0gSWRsZTsKICAgICBtX2ZyYW1lID0gMDsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiA0MzI1MCkKKysrIFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQsNiArMTM0LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIExpc3Qgb2YgcGVuZGlu
ZyBtYXN0ZXIgZW50cmllcywgdXNlZCBkdXJpbmcgdGhlIHVwZGF0ZSBwcm9jZXNzIHRvIGVuc3Vy
ZSB0aGF0IG5ldyBtYXN0ZXIgZW50cmllcyBhcmUgY2FjaGVkLgogICAgIEhhc2hTZXQ8RG9jdW1l
bnRMb2FkZXIqPiBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnM7CisgICAgLy8gSG93IG1h
bnkgb2YgdGhlIGFib3ZlIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMgaGF2ZSBub3QgeWV0IGZpbmlz
aGVkIGRvd25sb2FkaW5nLgorICAgIGludCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291
cmNlTG9hZGVyc0NvdW50OwogICAgIAogICAgIC8vIFRoZXNlIGFyZSBhbGwgdGhlIGRvY3VtZW50
IGxvYWRlcnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUgaW4gdGhpcyBncm91cC4K
ICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4gbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJz
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAkocmV2aXNpb24gNDMyNTApCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDQ0IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgUmVzb3VyY2VTdG9yYWdlSURMb2dnZXIgeworcHVibGljOiAgCisgICAgflJlc291cmNlU3Rv
cmFnZUlETG9nZ2VyKCkKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0gbV9yZWNvcmRzLnNp
emUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
ICAgICBtX3JlY29yZHNbaV0ucmVzdG9yZSgpOworICAgIH0KKworICAgIHZvaWQgbG9nKFBhc3NS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSwgdW5zaWduZWQgc3RvcmFn
ZUlEKQorICAgIHsKKyAgICAgICAgbV9yZWNvcmRzLmFwcGVuZChMb2dSZWNvcmQocmVzb3VyY2Us
IHN0b3JhZ2VJRCkpOworICAgIH0KKworICAgIHZvaWQgY29tbWl0KCkKKyAgICB7CisgICAgICAg
IG1fcmVjb3Jkcy5jbGVhcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBMb2dSZWNv
cmQgeworICAgIHB1YmxpYzoKKyAgICAgICAgTG9nUmVjb3JkKCkgOiBtX3Jlc291cmNlKDApLCBt
X3N0b3JhZ2VJRCgwKSB7fQorICAgICAgICBMb2dSZWNvcmQoUGFzc1JlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+IHJlc291cmNlLCB1bnNpZ25lZCBzdG9yYWdlSUQpIDogbV9yZXNvdXJj
ZShyZXNvdXJjZSksIG1fc3RvcmFnZUlEKHN0b3JhZ2VJRCkge30KKyAgCisgICAgICAgIHZvaWQg
cmVzdG9yZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChtX3N0b3JhZ2VJRCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0
cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IG1fcmVzb3VyY2U7CisgICAgICAgIHVuc2lnbmVk
IG1fc3RvcmFnZUlEOworICAgIH07CisKKyAgICBWZWN0b3I8TG9nUmVjb3JkPiBtX3JlY29yZHM7
Cit9OworCiBzdGF0aWMgdW5zaWduZWQgdXJsSG9zdEhhc2goY29uc3QgS1VSTCYgdXJsKQogewog
ICAgIHVuc2lnbmVkIGhvc3RTdGFydCA9IHVybC5ob3N0U3RhcnQoKTsKQEAgLTQzNiwxMCArNDc0
LDExIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKICAgICByZXR1
cm4gdHJ1ZTsKIH0gICAgCiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUsIFJlc291cmNlU3RvcmFnZUlETG9nZ2VyKiBsb2dn
ZXIpCiB7CiAgICAgQVNTRVJUKGNhY2hlLT5zdG9yYWdlSUQoKSA9PSAwKTsKICAgICBBU1NFUlQo
Y2FjaGUtPmdyb3VwKCktPnN0b3JhZ2VJRCgpICE9IDApOworICAgIEFTU0VSVChsb2dnZXIpOwog
ICAgIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJ
TlRPIENhY2hlcyAoY2FjaGVHcm91cCkgVkFMVUVTICg/KSIpOwogICAgIGlmIChzdGF0ZW1lbnQu
cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQpAQCAtNDU2LDggKzQ5NSwxMyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsCiAgICAgewogICAgICAgICBBcHBsaWNhdGlv
bkNhY2hlOjpSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2FjaGUtPmVuZCgpOwog
ICAgICAgICBmb3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGNhY2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG9sZFN0b3JhZ2VJRCA9IGl0LT5zZWNvbmQtPnN0b3JhZ2VJRCgpOwogICAgICAgICAg
ICAgaWYgKCFzdG9yZShpdC0+c2Vjb25kLmdldCgpLCBjYWNoZVN0b3JhZ2VJRCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAvLyBTdG9yaW5nIHRoZSByZXNv
dXJjZSBzdWNjZWVkZWQuIExvZyBpdHMgb2xkIHN0b3JhZ2VJRCBpbiBjYXNlCisgICAgICAgICAg
ICAvLyBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci4KKyAgICAgICAgICAgIGxvZ2dlci0+
bG9nKGl0LT5zZWNvbmQsIG9sZFN0b3JhZ2VJRCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBA
IC02MTgsOCArNjYyLDEzIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlTmV3
ZXMKICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOwogICAgIEFTU0VSVCghZ3JvdXAt
Pm5ld2VzdENhY2hlKCktPnN0b3JhZ2VJRCgpKTsKICAgICAKKyAgICAvLyBMb2cgdGhlIHN0b3Jh
Z2VJRCBjaGFuZ2VzIHRvIHRoZSBpbi1tZW1vcnkgcmVzb3VyY2Ugb2JqZWN0cy4gVGhlIGxvZ2dl
cgorICAgIC8vIG9iamVjdCB3aWxsIHJvbGwgdGhlbSBiYWNrIGF1dG9tYXRpY2FsbHkgaW4gY2Fz
ZSBhIGRhdGFiYXNlIG9wZXJhdGlvbgorICAgIC8vIGZhaWxzIGFuZCB0aGlzIG1ldGhvZCByZXR1
cm5zIGVhcmx5LgorICAgIFJlc291cmNlU3RvcmFnZUlETG9nZ2VyIGxvZ2dlcjsKKwogICAgIC8v
IFN0b3JlIHRoZSBuZXdlc3QgY2FjaGUKLSAgICBpZiAoIXN0b3JlKGdyb3VwLT5uZXdlc3RDYWNo
ZSgpKSkKKyAgICBpZiAoIXN0b3JlKGdyb3VwLT5uZXdlc3RDYWNoZSgpLCAmbG9nZ2VyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgbmV3ZXN0IGNhY2hl
IGluIHRoZSBncm91cC4KQEAgLTYzNCw2ICs2ODMsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzdG9yZU5ld2VzCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICBsb2dnZXIuY29tbWl0KCk7CiAgICAg
c3RvcmVDYWNoZVRyYW5zYWN0aW9uLmNvbW1pdCgpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCShyZXZpc2lvbiA0MzI1MCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3Mg
QXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEtVUkw7CitjbGFzcyBSZXNvdXJjZVN0b3Jh
Z2VJRExvZ2dlcjsKICAgICAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIHsKIHB1Ymxp
YzoKQEAgLTY5LDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAq
IGxvYWRDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKICAgICAKICAgICBib29s
IHN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwotICAgIGJvb2wgc3RvcmUoQXBwbGljYXRp
b25DYWNoZSopOworICAgIGJvb2wgc3RvcmUoQXBwbGljYXRpb25DYWNoZSosIFJlc291cmNlU3Rv
cmFnZUlETG9nZ2VyKik7CiAgICAgYm9vbCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
LCB1bnNpZ25lZCBjYWNoZVN0b3JhZ2VJRCk7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RI
YXNoZXMoKTsK
</data>
<flag name="review"
          id="15699"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30904</attachid>
            <date>2009-06-03 07:34:47 -0700</date>
            <delta_ts>2009-06-03 12:36:20 -0700</delta_ts>
            <desc>30899: 30880: 30702: Fix for 25562 (take 6)</desc>
            <filename>25562.patch</filename>
            <type>text/plain</type>
            <size>13623</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDM4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMDktMDYtMDMgIEFuZHJlaSBQb3Blc2N1IDxhbmRyZWlwQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTYyCisgICAgICAgIFBv
dGVudGlhbCBjcmFzaCBhZnRlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RD
YWNoZSgpIGZhaWxzCisKKwkgICAgICBGaXggdGhlIGNyYXNoIGJ5IGNoZWNraW5nIHRoZSByZXR1
cm4gdmFsdWUgb2YgY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKQorCSAgICAg
IGluIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRl
LiBJZiBzdG9yZU5ld2VzdENhY2hlIGZhaWxlZCwKKwkgICAgICB3ZSBydW4gdGhlIGNhY2hlIGZh
aWx1cmUgc3RlcHM6CisKKyAgICAgICAgMS4gRmlyZSB0aGUgZXJyb3IgZXZlbnRzIHRvIGFsbCBw
ZW5kaW5nIG1hc3RlciBlbnRyaWVzLCBhcyB3ZWxsIGFueSBvdGhlciBjYWNoZSBob3N0cworICAg
ICAgICAgICBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUgaW4gdGhpcyBncm91cC4K
KyAgICAgICAgMi4gRGlzYXNzb2NpYXRlIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyaWVzIGZyb20g
dGhlIGZhaWxlZCBuZXcgY2FjaGUuCisgICAgICAgIDMuIFJlaW5zdGF0ZSB0aGUgb2xkICJuZXdl
c3QgY2FjaGUiLCBpZiB0aGVyZSB3YXMgb25lLgorCisgICAgICAgIFdlIGFsc28gaW50cm9kdWNl
IHR3byBvdGhlciBjaGFuZ2VzOgorCisgICAgICAgIDEuIGEgbWVjaGFuaXNtIHRvIHJvbGxiYWNr
IHN0b3JhZ2VJRCBjaGFuZ2VzIHRvIHRoZSBpbi1tZW1vcnkgcmVzb3VyY2UKKyAgICAgICAgICAg
b2JqZWN0cyB3aGVuIHRoZSBzdG9yaW5nIG9mIGFuIEFwcGxpY2F0aW9uQ2FjaGUgb2JqZWN0IGZh
aWxzLgorCisgICAgICAgIDIuIGRlZmVyIHJlbW92aW5nIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRy
aWVzIGZyb20gdGhlIGxpc3Qgb2YgcGVuZGluZyBtYXN0ZXIgZW50cmllcworICAgICAgICAgICB1
bnRpbCB0aGUgZW50aXJlIGxvYWQgaXMgY29tcGxldGUuIFRoaXMgbWF0Y2hlcyB0aGUgSFRNTCA1
IHNwZWMgYmV0dGVyLiBUbyB0cmFjaworICAgICAgICAgICBpZiB0aGUgbG9hZCBpcyBjb21wbGV0
ZSB3ZSBub3cgaW50cm9kdWNlIGEgY291bnRlciBmb3IgdGhvc2UgcGVuZGluZyBtYXN0ZXIgZW50
cmllcworICAgICAgICAgICB0aGF0IGhhdmVuJ3QgeWV0IGZpbnNoZWQgZG93bmxvYWRpbmcuCisK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdy
b3VwKTogaW5pdGlhbGl6ZXMgdGhlIG5ldyBjb3VudGVyIHRvIDAKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOiBpbmNyZW1lbnRzIHRoZSBjb3Vu
dGVyIHdoZW4gYSBuZXcgcGVuZGluZworICAgICAgICBtYXN0ZXIgZW50cnkgaXMgYWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGluZ01h
aW5SZXNvdXJjZSk6IGRlY3JlbWVudHMgdGhlIGNvdW50ZXIKKyAgICAgICAgaW5zdGVhZCBvZiBy
ZW1vdmluZyB0aGUgcGVuZGluZyBtYXN0ZXIgZW50cnkuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UpOiBkZWNyZW1lbnRz
IHRoZSBjb3VudGVyCisgICAgICAgIGluc3RlYWQgb2YgcmVtb3ZpbmcgdGhlIHBlbmRpbmcgbWFz
dGVyIGVudHJ5LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZXRO
ZXdlc3RDYWNoZSk6IHJlbW92ZXMgYW4gYXNzZXJ0aW9uIHRoYXQgbm8gbG9uZ2VyCisgICAgICAg
IGhvbGRzIHRydWUuIEluIHBhcnRpY3VsYXIsIHRoZSBuZXdlc3QgY2FjaGUgaXMgbm90IG5lY2Vz
c2FyaWx5IG5ldyBhbnltb3JlLiBXZSBjYW4KKyAgICAgICAgc2V0IGFuIG9sZCBjYWNoZSBhcyB0
aGUgbmV3IGNhY2hlLiBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgZmFpbGVkIHRvIHN0b3JlIGEgbmV3
bHkKKyAgICAgICAgZG93bmxvYWRlZCBjYWNoZSB0byB0aGUgZGF0YWJhc2UgYW5kIHdlIGFyZSBu
b3cgcmVpbnN0YXRpbmcgdGhlIGZvcm1lciBuZXdlc3QgY2FjaGUuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Om1hbmlmZXN0Tm90Rm91bmQpOiByZXNldHMgdGhlIGNv
dW50ZXIgdG8gMC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hl
Y2tJZkxvYWRJc0NvbXBsZXRlKTogY2hlY2sgaWYgdGhlIGxvYWRpbmcgaXMgY29tcGxldGUKKyAg
ICAgICAgYmFzZWQgb24gdGhlIGNvdW50ZXIgaW5zdGVhZCBvZiB0aGUgbGlzdCBvZiBwZW5kaW5n
IG1hc3RlciBlbnRyaWVzLiBFbXB0eSB0aGUgbGlzdCBvZgorICAgICAgICBtYXN0ZXIgZW50cmll
cyBpZiB0aGUgbG9hZCBpcyBjb21wbGV0ZS4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmg6IGFkZCB0aGUgbmV3IGNvdW50ZXIuCisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDogaW50cm9kdWNlIHRoZSBq
b3VybmFsaW5nIG1lY2hhbmlzbSBmb3IKKyAgICAgICAgaW4tbWVtb3J5IHJlc291cmNlIG9iamVj
dHMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVN0b3JhZ2VJREpvdXJuYWw6On5SZXNvdXJj
ZVN0b3JhZ2VJREpvdXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VTdG9yYWdlSURK
b3VybmFsOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VTdG9yYWdlSURKb3VybmFs
Ojpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VTdG9yYWdlSURKb3VybmFsOjpS
ZWNvcmQ6OlJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVN0b3JhZ2VJREpvdXJu
YWw6OlJlY29yZDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUpOiBsb2cgdGhlIGNoYW5nZXMgdG8gdGhlIGluLW1lbW9yeSByZXNvdXJj
ZQorICAgICAgICBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlTmV3ZXN0Q2FjaGUpOiBjcmVhdGUgdGhlIGpvdXJuYWwgb2JqZWN0LgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOiAgbW9kaWZ5
IHRoZSBzaWduYXR1cmUgb2YKKyAgICAgICAgYm9vbCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlKikg
dG8gYWRkIGEgcG9pbnRlciB0byB0aGUgbG9nZ2VyIG9iamVjdCB1c2VkIHRvCisgICAgICAgIHRy
YWNlIHRoZSBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlSUQgb2YgdGhlIHJlc291cmNlIG9iamVjdHMu
CisKIDIwMDktMDYtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA0MzI1MCkKKysrIFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkws
IGJvb2wgaXNDb3B5KQogICAgIDogbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAsIG1f
dXBkYXRlU3RhdHVzKElkbGUpCisgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291
cmNlTG9hZGVyc0NvdW50KDApCiAgICAgLCBtX2ZyYW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgw
KQogICAgICwgbV9pc09ic29sZXRlKGZhbHNlKQpAQCAtMTY2LDYgKzE2Nyw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSgKIAogICAgIGRvY3VtZW50TG9hZGVyLT5z
ZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoZ3JvdXApOwogICAgIGdyb3VwLT5tX3Bl
bmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuYWRkKGRvY3VtZW50TG9hZGVyKTsKKyAgICBncm91
cC0+bV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCsrOwogCiAg
ICAgQVNTRVJUKCFncm91cC0+bV9jYWNoZUJlaW5nVXBkYXRlZCB8fCBncm91cC0+bV91cGRhdGVT
dGF0dXMgIT0gSWRsZSk7CiAgICAgZ3JvdXAtPnVwZGF0ZShmcmFtZSwgQXBwbGljYXRpb25DYWNo
ZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRleHQpOwpAQCAtMjMyLDcgKzIzNCw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWQKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgbV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIpOworICAg
IG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzQ291bnQtLTsKICAgICBj
aGVja0lmTG9hZElzQ29tcGxldGUoKTsKIH0KIApAQCAtMjc2LDcgKzI3OCw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpmYWlsZWRMb2FkaW4KICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgbV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIpOworICAg
IG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzQ291bnQtLTsKICAgICBj
aGVja0lmTG9hZElzQ29tcGxldGUoKTsKIH0KIApAQCAtMzQ3LDggKzM0OSw2IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZURlc3Ryb3kKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OnNldE5ld2VzdENhY2hlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbmV3ZXN0
Q2FjaGUpCiB7Ci0gICAgQVNTRVJUKCFtX2NhY2hlcy5jb250YWlucyhuZXdlc3RDYWNoZS5nZXQo
KSkpOwotCiAgICAgbV9uZXdlc3RDYWNoZSA9IG5ld2VzdENhY2hlOwogCiAgICAgbV9jYWNoZXMu
YWRkKG1fbmV3ZXN0Q2FjaGUuZ2V0KCkpOwpAQCAtNjgxLDYgKzY4MSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEYKICAgICAgICAgbV9wZW5kaW5nTWFzdGVyUmVz
b3VyY2VMb2FkZXJzLnJlbW92ZShpdCk7CiAgICAgfQogCisgICAgbV9kb3dubG9hZGluZ1BlbmRp
bmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCA9IDA7CiAgICAgbV91cGRhdGVTdGF0dXMgPSBJ
ZGxlOyAgICAKICAgICBtX2ZyYW1lID0gMDsKICAgICAKQEAgLTY5Myw3ICs2OTQsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFuaWZlc3ROb3RGCiAKIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogewotICAgIGlmIChtX21hbmlmZXN0
SGFuZGxlIHx8ICFtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5nTWFzdGVy
UmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKKyAgICBpZiAobV9tYW5pZmVzdEhhbmRsZSB8fCAh
bV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkgfHwgbV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJS
ZXNvdXJjZUxvYWRlcnNDb3VudCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdlJ3Jl
IGRvbmUsIGFsbCByZXNvdXJjZXMgaGF2ZSBmaW5pc2hlZCBkb3dubG9hZGluZyAoc3VjY2Vzc2Z1
bGx5IG9yIG5vdCkuCkBAIC03MzIsMTYgKzczMyw0MyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6Y2hlY2tJZkxvYWRJCiAgICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBvbGRO
ZXdlc3RDYWNoZSA9IChtX25ld2VzdENhY2hlID09IG1fY2FjaGVCZWluZ1VwZGF0ZWQpID8gMCA6
IG1fbmV3ZXN0Q2FjaGU7CiAKICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUobV9jYWNoZUJlaW5nVXBk
YXRlZC5yZWxlYXNlKCkpOwotICAgICAgICBjYWNoZVN0b3JhZ2UoKS5zdG9yZU5ld2VzdENhY2hl
KHRoaXMpOwotCi0gICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkKLSAgICAgICAgICAgIGNhY2hl
U3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQoKSk7Ci0KLSAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxV
cGRhdGVSZWFkeUxpc3RlbmVyIDogJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxDYWNoZWRMaXN0
ZW5lciwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKKyAgICAgICAgaWYgKGNhY2hlU3Rv
cmFnZSgpLnN0b3JlTmV3ZXN0Q2FjaGUodGhpcykpIHsNCisgICAgICAgICAgICAvLyBOZXcgY2Fj
aGUgc3RvcmVkLCBub3cgcmVtb3ZlIHRoZSBvbGQgY2FjaGUuDQorICAgICAgICAgICAgaWYgKG9s
ZE5ld2VzdENhY2hlKQ0KKyAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xk
TmV3ZXN0Q2FjaGUuZ2V0KCkpOw0KKyAgICAgICAgICAgIC8vIEZpcmUgdGhlIHN1Y2Nlc3MgZXZl
bnRzLg0KKyAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soaXNVcGdyYWRlQXR0ZW1wdCA/ICZE
T01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsVXBkYXRlUmVhZHlMaXN0ZW5lciA6ICZET01BcHBsaWNh
dGlvbkNhY2hlOjpjYWxsQ2FjaGVkTGlzdGVuZXIsIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVy
cyk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIC8vIFJ1biB0aGUgImNhY2hlIGZh
aWx1cmUgc3RlcHMiDQorICAgICAgICAgICAgLy8gRmlyZSB0aGUgZXJyb3IgZXZlbnRzIHRvIGFs
bCBwZW5kaW5nIG1hc3RlciBlbnRyaWVzLCBhcyB3ZWxsIGFueSBvdGhlciBjYWNoZSBob3N0cw0K
KyAgICAgICAgICAgIC8vIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggYSBjYWNoZSBpbiB0aGlz
IGdyb3VwLg0KKyAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soJkRPTUFwcGxpY2F0aW9uQ2Fj
aGU6OmNhbGxFcnJvckxpc3RlbmVyLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOw0KKyAg
ICAgICAgICAgIC8vIERpc2Fzc29jaWF0ZSB0aGUgcGVuZGluZyBtYXN0ZXIgZW50cmllcyBmcm9t
IHRoZSBmYWlsZWQgbmV3IGNhY2hlLiBOb3RlIHRoYXQNCisgICAgICAgICAgICAvLyBhbGwgb3Ro
ZXIgbG9hZGVycyBpbiB0aGUgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzIGFyZSBzdGlsbCBh
c3NvY2lhdGVkIHdpdGgNCisgICAgICAgICAgICAvLyBzb21lIG90aGVyIGNhY2hlIGluIHRoaXMg
Z3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZhaWxlZCBuZXcgY2FjaGUu
DQorDQorICAgICAgICAgICAgLy8gTmVlZCB0byBjb3B5IGxvYWRlcnMsIGJlY2F1c2UgdGhlIGNh
Y2hlIGdyb3VwIG1heSBiZSBkZXN0cm95ZWQgYXQgdGhlIGVuZCBvZiBpdGVyYXRpb24uCisgICAg
ICAgICAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBsb2FkZXJzOworICAgICAgICAgICAgY29w
eVRvVmVjdG9yKG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycywgbG9hZGVycyk7CisgICAg
ICAgICAgICBzaXplX3QgY291bnQgPSBsb2FkZXJzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpICE9IGNvdW50OyArK2kpDQorICAgICAgICAgICAgICAgIGRpc2Fzc29j
aWF0ZURvY3VtZW50TG9hZGVyKGxvYWRlcnNbaV0pOyAvLyBUaGlzIGNhbiBkZWxldGUgdGhpcyBn
cm91cC4NCisNCisgICAgICAgICAgICAvLyBSZWluc3RhdGUgdGhlIG9sZE5ld2VzdENhY2hlLCBp
ZiB0aGVyZSB3YXMgb25lLg0KKyAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkgew0KKyAg
ICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4N
CisgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgp
KTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGhh
dmUgYmVlbiBkZWxldGVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8gZGlzYXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXIoKS4NCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAg
ICAgIH0NCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CiAKKyAgICAvLyBFbXB0eSBjYWNo
ZSBncm91cCdzIGxpc3Qgb2YgcGVuZGluZyBtYXN0ZXIgZW50cmllcy4KKyAgICBtX3BlbmRpbmdN
YXN0ZXJSZXNvdXJjZUxvYWRlcnMuY2xlYXIoKTsKICAgICBtX2NvbXBsZXRpb25UeXBlID0gTm9u
ZTsKICAgICBtX3VwZGF0ZVN0YXR1cyA9IElkbGU7CiAgICAgbV9mcmFtZSA9IDA7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkocmV2
aXNpb24gNDMyNTApCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw4IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBMaXN0IG9mIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMsIHVzZWQgZHVyaW5nIHRoZSB1cGRh
dGUgcHJvY2VzcyB0byBlbnN1cmUgdGhhdCBuZXcgbWFzdGVyIGVudHJpZXMgYXJlIGNhY2hlZC4K
ICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4gbV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2Fk
ZXJzOworICAgIC8vIEhvdyBtYW55IG9mIHRoZSBhYm92ZSBwZW5kaW5nIG1hc3RlciBlbnRyaWVz
IGhhdmUgbm90IHlldCBmaW5pc2hlZCBkb3dubG9hZGluZy4KKyAgICBpbnQgbV9kb3dubG9hZGlu
Z1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudDsKICAgICAKICAgICAvLyBUaGVzZSBh
cmUgYWxsIHRoZSBkb2N1bWVudCBsb2FkZXJzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIGNh
Y2hlIGluIHRoaXMgZ3JvdXAuCiAgICAgSGFzaFNldDxEb2N1bWVudExvYWRlcio+IG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVyczsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDQzMjUwKQorKysgV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw0NCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlc291cmNlU3RvcmFnZUlESm91cm5hbCB7CitwdWJsaWM6
ICAKKyAgICB+UmVzb3VyY2VTdG9yYWdlSURKb3VybmFsKCkKKyAgICB7CisgICAgICAgIHNpemVf
dCBzaXplID0gbV9yZWNvcmRzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgICAgICBtX3JlY29yZHNbaV0ucmVzdG9yZSgpOworICAgIH0K
KworICAgIHZvaWQgYWRkKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkIHN0b3JhZ2VJRCkKKyAgICB7CisgICAgICAgIG1fcmVjb3Jkcy5hcHBlbmQoUmVjb3JkKHJl
c291cmNlLCBzdG9yYWdlSUQpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbW1pdCgpCisgICAgewor
ICAgICAgICBtX3JlY29yZHMuY2xlYXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY2xhc3Mg
UmVjb3JkIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJlY29yZCgpIDogbV9yZXNvdXJjZSgwKSwg
bV9zdG9yYWdlSUQoMCkgeyB9CisgICAgICAgIFJlY29yZChBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqIHJlc291cmNlLCB1bnNpZ25lZCBzdG9yYWdlSUQpIDogbV9yZXNvdXJjZShyZXNvdXJjZSks
IG1fc3RvcmFnZUlEKHN0b3JhZ2VJRCkgeyB9CisKKyAgICAgICAgdm9pZCByZXN0b3JlKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9yZXNvdXJjZS0+c2V0U3RvcmFnZUlEKG1fc3RvcmFnZUlE
KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiBtX3Jlc291cmNlOworICAgICAgICB1bnNpZ25lZCBtX3N0b3JhZ2VJRDsKKyAgICB9
OworCisgICAgVmVjdG9yPFJlY29yZD4gbV9yZWNvcmRzOworfTsKKwogc3RhdGljIHVuc2lnbmVk
IHVybEhvc3RIYXNoKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQg
PSB1cmwuaG9zdFN0YXJ0KCk7CkBAIC00MzYsMTAgKzQ3NCwxMSBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsCiAgICAgcmV0dXJuIHRydWU7CiB9ICAgIAogCi1ib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSkK
K2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGUqIGNh
Y2hlLCBSZXNvdXJjZVN0b3JhZ2VJREpvdXJuYWwqIHN0b3JhZ2VJREpvdXJuYWwpCiB7CiAgICAg
QVNTRVJUKGNhY2hlLT5zdG9yYWdlSUQoKSA9PSAwKTsKICAgICBBU1NFUlQoY2FjaGUtPmdyb3Vw
KCktPnN0b3JhZ2VJRCgpICE9IDApOworICAgIEFTU0VSVChzdG9yYWdlSURKb3VybmFsKTsKICAg
ICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5U
TyBDYWNoZXMgKGNhY2hlR3JvdXApIFZBTFVFUyAoPykiKTsKICAgICBpZiAoc3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKQEAgLTQ1Niw4ICs0OTUsMTMgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbAogICAgIHsKICAgICAgICAgQXBwbGljYXRpb25D
YWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5lbmQoKTsKICAg
ICAgICAgZm9yIChBcHBsaWNhdGlvbkNhY2hlOjpSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICB1bnNp
Z25lZCBvbGRTdG9yYWdlSUQgPSBpdC0+c2Vjb25kLT5zdG9yYWdlSUQoKTsKICAgICAgICAgICAg
IGlmICghc3RvcmUoaXQtPnNlY29uZC5nZXQoKSwgY2FjaGVTdG9yYWdlSUQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gU3RvcmluZyB0aGUgcmVzb3Vy
Y2Ugc3VjY2VlZGVkLiBMb2cgaXRzIG9sZCBzdG9yYWdlSUQgaW4gY2FzZQorICAgICAgICAgICAg
Ly8gaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuCisgICAgICAgICAgICBzdG9yYWdlSURK
b3VybmFsLT5hZGQoaXQtPnNlY29uZC5nZXQoKSwgb2xkU3RvcmFnZUlEKTsKICAgICAgICAgfQog
ICAgIH0KICAgICAKQEAgLTYxOCw4ICs2NjIsMTMgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmVOZXdlcwogICAgIEFTU0VSVCghZ3JvdXAtPmlzT2Jzb2xldGUoKSk7CiAgICAg
QVNTRVJUKCFncm91cC0+bmV3ZXN0Q2FjaGUoKS0+c3RvcmFnZUlEKCkpOwogICAgIAorICAgIC8v
IExvZyB0aGUgc3RvcmFnZUlEIGNoYW5nZXMgdG8gdGhlIGluLW1lbW9yeSByZXNvdXJjZSBvYmpl
Y3RzLiBUaGUgam91cm5hbAorICAgIC8vIG9iamVjdCB3aWxsIHJvbGwgdGhlbSBiYWNrIGF1dG9t
YXRpY2FsbHkgaW4gY2FzZSBhIGRhdGFiYXNlIG9wZXJhdGlvbgorICAgIC8vIGZhaWxzIGFuZCB0
aGlzIG1ldGhvZCByZXR1cm5zIGVhcmx5LgorICAgIFJlc291cmNlU3RvcmFnZUlESm91cm5hbCBz
dG9yYWdlSURKb3VybmFsOworCiAgICAgLy8gU3RvcmUgdGhlIG5ld2VzdCBjYWNoZQotICAgIGlm
ICghc3RvcmUoZ3JvdXAtPm5ld2VzdENhY2hlKCkpKQorICAgIGlmICghc3RvcmUoZ3JvdXAtPm5l
d2VzdENhY2hlKCksICZzdG9yYWdlSURKb3VybmFsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgbmV3ZXN0IGNhY2hlIGluIHRoZSBncm91cC4KQEAgLTYz
NCw2ICs2ODMsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZU5ld2VzCiAg
ICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKKyAgICBzdG9yYWdlSURKb3VybmFsLmNvbW1pdCgpOwogICAgIHN0b3JlQ2FjaGVU
cmFuc2FjdGlvbi5jb21taXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAkocmV2aXNp
b24gNDMyNTApCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U7CiBjbGFzcyBLVVJMOworY2xhc3MgUmVzb3VyY2VTdG9yYWdlSURKb3VybmFs
OwogICAgIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgewogcHVibGljOgpAQCAtNjks
NyArNzAsNyBAQCBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogbG9hZENhY2hl
R3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOwogICAgIAogICAgIGJvb2wgc3RvcmUoQXBw
bGljYXRpb25DYWNoZUdyb3VwKik7Ci0gICAgYm9vbCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlKik7
CisgICAgYm9vbCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiwgUmVzb3VyY2VTdG9yYWdlSURKb3Vy
bmFsKik7CiAgICAgYm9vbCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqLCB1bnNpZ25l
ZCBjYWNoZVN0b3JhZ2VJRCk7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKTsK
</data>
<flag name="review"
          id="15704"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>