<?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>41630</bug_id>
          
          <creation_ts>2010-07-05 13:22:06 -0700</creation_ts>
          <short_desc>[Soup] DNS prefetching spams resolver, shoots self in the foot</short_desc>
          <delta_ts>2012-03-28 07:46:02 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82048</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dan Winship">danw</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>ap</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gsherloc</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>246762</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2010-07-05 13:22:06 -0700</bug_when>
    <thetext>I&apos;m filing this against WebKitGtk to be conservative, but maybe it&apos;s a more general problem.

There is a problem in epiphany where sometimes you click on a link and it claims there&apos;s no such host, even when that&apos;s obviously untrue, and in fact, clicking reload will load the page successfully at this point.

The bug seems to go like this:

    1. User loads a page with a billion links
    2. WebKit calls prefetchDNS a billion times
    3. In the Gtk version at least, this results in a billion
       getaddrinfo() calls
    4. The upstream DNS server starts sending back DNS responses,
       but does so slowly. Probably because it&apos;s a wi-fi hub
       powered by a relatively slow processor and it&apos;s processing
       the requests more-or-less in serial rather than in parallel.
    5. User clicks a link partway down the page. Meanwhile, the wi-fi
       hub continues slowly sending back DNS responses.
    6. WebKitGtk/libsoup sees that there&apos;s an outstanding DNS request
       for the host in the clicked-on link, and waits for it to
       complete. Meanwhile, the wi-fi hub continues slowly sending back
       DNS responses.
    7. After 5 seconds, glibc times out all of the DNS requests that
       are still outstanding.
    8. WebKitGtk/libsoup get the DNS error and show it to the user.

network/cf/DNSCFNet.cpp seems to have some spam-preventing code. Perhaps that should be happening at a higher level.

Alternatively, maybe we don&apos;t need to prefetchDNS on every single link on the page at page load time. For Gtk at least, we&apos;re going to want to distinguish page-load prefetching from on-hover prefetching anyway, because we want to do proxy URI prefetching on hover, but not on page load (qv https://bugzilla.gnome.org/show_bug.cgi?id=605065)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247193</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-06 13:20:03 -0700</bug_when>
    <thetext>I actually think that this should happen at OS name resolver level (for OSes that have one) - there is more than one process running at a time, so there is nothing a web browser can do to reliably prevent this sort of problems.

But that&apos;s just wishful thinking, in practice WebKit has to throttle DNS requests on its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249820</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2010-07-12 07:21:01 -0700</bug_when>
    <thetext>I also suspect that this may be why when I upgraded to Safari 5 that loading a large number of tabs simultaneously caused many of the later tabs to time out.  The first couple of tabs would presumably load, causing many DNS look ups to be fired off, and cause some of the later DNS look ups to load other tabs to time out.  If you load multiple pages simultaneously (which I do all the time, with a folder set to open multiple tabs) then these top level tabs should take precedence over DNS look ups that are the result of loading a page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249901</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-12 10:31:09 -0700</bug_when>
    <thetext>&gt; many of the later tabs to time out

Is that fixed for you in nightly builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249902</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2010-07-12 10:33:00 -0700</bug_when>
    <thetext>I&apos;ll check tonight on my home computer - I ended up switching to use Google&apos;s DNS servers, which improved it a lot, as my ISP&apos;s DNS servers seemed to time out 75% of the tabs that were loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250188</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2010-07-12 17:40:38 -0700</bug_when>
    <thetext>The latest nightly, r60868 does much better when I use my ISPs DNS name server, with none of the dozen or tabs timing out on their DNS look ups.  Look forward to that change being released in a Safari update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274910</commentid>
    <comment_count>6</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2010-09-07 01:59:40 -0700</bug_when>
    <thetext>Actually I think this issue is the source of this https://bugs.webkit.org/show_bug.cgi?id=42052

That page is full of links. Firefox loads it reasonably fast, but on epiphany it takes a lot and some of the images are not even shown at the end, most likely due to DNS errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275024</commentid>
    <comment_count>7</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2010-09-07 07:34:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Actually I think this issue is the source of this https://bugs.webkit.org/show_bug.cgi?id=42052
&gt; 
&gt; That page is full of links. Firefox loads it reasonably fast, but on epiphany it takes a lot and some of the images are not even shown at the end, most likely due to DNS errors

Actually it&apos;s not caused by DNSprefetching, disabling it does not fix anything. What&apos;s more, oprofile shows libz and libfreetype on top so forget about my suggestion that they both could be the same bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577726</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-13 13:18:32 -0700</bug_when>
    <thetext>OK so after discussing this with Dan I decided to implement a queue for DNS prefetching control for the libsoup backend similar to what other ports have. It works pretty well (for example bug 80587 is fixed by that patch) but there are two important things missing:

1- proxy detection. Is there any reliable way to detect that we&apos;re under a proxy without depending on GNOME system settings and the like? I guess we can completely get rid of prefetching when behind a proxy.
2- soup_session_prepare_for_uri() does not have a callback. We need it to limit the maximum amount of simultaneous DNS requests we issue. We can add a signal to libsoup or deprecate it and add a new one with the usual _async() parameters. I think I&apos;m more in favour of the latter.

Dan?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577729</commentid>
    <comment_count>9</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-13 13:19:52 -0700</bug_when>
    <thetext>*** Bug 80587 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578321</commentid>
    <comment_count>10</comment_count>
      <attachid>131829</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-14 05:10:12 -0700</bug_when>
    <thetext>Created attachment 131829
libsoup Patch

That&apos;d be the libsoup patch. This adds some new API and the GNOME 3.4 API freeze is already gone. If having this patch is interesting enough for 3.4 we&apos;d have to ask for an exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578323</commentid>
    <comment_count>11</comment_count>
      <attachid>131831</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-14 05:12:35 -0700</bug_when>
    <thetext>Created attachment 131831
WK Patch

Adds a queue (stolen from CFNET network code) that gracefully throttles DNS pre-fetching requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578353</commentid>
    <comment_count>12</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-14 06:41:23 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; That&apos;d be the libsoup patch. This adds some new API and the GNOME 3.4 API freeze is already gone. If having this patch is interesting enough for 3.4 we&apos;d have to ask for an exception.

API Freeze only applies to the &quot;Platform&quot; components (glib, gtk, etc). Although it&apos;s not encouraged, we can change libsoup&apos;s API right up until hard code freeze. (Which is Monday.) And it&apos;s clear that the libsoup patch is pretty safe, so I don&apos;t mind adding it. (The WebKit patch is bigger, but that&apos;s someone else&apos;s problem :)

On the patch itself, since we&apos;ve given up on doing anything more clever than just DNS, I&apos;d make it &quot;soup_session_prefetch_dns&quot;, with a hostname, instead of &quot;prefetch_uri&quot; (which then also saves you having to fake up a URI in DNSResolveQueue::resolve()).

Also, add this bug URL to the commit message.

(In reply to comment #11)
&gt; WK Patch

drop the proxyIsEnabledForDefaultSession() stuff; it&apos;s not really reliably in either direction; just because a proxy resolver is in use doesn&apos;t mean that there&apos;s a proxy configured. And OTOH if you&apos;re using SOCKS4, you have to do DNS on the client anyway (because the protocol only uses IP addresses).

We can add smarts to SoupSession/SoupProxyURIResolver/GProxyResolver later if we want to implement this check correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578512</commentid>
    <comment_count>13</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-03-14 10:04:01 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=131831) [details]
&gt; WK Patch
&gt; 
&gt; Adds a queue (stolen from CFNET network code) that gracefully throttles DNS pre-fetching requests.

I&apos;m no expert here, but this sees sane enough for me. Perhaps we can share most of this with the other port in a base class, since it looks quite generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578543</commentid>
    <comment_count>14</comment_count>
      <attachid>131831</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-14 10:36:58 -0700</bug_when>
    <thetext>Comment on attachment 131831
WK Patch

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

Looks good. I have a couple nits below.  We should probably at least have a plan with how to deal with the proxy issue.

&gt; Source/WebCore/platform/network/soup/DNSSoup.cpp:30
&gt;  
&gt;  #include &quot;CString.h&quot;

I think you need to expand the Apple copyright to 2009 to match DNSCFNet.

&gt; Source/WebCore/platform/network/soup/DNSSoup.cpp:102
&gt; +    // if (proxyURI || soup_session_get_feature(soupSession, SOUP_TYPE_PROXY_URI_RESOLVER))

Simply remove commented out code.

&gt; Source/WebCore/platform/network/soup/DNSSoup.cpp:158
&gt; +static void resolvedCallback(SoupAddress *soupAddress, guint status, gpointer userData)

Small style issue here with asterisk placement. Please use void* intead of gpointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579249</commentid>
    <comment_count>15</comment_count>
      <attachid>132010</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 03:34:35 -0700</bug_when>
    <thetext>Created attachment 132010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579251</commentid>
    <comment_count>16</comment_count>
      <attachid>132012</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 03:37:33 -0700</bug_when>
    <thetext>Created attachment 132012
libsoup Patch

libsoup patch with soup_session_prefetch_dns()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579253</commentid>
    <comment_count>17</comment_count>
      <attachid>132013</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 03:46:42 -0700</bug_when>
    <thetext>Created attachment 132013
Patch

properly rebased now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579256</commentid>
    <comment_count>18</comment_count>
      <attachid>132013</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-15 03:54:18 -0700</bug_when>
    <thetext>Comment on attachment 132013
Patch

Attachment 132013 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11952738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579258</commentid>
    <comment_count>19</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 03:58:14 -0700</bug_when>
    <thetext>BTW this patch should also bump the libsoup dependency up to 2.38</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579259</commentid>
    <comment_count>20</comment_count>
      <attachid>132013</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 04:00:20 -0700</bug_when>
    <thetext>Comment on attachment 132013
Patch

Attachment 132013 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11951695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579275</commentid>
    <comment_count>21</comment_count>
      <attachid>132013</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-15 04:38:14 -0700</bug_when>
    <thetext>Comment on attachment 132013
Patch

Attachment 132013 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11953739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579306</commentid>
    <comment_count>22</comment_count>
      <attachid>132029</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 06:07:51 -0700</bug_when>
    <thetext>Created attachment 132029
Patch

next attempt to fix windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579312</commentid>
    <comment_count>23</comment_count>
      <attachid>132029</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-15 06:17:38 -0700</bug_when>
    <thetext>Comment on attachment 132029
Patch

Attachment 132029 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11957554</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579316</commentid>
    <comment_count>24</comment_count>
      <attachid>132012</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-15 06:28:30 -0700</bug_when>
    <thetext>Comment on attachment 132012
libsoup Patch

hm... ok, I&apos;d forgotten how some of this worked. In addition to being a mess, this patch only works for the case of http://hostname:80; prefetching an https URI or a URI on a non-default port will have no effect.

This could be fixed, but it would require more rewriting, so I&apos;m thinking maybe not for 2.38 now?

You could still change the webkit side to use the common infrastructure if you wanted, and just fake up the URI on the webkit side as in the earlier patch (though again, this would still have the same problem that it would only work for http-on-the-default-port, until we fixed the libsoup side)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579353</commentid>
    <comment_count>25</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 07:17:07 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 132012 [details])
&gt; hm... ok, I&apos;d forgotten how some of this worked. In addition to being a mess, this patch only works for the case of http://hostname:80; prefetching an https URI or a URI on a non-default port will have no effect.

So why not use a SoupURI as the first version of the patch?

&gt; You could still change the webkit side to use the common infrastructure if you wanted, and just fake up the URI on the webkit side as in the earlier patch (though again, this would still have the same problem that it would only work for http-on-the-default-port, until we fixed the libsoup side)

Unfortunately the wk side requires a callback in the prefetch libsoup call to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579368</commentid>
    <comment_count>26</comment_count>
      <attachid>132029</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-15 07:33:21 -0700</bug_when>
    <thetext>Comment on attachment 132029
Patch

Attachment 132029 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11957571</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579370</commentid>
    <comment_count>27</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-15 07:38:14 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; So why not use a SoupURI as the first version of the patch?

We could, but that would require keeping the special libsoup-only prefetch code in WebKit.

&gt; Unfortunately the wk side requires a callback in the prefetch libsoup call to work.

ah... yeah... well, maybe this is OK for now then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579378</commentid>
    <comment_count>28</comment_count>
      <attachid>132012</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-15 07:48:20 -0700</bug_when>
    <thetext>Comment on attachment 132012
libsoup Patch

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

&gt; libsoup/soup-session.c:2376
&gt; +	soup_session_prefetch_dns (session, uri-&gt;host, NULL, NULL, NULL);

Actually, given that we need to use a URI internally, it makes more sense to leave soup_session_prepare_for_uri() as it is, and have soup_session_prefetch_dns() call that, rather than vice versa.

&gt; libsoup/soup-session.c:2406
&gt; +* shortly, and so the session can try to prepare (resolving the domain
&gt; +* name, obtaining proxy address, etc.) in order to work more quickly

The proxy stuff isn&apos;t relevant any more.

&quot;...and so the session can try to prepare by resolving the domain name in advance, in order to work more quickly...&quot;

&gt; libsoup/soup-session.c:2434
&gt; +	uri = soup_uri_new (NULL);

Add a comment before this:

/* FIXME: Prefetching should work for both HTTP and HTTPS */

&gt; libsoup/soup-session.c:2439
&gt; +	if (!SOUP_URI_IS_VALID(uri)) {

This can&apos;t happen; SOUP_URI_IS_VALID just checks that scheme and path are set, and you just set both of them yourself. So just remove this whole part.

(If @hostname is invalid then soup_address_resolve_async() will fail with an appropriate error.)

&gt; libsoup/soup-session.h:10
&gt; +#include &lt;libsoup/soup-address.h&gt;
&gt;  #include &lt;libsoup/soup-types.h&gt;

swap those. (soup-types.h always comes first, by convention)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579452</commentid>
    <comment_count>29</comment_count>
      <attachid>132062</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-15 09:48:47 -0700</bug_when>
    <thetext>Created attachment 132062
libsoup Patch

I guess something like this then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579605</commentid>
    <comment_count>30</comment_count>
      <attachid>132062</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-15 11:53:46 -0700</bug_when>
    <thetext>Comment on attachment 132062
libsoup Patch

looks good. feel free to commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580633</commentid>
    <comment_count>31</comment_count>
      <attachid>132029</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-16 10:19:56 -0700</bug_when>
    <thetext>Comment on attachment 132029
Patch

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

It&apos;s great that you&apos;re trying to share this code. Hook up with some people on the Windows and Mac ports to see how you can add the appropriate files to the build (see below).

&gt; Source/WebCore/platform/network/DNS.h:38
&gt; +class DNSResolveQueue : public TimerBase {

Ideally DNSResolveQueue should have it&apos;s own header and source file. Perhaps ping someone from the Mac port about adding the new files to the Xcode project.

&gt; Source/WebCore/platform/network/DNS.h:65
&gt; +    void add(const String&amp; hostname)
&gt; +    {
&gt; +      // If there are no names queued, and few enough are in flight, resolve immediately (the mouse may be over a link).
&gt; +      if (!m_names.size()) {
&gt; +        if (proxyIsEnabledInSystemPreferences())
&gt; +          return;

A method of this size should be in source file instead of a header.

&gt; Source/WebCore/platform/network/DNS.h:90
&gt; +    virtual bool proxyIsEnabledInSystemPreferences() = 0;
&gt; +    virtual void resolve(const String&amp;) = 0;

You actually don&apos;t need to make this an abstract class. While that&apos;s useful to do if need to instantiate different types of DNSResolveQueues at runtime, that isn&apos;t the case. There is only ever one networking backend at a time in WebKit. Instead what you can do here is to use the pattern that GraphicsContext and the like do where there&apos;s a 

bool platformProxyIsEnabledInSystemPreferences();
void platformResolve(const String&amp; address);

And those implementations are in the platform-specific directory in a different file. I think this is the preferred method in WebCore.

&gt; Source/WebCore/platform/network/DNS.h:94
&gt; +    void fired()
&gt; +    {
&gt; +      if (proxyIsEnabledInSystemPreferences()) {

Ditto.

&gt; Source/WebCore/platform/network/cf/DNSCFNet.cpp:55
&gt; +const int DNSResolveQueue::namesToResolveImmediately = 4;
&gt; +const double DNSResolveQueue::coalesceDelayInSeconds = 1.0;
&gt; +// CFHost doesn&apos;t currently throttle for us, see &lt;rdar://8105550&gt;.
&gt; +const int DNSResolveQueue::maxSimultaneousRequests = 8;
&gt; +const int DNSResolveQueue::maxRequestsToQueue = 64;
&gt; +const double DNSResolveQueue::retryResolvingInSeconds = 0.1;

These don&apos;t differ between ports, so I prefer to keep them as static variables here. There are all kinds of tricky issues with static members that you probably don&apos;t even want to get near if you don&apos;t have to.  http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581701</commentid>
    <comment_count>32</comment_count>
      <attachid>132560</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-19 02:34:38 -0700</bug_when>
    <thetext>Created attachment 132560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581704</commentid>
    <comment_count>33</comment_count>
      <attachid>132560</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-19 02:39:54 -0700</bug_when>
    <thetext>Comment on attachment 132560
Patch

Attachment 132560 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11984402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581706</commentid>
    <comment_count>34</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-19 02:41:51 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Created an attachment (id=132560) [details]
&gt; Patch

I noticed that I forgot to remove a g_print. It also needs a libsoup version bump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581708</commentid>
    <comment_count>35</comment_count>
      <attachid>132560</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-19 02:43:13 -0700</bug_when>
    <thetext>Comment on attachment 132560
Patch

Attachment 132560 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11989053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581712</commentid>
    <comment_count>36</comment_count>
      <attachid>132560</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-19 02:53:32 -0700</bug_when>
    <thetext>Comment on attachment 132560
Patch

Attachment 132560 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11980675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582093</commentid>
    <comment_count>37</comment_count>
      <attachid>132560</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-19 13:03:13 -0700</bug_when>
    <thetext>Comment on attachment 132560
Patch

Attachment 132560 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11980939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582984</commentid>
    <comment_count>38</comment_count>
      <attachid>132560</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-20 05:37:52 -0700</bug_when>
    <thetext>Comment on attachment 132560
Patch

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

You need to bump LIBSOUP_REQUIRED_VERSION to 2.37.92 in configure.ac

&gt; Source/WebCore/platform/network/soup/DNSSoup.cpp:55
&gt; +    g_print(&quot;Resolving %s\n&quot;, hostname.utf8().data());

debugging leftover...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583003</commentid>
    <comment_count>39</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-20 06:19:49 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 132560 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132560&amp;action=review
&gt; 
&gt; You need to bump LIBSOUP_REQUIRED_VERSION to 2.37.92 in configure.ac

If you do so, please remember to bump the libsoup version in Source/cmake/OptionsEfl.cmake too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583004</commentid>
    <comment_count>40</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-20 06:20:32 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; (From update of attachment 132560 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132560&amp;action=review
&gt; &gt; 
&gt; &gt; You need to bump LIBSOUP_REQUIRED_VERSION to 2.37.92 in configure.ac
&gt; 
&gt; If you do so, please remember to bump the libsoup version in Source/cmake/OptionsEfl.cmake too.

And perhaps in gtk&apos;s and efl&apos;s jhbuild.modules too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585407</commentid>
    <comment_count>41</comment_count>
      <attachid>133282</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-22 09:54:55 -0700</bug_when>
    <thetext>Created attachment 133282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585413</commentid>
    <comment_count>42</comment_count>
      <attachid>133282</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-22 10:00:01 -0700</bug_when>
    <thetext>Comment on attachment 133282
Patch

Attachment 133282 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12117101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585420</commentid>
    <comment_count>43</comment_count>
      <attachid>133282</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-22 10:03:12 -0700</bug_when>
    <thetext>Comment on attachment 133282
Patch

Attachment 133282 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12117105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585432</commentid>
    <comment_count>44</comment_count>
      <attachid>133282</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-22 10:16:20 -0700</bug_when>
    <thetext>Comment on attachment 133282
Patch

Attachment 133282 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12116125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585585</commentid>
    <comment_count>45</comment_count>
      <attachid>133320</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-22 12:15:39 -0700</bug_when>
    <thetext>Created attachment 133320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585591</commentid>
    <comment_count>46</comment_count>
      <attachid>133320</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-22 12:31:47 -0700</bug_when>
    <thetext>Comment on attachment 133320
Patch

Attachment 133320 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12121093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585606</commentid>
    <comment_count>47</comment_count>
      <attachid>133325</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-22 12:59:19 -0700</bug_when>
    <thetext>Created attachment 133325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585608</commentid>
    <comment_count>48</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-22 13:00:40 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Created an attachment (id=133325) [details]
&gt; Patch

Hopefully everything is ready now (forgot to move static members =&gt; static vars).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585620</commentid>
    <comment_count>49</comment_count>
      <attachid>133325</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-22 13:15:04 -0700</bug_when>
    <thetext>Comment on attachment 133325
Patch

Attachment 133325 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12120168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585661</commentid>
    <comment_count>50</comment_count>
      <attachid>133325</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-22 13:52:05 -0700</bug_when>
    <thetext>Comment on attachment 133325
Patch

You probably need to update Tools/efl/jhbuild.modules as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586191</commentid>
    <comment_count>51</comment_count>
      <attachid>133450</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-23 02:39:22 -0700</bug_when>
    <thetext>Created attachment 133450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586195</commentid>
    <comment_count>52</comment_count>
      <attachid>133450</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-23 03:08:22 -0700</bug_when>
    <thetext>Comment on attachment 133450
Patch

Attachment 133450 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12113589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586256</commentid>
    <comment_count>53</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-23 05:49:14 -0700</bug_when>
    <thetext>While trying to check what&apos;s going on with the EFL bot, I applied the patch locally and got the following error while building the new libsoup:

make[3]: Entering directory `/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup&apos;
  GISCAN Soup-2.4.gir
/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup/tmp-introspect6ZUrTM/Soup-2.4.c: In function &apos;main&apos;:
/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup/tmp-introspect6ZUrTM/Soup-2.4.c:577:3: warning: &apos;g_thread_init&apos; is deprecated (declared at /home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Root/include/glib-2.0/glib/deprecated/gthread.h:259) [-Wdeprecated-declarations]
/usr/bin/ld: /home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup/tmp-introspect6ZUrTM/Soup-2.4.o: undefined reference to symbol &apos;g_module_open&apos;
/usr/bin/ld: note: &apos;g_module_open&apos; is defined in DSO /home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Root/lib/libgmodule-2.0.so.0 so try adding it to the linker command line
/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Root/lib/libgmodule-2.0.so.0: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
linking of temporary binary failed: Command &apos;[&apos;/bin/sh&apos;, &apos;../libtool&apos;, &apos;--mode=link&apos;, &apos;--tag=CC&apos;, &apos;--silent&apos;, &apos;/opt/icecream/bin/gcc&apos;, &apos;-o&apos;, &apos;/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup/tmp-introspect6ZUrTM/Soup-2.4&apos;, &apos;-export-dynamic&apos;, &apos;-L.&apos;, &apos;libsoup-2.4.la&apos;, &apos;-pthread&apos;, &apos;-L/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Root/lib&apos;, &apos;-lgio-2.0&apos;, &apos;-lgobject-2.0&apos;, &apos;-lgthread-2.0&apos;, &apos;-lrt&apos;, &apos;-lglib-2.0&apos;, &apos;/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup/tmp-introspect6ZUrTM/Soup-2.4.o&apos;]&apos; returned non-zero exit status 1
make[3]: *** [Soup-2.4.gir] Error 1
make[3]: Leaving directory `/home/rakuco/dev/webkit/WebKit/WebKitBuild/Dependencies/Source/libsoup/libsoup&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586263</commentid>
    <comment_count>54</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-23 06:05:21 -0700</bug_when>
    <thetext>that&apos;s caused by mismatched use of system and jhbuild libraries. Possibly, trying to use an older system-installed g-ir-scanner against libraries linked to a newer glib.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586281</commentid>
    <comment_count>55</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-23 06:29:05 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; that&apos;s caused by mismatched use of system and jhbuild libraries. Possibly, trying to use an older system-installed g-ir-scanner against libraries linked to a newer glib.

Hints on how to solve that? Does any specific environment variable need to be exported to jhbuild to make it look for the right files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589069</commentid>
    <comment_count>56</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-27 11:25:33 -0700</bug_when>
    <thetext>The only sane approach going forward I think is to include gobject-introspection in the jhbuild setup. For the short term, though, I&apos;ve been considering disabling introspection all the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589277</commentid>
    <comment_count>57</comment_count>
      <attachid>133450</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-27 14:19:50 -0700</bug_when>
    <thetext>Comment on attachment 133450
Patch

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

Looks okay, but before landing:

1. Figure out how to not break EFL. :)
2. Take a look at the line below:

&gt; Source/WebCore/platform/network/cf/DNSCFNet.cpp:95
&gt; -        atomicDecrement(&amp;m_requestsInFlight);
&gt; +        DNSResolveQueue::shared().decrementRequestCount();

Can&apos;t you just do:

decrementRequestCount();

here. Isn&apos;t &apos;this&apos; already &apos;DNSResolveQueue::shared()&apos; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589767</commentid>
    <comment_count>58</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-28 02:12:33 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (From update of attachment 133450 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133450&amp;action=review
&gt; 
&gt; Looks okay, but before landing:
&gt; 
&gt; 1. Figure out how to not break EFL. :)

FYI, 
1) build bot/Efl looks updated.

2) WebCore/CMakeLists.txt should know DNSResolveQueue.cpp.

I got below with attachment 133450 in my pc.

[100%] Building CXX object Tools/DumpRenderTree/efl/CMakeFiles/bin/DumpRenderTree.dir/PixelDumpSupportEfl.cpp.o
../../../lib/libwebcore_efl.so.0.1.0: undefined reference to `vtable for WebCore::DNSResolveQueue&apos;
../../../lib/libwebcore_efl.so.0.1.0: undefined reference to `WebCore::DNSResolveQueue::add(WTF::String const&amp;)&apos;
collect2: ld returned 1 exit status
make[2]: *** [bin/ImageDiff] Error 1
make[1]: *** [Tools/DumpRenderTree/efl/CMakeFiles/bin/ImageDiff.dir/all] Error 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589768</commentid>
    <comment_count>59</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-28 02:12:58 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #57)
&gt; &gt; (From update of attachment 133450 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133450&amp;action=review
&gt; &gt; 
&gt; &gt; Looks okay, but before landing:
&gt; &gt; 
&gt; &gt; 1. Figure out how to not break EFL. :)
&gt; 
&gt; FYI, 
&gt; 1) build bot/Efl looks updated.
s/looks/should be/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589805</commentid>
    <comment_count>60</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-28 03:11:00 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #57)
&gt; &gt; (From update of attachment 133450 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133450&amp;action=review
&gt; &gt; 
&gt; &gt; Looks okay, but before landing:
&gt; &gt; 
&gt; &gt; 1. Figure out how to not break EFL. :)
&gt; 
&gt; FYI, 
&gt; 1) build bot/Efl looks updated.
&gt; 
&gt; 2) WebCore/CMakeLists.txt should know DNSResolveQueue.cpp.
&gt; 
&gt; I got below with attachment 133450 [details] in my pc.

Does it build properly if you add it to the CMakeLists.txt file? Because if that&apos;s the only remaining thing to do, I can add it to the patch and land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589953</commentid>
    <comment_count>61</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-03-28 07:46:02 -0700</bug_when>
    <thetext>Committed r112396: &lt;http://trac.webkit.org/changeset/112396&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131829</attachid>
            <date>2012-03-14 05:10:12 -0700</date>
            <delta_ts>2012-03-15 03:34:17 -0700</delta_ts>
            <desc>libsoup Patch</desc>
            <filename>0001-soup-session.c-add-soup_session_prefetch_uri.patch</filename>
            <type>text/plain</type>
            <size>4309</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSA5NTNmNDQ1ODE4MDAzNzUwYzQ1NmNkM2YwY2U0MmI0OWMyMzFlNjIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFdlZCwgMTQgTWFyIDIwMTIgMTE6MDA6MDQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBzb3VwLXNlc3Npb24uYzogYWRkIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF91cmkKClRoaXMgZGVw
cmVjYXRlcyBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpKCkuIEl0IGJhc2ljYWxseSBkb2Vz
IHRoZSBzYW1lLAppLmUuLCBpdCBsZXRzIHRoZSBzZXNzaW9uIHByZXBhcmUgZm9yIGEgcG9zc2li
bGUgdXBjb21pbmcgcmVxdWVzdCBieSBkb2luZwpETlMgcmVzb2x1dGlvbi4gSXQgYWRkaXRpb25h
bGx5IGhhcyBjYW5jZWxsYXRpb24gc3VwcG9ydCBhbmQgYWRkcyBhIGNhbGxiYWNrCnRvIG5vdGlm
eSB0aGUgY2FsbGVyIHdoZW4gdGhlIG9wZXJhdGlvbiBmaW5pc2hlcy4KLS0tCiBkb2NzL3JlZmVy
ZW5jZS9saWJzb3VwLTIuNC1zZWN0aW9ucy50eHQgfCAgICAxICsKIGxpYnNvdXAvc291cC1zZXNz
aW9uLmMgICAgICAgICAgICAgICAgICB8ICAgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KystCiBsaWJzb3VwL3NvdXAtc2Vzc2lvbi5oICAgICAgICAgICAgICAgICAgfCAgICA3ICsrKysr
KwogMyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL2RvY3MvcmVmZXJlbmNlL2xpYnNvdXAtMi40LXNlY3Rpb25zLnR4dCBiL2RvY3Mv
cmVmZXJlbmNlL2xpYnNvdXAtMi40LXNlY3Rpb25zLnR4dAppbmRleCBjNjQ3ZWIwLi4yYTgyMjhh
IDEwMDY0NAotLS0gYS9kb2NzL3JlZmVyZW5jZS9saWJzb3VwLTIuNC1zZWN0aW9ucy50eHQKKysr
IGIvZG9jcy9yZWZlcmVuY2UvbGlic291cC0yLjQtc2VjdGlvbnMudHh0CkBAIC0zODksNiArMzg5
LDcgQEAgc291cF9zZXNzaW9uX3F1ZXVlX21lc3NhZ2UKIHNvdXBfc2Vzc2lvbl9yZXF1ZXVlX21l
c3NhZ2UKIHNvdXBfc2Vzc2lvbl9zZW5kX21lc3NhZ2UKIHNvdXBfc2Vzc2lvbl9jYW5jZWxfbWVz
c2FnZQorc291cF9zZXNzaW9uX3ByZWZldGNoX3VyaQogc291cF9zZXNzaW9uX3ByZXBhcmVfZm9y
X3VyaQogc291cF9zZXNzaW9uX2Fib3J0CiA8U1VCU0VDVElPTj4KZGlmZiAtLWdpdCBhL2xpYnNv
dXAvc291cC1zZXNzaW9uLmMgYi9saWJzb3VwL3NvdXAtc2Vzc2lvbi5jCmluZGV4IDIyYTAyZmQu
Ljc3YzNmMDQgMTAwNjQ0Ci0tLSBhL2xpYnNvdXAvc291cC1zZXNzaW9uLmMKKysrIGIvbGlic291
cC9zb3VwLXNlc3Npb24uYwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogCi0jaW5jbHVkZSAic291cC1hZGRyZXNzLmgiCiAjaW5jbHVk
ZSAic291cC1hdXRoLmgiCiAjaW5jbHVkZSAic291cC1hdXRoLWJhc2ljLmgiCiAjaW5jbHVkZSAi
c291cC1hdXRoLWRpZ2VzdC5oIgpAQCAtMjM2MiwxMCArMjM2MSw0NCBAQCBzb3VwX3Nlc3Npb25f
YWJvcnQgKFNvdXBTZXNzaW9uICpzZXNzaW9uKQogKiBub3QgaGF2ZSBhIG1haW4gbG9vcCBydW5u
aW5nLCB0aGVuIHlvdSBjYW4ndCB1c2UgdGhpcyBtZXRob2QuCiAqCiAqIFNpbmNlOiAyLjMwCisq
CisqIERlcHJlY2F0ZWQ6IDIuMzg6IHVzZSBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfdXJpKCkgaW5z
dGVhZAogKiovCiB2b2lkCiBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpIChTb3VwU2Vzc2lv
biAqc2Vzc2lvbiwgU291cFVSSSAqdXJpKQogeworCXNvdXBfc2Vzc2lvbl9wcmVmZXRjaF91cmkg
KHNlc3Npb24sIHVyaSwgTlVMTCwgTlVMTCwgTlVMTCk7Cit9CisKKy8qKgorKiBzb3VwX3Nlc3Np
b25fcHJlZmV0Y2hfdXJpOgorKiBAc2Vzc2lvbjogYSAjU291cFNlc3Npb24KKyogQHVyaTogYSAj
U291cFVSSSB3aGljaCBtYXkgYmUgcmVxdWlyZWQKKyogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9u
ZSk6IGEgI0dDYW5jZWxsYWJsZSBvYmplY3QsIG9yICVOVUxMCisqIEBjYWxsYmFjazogKHNjb3Bl
IGFzeW5jKSAoYWxsb3ctbm9uZSk6IGNhbGxiYWNrIHRvIGNhbGwgd2l0aCB0aGUKKyogcmVzdWx0
LCBvciAlTlVMTAorKiBAdXNlcl9kYXRhOiBkYXRhIGZvciBAY2FsbGJhY2sKKyoKKyogVGVsbHMg
QHNlc3Npb24gdGhhdCBAdXJpIG1heSBiZSByZXF1ZXN0ZWQgc2hvcnRseSwgYW5kIHNvIHRoZQor
KiBzZXNzaW9uIGNhbiB0cnkgdG8gcHJlcGFyZSAocmVzb2x2aW5nIHRoZSBkb21haW4gbmFtZSwg
b2J0YWluaW5nCisqIHByb3h5IGFkZHJlc3MsIGV0Yy4pIGluIG9yZGVyIHRvIHdvcmsgbW9yZSBx
dWlja2x5IG9uY2UgdGhlIFVSSSBpcworKiBhY3R1YWxseSByZXF1ZXN0ZWQuCisqCisqIElmIEBj
YW5jZWxsYWJsZSBpcyBub24tJU5VTEwsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbmNlbCB0aGUKKyog
cmVzb2x1dGlvbi4gQGNhbGxiYWNrIHdpbGwgc3RpbGwgYmUgaW52b2tlZCBpbiB0aGlzIGNhc2Us
IHdpdGggYQorKiBzdGF0dXMgb2YgJVNPVVBfU1RBVFVTX0NBTkNFTExFRC4KKyoKKyogVGhpcyBt
ZXRob2QgYWN0cyBhc3luY2hyb25vdXNseSwgaW4gQHNlc3Npb24ncworKiAjU291cFNlc3Npb246
YXN5bmNfY29udGV4dC4gSWYgeW91IGFyZSB1c2luZyAjU291cFNlc3Npb25TeW5jIGFuZCBkbwor
KiBub3QgaGF2ZSBhIG1haW4gbG9vcCBydW5uaW5nLCB0aGVuIHlvdSBjYW4ndCB1c2UgdGhpcyBt
ZXRob2QuCisqCisqIFNpbmNlOiAyLjM4CisqKi8KK3ZvaWQKK3NvdXBfc2Vzc2lvbl9wcmVmZXRj
aF91cmkgKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBTb3VwVVJJICp1cmksCisJCQkgICBHQ2FuY2Vs
bGFibGUgKmNhbmNlbGxhYmxlLAorCQkJICAgU291cEFkZHJlc3NDYWxsYmFjayBjYWxsYmFjaywg
Z3BvaW50ZXIgdXNlcl9kYXRhKQorewogCVNvdXBTZXNzaW9uUHJpdmF0ZSAqcHJpdjsKIAlTb3Vw
U2Vzc2lvbkhvc3QgKmhvc3Q7CiAJU291cEFkZHJlc3MgKmFkZHI7CkBAIC0yMzg1LDcgKzI0MTgs
NyBAQCBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpIChTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwg
U291cFVSSSAqdXJpKQogCiAJc291cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMgKGFkZHIsCiAJCQkJ
ICAgIHNvdXBfc2Vzc2lvbl9nZXRfYXN5bmNfY29udGV4dCAoc2Vzc2lvbiksCi0JCQkJICAgIE5V
TEwsIE5VTEwsIE5VTEwpOworCQkJCSAgICBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJfZGF0
YSk7CiAJZ19vYmplY3RfdW5yZWYgKGFkZHIpOwogfQogCmRpZmYgLS1naXQgYS9saWJzb3VwL3Nv
dXAtc2Vzc2lvbi5oIGIvbGlic291cC9zb3VwLXNlc3Npb24uaAppbmRleCBkZDA5NTk5Li5iNDNk
NTU3IDEwMDY0NAotLS0gYS9saWJzb3VwL3NvdXAtc2Vzc2lvbi5oCisrKyBiL2xpYnNvdXAvc291
cC1zZXNzaW9uLmgKQEAgLTYsNiArNiw3IEBACiAjaWZuZGVmIFNPVVBfU0VTU0lPTl9ICiAjZGVm
aW5lIFNPVVBfU0VTU0lPTl9IIDEKIAorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1hZGRyZXNzLmg+
CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLXR5cGVzLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3Vw
LW1lc3NhZ2UuaD4KIApAQCAtMTA1LDYgKzEwNiwxMiBAQCB2b2lkICAgICAgICAgICAgc291cF9z
ZXNzaW9uX2Fib3J0ICAgICAgICAgICAgKFNvdXBTZXNzaW9uICAgICAgICAgICAqc2Vzc2lvbik7
CiB2b2lkICAgICAgICAgICAgc291cF9zZXNzaW9uX3ByZXBhcmVfZm9yX3VyaSAgKFNvdXBTZXNz
aW9uICAgICAgICAgICAqc2Vzc2lvbiwKIAkJCQkJICAgICAgIFNvdXBVUkkgICAgICAgICAgICAg
ICAqdXJpKTsKIAordm9pZCAgICAgICAgICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF91cmkgICAg
IChTb3VwU2Vzc2lvbiAgICAgICAgICAgKnNlc3Npb24sCisJCQkJCSAgICAgICBTb3VwVVJJICAg
ICAgICAgICAgICAgKnVyaSwKKwkJCQkJICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAqY2Fu
Y2VsbGFibGUsCisJCQkJCSAgICAgICBTb3VwQWRkcmVzc0NhbGxiYWNrICAgIGNhbGxiYWNrLAor
CQkJCQkgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCiBnYm9vbGVh
biAgICAgICAgc291cF9zZXNzaW9uX3dvdWxkX3JlZGlyZWN0ICAgKFNvdXBTZXNzaW9uICAgICAg
ICAgICAqc2Vzc2lvbiwKIAkJCQkJICAgICAgIFNvdXBNZXNzYWdlICAgICAgICAgICAqbXNnKTsK
IGdib29sZWFuICAgICAgICBzb3VwX3Nlc3Npb25fcmVkaXJlY3RfbWVzc2FnZSAoU291cFNlc3Np
b24gICAgICAgICAgICpzZXNzaW9uLAotLSAKMS43LjkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131831</attachid>
            <date>2012-03-14 05:12:35 -0700</date>
            <delta_ts>2012-03-15 03:34:22 -0700</delta_ts>
            <desc>WK Patch</desc>
            <filename>0001-Fix.patch</filename>
            <type>text/plain</type>
            <size>5655</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSBmODljZWNlODUzNDc3ODYyNDZkMjQ1NDZiNWNjZjMzODAyNGYyYmNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFR1ZSwgMTMgTWFyIDIwMTIgMjE6MDk6NDAgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBGaXgKClBlbmRpbmc6CiogcHJveHkgZGV0ZWN0Ci0tLQogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIHwgIDE0MCArKysrKysrKysrKysrKysrKysrKyst
CiAxIGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAppbmRl
eCAwMWY1MTAwLi45OTI5ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwCkBAIC0yOSwyMSArMjksMTU1IEBACiAKICNpbmNsdWRlICJD
U3RyaW5nLmgiCiAjaW5jbHVkZSAiR093blB0clNvdXAuaCIKKyNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCisvLyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5
bmMgcmVzb2x1dGlvbiByZXF1ZXN0cworLy8gaW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFu
dCBpZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5CisvLyBob3ZlcmluZykuICBCdXQgZHVy
aW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbAorLy8gcmVxdWVz
dHMgdG8gYXZvaWQgc3RyZXNzaW5nIHRoZSBTb3VwU2Vzc2lvbi4KK2NvbnN0IGludCBuYW1lc1Rv
UmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKKworLy8gQ29hbGVzY2UgcHJlZmV0Y2ggcmVxdWVzdHMg
Zm9yIHRoaXMgbG9uZyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KK2NvbnN0IGRvdWJsZSBjb2Fs
ZXNjZURlbGF5SW5TZWNvbmRzID0gMS4wOworCisvLyBTZW5kaW5nIG1hbnkgRE5TIHJlcXVlc3Rz
IGF0IG9uY2UgY2FuIG92ZXJ3aGVsbSBzb21lIGdhdGV3YXlzLgorY29uc3QgaW50IG1heFNpbXVs
dGFuZW91c1JlcXVlc3RzID0gODsKKworLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFueSBv
dXRzaWRlIHNpdGVzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUKKy8vIHN5c3RlbSBETlMgcmVzb2x2
ZXIgd29uJ3QgYmUgYWJsZSB0byBjYWNoZSB0aGVtIGFsbCBhbnl3YXksIGFuZCB3ZQorLy8gZG9u
J3Qgd2FudCB0byBuZWdhdGl2ZWx5IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMnIHBlcmZvcm1h
bmNlIGJ5CisvLyBwdXNoaW5nIHRoZWlyIGNhY2hlZCBlbnRyaWVzIG91dC4gIElmIHdlIGVuZCB1
cCB3aXRoIGxvdHMgb2YgbmFtZXMKKy8vIHRvIHByZWZldGNoLCBzb21lIHdpbGwgYmUgZHJvcHBl
ZC4KK2NvbnN0IGludCBtYXhSZXF1ZXN0c1RvUXVldWUgPSA2NDsKKworLy8gSWYgdGhlcmUgd2Vy
ZSBxdWV1ZWQgbmFtZXMgdGhhdCBjb3VsZG4ndCBiZSBzZW50IHNpbXVsdGFuZW91c2x5LAorLy8g
Y2hlY2sgdGhlIHN0YXRlIG9mIHJlc29sdmVycyBhZnRlciB0aGlzIGRlbGF5LgorY29uc3QgZG91
YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4xOworCisvLyBsaWJzb3VwIHZlcnNpb24g
b2YgQ0ZORVQncyBETlNSZXNvbHZlUXVldWUKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZSA6IHB1Ymxp
YyBUaW1lckJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBETlNSZXNvbHZlUXVldWUmIHNoYXJl
ZCgpOworICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZGVjcmVtZW50UmVx
dWVzdENvdW50KCk7CisKK3ByaXZhdGU6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisKKyAgICB2
b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGZpcmVkKCk7Cisg
ICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CisgICAgaW50IG1fcmVxdWVzdHNJbkZsaWdodDsK
K307CisKK0ROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKQogewotICAg
IGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChETlNSZXNv
bHZlUXVldWUsIG5hbWVzLCAoKSk7CisgICAgcmV0dXJuIG5hbWVzOworfQorCitETlNSZXNvbHZl
UXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCisgICAgOiBtX3JlcXVlc3RzSW5GbGlnaHQoMCkKK3sK
K30KKworc3RhdGljIGJvb2wgcHJveHlJc0VuYWJsZWRGb3JEZWZhdWx0U2Vzc2lvbigpCit7Cisg
ICAgLy8gRG9uJ3QgZG8gRE5TIHByZWZldGNoIGlmIHByb3hpZXMgYXJlIGludm9sdmVkLiBGb3Ig
bWFueSBwcm94eSB0eXBlcywgdGhlIHVzZXIgYWdlbnQgaXMgbmV2ZXIgZXhwb3NlZAorICAgIC8v
IHRvIHRoZSBJUCBhZGRyZXNzIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLiBRdWVyeWluZyBhbiBp
bnRlcm5hbCBETlMgc2VydmVyIG1heSBub3QgaGVscCBwZXJmb3JtYW5jZSwKKyAgICAvLyBhcyBp
dCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGxvb2sgdXAgdGhlIGFjdHVhbCBleHRlcm5hbCBJUC4gQWxz
bywgaWYgRE5TIHJldHVybnMgYSBmYWtlIGludGVybmFsIGFkZHJlc3MsCisgICAgLy8gbG9jYWwg
Y2FjaGVzIG1heSBrZWVwIGl0IGV2ZW4gYWZ0ZXIgcmUtY29ubmVjdGluZyB0byBhbm90aGVyIG5l
dHdvcmsuCisgICAgR093blB0cjxjaGFyPiBwcm94eVVSSTsKKyAgICBTb3VwU2Vzc2lvbiogc291
cFNlc3Npb24gPSBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKworICAgIGdfb2Jq
ZWN0X2dldChzb3VwU2Vzc2lvbiwgU09VUF9TRVNTSU9OX1BST1hZX1VSSSwgJnByb3h5VVJJLCBO
VUxMKTsKKyAgICAvLyBUT0RPOiBob3cgdG8gcmVsaWFiaWx5IGtub3cgdGhhdCB3ZSdyZSBiZWhp
bmQgYSBwcm94eSB3aXRob3V0CisgICAgLy8gdHJ5aW5nIHRvIHJlYWQgc3lzdGVtIHNldHRpbmdz
IG9yIHRoZSBsaWtlPworICAgIC8vIGlmIChwcm94eVVSSSB8fCBzb3VwX3Nlc3Npb25fZ2V0X2Zl
YXR1cmUoc291cFNlc3Npb24sIFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpKQorICAgIGlm
IChwcm94eVVSSSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IC8vIElmIHRoZXJlIGFyZSBubyBuYW1lcyBxdWV1ZWQsIGFuZCBmZXcgZW5vdWdoIGFyZSBpbiBm
bGlnaHQsIHJlc29sdmUgaW1tZWRpYXRlbHkgKHRoZSBtb3VzZSBtYXkgYmUgb3ZlciBhIGxpbmsp
LgorICAgIGlmICghbV9uYW1lcy5zaXplKCkpIHsKKworICAgICAgICBpZiAocHJveHlJc0VuYWJs
ZWRGb3JEZWZhdWx0U2Vzc2lvbigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCkgPD0gbmFtZXNUb1Jlc29sdmVJ
bW1lZGlhdGVseSkgeworICAgICAgICAgICAgcmVzb2x2ZShuYW1lKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZs
aWdodCk7CisgICAgfQorCisgICAgLy8gSXQncyBiZXR0ZXIgdG8gbm90IHByZWZldGNoIHNvbWUg
bmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1ZS4KKyAgICAvLyBEcm9wcGluZyB0aGUgbmV3ZXN0
IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xlIHBhZ2UsIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUg
YmVsb3cgb2xkZXN0IG9uZXMuCisgICAgaWYgKG1fbmFtZXMuc2l6ZSgpIDwgbWF4UmVxdWVzdHNU
b1F1ZXVlKSB7CisgICAgICAgIG1fbmFtZXMuYWRkKG5hbWUpOworICAgICAgICBpZiAoIWlzQWN0
aXZlKCkpCisgICAgICAgICAgICBzdGFydE9uZVNob3QoY29hbGVzY2VEZWxheUluU2Vjb25kcyk7
CisgICAgfQorfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6ZGVjcmVtZW50UmVxdWVzdENvdW50
KCkKK3sKKyAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Cit9CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlOjpmaXJlZCgpCit7CisgICAgaWYgKHByb3h5SXNFbmFibGVkRm9y
RGVmYXVsdFNlc3Npb24oKSkgeworICAgICAgICBtX25hbWVzLmNsZWFyKCk7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpbnQgcmVxdWVzdHNBbGxvd2VkID0gbWF4U2ltdWx0YW5lb3Vz
UmVxdWVzdHMgLSBtX3JlcXVlc3RzSW5GbGlnaHQ7CisKKyAgICBmb3IgKDsgIW1fbmFtZXMuaXNF
bXB0eSgpICYmIHJlcXVlc3RzQWxsb3dlZCA+IDA7IC0tcmVxdWVzdHNBbGxvd2VkKSB7CisgICAg
ICAgIGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICAgICAgSGFzaFNl
dDxTdHJpbmc+OjppdGVyYXRvciBjdXJyZW50TmFtZSA9IG1fbmFtZXMuYmVnaW4oKTsKKyAgICAg
ICAgcmVzb2x2ZSgqY3VycmVudE5hbWUpOworICAgICAgICBtX25hbWVzLnJlbW92ZShjdXJyZW50
TmFtZSk7CisgICAgfQorCisgICAgaWYgKCFtX25hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgc3Rh
cnRPbmVTaG90KHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzKTsKK30KKworc3RhdGljIHZvaWQgcmVz
b2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyAqc291cEFkZHJlc3MsIGd1aW50IHN0YXR1cywgZ3Bv
aW50ZXIgdXNlckRhdGEpCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWU6OnJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIiArIGhvc3RuYW1lOwogICAgIEdPd25QdHI8U291cFVS
ST4gc291cFVSSShzb3VwX3VyaV9uZXcodXJpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBpZiAoIXNv
dXBVUkkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91
cmkoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCkpOworICAg
IHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF91cmkoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCksIHNvdXBVUkkuZ2V0KCksIE5VTEwsIHJlc29sdmVkQ2FsbGJhY2ssIE5VTEwpOworfQorCit2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOwogfQogCiB9
Ci0tIAoxLjcuOQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132010</attachid>
            <date>2012-03-15 03:34:35 -0700</date>
            <delta_ts>2012-03-15 03:46:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41630-20120315113433.patch</filename>
            <type>text/plain</type>
            <size>17606</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM2YmJiYWQxZmM1MDJk
YjQ5M2M5NDA1MjY0ODAwN2Y0YWViODc4Mi4uYzFiOGRiZmE3OGEwYjFmOTQwMmQ0NDNmN2M2MmZj
MTgzZDU0YTgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTE1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIEROUyBwcmVm
ZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNlbGYgaW4gdGhlIGZvb3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNjMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZ2VuZXJpYyBETlNS
ZXNvbHZlUXVldWUgY2xhc3MgdG8gdGhyb3R0bGUgRE5TCisgICAgICAgIHByZWZldGNoZXMuIEl0
J3MgYW4gYWJzdHJhY3QgcmVmYWN0b3Jpbmcgb2YgQ0ZORVQncworICAgICAgICBETlNSZXNvbHZl
UXVldWUuIEltcGxlbWVudGVkIHN1YmNsYXNzZXMgZm9yIHNvdXAgYW5kIENGTkVUCisgICAgICAg
IGJhY2tlbmRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyByZXF1aXJlZCBhcyB3ZSdyZSBqdXN0
IHJlZmFjdG9yaW5nIGV4aXN0aW5nIGNvZGUgdG8KKyAgICAgICAgYmUgdXNlZCBieSB0d28gZGlm
ZmVyZW50IHBvcnRzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuaDoKKyAgICAg
ICAgKEROU1Jlc29sdmVRdWV1ZSk6IGFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBETlMg
cHJlZmV0Y2gKKyAgICAgICAgdGhyb3R0bGluZyB1c2luZyBhIHRlbXBsYXRlIHBhdHRlcm4uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmFkZCk6IGFkZHMgYSBuZXcgaG9zdCB0
byBiZSBwcmVmZXRjaGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpkZWNy
ZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpm
aXJlZCk6IGJ5IHVzaW5nIGEgZGVsYXkgd2UgY29hbGVzY2UKKyAgICAgICAgc2V2ZXJhbCBwcmVm
ZXRjaCByZXF1ZXN0cyBhbmQgdHJ5IHRvIHJlc29sdmUgdGhlbSBhbGwgaGVyZS4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwOgor
ICAgICAgICAoRE5TUmVzb2x2ZVF1ZXVlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2
ZVF1ZXVlQ0Y6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRjo6
cHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZUNGOjpjbGllbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpETlNS
ZXNvbHZlUXVldWVDRjo6cmVzb2x2ZSk6IENGTkVUIEROUyByZXNvbHV0aW9uCisgICAgICAgIHNw
ZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRjaEROUyk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoRE5TUmVzb2x2ZVF1
ZXVlU291cCk6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpzaGFyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cHJveHlJc0VuYWJsZWRJ
blN5c3RlbVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
U291cDo6cmVzb2x2ZSk6IGxpYnNvdXAgRE5TIHJlc29sdXRpb24KKyAgICAgICAgc3BlY2lmaWMg
Y29kZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OgorCiAyMDEyLTAzLTE0ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeCBmb3IgRUZMIGFmdGVyIHIxMTA2Njku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaAppbmRleCBjNmI3NDhkYjhjNmIzNWVm
MWE0YjYwNWFhMDk1NGIwNzQ0NjFhNmVmLi42MmZiNTA5ZTA1MTQyMjc5M2VmY2IzYmU3N2ZiN2Nj
ZTA1ODU5OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKQEAgLTEsNSAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGlu
akB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMCArMjgsOTEgQEAKICNpZm5kZWYgRE5TX2gK
ICNkZWZpbmUgRE5TX2gKIAorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBETlNSZXNvbHZlUXVldWUg
OiBwdWJsaWMgVGltZXJCYXNlIHsKKworcHJpdmF0ZToKKyAgICAvLyBXaGVuIHJlc29sdmUgcXVl
dWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiByZXF1ZXN0cyBpbW1lZGlhdGVs
eSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBpcyB0cmlnZ2VyZWQgYnkgaG92
ZXJpbmcpLgorICAgIC8vIEJ1dCBkdXJpbmcgcGFnZSBwYXJzaW5nLCB3ZSBzaG91bGQgY29hbGVz
Y2UgaWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0cmVzc2luZyBvdXQgQ0ZIb3N0LgorICAg
IHN0YXRpYyBjb25zdCBpbnQgbmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7CisKKyAgICAv
LyBDb2FsZXNjZSBwcmVmZXRjaCByZXF1ZXN0cyBmb3IgdGhpcyBsb25nIGJlZm9yZSBzZW5kaW5n
IHRoZW0gb3V0LgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgY29hbGVzY2VEZWxheUluU2Vjb25k
cyA9IDEuMDsKKworICAgIC8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMgYXQgb25jZSBjYW4g
b3ZlcndoZWxtIHNvbWUgZ2F0ZXdheXMuIENGSG9zdCBkb2Vzbid0IGN1cnJlbnRseSB0aHJvdHRs
ZSBmb3IgdXMsIHNlZSA8cmRhcjovLzgxMDU1NTA+LgorICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
U2ltdWx0YW5lb3VzUmVxdWVzdHMgPSA4OworCisgICAgLy8gRm9yIGEgcGFnZSBoYXMgbGlua3Mg
dG8gbWFueSBvdXRzaWRlIHNpdGVzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyBy
ZXNvbHZlciB3b24ndCBiZSBhYmxlIHRvIGNhY2hlIHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRv
bid0IHdhbnQKKyAgICAvLyB0byBuZWdhdGl2ZWx5IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMn
IHBlcmZvcm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIgY2FjaGVkIGVudHJpZXMgb3V0LgorICAgIC8v
IElmIHdlIGVuZCB1cCB3aXRoIGxvdHMgb2YgbmFtZXMgdG8gcHJlZmV0Y2gsIHNvbWUgd2lsbCBi
ZSBkcm9wcGVkLgorICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4UmVxdWVzdHNUb1F1ZXVlID0gNjQ7
CisKKyAgICAvLyBJZiB0aGVyZSB3ZXJlIHF1ZXVlZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNl
bnQgc2ltdWx0YW5lb3VzbHksIGNoZWNrIHRoZSBzdGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhp
cyBkZWxheS4KKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRz
ID0gMC4xOworCitwdWJsaWM6CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
KyAgICB7CisgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZXMgcXVldWVkLCBhbmQgZmV3IGVu
b3VnaCBhcmUgaW4gZmxpZ2h0LCByZXNvbHZlIGltbWVkaWF0ZWx5ICh0aGUgbW91c2UgbWF5IGJl
IG92ZXIgYSBsaW5rKS4KKyAgICAgIGlmICghbV9uYW1lcy5zaXplKCkpIHsKKyAgICAgICAgaWYg
KHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpKQorICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAoYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9IG5h
bWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkpIHsKKyAgICAgICAgICByZXNvbHZlKGhvc3RuYW1lKTsK
KyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXRvbWljRGVjcmVtZW50KCZt
X3JlcXVlc3RzSW5GbGlnaHQpOworICAgICAgfQorCisgICAgICAvLyBJdCdzIGJldHRlciB0byBu
b3QgcHJlZmV0Y2ggc29tZSBuYW1lcyB0aGFuIHRvIGNsb2cgdGhlIHF1ZXVlLgorICAgICAgLy8g
RHJvcHBpbmcgdGhlIG5ld2VzdCBuYW1lcywgYmVjYXVzZSBvbiBhIHNpbmdsZSBwYWdlLCB0aGVz
ZSBhcmUgbGlrZWx5IHRvIGJlIGJlbG93IG9sZGVzdCBvbmVzLgorICAgICAgaWYgKG1fbmFtZXMu
c2l6ZSgpIDwgbWF4UmVxdWVzdHNUb1F1ZXVlKSB7CisgICAgICAgIG1fbmFtZXMuYWRkKGhvc3Ru
YW1lKTsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgIHN0YXJ0T25lU2hvdChj
b2FsZXNjZURlbGF5SW5TZWNvbmRzKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCisgICAgeworICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVl
c3RzSW5GbGlnaHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgcHJveHlJ
c0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXNv
bHZlKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZvaWQgZmlyZWQoKQorICAgIHsKKyAgICAg
IGlmIChwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkgeworICAgICAgICBtX25h
bWVzLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgaW50IHJlcXVl
c3RzQWxsb3dlZCA9IG1heFNpbXVsdGFuZW91c1JlcXVlc3RzIC0gbV9yZXF1ZXN0c0luRmxpZ2h0
OworCisgICAgICBmb3IgKDsgIW1fbmFtZXMuaXNFbXB0eSgpICYmIHJlcXVlc3RzQWxsb3dlZCA+
IDA7IC0tcmVxdWVzdHNBbGxvd2VkKSB7CisgICAgICAgIGF0b21pY0luY3JlbWVudCgmbV9yZXF1
ZXN0c0luRmxpZ2h0KTsKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBjdXJyZW50
TmFtZSA9IG1fbmFtZXMuYmVnaW4oKTsKKyAgICAgICAgcmVzb2x2ZSgqY3VycmVudE5hbWUpOwor
ICAgICAgICBtX25hbWVzLnJlbW92ZShjdXJyZW50TmFtZSk7CisgICAgICB9CisKKyAgICAgIGlm
ICghbV9uYW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHN0YXJ0T25lU2hvdChyZXRyeVJlc29sdmlu
Z0luU2Vjb25kcyk7CisgICAgfQorCisgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CisgICAg
aW50IG1fcmVxdWVzdHNJbkZsaWdodDsKK307CisKIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggYTZhOGQ5MjVmNzk2ZGY2ZDkwNjc1N2JjMzJjNzExNWRm
MjhhZGMyOC4uNjkyOWQ2NjYzZWUwYTBiOTFjZDY5NmMzZDNlMTFmNjZiNWE4MTlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTQ3
LDE2NCArNDcsODIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBXaGVuIHJlc29sdmUg
cXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiByZXF1ZXN0cyBpbW1lZGlh
dGVseSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBpcyB0cmlnZ2VyZWQgYnkg
aG92ZXJpbmcpLgotLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBjb2FsZXNj
ZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCBDRkhvc3QuCi1jb25z
dCBpbnQgbmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7Ci0KLS8vIENvYWxlc2NlIHByZWZl
dGNoIHJlcXVlc3RzIGZvciB0aGlzIGxvbmcgYmVmb3JlIHNlbmRpbmcgdGhlbSBvdXQuCi1jb25z
dCBkb3VibGUgY29hbGVzY2VEZWxheUluU2Vjb25kcyA9IDEuMDsKLQotLy8gU2VuZGluZyBtYW55
IEROUyByZXF1ZXN0cyBhdCBvbmNlIGNhbiBvdmVyd2hlbG0gc29tZSBnYXRld2F5cy4gQ0ZIb3N0
IGRvZXNuJ3QgY3VycmVudGx5IHRocm90dGxlIGZvciB1cywgc2VlIDxyZGFyOi8vODEwNTU1MD4u
Ci1jb25zdCBpbnQgbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgPSA4OwotCi0vLyBGb3IgYSBwYWdl
IGhhcyBsaW5rcyB0byBtYW55IG91dHNpZGUgc2l0ZXMsIGl0IGlzIGxpa2VseSB0aGF0IHRoZSBz
eXN0ZW0gRE5TIHJlc29sdmVyIHdvbid0IGJlIGFibGUgdG8gY2FjaGUgdGhlbSBhbGwgYW55d2F5
LCBhbmQgd2UgZG9uJ3Qgd2FudAotLy8gdG8gbmVnYXRpdmVseSBhZmZlY3Qgb3RoZXIgYXBwbGlj
YXRpb25zJyBwZXJmb3JtYW5jZSBieSBwdXNoaW5nIHRoZWlyIGNhY2hlZCBlbnRyaWVzIG91dC4K
LS8vIElmIHdlIGVuZCB1cCB3aXRoIGxvdHMgb2YgbmFtZXMgdG8gcHJlZmV0Y2gsIHNvbWUgd2ls
bCBiZSBkcm9wcGVkLgotY29uc3QgaW50IG1heFJlcXVlc3RzVG9RdWV1ZSA9IDY0OwotCi0vLyBJ
ZiB0aGVyZSB3ZXJlIHF1ZXVlZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNlbnQgc2ltdWx0YW5l
b3VzbHksIGNoZWNrIHRoZSBzdGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhpcyBkZWxheS4KLWNv
bnN0IGRvdWJsZSByZXRyeVJlc29sdmluZ0luU2Vjb25kcyA9IDAuMTsKK2NsYXNzIEROU1Jlc29s
dmVRdWV1ZUNGIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IEROU1Jlc29sdmVRdWV1ZUNGJiBzaGFyZWQoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChETlNSZXNvbHZlUXVldWVDRiwgcXVldWUsICgpKTsKKyAgICAgICAgcmV0dXJuIHF1
ZXVlOworICAgIH0KIAotc3RhdGljIGJvb2wgcHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVu
Y2VzKCkKLXsKLSAgICAvLyBEb24ndCBkbyBETlMgcHJlZmV0Y2ggaWYgcHJveGllcyBhcmUgaW52
b2x2ZWQuIEZvciBtYW55IHByb3h5IHR5cGVzLCB0aGUgdXNlciBhZ2VudCBpcyBuZXZlciBleHBv
c2VkCi0gICAgLy8gdG8gdGhlIElQIGFkZHJlc3MgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uIFF1
ZXJ5aW5nIGFuIGludGVybmFsIEROUyBzZXJ2ZXIgbWF5IG5vdCBoZWxwIHBlcmZvcm1hbmNlLAot
ICAgIC8vIGFzIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbG9vayB1cCB0aGUgYWN0dWFsIGV4dGVy
bmFsIElQLiBBbHNvLCBpZiBETlMgcmV0dXJucyBhIGZha2UgaW50ZXJuYWwgYWRkcmVzcywKLSAg
ICAvLyBsb2NhbCBjYWNoZXMgbWF5IGtlZXAgaXQgZXZlbiBhZnRlciByZS1jb25uZWN0aW5nIHRv
IGFub3RoZXIgbmV0d29yay4KK3ByaXZhdGU6CisgICAgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lz
dGVtUHJlZmVyZW5jZXMoKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgZG8gRE5TIHByZWZldGNo
IGlmIHByb3hpZXMgYXJlIGludm9sdmVkLiBGb3IgbWFueSBwcm94eSB0eXBlcywgdGhlIHVzZXIg
YWdlbnQgaXMgbmV2ZXIgZXhwb3NlZAorICAgICAgICAvLyB0byB0aGUgSVAgYWRkcmVzcyBkdXJp
bmcgbm9ybWFsIG9wZXJhdGlvbi4gUXVlcnlpbmcgYW4gaW50ZXJuYWwgRE5TIHNlcnZlciBtYXkg
bm90IGhlbHAgcGVyZm9ybWFuY2UsCisgICAgICAgIC8vIGFzIGl0IGRvZXNuJ3QgbmVjZXNzYXJp
bHkgbG9vayB1cCB0aGUgYWN0dWFsIGV4dGVybmFsIElQLiBBbHNvLCBpZiBETlMgcmV0dXJucyBh
IGZha2UgaW50ZXJuYWwgYWRkcmVzcywKKyAgICAgICAgLy8gbG9jYWwgY2FjaGVzIG1heSBrZWVw
IGl0IGV2ZW4gYWZ0ZXIgcmUtY29ubmVjdGluZyB0byBhbm90aGVyIG5ldHdvcmsuCiAKICNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IHByb3h5U2V0dGluZ3MoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGlu
Z3MoKSk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3Mo
QWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CiAjZWxzZQotICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MoQWRvcHRDRiwgU0NEeW5h
bWljU3RvcmVDb3B5UHJveGllcygwKSk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IHByb3h5U2V0dGluZ3MoQWRvcHRDRiwgU0NEeW5hbWljU3RvcmVDb3B5UHJveGllcygwKSk7
CiAjZW5kaWYKLSAgICBpZiAoIXByb3h5U2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHN0YXRpYyBDRlVSTFJlZiBodHRwQ0ZVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIHN0YXRpYyBDRlVSTFJl
ZiBodHRwc0NGVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29t
LyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5
QXJyYXkoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLCBwcm94
eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlB
cnJheShBZG9wdENGLCBDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLCBwcm94
eVNldHRpbmdzLmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBzUHJveHlD
b3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAgIGlmICho
dHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFy
cmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAg
ICAgICBodHRwUHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYm
IENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQ
cm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94eUNvdW50
ID0gMDsKLQotICAgIHJldHVybiBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19
Ci0KLWNsYXNzIEROU1Jlc29sdmVRdWV1ZSA6IHB1YmxpYyBUaW1lckJhc2UgewotcHVibGljOgot
ICAgIHN0YXRpYyBETlNSZXNvbHZlUXVldWUmIHNoYXJlZCgpOwotICAgIHZvaWQgYWRkKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0KLXByaXZhdGU6
Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KLSAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGZpcmVkKCk7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fbmFt
ZXM7Ci0gICAgaW50IG1fcmVxdWVzdHNJbkZsaWdodDsKLX07Ci0KLUROU1Jlc29sdmVRdWV1ZTo6
RE5TUmVzb2x2ZVF1ZXVlKCkKLSAgICA6IG1fcmVxdWVzdHNJbkZsaWdodCgwKQotewotfQotCi1E
TlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2hhcmVkKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEROU1Jlc29sdmVRdWV1ZSwgbmFtZXMsICgpKTsKLSAgICByZXR1cm4gbmFt
ZXM7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBuYW1lKQot
ewotICAgIC8vIElmIHRoZXJlIGFyZSBubyBuYW1lcyBxdWV1ZWQsIGFuZCBmZXcgZW5vdWdoIGFy
ZSBpbiBmbGlnaHQsIHJlc29sdmUgaW1tZWRpYXRlbHkgKHRoZSBtb3VzZSBtYXkgYmUgb3ZlciBh
IGxpbmspLgotICAgIGlmICghbV9uYW1lcy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHByb3h5SXNF
bmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAoIXByb3h5U2V0dGluZ3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgaWYgKGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KSA8PSBuYW1lc1RvUmVz
b2x2ZUltbWVkaWF0ZWx5KSB7Ci0gICAgICAgICAgICByZXNvbHZlKG5hbWUpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0
c0luRmxpZ2h0KTsKLSAgICB9CisgICAgICAgIHN0YXRpYyBDRlVSTFJlZiBodHRwQ0ZVUkwgPSBL
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgICAgICBzdGF0aWMgQ0ZVUkxSZWYgaHR0cHNDRlVSTCA9IEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwogCi0gICAgLy8gSXQn
cyBiZXR0ZXIgdG8gbm90IHByZWZldGNoIHNvbWUgbmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1
ZS4KLSAgICAvLyBEcm9wcGluZyB0aGUgbmV3ZXN0IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xl
IHBhZ2UsIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgYmVsb3cgb2xkZXN0IG9uZXMuCi0gICAgaWYg
KG1fbmFtZXMuc2l6ZSgpIDwgbWF4UmVxdWVzdHNUb1F1ZXVlKSB7Ci0gICAgICAgIG1fbmFtZXMu
YWRkKG5hbWUpOwotICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCi0gICAgICAgICAgICBzdGFydE9u
ZVNob3QoY29hbGVzY2VEZWxheUluU2Vjb25kcyk7Ci0gICAgfQotfQorICAgICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVByb3hp
ZXNGb3JVUkwoaHR0cENGVVJMLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVBy
b3hpZXNGb3JVUkwoaHR0cHNDRlVSTCwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogCi12b2lkIERO
U1Jlc29sdmVRdWV1ZTo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKLXsKLSAgICBhdG9taWNEZWNy
ZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Ci19CisgICAgICAgIENGSW5kZXggaHR0cFByb3h5
Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOworICAgICAgICBD
RkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXku
Z2V0KCkpOworICAgICAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGlj
dGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBr
Q0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICAg
ICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0
dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKKyAgICAgICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CiAKLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjpmaXJlZCgpCi17Ci0gICAgaWYgKHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJl
bmNlcygpKSB7Ci0gICAgICAgIG1fbmFtZXMuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OwogICAgIH0KIAot
ICAgIGludCByZXF1ZXN0c0FsbG93ZWQgPSBtYXhTaW11bHRhbmVvdXNSZXF1ZXN0cyAtIG1fcmVx
dWVzdHNJbkZsaWdodDsKLQotICAgIGZvciAoOyAhbV9uYW1lcy5pc0VtcHR5KCkgJiYgcmVxdWVz
dHNBbGxvd2VkID4gMDsgLS1yZXF1ZXN0c0FsbG93ZWQpIHsKLSAgICAgICAgYXRvbWljSW5jcmVt
ZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOwotICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJh
dG9yIGN1cnJlbnROYW1lID0gbV9uYW1lcy5iZWdpbigpOwotICAgICAgICByZXNvbHZlKCpjdXJy
ZW50TmFtZSk7Ci0gICAgICAgIG1fbmFtZXMucmVtb3ZlKGN1cnJlbnROYW1lKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUs
IGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKKyAgICB7CisgICAgICAgIEROU1Jlc29sdmVR
dWV1ZUNGOjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBj
YWxsIHNoYXJlZCgpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxl
IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgorICAgICAgICBDRlJlbGVhc2Uo
dGhlSG9zdCk7CiAgICAgfQogCi0gICAgaWYgKCFtX25hbWVzLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RhcnRPbmVTaG90KHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzKTsKLX0KLQotc3RhdGljIHZvaWQg
Y2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBD
RlN0cmVhbUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5k
ZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNoYXJlZCgpIGZyb20g
YSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4g
aW5pdGlhbGl6ZWQgYnkgbm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KKyAgICB2b2lk
IHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9z
dENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lQ0YuZ2V0KCkpKTsKLSAgICBpZiAoIWhvc3QpIHsK
LSAgICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwg
MCwgMCwgMCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8v
IFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgotICAgIEJv
b2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNr
LCAmY29udGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVh
dGVDRlN0cmluZygpKTsKKyAgICAgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdChBZG9wdENG
LCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgpKSk7CisgICAgICAgIGlm
ICghaG9zdCkgeworICAgICAgICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5GbGln
aHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIENGSG9zdENsaWVu
dENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OworICAgICAgICBDRkhvc3RSZWYg
bGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2Vk
IGZyb20gY2xpZW50Q2FsbGJhY2soKS4KKyAgICAgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RT
ZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAjaWYgIVBMQVRGT1JNKFdJTikKLSAgICBD
Rkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9v
cChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7
CiAjZWxzZQotICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRo
IENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQu
Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29w
KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1
biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50
Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCisgICAgICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwog
I2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKLX0KKyAgICAgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFr
ZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKKyAgICB9Cit9OwogCiB2b2lkIHByZWZldGNo
RE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgRE5T
UmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOworICAgIEROU1Jlc29sdmVRdWV1
ZUNGOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKaW5kZXggMDFmNTEwMGE3MDhmNjRi
YmMyZDMzYWNjYmRjYzNmMDlhMjA3NjhmOS4uM2FhYTM3Y2QwNzdiMWU2Y2VmNGJmMzU4YzBlMzhl
NDAyYzMxOGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcApAQCAtMzAsMjAgKzMwLDQ1IEBACiAjaW5jbHVkZSAiQ1N0cmluZy5oIgog
I2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEROU1Jlc29sdmVRdWV1ZVNvdXAgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKKworcHVibGlj
OgorICAgIHN0YXRpYyBETlNSZXNvbHZlUXVldWVTb3VwJiBzaGFyZWQoKQorICAgIHsKKyAgICAg
IERFRklORV9TVEFUSUNfTE9DQUwoRE5TUmVzb2x2ZVF1ZXVlU291cCwgcXVldWUsICgpKTsKKyAg
ICAgIHJldHVybiBxdWV1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gVGhlcmUgaXMgbm8g
Y3VycmVudCByZWxpYWJsZSB3YXkgdG8ga25vdyBpZiB3ZSdyZSBiZWhpbmQgYQorICAgIC8vIHBy
b3h5IGF0IHRoaXMgbGV2ZWwuIFdlJ2xsIGhhdmUgdG8gaW1wbGVtZW50IGl0IGluCisgICAgLy8g
U291cFNlc3Npb24vU291cFByb3h5VVJJUmVzb2x2ZXIvR1Byb3h5UmVzb2x2ZXIKKyAgICBib29s
IHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpIHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgICBzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiBzb3VwQWRkcmVz
cywgZ3VpbnQgc3RhdHVzLCB2b2lkKiB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIEROU1Jlc29s
dmVRdWV1ZVNvdXA6OnNoYXJlZCgpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgIH0KKwor
ICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgICAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hf
ZG5zKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0
YSgpLCAwLCByZXNvbHZlZENhbGxiYWNrLCAwKTsKKyAgICB9Cit9OworCiB2b2lkIHByZWZldGNo
RE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgdXJpID0gImh0dHA6Ly8iICsgaG9zdG5hbWU7Ci0gICAgR093blB0cjxTb3VwVVJJPiBz
b3VwVVJJKHNvdXBfdXJpX25ldyh1cmkudXRmOCgpLmRhdGEoKSkpOwotICAgIGlmICghc291cFVS
SSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc291cF9zZXNzaW9uX3ByZXBhcmVfZm9yX3VyaShS
ZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgc291cFVSSS5nZXQoKSk7CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cDo6c2hhcmVkKCkuYWRkKGhvc3RuYW1lKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132012</attachid>
            <date>2012-03-15 03:37:33 -0700</date>
            <delta_ts>2012-03-15 09:48:47 -0700</delta_ts>
            <desc>libsoup Patch</desc>
            <filename>0001-soup-session.c-add-soup_session_prefetch_dns.patch</filename>
            <type>text/plain</type>
            <size>5851</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSAxYWQwZjI4YmVkYjNkNmNhMzk2NTI5ZGZiMjY2YWE0OTExM2U5ZGM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFdlZCwgMTQgTWFyIDIwMTIgMTE6MDA6MDQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBzb3VwLXNlc3Npb24uYzogYWRkIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMKClRoaXMgZGVw
cmVjYXRlcyBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpKCkuIEl0IGJhc2ljYWxseSBkb2Vz
IHRoZSBzYW1lLAppLmUuLCBpdCBsZXRzIHRoZSBzZXNzaW9uIHByZXBhcmUgZm9yIGEgcG9zc2li
bGUgdXBjb21pbmcgcmVxdWVzdCBieSBkb2luZwpETlMgcmVzb2x1dGlvbi4gSXQgYWRkaXRpb25h
bGx5IGhhcyBjYW5jZWxsYXRpb24gc3VwcG9ydCBhbmQgYWRkcyBhIGNhbGxiYWNrCnRvIG5vdGlm
eSB0aGUgY2FsbGVyIHdoZW4gdGhlIG9wZXJhdGlvbiBmaW5pc2hlcy4KCmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAotLS0KIGRvY3MvcmVmZXJlbmNlL2xpYnNv
dXAtMi40LXNlY3Rpb25zLnR4dCB8ICAgIDEgKwogbGlic291cC9zb3VwLXNlc3Npb24uYyAgICAg
ICAgICAgICAgICAgIHwgICA4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIGxpYnNv
dXAvc291cC1zZXNzaW9uLmggICAgICAgICAgICAgICAgICB8ICAgIDcgKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j
cy9yZWZlcmVuY2UvbGlic291cC0yLjQtc2VjdGlvbnMudHh0IGIvZG9jcy9yZWZlcmVuY2UvbGli
c291cC0yLjQtc2VjdGlvbnMudHh0CmluZGV4IGM2NDdlYjAuLjQ2MGUwYzQgMTAwNjQ0Ci0tLSBh
L2RvY3MvcmVmZXJlbmNlL2xpYnNvdXAtMi40LXNlY3Rpb25zLnR4dAorKysgYi9kb2NzL3JlZmVy
ZW5jZS9saWJzb3VwLTIuNC1zZWN0aW9ucy50eHQKQEAgLTM4OSw2ICszODksNyBAQCBzb3VwX3Nl
c3Npb25fcXVldWVfbWVzc2FnZQogc291cF9zZXNzaW9uX3JlcXVldWVfbWVzc2FnZQogc291cF9z
ZXNzaW9uX3NlbmRfbWVzc2FnZQogc291cF9zZXNzaW9uX2NhbmNlbF9tZXNzYWdlCitzb3VwX3Nl
c3Npb25fcHJlZmV0Y2hfZG5zCiBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpCiBzb3VwX3Nl
c3Npb25fYWJvcnQKIDxTVUJTRUNUSU9OPgpkaWZmIC0tZ2l0IGEvbGlic291cC9zb3VwLXNlc3Np
b24uYyBiL2xpYnNvdXAvc291cC1zZXNzaW9uLmMKaW5kZXggMjJhMDJmZC4uODUwOTJlNyAxMDA2
NDQKLS0tIGEvbGlic291cC9zb3VwLXNlc3Npb24uYworKysgYi9saWJzb3VwL3NvdXAtc2Vzc2lv
bi5jCkBAIC0xMyw3ICsxMyw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAKLSNpbmNsdWRlICJzb3VwLWFkZHJlc3MuaCIKICNpbmNsdWRlICJzb3VwLWF1dGgu
aCIKICNpbmNsdWRlICJzb3VwLWF1dGgtYmFzaWMuaCIKICNpbmNsdWRlICJzb3VwLWF1dGgtZGln
ZXN0LmgiCkBAIC0yMzYyLDIyICsyMzYxLDk3IEBAIHNvdXBfc2Vzc2lvbl9hYm9ydCAoU291cFNl
c3Npb24gKnNlc3Npb24pCiAqIG5vdCBoYXZlIGEgbWFpbiBsb29wIHJ1bm5pbmcsIHRoZW4geW91
IGNhbid0IHVzZSB0aGlzIG1ldGhvZC4KICoKICogU2luY2U6IDIuMzAKKyoKKyogRGVwcmVjYXRl
ZDogMi4zODogdXNlIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoKSBpbnN0ZWFkCiAqKi8KIHZv
aWQKIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91cmkgKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBT
b3VwVVJJICp1cmkpCiB7Ci0JU291cFNlc3Npb25Qcml2YXRlICpwcml2OwotCVNvdXBTZXNzaW9u
SG9zdCAqaG9zdDsKLQlTb3VwQWRkcmVzcyAqYWRkcjsKLQogCWdfcmV0dXJuX2lmX2ZhaWwgKFNP
VVBfSVNfU0VTU0lPTiAoc2Vzc2lvbikpOwogCWdfcmV0dXJuX2lmX2ZhaWwgKHVyaSAhPSBOVUxM
KTsKIAogCWlmICghdXJpLT5ob3N0KQogCQlyZXR1cm47CiAKKwlzb3VwX3Nlc3Npb25fcHJlZmV0
Y2hfZG5zIChzZXNzaW9uLCB1cmktPmhvc3QsIE5VTEwsIE5VTEwsIE5VTEwpOworfQorCit0eXBl
ZGVmIHN0cnVjdCB7CisJU291cEFkZHJlc3NDYWxsYmFjayAgY2FsbGJhY2s7CisJZ3BvaW50ZXIg
ICAgICAgICAgICAgY2FsbGJhY2tfZGF0YTsKK30gU291cFNlc3Npb25SZXNvbHZlQXN5bmNEYXRh
OworCitzdGF0aWMgZ2Jvb2xlYW4KK2lkbGVfY29tcGxldGVfcmVzb2x2ZSAoZ3BvaW50ZXIgdXNl
cl9kYXRhKQoreworCVNvdXBTZXNzaW9uUmVzb2x2ZUFzeW5jRGF0YSAqcmVzX2RhdGEgPSAoU291
cFNlc3Npb25SZXNvbHZlQXN5bmNEYXRhICopIHVzZXJfZGF0YTsKKworCXJlc19kYXRhLT5jYWxs
YmFjayhOVUxMLCBTT1VQX1NUQVRVU19NQUxGT1JNRUQsIHJlc19kYXRhLT5jYWxsYmFja19kYXRh
KTsKKwlnX3NsaWNlX2ZyZWUgKFNvdXBTZXNzaW9uUmVzb2x2ZUFzeW5jRGF0YSwgcmVzX2RhdGEp
OworCisJcmV0dXJuIEZBTFNFOworfQorCisvKioKKyogc291cF9zZXNzaW9uX3ByZWZldGNoX2Ru
czoKKyogQHNlc3Npb246IGEgI1NvdXBTZXNzaW9uCisqIEBob3N0bmFtZTogYSBob3N0bmFtZSB0
byBiZSByZXNvbHZlZAorKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxh
YmxlIG9iamVjdCwgb3IgJU5VTEwKKyogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpIChhbGxvdy1u
b25lKTogY2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZQorKiByZXN1bHQsIG9yICVOVUxMCisqIEB1
c2VyX2RhdGE6IGRhdGEgZm9yIEBjYWxsYmFjaworKgorKiBUZWxscyBAc2Vzc2lvbiB0aGF0IGFu
IFVSSSBmcm9tIHRoZSBnaXZlbiBAaG9zdG5hbWUgbWF5IGJlIHJlcXVlc3RlZAorKiBzaG9ydGx5
LCBhbmQgc28gdGhlIHNlc3Npb24gY2FuIHRyeSB0byBwcmVwYXJlIChyZXNvbHZpbmcgdGhlIGRv
bWFpbgorKiBuYW1lLCBvYnRhaW5pbmcgcHJveHkgYWRkcmVzcywgZXRjLikgaW4gb3JkZXIgdG8g
d29yayBtb3JlIHF1aWNrbHkKKyogb25jZSB0aGUgVVJJIGlzIGFjdHVhbGx5IHJlcXVlc3RlZC4K
KyoKKyogSWYgQGNhbmNlbGxhYmxlIGlzIG5vbi0lTlVMTCwgaXQgY2FuIGJlIHVzZWQgdG8gY2Fu
Y2VsIHRoZQorKiByZXNvbHV0aW9uLiBAY2FsbGJhY2sgd2lsbCBzdGlsbCBiZSBpbnZva2VkIGlu
IHRoaXMgY2FzZSwgd2l0aCBhCisqIHN0YXR1cyBvZiAlU09VUF9TVEFUVVNfQ0FOQ0VMTEVELgor
KgorKiBUaGlzIG1ldGhvZCBhY3RzIGFzeW5jaHJvbm91c2x5LCBpbiBAc2Vzc2lvbidzCisqICNT
b3VwU2Vzc2lvbjphc3luY19jb250ZXh0LiBJZiB5b3UgYXJlIHVzaW5nICNTb3VwU2Vzc2lvblN5
bmMgYW5kIGRvCisqIG5vdCBoYXZlIGEgbWFpbiBsb29wIHJ1bm5pbmcsIHRoZW4geW91IGNhbid0
IHVzZSB0aGlzIG1ldGhvZC4KKyoKKyogU2luY2U6IDIuMzgKKyoqLwordm9pZAorc291cF9zZXNz
aW9uX3ByZWZldGNoX2RucyAoU291cFNlc3Npb24gKnNlc3Npb24sIGNvbnN0IGNoYXIgKmhvc3Ru
YW1lLAorCQkJICAgR0NhbmNlbGxhYmxlICpjYW5jZWxsYWJsZSwKKwkJCSAgIFNvdXBBZGRyZXNz
Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKwlTb3VwU2Vzc2lvblBy
aXZhdGUgKnByaXY7CisJU291cFNlc3Npb25Ib3N0ICpob3N0OworCVNvdXBBZGRyZXNzICphZGRy
OworCVNvdXBVUkkgKnVyaTsKKworCWdfcmV0dXJuX2lmX2ZhaWwgKFNPVVBfSVNfU0VTU0lPTiAo
c2Vzc2lvbikpOworCWdfcmV0dXJuX2lmX2ZhaWwgKGhvc3RuYW1lICE9IE5VTEwpOworCiAJcHJp
diA9IFNPVVBfU0VTU0lPTl9HRVRfUFJJVkFURSAoc2Vzc2lvbik7CiAKKwl1cmkgPSBzb3VwX3Vy
aV9uZXcgKE5VTEwpOworCXNvdXBfdXJpX3NldF9zY2hlbWUgKHVyaSwgU09VUF9VUklfU0NIRU1F
X0hUVFApOworCXNvdXBfdXJpX3NldF9ob3N0ICh1cmksIGhvc3RuYW1lKTsKKwlzb3VwX3VyaV9z
ZXRfcGF0aCAodXJpLCAiIik7CisKKwlpZiAoIVNPVVBfVVJJX0lTX1ZBTElEKHVyaSkpIHsKKwkJ
U291cFNlc3Npb25SZXNvbHZlQXN5bmNEYXRhICpyZXNfZGF0YTsKKworCQlzb3VwX3VyaV9mcmVl
ICh1cmkpOworCQlpZiAoIWNhbGxiYWNrKQorCQkJcmV0dXJuOworCisJCXJlc19kYXRhID0gZ19z
bGljZV9uZXcwIChTb3VwU2Vzc2lvblJlc29sdmVBc3luY0RhdGEpOworCQlyZXNfZGF0YS0+Y2Fs
bGJhY2sgPSBjYWxsYmFjazsKKwkJcmVzX2RhdGEtPmNhbGxiYWNrX2RhdGEgPSB1c2VyX2RhdGE7
CisKKwkJc291cF9hZGRfY29tcGxldGlvbiAoc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0
IChzZXNzaW9uKSwKKwkJCQkgICAgIGlkbGVfY29tcGxldGVfcmVzb2x2ZSwgcmVzX2RhdGEpOwor
CQlyZXR1cm47CisJfQorCiAJZ19tdXRleF9sb2NrICgmcHJpdi0+aG9zdF9sb2NrKTsKIAlob3N0
ID0gZ2V0X2hvc3RfZm9yX3VyaSAoc2Vzc2lvbiwgdXJpKTsKIAlhZGRyID0gZ19vYmplY3RfcmVm
IChob3N0LT5hZGRyKTsKQEAgLTIzODUsNyArMjQ1OSw4IEBAIHNvdXBfc2Vzc2lvbl9wcmVwYXJl
X2Zvcl91cmkgKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBTb3VwVVJJICp1cmkpCiAKIAlzb3VwX2Fk
ZHJlc3NfcmVzb2x2ZV9hc3luYyAoYWRkciwKIAkJCQkgICAgc291cF9zZXNzaW9uX2dldF9hc3lu
Y19jb250ZXh0IChzZXNzaW9uKSwKLQkJCQkgICAgTlVMTCwgTlVMTCwgTlVMTCk7CisJCQkJICAg
IGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlcl9kYXRhKTsKKwlzb3VwX3VyaV9mcmVlICh1cmkp
OwogCWdfb2JqZWN0X3VucmVmIChhZGRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvbGlic291cC9zb3Vw
LXNlc3Npb24uaCBiL2xpYnNvdXAvc291cC1zZXNzaW9uLmgKaW5kZXggZGQwOTU5OS4uOTQ1MTBh
OSAxMDA2NDQKLS0tIGEvbGlic291cC9zb3VwLXNlc3Npb24uaAorKysgYi9saWJzb3VwL3NvdXAt
c2Vzc2lvbi5oCkBAIC02LDYgKzYsNyBAQAogI2lmbmRlZiBTT1VQX1NFU1NJT05fSAogI2RlZmlu
ZSBTT1VQX1NFU1NJT05fSCAxCiAKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtYWRkcmVzcy5oPgog
I2luY2x1ZGUgPGxpYnNvdXAvc291cC10eXBlcy5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC1t
ZXNzYWdlLmg+CiAKQEAgLTEwNSw2ICsxMDYsMTIgQEAgdm9pZCAgICAgICAgICAgIHNvdXBfc2Vz
c2lvbl9hYm9ydCAgICAgICAgICAgIChTb3VwU2Vzc2lvbiAgICAgICAgICAgKnNlc3Npb24pOwog
dm9pZCAgICAgICAgICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91cmkgIChTb3VwU2Vzc2lv
biAgICAgICAgICAgKnNlc3Npb24sCiAJCQkJCSAgICAgICBTb3VwVVJJICAgICAgICAgICAgICAg
KnVyaSk7CiAKK3ZvaWQgICAgICAgICAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zICAgICAo
U291cFNlc3Npb24gICAgICAgICAgICpzZXNzaW9uLAorCQkJCQkgICAgICAgY29uc3QgY2hhciAg
ICAgICAgICAgICpob3N0bmFtZSwKKwkJCQkJICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAq
Y2FuY2VsbGFibGUsCisJCQkJCSAgICAgICBTb3VwQWRkcmVzc0NhbGxiYWNrICAgIGNhbGxiYWNr
LAorCQkJCQkgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCiBnYm9v
bGVhbiAgICAgICAgc291cF9zZXNzaW9uX3dvdWxkX3JlZGlyZWN0ICAgKFNvdXBTZXNzaW9uICAg
ICAgICAgICAqc2Vzc2lvbiwKIAkJCQkJICAgICAgIFNvdXBNZXNzYWdlICAgICAgICAgICAqbXNn
KTsKIGdib29sZWFuICAgICAgICBzb3VwX3Nlc3Npb25fcmVkaXJlY3RfbWVzc2FnZSAoU291cFNl
c3Npb24gICAgICAgICAgICpzZXNzaW9uLAotLSAKMS43LjkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132013</attachid>
            <date>2012-03-15 03:46:42 -0700</date>
            <delta_ts>2012-03-15 06:07:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Added-generic-DNSResolveQueue.-Subclass-it-in-soup-a.patch</filename>
            <type>text/plain</type>
            <size>17900</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSBjZWU1ZTNiOTQ0NmE3NDJlOGY0MTA1YTdkY2QxNzI2YmI2YTZlYTAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFR1ZSwgMTMgTWFyIDIwMTIgMjE6MDk6NDAgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBBZGRlZCBnZW5lcmljIEROU1Jlc29sdmVRdWV1ZS4gU3ViY2xhc3MgaXQgaW4gc291cCBhbmQg
Q0ZORVQKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA0MSArKysrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaCAg
ICAgICAgICAgIHwgICA4MyArKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcCAgfCAgMTg4ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0KIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCB8ICAgMzcgKysrKy0K
IDQgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzdlOTg1Mi4uNWI1YmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTAzLTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgor
CisgICAgICAgIEROUyBwcmVmZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNlbGYgaW4g
dGhlIGZvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxNjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgZ2VuZXJpYyBETlNSZXNvbHZlUXVldWUgY2xhc3MgdG8gdGhyb3R0bGUgRE5TCisgICAg
ICAgIHByZWZldGNoZXMuIEl0J3MgYW4gYWJzdHJhY3QgcmVmYWN0b3Jpbmcgb2YgQ0ZORVQncwor
ICAgICAgICBETlNSZXNvbHZlUXVldWUuIEltcGxlbWVudGVkIHN1YmNsYXNzZXMgZm9yIHNvdXAg
YW5kIENGTkVUCisgICAgICAgIGJhY2tlbmRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyByZXF1
aXJlZCBhcyB3ZSdyZSBqdXN0IHJlZmFjdG9yaW5nIGV4aXN0aW5nIGNvZGUgdG8KKyAgICAgICAg
YmUgdXNlZCBieSB0d28gZGlmZmVyZW50IHBvcnRzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9ETlMuaDoKKyAgICAgICAgKEROU1Jlc29sdmVRdWV1ZSk6IGFic3RyYWN0IGNsYXNzIHRo
YXQgaW1wbGVtZW50cyBETlMgcHJlZmV0Y2gKKyAgICAgICAgdGhyb3R0bGluZyB1c2luZyBhIHRl
bXBsYXRlIHBhdHRlcm4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmFkZCk6
IGFkZHMgYSBuZXcgaG9zdCB0byBiZSBwcmVmZXRjaGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlOjpmaXJlZCk6IGJ5IHVzaW5nIGEgZGVsYXkgd2UgY29hbGVzY2UKKyAg
ICAgICAgc2V2ZXJhbCBwcmVmZXRjaCByZXF1ZXN0cyBhbmQgdHJ5IHRvIHJlc29sdmUgdGhlbSBh
bGwgaGVyZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoRE5TUmVzb2x2ZVF1ZXVlQ0YpOgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVDRjo6cHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpjbGllbnRDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRjo6cmVzb2x2ZSk6IENGTkVUIEROUyByZXNv
bHV0aW9uCisgICAgICAgIHNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRj
aEROUyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAg
ICAgICAoRE5TUmVzb2x2ZVF1ZXVlU291cCk6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZl
UXVldWVTb3VwOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6IGxpYnNvdXAgRE5TIHJlc29sdXRpb24K
KyAgICAgICAgc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJlZmV0Y2hETlMpOgorCiAyMDEyLTAzLTEzICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIEVuYWJsZSBhbmltVmFsIHN1cHBvcnQgZm9y
IFNWR0xlbmd0aExpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IGM2
Yjc0OGQuLjYyZmI1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAt
MSw1ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyOCw5MSBAQAogI2lmbmRlZiBE
TlNfaAogI2RlZmluZSBETlNfaAogCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEROU1Jlc29sdmVR
dWV1ZSA6IHB1YmxpYyBUaW1lckJhc2UgeworCitwcml2YXRlOgorICAgIC8vIFdoZW4gcmVzb2x2
ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVk
aWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBi
eSBob3ZlcmluZykuCisgICAgLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBj
b2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCBDRkhvc3Qu
CisgICAgc3RhdGljIGNvbnN0IGludCBuYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKKwor
ICAgIC8vIENvYWxlc2NlIHByZWZldGNoIHJlcXVlc3RzIGZvciB0aGlzIGxvbmcgYmVmb3JlIHNl
bmRpbmcgdGhlbSBvdXQuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBjb2FsZXNjZURlbGF5SW5T
ZWNvbmRzID0gMS4wOworCisgICAgLy8gU2VuZGluZyBtYW55IEROUyByZXF1ZXN0cyBhdCBvbmNl
IGNhbiBvdmVyd2hlbG0gc29tZSBnYXRld2F5cy4gQ0ZIb3N0IGRvZXNuJ3QgY3VycmVudGx5IHRo
cm90dGxlIGZvciB1cywgc2VlIDxyZGFyOi8vODEwNTU1MD4uCisgICAgc3RhdGljIGNvbnN0IGlu
dCBtYXhTaW11bHRhbmVvdXNSZXF1ZXN0cyA9IDg7CisKKyAgICAvLyBGb3IgYSBwYWdlIGhhcyBs
aW5rcyB0byBtYW55IG91dHNpZGUgc2l0ZXMsIGl0IGlzIGxpa2VseSB0aGF0IHRoZSBzeXN0ZW0g
RE5TIHJlc29sdmVyIHdvbid0IGJlIGFibGUgdG8gY2FjaGUgdGhlbSBhbGwgYW55d2F5LCBhbmQg
d2UgZG9uJ3Qgd2FudAorICAgIC8vIHRvIG5lZ2F0aXZlbHkgYWZmZWN0IG90aGVyIGFwcGxpY2F0
aW9ucycgcGVyZm9ybWFuY2UgYnkgcHVzaGluZyB0aGVpciBjYWNoZWQgZW50cmllcyBvdXQuCisg
ICAgLy8gSWYgd2UgZW5kIHVwIHdpdGggbG90cyBvZiBuYW1lcyB0byBwcmVmZXRjaCwgc29tZSB3
aWxsIGJlIGRyb3BwZWQuCisgICAgc3RhdGljIGNvbnN0IGludCBtYXhSZXF1ZXN0c1RvUXVldWUg
PSA2NDsKKworICAgIC8vIElmIHRoZXJlIHdlcmUgcXVldWVkIG5hbWVzIHRoYXQgY291bGRuJ3Qg
YmUgc2VudCBzaW11bHRhbmVvdXNseSwgY2hlY2sgdGhlIHN0YXRlIG9mIHJlc29sdmVycyBhZnRl
ciB0aGlzIGRlbGF5LgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgcmV0cnlSZXNvbHZpbmdJblNl
Y29uZHMgPSAwLjE7CisKK3B1YmxpYzoKKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQorICAgIHsKKyAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBuYW1lcyBxdWV1ZWQsIGFuZCBm
ZXcgZW5vdWdoIGFyZSBpbiBmbGlnaHQsIHJlc29sdmUgaW1tZWRpYXRlbHkgKHRoZSBtb3VzZSBt
YXkgYmUgb3ZlciBhIGxpbmspLgorICAgICAgaWYgKCFtX25hbWVzLnNpemUoKSkgeworICAgICAg
ICBpZiAocHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpCisgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmIChhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCkg
PD0gbmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSkgeworICAgICAgICAgIHJlc29sdmUoaG9zdG5h
bWUpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdG9taWNEZWNyZW1l
bnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgICB9CisKKyAgICAgIC8vIEl0J3MgYmV0dGVy
IHRvIG5vdCBwcmVmZXRjaCBzb21lIG5hbWVzIHRoYW4gdG8gY2xvZyB0aGUgcXVldWUuCisgICAg
ICAvLyBEcm9wcGluZyB0aGUgbmV3ZXN0IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xlIHBhZ2Us
IHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgYmVsb3cgb2xkZXN0IG9uZXMuCisgICAgICBpZiAobV9u
YW1lcy5zaXplKCkgPCBtYXhSZXF1ZXN0c1RvUXVldWUpIHsKKyAgICAgICAgbV9uYW1lcy5hZGQo
aG9zdG5hbWUpOworICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgICAgc3RhcnRPbmVT
aG90KGNvYWxlc2NlRGVsYXlJblNlY29uZHMpOworICAgICAgfQorICAgIH0KKworICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKKyAgICB7CisgICAgICBhdG9taWNEZWNyZW1lbnQoJm1f
cmVxdWVzdHNJbkZsaWdodCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBw
cm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlc29sdmUoY29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdm9pZCBmaXJlZCgpCisgICAgewor
ICAgICAgaWYgKHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpKSB7CisgICAgICAg
IG1fbmFtZXMuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBpbnQg
cmVxdWVzdHNBbGxvd2VkID0gbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgLSBtX3JlcXVlc3RzSW5G
bGlnaHQ7CisKKyAgICAgIGZvciAoOyAhbV9uYW1lcy5pc0VtcHR5KCkgJiYgcmVxdWVzdHNBbGxv
d2VkID4gMDsgLS1yZXF1ZXN0c0FsbG93ZWQpIHsKKyAgICAgICAgYXRvbWljSW5jcmVtZW50KCZt
X3JlcXVlc3RzSW5GbGlnaHQpOworICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGN1
cnJlbnROYW1lID0gbV9uYW1lcy5iZWdpbigpOworICAgICAgICByZXNvbHZlKCpjdXJyZW50TmFt
ZSk7CisgICAgICAgIG1fbmFtZXMucmVtb3ZlKGN1cnJlbnROYW1lKTsKKyAgICAgIH0KKworICAg
ICAgaWYgKCFtX25hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RhcnRPbmVTaG90KHJldHJ5UmVz
b2x2aW5nSW5TZWNvbmRzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsK
KyAgICBpbnQgbV9yZXF1ZXN0c0luRmxpZ2h0OworfTsKKwogdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCBhNmE4ZDkyLi42OTI5ZDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtNDcsMTY0
ICs0Nyw4MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCi0vLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlk
ZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IENGSG9zdC4KLWNvbnN0IGlu
dCBuYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKLQotLy8gQ29hbGVzY2UgcHJlZmV0Y2gg
cmVxdWVzdHMgZm9yIHRoaXMgbG9uZyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KLWNvbnN0IGRv
dWJsZSBjb2FsZXNjZURlbGF5SW5TZWNvbmRzID0gMS4wOwotCi0vLyBTZW5kaW5nIG1hbnkgRE5T
IHJlcXVlc3RzIGF0IG9uY2UgY2FuIG92ZXJ3aGVsbSBzb21lIGdhdGV3YXlzLiBDRkhvc3QgZG9l
c24ndCBjdXJyZW50bHkgdGhyb3R0bGUgZm9yIHVzLCBzZWUgPHJkYXI6Ly84MTA1NTUwPi4KLWNv
bnN0IGludCBtYXhTaW11bHRhbmVvdXNSZXF1ZXN0cyA9IDg7Ci0KLS8vIEZvciBhIHBhZ2UgaGFz
IGxpbmtzIHRvIG1hbnkgb3V0c2lkZSBzaXRlcywgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIHN5c3Rl
bSBETlMgcmVzb2x2ZXIgd29uJ3QgYmUgYWJsZSB0byBjYWNoZSB0aGVtIGFsbCBhbnl3YXksIGFu
ZCB3ZSBkb24ndCB3YW50Ci0vLyB0byBuZWdhdGl2ZWx5IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlv
bnMnIHBlcmZvcm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIgY2FjaGVkIGVudHJpZXMgb3V0LgotLy8g
SWYgd2UgZW5kIHVwIHdpdGggbG90cyBvZiBuYW1lcyB0byBwcmVmZXRjaCwgc29tZSB3aWxsIGJl
IGRyb3BwZWQuCi1jb25zdCBpbnQgbWF4UmVxdWVzdHNUb1F1ZXVlID0gNjQ7Ci0KLS8vIElmIHRo
ZXJlIHdlcmUgcXVldWVkIG5hbWVzIHRoYXQgY291bGRuJ3QgYmUgc2VudCBzaW11bHRhbmVvdXNs
eSwgY2hlY2sgdGhlIHN0YXRlIG9mIHJlc29sdmVycyBhZnRlciB0aGlzIGRlbGF5LgotY29uc3Qg
ZG91YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4xOworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ0YgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRE5T
UmVzb2x2ZVF1ZXVlQ0YmIHNoYXJlZCgpCisgICAgeworICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEROU1Jlc29sdmVRdWV1ZUNGLCBxdWV1ZSwgKCkpOworICAgICAgICByZXR1cm4gcXVldWU7
CisgICAgfQogCi1zdGF0aWMgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMo
KQotewotICAgIC8vIERvbid0IGRvIEROUyBwcmVmZXRjaCBpZiBwcm94aWVzIGFyZSBpbnZvbHZl
ZC4gRm9yIG1hbnkgcHJveHkgdHlwZXMsIHRoZSB1c2VyIGFnZW50IGlzIG5ldmVyIGV4cG9zZWQK
LSAgICAvLyB0byB0aGUgSVAgYWRkcmVzcyBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbi4gUXVlcnlp
bmcgYW4gaW50ZXJuYWwgRE5TIHNlcnZlciBtYXkgbm90IGhlbHAgcGVyZm9ybWFuY2UsCi0gICAg
Ly8gYXMgaXQgZG9lc24ndCBuZWNlc3NhcmlseSBsb29rIHVwIHRoZSBhY3R1YWwgZXh0ZXJuYWwg
SVAuIEFsc28sIGlmIEROUyByZXR1cm5zIGEgZmFrZSBpbnRlcm5hbCBhZGRyZXNzLAotICAgIC8v
IGxvY2FsIGNhY2hlcyBtYXkga2VlcCBpdCBldmVuIGFmdGVyIHJlLWNvbm5lY3RpbmcgdG8gYW5v
dGhlciBuZXR3b3JrLgorcHJpdmF0ZToKKyAgICBib29sIHByb3h5SXNFbmFibGVkSW5TeXN0ZW1Q
cmVmZXJlbmNlcygpCisgICAgeworICAgICAgICAvLyBEb24ndCBkbyBETlMgcHJlZmV0Y2ggaWYg
cHJveGllcyBhcmUgaW52b2x2ZWQuIEZvciBtYW55IHByb3h5IHR5cGVzLCB0aGUgdXNlciBhZ2Vu
dCBpcyBuZXZlciBleHBvc2VkCisgICAgICAgIC8vIHRvIHRoZSBJUCBhZGRyZXNzIGR1cmluZyBu
b3JtYWwgb3BlcmF0aW9uLiBRdWVyeWluZyBhbiBpbnRlcm5hbCBETlMgc2VydmVyIG1heSBub3Qg
aGVscCBwZXJmb3JtYW5jZSwKKyAgICAgICAgLy8gYXMgaXQgZG9lc24ndCBuZWNlc3NhcmlseSBs
b29rIHVwIHRoZSBhY3R1YWwgZXh0ZXJuYWwgSVAuIEFsc28sIGlmIEROUyByZXR1cm5zIGEgZmFr
ZSBpbnRlcm5hbCBhZGRyZXNzLAorICAgICAgICAvLyBsb2NhbCBjYWNoZXMgbWF5IGtlZXAgaXQg
ZXZlbiBhZnRlciByZS1jb25uZWN0aW5nIHRvIGFub3RoZXIgbmV0d29yay4KIAogI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJveHlTZXR0aW5ncyhBZG9wdENGLCBDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygp
KTsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyhBZG9w
dENGLCBDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKICNlbHNlCi0gICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyhBZG9wdENGLCBTQ0R5bmFtaWNT
dG9yZUNvcHlQcm94aWVzKDApKTsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJveHlTZXR0aW5ncyhBZG9wdENGLCBTQ0R5bmFtaWNTdG9yZUNvcHlQcm94aWVzKDApKTsKICNl
bmRpZgotICAgIGlmICghcHJveHlTZXR0aW5ncykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgc3RhdGljIENGVVJMUmVmIGh0dHBDRlVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0
cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgc3RhdGljIENGVVJMUmVmIGh0
dHBzQ0ZVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eShBZG9wdENGLCBDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwsIHByb3h5U2V0
dGluZ3MuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5
KEFkb3B0Q0YsIENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwsIHByb3h5U2V0
dGluZ3MuZ2V0KCkpKTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0
Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50
ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgaWYgKGh0dHBQ
cm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2Fz
dDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXku
Z2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAg
IGh0dHBQcm94eUNvdW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZF
cXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5
VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAw
OwotCi0gICAgcmV0dXJuIGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKLX0KLQot
Y2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2hhcmVkKCk7Ci0gICAgdm9pZCBhZGQoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLQotcHJpdmF0ZToKLSAg
ICBETlNSZXNvbHZlUXVldWUoKTsKLQotICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsK
LSAgICBpbnQgbV9yZXF1ZXN0c0luRmxpZ2h0OwotfTsKLQotRE5TUmVzb2x2ZVF1ZXVlOjpETlNS
ZXNvbHZlUXVldWUoKQotICAgIDogbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi17Ci19Ci0KLUROU1Jl
c29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoRE5TUmVzb2x2ZVF1ZXVlLCBuYW1lcywgKCkpOwotICAgIHJldHVybiBuYW1lczsK
LX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmFkZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0g
ICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91Z2ggYXJlIGlu
IGZsaWdodCwgcmVzb2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBvdmVyIGEgbGlu
aykuCi0gICAgaWYgKCFtX25hbWVzLnNpemUoKSkgewotICAgICAgICBpZiAocHJveHlJc0VuYWJs
ZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICghcHJveHlTZXR0aW5ncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBp
ZiAoYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9IG5hbWVzVG9SZXNvbHZl
SW1tZWRpYXRlbHkpIHsKLSAgICAgICAgICAgIHJlc29sdmUobmFtZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5G
bGlnaHQpOwotICAgIH0KKyAgICAgICAgc3RhdGljIENGVVJMUmVmIGh0dHBDRlVSTCA9IEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Cisg
ICAgICAgIHN0YXRpYyBDRlVSTFJlZiBodHRwc0NGVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CiAKLSAgICAvLyBJdCdzIGJl
dHRlciB0byBub3QgcHJlZmV0Y2ggc29tZSBuYW1lcyB0aGFuIHRvIGNsb2cgdGhlIHF1ZXVlLgot
ICAgIC8vIERyb3BwaW5nIHRoZSBuZXdlc3QgbmFtZXMsIGJlY2F1c2Ugb24gYSBzaW5nbGUgcGFn
ZSwgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBiZWxvdyBvbGRlc3Qgb25lcy4KLSAgICBpZiAobV9u
YW1lcy5zaXplKCkgPCBtYXhSZXF1ZXN0c1RvUXVldWUpIHsKLSAgICAgICAgbV9uYW1lcy5hZGQo
bmFtZSk7Ci0gICAgICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHN0YXJ0T25lU2hv
dChjb2FsZXNjZURlbGF5SW5TZWNvbmRzKTsKLSAgICB9Ci19CisgICAgICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBodHRwUHJveHlBcnJheShBZG9wdENGLCBDRk5ldHdvcmtDb3B5UHJveGllc0Zv
clVSTChodHRwQ0ZVUkwsIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheShBZG9wdENGLCBDRk5ldHdvcmtDb3B5UHJveGll
c0ZvclVSTChodHRwc0NGVVJMLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CiAKLXZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKQotewotICAgIGF0b21pY0RlY3JlbWVu
dCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKLX0KKyAgICAgICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7CisgICAgICAgIENGSW5k
ZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQo
KSk7CisgICAgICAgIGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOworICAgICAgICBp
ZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShz
dGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQ
cm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUp
KQorICAgICAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKIAotdm9pZCBETlNSZXNvbHZlUXVl
dWU6OmZpcmVkKCkKLXsKLSAgICBpZiAocHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2Vz
KCkpIHsKLSAgICAgICAgbV9uYW1lcy5jbGVhcigpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7CiAgICAgfQogCi0gICAg
aW50IHJlcXVlc3RzQWxsb3dlZCA9IG1heFNpbXVsdGFuZW91c1JlcXVlc3RzIC0gbV9yZXF1ZXN0
c0luRmxpZ2h0OwotCi0gICAgZm9yICg7ICFtX25hbWVzLmlzRW1wdHkoKSAmJiByZXF1ZXN0c0Fs
bG93ZWQgPiAwOyAtLXJlcXVlc3RzQWxsb3dlZCkgewotICAgICAgICBhdG9taWNJbmNyZW1lbnQo
Jm1fcmVxdWVzdHNJbkZsaWdodCk7Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Ig
Y3VycmVudE5hbWUgPSBtX25hbWVzLmJlZ2luKCk7Ci0gICAgICAgIHJlc29sdmUoKmN1cnJlbnRO
YW1lKTsKLSAgICAgICAgbV9uYW1lcy5yZW1vdmUoY3VycmVudE5hbWUpOworICAgIHN0YXRpYyB2
b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29u
c3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQorICAgIHsKKyAgICAgICAgRE5TUmVzb2x2ZVF1ZXVl
Q0Y6OnNoYXJlZCgpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwg
c2hhcmVkKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFz
IGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCisgICAgICAgIENGUmVsZWFzZSh0aGVI
b3N0KTsKICAgICB9CiAKLSAgICBpZiAoIW1fbmFtZXMuaXNFbXB0eSgpKQotICAgICAgICBzdGFy
dE9uZVNob3QocmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOwotfQotCi1zdGF0aWMgdm9pZCBjbGll
bnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3Ry
ZWFtRXJyb3IqLCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNoYXJlZCgpLmRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwgc2hhcmVkKCkgZnJvbSBhIHNl
Y29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0
aWFsaXplZCBieSBub3cuCi0gICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOwotfQorICAgIHZvaWQgcmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotdm9pZCBETlNSZXNvbHZlUXVldWU6OnJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5nZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAg
ICAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCi0gICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENG
SG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lQ0YuZ2V0KCkpKTsKKyAgICAgICAgaWYgKCFo
b3N0KSB7CisgICAgICAgICAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQ0ZIb3N0Q2xpZW50Q29u
dGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07CisgICAgICAgIENGSG9zdFJlZiBsZWFr
ZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJv
bSBjbGllbnRDYWxsYmFjaygpLgorICAgICAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENs
aWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOworICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9z
dFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOworICAgICAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxl
YWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNl
bHNlCi0gICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZS
dW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KLSAg
ICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEg
c2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxs
YmFjayB3aWxsIGJlIGNhbGxlZC4KKyAgICAgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChs
ZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAjZW5k
aWYKLSAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRy
ZXNzZXMsIDApOwotfQorICAgICAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhv
c3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOworICAgIH0KK307CiAKIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBETlNSZXNv
bHZlUXVldWU6OnNoYXJlZCgpLmFkZChob3N0bmFtZSk7CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnNoYXJlZCgpLmFkZChob3N0bmFtZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAppbmRleCAxZWNkYjMyLi45YTQzM2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
CkBAIC0yOSwyMSArMjksNDYgQEAKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBE
TlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CisKK3B1YmxpYzoK
KyAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlU291cCYgc2hhcmVkKCkKKyAgICB7CisgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEROU1Jlc29sdmVRdWV1ZVNvdXAsIHF1ZXVlLCAoKSk7CisgICAg
ICByZXR1cm4gcXVldWU7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIFRoZXJlIGlzIG5vIGN1
cnJlbnQgcmVsaWFibGUgd2F5IHRvIGtub3cgaWYgd2UncmUgYmVoaW5kIGEKKyAgICAvLyBwcm94
eSBhdCB0aGlzIGxldmVsLiBXZSdsbCBoYXZlIHRvIGltcGxlbWVudCBpdCBpbgorICAgIC8vIFNv
dXBTZXNzaW9uL1NvdXBQcm94eVVSSVJlc29sdmVyL0dQcm94eVJlc29sdmVyCisgICAgYm9vbCBw
cm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyogc291cEFkZHJlc3Ms
IGd1aW50IHN0YXR1cywgdm9pZCogdXNlckRhdGEpCisgICAgeworICAgICAgICBETlNSZXNvbHZl
UXVldWVTb3VwOjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2Ru
cyhSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEo
KSwgMCwgcmVzb2x2ZWRDYWxsYmFjaywgMCk7CisgICAgfQorfTsKKwogdm9pZCBwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIHVyaSA9ICJodHRwOi8vIiArIGhvc3RuYW1lOwotICAgIEdPd25QdHI8U291cFVSST4gc291
cFVSSShzb3VwX3VyaV9uZXcodXJpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBpZiAoIXNvdXBVUkkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91cmkoUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCkpOworICAgIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnNoYXJlZCgpLmFkZChob3N0bmFtZSk7CiB9CiAKIH0KLS0gCjEuNy45
Cgo=
</data>
<flag name="commit-queue"
          id="135526"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132029</attachid>
            <date>2012-03-15 06:07:51 -0700</date>
            <delta_ts>2012-03-19 02:34:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Added-generic-DNSResolveQueue.-Subclass-it-in-soup-a.patch</filename>
            <type>text/plain</type>
            <size>18563</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSAwMGY2NDk3Yjk2ZjI2YjY0ODY3ZGM1ZDM1NjE5OWU2MGI5MDE2OGM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFR1ZSwgMTMgTWFyIDIwMTIgMjE6MDk6NDAgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBBZGRlZCBnZW5lcmljIEROU1Jlc29sdmVRdWV1ZS4gU3ViY2xhc3MgaXQgaW4gc291cCBhbmQg
Q0ZORVQKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA0MSArKysrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaCAg
ICAgICAgICAgIHwgICA4MyArKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TQ0ZOZXQuY3BwICB8ICAxOTUgKysrKysrKy0tLS0tLS0tLS0tLS0tLQogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIHwgICA0NCArKysrKy0K
IDQgZmlsZXMgY2hhbmdlZCwgMjIyIGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzdlOTg1Mi4uNWI1YmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTAzLTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgor
CisgICAgICAgIEROUyBwcmVmZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNlbGYgaW4g
dGhlIGZvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxNjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgZ2VuZXJpYyBETlNSZXNvbHZlUXVldWUgY2xhc3MgdG8gdGhyb3R0bGUgRE5TCisgICAg
ICAgIHByZWZldGNoZXMuIEl0J3MgYW4gYWJzdHJhY3QgcmVmYWN0b3Jpbmcgb2YgQ0ZORVQncwor
ICAgICAgICBETlNSZXNvbHZlUXVldWUuIEltcGxlbWVudGVkIHN1YmNsYXNzZXMgZm9yIHNvdXAg
YW5kIENGTkVUCisgICAgICAgIGJhY2tlbmRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyByZXF1
aXJlZCBhcyB3ZSdyZSBqdXN0IHJlZmFjdG9yaW5nIGV4aXN0aW5nIGNvZGUgdG8KKyAgICAgICAg
YmUgdXNlZCBieSB0d28gZGlmZmVyZW50IHBvcnRzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9ETlMuaDoKKyAgICAgICAgKEROU1Jlc29sdmVRdWV1ZSk6IGFic3RyYWN0IGNsYXNzIHRo
YXQgaW1wbGVtZW50cyBETlMgcHJlZmV0Y2gKKyAgICAgICAgdGhyb3R0bGluZyB1c2luZyBhIHRl
bXBsYXRlIHBhdHRlcm4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmFkZCk6
IGFkZHMgYSBuZXcgaG9zdCB0byBiZSBwcmVmZXRjaGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlOjpmaXJlZCk6IGJ5IHVzaW5nIGEgZGVsYXkgd2UgY29hbGVzY2UKKyAg
ICAgICAgc2V2ZXJhbCBwcmVmZXRjaCByZXF1ZXN0cyBhbmQgdHJ5IHRvIHJlc29sdmUgdGhlbSBh
bGwgaGVyZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoRE5TUmVzb2x2ZVF1ZXVlQ0YpOgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVDRjo6cHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpjbGllbnRDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRjo6cmVzb2x2ZSk6IENGTkVUIEROUyByZXNv
bHV0aW9uCisgICAgICAgIHNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRj
aEROUyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAg
ICAgICAoRE5TUmVzb2x2ZVF1ZXVlU291cCk6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZl
UXVldWVTb3VwOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6IGxpYnNvdXAgRE5TIHJlc29sdXRpb24K
KyAgICAgICAgc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJlZmV0Y2hETlMpOgorCiAyMDEyLTAzLTEzICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIEVuYWJsZSBhbmltVmFsIHN1cHBvcnQgZm9y
IFNWR0xlbmd0aExpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IGM2
Yjc0OGQuLjI3MGI0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAt
MSw1ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyOCw5MSBAQAogI2lmbmRlZiBE
TlNfaAogI2RlZmluZSBETlNfaAogCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEROU1Jlc29sdmVR
dWV1ZSA6IHB1YmxpYyBUaW1lckJhc2UgeworCitwcml2YXRlOgorICAgIC8vIFdoZW4gcmVzb2x2
ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVk
aWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBi
eSBob3ZlcmluZykuCisgICAgLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBj
b2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCB0aGUgRE5T
IHJlc29sdmVyLgorICAgIHN0YXRpYyBjb25zdCBpbnQgbmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVs
eTsKKworICAgIC8vIENvYWxlc2NlIHByZWZldGNoIHJlcXVlc3RzIGZvciB0aGlzIGxvbmcgYmVm
b3JlIHNlbmRpbmcgdGhlbSBvdXQuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBjb2FsZXNjZURl
bGF5SW5TZWNvbmRzOworCisgICAgLy8gU2VuZGluZyBtYW55IEROUyByZXF1ZXN0cyBhdCBvbmNl
IGNhbiBvdmVyd2hlbG0gc29tZSBnYXRld2F5cy4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heFNp
bXVsdGFuZW91c1JlcXVlc3RzOworCisgICAgLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFu
eSBvdXRzaWRlIHNpdGVzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyByZXNvbHZl
ciB3b24ndCBiZSBhYmxlIHRvIGNhY2hlIHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRvbid0IHdh
bnQKKyAgICAvLyB0byBuZWdhdGl2ZWx5IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMnIHBlcmZv
cm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIgY2FjaGVkIGVudHJpZXMgb3V0LgorICAgIC8vIElmIHdl
IGVuZCB1cCB3aXRoIGxvdHMgb2YgbmFtZXMgdG8gcHJlZmV0Y2gsIHNvbWUgd2lsbCBiZSBkcm9w
cGVkLgorICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4UmVxdWVzdHNUb1F1ZXVlOworCisgICAgLy8g
SWYgdGhlcmUgd2VyZSBxdWV1ZWQgbmFtZXMgdGhhdCBjb3VsZG4ndCBiZSBzZW50IHNpbXVsdGFu
ZW91c2x5LCBjaGVjayB0aGUgc3RhdGUgb2YgcmVzb2x2ZXJzIGFmdGVyIHRoaXMgZGVsYXkuCisg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSByZXRyeVJlc29sdmluZ0luU2Vjb25kczsKKworcHVibGlj
OgorICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCisgICAgeworICAgICAgLy8g
SWYgdGhlcmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91Z2ggYXJlIGluIGZsaWdo
dCwgcmVzb2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBvdmVyIGEgbGluaykuCisg
ICAgICBpZiAoIW1fbmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGlmIChwcm94eUlzRW5hYmxlZElu
U3lzdGVtUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGF0
b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KSA8PSBuYW1lc1RvUmVzb2x2ZUltbWVk
aWF0ZWx5KSB7CisgICAgICAgICAgcmVzb2x2ZShob3N0bmFtZSk7CisgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0
KTsKKyAgICAgIH0KKworICAgICAgLy8gSXQncyBiZXR0ZXIgdG8gbm90IHByZWZldGNoIHNvbWUg
bmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1ZS4KKyAgICAgIC8vIERyb3BwaW5nIHRoZSBuZXdl
c3QgbmFtZXMsIGJlY2F1c2Ugb24gYSBzaW5nbGUgcGFnZSwgdGhlc2UgYXJlIGxpa2VseSB0byBi
ZSBiZWxvdyBvbGRlc3Qgb25lcy4KKyAgICAgIGlmIChtX25hbWVzLnNpemUoKSA8IG1heFJlcXVl
c3RzVG9RdWV1ZSkgeworICAgICAgICBtX25hbWVzLmFkZChob3N0bmFtZSk7CisgICAgICAgIGlm
ICghaXNBY3RpdmUoKSkKKyAgICAgICAgICBzdGFydE9uZVNob3QoY29hbGVzY2VEZWxheUluU2Vj
b25kcyk7CisgICAgICB9CisgICAgfQorCisgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KQorICAgIHsKKyAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIHByb3h5SXNFbmFibGVkSW5TeXN0ZW1Q
cmVmZXJlbmNlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcm
KSA9IDA7CisKKyAgICB2b2lkIGZpcmVkKCkKKyAgICB7CisgICAgICBpZiAocHJveHlJc0VuYWJs
ZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpIHsKKyAgICAgICAgbV9uYW1lcy5jbGVhcigpOworICAg
ICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIGludCByZXF1ZXN0c0FsbG93ZWQgPSBtYXhT
aW11bHRhbmVvdXNSZXF1ZXN0cyAtIG1fcmVxdWVzdHNJbkZsaWdodDsKKworICAgICAgZm9yICg7
ICFtX25hbWVzLmlzRW1wdHkoKSAmJiByZXF1ZXN0c0FsbG93ZWQgPiAwOyAtLXJlcXVlc3RzQWxs
b3dlZCkgeworICAgICAgICBhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Cisg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgY3VycmVudE5hbWUgPSBtX25hbWVzLmJl
Z2luKCk7CisgICAgICAgIHJlc29sdmUoKmN1cnJlbnROYW1lKTsKKyAgICAgICAgbV9uYW1lcy5y
ZW1vdmUoY3VycmVudE5hbWUpOworICAgICAgfQorCisgICAgICBpZiAoIW1fbmFtZXMuaXNFbXB0
eSgpKQorICAgICAgICBzdGFydE9uZVNob3QocmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOworICAg
IH0KKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX25hbWVzOworICAgIGludCBtX3JlcXVlc3RzSW5G
bGlnaHQ7Cit9OworCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3Bw
CmluZGV4IGE2YThkOTIuLmJmYzlkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC00NywxNjQgKzQ3LDg5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gV2hlbiByZXNvbHZlIHF1ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFz
eW5jIHJlc29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFudCBp
ZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhvdmVyaW5nKS4KLS8vIEJ1dCBkdXJpbmcg
cGFnZSBwYXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2UgaWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2
b2lkIHN0cmVzc2luZyBvdXQgQ0ZIb3N0LgotY29uc3QgaW50IG5hbWVzVG9SZXNvbHZlSW1tZWRp
YXRlbHkgPSA0OwotCi0vLyBDb2FsZXNjZSBwcmVmZXRjaCByZXF1ZXN0cyBmb3IgdGhpcyBsb25n
IGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0LgotY29uc3QgZG91YmxlIGNvYWxlc2NlRGVsYXlJblNl
Y29uZHMgPSAxLjA7Ci0KLS8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMgYXQgb25jZSBjYW4g
b3ZlcndoZWxtIHNvbWUgZ2F0ZXdheXMuIENGSG9zdCBkb2Vzbid0IGN1cnJlbnRseSB0aHJvdHRs
ZSBmb3IgdXMsIHNlZSA8cmRhcjovLzgxMDU1NTA+LgotY29uc3QgaW50IG1heFNpbXVsdGFuZW91
c1JlcXVlc3RzID0gODsKLQotLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRl
IHNpdGVzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBi
ZSBhYmxlIHRvIGNhY2hlIHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRvbid0IHdhbnQKLS8vIHRv
IG5lZ2F0aXZlbHkgYWZmZWN0IG90aGVyIGFwcGxpY2F0aW9ucycgcGVyZm9ybWFuY2UgYnkgcHVz
aGluZyB0aGVpciBjYWNoZWQgZW50cmllcyBvdXQuCi0vLyBJZiB3ZSBlbmQgdXAgd2l0aCBsb3Rz
IG9mIG5hbWVzIHRvIHByZWZldGNoLCBzb21lIHdpbGwgYmUgZHJvcHBlZC4KLWNvbnN0IGludCBt
YXhSZXF1ZXN0c1RvUXVldWUgPSA2NDsKLQotLy8gSWYgdGhlcmUgd2VyZSBxdWV1ZWQgbmFtZXMg
dGhhdCBjb3VsZG4ndCBiZSBzZW50IHNpbXVsdGFuZW91c2x5LCBjaGVjayB0aGUgc3RhdGUgb2Yg
cmVzb2x2ZXJzIGFmdGVyIHRoaXMgZGVsYXkuCi1jb25zdCBkb3VibGUgcmV0cnlSZXNvbHZpbmdJ
blNlY29uZHMgPSAwLjE7Citjb25zdCBpbnQgRE5TUmVzb2x2ZVF1ZXVlOjpuYW1lc1RvUmVzb2x2
ZUltbWVkaWF0ZWx5ID0gNDsKK2NvbnN0IGRvdWJsZSBETlNSZXNvbHZlUXVldWU6OmNvYWxlc2Nl
RGVsYXlJblNlY29uZHMgPSAxLjA7CisvLyBDRkhvc3QgZG9lc24ndCBjdXJyZW50bHkgdGhyb3R0
bGUgZm9yIHVzLCBzZWUgPHJkYXI6Ly84MTA1NTUwPi4KK2NvbnN0IGludCBETlNSZXNvbHZlUXVl
dWU6Om1heFNpbXVsdGFuZW91c1JlcXVlc3RzID0gODsKK2NvbnN0IGludCBETlNSZXNvbHZlUXVl
dWU6Om1heFJlcXVlc3RzVG9RdWV1ZSA9IDY0OworY29uc3QgZG91YmxlIEROU1Jlc29sdmVRdWV1
ZTo6cmV0cnlSZXNvbHZpbmdJblNlY29uZHMgPSAwLjE7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1
ZUNGIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIEROU1Jl
c29sdmVRdWV1ZUNGJiBzaGFyZWQoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChETlNSZXNvbHZlUXVldWVDRiwgcXVldWUsICgpKTsKKyAgICAgICAgcmV0dXJuIHF1ZXVlOwor
ICAgIH0KIAotc3RhdGljIGJvb2wgcHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkK
LXsKLSAgICAvLyBEb24ndCBkbyBETlMgcHJlZmV0Y2ggaWYgcHJveGllcyBhcmUgaW52b2x2ZWQu
IEZvciBtYW55IHByb3h5IHR5cGVzLCB0aGUgdXNlciBhZ2VudCBpcyBuZXZlciBleHBvc2VkCi0g
ICAgLy8gdG8gdGhlIElQIGFkZHJlc3MgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uIFF1ZXJ5aW5n
IGFuIGludGVybmFsIEROUyBzZXJ2ZXIgbWF5IG5vdCBoZWxwIHBlcmZvcm1hbmNlLAotICAgIC8v
IGFzIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbG9vayB1cCB0aGUgYWN0dWFsIGV4dGVybmFsIElQ
LiBBbHNvLCBpZiBETlMgcmV0dXJucyBhIGZha2UgaW50ZXJuYWwgYWRkcmVzcywKLSAgICAvLyBs
b2NhbCBjYWNoZXMgbWF5IGtlZXAgaXQgZXZlbiBhZnRlciByZS1jb25uZWN0aW5nIHRvIGFub3Ro
ZXIgbmV0d29yay4KK3ByaXZhdGU6CisgICAgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJl
ZmVyZW5jZXMoKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgZG8gRE5TIHByZWZldGNoIGlmIHBy
b3hpZXMgYXJlIGludm9sdmVkLiBGb3IgbWFueSBwcm94eSB0eXBlcywgdGhlIHVzZXIgYWdlbnQg
aXMgbmV2ZXIgZXhwb3NlZAorICAgICAgICAvLyB0byB0aGUgSVAgYWRkcmVzcyBkdXJpbmcgbm9y
bWFsIG9wZXJhdGlvbi4gUXVlcnlpbmcgYW4gaW50ZXJuYWwgRE5TIHNlcnZlciBtYXkgbm90IGhl
bHAgcGVyZm9ybWFuY2UsCisgICAgICAgIC8vIGFzIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbG9v
ayB1cCB0aGUgYWN0dWFsIGV4dGVybmFsIElQLiBBbHNvLCBpZiBETlMgcmV0dXJucyBhIGZha2Ug
aW50ZXJuYWwgYWRkcmVzcywKKyAgICAgICAgLy8gbG9jYWwgY2FjaGVzIG1heSBrZWVwIGl0IGV2
ZW4gYWZ0ZXIgcmUtY29ubmVjdGluZyB0byBhbm90aGVyIG5ldHdvcmsuCiAKICNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBy
b3h5U2V0dGluZ3MoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7
CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MoQWRvcHRD
RiwgQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CiAjZWxzZQotICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MoQWRvcHRDRiwgU0NEeW5hbWljU3Rv
cmVDb3B5UHJveGllcygwKSk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBy
b3h5U2V0dGluZ3MoQWRvcHRDRiwgU0NEeW5hbWljU3RvcmVDb3B5UHJveGllcygwKSk7CiAjZW5k
aWYKLSAgICBpZiAoIXByb3h5U2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHN0YXRpYyBDRlVSTFJlZiBodHRwQ0ZVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6
Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIHN0YXRpYyBDRlVSTFJlZiBodHRw
c0NGVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNy
ZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXko
QWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLCBwcm94eVNldHRp
bmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheShB
ZG9wdENGLCBDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLCBwcm94eVNldHRp
bmdzLmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9
IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAgIGlmIChodHRwUHJv
eHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8
Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5Lmdl
dCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBo
dHRwUHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1
YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5
cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsK
LQotICAgIHJldHVybiBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLWNs
YXNzIEROU1Jlc29sdmVRdWV1ZSA6IHB1YmxpYyBUaW1lckJhc2UgewotcHVibGljOgotICAgIHN0
YXRpYyBETlNSZXNvbHZlUXVldWUmIHNoYXJlZCgpOwotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0KLXByaXZhdGU6Ci0gICAg
RE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KLSAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpcmVkKCk7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7Ci0g
ICAgaW50IG1fcmVxdWVzdHNJbkZsaWdodDsKLX07Ci0KLUROU1Jlc29sdmVRdWV1ZTo6RE5TUmVz
b2x2ZVF1ZXVlKCkKLSAgICA6IG1fcmVxdWVzdHNJbkZsaWdodCgwKQotewotfQotCi1ETlNSZXNv
bHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2hhcmVkKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEROU1Jlc29sdmVRdWV1ZSwgbmFtZXMsICgpKTsKLSAgICByZXR1cm4gbmFtZXM7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAg
IC8vIElmIHRoZXJlIGFyZSBubyBuYW1lcyBxdWV1ZWQsIGFuZCBmZXcgZW5vdWdoIGFyZSBpbiBm
bGlnaHQsIHJlc29sdmUgaW1tZWRpYXRlbHkgKHRoZSBtb3VzZSBtYXkgYmUgb3ZlciBhIGxpbmsp
LgotICAgIGlmICghbV9uYW1lcy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHByb3h5SXNFbmFibGVk
SW5TeXN0ZW1QcmVmZXJlbmNlcygpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
IXByb3h5U2V0dGluZ3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYg
KGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KSA8PSBuYW1lc1RvUmVzb2x2ZUlt
bWVkaWF0ZWx5KSB7Ci0gICAgICAgICAgICByZXNvbHZlKG5hbWUpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxp
Z2h0KTsKLSAgICB9CisgICAgICAgIHN0YXRpYyBDRlVSTFJlZiBodHRwQ0ZVUkwgPSBLVVJMKFBh
cnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAg
ICAgICBzdGF0aWMgQ0ZVUkxSZWYgaHR0cHNDRlVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwogCi0gICAgLy8gSXQncyBiZXR0
ZXIgdG8gbm90IHByZWZldGNoIHNvbWUgbmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1ZS4KLSAg
ICAvLyBEcm9wcGluZyB0aGUgbmV3ZXN0IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xlIHBhZ2Us
IHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgYmVsb3cgb2xkZXN0IG9uZXMuCi0gICAgaWYgKG1fbmFt
ZXMuc2l6ZSgpIDwgbWF4UmVxdWVzdHNUb1F1ZXVlKSB7Ci0gICAgICAgIG1fbmFtZXMuYWRkKG5h
bWUpOwotICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCi0gICAgICAgICAgICBzdGFydE9uZVNob3Qo
Y29hbGVzY2VEZWxheUluU2Vjb25kcyk7Ci0gICAgfQotfQorICAgICAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gaHR0cFByb3h5QXJyYXkoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JV
UkwoaHR0cENGVVJMLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVByb3hpZXNG
b3JVUkwoaHR0cHNDRlVSTCwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogCi12b2lkIEROU1Jlc29s
dmVRdWV1ZTo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKLXsKLSAgICBhdG9taWNEZWNyZW1lbnQo
Jm1fcmVxdWVzdHNJbkZsaWdodCk7Ci19CisgICAgICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOworICAgICAgICBDRkluZGV4
IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkp
OworICAgICAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFy
eUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94
eVR5cGVOb25lKSkKKyAgICAgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICAgICAgaWYg
KGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJv
eHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkK
KyAgICAgICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CiAKLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpmaXJlZCgpCi17Ci0gICAgaWYgKHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygp
KSB7Ci0gICAgICAgIG1fbmFtZXMuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OwogICAgIH0KIAotICAgIGlu
dCByZXF1ZXN0c0FsbG93ZWQgPSBtYXhTaW11bHRhbmVvdXNSZXF1ZXN0cyAtIG1fcmVxdWVzdHNJ
bkZsaWdodDsKLQotICAgIGZvciAoOyAhbV9uYW1lcy5pc0VtcHR5KCkgJiYgcmVxdWVzdHNBbGxv
d2VkID4gMDsgLS1yZXF1ZXN0c0FsbG93ZWQpIHsKLSAgICAgICAgYXRvbWljSW5jcmVtZW50KCZt
X3JlcXVlc3RzSW5GbGlnaHQpOwotICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGN1
cnJlbnROYW1lID0gbV9uYW1lcy5iZWdpbigpOwotICAgICAgICByZXNvbHZlKCpjdXJyZW50TmFt
ZSk7Ci0gICAgICAgIG1fbmFtZXMucmVtb3ZlKGN1cnJlbnROYW1lKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0
IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKKyAgICB7CisgICAgICAgIEROU1Jlc29sdmVRdWV1ZUNG
OjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNo
YXJlZCgpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBh
bHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgorICAgICAgICBDRlJlbGVhc2UodGhlSG9z
dCk7CiAgICAgfQogCi0gICAgaWYgKCFtX25hbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgc3RhcnRP
bmVTaG90KHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzKTsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50
Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVh
bUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNoYXJlZCgpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KKyAgICB2b2lkIHJlc29s
dmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gaG9zdG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9zdENyZWF0
ZVdpdGhOYW1lKDAsIGhvc3RuYW1lQ0YuZ2V0KCkpKTsKLSAgICBpZiAoIWhvc3QpIHsKLSAgICAg
ICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwg
MCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBo
b3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgotICAgIEJvb2xlYW4g
cmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29u
dGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gaG9zdG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICAgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdChBZG9wdENGLCBDRkhv
c3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgpKSk7CisgICAgICAgIGlmICghaG9z
dCkgeworICAgICAgICAgICAgRE5TUmVzb2x2ZVF1ZXVlQ0Y6OnNoYXJlZCgpLmRlY3JlbWVudFJl
cXVlc3RDb3VudCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIENG
SG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OworICAgICAgICBD
Rkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJl
IHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KKyAgICAgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAjaWYgIVBMQVRGT1JNKFdJ
TikKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdl
dE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZIb3N0U2NoZWR1bGVX
aXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CiAjZWxzZQotICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRo
cmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBi
ZSBjYWxsZWQuCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2Fk
ZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAgIC8vIE9uIFdpbmRv
d3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hl
cmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCisgICAgICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwogI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KKyAgICAgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKKyAgICB9Cit9OwogCiB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOworICAgIEROU1Jl
c29sdmVRdWV1ZUNGOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKaW5kZXggMWVjZGIz
Mi4uNTlkYmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcApAQCAtMjksMjEgKzI5LDUzIEBACiAKICNpbmNsdWRlICJHT3duUHRyU291
cC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorLy8gV2UganVzdCB1c2UgdGhlIHNhbWUgb3JpZ2luYWwgdmFsdWVzIGFzIENGTkVUIGFz
IHRoZXkgd29ya2VkIGZpbmUuCitjb25zdCBpbnQgRE5TUmVzb2x2ZVF1ZXVlOjpuYW1lc1RvUmVz
b2x2ZUltbWVkaWF0ZWx5ID0gNDsKK2NvbnN0IGRvdWJsZSBETlNSZXNvbHZlUXVldWU6OmNvYWxl
c2NlRGVsYXlJblNlY29uZHMgPSAxLjA7Citjb25zdCBpbnQgRE5TUmVzb2x2ZVF1ZXVlOjptYXhT
aW11bHRhbmVvdXNSZXF1ZXN0cyA9IDg7Citjb25zdCBpbnQgRE5TUmVzb2x2ZVF1ZXVlOjptYXhS
ZXF1ZXN0c1RvUXVldWUgPSA2NDsKK2NvbnN0IGRvdWJsZSBETlNSZXNvbHZlUXVldWU6OnJldHJ5
UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4xOworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIDog
cHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgRE5TUmVzb2x2
ZVF1ZXVlU291cCYgc2hhcmVkKCkKKyAgICB7CisgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERO
U1Jlc29sdmVRdWV1ZVNvdXAsIHF1ZXVlLCAoKSk7CisgICAgICByZXR1cm4gcXVldWU7CisgICAg
fQorCitwcml2YXRlOgorICAgIC8vIFRoZXJlIGlzIG5vIGN1cnJlbnQgcmVsaWFibGUgd2F5IHRv
IGtub3cgaWYgd2UncmUgYmVoaW5kIGEKKyAgICAvLyBwcm94eSBhdCB0aGlzIGxldmVsLiBXZSds
bCBoYXZlIHRvIGltcGxlbWVudCBpdCBpbgorICAgIC8vIFNvdXBTZXNzaW9uL1NvdXBQcm94eVVS
SVJlc29sdmVyL0dQcm94eVJlc29sdmVyCisgICAgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lzdGVt
UHJlZmVyZW5jZXMoKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIHZvaWQgcmVzb2x2
ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyogc291cEFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCog
dXNlckRhdGEpCisgICAgeworICAgICAgICBETlNSZXNvbHZlUXVldWVTb3VwOjpzaGFyZWQoKS5k
ZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc29sdmUoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICAgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhSZXNvdXJjZUhhbmRsZTo6ZGVm
YXVsdFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCwgcmVzb2x2ZWRDYWxsYmFj
aywgMCk7CisgICAgfQorfTsKKwogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGhvc3RuYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIiAr
IGhvc3RuYW1lOwotICAgIEdPd25QdHI8U291cFVSST4gc291cFVSSShzb3VwX3VyaV9uZXcodXJp
LnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBpZiAoIXNvdXBVUkkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91cmkoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRT
ZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCkpOworICAgIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnNoYXJl
ZCgpLmFkZChob3N0bmFtZSk7CiB9CiAKIH0KLS0gCjEuNy45Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132062</attachid>
            <date>2012-03-15 09:48:47 -0700</date>
            <delta_ts>2012-03-19 02:34:30 -0700</delta_ts>
            <desc>libsoup Patch</desc>
            <filename>0001-soup-session.c-add-soup_session_prefetch_dns.patch</filename>
            <type>text/plain</type>
            <size>5696</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">RnJvbSBhM2FiZjM3OTAwYWNlMmQwNjFjYTgzYTAwMDdlNTFiMTBhYjc2ZTU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnaW8gVmlsbGFyIFNlbmluIDxzdmlsbGFyQGlnYWxpYS5j
b20+CkRhdGU6IFdlZCwgMTQgTWFyIDIwMTIgMTE6MDA6MDQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBzb3VwLXNlc3Npb24uYzogYWRkIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMKClRoaXMgZGVw
cmVjYXRlcyBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpKCkuIEl0IGJhc2ljYWxseSBkb2Vz
IHRoZSBzYW1lLAppLmUuLCBpdCBsZXRzIHRoZSBzZXNzaW9uIHByZXBhcmUgZm9yIGEgcG9zc2li
bGUgdXBjb21pbmcgcmVxdWVzdCBieSBkb2luZwpETlMgcmVzb2x1dGlvbi4gSXQgYWRkaXRpb25h
bGx5IGhhcyBjYW5jZWxsYXRpb24gc3VwcG9ydCBhbmQgYWRkcyBhIGNhbGxiYWNrCnRvIG5vdGlm
eSB0aGUgY2FsbGVyIHdoZW4gdGhlIG9wZXJhdGlvbiBmaW5pc2hlcy4KCmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAotLS0KIGRvY3MvcmVmZXJlbmNlL2xpYnNv
dXAtMi40LXNlY3Rpb25zLnR4dCB8ICAgIDEgKwogbGlic291cC9zb3VwLXNlc3Npb24uYyAgICAg
ICAgICAgICAgICAgIHwgICA4MSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIGxpYnNv
dXAvc291cC1zZXNzaW9uLmggICAgICAgICAgICAgICAgICB8ICAgIDcgKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv
Y3MvcmVmZXJlbmNlL2xpYnNvdXAtMi40LXNlY3Rpb25zLnR4dCBiL2RvY3MvcmVmZXJlbmNlL2xp
YnNvdXAtMi40LXNlY3Rpb25zLnR4dAppbmRleCBjNjQ3ZWIwLi40NjBlMGM0IDEwMDY0NAotLS0g
YS9kb2NzL3JlZmVyZW5jZS9saWJzb3VwLTIuNC1zZWN0aW9ucy50eHQKKysrIGIvZG9jcy9yZWZl
cmVuY2UvbGlic291cC0yLjQtc2VjdGlvbnMudHh0CkBAIC0zODksNiArMzg5LDcgQEAgc291cF9z
ZXNzaW9uX3F1ZXVlX21lc3NhZ2UKIHNvdXBfc2Vzc2lvbl9yZXF1ZXVlX21lc3NhZ2UKIHNvdXBf
c2Vzc2lvbl9zZW5kX21lc3NhZ2UKIHNvdXBfc2Vzc2lvbl9jYW5jZWxfbWVzc2FnZQorc291cF9z
ZXNzaW9uX3ByZWZldGNoX2Rucwogc291cF9zZXNzaW9uX3ByZXBhcmVfZm9yX3VyaQogc291cF9z
ZXNzaW9uX2Fib3J0CiA8U1VCU0VDVElPTj4KZGlmZiAtLWdpdCBhL2xpYnNvdXAvc291cC1zZXNz
aW9uLmMgYi9saWJzb3VwL3NvdXAtc2Vzc2lvbi5jCmluZGV4IDIyYTAyZmQuLjI3OTdmZGEgMTAw
NjQ0Ci0tLSBhL2xpYnNvdXAvc291cC1zZXNzaW9uLmMKKysrIGIvbGlic291cC9zb3VwLXNlc3Np
b24uYwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogCi0jaW5jbHVkZSAic291cC1hZGRyZXNzLmgiCiAjaW5jbHVkZSAic291cC1hdXRo
LmgiCiAjaW5jbHVkZSAic291cC1hdXRoLWJhc2ljLmgiCiAjaW5jbHVkZSAic291cC1hdXRoLWRp
Z2VzdC5oIgpAQCAtMjM0Nyw2ICsyMzQ2LDI4IEBAIHNvdXBfc2Vzc2lvbl9hYm9ydCAoU291cFNl
c3Npb24gKnNlc3Npb24pCiAJZ19zbGlzdF9mcmVlIChjb25ucyk7CiB9CiAKK3N0YXRpYyB2b2lk
CitwcmVmZXRjaF91cmkoU291cFNlc3Npb24gKnNlc3Npb24sIFNvdXBVUkkgKnVyaSwKKwkgICAg
IEdDYW5jZWxsYWJsZSAqY2FuY2VsbGFibGUsCisJICAgICBTb3VwQWRkcmVzc0NhbGxiYWNrIGNh
bGxiYWNrLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisJU291cFNlc3Npb25Qcml2YXRlICpwcml2
OworCVNvdXBTZXNzaW9uSG9zdCAqaG9zdDsKKwlTb3VwQWRkcmVzcyAqYWRkcjsKKworCXByaXYg
PSBTT1VQX1NFU1NJT05fR0VUX1BSSVZBVEUgKHNlc3Npb24pOworCisJZ19tdXRleF9sb2NrICgm
cHJpdi0+aG9zdF9sb2NrKTsKKwlob3N0ID0gZ2V0X2hvc3RfZm9yX3VyaSAoc2Vzc2lvbiwgdXJp
KTsKKwlhZGRyID0gZ19vYmplY3RfcmVmIChob3N0LT5hZGRyKTsKKwlnX211dGV4X3VubG9jayAo
JnByaXYtPmhvc3RfbG9jayk7CisKKwlzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyAoYWRkciwK
KwkJCQkgICAgc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0IChzZXNzaW9uKSwKKwkJCQkg
ICAgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyX2RhdGEpOworCWdfb2JqZWN0X3VucmVmIChh
ZGRyKTsKK30KKwogLyoqCiAqIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91cmk6CiAqIEBzZXNz
aW9uOiBhICNTb3VwU2Vzc2lvbgpAQCAtMjM2MiwzMSArMjM4Myw2MyBAQCBzb3VwX3Nlc3Npb25f
YWJvcnQgKFNvdXBTZXNzaW9uICpzZXNzaW9uKQogKiBub3QgaGF2ZSBhIG1haW4gbG9vcCBydW5u
aW5nLCB0aGVuIHlvdSBjYW4ndCB1c2UgdGhpcyBtZXRob2QuCiAqCiAqIFNpbmNlOiAyLjMwCisq
CisqIERlcHJlY2F0ZWQ6IDIuMzg6IHVzZSBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKCkgaW5z
dGVhZAogKiovCiB2b2lkCiBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpIChTb3VwU2Vzc2lv
biAqc2Vzc2lvbiwgU291cFVSSSAqdXJpKQogewotCVNvdXBTZXNzaW9uUHJpdmF0ZSAqcHJpdjsK
LQlTb3VwU2Vzc2lvbkhvc3QgKmhvc3Q7Ci0JU291cEFkZHJlc3MgKmFkZHI7Ci0KIAlnX3JldHVy
bl9pZl9mYWlsIChTT1VQX0lTX1NFU1NJT04gKHNlc3Npb24pKTsKIAlnX3JldHVybl9pZl9mYWls
ICh1cmkgIT0gTlVMTCk7CiAKIAlpZiAoIXVyaS0+aG9zdCkKIAkJcmV0dXJuOwogCi0JcHJpdiA9
IFNPVVBfU0VTU0lPTl9HRVRfUFJJVkFURSAoc2Vzc2lvbik7CisJcHJlZmV0Y2hfdXJpIChzZXNz
aW9uLCB1cmksIE5VTEwsIE5VTEwsIE5VTEwpOworfQogCi0JZ19tdXRleF9sb2NrICgmcHJpdi0+
aG9zdF9sb2NrKTsKLQlob3N0ID0gZ2V0X2hvc3RfZm9yX3VyaSAoc2Vzc2lvbiwgdXJpKTsKLQlh
ZGRyID0gZ19vYmplY3RfcmVmIChob3N0LT5hZGRyKTsKLQlnX211dGV4X3VubG9jayAoJnByaXYt
Pmhvc3RfbG9jayk7CisvKioKKyogc291cF9zZXNzaW9uX3ByZWZldGNoX2RuczoKKyogQHNlc3Np
b246IGEgI1NvdXBTZXNzaW9uCisqIEBob3N0bmFtZTogYSBob3N0bmFtZSB0byBiZSByZXNvbHZl
ZAorKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxhYmxlIG9iamVjdCwg
b3IgJU5VTEwKKyogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpIChhbGxvdy1ub25lKTogY2FsbGJh
Y2sgdG8gY2FsbCB3aXRoIHRoZQorKiByZXN1bHQsIG9yICVOVUxMCisqIEB1c2VyX2RhdGE6IGRh
dGEgZm9yIEBjYWxsYmFjaworKgorKiBUZWxscyBAc2Vzc2lvbiB0aGF0IGFuIFVSSSBmcm9tIHRo
ZSBnaXZlbiBAaG9zdG5hbWUgbWF5IGJlIHJlcXVlc3RlZAorKiBzaG9ydGx5LCBhbmQgc28gdGhl
IHNlc3Npb24gY2FuIHRyeSB0byBwcmVwYXJlIGJ5IHJlc29sdmluZyB0aGUKKyogZG9tYWluIG5h
bWUgaW4gYWR2YW5jZSwgaW4gb3JkZXIgdG8gd29yayBtb3JlIHF1aWNrbHkgb25jZSB0aGUgVVJJ
CisqIGlzIGFjdHVhbGx5IHJlcXVlc3RlZC4KKyoKKyogSWYgQGNhbmNlbGxhYmxlIGlzIG5vbi0l
TlVMTCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FuY2VsIHRoZQorKiByZXNvbHV0aW9uLiBAY2FsbGJh
Y2sgd2lsbCBzdGlsbCBiZSBpbnZva2VkIGluIHRoaXMgY2FzZSwgd2l0aCBhCisqIHN0YXR1cyBv
ZiAlU09VUF9TVEFUVVNfQ0FOQ0VMTEVELgorKgorKiBUaGlzIG1ldGhvZCBhY3RzIGFzeW5jaHJv
bm91c2x5LCBpbiBAc2Vzc2lvbidzCisqICNTb3VwU2Vzc2lvbjphc3luY19jb250ZXh0LiBJZiB5
b3UgYXJlIHVzaW5nICNTb3VwU2Vzc2lvblN5bmMgYW5kIGRvCisqIG5vdCBoYXZlIGEgbWFpbiBs
b29wIHJ1bm5pbmcsIHRoZW4geW91IGNhbid0IHVzZSB0aGlzIG1ldGhvZC4KKyoKKyogU2luY2U6
IDIuMzgKKyoqLwordm9pZAorc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyAoU291cFNlc3Npb24g
KnNlc3Npb24sIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAorCQkJICAgR0NhbmNlbGxhYmxlICpjYW5j
ZWxsYWJsZSwKKwkJCSAgIFNvdXBBZGRyZXNzQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVz
ZXJfZGF0YSkKK3sKKwlTb3VwVVJJICp1cmk7CiAKLQlzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3lu
YyAoYWRkciwKLQkJCQkgICAgc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0IChzZXNzaW9u
KSwKLQkJCQkgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0JZ19vYmplY3RfdW5yZWYgKGFkZHIpOwor
CWdfcmV0dXJuX2lmX2ZhaWwgKFNPVVBfSVNfU0VTU0lPTiAoc2Vzc2lvbikpOworCWdfcmV0dXJu
X2lmX2ZhaWwgKGhvc3RuYW1lICE9IE5VTEwpOworCisJLyogRklYTUU6IFByZWZldGNoaW5nIHNo
b3VsZCB3b3JrIGZvciBib3RoIEhUVFAgYW5kIEhUVFBTICovCisJdXJpID0gc291cF91cmlfbmV3
IChOVUxMKTsKKwlzb3VwX3VyaV9zZXRfc2NoZW1lICh1cmksIFNPVVBfVVJJX1NDSEVNRV9IVFRQ
KTsKKwlzb3VwX3VyaV9zZXRfaG9zdCAodXJpLCBob3N0bmFtZSk7CisJc291cF91cmlfc2V0X3Bh
dGggKHVyaSwgIiIpOworCisJcHJlZmV0Y2hfdXJpIChzZXNzaW9uLCB1cmksIGNhbmNlbGxhYmxl
LCBjYWxsYmFjaywgdXNlcl9kYXRhKTsKKwlzb3VwX3VyaV9mcmVlICh1cmkpOwogfQogCiAvKioK
ZGlmZiAtLWdpdCBhL2xpYnNvdXAvc291cC1zZXNzaW9uLmggYi9saWJzb3VwL3NvdXAtc2Vzc2lv
bi5oCmluZGV4IGRkMDk1OTkuLjg3NDhhNzYgMTAwNjQ0Ci0tLSBhL2xpYnNvdXAvc291cC1zZXNz
aW9uLmgKKysrIGIvbGlic291cC9zb3VwLXNlc3Npb24uaApAQCAtNyw2ICs3LDcgQEAKICNkZWZp
bmUgU09VUF9TRVNTSU9OX0ggMQogCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLXR5cGVzLmg+Cisj
aW5jbHVkZSA8bGlic291cC9zb3VwLWFkZHJlc3MuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAt
bWVzc2FnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC0xMDUsNiArMTA2LDEyIEBAIHZvaWQgICAg
ICAgICAgICBzb3VwX3Nlc3Npb25fYWJvcnQgICAgICAgICAgICAoU291cFNlc3Npb24gICAgICAg
ICAgICpzZXNzaW9uKTsKIHZvaWQgICAgICAgICAgICBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3Jf
dXJpICAoU291cFNlc3Npb24gICAgICAgICAgICpzZXNzaW9uLAogCQkJCQkgICAgICAgU291cFVS
SSAgICAgICAgICAgICAgICp1cmkpOwogCit2b2lkICAgICAgICAgICAgc291cF9zZXNzaW9uX3By
ZWZldGNoX2RucyAgICAgKFNvdXBTZXNzaW9uICAgICAgICAgICAqc2Vzc2lvbiwKKwkJCQkJICAg
ICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAqaG9zdG5hbWUsCisJCQkJCSAgICAgICBHQ2FuY2Vs
bGFibGUgICAgICAgICAgKmNhbmNlbGxhYmxlLAorCQkJCQkgICAgICAgU291cEFkZHJlc3NDYWxs
YmFjayAgICBjYWxsYmFjaywKKwkJCQkJICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgdXNl
cl9kYXRhKTsKKwogZ2Jvb2xlYW4gICAgICAgIHNvdXBfc2Vzc2lvbl93b3VsZF9yZWRpcmVjdCAg
IChTb3VwU2Vzc2lvbiAgICAgICAgICAgKnNlc3Npb24sCiAJCQkJCSAgICAgICBTb3VwTWVzc2Fn
ZSAgICAgICAgICAgKm1zZyk7CiBnYm9vbGVhbiAgICAgICAgc291cF9zZXNzaW9uX3JlZGlyZWN0
X21lc3NhZ2UgKFNvdXBTZXNzaW9uICAgICAgICAgICAqc2Vzc2lvbiwKLS0gCjEuNy45Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132560</attachid>
            <date>2012-03-19 02:34:38 -0700</date>
            <delta_ts>2012-03-22 09:54:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41630-20120319103436.patch</filename>
            <type>text/plain</type>
            <size>16112</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U4ZTMwMGFhZTI3YTk4
OWMxZjcxNzNjOWEwOGM5NWU3Mjc0ZTc5Zi4uZjIzNTZkMGUwMWMxMGQ2NzA3M2ZmOWIxMzRmZmQy
MzU2NzY1ZWQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAzLTE5ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTb3VwXSBE
TlMgcHJlZmV0Y2hpbmcgc3BhbXMgcmVzb2x2ZXIsIHNob290cyBzZWxmIGluIHRoZSBmb290Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdlbmVy
aWMgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHRvIHRocm90dGxlIEROUworICAgICAgICBwcmVmZXRj
aGVzLiBJdCdzIGFuIGFic3RyYWN0IHJlZmFjdG9yaW5nIG9mIENGTkVUJ3MKKyAgICAgICAgRE5T
UmVzb2x2ZVF1ZXVlLiBQbGF0Zm9ybSBzcGVjaWZpYyBtZXRob2RzIGltcGxlbWVudGVkIGZvciBz
b3VwCisgICAgICAgIGFuZCBDRk5FVCBiYWNrZW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMg
cmVxdWlyZWQgYXMgd2UncmUganVzdCByZWZhY3RvcmluZyBleGlzdGluZyBjb2RlIHRvCisgICAg
ICAgIGJlIHVzZWQgYnkgdHdvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlOjphZGQpOiBhZGRzIGEgbmV3IGhvc3QgdG8gYmUgcHJlZmV0Y2hlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6ZmlyZWQpOiBieSB1c2luZyBhIGRlbGF5IHdl
IGNvYWxlc2NlCisgICAgICAgIHNldmVyYWwgcHJlZmV0Y2ggcmVxdWVzdHMgYW5kIHRyeSB0byBy
ZXNvbHZlIHRoZW0gYWxsIGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEROU1Jlc29s
dmVRdWV1ZSk6IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBETlMgcHJlZmV0Y2gKKyAgICAgICAgdGhy
b3R0bGluZyB1c2luZyBhIHRlbXBsYXRlIHBhdHRlcm4uCisgICAgICAgIChXZWJDb3JlOjpETlNS
ZXNvbHZlUXVldWU6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OmRlY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3Jt
UHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVy
ZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpwcmVmZXRjaEROUyk6CisKIDIwMTItMDMtMTYgIEdhdmluIFBldGVycyAgPGdhdmlucEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGFzc2VydHMgYW5kIGltcHJvdmUgbG9nZ2luZyBp
biBQYWdlQ2FjaGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjMWE3ZGI5ZjI2
YmU1M2JiYWZjMTRlNDhhZGQxNjE4YjZmMzM3ZTllLi41MTcyMTVlODNkNWEwZjJmY2I2ZjFlMjIx
MWU0NmIxNGNlNzY3NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzNzQs
NiArMzM3NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNS
ZXNvbHZlUXVldWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jl
c29sdmVRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
QnVpbGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFC
dWlsZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2
ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNDM2M2I2ODY3NDNlYTE2ZTk0MzRjZDM2MTZiM2RhODczOTUy
ZDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
TlNSZXNvbHZlUXVldWUuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jl
c29sdmVRdWV1ZTo6YWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgLy8gSWYgdGhl
cmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91Z2ggYXJlIGluIGZsaWdodCwgcmVz
b2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBvdmVyIGEgbGluaykuCisgICAgaWYg
KCFtX25hbWVzLnNpemUoKSkgeworICAgICAgICBpZiAocGxhdGZvcm1Qcm94eUlzRW5hYmxlZElu
U3lzdGVtUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
YXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9IG5hbWVzVG9SZXNvbHZlSW1t
ZWRpYXRlbHkpIHsKKyAgICAgICAgICAgIHBsYXRmb3JtUmVzb2x2ZShob3N0bmFtZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3Jl
cXVlc3RzSW5GbGlnaHQpOworICAgIH0KKworICAgIC8vIEl0J3MgYmV0dGVyIHRvIG5vdCBwcmVm
ZXRjaCBzb21lIG5hbWVzIHRoYW4gdG8gY2xvZyB0aGUgcXVldWUuCisgICAgLy8gRHJvcHBpbmcg
dGhlIG5ld2VzdCBuYW1lcywgYmVjYXVzZSBvbiBhIHNpbmdsZSBwYWdlLCB0aGVzZSBhcmUgbGlr
ZWx5IHRvIGJlIGJlbG93IG9sZGVzdCBvbmVzLgorICAgIGlmIChtX25hbWVzLnNpemUoKSA8IG1h
eFJlcXVlc3RzVG9RdWV1ZSkgeworICAgICAgICBtX25hbWVzLmFkZChob3N0bmFtZSk7CisgICAg
ICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHN0YXJ0T25lU2hvdChjb2FsZXNjZURl
bGF5SW5TZWNvbmRzKTsKKyAgICB9Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpmaXJlZCgp
Cit7CisgICAgaWYgKHBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkp
IHsKKyAgICAgICAgbV9uYW1lcy5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaW50IHJlcXVlc3RzQWxsb3dlZCA9IG1heFNpbXVsdGFuZW91c1JlcXVlc3RzIC0gbV9yZXF1
ZXN0c0luRmxpZ2h0OworCisgICAgZm9yICg7ICFtX25hbWVzLmlzRW1wdHkoKSAmJiByZXF1ZXN0
c0FsbG93ZWQgPiAwOyAtLXJlcXVlc3RzQWxsb3dlZCkgeworICAgICAgICBhdG9taWNJbmNyZW1l
bnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0
b3IgY3VycmVudE5hbWUgPSBtX25hbWVzLmJlZ2luKCk7CisgICAgICAgIHBsYXRmb3JtUmVzb2x2
ZSgqY3VycmVudE5hbWUpOworICAgICAgICBtX25hbWVzLnJlbW92ZShjdXJyZW50TmFtZSk7Cisg
ICAgfQorCisgICAgaWYgKCFtX25hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgc3RhcnRPbmVTaG90
KHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjU1NmYzYjljOGIzYjYwZTQ4YWY1NjYzMTliMWE4ZDY5ZGRjNTFkNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2
ZVF1ZXVlLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAorI2RlZmluZSBETlNS
ZXNvbHZlUXVldWVfaAorCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZSA6
IHB1YmxpYyBUaW1lckJhc2UgeworCitwcml2YXRlOgorICAgIC8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCisgICAgLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBjb2FsZXNj
ZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCB0aGUgRE5TIHJlc29s
dmVyLgorICAgIHN0YXRpYyBjb25zdCBpbnQgbmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7
CisKKyAgICAvLyBDb2FsZXNjZSBwcmVmZXRjaCByZXF1ZXN0cyBmb3IgdGhpcyBsb25nIGJlZm9y
ZSBzZW5kaW5nIHRoZW0gb3V0LgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgY29hbGVzY2VEZWxh
eUluU2Vjb25kcyA9IDEuMDsKKworICAgIC8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMgYXQg
b25jZSBjYW4gb3ZlcndoZWxtIHNvbWUgZ2F0ZXdheXMuIFNlZSA8cmRhcjovLzgxMDU1NTA+IGZv
ciBzcGVjaWZpYyBDRk5FVCBpc3N1ZXMgd2l0aCBDRkhvc3QgdGhyb3R0bGluZy4KKyAgICBzdGF0
aWMgY29uc3QgaW50IG1heFNpbXVsdGFuZW91c1JlcXVlc3RzID0gODsKKworICAgIC8vIEZvciBh
IHBhZ2UgaGFzIGxpbmtzIHRvIG1hbnkgb3V0c2lkZSBzaXRlcywgaXQgaXMgbGlrZWx5IHRoYXQg
dGhlIHN5c3RlbSBETlMgcmVzb2x2ZXIgd29uJ3QgYmUgYWJsZSB0byBjYWNoZSB0aGVtIGFsbCBh
bnl3YXksIGFuZCB3ZSBkb24ndCB3YW50CisgICAgLy8gdG8gbmVnYXRpdmVseSBhZmZlY3Qgb3Ro
ZXIgYXBwbGljYXRpb25zJyBwZXJmb3JtYW5jZSBieSBwdXNoaW5nIHRoZWlyIGNhY2hlZCBlbnRy
aWVzIG91dC4KKyAgICAvLyBJZiB3ZSBlbmQgdXAgd2l0aCBsb3RzIG9mIG5hbWVzIHRvIHByZWZl
dGNoLCBzb21lIHdpbGwgYmUgZHJvcHBlZC4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heFJlcXVl
c3RzVG9RdWV1ZSA9IDY0OworCisgICAgLy8gSWYgdGhlcmUgd2VyZSBxdWV1ZWQgbmFtZXMgdGhh
dCBjb3VsZG4ndCBiZSBzZW50IHNpbXVsdGFuZW91c2x5LCBjaGVjayB0aGUgc3RhdGUgb2YgcmVz
b2x2ZXJzIGFmdGVyIHRoaXMgZGVsYXkuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSByZXRyeVJl
c29sdmluZ0luU2Vjb25kcyA9IDAuMTsKKworcHVibGljOgorICAgIHN0YXRpYyBETlNSZXNvbHZl
UXVldWUmIHNoYXJlZCgpCisgICAgeworICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChETlNSZXNv
bHZlUXVldWUsIHF1ZXVlLCAoKSk7CisgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorCisgICAg
dm9pZCBhZGQoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAgdm9pZCBkZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKQorICAgIHsKKyAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxp
Z2h0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBwbGF0Zm9ybVByb3h5SXNFbmFibGVk
SW5TeXN0ZW1QcmVmZXJlbmNlcygpOworICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYpOworCisgICAgdm9pZCBmaXJlZCgpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFt
ZXM7CisgICAgaW50IG1fcmVxdWVzdHNJbkZsaWdodDsKK307CisKK30KKworI2VuZGlmIC8vIERO
U1Jlc29sdmVRdWV1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCmluZGV4IGE2YThkOTI1Zjc5NmRmNmQ5MDY3NTdiYzMyYzcxMTVkZjI4YWRj
MjguLmQ2NDAyNjA0YjZjOWFhZGI5YjU3ZTU0YjU5NjQ5NDEwYzM4MTM1MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKIAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgpAQCAtNDcsMjUgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBXaGVu
IHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiByZXF1ZXN0
cyBpbW1lZGlhdGVseSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBpcyB0cmln
Z2VyZWQgYnkgaG92ZXJpbmcpLgotLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3Vs
ZCBjb2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCBDRkhv
c3QuCi1jb25zdCBpbnQgbmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7Ci0KLS8vIENvYWxl
c2NlIHByZWZldGNoIHJlcXVlc3RzIGZvciB0aGlzIGxvbmcgYmVmb3JlIHNlbmRpbmcgdGhlbSBv
dXQuCi1jb25zdCBkb3VibGUgY29hbGVzY2VEZWxheUluU2Vjb25kcyA9IDEuMDsKLQotLy8gU2Vu
ZGluZyBtYW55IEROUyByZXF1ZXN0cyBhdCBvbmNlIGNhbiBvdmVyd2hlbG0gc29tZSBnYXRld2F5
cy4gQ0ZIb3N0IGRvZXNuJ3QgY3VycmVudGx5IHRocm90dGxlIGZvciB1cywgc2VlIDxyZGFyOi8v
ODEwNTU1MD4uCi1jb25zdCBpbnQgbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgPSA4OwotCi0vLyBG
b3IgYSBwYWdlIGhhcyBsaW5rcyB0byBtYW55IG91dHNpZGUgc2l0ZXMsIGl0IGlzIGxpa2VseSB0
aGF0IHRoZSBzeXN0ZW0gRE5TIHJlc29sdmVyIHdvbid0IGJlIGFibGUgdG8gY2FjaGUgdGhlbSBh
bGwgYW55d2F5LCBhbmQgd2UgZG9uJ3Qgd2FudAotLy8gdG8gbmVnYXRpdmVseSBhZmZlY3Qgb3Ro
ZXIgYXBwbGljYXRpb25zJyBwZXJmb3JtYW5jZSBieSBwdXNoaW5nIHRoZWlyIGNhY2hlZCBlbnRy
aWVzIG91dC4KLS8vIElmIHdlIGVuZCB1cCB3aXRoIGxvdHMgb2YgbmFtZXMgdG8gcHJlZmV0Y2gs
IHNvbWUgd2lsbCBiZSBkcm9wcGVkLgotY29uc3QgaW50IG1heFJlcXVlc3RzVG9RdWV1ZSA9IDY0
OwotCi0vLyBJZiB0aGVyZSB3ZXJlIHF1ZXVlZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNlbnQg
c2ltdWx0YW5lb3VzbHksIGNoZWNrIHRoZSBzdGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhpcyBk
ZWxheS4KLWNvbnN0IGRvdWJsZSByZXRyeVJlc29sdmluZ0luU2Vjb25kcyA9IDAuMTsKLQotc3Rh
dGljIGJvb2wgcHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkKK2Jvb2wgRE5TUmVz
b2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpCiB7
CiAgICAgLy8gRG9uJ3QgZG8gRE5TIHByZWZldGNoIGlmIHByb3hpZXMgYXJlIGludm9sdmVkLiBG
b3IgbWFueSBwcm94eSB0eXBlcywgdGhlIHVzZXIgYWdlbnQgaXMgbmV2ZXIgZXhwb3NlZAogICAg
IC8vIHRvIHRoZSBJUCBhZGRyZXNzIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLiBRdWVyeWluZyBh
biBpbnRlcm5hbCBETlMgc2VydmVyIG1heSBub3QgaGVscCBwZXJmb3JtYW5jZSwKQEAgLTk2LDk0
ICs3OSwyMCBAQCBzdGF0aWMgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMo
KQogICAgIHJldHVybiBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7CiB9CiAKLWNs
YXNzIEROU1Jlc29sdmVRdWV1ZSA6IHB1YmxpYyBUaW1lckJhc2UgewotcHVibGljOgotICAgIHN0
YXRpYyBETlNSZXNvbHZlUXVldWUmIHNoYXJlZCgpOwotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0KLXByaXZhdGU6Ci0gICAg
RE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KLSAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpcmVkKCk7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7Ci0g
ICAgaW50IG1fcmVxdWVzdHNJbkZsaWdodDsKLX07Ci0KLUROU1Jlc29sdmVRdWV1ZTo6RE5TUmVz
b2x2ZVF1ZXVlKCkKLSAgICA6IG1fcmVxdWVzdHNJbkZsaWdodCgwKQotewotfQotCi1ETlNSZXNv
bHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2hhcmVkKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEROU1Jlc29sdmVRdWV1ZSwgbmFtZXMsICgpKTsKLSAgICByZXR1cm4gbmFtZXM7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAg
IC8vIElmIHRoZXJlIGFyZSBubyBuYW1lcyBxdWV1ZWQsIGFuZCBmZXcgZW5vdWdoIGFyZSBpbiBm
bGlnaHQsIHJlc29sdmUgaW1tZWRpYXRlbHkgKHRoZSBtb3VzZSBtYXkgYmUgb3ZlciBhIGxpbmsp
LgotICAgIGlmICghbV9uYW1lcy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHByb3h5SXNFbmFibGVk
SW5TeXN0ZW1QcmVmZXJlbmNlcygpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IChhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCkgPD0gbmFtZXNUb1Jlc29sdmVJ
bW1lZGlhdGVseSkgewotICAgICAgICAgICAgcmVzb2x2ZShuYW1lKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZs
aWdodCk7Ci0gICAgfQotCi0gICAgLy8gSXQncyBiZXR0ZXIgdG8gbm90IHByZWZldGNoIHNvbWUg
bmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1ZS4KLSAgICAvLyBEcm9wcGluZyB0aGUgbmV3ZXN0
IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xlIHBhZ2UsIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUg
YmVsb3cgb2xkZXN0IG9uZXMuCi0gICAgaWYgKG1fbmFtZXMuc2l6ZSgpIDwgbWF4UmVxdWVzdHNU
b1F1ZXVlKSB7Ci0gICAgICAgIG1fbmFtZXMuYWRkKG5hbWUpOwotICAgICAgICBpZiAoIWlzQWN0
aXZlKCkpCi0gICAgICAgICAgICBzdGFydE9uZVNob3QoY29hbGVzY2VEZWxheUluU2Vjb25kcyk7
Ci0gICAgfQotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6ZGVjcmVtZW50UmVxdWVzdENvdW50
KCkKLXsKLSAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Ci19Ci0KLXZv
aWQgRE5TUmVzb2x2ZVF1ZXVlOjpmaXJlZCgpCi17Ci0gICAgaWYgKHByb3h5SXNFbmFibGVkSW5T
eXN0ZW1QcmVmZXJlbmNlcygpKSB7Ci0gICAgICAgIG1fbmFtZXMuY2xlYXIoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGludCByZXF1ZXN0c0FsbG93ZWQgPSBtYXhTaW11bHRhbmVv
dXNSZXF1ZXN0cyAtIG1fcmVxdWVzdHNJbkZsaWdodDsKLQotICAgIGZvciAoOyAhbV9uYW1lcy5p
c0VtcHR5KCkgJiYgcmVxdWVzdHNBbGxvd2VkID4gMDsgLS1yZXF1ZXN0c0FsbG93ZWQpIHsKLSAg
ICAgICAgYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOwotICAgICAgICBIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIGN1cnJlbnROYW1lID0gbV9uYW1lcy5iZWdpbigpOwotICAg
ICAgICByZXNvbHZlKCpjdXJyZW50TmFtZSk7Ci0gICAgICAgIG1fbmFtZXMucmVtb3ZlKGN1cnJl
bnROYW1lKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fbmFtZXMuaXNFbXB0eSgpKQotICAgICAgICBz
dGFydE9uZVNob3QocmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOwotfQotCiBzdGF0aWMgdm9pZCBj
bGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENG
U3RyZWFtRXJyb3IqLCB2b2lkKikKIHsKICAgICBETlNSZXNvbHZlUXVldWU6OnNoYXJlZCgpLmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwgc2hhcmVkKCkgZnJvbSBh
IHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBp
bml0aWFsaXplZCBieSBub3cuCiAgICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOwogfQogCi12b2lkIERO
U1Jlc29sdmVRdWV1ZTo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGhvc3RuYW1lQ0YoQWRvcHRDRiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgUmV0
YWluUHRyPENGSG9zdFJlZj4gaG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBo
b3N0bmFtZUNGLmdldCgpKSk7CiAgICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGF0b21pY0RlY3Jl
bWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICAgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFy
ZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAppbmRleCAx
ZWNkYjMyYzY5N2RkNDZiMzU4MDVmZGU1ZjYzNGQ1MmFiNjMwMDM2Li4zYmU0Yjk1ZDhmM2ExMWNj
ZTQyZDA2MGZkYTkyMmYxNzU1MjU1NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCkBAIC0yNiwyNCArMjYsNDMgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZS5oIgogCiAjaW5jbHVkZSAiR093blB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFRoZXJlIGlzIG5vIGN1cnJlbnQg
cmVsaWFibGUgd2F5IHRvIGtub3cgaWYgd2UncmUgYmVoaW5kIGEgcHJveHkgYXQKKy8vIHRoaXMg
bGV2ZWwuIFdlJ2xsIGhhdmUgdG8gaW1wbGVtZW50IGl0IGluCisvLyBTb3VwU2Vzc2lvbi9Tb3Vw
UHJveHlVUklSZXNvbHZlci9HUHJveHlSZXNvbHZlcgorYm9vbCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqIHNv
dXBBZGRyZXNzLCBndWludCBzdGF0dXMsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEROU1Jlc29s
dmVRdWV1ZTo6c2hhcmVkKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgZ19wcmludCgiUmVzb2x2aW5nICVz
XG4iLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hf
ZG5zKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0
YSgpLCAwLCByZXNvbHZlZENhbGxiYWNrLCAwKTsKK30KKwogdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
aWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVy
aSA9ICJodHRwOi8vIiArIGhvc3RuYW1lOwotICAgIEdPd25QdHI8U291cFVSST4gc291cFVSSShz
b3VwX3VyaV9uZXcodXJpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBpZiAoIXNvdXBVUkkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91cmkoUmVzb3VyY2VI
YW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCkpOworICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2hhcmVkKCkuYWRkKGhvc3RuYW1lKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133282</attachid>
            <date>2012-03-22 09:54:55 -0700</date>
            <delta_ts>2012-03-22 12:15:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41630-20120322175453.patch</filename>
            <type>text/plain</type>
            <size>24873</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlZTM5ZDA2MWRhZmY2
YmYzMDAxMDVjZTc5ZjVjMmJjNDFlNTVkMi4uYjE1YzY0MTRhMTZmYTNhNGY0MGM0ZTM4NzZiMTg2
YTE2ZjUzZjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTb3VwXSBE
TlMgcHJlZmV0Y2hpbmcgc3BhbXMgcmVzb2x2ZXIsIHNob290cyBzZWxmIGluIHRoZSBmb290Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdlbmVy
aWMgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHRvIHRocm90dGxlIEROUworICAgICAgICBwcmVmZXRj
aGVzLiBJdCdzIGFuIGFic3RyYWN0IHJlZmFjdG9yaW5nIG9mIENGTkVUJ3MKKyAgICAgICAgRE5T
UmVzb2x2ZVF1ZXVlLiBQbGF0Zm9ybSBzcGVjaWZpYyBtZXRob2RzIGltcGxlbWVudGVkIGZvciBz
b3VwCisgICAgICAgIGFuZCBDRk5FVCBiYWNrZW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMg
cmVxdWlyZWQgYXMgd2UncmUganVzdCByZWZhY3RvcmluZyBleGlzdGluZyBjb2RlIHRvCisgICAg
ICAgIGJlIHVzZWQgYnkgdHdvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IGFkZGVkIG5ldyBmaWxlLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6YWRkKTogYWRkcyBhIG5ldyBob3N0IHRvIGJlIHByZWZldGNoZWQuCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmZpcmVkKTogYnkgdXNpbmcgYSBkZWxh
eSB3ZSBjb2FsZXNjZQorICAgICAgICBzZXZlcmFsIHByZWZldGNoIHJlcXVlc3RzIGFuZCB0cnkg
dG8gcmVzb2x2ZSB0aGVtIGFsbCBoZXJlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChETlNS
ZXNvbHZlUXVldWUpOiBjbGFzcyB0aGF0IGltcGxlbWVudHMgRE5TIHByZWZldGNoCisgICAgICAg
IHRocm90dGxpbmcgdXNpbmcgYSB0ZW1wbGF0ZSBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0
Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6cHJlZmV0Y2hETlMpOgorCiAyMDEyLTAzLTIxICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBIZWFwUHJvZmls
ZXI6IEhlYXAgc25hcHNob3Qgd29ya2VyIGhhcyB0byByZXBvcnQgdGhlIGVycm9ycyB0byB0aGUg
ZnJvbnQtZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlMmJjYjEwOWZjN2Iy
NTUyZjZmODMzYWI4YTllNDAzNjUyNmZjMTcwLi5mZWRhOTg0ZjI4ZDhhYTAxYjQwNGI3ZWQ1OGJi
MmYzNGYzNjVlMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzNzksNiAr
MzM3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWls
ZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggN2U2
OTkwNjJhYzVkNjJmOGNmYmYwYzk1YWZjOTA5MTc5Mjg4NGZjYi4uZDJiZjY3MzJjNWMwNjYzYTMz
MjIwMTczMDU0NzlmMWRjOGE5OGVmMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxMjQ5LDYgKzMxMjQ5LDE0IEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XEROU1Jlc29sdmVRdWV1ZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEROU1Jlc29sdmVRdWV1ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xGb3JtRGF0YS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmYy
YTE3MTNlYWQzNzI0MzU1NjE2MDczMWY5MmE0ZWUyODI3NDNkNi4uNDdmNzcyOWExMTJkMTAyODAy
NGE4ZjQzMGRjOTAxZmJlYzQ5OTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk3MCw2ICs1OTcwLDcgQEAKIAkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0
b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUYy
OTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3OEJCNzBFMzY3
QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi87IH07CiAJCUYzMTYzOTZCMTMyOTQ4MUEwMEE2
NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNCIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CiAJCUYzMTYzOTZDMTMyOTQ4MUEwMEE2NDlDQiAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCAqLzsgfTsKIAkJRjMxNjM5NkUxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzMTYzOTZEMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi87IH07CkBAIC04ODY0LDYgKzg4NjUsNyBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5
MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M2MDEy
ODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBT
dWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDRDMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMyMzYsNiArMTMyMzgsNyBAQAogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyog
bWF0aGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRleHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTFRleHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwNDIs
NiArMTUwNDUsOCBAQAogCQkJCTUxQTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFs
U3RvcmFnZS5jcHAgKi8sCiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICov
LAorCQkJCTdDNjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICov
LAorCQkJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywK
IAkJCQk1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovLAogCQkJCTUx
NEM3NjVCMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oICovLAogCQkJCTA4NUI5MkI4MEVG
REU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovLApAQCAtMjUyNzUsNiArMjUy
ODAsNyBAQAogCQkJCUZEMzE2MDkwMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUxMTU0NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRjM0RkU5MEU4MkY4MjcwMEY2MjdDRCAv
KiBETlNDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMjkzQjI3RTU2QzExMkYzNzNGRkYy
N0UgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNDMDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0JCNTlG
MzE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
TlNSZXNvbHZlUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MzYzYjY4Njc0M2VhMTZlOTQzNGNkMzYx
NmIzZGE4NzM5NTJkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZXMgcXVldWVkLCBhbmQgZmV3IGVub3VnaCBhcmUgaW4g
ZmxpZ2h0LCByZXNvbHZlIGltbWVkaWF0ZWx5ICh0aGUgbW91c2UgbWF5IGJlIG92ZXIgYSBsaW5r
KS4KKyAgICBpZiAoIW1fbmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGlmIChwbGF0Zm9ybVByb3h5
SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCkgPD0gbmFtZXNU
b1Jlc29sdmVJbW1lZGlhdGVseSkgeworICAgICAgICAgICAgcGxhdGZvcm1SZXNvbHZlKGhvc3Ru
YW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdG9taWNEZWNy
ZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgfQorCisgICAgLy8gSXQncyBiZXR0ZXIg
dG8gbm90IHByZWZldGNoIHNvbWUgbmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1ZS4KKyAgICAv
LyBEcm9wcGluZyB0aGUgbmV3ZXN0IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xlIHBhZ2UsIHRo
ZXNlIGFyZSBsaWtlbHkgdG8gYmUgYmVsb3cgb2xkZXN0IG9uZXMuCisgICAgaWYgKG1fbmFtZXMu
c2l6ZSgpIDwgbWF4UmVxdWVzdHNUb1F1ZXVlKSB7CisgICAgICAgIG1fbmFtZXMuYWRkKGhvc3Ru
YW1lKTsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAgc3RhcnRPbmVTaG90
KGNvYWxlc2NlRGVsYXlJblNlY29uZHMpOworICAgIH0KK30KKwordm9pZCBETlNSZXNvbHZlUXVl
dWU6OmZpcmVkKCkKK3sKKyAgICBpZiAocGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJl
ZmVyZW5jZXMoKSkgeworICAgICAgICBtX25hbWVzLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpbnQgcmVxdWVzdHNBbGxvd2VkID0gbWF4U2ltdWx0YW5lb3VzUmVxdWVz
dHMgLSBtX3JlcXVlc3RzSW5GbGlnaHQ7CisKKyAgICBmb3IgKDsgIW1fbmFtZXMuaXNFbXB0eSgp
ICYmIHJlcXVlc3RzQWxsb3dlZCA+IDA7IC0tcmVxdWVzdHNBbGxvd2VkKSB7CisgICAgICAgIGF0
b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICAgICAgSGFzaFNldDxTdHJp
bmc+OjppdGVyYXRvciBjdXJyZW50TmFtZSA9IG1fbmFtZXMuYmVnaW4oKTsKKyAgICAgICAgcGxh
dGZvcm1SZXNvbHZlKCpjdXJyZW50TmFtZSk7CisgICAgICAgIG1fbmFtZXMucmVtb3ZlKGN1cnJl
bnROYW1lKTsKKyAgICB9CisKKyAgICBpZiAoIW1fbmFtZXMuaXNFbXB0eSgpKQorICAgICAgICBz
dGFydE9uZVNob3QocmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTU2ZjNiOWM4YjNiNjBlNDhhZjU2NjMxOWIxYThkNjlk
ZGM1MWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEROU1Jlc29sdmVRdWV1ZV9oCisj
ZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCisKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVz
b2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7CisKK3ByaXZhdGU6CisgICAgLy8gV2hlbiBy
ZXNvbHZlIHF1ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJlc29sdXRpb24gcmVxdWVzdHMg
aW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dl
cmVkIGJ5IGhvdmVyaW5nKS4KKyAgICAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hv
dWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRo
ZSBETlMgcmVzb2x2ZXIuCisgICAgc3RhdGljIGNvbnN0IGludCBuYW1lc1RvUmVzb2x2ZUltbWVk
aWF0ZWx5ID0gNDsKKworICAgIC8vIENvYWxlc2NlIHByZWZldGNoIHJlcXVlc3RzIGZvciB0aGlz
IGxvbmcgYmVmb3JlIHNlbmRpbmcgdGhlbSBvdXQuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBj
b2FsZXNjZURlbGF5SW5TZWNvbmRzID0gMS4wOworCisgICAgLy8gU2VuZGluZyBtYW55IEROUyBy
ZXF1ZXN0cyBhdCBvbmNlIGNhbiBvdmVyd2hlbG0gc29tZSBnYXRld2F5cy4gU2VlIDxyZGFyOi8v
ODEwNTU1MD4gZm9yIHNwZWNpZmljIENGTkVUIGlzc3VlcyB3aXRoIENGSG9zdCB0aHJvdHRsaW5n
LgorICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgPSA4OworCisg
ICAgLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRlIHNpdGVzLCBpdCBpcyBs
aWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBiZSBhYmxlIHRvIGNhY2hl
IHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRvbid0IHdhbnQKKyAgICAvLyB0byBuZWdhdGl2ZWx5
IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMnIHBlcmZvcm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIg
Y2FjaGVkIGVudHJpZXMgb3V0LgorICAgIC8vIElmIHdlIGVuZCB1cCB3aXRoIGxvdHMgb2YgbmFt
ZXMgdG8gcHJlZmV0Y2gsIHNvbWUgd2lsbCBiZSBkcm9wcGVkLgorICAgIHN0YXRpYyBjb25zdCBp
bnQgbWF4UmVxdWVzdHNUb1F1ZXVlID0gNjQ7CisKKyAgICAvLyBJZiB0aGVyZSB3ZXJlIHF1ZXVl
ZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNlbnQgc2ltdWx0YW5lb3VzbHksIGNoZWNrIHRoZSBz
dGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhpcyBkZWxheS4KKyAgICBzdGF0aWMgY29uc3QgZG91
YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4xOworCitwdWJsaWM6CisgICAgc3RhdGlj
IEROU1Jlc29sdmVRdWV1ZSYgc2hhcmVkKCkKKyAgICB7CisgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEROU1Jlc29sdmVRdWV1ZSwgcXVldWUsICgpKTsKKyAgICAgIHJldHVybiBxdWV1ZTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKKyAgICB2b2lkIGRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpCisgICAgeworICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3Jl
cXVlc3RzSW5GbGlnaHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHBsYXRmb3JtUHJv
eHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCk7CisgICAgdm9pZCBwbGF0Zm9ybVJlc29s
dmUoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIGZpcmVkKCk7CisKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9uYW1lczsKKyAgICBpbnQgbV9yZXF1ZXN0c0luRmxpZ2h0OworfTsKKworfQorCisj
ZW5kaWYgLy8gRE5TUmVzb2x2ZVF1ZXVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggYTZhOGQ5MjVmNzk2ZGY2ZDkwNjc1N2JjMzJj
NzExNWRmMjhhZGMyOC4uZDY0MDI2MDRiNmM5YWFkYjliNTdlNTRiNTk2NDk0MTBjMzgxMzUzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCkBAIC00NywyNSArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCi0vLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IENGSG9zdC4KLWNvbnN0IGludCBuYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsK
LQotLy8gQ29hbGVzY2UgcHJlZmV0Y2ggcmVxdWVzdHMgZm9yIHRoaXMgbG9uZyBiZWZvcmUgc2Vu
ZGluZyB0aGVtIG91dC4KLWNvbnN0IGRvdWJsZSBjb2FsZXNjZURlbGF5SW5TZWNvbmRzID0gMS4w
OwotCi0vLyBTZW5kaW5nIG1hbnkgRE5TIHJlcXVlc3RzIGF0IG9uY2UgY2FuIG92ZXJ3aGVsbSBz
b21lIGdhdGV3YXlzLiBDRkhvc3QgZG9lc24ndCBjdXJyZW50bHkgdGhyb3R0bGUgZm9yIHVzLCBz
ZWUgPHJkYXI6Ly84MTA1NTUwPi4KLWNvbnN0IGludCBtYXhTaW11bHRhbmVvdXNSZXF1ZXN0cyA9
IDg7Ci0KLS8vIEZvciBhIHBhZ2UgaGFzIGxpbmtzIHRvIG1hbnkgb3V0c2lkZSBzaXRlcywgaXQg
aXMgbGlrZWx5IHRoYXQgdGhlIHN5c3RlbSBETlMgcmVzb2x2ZXIgd29uJ3QgYmUgYWJsZSB0byBj
YWNoZSB0aGVtIGFsbCBhbnl3YXksIGFuZCB3ZSBkb24ndCB3YW50Ci0vLyB0byBuZWdhdGl2ZWx5
IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMnIHBlcmZvcm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIg
Y2FjaGVkIGVudHJpZXMgb3V0LgotLy8gSWYgd2UgZW5kIHVwIHdpdGggbG90cyBvZiBuYW1lcyB0
byBwcmVmZXRjaCwgc29tZSB3aWxsIGJlIGRyb3BwZWQuCi1jb25zdCBpbnQgbWF4UmVxdWVzdHNU
b1F1ZXVlID0gNjQ7Ci0KLS8vIElmIHRoZXJlIHdlcmUgcXVldWVkIG5hbWVzIHRoYXQgY291bGRu
J3QgYmUgc2VudCBzaW11bHRhbmVvdXNseSwgY2hlY2sgdGhlIHN0YXRlIG9mIHJlc29sdmVycyBh
ZnRlciB0aGlzIGRlbGF5LgotY29uc3QgZG91YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0g
MC4xOwotCi1zdGF0aWMgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKQor
Ym9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZl
cmVuY2VzKCkKIHsKICAgICAvLyBEb24ndCBkbyBETlMgcHJlZmV0Y2ggaWYgcHJveGllcyBhcmUg
aW52b2x2ZWQuIEZvciBtYW55IHByb3h5IHR5cGVzLCB0aGUgdXNlciBhZ2VudCBpcyBuZXZlciBl
eHBvc2VkCiAgICAgLy8gdG8gdGhlIElQIGFkZHJlc3MgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24u
IFF1ZXJ5aW5nIGFuIGludGVybmFsIEROUyBzZXJ2ZXIgbWF5IG5vdCBoZWxwIHBlcmZvcm1hbmNl
LApAQCAtOTYsOTQgKzc5LDIwIEBAIHN0YXRpYyBib29sIHByb3h5SXNFbmFibGVkSW5TeXN0ZW1Q
cmVmZXJlbmNlcygpCiAgICAgcmV0dXJuIGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKIH0KIAotY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2hhcmVkKCk7Ci0gICAgdm9pZCBhZGQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLQotcHJp
dmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQotICAgIHZvaWQgcmVzb2x2ZShjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsKLSAgICBIYXNoU2V0PFN0cmluZz4g
bV9uYW1lczsKLSAgICBpbnQgbV9yZXF1ZXN0c0luRmxpZ2h0OwotfTsKLQotRE5TUmVzb2x2ZVF1
ZXVlOjpETlNSZXNvbHZlUXVldWUoKQotICAgIDogbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi17Ci19
Ci0KLUROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoRE5TUmVzb2x2ZVF1ZXVlLCBuYW1lcywgKCkpOwotICAgIHJldHVy
biBuYW1lczsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmFkZChjb25zdCBTdHJpbmcmIG5h
bWUpCi17Ci0gICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91
Z2ggYXJlIGluIGZsaWdodCwgcmVzb2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBv
dmVyIGEgbGluaykuCi0gICAgaWYgKCFtX25hbWVzLnNpemUoKSkgewotICAgICAgICBpZiAocHJv
eHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KSA8PSBuYW1l
c1RvUmVzb2x2ZUltbWVkaWF0ZWx5KSB7Ci0gICAgICAgICAgICByZXNvbHZlKG5hbWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9y
ZXF1ZXN0c0luRmxpZ2h0KTsKLSAgICB9Ci0KLSAgICAvLyBJdCdzIGJldHRlciB0byBub3QgcHJl
ZmV0Y2ggc29tZSBuYW1lcyB0aGFuIHRvIGNsb2cgdGhlIHF1ZXVlLgotICAgIC8vIERyb3BwaW5n
IHRoZSBuZXdlc3QgbmFtZXMsIGJlY2F1c2Ugb24gYSBzaW5nbGUgcGFnZSwgdGhlc2UgYXJlIGxp
a2VseSB0byBiZSBiZWxvdyBvbGRlc3Qgb25lcy4KLSAgICBpZiAobV9uYW1lcy5zaXplKCkgPCBt
YXhSZXF1ZXN0c1RvUXVldWUpIHsKLSAgICAgICAgbV9uYW1lcy5hZGQobmFtZSk7Ci0gICAgICAg
IGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHN0YXJ0T25lU2hvdChjb2FsZXNjZURlbGF5
SW5TZWNvbmRzKTsKLSAgICB9Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpkZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKQotewotICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0
KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmZpcmVkKCkKLXsKLSAgICBpZiAocHJveHlJ
c0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgbV9uYW1lcy5jbGVhcigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IHJlcXVlc3RzQWxsb3dlZCA9IG1h
eFNpbXVsdGFuZW91c1JlcXVlc3RzIC0gbV9yZXF1ZXN0c0luRmxpZ2h0OwotCi0gICAgZm9yICg7
ICFtX25hbWVzLmlzRW1wdHkoKSAmJiByZXF1ZXN0c0FsbG93ZWQgPiAwOyAtLXJlcXVlc3RzQWxs
b3dlZCkgewotICAgICAgICBhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Ci0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgY3VycmVudE5hbWUgPSBtX25hbWVzLmJl
Z2luKCk7Ci0gICAgICAgIHJlc29sdmUoKmN1cnJlbnROYW1lKTsKLSAgICAgICAgbV9uYW1lcy5y
ZW1vdmUoY3VycmVudE5hbWUpOwotICAgIH0KLQotICAgIGlmICghbV9uYW1lcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHN0YXJ0T25lU2hvdChyZXRyeVJlc29sdmluZ0luU2Vjb25kcyk7Ci19Ci0KIHN0
YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlw
ZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQogewogICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2hhcmVkKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaGFy
ZWQoKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxy
ZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KICAgICBDRlJlbGVhc2UodGhlSG9zdCk7CiB9
CiAKLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gaG9zdG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygp
KTsKICAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9zdENyZWF0ZVdp
dGhOYW1lKDAsIGhvc3RuYW1lQ0YuZ2V0KCkpKTsKICAgICBpZiAoIWhvc3QpIHsKLSAgICAgICAg
YXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOworICAgICAgICBETlNSZXNvbHZl
UXVldWU6OnNoYXJlZCgpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAu
Y3BwCmluZGV4IDFlY2RiMzJjNjk3ZGQ0NmIzNTgwNWZkZTVmNjM0ZDUyYWI2MzAwMzYuLjFmMjJl
MjFjN2FjNDEyMTJkOGJmYjkxMmUyYmU2MzQ1NjRhMDM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAgLTI2LDI0ICsyNiw0MiBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TLmgiCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCiAKICNpbmNsdWRlICJHT3duUHRyU291cC5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gVGhlcmUgaXMg
bm8gY3VycmVudCByZWxpYWJsZSB3YXkgdG8ga25vdyBpZiB3ZSdyZSBiZWhpbmQgYSBwcm94eSBh
dAorLy8gdGhpcyBsZXZlbC4gV2UnbGwgaGF2ZSB0byBpbXBsZW1lbnQgaXQgaW4KKy8vIFNvdXBT
ZXNzaW9uL1NvdXBQcm94eVVSSVJlc29sdmVyL0dQcm94eVJlc29sdmVyCitib29sIEROU1Jlc29s
dmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3Vw
QWRkcmVzcyogc291cEFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Np
b25fcHJlZmV0Y2hfZG5zKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFt
ZS51dGY4KCkuZGF0YSgpLCAwLCByZXNvbHZlZENhbGxiYWNrLCAwKTsKK30KKwogdm9pZCBwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogeworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIiArIGhvc3RuYW1lOwotICAgIEdPd25QdHI8U291cFVS
ST4gc291cFVSSShzb3VwX3VyaV9uZXcodXJpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBpZiAoIXNv
dXBVUkkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91
cmkoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCkpOworICAg
IEROU1Jlc29sdmVRdWV1ZTo6c2hhcmVkKCkuYWRkKGhvc3RuYW1lKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZQppbmRleCA0MWY1MGViM2FiNTFhZTU1OGQyNzgxYzNhNDY4NjRlNThmMWEwY2U0
Li5iYzliMjRlYjBlZTQ0YzJkOWY4ZmEzZDVmNTkwODlmZDhkYjBhNGNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0Vm
bC5jbWFrZQpAQCAtMzQsNyArMzQsNyBAQCBGSU5EX1BBQ0tBR0UoWkxJQiBSRVFVSVJFRCkKIAog
RklORF9QQUNLQUdFKEdsaWIgUkVRVUlSRUQpCiBGSU5EX1BBQ0tBR0UoR3RocmVhZCBSRVFVSVJF
RCkKLUZJTkRfUEFDS0FHRShMaWJTb3VwMiAyLjM3LjIuMSBSRVFVSVJFRCkKK0ZJTkRfUEFDS0FH
RShMaWJTb3VwMiAyLjM3LjkyIFJFUVVJUkVEKQogU0VUKEVOQUJMRV9HTElCX1NVUFBPUlQgT04p
CiAKIFNFVChXVEZfVVNFX1NPVVAgMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBlYWRmNjJlYzMyZGRkYmQyMGNjZGIzZmFmZjNjN2NhOGU4ZmRm
NjQ3Li5lOTY2NTVjZmZhOGM4ZjFiYzFjNmE3NThmOWQzMWQxZjA2YTk2YjkyIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDMtMjIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW1NvdXBdIEROUyBwcmVmZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNl
bGYgaW4gdGhlIGZvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxNjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVtcCBsaWJzb3VwIGRlcGVuZGVuY3kgdXAgdG8gMi4zNy45MgorCisgICAgICAgICog
Z3RrL2poYnVpbGQubW9kdWxlczoKKwogMjAxMi0wMy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGJiLXdlYmtpdC1yZWwtNjQubG9jYWwuaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBVc2UgdGhlIGFuZ2xlLWJyYWNrZXQgZm9ybSB0byBpbmNsdWRlIHd0ZiBoZWFkZXJzCmRp
ZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQu
bW9kdWxlcwppbmRleCBlNmRlZTY4ZWY4NjEzNDU4ZTU3YzQ1MDA0ZjdlYjRmMTllMGJmMGI3Li43
ZTI5ZjJkOGRkN2RiODkzYWI4MDNkOTVjZGIxZTc2MWRkY2ExN2FiIDEwMDY0NAotLS0gYS9Ub29s
cy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAg
LTE1NCw5ICsxNTQsOSBAQAogICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVwIHBhY2thZ2U9
ImdsaWItbmV0d29ya2luZyIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDxicmFuY2ggbW9k
dWxlPSJsaWJzb3VwIiB2ZXJzaW9uPSIyLjM3LjIuMStnaXQiCisgICAgPGJyYW5jaCBtb2R1bGU9
ImxpYnNvdXAiIHZlcnNpb249IjIuMzcuOTIiCiAgICAgICAgICAgICByZXBvPSJnaXQuZ25vbWUu
b3JnIgotICAgICAgICAgICAgdGFnPSI1Y2JmYzQ4Y2FmNzZjZWQyZTI4ZWUwNmM5ZTQwNTIzMjcz
NjAxZGM2Ii8+CisgICAgICAgICAgICB0YWc9ImFmY2ZmNzExNWE2YzM2Y2EzZGU1YmM4ODk5NDE3
NGY1YTBlMDE5NTYiLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBpZD0iZm9udGNv
bmZpZyIgYXV0b2dlbi1zaD0iY29uZmlndXJlIj4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCBhNTMxZTA1ZGMyNDQ4YjIxODFkZDVjNzI3ZDQwNjQ5OWZhMjIyMDhhLi40
ZGFmMTRkN2I5MzFiYTFmZTVkMTdhZTYxNTVkM2ZmMTZjODliNDcwIDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMtMjIgIFNlcmdp
byBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NvdXBdIERO
UyBwcmVmZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNlbGYgaW4gdGhlIGZvb3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNjMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVtcCBsaWJzb3Vw
IGRlcGVuZGVuY3kgdXAgdG8gMi4zNy45Mi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wMy0yMSAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgdGhlIGZvcmdvdHRl
biBhZG1pbi5odG1sIGFmdGVyIHIxMDg5MTcuCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9j
b25maWd1cmUuYWMKaW5kZXggYjFkZDFhYjM5ZmVhNmMxZjAwYjU4YjdmODZjOTM1OGIyNzJiYTJl
OC4uY2M2ZGI1ODU2ZWEyMTJiNmRkYzQxOTBkMzM0NWEyOWM5MGMxYWEzNyAxMDA2NDQKLS0tIGEv
Y29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMzc4LDcgKzM3OCw3IEBAIENBSVJP
X1JFUVVJUkVEX1ZFUlNJT049MS4xMAogRk9OVENPTkZJR19SRVFVSVJFRF9WRVJTSU9OPTIuNAog
RlJFRVRZUEUyX1JFUVVJUkVEX1ZFUlNJT049OS4wCiBHTElCX1JFUVVJUkVEX1ZFUlNJT049Mi4z
MS4yCi1MSUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4zNy4yLjEKK0xJQlNPVVBfUkVRVUlSRURf
VkVSU0lPTj0yLjM3LjkyCiBMSUJYTUxfUkVRVUlSRURfVkVSU0lPTj0yLjYKIFBBTkdPX1JFUVVJ
UkVEX1ZFUlNJT049MS4yMS4wCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133320</attachid>
            <date>2012-03-22 12:15:39 -0700</date>
            <delta_ts>2012-03-22 12:59:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41630-20120322201537.patch</filename>
            <type>text/plain</type>
            <size>25649</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlZTM5ZDA2MWRhZmY2
YmYzMDAxMDVjZTc5ZjVjMmJjNDFlNTVkMi4uYjE1YzY0MTRhMTZmYTNhNGY0MGM0ZTM4NzZiMTg2
YTE2ZjUzZjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTb3VwXSBE
TlMgcHJlZmV0Y2hpbmcgc3BhbXMgcmVzb2x2ZXIsIHNob290cyBzZWxmIGluIHRoZSBmb290Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdlbmVy
aWMgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHRvIHRocm90dGxlIEROUworICAgICAgICBwcmVmZXRj
aGVzLiBJdCdzIGFuIGFic3RyYWN0IHJlZmFjdG9yaW5nIG9mIENGTkVUJ3MKKyAgICAgICAgRE5T
UmVzb2x2ZVF1ZXVlLiBQbGF0Zm9ybSBzcGVjaWZpYyBtZXRob2RzIGltcGxlbWVudGVkIGZvciBz
b3VwCisgICAgICAgIGFuZCBDRk5FVCBiYWNrZW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMg
cmVxdWlyZWQgYXMgd2UncmUganVzdCByZWZhY3RvcmluZyBleGlzdGluZyBjb2RlIHRvCisgICAg
ICAgIGJlIHVzZWQgYnkgdHdvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IGFkZGVkIG5ldyBmaWxlLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6YWRkKTogYWRkcyBhIG5ldyBob3N0IHRvIGJlIHByZWZldGNoZWQuCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmZpcmVkKTogYnkgdXNpbmcgYSBkZWxh
eSB3ZSBjb2FsZXNjZQorICAgICAgICBzZXZlcmFsIHByZWZldGNoIHJlcXVlc3RzIGFuZCB0cnkg
dG8gcmVzb2x2ZSB0aGVtIGFsbCBoZXJlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChETlNS
ZXNvbHZlUXVldWUpOiBjbGFzcyB0aGF0IGltcGxlbWVudHMgRE5TIHByZWZldGNoCisgICAgICAg
IHRocm90dGxpbmcgdXNpbmcgYSB0ZW1wbGF0ZSBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0
Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6cHJlZmV0Y2hETlMpOgorCiAyMDEyLTAzLTIxICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBIZWFwUHJvZmls
ZXI6IEhlYXAgc25hcHNob3Qgd29ya2VyIGhhcyB0byByZXBvcnQgdGhlIGVycm9ycyB0byB0aGUg
ZnJvbnQtZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlMmJjYjEwOWZjN2Iy
NTUyZjZmODMzYWI4YTllNDAzNjUyNmZjMTcwLi5mZWRhOTg0ZjI4ZDhhYTAxYjQwNGI3ZWQ1OGJi
MmYzNGYzNjVlMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzNzksNiAr
MzM3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWls
ZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggN2U2
OTkwNjJhYzVkNjJmOGNmYmYwYzk1YWZjOTA5MTc5Mjg4NGZjYi4uZDJiZjY3MzJjNWMwNjYzYTMz
MjIwMTczMDU0NzlmMWRjOGE5OGVmMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxMjQ5LDYgKzMxMjQ5LDE0IEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XEROU1Jlc29sdmVRdWV1ZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEROU1Jlc29sdmVRdWV1ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xGb3JtRGF0YS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmYy
YTE3MTNlYWQzNzI0MzU1NjE2MDczMWY5MmE0ZWUyODI3NDNkNi4uNDdmNzcyOWExMTJkMTAyODAy
NGE4ZjQzMGRjOTAxZmJlYzQ5OTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk3MCw2ICs1OTcwLDcgQEAKIAkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0
b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUYy
OTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3OEJCNzBFMzY3
QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi87IH07CiAJCUYzMTYzOTZCMTMyOTQ4MUEwMEE2
NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNCIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CiAJCUYzMTYzOTZDMTMyOTQ4MUEwMEE2NDlDQiAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCAqLzsgfTsKIAkJRjMxNjM5NkUxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzMTYzOTZEMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi87IH07CkBAIC04ODY0LDYgKzg4NjUsNyBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5
MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M2MDEy
ODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBT
dWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDRDMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMyMzYsNiArMTMyMzgsNyBAQAogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyog
bWF0aGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRleHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTFRleHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwNDIs
NiArMTUwNDUsOCBAQAogCQkJCTUxQTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFs
U3RvcmFnZS5jcHAgKi8sCiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICov
LAorCQkJCTdDNjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICov
LAorCQkJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywK
IAkJCQk1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovLAogCQkJCTUx
NEM3NjVCMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oICovLAogCQkJCTA4NUI5MkI4MEVG
REU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovLApAQCAtMjUyNzUsNiArMjUy
ODAsNyBAQAogCQkJCUZEMzE2MDkwMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUxMTU0NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRjM0RkU5MEU4MkY4MjcwMEY2MjdDRCAv
KiBETlNDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMjkzQjI3RTU2QzExMkYzNzNGRkYy
N0UgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNDMDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0JCNTlG
MzE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
TlNSZXNvbHZlUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MzYzYjY4Njc0M2VhMTZlOTQzNGNkMzYx
NmIzZGE4NzM5NTJkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjphZGQoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZXMgcXVldWVkLCBhbmQgZmV3IGVub3VnaCBhcmUgaW4g
ZmxpZ2h0LCByZXNvbHZlIGltbWVkaWF0ZWx5ICh0aGUgbW91c2UgbWF5IGJlIG92ZXIgYSBsaW5r
KS4KKyAgICBpZiAoIW1fbmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGlmIChwbGF0Zm9ybVByb3h5
SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCkgPD0gbmFtZXNU
b1Jlc29sdmVJbW1lZGlhdGVseSkgeworICAgICAgICAgICAgcGxhdGZvcm1SZXNvbHZlKGhvc3Ru
YW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdG9taWNEZWNy
ZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgfQorCisgICAgLy8gSXQncyBiZXR0ZXIg
dG8gbm90IHByZWZldGNoIHNvbWUgbmFtZXMgdGhhbiB0byBjbG9nIHRoZSBxdWV1ZS4KKyAgICAv
LyBEcm9wcGluZyB0aGUgbmV3ZXN0IG5hbWVzLCBiZWNhdXNlIG9uIGEgc2luZ2xlIHBhZ2UsIHRo
ZXNlIGFyZSBsaWtlbHkgdG8gYmUgYmVsb3cgb2xkZXN0IG9uZXMuCisgICAgaWYgKG1fbmFtZXMu
c2l6ZSgpIDwgbWF4UmVxdWVzdHNUb1F1ZXVlKSB7CisgICAgICAgIG1fbmFtZXMuYWRkKGhvc3Ru
YW1lKTsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAgc3RhcnRPbmVTaG90
KGNvYWxlc2NlRGVsYXlJblNlY29uZHMpOworICAgIH0KK30KKwordm9pZCBETlNSZXNvbHZlUXVl
dWU6OmZpcmVkKCkKK3sKKyAgICBpZiAocGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJl
ZmVyZW5jZXMoKSkgeworICAgICAgICBtX25hbWVzLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpbnQgcmVxdWVzdHNBbGxvd2VkID0gbWF4U2ltdWx0YW5lb3VzUmVxdWVz
dHMgLSBtX3JlcXVlc3RzSW5GbGlnaHQ7CisKKyAgICBmb3IgKDsgIW1fbmFtZXMuaXNFbXB0eSgp
ICYmIHJlcXVlc3RzQWxsb3dlZCA+IDA7IC0tcmVxdWVzdHNBbGxvd2VkKSB7CisgICAgICAgIGF0
b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICAgICAgSGFzaFNldDxTdHJp
bmc+OjppdGVyYXRvciBjdXJyZW50TmFtZSA9IG1fbmFtZXMuYmVnaW4oKTsKKyAgICAgICAgcGxh
dGZvcm1SZXNvbHZlKCpjdXJyZW50TmFtZSk7CisgICAgICAgIG1fbmFtZXMucmVtb3ZlKGN1cnJl
bnROYW1lKTsKKyAgICB9CisKKyAgICBpZiAoIW1fbmFtZXMuaXNFbXB0eSgpKQorICAgICAgICBz
dGFydE9uZVNob3QocmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTU2ZjNiOWM4YjNiNjBlNDhhZjU2NjMxOWIxYThkNjlk
ZGM1MWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEROU1Jlc29sdmVRdWV1ZV9oCisj
ZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCisKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVz
b2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7CisKK3ByaXZhdGU6CisgICAgLy8gV2hlbiBy
ZXNvbHZlIHF1ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJlc29sdXRpb24gcmVxdWVzdHMg
aW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dl
cmVkIGJ5IGhvdmVyaW5nKS4KKyAgICAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hv
dWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRo
ZSBETlMgcmVzb2x2ZXIuCisgICAgc3RhdGljIGNvbnN0IGludCBuYW1lc1RvUmVzb2x2ZUltbWVk
aWF0ZWx5ID0gNDsKKworICAgIC8vIENvYWxlc2NlIHByZWZldGNoIHJlcXVlc3RzIGZvciB0aGlz
IGxvbmcgYmVmb3JlIHNlbmRpbmcgdGhlbSBvdXQuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBj
b2FsZXNjZURlbGF5SW5TZWNvbmRzID0gMS4wOworCisgICAgLy8gU2VuZGluZyBtYW55IEROUyBy
ZXF1ZXN0cyBhdCBvbmNlIGNhbiBvdmVyd2hlbG0gc29tZSBnYXRld2F5cy4gU2VlIDxyZGFyOi8v
ODEwNTU1MD4gZm9yIHNwZWNpZmljIENGTkVUIGlzc3VlcyB3aXRoIENGSG9zdCB0aHJvdHRsaW5n
LgorICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgPSA4OworCisg
ICAgLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRlIHNpdGVzLCBpdCBpcyBs
aWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBiZSBhYmxlIHRvIGNhY2hl
IHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRvbid0IHdhbnQKKyAgICAvLyB0byBuZWdhdGl2ZWx5
IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMnIHBlcmZvcm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIg
Y2FjaGVkIGVudHJpZXMgb3V0LgorICAgIC8vIElmIHdlIGVuZCB1cCB3aXRoIGxvdHMgb2YgbmFt
ZXMgdG8gcHJlZmV0Y2gsIHNvbWUgd2lsbCBiZSBkcm9wcGVkLgorICAgIHN0YXRpYyBjb25zdCBp
bnQgbWF4UmVxdWVzdHNUb1F1ZXVlID0gNjQ7CisKKyAgICAvLyBJZiB0aGVyZSB3ZXJlIHF1ZXVl
ZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNlbnQgc2ltdWx0YW5lb3VzbHksIGNoZWNrIHRoZSBz
dGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhpcyBkZWxheS4KKyAgICBzdGF0aWMgY29uc3QgZG91
YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4xOworCitwdWJsaWM6CisgICAgc3RhdGlj
IEROU1Jlc29sdmVRdWV1ZSYgc2hhcmVkKCkKKyAgICB7CisgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEROU1Jlc29sdmVRdWV1ZSwgcXVldWUsICgpKTsKKyAgICAgIHJldHVybiBxdWV1ZTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKKyAgICB2b2lkIGRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpCisgICAgeworICAgICAgYXRvbWljRGVjcmVtZW50KCZtX3Jl
cXVlc3RzSW5GbGlnaHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHBsYXRmb3JtUHJv
eHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCk7CisgICAgdm9pZCBwbGF0Zm9ybVJlc29s
dmUoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIGZpcmVkKCk7CisKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9uYW1lczsKKyAgICBpbnQgbV9yZXF1ZXN0c0luRmxpZ2h0OworfTsKKworfQorCisj
ZW5kaWYgLy8gRE5TUmVzb2x2ZVF1ZXVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggYTZhOGQ5MjVmNzk2ZGY2ZDkwNjc1N2JjMzJj
NzExNWRmMjhhZGMyOC4uZDY0MDI2MDRiNmM5YWFkYjliNTdlNTRiNTk2NDk0MTBjMzgxMzUzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCkBAIC00NywyNSArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCi0vLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IENGSG9zdC4KLWNvbnN0IGludCBuYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsK
LQotLy8gQ29hbGVzY2UgcHJlZmV0Y2ggcmVxdWVzdHMgZm9yIHRoaXMgbG9uZyBiZWZvcmUgc2Vu
ZGluZyB0aGVtIG91dC4KLWNvbnN0IGRvdWJsZSBjb2FsZXNjZURlbGF5SW5TZWNvbmRzID0gMS4w
OwotCi0vLyBTZW5kaW5nIG1hbnkgRE5TIHJlcXVlc3RzIGF0IG9uY2UgY2FuIG92ZXJ3aGVsbSBz
b21lIGdhdGV3YXlzLiBDRkhvc3QgZG9lc24ndCBjdXJyZW50bHkgdGhyb3R0bGUgZm9yIHVzLCBz
ZWUgPHJkYXI6Ly84MTA1NTUwPi4KLWNvbnN0IGludCBtYXhTaW11bHRhbmVvdXNSZXF1ZXN0cyA9
IDg7Ci0KLS8vIEZvciBhIHBhZ2UgaGFzIGxpbmtzIHRvIG1hbnkgb3V0c2lkZSBzaXRlcywgaXQg
aXMgbGlrZWx5IHRoYXQgdGhlIHN5c3RlbSBETlMgcmVzb2x2ZXIgd29uJ3QgYmUgYWJsZSB0byBj
YWNoZSB0aGVtIGFsbCBhbnl3YXksIGFuZCB3ZSBkb24ndCB3YW50Ci0vLyB0byBuZWdhdGl2ZWx5
IGFmZmVjdCBvdGhlciBhcHBsaWNhdGlvbnMnIHBlcmZvcm1hbmNlIGJ5IHB1c2hpbmcgdGhlaXIg
Y2FjaGVkIGVudHJpZXMgb3V0LgotLy8gSWYgd2UgZW5kIHVwIHdpdGggbG90cyBvZiBuYW1lcyB0
byBwcmVmZXRjaCwgc29tZSB3aWxsIGJlIGRyb3BwZWQuCi1jb25zdCBpbnQgbWF4UmVxdWVzdHNU
b1F1ZXVlID0gNjQ7Ci0KLS8vIElmIHRoZXJlIHdlcmUgcXVldWVkIG5hbWVzIHRoYXQgY291bGRu
J3QgYmUgc2VudCBzaW11bHRhbmVvdXNseSwgY2hlY2sgdGhlIHN0YXRlIG9mIHJlc29sdmVycyBh
ZnRlciB0aGlzIGRlbGF5LgotY29uc3QgZG91YmxlIHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0g
MC4xOwotCi1zdGF0aWMgYm9vbCBwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKQor
Ym9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVByZWZl
cmVuY2VzKCkKIHsKICAgICAvLyBEb24ndCBkbyBETlMgcHJlZmV0Y2ggaWYgcHJveGllcyBhcmUg
aW52b2x2ZWQuIEZvciBtYW55IHByb3h5IHR5cGVzLCB0aGUgdXNlciBhZ2VudCBpcyBuZXZlciBl
eHBvc2VkCiAgICAgLy8gdG8gdGhlIElQIGFkZHJlc3MgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24u
IFF1ZXJ5aW5nIGFuIGludGVybmFsIEROUyBzZXJ2ZXIgbWF5IG5vdCBoZWxwIHBlcmZvcm1hbmNl
LApAQCAtOTYsOTQgKzc5LDIwIEBAIHN0YXRpYyBib29sIHByb3h5SXNFbmFibGVkSW5TeXN0ZW1Q
cmVmZXJlbmNlcygpCiAgICAgcmV0dXJuIGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKIH0KIAotY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2hhcmVkKCk7Ci0gICAgdm9pZCBhZGQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLQotcHJp
dmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQotICAgIHZvaWQgcmVzb2x2ZShjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsKLSAgICBIYXNoU2V0PFN0cmluZz4g
bV9uYW1lczsKLSAgICBpbnQgbV9yZXF1ZXN0c0luRmxpZ2h0OwotfTsKLQotRE5TUmVzb2x2ZVF1
ZXVlOjpETlNSZXNvbHZlUXVldWUoKQotICAgIDogbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi17Ci19
Ci0KLUROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoRE5TUmVzb2x2ZVF1ZXVlLCBuYW1lcywgKCkpOwotICAgIHJldHVy
biBuYW1lczsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmFkZChjb25zdCBTdHJpbmcmIG5h
bWUpCi17Ci0gICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91
Z2ggYXJlIGluIGZsaWdodCwgcmVzb2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBv
dmVyIGEgbGluaykuCi0gICAgaWYgKCFtX25hbWVzLnNpemUoKSkgewotICAgICAgICBpZiAocHJv
eHlJc0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KSA8PSBuYW1l
c1RvUmVzb2x2ZUltbWVkaWF0ZWx5KSB7Ci0gICAgICAgICAgICByZXNvbHZlKG5hbWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9y
ZXF1ZXN0c0luRmxpZ2h0KTsKLSAgICB9Ci0KLSAgICAvLyBJdCdzIGJldHRlciB0byBub3QgcHJl
ZmV0Y2ggc29tZSBuYW1lcyB0aGFuIHRvIGNsb2cgdGhlIHF1ZXVlLgotICAgIC8vIERyb3BwaW5n
IHRoZSBuZXdlc3QgbmFtZXMsIGJlY2F1c2Ugb24gYSBzaW5nbGUgcGFnZSwgdGhlc2UgYXJlIGxp
a2VseSB0byBiZSBiZWxvdyBvbGRlc3Qgb25lcy4KLSAgICBpZiAobV9uYW1lcy5zaXplKCkgPCBt
YXhSZXF1ZXN0c1RvUXVldWUpIHsKLSAgICAgICAgbV9uYW1lcy5hZGQobmFtZSk7Ci0gICAgICAg
IGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHN0YXJ0T25lU2hvdChjb2FsZXNjZURlbGF5
SW5TZWNvbmRzKTsKLSAgICB9Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpkZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKQotewotICAgIGF0b21pY0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0
KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmZpcmVkKCkKLXsKLSAgICBpZiAocHJveHlJ
c0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgbV9uYW1lcy5jbGVhcigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IHJlcXVlc3RzQWxsb3dlZCA9IG1h
eFNpbXVsdGFuZW91c1JlcXVlc3RzIC0gbV9yZXF1ZXN0c0luRmxpZ2h0OwotCi0gICAgZm9yICg7
ICFtX25hbWVzLmlzRW1wdHkoKSAmJiByZXF1ZXN0c0FsbG93ZWQgPiAwOyAtLXJlcXVlc3RzQWxs
b3dlZCkgewotICAgICAgICBhdG9taWNJbmNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7Ci0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgY3VycmVudE5hbWUgPSBtX25hbWVzLmJl
Z2luKCk7Ci0gICAgICAgIHJlc29sdmUoKmN1cnJlbnROYW1lKTsKLSAgICAgICAgbV9uYW1lcy5y
ZW1vdmUoY3VycmVudE5hbWUpOwotICAgIH0KLQotICAgIGlmICghbV9uYW1lcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHN0YXJ0T25lU2hvdChyZXRyeVJlc29sdmluZ0luU2Vjb25kcyk7Ci19Ci0KIHN0
YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlw
ZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQogewogICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2hhcmVkKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaGFy
ZWQoKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxy
ZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KICAgICBDRlJlbGVhc2UodGhlSG9zdCk7CiB9
CiAKLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gaG9zdG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygp
KTsKICAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9zdENyZWF0ZVdp
dGhOYW1lKDAsIGhvc3RuYW1lQ0YuZ2V0KCkpKTsKICAgICBpZiAoIWhvc3QpIHsKLSAgICAgICAg
YXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOworICAgICAgICBETlNSZXNvbHZl
UXVldWU6OnNoYXJlZCgpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAu
Y3BwCmluZGV4IDFlY2RiMzJjNjk3ZGQ0NmIzNTgwNWZkZTVmNjM0ZDUyYWI2MzAwMzYuLjFmMjJl
MjFjN2FjNDEyMTJkOGJmYjkxMmUyYmU2MzQ1NjRhMDM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAgLTI2LDI0ICsyNiw0MiBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TLmgiCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCiAKICNpbmNsdWRlICJHT3duUHRyU291cC5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gVGhlcmUgaXMg
bm8gY3VycmVudCByZWxpYWJsZSB3YXkgdG8ga25vdyBpZiB3ZSdyZSBiZWhpbmQgYSBwcm94eSBh
dAorLy8gdGhpcyBsZXZlbC4gV2UnbGwgaGF2ZSB0byBpbXBsZW1lbnQgaXQgaW4KKy8vIFNvdXBT
ZXNzaW9uL1NvdXBQcm94eVVSSVJlc29sdmVyL0dQcm94eVJlc29sdmVyCitib29sIEROU1Jlc29s
dmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3Vw
QWRkcmVzcyogc291cEFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Np
b25fcHJlZmV0Y2hfZG5zKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBob3N0bmFt
ZS51dGY4KCkuZGF0YSgpLCAwLCByZXNvbHZlZENhbGxiYWNrLCAwKTsKK30KKwogdm9pZCBwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogeworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIiArIGhvc3RuYW1lOwotICAgIEdPd25QdHI8U291cFVS
ST4gc291cFVSSShzb3VwX3VyaV9uZXcodXJpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBpZiAoIXNv
dXBVUkkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91
cmkoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCkpOworICAg
IEROU1Jlc29sdmVRdWV1ZTo6c2hhcmVkKCkuYWRkKGhvc3RuYW1lKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZQppbmRleCA0MWY1MGViM2FiNTFhZTU1OGQyNzgxYzNhNDY4NjRlNThmMWEwY2U0
Li41ZDAzYWM3OGI1NjVjMGQ1Zjk0NjQxYTJlMzgxNGY2ZGExZDA1Y2VkIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0Vm
bC5jbWFrZQpAQCAtMzIsOSArMzIsOSBAQCBGSU5EX1BBQ0tBR0UoSlBFRyBSRVFVSVJFRCkKIEZJ
TkRfUEFDS0FHRShQTkcgUkVRVUlSRUQpCiBGSU5EX1BBQ0tBR0UoWkxJQiBSRVFVSVJFRCkKIAot
RklORF9QQUNLQUdFKEdsaWIgUkVRVUlSRUQpCitGSU5EX1BBQ0tBR0UoR2xpYiAyLjMxLjggUkVR
VUlSRUQpCiBGSU5EX1BBQ0tBR0UoR3RocmVhZCBSRVFVSVJFRCkKLUZJTkRfUEFDS0FHRShMaWJT
b3VwMiAyLjM3LjIuMSBSRVFVSVJFRCkKK0ZJTkRfUEFDS0FHRShMaWJTb3VwMiAyLjM3LjkyIFJF
UVVJUkVEKQogU0VUKEVOQUJMRV9HTElCX1NVUFBPUlQgT04pCiAKIFNFVChXVEZfVVNFX1NPVVAg
MSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBl
YWRmNjJlYzMyZGRkYmQyMGNjZGIzZmFmZjNjN2NhOGU4ZmRmNjQ3Li40MjJkYzhhOWU0MDdlOWVh
OWRmMTg1NGIzYTA0NzUxODc5Y2RmMGFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDMtMjIgIFNlcmdpbyBW
aWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NvdXBdIEROUyBw
cmVmZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNlbGYgaW4gdGhlIGZvb3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNjMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVtcCBsaWJzb3VwIGFu
ZCBnbGliIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6CisK
IDIwMTItMDMtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBiYi13ZWJraXQtcmVs
LTY0LmxvY2FsLmlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNlIHRoZSBhbmdsZS1icmFj
a2V0IGZvcm0gdG8gaW5jbHVkZSB3dGYgaGVhZGVycwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2po
YnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggZTZkZWU2OGVm
ODYxMzQ1OGU1N2M0NTAwNGY3ZWI0ZjE5ZTBiZjBiNy4uYjIwZGYxMTAwNTlkMjQ5NjI0MjYzYTk2
OWFjNzhkMTVmZTJiMjIwNSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwor
KysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0xMjIsMTAgKzEyMiwxMCBAQAogICAg
IDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmZmaSIvPgogICAgIDwvZGVw
ZW5kZW5jaWVzPgotICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvZ2xpYi8y
LjMxL2dsaWItMi4zMS4yLnRhci54eiIgdmVyc2lvbj0iMi4zMS4yIgorICAgIDxicmFuY2ggbW9k
dWxlPSIvcHViL0dOT01FL3NvdXJjZXMvZ2xpYi8yLjMxL2dsaWItMi4zMS44LnRhci54eiIgdmVy
c2lvbj0iMi4zMS44IgogICAgICAgICAgICAgcmVwbz0iZnRwLmdub21lLm9yZyIKLSAgICAgICAg
ICAgIGhhc2g9InNoYTI1NjoxOWQ3OTIxNjcxYTQ4N2MzYzU3NTlhNTdkZjdiODUwOGFmZGJhZGQ3
NzY0ZDYyYTQ3YTgyZmZmN2IzOTkwMzJiIgotICAgICAgICAgICAgbWQ1c3VtPSIxY2JkZjMxNGQ3
Yzg3OTE2YTBjM2RjZTgzYWMwMjg1ZiIvPgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjFjZTNk
Mjc1MTg5MDAwZTFjNTBlOTJlZmNkYjY0NDdiYzI2MGIxZTVjNDE2OTliN2ExOTU5ZTNlMTkyOGZi
YWEiCisgICAgICAgICAgICBtZDVzdW09IjY5MDk2NjRmMjlmYWUyZjAwY2MzMTgxYzhjNmE2YWE3
Ii8+CiAgIDwvYXV0b3Rvb2xzPgogCiAgIDxhdXRvdG9vbHMgaWQ9ImdsaWItbmV0d29ya2luZyI+
CkBAIC0xNTQsOSArMTU0LDkgQEAKICAgICA8ZGVwZW5kZW5jaWVzPgogICAgICAgPGRlcCBwYWNr
YWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNo
IG1vZHVsZT0ibGlic291cCIgdmVyc2lvbj0iMi4zNy4yLjErZ2l0IgorICAgIDxicmFuY2ggbW9k
dWxlPSJsaWJzb3VwIiB2ZXJzaW9uPSIyLjM3LjkyIgogICAgICAgICAgICAgcmVwbz0iZ2l0Lmdu
b21lLm9yZyIKLSAgICAgICAgICAgIHRhZz0iNWNiZmM0OGNhZjc2Y2VkMmUyOGVlMDZjOWU0MDUy
MzI3MzYwMWRjNiIvPgorICAgICAgICAgICAgdGFnPSJhZmNmZjcxMTVhNmMzNmNhM2RlNWJjODg5
OTQxNzRmNWEwZTAxOTU2Ii8+CiAgIDwvYXV0b3Rvb2xzPgogCiAgIDxhdXRvdG9vbHMgaWQ9ImZv
bnRjb25maWciIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSI+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggYTUzMWUwNWRjMjQ0OGIyMTgxZGQ1YzcyN2Q0MDY0OTlmYTIyMjA4
YS4uZGRkNDA1YmJjYTAyOGRlYzhjZjBjNDg5MTlhYzI4YTUyYjIyZGExZCAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTIyICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTb3Vw
XSBETlMgcHJlZmV0Y2hpbmcgc3BhbXMgcmVzb2x2ZXIsIHNob290cyBzZWxmIGluIHRoZSBmb290
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1bXAgbGli
c291cCBhbmQgZ2xpYiBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZToKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMTItMDMtMjEgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRoZSBmb3Jnb3R0
ZW4gYWRtaW4uaHRtbCBhZnRlciByMTA4OTE3LgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIv
Y29uZmlndXJlLmFjCmluZGV4IGIxZGQxYWIzOWZlYTZjMWYwMGI1OGI3Zjg2YzkzNThiMjcyYmEy
ZTguLmY4OTMxMjRhMTZkNWRiMjYyYWYyYWNjOTIwOGMyZTBhNzE4OTFiOWIgMTAwNjQ0Ci0tLSBh
L2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTM3Nyw4ICszNzcsOCBAQCBmaQog
Q0FJUk9fUkVRVUlSRURfVkVSU0lPTj0xLjEwCiBGT05UQ09ORklHX1JFUVVJUkVEX1ZFUlNJT049
Mi40CiBGUkVFVFlQRTJfUkVRVUlSRURfVkVSU0lPTj05LjAKLUdMSUJfUkVRVUlSRURfVkVSU0lP
Tj0yLjMxLjIKLUxJQlNPVVBfUkVRVUlSRURfVkVSU0lPTj0yLjM3LjIuMQorR0xJQl9SRVFVSVJF
RF9WRVJTSU9OPTIuMzEuOAorTElCU09VUF9SRVFVSVJFRF9WRVJTSU9OPTIuMzcuOTIKIExJQlhN
TF9SRVFVSVJFRF9WRVJTSU9OPTIuNgogUEFOR09fUkVRVUlSRURfVkVSU0lPTj0xLjIxLjAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133325</attachid>
            <date>2012-03-22 12:59:19 -0700</date>
            <delta_ts>2012-03-23 02:39:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41630-20120322205917.patch</filename>
            <type>text/plain</type>
            <size>25597</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlZTM5ZDA2MWRhZmY2
YmYzMDAxMDVjZTc5ZjVjMmJjNDFlNTVkMi4uYjE1YzY0MTRhMTZmYTNhNGY0MGM0ZTM4NzZiMTg2
YTE2ZjUzZjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTb3VwXSBE
TlMgcHJlZmV0Y2hpbmcgc3BhbXMgcmVzb2x2ZXIsIHNob290cyBzZWxmIGluIHRoZSBmb290Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdlbmVy
aWMgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHRvIHRocm90dGxlIEROUworICAgICAgICBwcmVmZXRj
aGVzLiBJdCdzIGFuIGFic3RyYWN0IHJlZmFjdG9yaW5nIG9mIENGTkVUJ3MKKyAgICAgICAgRE5T
UmVzb2x2ZVF1ZXVlLiBQbGF0Zm9ybSBzcGVjaWZpYyBtZXRob2RzIGltcGxlbWVudGVkIGZvciBz
b3VwCisgICAgICAgIGFuZCBDRk5FVCBiYWNrZW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMg
cmVxdWlyZWQgYXMgd2UncmUganVzdCByZWZhY3RvcmluZyBleGlzdGluZyBjb2RlIHRvCisgICAg
ICAgIGJlIHVzZWQgYnkgdHdvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IGFkZGVkIG5ldyBmaWxlLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6YWRkKTogYWRkcyBhIG5ldyBob3N0IHRvIGJlIHByZWZldGNoZWQuCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmZpcmVkKTogYnkgdXNpbmcgYSBkZWxh
eSB3ZSBjb2FsZXNjZQorICAgICAgICBzZXZlcmFsIHByZWZldGNoIHJlcXVlc3RzIGFuZCB0cnkg
dG8gcmVzb2x2ZSB0aGVtIGFsbCBoZXJlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChETlNS
ZXNvbHZlUXVldWUpOiBjbGFzcyB0aGF0IGltcGxlbWVudHMgRE5TIHByZWZldGNoCisgICAgICAg
IHRocm90dGxpbmcgdXNpbmcgYSB0ZW1wbGF0ZSBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0
Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6cHJlZmV0Y2hETlMpOgorCiAyMDEyLTAzLTIxICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBIZWFwUHJvZmls
ZXI6IEhlYXAgc25hcHNob3Qgd29ya2VyIGhhcyB0byByZXBvcnQgdGhlIGVycm9ycyB0byB0aGUg
ZnJvbnQtZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlMmJjYjEwOWZjN2Iy
NTUyZjZmODMzYWI4YTllNDAzNjUyNmZjMTcwLi5mZWRhOTg0ZjI4ZDhhYTAxYjQwNGI3ZWQ1OGJi
MmYzNGYzNjVlMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzNzksNiAr
MzM3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWls
ZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggN2U2
OTkwNjJhYzVkNjJmOGNmYmYwYzk1YWZjOTA5MTc5Mjg4NGZjYi4uZDJiZjY3MzJjNWMwNjYzYTMz
MjIwMTczMDU0NzlmMWRjOGE5OGVmMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxMjQ5LDYgKzMxMjQ5LDE0IEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XEROU1Jlc29sdmVRdWV1ZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEROU1Jlc29sdmVRdWV1ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xGb3JtRGF0YS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmYy
YTE3MTNlYWQzNzI0MzU1NjE2MDczMWY5MmE0ZWUyODI3NDNkNi4uNDdmNzcyOWExMTJkMTAyODAy
NGE4ZjQzMGRjOTAxZmJlYzQ5OTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk3MCw2ICs1OTcwLDcgQEAKIAkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0
b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUYy
OTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3OEJCNzBFMzY3
QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi87IH07CiAJCUYzMTYzOTZCMTMyOTQ4MUEwMEE2
NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNCIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CiAJCUYzMTYzOTZDMTMyOTQ4MUEwMEE2NDlDQiAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCAqLzsgfTsKIAkJRjMxNjM5NkUxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzMTYzOTZEMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi87IH07CkBAIC04ODY0LDYgKzg4NjUsNyBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5
MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M2MDEy
ODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBT
dWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDRDMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMyMzYsNiArMTMyMzgsNyBAQAogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyog
bWF0aGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRleHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTFRleHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwNDIs
NiArMTUwNDUsOCBAQAogCQkJCTUxQTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFs
U3RvcmFnZS5jcHAgKi8sCiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICov
LAorCQkJCTdDNjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICov
LAorCQkJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywK
IAkJCQk1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovLAogCQkJCTUx
NEM3NjVCMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oICovLAogCQkJCTA4NUI5MkI4MEVG
REU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovLApAQCAtMjUyNzUsNiArMjUy
ODAsNyBAQAogCQkJCUZEMzE2MDkwMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUxMTU0NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRjM0RkU5MEU4MkY4MjcwMEY2MjdDRCAv
KiBETlNDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMjkzQjI3RTU2QzExMkYzNzNGRkYy
N0UgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNDMDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0JCNTlG
MzE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
TlNSZXNvbHZlUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ZDAxMTM3OTg2YmIzMWI3NzViNjJmMTZh
Zjk3MzUwZjU2ZjUyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9u
IHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNo
IGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCisvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywg
d2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcg
b3V0IHRoZSBETlMgcmVzb2x2ZXIuCitzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUlt
bWVkaWF0ZWx5ID0gNDsKKworLy8gQ29hbGVzY2UgcHJlZmV0Y2ggcmVxdWVzdHMgZm9yIHRoaXMg
bG9uZyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KK3N0YXRpYyBjb25zdCBkb3VibGUgZ0NvYWxl
c2NlRGVsYXlJblNlY29uZHMgPSAxLjA7CisKKy8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMg
YXQgb25jZSBjYW4gb3ZlcndoZWxtIHNvbWUgZ2F0ZXdheXMuIFNlZSA8cmRhcjovLzgxMDU1NTA+
IGZvciBzcGVjaWZpYyBDRk5FVCBpc3N1ZXMgd2l0aCBDRkhvc3QgdGhyb3R0bGluZy4KK3N0YXRp
YyBjb25zdCBpbnQgZ01heFNpbXVsdGFuZW91c1JlcXVlc3RzID0gODsKKworLy8gRm9yIGEgcGFn
ZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRlIHNpdGVzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUg
c3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBiZSBhYmxlIHRvIGNhY2hlIHRoZW0gYWxsIGFueXdh
eSwgYW5kIHdlIGRvbid0IHdhbnQKKy8vIHRvIG5lZ2F0aXZlbHkgYWZmZWN0IG90aGVyIGFwcGxp
Y2F0aW9ucycgcGVyZm9ybWFuY2UgYnkgcHVzaGluZyB0aGVpciBjYWNoZWQgZW50cmllcyBvdXQu
CisvLyBJZiB3ZSBlbmQgdXAgd2l0aCBsb3RzIG9mIG5hbWVzIHRvIHByZWZldGNoLCBzb21lIHdp
bGwgYmUgZHJvcHBlZC4KK3N0YXRpYyBjb25zdCBpbnQgZ01heFJlcXVlc3RzVG9RdWV1ZSA9IDY0
OworCisvLyBJZiB0aGVyZSB3ZXJlIHF1ZXVlZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNlbnQg
c2ltdWx0YW5lb3VzbHksIGNoZWNrIHRoZSBzdGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhpcyBk
ZWxheS4KK3N0YXRpYyBjb25zdCBkb3VibGUgZ1JldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4x
OworCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6YWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7
CisgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91Z2ggYXJl
IGluIGZsaWdodCwgcmVzb2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBvdmVyIGEg
bGluaykuCisgICAgaWYgKCFtX25hbWVzLnNpemUoKSkgeworICAgICAgICBpZiAocGxhdGZvcm1Q
cm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAoYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9IGdO
YW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5KSB7CisgICAgICAgICAgICBwbGF0Zm9ybVJlc29sdmUo
aG9zdG5hbWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGF0b21p
Y0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICB9CisKKyAgICAvLyBJdCdzIGJl
dHRlciB0byBub3QgcHJlZmV0Y2ggc29tZSBuYW1lcyB0aGFuIHRvIGNsb2cgdGhlIHF1ZXVlLgor
ICAgIC8vIERyb3BwaW5nIHRoZSBuZXdlc3QgbmFtZXMsIGJlY2F1c2Ugb24gYSBzaW5nbGUgcGFn
ZSwgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBiZWxvdyBvbGRlc3Qgb25lcy4KKyAgICBpZiAobV9u
YW1lcy5zaXplKCkgPCBnTWF4UmVxdWVzdHNUb1F1ZXVlKSB7CisgICAgICAgIG1fbmFtZXMuYWRk
KGhvc3RuYW1lKTsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAgc3RhcnRP
bmVTaG90KGdDb2FsZXNjZURlbGF5SW5TZWNvbmRzKTsKKyAgICB9Cit9CisKK3ZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjpmaXJlZCgpCit7CisgICAgaWYgKHBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5
c3RlbVByZWZlcmVuY2VzKCkpIHsKKyAgICAgICAgbV9uYW1lcy5jbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaW50IHJlcXVlc3RzQWxsb3dlZCA9IGdNYXhTaW11bHRhbmVv
dXNSZXF1ZXN0cyAtIG1fcmVxdWVzdHNJbkZsaWdodDsKKworICAgIGZvciAoOyAhbV9uYW1lcy5p
c0VtcHR5KCkgJiYgcmVxdWVzdHNBbGxvd2VkID4gMDsgLS1yZXF1ZXN0c0FsbG93ZWQpIHsKKyAg
ICAgICAgYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOworICAgICAgICBIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIGN1cnJlbnROYW1lID0gbV9uYW1lcy5iZWdpbigpOworICAg
ICAgICBwbGF0Zm9ybVJlc29sdmUoKmN1cnJlbnROYW1lKTsKKyAgICAgICAgbV9uYW1lcy5yZW1v
dmUoY3VycmVudE5hbWUpOworICAgIH0KKworICAgIGlmICghbV9uYW1lcy5pc0VtcHR5KCkpCisg
ICAgICAgIHN0YXJ0T25lU2hvdChnUmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGI5NmY4MTAzY2NlNGVjMzA5YmEzMzI2
NGZjYmIyZDFlNjNkZWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCisjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCisKKyNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRE5TUmVzb2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7CisKK3B1YmxpYzoKKyAgICBz
dGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaGFyZWQoKQorICAgIHsKKyAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoRE5TUmVzb2x2ZVF1ZXVlLCBxdWV1ZSwgKCkpOworICAgICAgcmV0dXJuIHF1ZXVl
OworICAgIH0KKworICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOworICAgIHZv
aWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCkKKyAgICB7CisgICAgICBhdG9taWNEZWNyZW1lbnQo
Jm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgcGxhdGZv
cm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKTsKKyAgICB2b2lkIHBsYXRmb3Jt
UmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgZmlyZWQoKTsKKworICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX25hbWVzOworICAgIGludCBtX3JlcXVlc3RzSW5GbGlnaHQ7Cit9OworCit9
CisKKyNlbmRpZiAvLyBETlNSZXNvbHZlUXVldWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCBhNmE4ZDkyNWY3OTZkZjZkOTA2NzU3
YmMzMmM3MTE1ZGYyOGFkYzI4Li5kNjQwMjYwNGI2YzlhYWRiOWI1N2U1NGI1OTY0OTQxMGMzODEz
NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RE5TLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKICNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDI1ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gV2hlbiByZXNvbHZlIHF1ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJl
c29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUg
cHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhvdmVyaW5nKS4KLS8vIEJ1dCBkdXJpbmcgcGFnZSBw
YXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2UgaWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0
cmVzc2luZyBvdXQgQ0ZIb3N0LgotY29uc3QgaW50IG5hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkg
PSA0OwotCi0vLyBDb2FsZXNjZSBwcmVmZXRjaCByZXF1ZXN0cyBmb3IgdGhpcyBsb25nIGJlZm9y
ZSBzZW5kaW5nIHRoZW0gb3V0LgotY29uc3QgZG91YmxlIGNvYWxlc2NlRGVsYXlJblNlY29uZHMg
PSAxLjA7Ci0KLS8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMgYXQgb25jZSBjYW4gb3Zlcndo
ZWxtIHNvbWUgZ2F0ZXdheXMuIENGSG9zdCBkb2Vzbid0IGN1cnJlbnRseSB0aHJvdHRsZSBmb3Ig
dXMsIHNlZSA8cmRhcjovLzgxMDU1NTA+LgotY29uc3QgaW50IG1heFNpbXVsdGFuZW91c1JlcXVl
c3RzID0gODsKLQotLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRlIHNpdGVz
LCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBiZSBhYmxl
IHRvIGNhY2hlIHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRvbid0IHdhbnQKLS8vIHRvIG5lZ2F0
aXZlbHkgYWZmZWN0IG90aGVyIGFwcGxpY2F0aW9ucycgcGVyZm9ybWFuY2UgYnkgcHVzaGluZyB0
aGVpciBjYWNoZWQgZW50cmllcyBvdXQuCi0vLyBJZiB3ZSBlbmQgdXAgd2l0aCBsb3RzIG9mIG5h
bWVzIHRvIHByZWZldGNoLCBzb21lIHdpbGwgYmUgZHJvcHBlZC4KLWNvbnN0IGludCBtYXhSZXF1
ZXN0c1RvUXVldWUgPSA2NDsKLQotLy8gSWYgdGhlcmUgd2VyZSBxdWV1ZWQgbmFtZXMgdGhhdCBj
b3VsZG4ndCBiZSBzZW50IHNpbXVsdGFuZW91c2x5LCBjaGVjayB0aGUgc3RhdGUgb2YgcmVzb2x2
ZXJzIGFmdGVyIHRoaXMgZGVsYXkuCi1jb25zdCBkb3VibGUgcmV0cnlSZXNvbHZpbmdJblNlY29u
ZHMgPSAwLjE7Ci0KLXN0YXRpYyBib29sIHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNl
cygpCitib29sIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVt
UHJlZmVyZW5jZXMoKQogewogICAgIC8vIERvbid0IGRvIEROUyBwcmVmZXRjaCBpZiBwcm94aWVz
IGFyZSBpbnZvbHZlZC4gRm9yIG1hbnkgcHJveHkgdHlwZXMsIHRoZSB1c2VyIGFnZW50IGlzIG5l
dmVyIGV4cG9zZWQKICAgICAvLyB0byB0aGUgSVAgYWRkcmVzcyBkdXJpbmcgbm9ybWFsIG9wZXJh
dGlvbi4gUXVlcnlpbmcgYW4gaW50ZXJuYWwgRE5TIHNlcnZlciBtYXkgbm90IGhlbHAgcGVyZm9y
bWFuY2UsCkBAIC05Niw5NCArNzksMjAgQEAgc3RhdGljIGJvb2wgcHJveHlJc0VuYWJsZWRJblN5
c3RlbVByZWZlcmVuY2VzKCkKICAgICByZXR1cm4gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94
eUNvdW50OwogfQogCi1jbGFzcyBETlNSZXNvbHZlUXVldWUgOiBwdWJsaWMgVGltZXJCYXNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaGFyZWQoKTsKLSAgICB2b2lk
IGFkZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
Ci1wcml2YXRlOgotICAgIEROU1Jlc29sdmVRdWV1ZSgpOwotCi0gICAgdm9pZCByZXNvbHZlKGNv
bnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpOwotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX25hbWVzOwotICAgIGludCBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci19OwotCi1ETlNSZXNv
bHZlUXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCi0gICAgOiBtX3JlcXVlc3RzSW5GbGlnaHQoMCkK
LXsKLX0KLQotRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNoYXJlZCgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChETlNSZXNvbHZlUXVldWUsIG5hbWVzLCAoKSk7Ci0gICAg
cmV0dXJuIG5hbWVzOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6YWRkKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLXsKLSAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZXMgcXVldWVkLCBhbmQgZmV3
IGVub3VnaCBhcmUgaW4gZmxpZ2h0LCByZXNvbHZlIGltbWVkaWF0ZWx5ICh0aGUgbW91c2UgbWF5
IGJlIG92ZXIgYSBsaW5rKS4KLSAgICBpZiAoIW1fbmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlm
IChwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9
IG5hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkpIHsKLSAgICAgICAgICAgIHJlc29sdmUobmFtZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYXRvbWljRGVjcmVtZW50
KCZtX3JlcXVlc3RzSW5GbGlnaHQpOwotICAgIH0KLQotICAgIC8vIEl0J3MgYmV0dGVyIHRvIG5v
dCBwcmVmZXRjaCBzb21lIG5hbWVzIHRoYW4gdG8gY2xvZyB0aGUgcXVldWUuCi0gICAgLy8gRHJv
cHBpbmcgdGhlIG5ld2VzdCBuYW1lcywgYmVjYXVzZSBvbiBhIHNpbmdsZSBwYWdlLCB0aGVzZSBh
cmUgbGlrZWx5IHRvIGJlIGJlbG93IG9sZGVzdCBvbmVzLgotICAgIGlmIChtX25hbWVzLnNpemUo
KSA8IG1heFJlcXVlc3RzVG9RdWV1ZSkgewotICAgICAgICBtX25hbWVzLmFkZChuYW1lKTsKLSAg
ICAgICAgaWYgKCFpc0FjdGl2ZSgpKQotICAgICAgICAgICAgc3RhcnRPbmVTaG90KGNvYWxlc2Nl
RGVsYXlJblNlY29uZHMpOwotICAgIH0KLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCi17Ci0gICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5G
bGlnaHQpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6ZmlyZWQoKQotewotICAgIGlmIChw
cm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkgewotICAgICAgICBtX25hbWVzLmNs
ZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgcmVxdWVzdHNBbGxvd2Vk
ID0gbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgLSBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0KLSAgICBm
b3IgKDsgIW1fbmFtZXMuaXNFbXB0eSgpICYmIHJlcXVlc3RzQWxsb3dlZCA+IDA7IC0tcmVxdWVz
dHNBbGxvd2VkKSB7Ci0gICAgICAgIGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0
KTsKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBjdXJyZW50TmFtZSA9IG1fbmFt
ZXMuYmVnaW4oKTsKLSAgICAgICAgcmVzb2x2ZSgqY3VycmVudE5hbWUpOwotICAgICAgICBtX25h
bWVzLnJlbW92ZShjdXJyZW50TmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX25hbWVzLmlzRW1w
dHkoKSkKLSAgICAgICAgc3RhcnRPbmVTaG90KHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzKTsKLX0K
LQogc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdElu
Zm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCiB7CiAgICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxs
IHNoYXJlZCgpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhh
cyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgogICAgIENGUmVsZWFzZSh0aGVIb3N0
KTsKIH0KIAotdm9pZCBETlNSZXNvbHZlUXVldWU6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwogICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5nZXQoKSkpOwogICAgIGlmICghaG9zdCkgewotICAg
ICAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgICAgIEROU1Jl
c29sdmVRdWV1ZTo6c2hhcmVkKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAw
LCAwLCAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
U291cC5jcHAKaW5kZXggMWVjZGIzMmM2OTdkZDQ2YjM1ODA1ZmRlNWY2MzRkNTJhYjYzMDAzNi4u
MWYyMmUyMWM3YWM0MTIxMmQ4YmZiOTEyZTJiZTYzNDU2NGEwMzlkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApAQCAtMjYsMjQgKzI2
LDQyIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBUaGVy
ZSBpcyBubyBjdXJyZW50IHJlbGlhYmxlIHdheSB0byBrbm93IGlmIHdlJ3JlIGJlaGluZCBhIHBy
b3h5IGF0CisvLyB0aGlzIGxldmVsLiBXZSdsbCBoYXZlIHRvIGltcGxlbWVudCBpdCBpbgorLy8g
U291cFNlc3Npb24vU291cFByb3h5VVJJUmVzb2x2ZXIvR1Byb3h5UmVzb2x2ZXIKK2Jvb2wgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygp
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNr
KFNvdXBBZGRyZXNzKiBzb3VwQWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiB1c2VyRGF0YSkK
K3sKKyAgICBETlNSZXNvbHZlUXVldWU6OnNoYXJlZCgpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgp
OworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBf
c2Vzc2lvbl9wcmVmZXRjaF9kbnMoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGhv
c3RuYW1lLnV0ZjgoKS5kYXRhKCksIDAsIHJlc29sdmVkQ2FsbGJhY2ssIDApOworfQorCiB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgdXJpID0gImh0dHA6Ly8iICsgaG9zdG5hbWU7Ci0gICAgR093blB0cjxT
b3VwVVJJPiBzb3VwVVJJKHNvdXBfdXJpX25ldyh1cmkudXRmOCgpLmRhdGEoKSkpOwotICAgIGlm
ICghc291cFVSSSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc291cF9zZXNzaW9uX3ByZXBhcmVf
Zm9yX3VyaShSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgc291cFVSSS5nZXQoKSk7
CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlCmluZGV4IDQxZjUwZWIzYWI1MWFlNTU4ZDI3ODFjM2E0Njg2NGU1OGYx
YTBjZTQuLjVkMDNhYzc4YjU2NWMwZDVmOTQ2NDFhMmUzODE0ZjZkYTFkMDVjZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCkBAIC0zMiw5ICszMiw5IEBAIEZJTkRfUEFDS0FHRShKUEVHIFJFUVVJUkVE
KQogRklORF9QQUNLQUdFKFBORyBSRVFVSVJFRCkKIEZJTkRfUEFDS0FHRShaTElCIFJFUVVJUkVE
KQogCi1GSU5EX1BBQ0tBR0UoR2xpYiBSRVFVSVJFRCkKK0ZJTkRfUEFDS0FHRShHbGliIDIuMzEu
OCBSRVFVSVJFRCkKIEZJTkRfUEFDS0FHRShHdGhyZWFkIFJFUVVJUkVEKQotRklORF9QQUNLQUdF
KExpYlNvdXAyIDIuMzcuMi4xIFJFUVVJUkVEKQorRklORF9QQUNLQUdFKExpYlNvdXAyIDIuMzcu
OTIgUkVRVUlSRUQpCiBTRVQoRU5BQkxFX0dMSUJfU1VQUE9SVCBPTikKIAogU0VUKFdURl9VU0Vf
U09VUCAxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGVhZGY2MmVjMzJkZGRiZDIwY2NkYjNmYWZmM2M3Y2E4ZThmZGY2NDcuLjQyMmRjOGE5ZTQw
N2U5ZWE5ZGYxODU0YjNhMDQ3NTE4NzljZGYwYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMy0yMiAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbU291cF0g
RE5TIHByZWZldGNoaW5nIHNwYW1zIHJlc29sdmVyLCBzaG9vdHMgc2VsZiBpbiB0aGUgZm9vdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdW1wIGxpYnNv
dXAgYW5kIGdsaWIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxl
czoKKwogMjAxMi0wMy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGJiLXdlYmtp
dC1yZWwtNjQubG9jYWwuaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgdGhlIGFuZ2xl
LWJyYWNrZXQgZm9ybSB0byBpbmNsdWRlIHd0ZiBoZWFkZXJzCmRpZmYgLS1naXQgYS9Ub29scy9n
dGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCBlNmRl
ZTY4ZWY4NjEzNDU4ZTU3YzQ1MDA0ZjdlYjRmMTllMGJmMGI3Li5iMjBkZjExMDA1OWQyNDk2MjQy
NjNhOTY5YWM3OGQxNWZlMmIyMjA1IDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1
bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTEyMiwxMCArMTIyLDEwIEBA
CiAgICAgPGRlcGVuZGVuY2llcz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGliZmZpIi8+CiAgICAg
PC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJyYW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9n
bGliLzIuMzEvZ2xpYi0yLjMxLjIudGFyLnh6IiB2ZXJzaW9uPSIyLjMxLjIiCisgICAgPGJyYW5j
aCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9nbGliLzIuMzEvZ2xpYi0yLjMxLjgudGFyLnh6
IiB2ZXJzaW9uPSIyLjMxLjgiCiAgICAgICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAg
ICAgICAgICAgaGFzaD0ic2hhMjU2OjE5ZDc5MjE2NzFhNDg3YzNjNTc1OWE1N2RmN2I4NTA4YWZk
YmFkZDc3NjRkNjJhNDdhODJmZmY3YjM5OTAzMmIiCi0gICAgICAgICAgICBtZDVzdW09IjFjYmRm
MzE0ZDdjODc5MTZhMGMzZGNlODNhYzAyODVmIi8+CisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6
MWNlM2QyNzUxODkwMDBlMWM1MGU5MmVmY2RiNjQ0N2JjMjYwYjFlNWM0MTY5OWI3YTE5NTllM2Ux
OTI4ZmJhYSIKKyAgICAgICAgICAgIG1kNXN1bT0iNjkwOTY2NGYyOWZhZTJmMDBjYzMxODFjOGM2
YTZhYTciLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBpZD0iZ2xpYi1uZXR3b3Jr
aW5nIj4KQEAgLTE1NCw5ICsxNTQsOSBAQAogICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDxi
cmFuY2ggbW9kdWxlPSJsaWJzb3VwIiB2ZXJzaW9uPSIyLjM3LjIuMStnaXQiCisgICAgPGJyYW5j
aCBtb2R1bGU9ImxpYnNvdXAiIHZlcnNpb249IjIuMzcuOTIiCiAgICAgICAgICAgICByZXBvPSJn
aXQuZ25vbWUub3JnIgotICAgICAgICAgICAgdGFnPSI1Y2JmYzQ4Y2FmNzZjZWQyZTI4ZWUwNmM5
ZTQwNTIzMjczNjAxZGM2Ii8+CisgICAgICAgICAgICB0YWc9ImFmY2ZmNzExNWE2YzM2Y2EzZGU1
YmM4ODk5NDE3NGY1YTBlMDE5NTYiLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBp
ZD0iZm9udGNvbmZpZyIgYXV0b2dlbi1zaD0iY29uZmlndXJlIj4KZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhNTMxZTA1ZGMyNDQ4YjIxODFkZDVjNzI3ZDQwNjQ5OWZh
MjIyMDhhLi5kZGQ0MDViYmNhMDI4ZGVjOGNmMGM0ODkxOWFjMjhhNTJiMjJkYTFkIDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMt
MjIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1NvdXBdIEROUyBwcmVmZXRjaGluZyBzcGFtcyByZXNvbHZlciwgc2hvb3RzIHNlbGYgaW4gdGhl
IGZvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
NjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVt
cCBsaWJzb3VwIGFuZCBnbGliIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wMy0y
MSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgdGhlIGZv
cmdvdHRlbiBhZG1pbi5odG1sIGFmdGVyIHIxMDg5MTcuCmRpZmYgLS1naXQgYS9jb25maWd1cmUu
YWMgYi9jb25maWd1cmUuYWMKaW5kZXggYjFkZDFhYjM5ZmVhNmMxZjAwYjU4YjdmODZjOTM1OGIy
NzJiYTJlOC4uZjg5MzEyNGExNmQ1ZGIyNjJhZjJhY2M5MjA4YzJlMGE3MTg5MWI5YiAxMDA2NDQK
LS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMzc3LDggKzM3Nyw4IEBA
IGZpCiBDQUlST19SRVFVSVJFRF9WRVJTSU9OPTEuMTAKIEZPTlRDT05GSUdfUkVRVUlSRURfVkVS
U0lPTj0yLjQKIEZSRUVUWVBFMl9SRVFVSVJFRF9WRVJTSU9OPTkuMAotR0xJQl9SRVFVSVJFRF9W
RVJTSU9OPTIuMzEuMgotTElCU09VUF9SRVFVSVJFRF9WRVJTSU9OPTIuMzcuMi4xCitHTElCX1JF
UVVJUkVEX1ZFUlNJT049Mi4zMS44CitMSUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4zNy45Mgog
TElCWE1MX1JFUVVJUkVEX1ZFUlNJT049Mi42CiBQQU5HT19SRVFVSVJFRF9WRVJTSU9OPTEuMjEu
MAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133450</attachid>
            <date>2012-03-23 02:39:22 -0700</date>
            <delta_ts>2012-03-27 14:19:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41630-20120323103919.patch</filename>
            <type>text/plain</type>
            <size>26910</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlZTM5ZDA2MWRhZmY2
YmYzMDAxMDVjZTc5ZjVjMmJjNDFlNTVkMi4uYjE1YzY0MTRhMTZmYTNhNGY0MGM0ZTM4NzZiMTg2
YTE2ZjUzZjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTb3VwXSBE
TlMgcHJlZmV0Y2hpbmcgc3BhbXMgcmVzb2x2ZXIsIHNob290cyBzZWxmIGluIHRoZSBmb290Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTYzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdlbmVy
aWMgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHRvIHRocm90dGxlIEROUworICAgICAgICBwcmVmZXRj
aGVzLiBJdCdzIGFuIGFic3RyYWN0IHJlZmFjdG9yaW5nIG9mIENGTkVUJ3MKKyAgICAgICAgRE5T
UmVzb2x2ZVF1ZXVlLiBQbGF0Zm9ybSBzcGVjaWZpYyBtZXRob2RzIGltcGxlbWVudGVkIGZvciBz
b3VwCisgICAgICAgIGFuZCBDRk5FVCBiYWNrZW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMg
cmVxdWlyZWQgYXMgd2UncmUganVzdCByZWZhY3RvcmluZyBleGlzdGluZyBjb2RlIHRvCisgICAg
ICAgIGJlIHVzZWQgYnkgdHdvIGRpZmZlcmVudCBwb3J0cy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IGFkZGVkIG5ldyBmaWxlLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6YWRkKTogYWRkcyBhIG5ldyBob3N0IHRvIGJlIHByZWZldGNoZWQuCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OmZpcmVkKTogYnkgdXNpbmcgYSBkZWxh
eSB3ZSBjb2FsZXNjZQorICAgICAgICBzZXZlcmFsIHByZWZldGNoIHJlcXVlc3RzIGFuZCB0cnkg
dG8gcmVzb2x2ZSB0aGVtIGFsbCBoZXJlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChETlNS
ZXNvbHZlUXVldWUpOiBjbGFzcyB0aGF0IGltcGxlbWVudHMgRE5TIHByZWZldGNoCisgICAgICAg
IHRocm90dGxpbmcgdXNpbmcgYSB0ZW1wbGF0ZSBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0
Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3RlbVBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOgorICAgICAgICAo
V2ViQ29yZTo6cHJlZmV0Y2hETlMpOgorCiAyMDEyLTAzLTIxICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBIZWFwUHJvZmls
ZXI6IEhlYXAgc25hcHNob3Qgd29ya2VyIGhhcyB0byByZXBvcnQgdGhlIGVycm9ycyB0byB0aGUg
ZnJvbnQtZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlMmJjYjEwOWZjN2Iy
NTUyZjZmODMzYWI4YTllNDAzNjUyNmZjMTcwLi5mZWRhOTg0ZjI4ZDhhYTAxYjQwNGI3ZWQ1OGJi
MmYzNGYzNjVlMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzNzksNiAr
MzM3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWls
ZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggN2U2
OTkwNjJhYzVkNjJmOGNmYmYwYzk1YWZjOTA5MTc5Mjg4NGZjYi4uZDJiZjY3MzJjNWMwNjYzYTMz
MjIwMTczMDU0NzlmMWRjOGE5OGVmMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxMjQ5LDYgKzMxMjQ5LDE0IEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XEROU1Jlc29sdmVRdWV1ZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEROU1Jlc29sdmVRdWV1ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xGb3JtRGF0YS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmYy
YTE3MTNlYWQzNzI0MzU1NjE2MDczMWY5MmE0ZWUyODI3NDNkNi4uNDdmNzcyOWExMTJkMTAyODAy
NGE4ZjQzMGRjOTAxZmJlYzQ5OTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk3MCw2ICs1OTcwLDcgQEAKIAkJRUQ1MDFE
QzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0
b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUYy
OTNCMjdFNTZDMTEyRjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3OEJCNzBFMzY3
QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi87IH07CiAJCUYzMTYzOTZCMTMyOTQ4MUEwMEE2
NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNCIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CiAJCUYzMTYzOTZDMTMyOTQ4MUEwMEE2NDlDQiAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCAqLzsgfTsKIAkJRjMxNjM5NkUxMzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzMTYzOTZEMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi87IH07CkBAIC04ODY0LDYgKzg4NjUsNyBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5
MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M2MDEy
ODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBT
dWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDRDMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMyMzYsNiArMTMyMzgsNyBAQAogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyog
bWF0aGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRleHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTFRleHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwNDIs
NiArMTUwNDUsOCBAQAogCQkJCTUxQTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFs
U3RvcmFnZS5jcHAgKi8sCiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICov
LAorCQkJCTdDNjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICov
LAorCQkJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywK
IAkJCQk1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovLAogCQkJCTUx
NEM3NjVCMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oICovLAogCQkJCTA4NUI5MkI4MEVG
REU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovLApAQCAtMjUyNzUsNiArMjUy
ODAsNyBAQAogCQkJCUZEMzE2MDkwMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUxMTU0NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRjM0RkU5MEU4MkY4MjcwMEY2MjdDRCAv
KiBETlNDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMjkzQjI3RTU2QzExMkYzNzNGRkYy
N0UgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNDMDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0JCNTlG
MzE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
TlNSZXNvbHZlUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ZDAxMTM3OTg2YmIzMWI3NzViNjJmMTZh
Zjk3MzUwZjU2ZjUyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9u
IHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNo
IGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCisvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywg
d2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcg
b3V0IHRoZSBETlMgcmVzb2x2ZXIuCitzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUlt
bWVkaWF0ZWx5ID0gNDsKKworLy8gQ29hbGVzY2UgcHJlZmV0Y2ggcmVxdWVzdHMgZm9yIHRoaXMg
bG9uZyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KK3N0YXRpYyBjb25zdCBkb3VibGUgZ0NvYWxl
c2NlRGVsYXlJblNlY29uZHMgPSAxLjA7CisKKy8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMg
YXQgb25jZSBjYW4gb3ZlcndoZWxtIHNvbWUgZ2F0ZXdheXMuIFNlZSA8cmRhcjovLzgxMDU1NTA+
IGZvciBzcGVjaWZpYyBDRk5FVCBpc3N1ZXMgd2l0aCBDRkhvc3QgdGhyb3R0bGluZy4KK3N0YXRp
YyBjb25zdCBpbnQgZ01heFNpbXVsdGFuZW91c1JlcXVlc3RzID0gODsKKworLy8gRm9yIGEgcGFn
ZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRlIHNpdGVzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUg
c3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBiZSBhYmxlIHRvIGNhY2hlIHRoZW0gYWxsIGFueXdh
eSwgYW5kIHdlIGRvbid0IHdhbnQKKy8vIHRvIG5lZ2F0aXZlbHkgYWZmZWN0IG90aGVyIGFwcGxp
Y2F0aW9ucycgcGVyZm9ybWFuY2UgYnkgcHVzaGluZyB0aGVpciBjYWNoZWQgZW50cmllcyBvdXQu
CisvLyBJZiB3ZSBlbmQgdXAgd2l0aCBsb3RzIG9mIG5hbWVzIHRvIHByZWZldGNoLCBzb21lIHdp
bGwgYmUgZHJvcHBlZC4KK3N0YXRpYyBjb25zdCBpbnQgZ01heFJlcXVlc3RzVG9RdWV1ZSA9IDY0
OworCisvLyBJZiB0aGVyZSB3ZXJlIHF1ZXVlZCBuYW1lcyB0aGF0IGNvdWxkbid0IGJlIHNlbnQg
c2ltdWx0YW5lb3VzbHksIGNoZWNrIHRoZSBzdGF0ZSBvZiByZXNvbHZlcnMgYWZ0ZXIgdGhpcyBk
ZWxheS4KK3N0YXRpYyBjb25zdCBkb3VibGUgZ1JldHJ5UmVzb2x2aW5nSW5TZWNvbmRzID0gMC4x
OworCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6YWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7
CisgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVzIHF1ZXVlZCwgYW5kIGZldyBlbm91Z2ggYXJl
IGluIGZsaWdodCwgcmVzb2x2ZSBpbW1lZGlhdGVseSAodGhlIG1vdXNlIG1heSBiZSBvdmVyIGEg
bGluaykuCisgICAgaWYgKCFtX25hbWVzLnNpemUoKSkgeworICAgICAgICBpZiAocGxhdGZvcm1Q
cm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAoYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9IGdO
YW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5KSB7CisgICAgICAgICAgICBwbGF0Zm9ybVJlc29sdmUo
aG9zdG5hbWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGF0b21p
Y0RlY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0KTsKKyAgICB9CisKKyAgICAvLyBJdCdzIGJl
dHRlciB0byBub3QgcHJlZmV0Y2ggc29tZSBuYW1lcyB0aGFuIHRvIGNsb2cgdGhlIHF1ZXVlLgor
ICAgIC8vIERyb3BwaW5nIHRoZSBuZXdlc3QgbmFtZXMsIGJlY2F1c2Ugb24gYSBzaW5nbGUgcGFn
ZSwgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBiZWxvdyBvbGRlc3Qgb25lcy4KKyAgICBpZiAobV9u
YW1lcy5zaXplKCkgPCBnTWF4UmVxdWVzdHNUb1F1ZXVlKSB7CisgICAgICAgIG1fbmFtZXMuYWRk
KGhvc3RuYW1lKTsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAgc3RhcnRP
bmVTaG90KGdDb2FsZXNjZURlbGF5SW5TZWNvbmRzKTsKKyAgICB9Cit9CisKK3ZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjpmaXJlZCgpCit7CisgICAgaWYgKHBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5
c3RlbVByZWZlcmVuY2VzKCkpIHsKKyAgICAgICAgbV9uYW1lcy5jbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaW50IHJlcXVlc3RzQWxsb3dlZCA9IGdNYXhTaW11bHRhbmVv
dXNSZXF1ZXN0cyAtIG1fcmVxdWVzdHNJbkZsaWdodDsKKworICAgIGZvciAoOyAhbV9uYW1lcy5p
c0VtcHR5KCkgJiYgcmVxdWVzdHNBbGxvd2VkID4gMDsgLS1yZXF1ZXN0c0FsbG93ZWQpIHsKKyAg
ICAgICAgYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpOworICAgICAgICBIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIGN1cnJlbnROYW1lID0gbV9uYW1lcy5iZWdpbigpOworICAg
ICAgICBwbGF0Zm9ybVJlc29sdmUoKmN1cnJlbnROYW1lKTsKKyAgICAgICAgbV9uYW1lcy5yZW1v
dmUoY3VycmVudE5hbWUpOworICAgIH0KKworICAgIGlmICghbV9uYW1lcy5pc0VtcHR5KCkpCisg
ICAgICAgIHN0YXJ0T25lU2hvdChnUmV0cnlSZXNvbHZpbmdJblNlY29uZHMpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGI5NmY4MTAzY2NlNGVjMzA5YmEzMzI2
NGZjYmIyZDFlNjNkZWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCisjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCisKKyNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRE5TUmVzb2x2ZVF1ZXVlIDogcHVibGljIFRpbWVyQmFzZSB7CisKK3B1YmxpYzoKKyAgICBz
dGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaGFyZWQoKQorICAgIHsKKyAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoRE5TUmVzb2x2ZVF1ZXVlLCBxdWV1ZSwgKCkpOworICAgICAgcmV0dXJuIHF1ZXVl
OworICAgIH0KKworICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOworICAgIHZv
aWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCkKKyAgICB7CisgICAgICBhdG9taWNEZWNyZW1lbnQo
Jm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgcGxhdGZv
cm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKTsKKyAgICB2b2lkIHBsYXRmb3Jt
UmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgZmlyZWQoKTsKKworICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX25hbWVzOworICAgIGludCBtX3JlcXVlc3RzSW5GbGlnaHQ7Cit9OworCit9
CisKKyNlbmRpZiAvLyBETlNSZXNvbHZlUXVldWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCBhNmE4ZDkyNWY3OTZkZjZkOTA2NzU3
YmMzMmM3MTE1ZGYyOGFkYzI4Li5kNjQwMjYwNGI2YzlhYWRiOWI1N2U1NGI1OTY0OTQxMGMzODEz
NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RE5TLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKICNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDI1ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gV2hlbiByZXNvbHZlIHF1ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJl
c29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUg
cHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhvdmVyaW5nKS4KLS8vIEJ1dCBkdXJpbmcgcGFnZSBw
YXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2UgaWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0
cmVzc2luZyBvdXQgQ0ZIb3N0LgotY29uc3QgaW50IG5hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkg
PSA0OwotCi0vLyBDb2FsZXNjZSBwcmVmZXRjaCByZXF1ZXN0cyBmb3IgdGhpcyBsb25nIGJlZm9y
ZSBzZW5kaW5nIHRoZW0gb3V0LgotY29uc3QgZG91YmxlIGNvYWxlc2NlRGVsYXlJblNlY29uZHMg
PSAxLjA7Ci0KLS8vIFNlbmRpbmcgbWFueSBETlMgcmVxdWVzdHMgYXQgb25jZSBjYW4gb3Zlcndo
ZWxtIHNvbWUgZ2F0ZXdheXMuIENGSG9zdCBkb2Vzbid0IGN1cnJlbnRseSB0aHJvdHRsZSBmb3Ig
dXMsIHNlZSA8cmRhcjovLzgxMDU1NTA+LgotY29uc3QgaW50IG1heFNpbXVsdGFuZW91c1JlcXVl
c3RzID0gODsKLQotLy8gRm9yIGEgcGFnZSBoYXMgbGlua3MgdG8gbWFueSBvdXRzaWRlIHNpdGVz
LCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgc3lzdGVtIEROUyByZXNvbHZlciB3b24ndCBiZSBhYmxl
IHRvIGNhY2hlIHRoZW0gYWxsIGFueXdheSwgYW5kIHdlIGRvbid0IHdhbnQKLS8vIHRvIG5lZ2F0
aXZlbHkgYWZmZWN0IG90aGVyIGFwcGxpY2F0aW9ucycgcGVyZm9ybWFuY2UgYnkgcHVzaGluZyB0
aGVpciBjYWNoZWQgZW50cmllcyBvdXQuCi0vLyBJZiB3ZSBlbmQgdXAgd2l0aCBsb3RzIG9mIG5h
bWVzIHRvIHByZWZldGNoLCBzb21lIHdpbGwgYmUgZHJvcHBlZC4KLWNvbnN0IGludCBtYXhSZXF1
ZXN0c1RvUXVldWUgPSA2NDsKLQotLy8gSWYgdGhlcmUgd2VyZSBxdWV1ZWQgbmFtZXMgdGhhdCBj
b3VsZG4ndCBiZSBzZW50IHNpbXVsdGFuZW91c2x5LCBjaGVjayB0aGUgc3RhdGUgb2YgcmVzb2x2
ZXJzIGFmdGVyIHRoaXMgZGVsYXkuCi1jb25zdCBkb3VibGUgcmV0cnlSZXNvbHZpbmdJblNlY29u
ZHMgPSAwLjE7Ci0KLXN0YXRpYyBib29sIHByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNl
cygpCitib29sIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVt
UHJlZmVyZW5jZXMoKQogewogICAgIC8vIERvbid0IGRvIEROUyBwcmVmZXRjaCBpZiBwcm94aWVz
IGFyZSBpbnZvbHZlZC4gRm9yIG1hbnkgcHJveHkgdHlwZXMsIHRoZSB1c2VyIGFnZW50IGlzIG5l
dmVyIGV4cG9zZWQKICAgICAvLyB0byB0aGUgSVAgYWRkcmVzcyBkdXJpbmcgbm9ybWFsIG9wZXJh
dGlvbi4gUXVlcnlpbmcgYW4gaW50ZXJuYWwgRE5TIHNlcnZlciBtYXkgbm90IGhlbHAgcGVyZm9y
bWFuY2UsCkBAIC05Niw5NCArNzksMjAgQEAgc3RhdGljIGJvb2wgcHJveHlJc0VuYWJsZWRJblN5
c3RlbVByZWZlcmVuY2VzKCkKICAgICByZXR1cm4gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94
eUNvdW50OwogfQogCi1jbGFzcyBETlNSZXNvbHZlUXVldWUgOiBwdWJsaWMgVGltZXJCYXNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaGFyZWQoKTsKLSAgICB2b2lk
IGFkZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
Ci1wcml2YXRlOgotICAgIEROU1Jlc29sdmVRdWV1ZSgpOwotCi0gICAgdm9pZCByZXNvbHZlKGNv
bnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpOwotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX25hbWVzOwotICAgIGludCBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci19OwotCi1ETlNSZXNv
bHZlUXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCi0gICAgOiBtX3JlcXVlc3RzSW5GbGlnaHQoMCkK
LXsKLX0KLQotRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNoYXJlZCgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChETlNSZXNvbHZlUXVldWUsIG5hbWVzLCAoKSk7Ci0gICAg
cmV0dXJuIG5hbWVzOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6YWRkKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLXsKLSAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZXMgcXVldWVkLCBhbmQgZmV3
IGVub3VnaCBhcmUgaW4gZmxpZ2h0LCByZXNvbHZlIGltbWVkaWF0ZWx5ICh0aGUgbW91c2UgbWF5
IGJlIG92ZXIgYSBsaW5rKS4KLSAgICBpZiAoIW1fbmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlm
IChwcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoYXRvbWljSW5jcmVtZW50KCZtX3JlcXVlc3RzSW5GbGlnaHQpIDw9
IG5hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkpIHsKLSAgICAgICAgICAgIHJlc29sdmUobmFtZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYXRvbWljRGVjcmVtZW50
KCZtX3JlcXVlc3RzSW5GbGlnaHQpOwotICAgIH0KLQotICAgIC8vIEl0J3MgYmV0dGVyIHRvIG5v
dCBwcmVmZXRjaCBzb21lIG5hbWVzIHRoYW4gdG8gY2xvZyB0aGUgcXVldWUuCi0gICAgLy8gRHJv
cHBpbmcgdGhlIG5ld2VzdCBuYW1lcywgYmVjYXVzZSBvbiBhIHNpbmdsZSBwYWdlLCB0aGVzZSBh
cmUgbGlrZWx5IHRvIGJlIGJlbG93IG9sZGVzdCBvbmVzLgotICAgIGlmIChtX25hbWVzLnNpemUo
KSA8IG1heFJlcXVlc3RzVG9RdWV1ZSkgewotICAgICAgICBtX25hbWVzLmFkZChuYW1lKTsKLSAg
ICAgICAgaWYgKCFpc0FjdGl2ZSgpKQotICAgICAgICAgICAgc3RhcnRPbmVTaG90KGNvYWxlc2Nl
RGVsYXlJblNlY29uZHMpOwotICAgIH0KLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OmRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCi17Ci0gICAgYXRvbWljRGVjcmVtZW50KCZtX3JlcXVlc3RzSW5G
bGlnaHQpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6ZmlyZWQoKQotewotICAgIGlmIChw
cm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKSkgewotICAgICAgICBtX25hbWVzLmNs
ZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgcmVxdWVzdHNBbGxvd2Vk
ID0gbWF4U2ltdWx0YW5lb3VzUmVxdWVzdHMgLSBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0KLSAgICBm
b3IgKDsgIW1fbmFtZXMuaXNFbXB0eSgpICYmIHJlcXVlc3RzQWxsb3dlZCA+IDA7IC0tcmVxdWVz
dHNBbGxvd2VkKSB7Ci0gICAgICAgIGF0b21pY0luY3JlbWVudCgmbV9yZXF1ZXN0c0luRmxpZ2h0
KTsKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBjdXJyZW50TmFtZSA9IG1fbmFt
ZXMuYmVnaW4oKTsKLSAgICAgICAgcmVzb2x2ZSgqY3VycmVudE5hbWUpOwotICAgICAgICBtX25h
bWVzLnJlbW92ZShjdXJyZW50TmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX25hbWVzLmlzRW1w
dHkoKSkKLSAgICAgICAgc3RhcnRPbmVTaG90KHJldHJ5UmVzb2x2aW5nSW5TZWNvbmRzKTsKLX0K
LQogc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdElu
Zm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCiB7CiAgICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaGFyZWQoKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxs
IHNoYXJlZCgpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhh
cyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgogICAgIENGUmVsZWFzZSh0aGVIb3N0
KTsKIH0KIAotdm9pZCBETlNSZXNvbHZlUXVldWU6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwogICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5nZXQoKSkpOwogICAgIGlmICghaG9zdCkgewotICAg
ICAgICBhdG9taWNEZWNyZW1lbnQoJm1fcmVxdWVzdHNJbkZsaWdodCk7CisgICAgICAgIEROU1Jl
c29sdmVRdWV1ZTo6c2hhcmVkKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAw
LCAwLCAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
U291cC5jcHAKaW5kZXggMWVjZGIzMmM2OTdkZDQ2YjM1ODA1ZmRlNWY2MzRkNTJhYjYzMDAzNi4u
MWYyMmUyMWM3YWM0MTIxMmQ4YmZiOTEyZTJiZTYzNDU2NGEwMzlkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApAQCAtMjYsMjQgKzI2
LDQyIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBUaGVy
ZSBpcyBubyBjdXJyZW50IHJlbGlhYmxlIHdheSB0byBrbm93IGlmIHdlJ3JlIGJlaGluZCBhIHBy
b3h5IGF0CisvLyB0aGlzIGxldmVsLiBXZSdsbCBoYXZlIHRvIGltcGxlbWVudCBpdCBpbgorLy8g
U291cFNlc3Npb24vU291cFByb3h5VVJJUmVzb2x2ZXIvR1Byb3h5UmVzb2x2ZXIKK2Jvb2wgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygp
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNr
KFNvdXBBZGRyZXNzKiBzb3VwQWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiB1c2VyRGF0YSkK
K3sKKyAgICBETlNSZXNvbHZlUXVldWU6OnNoYXJlZCgpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgp
OworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBf
c2Vzc2lvbl9wcmVmZXRjaF9kbnMoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGhv
c3RuYW1lLnV0ZjgoKS5kYXRhKCksIDAsIHJlc29sdmVkQ2FsbGJhY2ssIDApOworfQorCiB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgdXJpID0gImh0dHA6Ly8iICsgaG9zdG5hbWU7Ci0gICAgR093blB0cjxT
b3VwVVJJPiBzb3VwVVJJKHNvdXBfdXJpX25ldyh1cmkudXRmOCgpLmRhdGEoKSkpOwotICAgIGlm
ICghc291cFVSSSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc291cF9zZXNzaW9uX3ByZXBhcmVf
Zm9yX3VyaShSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgc291cFVSSS5nZXQoKSk7
CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlCmluZGV4IDQxZjUwZWIzYWI1MWFlNTU4ZDI3ODFjM2E0Njg2NGU1OGYx
YTBjZTQuLjVkMDNhYzc4YjU2NWMwZDVmOTQ2NDFhMmUzODE0ZjZkYTFkMDVjZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCkBAIC0zMiw5ICszMiw5IEBAIEZJTkRfUEFDS0FHRShKUEVHIFJFUVVJUkVE
KQogRklORF9QQUNLQUdFKFBORyBSRVFVSVJFRCkKIEZJTkRfUEFDS0FHRShaTElCIFJFUVVJUkVE
KQogCi1GSU5EX1BBQ0tBR0UoR2xpYiBSRVFVSVJFRCkKK0ZJTkRfUEFDS0FHRShHbGliIDIuMzEu
OCBSRVFVSVJFRCkKIEZJTkRfUEFDS0FHRShHdGhyZWFkIFJFUVVJUkVEKQotRklORF9QQUNLQUdF
KExpYlNvdXAyIDIuMzcuMi4xIFJFUVVJUkVEKQorRklORF9QQUNLQUdFKExpYlNvdXAyIDIuMzcu
OTIgUkVRVUlSRUQpCiBTRVQoRU5BQkxFX0dMSUJfU1VQUE9SVCBPTikKIAogU0VUKFdURl9VU0Vf
U09VUCAxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGVhZGY2MmVjMzJkZGRiZDIwY2NkYjNmYWZmM2M3Y2E4ZThmZGY2NDcuLjQyMmRjOGE5ZTQw
N2U5ZWE5ZGYxODU0YjNhMDQ3NTE4NzljZGYwYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMy0yMiAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbU291cF0g
RE5TIHByZWZldGNoaW5nIHNwYW1zIHJlc29sdmVyLCBzaG9vdHMgc2VsZiBpbiB0aGUgZm9vdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdW1wIGxpYnNv
dXAgYW5kIGdsaWIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxl
czoKKwogMjAxMi0wMy0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGJiLXdlYmtp
dC1yZWwtNjQubG9jYWwuaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgdGhlIGFuZ2xl
LWJyYWNrZXQgZm9ybSB0byBpbmNsdWRlIHd0ZiBoZWFkZXJzCmRpZmYgLS1naXQgYS9Ub29scy9l
ZmwvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcwppbmRleCBjMGE0
ZWVjOTI3MDA1Y2FmOWJlNmMxODZmYTI5M2ZiNDI5ZDE5ZWI2Li44YTljM2EzNGE3N2FkM2ZlMmJk
MzczOTY1ODNlNTkyZWQwZDQ1ZjUwIDEwMDY0NAotLS0gYS9Ub29scy9lZmwvamhidWlsZC5tb2R1
bGVzCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKQEAgLTEwOCwxMCArMTA4LDEwIEBA
CiAgICAgPGRlcGVuZGVuY2llcz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGliZmZpIi8+CiAgICAg
PC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJyYW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9n
bGliLzIuMzEvZ2xpYi0yLjMxLjIudGFyLnh6IiB2ZXJzaW9uPSIyLjMxLjIiCisgICAgPGJyYW5j
aCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9nbGliLzIuMzEvZ2xpYi0yLjMxLjgudGFyLnh6
IiB2ZXJzaW9uPSIyLjMxLjgiCiAgICAgICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAg
ICAgICAgICAgaGFzaD0ic2hhMjU2OjE5ZDc5MjE2NzFhNDg3YzNjNTc1OWE1N2RmN2I4NTA4YWZk
YmFkZDc3NjRkNjJhNDdhODJmZmY3YjM5OTAzMmIiCi0gICAgICAgICAgICBtZDVzdW09IjFjYmRm
MzE0ZDdjODc5MTZhMGMzZGNlODNhYzAyODVmIi8+CisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6
MWNlM2QyNzUxODkwMDBlMWM1MGU5MmVmY2RiNjQ0N2JjMjYwYjFlNWM0MTY5OWI3YTE5NTllM2Ux
OTI4ZmJhYSIKKyAgICAgICAgICAgIG1kNXN1bT0iNjkwOTY2NGYyOWZhZTJmMDBjYzMxODFjOGM2
YTZhYTciLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBpZD0iZ2xpYi1uZXR3b3Jr
aW5nIj4KQEAgLTE0MCw5ICsxNDAsOSBAQAogICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDxi
cmFuY2ggbW9kdWxlPSJsaWJzb3VwIiB2ZXJzaW9uPSIyLjM3LjIuMStnaXQiCisgICAgPGJyYW5j
aCBtb2R1bGU9ImxpYnNvdXAiIHZlcnNpb249IjIuMzcuOTIiCiAgICAgICAgICAgICByZXBvPSJn
aXQuZ25vbWUub3JnIgotICAgICAgICAgICAgdGFnPSI1Y2JmYzQ4Y2FmNzZjZWQyZTI4ZWUwNmM5
ZTQwNTIzMjczNjAxZGM2Ii8+CisgICAgICAgICAgICB0YWc9ImFmY2ZmNzExNWE2YzM2Y2EzZGU1
YmM4ODk5NDE3NGY1YTBlMDE5NTYiLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBp
ZD0iZm9udGNvbmZpZyIgYXV0b2dlbi1zaD0iY29uZmlndXJlIj4KZGlmZiAtLWdpdCBhL1Rvb2xz
L2d0ay9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCmluZGV4IGU2
ZGVlNjhlZjg2MTM0NThlNTdjNDUwMDRmN2ViNGYxOWUwYmYwYjcuLmIyMGRmMTEwMDU5ZDI0OTYy
NDI2M2E5NjlhYzc4ZDE1ZmUyYjIyMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1v
ZHVsZXMKKysrIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpAQCAtMTIyLDEwICsxMjIsMTAg
QEAKICAgICA8ZGVwZW5kZW5jaWVzPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJmZmkiLz4KICAg
ICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2Vz
L2dsaWIvMi4zMS9nbGliLTIuMzEuMi50YXIueHoiIHZlcnNpb249IjIuMzEuMiIKKyAgICA8YnJh
bmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2dsaWIvMi4zMS9nbGliLTIuMzEuOC50YXIu
eHoiIHZlcnNpb249IjIuMzEuOCIKICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCi0g
ICAgICAgICAgICBoYXNoPSJzaGEyNTY6MTlkNzkyMTY3MWE0ODdjM2M1NzU5YTU3ZGY3Yjg1MDhh
ZmRiYWRkNzc2NGQ2MmE0N2E4MmZmZjdiMzk5MDMyYiIKLSAgICAgICAgICAgIG1kNXN1bT0iMWNi
ZGYzMTRkN2M4NzkxNmEwYzNkY2U4M2FjMDI4NWYiLz4KKyAgICAgICAgICAgIGhhc2g9InNoYTI1
NjoxY2UzZDI3NTE4OTAwMGUxYzUwZTkyZWZjZGI2NDQ3YmMyNjBiMWU1YzQxNjk5YjdhMTk1OWUz
ZTE5MjhmYmFhIgorICAgICAgICAgICAgbWQ1c3VtPSI2OTA5NjY0ZjI5ZmFlMmYwMGNjMzE4MWM4
YzZhNmFhNyIvPgogICA8L2F1dG90b29scz4KIAogICA8YXV0b3Rvb2xzIGlkPSJnbGliLW5ldHdv
cmtpbmciPgpAQCAtMTU0LDkgKzE1NCw5IEBACiAgICAgPGRlcGVuZGVuY2llcz4KICAgICAgIDxk
ZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAg
PGJyYW5jaCBtb2R1bGU9ImxpYnNvdXAiIHZlcnNpb249IjIuMzcuMi4xK2dpdCIKKyAgICA8YnJh
bmNoIG1vZHVsZT0ibGlic291cCIgdmVyc2lvbj0iMi4zNy45MiIKICAgICAgICAgICAgIHJlcG89
ImdpdC5nbm9tZS5vcmciCi0gICAgICAgICAgICB0YWc9IjVjYmZjNDhjYWY3NmNlZDJlMjhlZTA2
YzllNDA1MjMyNzM2MDFkYzYiLz4KKyAgICAgICAgICAgIHRhZz0iYWZjZmY3MTE1YTZjMzZjYTNk
ZTViYzg4OTk0MTc0ZjVhMGUwMTk1NiIvPgogICA8L2F1dG90b29scz4KIAogICA8YXV0b3Rvb2xz
IGlkPSJmb250Y29uZmlnIiBhdXRvZ2VuLXNoPSJjb25maWd1cmUiPgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGE1MzFlMDVkYzI0NDhiMjE4MWRkNWM3MjdkNDA2NDk5
ZmEyMjIwOGEuLmRkZDQwNWJiY2EwMjhkZWM4Y2YwYzQ4OTE5YWMyOGE1MmIyMmRhMWQgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
My0yMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbU291cF0gRE5TIHByZWZldGNoaW5nIHNwYW1zIHJlc29sdmVyLCBzaG9vdHMgc2VsZiBpbiB0
aGUgZm9vdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDE2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
dW1wIGxpYnNvdXAgYW5kIGdsaWIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2U6CisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDEyLTAz
LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCB0aGUg
Zm9yZ290dGVuIGFkbWluLmh0bWwgYWZ0ZXIgcjEwODkxNy4KZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy
ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiMWRkMWFiMzlmZWE2YzFmMDBiNThiN2Y4NmM5MzU4
YjI3MmJhMmU4Li5mODkzMTI0YTE2ZDVkYjI2MmFmMmFjYzkyMDhjMmUwYTcxODkxYjliIDEwMDY0
NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zNzcsOCArMzc3LDgg
QEAgZmkKIENBSVJPX1JFUVVJUkVEX1ZFUlNJT049MS4xMAogRk9OVENPTkZJR19SRVFVSVJFRF9W
RVJTSU9OPTIuNAogRlJFRVRZUEUyX1JFUVVJUkVEX1ZFUlNJT049OS4wCi1HTElCX1JFUVVJUkVE
X1ZFUlNJT049Mi4zMS4yCi1MSUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4zNy4yLjEKK0dMSUJf
UkVRVUlSRURfVkVSU0lPTj0yLjMxLjgKK0xJQlNPVVBfUkVRVUlSRURfVkVSU0lPTj0yLjM3Ljky
CiBMSUJYTUxfUkVRVUlSRURfVkVSU0lPTj0yLjYKIFBBTkdPX1JFUVVJUkVEX1ZFUlNJT049MS4y
MS4wCiAK
</data>
<flag name="review"
          id="137444"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="137445"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>