<?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>110779</bug_id>
          
          <creation_ts>2013-02-25 11:53:51 -0800</creation_ts>
          <short_desc>WebKit API for enabling DOM logging for certain worlds</short_desc>
          <delta_ts>2013-03-03 00:58:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ankur Taly">ataly</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>marja</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>841166</commentid>
    <comment_count>0</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-25 11:53:51 -0800</bug_when>
    <thetext>The overall goal is to enable logging of DOM accesses carried out by 
JavaScript code running in V8, on a per-world basis. One use-case for such a
mechanism would be to allow the chromium side to obtain a log of DOM accesses carried
by extension code running in certain isolated worlds.

Our approach is to wrap specific DOM bindings for the world so that when invoked,
they first log a message into a log object provided by chromium side.

This patch adds initial plumbing for the above mechanism. In particular it adds the following 
methods to the WebKit chromium API:

* void WebCoverWrapping::setLog(int worldID, WebCoverWrapping::Log* log)

* bool WebCoverWrapping::hasLog(int worldID)

The method setLog simply adds an entry for the worldID and log, in a HashMap present in DOMWrapperWorld
(similar to the map for SecurityOrigin and ContentSecurityPolicy)

Subsequent WebCore patches would add code to appropriately wrap the DOM bindings for a world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841496</commentid>
    <comment_count>1</comment_count>
      <attachid>190175</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-25 18:23:34 -0800</bug_when>
    <thetext>Created attachment 190175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841514</commentid>
    <comment_count>2</comment_count>
      <attachid>190180</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-25 18:35:45 -0800</bug_when>
    <thetext>Created attachment 190180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841795</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-26 01:51:59 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842346</commentid>
    <comment_count>4</comment_count>
      <attachid>190180</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 13:57:58 -0800</bug_when>
    <thetext>Comment on attachment 190180
Patch

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

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:234
&gt; +    // HashMap doesn&apos;t support key 0, so we store the log at worldID + 1
&gt; +    coverWrappingLogs().set(worldID+1, log);

We should use an inline function to convert between the worldID and the key for this map.

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:39
&gt; +#if WEBKIT_USING_V8
&gt; +namespace v8 {
&gt; +class Value;
&gt; +template &lt;class T&gt; class Handle;
&gt; +}
&gt; +#endif

I think you can just #include v8.h in the API these days.

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:49
&gt; +        virtual void logMessage(const char*, int, const v8::Handle&lt;v8::Value&gt;*, const char*) { }

Should we have names for these arguments.  It&apos;s not clear what these arguments mean.

&gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:57
&gt; +    OwnPtr&lt;WebCoverWrapping::Log*&gt; m_coverWrappingLog;

OwnPtr&lt;WebCoverWrapping::Log*&gt;  &lt;-- Do you have an extra * here?

&gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:62
&gt; +    return DOMWrapperWorld::getCoverWrappingLog(worldID) ? true : false; 

There&apos;s no reason to use the &quot;? :&quot; operator here.  The compiler will convert it to bool for you.

&gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:67
&gt; +    DOMWrapperWorld::setCoverWrappingLog(worldID, new CoverWrappingLogContainer(log));

This is a &quot;naked new&quot;.  All calls to &quot;new&quot; should be wrapped in either adoptPtr or adoptRef, depending on whether CoverWrappingLogContainer is RefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842348</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 13:58:46 -0800</bug_when>
    <thetext>This patch also lacks tests.

How does this patch relate to the tracing code that haraken is adding to the bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842358</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-26 14:05:32 -0800</bug_when>
    <thetext>ataly: I&apos;ve been trying to insert TRACE_EVENT_STATE() macros into all DOM getters/setters/methods (https://bugs.webkit.org/show_bug.cgi?id=110667). Given that each DOM getter/setter/method takes within ~20 nano seconds, we cannot log something at every call. So TRACE_EVENT_STATE() just updates a global state variable so that a sampling profiler can read the global state periodically. The traced results will be integrated to about://tracing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842359</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 14:06:48 -0800</bug_when>
    <thetext>@haraken: The difference might be that Ankur is looking for a complete log, not just a sampled profile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842361</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-26 14:11:31 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; @haraken: The difference might be that Ankur is looking for a complete log, not just a sampled profile.

Previously complete logging was implemented by INC_STAT() macros. However, no one had used them and thus abarth@ removed them:)

ataly: What use cases do you have in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842384</commentid>
    <comment_count>9</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-26 14:41:03 -0800</bug_when>
    <thetext>@haraken: The main use-case is to have logging enabled for a given isolated world and for a set of DOM object-properties specified by a policy. Policy could be thought of as a set of pairs of the form &lt;cName, pName&gt; which mean that every access to the property pName of object of class cName must be logged. We intend to use this mechanism for having a DOM activity log for Chrome extensions.

The key constraint is to do this *only* for the specified isolated world, without touching the DOM bindings for any of the other worlds. So the other worlds do not see a direct slow down as a result of the logging.

It seems that your patch inserts TRACE_EVENT_STATE() in all DOM bindings regardless of the world.

@abarth: I will address your comments and update the patch soon.

Regarding tests: We have another patch lined up that actually implements the wrapping mechanism. In that patch we also have tests for the WebCoverWrapping API that associate a log object with a world, inject a script into the world and then check if all the expected DOM actions get logged. These tests would be placed in Source/WebKit/chromium/tests

Do you think we need tests for just this patch as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842397</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 14:52:42 -0800</bug_when>
    <thetext>&gt; Do you think we need tests for just this patch as well?

It&apos;s fine to defer the tests until you&apos;ve landed enough of the code to test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842399</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-26 14:53:24 -0800</bug_when>
    <thetext>ataly: I understood that TRACE_EVENT wouldn&apos;t be helpful for your use cases.

&gt; So the other worlds do not see a direct slow down as a result of the logging.

Wouldn&apos;t this insert an if branch to hot DOM attribute getters/setters/methods to check whether we should log or not? (If you are just planning to insert the logging to a small part of DOM getters/setters/methods that are not hot, it would be OK.)

&gt; Policy could be thought of as a set of pairs of the form &lt;cName, pName&gt; which mean that every access to the property pName of object of class cName must be logged. We intend to use this mechanism for having a DOM activity log for Chrome extensions.

I don&apos;t understand what a policy is. Is it something exposed to developers? If you just want to know real-world usage of DOM activities, you might be able to use FeatureObservers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842425</commentid>
    <comment_count>12</comment_count>
      <attachid>190180</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-26 15:15:13 -0800</bug_when>
    <thetext>Comment on attachment 190180
Patch

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

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:233
&gt; +    // HashMap doesn&apos;t support key 0, so we store the log at worldID + 1

You can use key 0 with the appropriate trait - see HashTraits.h.  Looks like you want something like UnsignedWithZeroKeyHashTraits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842438</commentid>
    <comment_count>13</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-26 15:31:25 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; ataly: I understood that TRACE_EVENT wouldn&apos;t be helpful for your use cases.
&gt; 
&gt; &gt; So the other worlds do not see a direct slow down as a result of the logging.
&gt; 
&gt; Wouldn&apos;t this insert an if branch to hot DOM attribute getters/setters/methods to check whether we should log or not? (If you are just planning to insert the logging to a small part of DOM getters/setters/methods that are not hot, it would be OK.)
&gt; 

Our goal was to avoid such an if statement as much as possible. Therefore the approach we take is to configure a different set of DOM templates for worlds with logging enabled. We check whether logging is needed, once, in the &quot;initializeIfNeeded&quot; method of DOMWindowShell and then set a flag in the context. Then we modify methods in V8DOMConfiguration to configure a different set of templates if the logging flag is enabled in the context. These templates have a wrapper around all the relevant callbacks, getters and setters, that first send a message to the log object and then forward the invocation.
(Ulfar E. has implemented this particular patch.). 

&gt; &gt; Policy could be thought of as a set of pairs of the form &lt;cName, pName&gt; which mean that every access to the property pName of object of class cName must be logged. We intend to use this mechanism for having a DOM activity log for Chrome extensions.
&gt; 
&gt; I don&apos;t understand what a policy is. Is it something exposed to developers? If you just want to know real-world usage of DOM activities, you might be able to use FeatureObservers.

A policy determines which DOM object-property accesses must be logged. For instance in the case of an extension we would be interested in logging all access to window.location, document.write, document.createElement etc., so we would add these to the policy. At the moment we plan to have a fixed policy for all worlds that is implemented as a hard-coded struct. Later we can add methods to WebCoverWrapping to also accept a per-world policy object from the chromium side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842460</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-26 15:48:52 -0800</bug_when>
    <thetext>Thanks for the clarification. I understood the situation.

&gt; Our goal was to avoid such an if statement as much as possible. Therefore the approach we take is to configure a different set of DOM templates for worlds with logging enabled. 

marja@ is implementing two ObjectTemplates; one for the main world and the other for isolated worlds, which will be helpful for you. Unless your change affects the main world, I don&apos;t have any concern about performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842574</commentid>
    <comment_count>15</comment_count>
      <attachid>190408</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-26 18:13:56 -0800</bug_when>
    <thetext>Created attachment 190408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842576</commentid>
    <comment_count>16</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-26 18:17:26 -0800</bug_when>
    <thetext>@abarth: I made the changes that you suggested and uploaded a new patch. Please see the comments below.

(In reply to comment #4)
&gt; (From update of attachment 190180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:234
&gt; &gt; +    // HashMap doesn&apos;t support key 0, so we store the log at worldID + 1
&gt; &gt; +    coverWrappingLogs().set(worldID+1, log);
&gt; 
&gt; We should use an inline function to convert between the worldID and the key for this map.
I used the HashTraits approach suggested by James Robinson.
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:39
&gt; &gt; +#if WEBKIT_USING_V8
&gt; &gt; +namespace v8 {
&gt; &gt; +class Value;
&gt; &gt; +template &lt;class T&gt; class Handle;
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; I think you can just #include v8.h in the API these days.
&gt; 
Done.
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:49
&gt; &gt; +        virtual void logMessage(const char*, int, const v8::Handle&lt;v8::Value&gt;*, const char*) { }
&gt; 
&gt; Should we have names for these arguments.  It&apos;s not clear what these arguments mean.
&gt; 
Done.

&gt; &gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:57
&gt; &gt; +    OwnPtr&lt;WebCoverWrapping::Log*&gt; m_coverWrappingLog;
&gt; 
&gt; OwnPtr&lt;WebCoverWrapping::Log*&gt;  &lt;-- Do you have an extra * here?
&gt; 
Yes, fixed that.
&gt; &gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:62
&gt; &gt; +    return DOMWrapperWorld::getCoverWrappingLog(worldID) ? true : false; 
&gt; 
&gt; There&apos;s no reason to use the &quot;? :&quot; operator here.  The compiler will convert it to bool for you.
&gt; 
Done.
&gt; &gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:67
&gt; &gt; +    DOMWrapperWorld::setCoverWrappingLog(worldID, new CoverWrappingLogContainer(log));
&gt; 
&gt; This is a &quot;naked new&quot;.  All calls to &quot;new&quot; should be wrapped in either adoptPtr or adoptRef, depending on whether CoverWrappingLogContainer is RefCounted.
The HashMap in DOMWrapperWorld now holds OwnPtrs, and the set call invokes adoptPtr on the raw pointer argument and then stores it in the HashMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842577</commentid>
    <comment_count>17</comment_count>
      <attachid>190408</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 18:25:20 -0800</bug_when>
    <thetext>Comment on attachment 190408
Patch

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

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:234
&gt; +    coverWrappingLogs().set(worldID, adoptPtr(log));

That usage is not correct.  This function should take a PassOwnPtr as an argument.  Please call adoptPtr immediately after calling new.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843252</commentid>
    <comment_count>18</comment_count>
      <attachid>190556</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-27 10:50:03 -0800</bug_when>
    <thetext>Created attachment 190556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843297</commentid>
    <comment_count>19</comment_count>
      <attachid>190556</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-27 11:24:38 -0800</bug_when>
    <thetext>Comment on attachment 190556
Patch

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

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:237
&gt; +V8DOMCoverWrappingLog* DOMWrapperWorld::getCoverWrappingLog(int worldID)

Every DOM call will now have a hash lookup to see if it has a logger?

Maybe we should store the logger on the DOMWrapperWorld object?

&gt; Source/WebCore/bindings/v8/V8DOMCoverWrappingLog.h:38
&gt; +class V8DOMCoverWrappingLog {

What is a CoverWrapping?  Also, this isn&apos;t a log, it&apos;s a logger.  Perhaps we should call this a V8DOMLogger ?

&gt; Source/WebCore/bindings/v8/V8DOMCoverWrappingLog.h:42
&gt; +    virtual void logMessage(const char*, int, const v8::Handle&lt;v8::Value&gt;*, const char*) { }

logMessage -&gt; log   (The word &quot;message&quot; doesn&apos;t mean anything here.)

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:40
&gt; +class WebCoverWrapping {

What is a WebCoverWrapping?

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:42
&gt; +    class Log {

Log -&gt; Logger

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:46
&gt; +        virtual void logMessage(const char* apiCall, int argc, const v8::Handle&lt;v8::Value&gt;* args, const char* extra) { }

logMessage -&gt; log

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:51
&gt; +    static bool hasLog(int worldID);

Why is this API needed?

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:54
&gt; +    // Sets the provided log object for the world identified 
&gt; +    // by worldID (worldID may be 0 identifying the main world).

I thought we weren&apos;t going to support installing a logger for the main world?

&gt; Source/WebKit/chromium/public/WebCoverWrapping.h:55
&gt; +    static void setLog(int worldID, Log*);

I would just make this a function in the global scope (inside the WebKit namespace):

setDOMLogger(int worldID, WebDOMLogger*);

Can you clear a logger by supplying a null for the second argument?  Are we going to call the logger for every API, or are we going to filter?  Have you measured the performance overhead of (1) supporting this feature even without setting a logger and (2) when logging is turned on?

&gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:44
&gt; +    explicit CoverWrappingLogContainer(WebCoverWrapping::Log* log)

This class should take a PassOwnPtr rather than a raw pointer.

&gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:50
&gt; +#if WEBKIT_USING_V8

This ifdef isn&apos;t needed.  We always use V8.

&gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:67
&gt; +    DOMWrapperWorld::setCoverWrappingLog(worldID, adoptPtr(new CoverWrappingLogContainer(log)));

We should call adoptPtr(log) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843595</commentid>
    <comment_count>20</comment_count>
      <attachid>190625</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-27 16:07:27 -0800</bug_when>
    <thetext>Created attachment 190625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843596</commentid>
    <comment_count>21</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-27 16:10:24 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 190556 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190556&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:237
&gt; &gt; +V8DOMCoverWrappingLog* DOMWrapperWorld::getCoverWrappingLog(int worldID)
&gt; 
&gt; Every DOM call will now have a hash lookup to see if it has a logger?
No, we can avoid that. DOM loggers can be cached in perContextData during context initialization
and all DOM wrappers would pick them up from there.
&gt; 
&gt; Maybe we should store the logger on the DOMWrapperWorld object?
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8DOMCoverWrappingLog.h:38
&gt; &gt; +class V8DOMCoverWrappingLog {
&gt; 
&gt; What is a CoverWrapping?  Also, this isn&apos;t a log, it&apos;s a logger.  Perhaps we should call this a V8DOMLogger ?
Yes, thank you for that suggestion. I changed it to &quot;Logger&quot;.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8DOMCoverWrappingLog.h:42
&gt; &gt; +    virtual void logMessage(const char*, int, const v8::Handle&lt;v8::Value&gt;*, const char*) { }
&gt; 
&gt; logMessage -&gt; log   (The word &quot;message&quot; doesn&apos;t mean anything here.)
Done.
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:40
&gt; &gt; +class WebCoverWrapping {
&gt; 
&gt; What is a WebCoverWrapping?
The class is now called &quot;WebDOMActivityLogger&quot;
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:42
&gt; &gt; +    class Log {
&gt; 
&gt; Log -&gt; Logger
Done.
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:46
&gt; &gt; +        virtual void logMessage(const char* apiCall, int argc, const v8::Handle&lt;v8::Value&gt;* args, const char* extra) { }
&gt; 
&gt; logMessage -&gt; log
Done.
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:51
&gt; &gt; +    static bool hasLog(int worldID);
&gt; 
&gt; Why is this API needed?
This is needed by the Chromium side to figure out if a logger has already been set for an isolated world.
In such a case we can avoid constructing a new logger and overwriting the old one. For instance for scripts injected using the extension API tabs.executeCode, we may not want to set a fresh logger if there already exists a logger set for the world (from say a previous tabs.executeCode call by the same extension).
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:54
&gt; &gt; +    // Sets the provided log object for the world identified 
&gt; &gt; +    // by worldID (worldID may be 0 identifying the main world).
&gt; 
&gt; I thought we weren&apos;t going to support installing a logger for the main world?

Logging can be enabled for any world. The guarantee is that the DOM bindings for all
those worlds for which logging is not enabled would not be affected. We include the main world
to log DOM activity inside extension background pages.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:55
&gt; &gt; +    static void setLog(int worldID, Log*);
&gt; 
&gt; I would just make this a function in the global scope (inside the WebKit namespace):
Done.

&gt; 
&gt; setDOMLogger(int worldID, WebDOMLogger*);
&gt; 
&gt; Can you clear a logger by supplying a null for the second argument?  Are we going to call the logger for every API, or are we going to filter?  Have you measured the performance overhead of (1) supporting this feature even without setting a logger and (2) when logging is turned on?

I changed the implementation of setDOMActivityLogger so that it does nothing when supplied with a Null argument. This way we can have the invariant that all DOMActivityLoggerContainers in DOMWrapperWorld
would have non-null WebDOMActivityLoggers embedded in them. 

The logger will be invoked on all DOM API calls that are covered by the policy. 
To begin with we will have a small policy that includes critical calls like document.write, document.createElement, document.appendChild, window.location and so on.

We do not have any performance measurements at the moment but we do plan to have them in the near future. 
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:44
&gt; &gt; +    explicit CoverWrappingLogContainer(WebCoverWrapping::Log* log)
&gt; 
&gt; This class should take a PassOwnPtr rather than a raw pointer.
&gt; 
Done.
&gt; &gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:50
&gt; &gt; +#if WEBKIT_USING_V8
&gt; 
&gt; This ifdef isn&apos;t needed.  We always use V8.
Done.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebCoverWrapping.cpp:67
&gt; &gt; +    DOMWrapperWorld::setCoverWrappingLog(worldID, adoptPtr(new CoverWrappingLogContainer(log)));
&gt; 
&gt; We should call adoptPtr(log) here.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843603</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-27 16:18:44 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #19)
&gt; &gt; (From update of attachment 190556 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190556&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:54
&gt; &gt; &gt; +    // Sets the provided log object for the world identified 
&gt; &gt; &gt; +    // by worldID (worldID may be 0 identifying the main world).
&gt; &gt; 
&gt; &gt; I thought we weren&apos;t going to support installing a logger for the main world?
&gt; 
&gt; Logging can be enabled for any world. The guarantee is that the DOM bindings for all
&gt; those worlds for which logging is not enabled would not be affected. We include the main world
&gt; to log DOM activity inside extension background pages.

I see.  Won&apos;t you need to do the hash lookup to see if there is a logger configured for a world?  That seems like it will impact performance even if no logger is configured.

&gt; The logger will be invoked on all DOM API calls that are covered by the policy. 
&gt; To begin with we will have a small policy that includes critical calls like document.write, document.createElement, document.appendChild, window.location and so on.

Do you plan to teach WebKit about this policy, or does WebKit always just call the log function?  Maybe the answer to this question is related to my previous question and the issue is just that I don&apos;t understand this part of the design.

&gt; We do not have any performance measurements at the moment but we do plan to have them in the near future. 

Would you be willing to do some performance measurements before landing this patch?  The performance aspects are an important consideration here.  I would be interested in knowing the overhead for the following cases:

1) No logging configured for world.
2) Logging configured for world, but the API is not logged according to the policy.
3) Logging is configured for world, and the API is actually logged.

In particular, I&apos;m curious how this affects Dromeo&apos;s dom-traverse benchmark in these cases.  You can find dom-traverse in the PerformanceTests directory.  You can find more information about PerformaceTests on this wiki page:

http://trac.webkit.org/wiki/Performance%20Tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843614</commentid>
    <comment_count>23</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-27 16:48:00 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; (From update of attachment 190556 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190556&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:54
&gt; &gt; &gt; &gt; +    // Sets the provided log object for the world identified 
&gt; &gt; &gt; &gt; +    // by worldID (worldID may be 0 identifying the main world).
&gt; &gt; &gt; 
&gt; &gt; &gt; I thought we weren&apos;t going to support installing a logger for the main world?
&gt; &gt; 
&gt; &gt; Logging can be enabled for any world. The guarantee is that the DOM bindings for all
&gt; &gt; those worlds for which logging is not enabled would not be affected. We include the main world
&gt; &gt; to log DOM activity inside extension background pages.
&gt; 
&gt; I see.  Won&apos;t you need to do the hash lookup to see if there is a logger configured for a world?  That seems like it will impact performance even if no logger is configured.

Yes for all worlds there will be a one-time HashMap lookup while initializing the context. (we consider the existence of a logger as an indication from the chromium side that logging should be enabled for that world).

&gt; 
&gt; &gt; The logger will be invoked on all DOM API calls that are covered by the policy. 
&gt; &gt; To begin with we will have a small policy that includes critical calls like document.write, document.createElement, document.appendChild, window.location and so on.
&gt; 
&gt; Do you plan to teach WebKit about this policy, or does WebKit always just call the log function?  Maybe the answer to this question is related to my previous question and the issue is just that I don&apos;t understand this part of the design.

As mentioned earlier, think of the policy as a set of pairs of the form &lt;cName,pName&gt;. Each such pair means that all access to property pName of objects with className= cName must be logged.

This set will be hard-coded into the source code, in some struct that lives in WebCore.
If logging is enabled for the world then the methods batchConfigureCallbacks and configureAttribute in V8DOMConfiguration would consult this policy struct for every DOM attribute that they configure. If the attribute is found in  the policy struct then the methods will take a different branch and install wrappers for the attribute, otherwise they will behave the way they are right now. The actual patch makes a few other changes as well, but the gist is what is described above.

Note that in the current design the policy is the same for all worlds and it is hard-coded.

Later, if needed, we can have the policy struct also come from the Chromium side by proving a route 
through the WebKit API. Furthermore, the policy struct could also be different for each world. 

May be the word policy here is confusing?
&gt; 
&gt; &gt; We do not have any performance measurements at the moment but we do plan to have them in the near future. 
&gt; 
&gt; Would you be willing to do some performance measurements before landing this patch?  The performance aspects are an important consideration here.  I would be interested in knowing the overhead for the following cases:
&gt; 
&gt; 1) No logging configured for world.
&gt; 2) Logging configured for world, but the API is not logged according to the policy.
&gt; 3) Logging is configured for world, and the API is actually logged.
&gt; 
&gt; In particular, I&apos;m curious how this affects Dromeo&apos;s dom-traverse benchmark in these cases.  You can find dom-traverse in the PerformanceTests directory.  You can find more information about PerformaceTests on this wiki page:
&gt; 
&gt; http://trac.webkit.org/wiki/Performance%20Tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843832</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 00:41:49 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; (From update of attachment 190556 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190556&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/chromium/public/WebCoverWrapping.h:54
&gt; &gt; &gt; &gt; &gt; +    // Sets the provided log object for the world identified 
&gt; &gt; &gt; &gt; &gt; +    // by worldID (worldID may be 0 identifying the main world).
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I thought we weren&apos;t going to support installing a logger for the main world?
&gt; &gt; &gt; 
&gt; &gt; &gt; Logging can be enabled for any world. The guarantee is that the DOM bindings for all
&gt; &gt; &gt; those worlds for which logging is not enabled would not be affected. We include the main world
&gt; &gt; &gt; to log DOM activity inside extension background pages.
&gt; &gt; 
&gt; &gt; I see.  Won&apos;t you need to do the hash lookup to see if there is a logger configured for a world?  That seems like it will impact performance even if no logger is configured.
&gt; 
&gt; Yes for all worlds there will be a one-time HashMap lookup while initializing the context. (we consider the existence of a logger as an indication from the chromium side that logging should be enabled for that world).

Ah, initialization-time lookup makes more sense.  I remember your saying that you&apos;d then configure the wrappers different when there&apos;s logging involved.

&gt; &gt; &gt; The logger will be invoked on all DOM API calls that are covered by the policy. 
&gt; &gt; &gt; To begin with we will have a small policy that includes critical calls like document.write, document.createElement, document.appendChild, window.location and so on.
&gt; &gt; 
&gt; &gt; Do you plan to teach WebKit about this policy, or does WebKit always just call the log function?  Maybe the answer to this question is related to my previous question and the issue is just that I don&apos;t understand this part of the design.
&gt; 
&gt; As mentioned earlier, think of the policy as a set of pairs of the form &lt;cName,pName&gt;. Each such pair means that all access to property pName of objects with className= cName must be logged.
&gt; 
&gt; This set will be hard-coded into the source code, in some struct that lives in WebCore.

Oh, I see.  Why hard-coded?  It seems like something that should be configurable by the embedder.

&gt; If logging is enabled for the world then the methods batchConfigureCallbacks and configureAttribute in V8DOMConfiguration would consult this policy struct for every DOM attribute that they configure. If the attribute is found in  the policy struct then the methods will take a different branch and install wrappers for the attribute, otherwise they will behave the way they are right now. The actual patch makes a few other changes as well, but the gist is what is described above.
&gt; 
&gt; Note that in the current design the policy is the same for all worlds and it is hard-coded.
&gt; 
&gt; Later, if needed, we can have the policy struct also come from the Chromium side by proving a route 
&gt; through the WebKit API. Furthermore, the policy struct could also be different for each world. 

I see.

&gt; May be the word policy here is confusing?

I&apos;d call it a logging filter, but maybe I&apos;ve drunk the Python logging coolaid too long.

Ok, this is making more sense now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843838</commentid>
    <comment_count>25</comment_count>
      <attachid>190625</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 00:50:32 -0800</bug_when>
    <thetext>Comment on attachment 190625
Patch

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

Ok, this generally looks good.  Below are a bunch of naming nits.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:225
&gt; +typedef HashMap&lt; int, OwnPtr&lt;V8DOMActivityLogger&gt;, WTF::IntHash&lt;int&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;int&gt; &gt; DOMActivityLoggerMap; 

&quot;&lt; int&quot;  &lt;--- please remove space between &lt; and int

I bet the WTF:: prefixes aren&apos;t needed on this line.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:233
&gt; +void DOMWrapperWorld::setDOMActivityLogger(int worldID, PassOwnPtr&lt;V8DOMActivityLogger&gt; logger)

worldID -&gt; worldId

We&apos;re not super consistent about this in WebCore, but I think we&apos;re supposed to match the DOM style (e.g., getElementById)

setDOMActivityLogger -&gt; setActivityLogger

(We already know we&apos;re talking about the DOM because this is a method of DOMWrapperWorld.)

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:238
&gt; +V8DOMActivityLogger* DOMWrapperWorld::getDOMActivityLogger(int worldID)

Please remove the &quot;get&quot; prefix.  getDOMActivityLogger -&gt; activityLogger

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:240
&gt; +    DOMActivityLoggerMap&amp; loggers = domActivityLoggers();

This could be a const reverence.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:242
&gt; +    return it == loggers.end() ? 0 : (it-&gt;value).get();

(it-&gt;value)   &lt;--- the ( ) aren&apos;t needed.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.h:95
&gt; +    // Associate a logger object with the world identified by worldID (worlID may be 0

object  &lt;-- this word is redundant and can be removed.

&gt; Source/WebCore/bindings/v8/V8DOMActivityLogger.h:42
&gt; +    virtual void log(const char* apiCall, int argc, const v8::Handle&lt;v8::Value&gt;* args, const char* extra) { }

apiCall -&gt; functionName ?  methodName ?  It&apos;s not a &quot;call&quot;...
args -&gt; argv

What is &quot;extra&quot; ?

&gt; Source/WebKit/chromium/public/WebDOMActivityLogger.h:47
&gt; +bool hasDOMActivityLogger(int worldID);

You&apos;re going to need to mark this function and setDOMActivityLogger with WEBKIT_EXPORT so that the component build will link.

&gt; Source/WebKit/chromium/src/WebDOMActivityLogger.cpp:49
&gt; +    virtual ~DOMActivityLoggerContainer() { }

You can skip this line.  The compiler will generate it for you.

&gt; Source/WebKit/chromium/src/WebDOMActivityLogger.cpp:66
&gt; +    if (logger)

It&apos;s probably better to make it an error to call this function with a null pointer.  The way to do that is to ASSERT(logger).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844698</commentid>
    <comment_count>26</comment_count>
      <attachid>190861</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-02-28 18:21:57 -0800</bug_when>
    <thetext>Created attachment 190861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844708</commentid>
    <comment_count>27</comment_count>
      <attachid>190861</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 18:54:51 -0800</bug_when>
    <thetext>Comment on attachment 190861
Patch

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

This looks good.  There&apos;s just one nit about the include.  You&apos;ve probably left the office for today, so I can try fixing that for you.

&gt; Source/WebCore/bindings/v8/V8DOMActivityLogger.h:2
&gt; + * Copyright (C) 2009 Google Inc. All rights reserved.

2009 -&gt; 2013

&gt; Source/WebKit/chromium/public/WebDOMActivityLogger.h:34
&gt; +#include &quot;../../../Platform/chromium/public/WebCanvas.h&quot;

Why do we need this?  You should include WebCommon.h or something like that.

&gt; Source/WebKit/chromium/src/WebDOMActivityLogger.cpp:53
&gt; +private:

nit: We would normally put a blank line above this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844709</commentid>
    <comment_count>28</comment_count>
      <attachid>190865</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 19:00:31 -0800</bug_when>
    <thetext>Created attachment 190865
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844731</commentid>
    <comment_count>29</comment_count>
      <attachid>190865</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 19:37:03 -0800</bug_when>
    <thetext>Comment on attachment 190865
Patch for landing

Clearing flags on attachment: 190865

Committed r144408: &lt;http://trac.webkit.org/changeset/144408&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844732</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 19:37:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845689</commentid>
    <comment_count>31</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-03-01 18:20:48 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845690</commentid>
    <comment_count>32</comment_count>
      <attachid>191084</attachid>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-03-01 18:20:51 -0800</bug_when>
    <thetext>Created attachment 191084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845754</commentid>
    <comment_count>33</comment_count>
      <attachid>191084</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-02 00:14:43 -0800</bug_when>
    <thetext>Comment on attachment 191084
Patch

Why didn&apos;t the previous patch break the build without this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845756</commentid>
    <comment_count>34</comment_count>
      <attachid>190865</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-02 00:16:07 -0800</bug_when>
    <thetext>Comment on attachment 190865
Patch for landing

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

&gt; Source/WebKit/chromium/public/WebDOMActivityLogger.h:34
&gt; +#include &quot;../../../Platform/chromium/public/WebCommon.h&quot;

This should be &quot;public/WebCommon.h&quot; or something like that (please don&apos;t use a relative path.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845941</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-02 23:36:18 -0800</bug_when>
    <thetext>&gt; Why didn&apos;t the previous patch break the build without this change?

Because the API isn&apos;t called yet.

&gt; &gt; Source/WebKit/chromium/public/WebDOMActivityLogger.h:34
&gt; &gt; +#include &quot;../../../Platform/chromium/public/WebCommon.h&quot;
&gt; 
&gt; This should be &quot;public/WebCommon.h&quot; or something like that (please don&apos;t use a relative path.)

Unfortunately, this is the style we&apos;re using currently.  We tried a bunch of different options, and this was the least bad.  I&apos;m hoping we can revisit this in the future and use something more sensible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845942</commentid>
    <comment_count>36</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-02 23:37:14 -0800</bug_when>
    <thetext>@Ankur: Typically we use a new bug for new patches, even simple follow-up patches like this one.  You can link bugs together using the &quot;depends on&quot; and &quot;blocks&quot; fields if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845954</commentid>
    <comment_count>37</comment_count>
      <attachid>191084</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-03 00:24:22 -0800</bug_when>
    <thetext>Comment on attachment 191084
Patch

Rejecting attachment 191084 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 191084, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:

fatal: read error: Connection reset by peer
Died at Tools/Scripts/update-webkit line 151.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2

Updating OpenSource
fatal: read error: Connection reset by peer
Died at Tools/Scripts/update-webkit line 151.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
fatal: read error: Connection reset by peer
Died at Tools/Scripts/update-webkit line 151.

Full output: http://webkit-commit-queue.appspot.com/results/16785808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845965</commentid>
    <comment_count>38</comment_count>
      <attachid>191084</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-03 00:58:47 -0800</bug_when>
    <thetext>Comment on attachment 191084
Patch

Clearing flags on attachment: 191084

Committed r144564: &lt;http://trac.webkit.org/changeset/144564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845966</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-03 00:58:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190175</attachid>
            <date>2013-02-25 18:23:34 -0800</date>
            <delta_ts>2013-02-25 18:35:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130225181949.patch</filename>
            <type>text/plain</type>
            <size>15025</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Mzk5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTI1ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvdmVyV3JhcHBpbmdM
b2dzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6c2V0Q292ZXJXcmFwcGlu
Z0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmdldENvdmVyV3JhcHBp
bmdMb2cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAg
ICAoRE9NV3JhcHBlcldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvdmVyV3Jh
cHBpbmdMb2cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RE9NQ292
ZXJXcmFwcGluZ0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvdmVyV3JhcHBpbmdMb2c6
On5WOERPTUNvdmVyV3JhcHBpbmdMb2cpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Db3Zlcldy
YXBwaW5nTG9nOjpsb2dNZXNzYWdlKToKKwogMjAxMy0wMi0yNSAgWHVlcWluZyBIdWFuZyAgPGh1
YW5neHVlcWluZ0BiYWlkdS5jb20+CiAKICAgICAgICAgRmxleGJveCBzaG91bGQgaWdub3JlIGZp
cnN0TGV0dGVyIHBzZXVkbyBlbGVtZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
MTQzOTkyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjczLDYgKzEyNzMsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlv
bi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhET01Db3ZlcldyYXBwaW5nTG9nLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBl
cldvcmxkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01X
cmFwcGVyV29ybGQuY3BwCShyZXZpc2lvbiAxNDM5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNCArMjIw
LDI2IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcklzb2xhdGVkV29ybGQKICAgICBpc29s
YXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWNpZXMoKS5yZW1vdmUod29ybGRJRCk7CiB9CiAK
K3R5cGVkZWYgSGFzaE1hcDxpbnQsIFY4RE9NQ292ZXJXcmFwcGluZ0xvZyo+IENvdmVyV3JhcHBp
bmdMb2dNYXA7IAorc3RhdGljIENvdmVyV3JhcHBpbmdMb2dNYXAmIGNvdmVyV3JhcHBpbmdMb2dz
KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ292ZXJXcmFwcGluZ0xvZ01hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwor
dm9pZCBET01XcmFwcGVyV29ybGQ6OnNldENvdmVyV3JhcHBpbmdMb2coaW50IHdvcmxkSUQsIFY4
RE9NQ292ZXJXcmFwcGluZ0xvZyogbG9nKQoreworICAgIC8vIEhhc2hNYXAgZG9lc24ndCBzdXBw
b3J0IGtleSAwLCBzbyB3ZSBzdG9yZSB0aGUgbG9nIGF0IHdvcmxkSUQgKyAxCisgICAgY292ZXJX
cmFwcGluZ0xvZ3MoKS5zZXQod29ybGRJRCsxLCBsb2cpOworfSAKKworVjhET01Db3ZlcldyYXBw
aW5nTG9nKiBET01XcmFwcGVyV29ybGQ6OmdldENvdmVyV3JhcHBpbmdMb2coaW50IHdvcmxkSUQp
Cit7CisgICAgQ292ZXJXcmFwcGluZ0xvZ01hcCYgbG9ncyA9IGNvdmVyV3JhcHBpbmdMb2dzKCk7
CisgICAgLy8gTG9va3VwIHRoZSBsb2cgKHN0b3JlZCBhdCB3b3JsZElEICsgMSwgYmVjYXVzZSBI
YXNoTWFwIGRvZXNuJ3Qgc3VwcG9ydCBrZXkgMCkgCisgICAgQ292ZXJXcmFwcGluZ0xvZ01hcDo6
aXRlcmF0b3IgaXQgPSBsb2dzLmZpbmQod29ybGRJRCsxKTsgICAKKyAgICByZXR1cm4gaXQgPT0g
bG9ncy5lbmQoKSA/IDAgOiBpdC0+dmFsdWU7Cit9IAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAko
cmV2aXNpb24gMTQzOTkyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBl
cldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgRE9NV3Jh
cHBlcldvcmxkX2gKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVjhE
T01Db3ZlcldyYXBwaW5nTG9nLmgiCiAjaW5jbHVkZSAiVjhQZXJDb250ZXh0RGF0YS5oIgogI2lu
Y2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTkxLDYgKzkyLDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjbGVhcklzb2xhdGVkV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3koaW50IHdvcmxkSUQpOwogICAgIGJvb2wgaXNvbGF0ZWRXb3JsZEhhc0NvbnRl
bnRTZWN1cml0eVBvbGljeSgpOwogCisgICAgLy8gQXNzb2NpYXRlIGEgbG9nIG9iamVjdCB3aXRo
IHRoZSB3b3JsZCBpZGVudGlmaWVkIGJ5IHdvcmxkSUQgKHdvcmxJRCBtYXkgYmUgMAorICAgIC8v
IGlkZW50aWZ5aW5nIHRoZSBtYWluIHdvcmxkKS4gIAorICAgIHN0YXRpYyB2b2lkIHNldENvdmVy
V3JhcHBpbmdMb2coaW50IHdvcmxkSUQsIFY4RE9NQ292ZXJXcmFwcGluZ0xvZyopOworICAgIHN0
YXRpYyBWOERPTUNvdmVyV3JhcHBpbmdMb2cqIGdldENvdmVyV3JhcHBpbmdMb2coaW50IHdvcmxk
SUQpOworCiAgICAgLy8gRklYTUU6IHRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIHByb2JsZW0g
aW4gV2ViVmlld0ltcGwuCiAgICAgLy8gRG8gbm90IHVzZSB0aGlzIGFueXdoZXJlIGVsc2UhIQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRlVW5pbml0aWFsaXpl
ZFdvcmxkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvdmVyV3Jh
cHBpbmdMb2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TUNvdmVyV3JhcHBpbmdMb2cuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NQ292ZXJXcmFwcGluZ0xvZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICog
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWOERPTUNvdmVyV3JhcHBpbmdMb2dfaAorI2RlZmluZSBWOERPTUNvdmVy
V3JhcHBpbmdMb2dfaAorCisjaW5jbHVkZSAidjguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWOERPTUNvdmVyV3JhcHBpbmdMb2cgeworcHVibGljOgorICAgIHZpcnR1YWwgflY4
RE9NQ292ZXJXcmFwcGluZ0xvZygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGxvZ01lc3NhZ2Uo
Y29uc3QgY2hhciosIGludCwgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KiwgY29uc3QgY2hh
ciopIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgVjhET01Db3ZlcldyYXBwaW5nTG9nCisKKyNl
bmRpZiAvLyBWOERPTUNvdmVyV3JhcHBpbmdMb2dfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db3ZlcldyYXBwaW5nTG9nLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE0Mzk5NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTMtMDItMjUgIEFua3VyIFRh
bHkgIDxhdGFseUBnb29nbGUuY29tPgorCisgICAgICAgIFdlYktpdCBBUEkgZm9yIGVuYWJsaW5n
IERPTSBsb2dnaW5nIGZvciBjZXJ0YWluIHdvcmxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGluaXRpYWwgcGx1bWJpbmcg
Zm9yIGVuYWJsaW5nIGxvZ2dpbmcgb2YgRE9NCisJYWNjZXNzZXMgY2FycmllZCBvdXQgYnkgSmF2
YVNjcmlwdCBjb2RlIHJ1bm5pbmcgd2l0aGluZyB2OCwgb24gYSAKKwlwZXItd29ybGQgYmFzaXMu
IEluIHBhcnRpY3VsYXIgaXQgYWRkcyB0aGUgZm9sbG93aW5nIAorCW1ldGhvZHMgdG8gdGhlIFdl
YktpdCBjaHJvbWl1bSBBUEk6CisKKwkqIHZvaWQgV2ViQ292ZXJXcmFwcGluZzo6c2V0TG9nKGlu
dCB3b3JsZElELCBXZWJDb3ZlcldyYXBwaW5nOjpMb2cqIGxvZykKKworCSogYm9vbCBXZWJDb3Zl
cldyYXBwaW5nOjpoYXNMb2coaW50IHdvcmxkSUQpCisKKwlUaGUgbWV0aG9kIHNldExvZyBhZGRz
IGFuIGVudHJ5IGZvciB0aGUgd29ybGRJRCBhbmQgbG9nLCBpbiBhCisJSGFzaE1hcCBwcmVzZW50
IGluIERPTVdyYXBwZXJXb3JsZCAoc2ltaWxhciB0byB0aGUgbWFwIGZvciBTZWN1cml0eU9yaWdp
biBhbmQKKwlDb250ZW50U2VjdXJpdHlQb2xpY3kpLCBhbmQgdGhlIG1ldGhvZCBoYXNMb2cgc2lt
cGx5IGNoZWNrcyBpZiBhbiBlbnRyeSBmb3IKKwl3b3JsZElEIGlzIGFscmVhZHkgcHJlc2VudC4K
KworCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ292ZXJXcmFw
cGluZy5oOiBBZGRlZC4KKyAgICAgICAgKHY4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJDb3ZlcldyYXBwaW5nKToKKyAgICAgICAgKExvZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvdmVyV3JhcHBpbmc6OkxvZzo6fkxvZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvdmVyV3Jh
cHBpbmc6OkxvZzo6bG9nTWVzc2FnZSk6CisgICAgICAgICogc3JjL1dlYkNvdmVyV3JhcHBpbmcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb3ZlcldyYXBwaW5nTG9n
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcjo6
Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OkNvdmVyV3JhcHBp
bmdMb2dDb250YWluZXI6On5Db3ZlcldyYXBwaW5nTG9nQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YktpdDo6Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcjo6bG9nTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvdmVyV3JhcHBpbmc6Omhhc0xvZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
dmVyV3JhcHBpbmc6OnNldExvZyk6CisKIDIwMTMtMDItMjUgIEtlbiBLYW5pYSAgPGtrYW5pYUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGJyb3dzZXIgcGF0Y2hpbmcgbWVjaGFuaXNt
IGZvciBoYW5kbGluZyBqYXZhc2NyaXB0IGRpYWxvZ3MgaW4gY2hyb21pdW0gcG9ydApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTQzOTkyKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcg
QEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnNvbGVNZXNzYWdlLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViQ29udGVudERldGVjdGlvblJlc3VsdC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oJywKKyAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkNvdmVyV3JhcHBpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViQ3Vyc29ySW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRPTUN1c3Rv
bUV2ZW50LmgnLApAQCAtNDMzLDYgKzQzNCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJD
b21tb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkNvdmVyV3JhcHBpbmcuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkN1cnNvckluZm8uY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkRPTUN1c3RvbUV2ZW50LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb3ZlcldyYXBwaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3ZlcldyYXBwaW5nX2gKKyNkZWZp
bmUgV2ViQ292ZXJXcmFwcGluZ19oCisKKyNpZiBXRUJLSVRfVVNJTkdfVjgKK25hbWVzcGFjZSB2
OCB7CitjbGFzcyBWYWx1ZTsKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7Cit9Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvdmVyV3JhcHBpbmcgewor
cHVibGljOgorICAgIGNsYXNzIExvZyB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5M
b2coKSB7IH0KKyNpZiBXRUJLSVRfVVNJTkdfVjgKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvZ01l
c3NhZ2UoY29uc3QgY2hhciosIGludCwgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KiwgY29u
c3QgY2hhciopIHsgfQorI2VuZGlmCit9OworICAgIC8vIENoZWNrcyBpZiBhIGxvZyBvYmplY3Qg
YWxyZWFkeSBleGlzdHMgZm9yIHRoZSB3b3JsZCBpZGVudGlmaWVkCisgICAgLy8gYnkgd29ybGRJ
RCAod29ybGRJRCBtYXkgYmUgMCBpZGVudGlmeWluZyB0aGUgbWFpbiB3b3JsZCkuCisgICAgc3Rh
dGljIGJvb2wgaGFzTG9nKGludCB3b3JsZElEKTsKKyAgICAKKyAgICAvLyBTZXRzIHRoZSBwcm92
aWRlZCBsb2cgb2JqZWN0IGZvciB0aGUgd29ybGQgaWRlbnRpZmllZCAKKyAgICAvLyBieSB3b3Js
ZElEICh3b3JsZElEIG1heSBiZSAwIGlkZW50aWZ5aW5nIHRoZSBtYWluIHdvcmxkKS4KKyAgICBz
dGF0aWMgdm9pZCBzZXRMb2coaW50IHdvcmxkSUQsIExvZyopOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
dmVyV3JhcHBpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvdmVyV3JhcHBpbmcuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ292ZXJXcmFwcGluZy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ292ZXJXcmFwcGluZy5oIgorCisj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiVjhET01Db3ZlcldyYXBwaW5n
TG9nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb3ZlcldyYXBwaW5nTG9nQ29u
dGFpbmVyIDogcHVibGljIFY4RE9NQ292ZXJXcmFwcGluZ0xvZyB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgQ292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcihXZWJDb3ZlcldyYXBwaW5nOjpMb2cqIGxv
ZykKKyAgICAgICAgOiBtX2NvdmVyV3JhcHBpbmdMb2coYWRvcHRQdHIobG9nKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcigpIHsgfQorI2lm
IFdFQktJVF9VU0lOR19WOAorICAgIHZpcnR1YWwgdm9pZCBsb2dNZXNzYWdlKGNvbnN0IGNoYXIq
IGFwaUNhbGwsIGludCBhcmdjLCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnc1tdLCBj
b25zdCBjaGFyKiBleHRyYSkKKyAgICB7ICAgCisgICAgICAgIG1fY292ZXJXcmFwcGluZ0xvZy0+
bG9nTWVzc2FnZShhcGlDYWxsLCBhcmdjLCBhcmdzLCBleHRyYSk7IAorICAgIH0KKyNlbmRpZgor
cHJpdmF0ZToKKyAgICBPd25QdHI8V2ViQ292ZXJXcmFwcGluZzo6TG9nKj4gbV9jb3ZlcldyYXBw
aW5nTG9nOworfTsKKworYm9vbCBXZWJDb3ZlcldyYXBwaW5nOjpoYXNMb2coaW50IHdvcmxkSUQp
Cit7CisgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Z2V0Q292ZXJXcmFwcGluZ0xvZyh3b3Js
ZElEKSA/IHRydWUgOiBmYWxzZTsgCit9CisKK3ZvaWQgV2ViQ292ZXJXcmFwcGluZzo6c2V0TG9n
KGludCB3b3JsZElELCBXZWJDb3ZlcldyYXBwaW5nOjpMb2cqIGxvZykKK3sKKyAgICBET01XcmFw
cGVyV29ybGQ6OnNldENvdmVyV3JhcHBpbmdMb2cod29ybGRJRCwgbmV3IENvdmVyV3JhcHBpbmdM
b2dDb250YWluZXIobG9nKSk7Cit9CisKK30gLy8gV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb3ZlcldyYXBwaW5nLmNwcApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190180</attachid>
            <date>2013-02-25 18:35:45 -0800</date>
            <delta_ts>2013-02-26 18:13:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130225183201.patch</filename>
            <type>text/plain</type>
            <size>14971</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Mzk5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI1ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN0YXRpYyBt
ZXRob2RzIHRvIERPTVdyYXBwZXJXb3JsZCBmb3IgbWFuYWdpbmcgdGhlCisgICAgICAgIG1hcHBp
bmcgYmV0d2VlbiB3b3JsZElEcyBhbmQgbG9nIG9iamVjdHMgKHdoZXJlIERPTSBsb2dnaW5nIG1l
c3NhZ2VzCisgICAgICAgIGFyZSBzZW50KSwgYW5kIGFsc28gZGVmaW5lcyBhIGNsYXNzIChWOERP
TUNvdmVyV3JhcHBpbmdMb2cpIGZvciBsb2cKKyAgICAgICAgb2JqZWN0cy4gCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJXcmFwcGluZ0xv
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzZXRDb3ZlcldyYXBwaW5n
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Z2V0Q292ZXJXcmFwcGlu
Z0xvZyk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAg
IChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQ292ZXJXcmFw
cGluZ0xvZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhET01Db3Zl
cldyYXBwaW5nTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ292ZXJXcmFwcGluZ0xvZzo6
flY4RE9NQ292ZXJXcmFwcGluZ0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvdmVyV3Jh
cHBpbmdMb2c6OmxvZ01lc3NhZ2UpOgorCiAyMDEzLTAyLTI1ICBYdWVxaW5nIEh1YW5nICA8aHVh
bmd4dWVxaW5nQGJhaWR1LmNvbT4KIAogICAgICAgICBGbGV4Ym94IHNob3VsZCBpZ25vcmUgZmly
c3RMZXR0ZXIgcHNldWRvIGVsZW1lbnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAx
NDM5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTEyNzMsNiArMTI3Myw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9u
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOERPTUNvdmVyV3JhcHBpbmdMb2cuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVy
V29ybGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdy
YXBwZXJXb3JsZC5jcHAJKHJldmlzaW9uIDE0Mzk5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw0ICsyMjAs
MjYgQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFySXNvbGF0ZWRXb3JsZAogICAgIGlzb2xh
dGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY2llcygpLnJlbW92ZSh3b3JsZElEKTsKIH0KIAor
dHlwZWRlZiBIYXNoTWFwPGludCwgVjhET01Db3ZlcldyYXBwaW5nTG9nKj4gQ292ZXJXcmFwcGlu
Z0xvZ01hcDsgCitzdGF0aWMgQ292ZXJXcmFwcGluZ0xvZ01hcCYgY292ZXJXcmFwcGluZ0xvZ3Mo
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDb3ZlcldyYXBwaW5nTG9nTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCit2
b2lkIERPTVdyYXBwZXJXb3JsZDo6c2V0Q292ZXJXcmFwcGluZ0xvZyhpbnQgd29ybGRJRCwgVjhE
T01Db3ZlcldyYXBwaW5nTG9nKiBsb2cpCit7CisgICAgLy8gSGFzaE1hcCBkb2Vzbid0IHN1cHBv
cnQga2V5IDAsIHNvIHdlIHN0b3JlIHRoZSBsb2cgYXQgd29ybGRJRCArIDEKKyAgICBjb3Zlcldy
YXBwaW5nTG9ncygpLnNldCh3b3JsZElEKzEsIGxvZyk7Cit9IAorCitWOERPTUNvdmVyV3JhcHBp
bmdMb2cqIERPTVdyYXBwZXJXb3JsZDo6Z2V0Q292ZXJXcmFwcGluZ0xvZyhpbnQgd29ybGRJRCkK
K3sKKyAgICBDb3ZlcldyYXBwaW5nTG9nTWFwJiBsb2dzID0gY292ZXJXcmFwcGluZ0xvZ3MoKTsK
KyAgICAvLyBMb29rdXAgdGhlIGxvZyAoc3RvcmVkIGF0IHdvcmxkSUQgKyAxLCBiZWNhdXNlIEhh
c2hNYXAgZG9lc24ndCBzdXBwb3J0IGtleSAwKSAKKyAgICBDb3ZlcldyYXBwaW5nTG9nTWFwOjpp
dGVyYXRvciBpdCA9IGxvZ3MuZmluZCh3b3JsZElEKzEpOyAgIAorICAgIHJldHVybiBpdCA9PSBs
b2dzLmVuZCgpID8gMCA6IGl0LT52YWx1ZTsKK30gCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCShy
ZXZpc2lvbiAxNDM5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVy
V29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBET01XcmFw
cGVyV29ybGRfaAogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJWOERP
TUNvdmVyV3JhcHBpbmdMb2cuaCIKICNpbmNsdWRlICJWOFBlckNvbnRleHREYXRhLmgiCiAjaW5j
bHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtOTEsNiArOTIsMTEg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeShpbnQgd29ybGRJRCk7CiAgICAgYm9vbCBpc29sYXRlZFdvcmxkSGFzQ29udGVu
dFNlY3VyaXR5UG9saWN5KCk7CiAKKyAgICAvLyBBc3NvY2lhdGUgYSBsb2cgb2JqZWN0IHdpdGgg
dGhlIHdvcmxkIGlkZW50aWZpZWQgYnkgd29ybGRJRCAod29ybElEIG1heSBiZSAwCisgICAgLy8g
aWRlbnRpZnlpbmcgdGhlIG1haW4gd29ybGQpLiAgCisgICAgc3RhdGljIHZvaWQgc2V0Q292ZXJX
cmFwcGluZ0xvZyhpbnQgd29ybGRJRCwgVjhET01Db3ZlcldyYXBwaW5nTG9nKik7CisgICAgc3Rh
dGljIFY4RE9NQ292ZXJXcmFwcGluZ0xvZyogZ2V0Q292ZXJXcmFwcGluZ0xvZyhpbnQgd29ybGRJ
RCk7CisKICAgICAvLyBGSVhNRTogdGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEgcHJvYmxlbSBp
biBXZWJWaWV3SW1wbC4KICAgICAvLyBEbyBub3QgdXNlIHRoaXMgYW55d2hlcmUgZWxzZSEhCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVVbmluaXRpYWxpemVk
V29ybGQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ292ZXJXcmFw
cGluZ0xvZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
Q292ZXJXcmFwcGluZ0xvZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01Db3ZlcldyYXBwaW5nTG9nLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFY4RE9NQ292ZXJXcmFwcGluZ0xvZ19oCisjZGVmaW5lIFY4RE9NQ292ZXJX
cmFwcGluZ0xvZ19oCisKKyNpbmNsdWRlICJ2OC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFY4RE9NQ292ZXJXcmFwcGluZ0xvZyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VjhE
T01Db3ZlcldyYXBwaW5nTG9nKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9nTWVzc2FnZShj
b25zdCBjaGFyKiwgaW50LCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qLCBjb25zdCBjaGFy
KikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBWOERPTUNvdmVyV3JhcHBpbmdMb2cKKworI2Vu
ZGlmIC8vIFY4RE9NQ292ZXJXcmFwcGluZ0xvZ19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvdmVyV3JhcHBpbmdMb2cuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQzOTk2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMi0yNSAgQW5rdXIgVGFs
eSAgPGF0YWx5QGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IEFQSSBmb3IgZW5hYmxpbmcg
RE9NIGxvZ2dpbmcgZm9yIGNlcnRhaW4gd29ybGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaW5pdGlhbCBwbHVtYmluZyBm
b3IgZW5hYmxpbmcgbG9nZ2luZyBvZiBET00KKyAgICAgICAgYWNjZXNzZXMgY2FycmllZCBvdXQg
YnkgSmF2YVNjcmlwdCBjb2RlIHJ1bm5pbmcgd2l0aGluZyB2OCwgb24gYSAKKyAgICAgICAgcGVy
LXdvcmxkIGJhc2lzLiBJbiBwYXJ0aWN1bGFyIGl0IGFkZHMgbWV0aG9kcyB0byB0aGUgY2hyb21p
dW0KKyAgICAgICAgV2ViS2l0IEFQSSBmb3IgYXNzb2NpYXRpbmcgYSBsb2cgb2JqZWN0IHdpdGgg
d29ybGQgaWRzIGZvciB3aGljaAorICAgICAgICBET00gYWNjZXNzIGxvZ2dpbmcgaXMgZW5hYmxl
ZC4KKworCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ292ZXJX
cmFwcGluZy5oOiBBZGRlZC4KKyAgICAgICAgKHY4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJDb3ZlcldyYXBwaW5nKToKKyAgICAgICAgKExvZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvdmVyV3JhcHBpbmc6OkxvZzo6fkxvZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvdmVy
V3JhcHBpbmc6OkxvZzo6bG9nTWVzc2FnZSk6CisgICAgICAgICogc3JjL1dlYkNvdmVyV3JhcHBp
bmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb3ZlcldyYXBwaW5n
TG9nQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5l
cjo6Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OkNvdmVyV3Jh
cHBpbmdMb2dDb250YWluZXI6On5Db3ZlcldyYXBwaW5nTG9nQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYktpdDo6Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcjo6bG9nTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvdmVyV3JhcHBpbmc6Omhhc0xvZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvdmVyV3JhcHBpbmc6OnNldExvZyk6CisKIDIwMTMtMDItMjUgIEtlbiBLYW5pYSAgPGtrYW5p
YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGJyb3dzZXIgcGF0Y2hpbmcgbWVjaGFu
aXNtIGZvciBoYW5kbGluZyBqYXZhc2NyaXB0IGRpYWxvZ3MgaW4gY2hyb21pdW0gcG9ydApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTQzOTkyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnNvbGVNZXNzYWdlLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29udGVudERldGVjdGlvblJlc3VsdC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkNvdmVyV3JhcHBpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQ3Vyc29ySW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRPTUN1
c3RvbUV2ZW50LmgnLApAQCAtNDMzLDYgKzQzNCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJDb21tb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkNvdmVyV3JhcHBpbmcuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkN1cnNvckluZm8uY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkRPTUN1c3RvbUV2ZW50LmNwcCcsCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb3ZlcldyYXBwaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3ZlcldyYXBwaW5nX2gKKyNk
ZWZpbmUgV2ViQ292ZXJXcmFwcGluZ19oCisKKyNpZiBXRUJLSVRfVVNJTkdfVjgKK25hbWVzcGFj
ZSB2OCB7CitjbGFzcyBWYWx1ZTsKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7Cit9
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvdmVyV3JhcHBpbmcg
eworcHVibGljOgorICAgIGNsYXNzIExvZyB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5Mb2coKSB7IH0KKyNpZiBXRUJLSVRfVVNJTkdfVjgKKyAgICAgICAgdmlydHVhbCB2b2lkIGxv
Z01lc3NhZ2UoY29uc3QgY2hhciosIGludCwgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+Kiwg
Y29uc3QgY2hhciopIHsgfQorI2VuZGlmCit9OworICAgIC8vIENoZWNrcyBpZiBhIGxvZyBvYmpl
Y3QgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSB3b3JsZCBpZGVudGlmaWVkCisgICAgLy8gYnkgd29y
bGRJRCAod29ybGRJRCBtYXkgYmUgMCBpZGVudGlmeWluZyB0aGUgbWFpbiB3b3JsZCkuCisgICAg
c3RhdGljIGJvb2wgaGFzTG9nKGludCB3b3JsZElEKTsKKyAgICAKKyAgICAvLyBTZXRzIHRoZSBw
cm92aWRlZCBsb2cgb2JqZWN0IGZvciB0aGUgd29ybGQgaWRlbnRpZmllZCAKKyAgICAvLyBieSB3
b3JsZElEICh3b3JsZElEIG1heSBiZSAwIGlkZW50aWZ5aW5nIHRoZSBtYWluIHdvcmxkKS4KKyAg
ICBzdGF0aWMgdm9pZCBzZXRMb2coaW50IHdvcmxkSUQsIExvZyopOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvdmVyV3JhcHBpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvdmVyV3JhcHBpbmcuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ292ZXJXcmFwcGluZy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ292ZXJXcmFwcGluZy5oIgor
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiVjhET01Db3ZlcldyYXBw
aW5nTG9nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb3ZlcldyYXBwaW5nTG9n
Q29udGFpbmVyIDogcHVibGljIFY4RE9NQ292ZXJXcmFwcGluZ0xvZyB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgQ292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcihXZWJDb3ZlcldyYXBwaW5nOjpMb2cq
IGxvZykKKyAgICAgICAgOiBtX2NvdmVyV3JhcHBpbmdMb2coYWRvcHRQdHIobG9nKSkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB+Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcigpIHsgfQor
I2lmIFdFQktJVF9VU0lOR19WOAorICAgIHZpcnR1YWwgdm9pZCBsb2dNZXNzYWdlKGNvbnN0IGNo
YXIqIGFwaUNhbGwsIGludCBhcmdjLCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnc1td
LCBjb25zdCBjaGFyKiBleHRyYSkKKyAgICB7ICAgCisgICAgICAgIG1fY292ZXJXcmFwcGluZ0xv
Zy0+bG9nTWVzc2FnZShhcGlDYWxsLCBhcmdjLCBhcmdzLCBleHRyYSk7IAorICAgIH0KKyNlbmRp
ZgorcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViQ292ZXJXcmFwcGluZzo6TG9nKj4gbV9jb3Zlcldy
YXBwaW5nTG9nOworfTsKKworYm9vbCBXZWJDb3ZlcldyYXBwaW5nOjpoYXNMb2coaW50IHdvcmxk
SUQpCit7CisgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Z2V0Q292ZXJXcmFwcGluZ0xvZyh3
b3JsZElEKSA/IHRydWUgOiBmYWxzZTsgCit9CisKK3ZvaWQgV2ViQ292ZXJXcmFwcGluZzo6c2V0
TG9nKGludCB3b3JsZElELCBXZWJDb3ZlcldyYXBwaW5nOjpMb2cqIGxvZykKK3sKKyAgICBET01X
cmFwcGVyV29ybGQ6OnNldENvdmVyV3JhcHBpbmdMb2cod29ybGRJRCwgbmV3IENvdmVyV3JhcHBp
bmdMb2dDb250YWluZXIobG9nKSk7Cit9CisKK30gLy8gV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb3ZlcldyYXBwaW5nLmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190408</attachid>
            <date>2013-02-26 18:13:56 -0800</date>
            <delta_ts>2013-02-27 10:49:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130226181011.patch</filename>
            <type>text/plain</type>
            <size>15034</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI1ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN0YXRpYyBt
ZXRob2RzIHRvIERPTVdyYXBwZXJXb3JsZCBmb3IgbWFuYWdpbmcgdGhlCisgICAgICAgIG1hcHBp
bmcgYmV0d2VlbiB3b3JsZElEcyBhbmQgbG9nIG9iamVjdHMgKHdoZXJlIERPTSBsb2dnaW5nIG1l
c3NhZ2VzCisgICAgICAgIGFyZSBzZW50KSwgYW5kIGFsc28gZGVmaW5lcyBhIGNsYXNzIChWOERP
TUNvdmVyV3JhcHBpbmdMb2cpIGZvciBsb2cKKyAgICAgICAgb2JqZWN0cy4gCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJXcmFwcGluZ0xv
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzZXRDb3ZlcldyYXBwaW5n
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Z2V0Q292ZXJXcmFwcGlu
Z0xvZyk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAg
IChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQ292ZXJXcmFw
cGluZ0xvZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhET01Db3Zl
cldyYXBwaW5nTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ292ZXJXcmFwcGluZ0xvZzo6
flY4RE9NQ292ZXJXcmFwcGluZ0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvdmVyV3Jh
cHBpbmdMb2c6OmxvZ01lc3NhZ2UpOgorCiAyMDEzLTAyLTI2ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFN0b3JhZ2VBcmVhUHJveHk6
OmdldEl0ZW0gYW5kIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDE0NDEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtMTI2OSw2ICsxMjY5LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOENvbGxlY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01Db25maWd1
cmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9u
LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ292ZXJXcmFwcGluZ0xvZy5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNpb24gMTQ0MTMxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtMjIwLDQgKzIyMSwyNCBAQCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6
Y2xlYXJJc29sYXRlZFdvcmxkCiAgICAgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
aWVzKCkucmVtb3ZlKHdvcmxkSUQpOwogfQogCit0eXBlZGVmIEhhc2hNYXA8IGludCwgT3duUHRy
PFY4RE9NQ292ZXJXcmFwcGluZ0xvZz4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4gPiBDb3ZlcldyYXBwaW5nTG9nTWFwOyAKK3N0YXRp
YyBDb3ZlcldyYXBwaW5nTG9nTWFwJiBjb3ZlcldyYXBwaW5nTG9ncygpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvdmVyV3JhcHBpbmdM
b2dNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK3ZvaWQgRE9NV3JhcHBlcldv
cmxkOjpzZXRDb3ZlcldyYXBwaW5nTG9nKGludCB3b3JsZElELCBWOERPTUNvdmVyV3JhcHBpbmdM
b2cqIGxvZykKK3sKKyAgICBjb3ZlcldyYXBwaW5nTG9ncygpLnNldCh3b3JsZElELCBhZG9wdFB0
cihsb2cpKTsKK30gCisKK1Y4RE9NQ292ZXJXcmFwcGluZ0xvZyogRE9NV3JhcHBlcldvcmxkOjpn
ZXRDb3ZlcldyYXBwaW5nTG9nKGludCB3b3JsZElEKQoreworICAgIENvdmVyV3JhcHBpbmdMb2dN
YXAmIGxvZ3MgPSBjb3ZlcldyYXBwaW5nTG9ncygpOworICAgIENvdmVyV3JhcHBpbmdMb2dNYXA6
Oml0ZXJhdG9yIGl0ID0gbG9ncy5maW5kKHdvcmxkSUQpOyAgIAorICAgIHJldHVybiBpdCA9PSBs
b2dzLmVuZCgpID8gMCA6IChpdC0+dmFsdWUpLmdldCgpOworfSAKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldv
cmxkLmgJKHJldmlzaW9uIDE0NDEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5l
IERPTVdyYXBwZXJXb3JsZF9oCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlY4RE9NQ292ZXJXcmFwcGluZ0xvZy5oIgogI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEu
aCIKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC05MSw2
ICs5MiwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2xlYXJJc29sYXRlZFdvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElEKTsKICAgICBib29sIGlzb2xhdGVkV29ybGRI
YXNDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAorICAgIC8vIEFzc29jaWF0ZSBhIGxvZyBvYmpl
Y3Qgd2l0aCB0aGUgd29ybGQgaWRlbnRpZmllZCBieSB3b3JsZElEICh3b3JsSUQgbWF5IGJlIDAK
KyAgICAvLyBpZGVudGlmeWluZyB0aGUgbWFpbiB3b3JsZCkuICAKKyAgICBzdGF0aWMgdm9pZCBz
ZXRDb3ZlcldyYXBwaW5nTG9nKGludCB3b3JsZElELCBWOERPTUNvdmVyV3JhcHBpbmdMb2cqKTsK
KyAgICBzdGF0aWMgVjhET01Db3ZlcldyYXBwaW5nTG9nKiBnZXRDb3ZlcldyYXBwaW5nTG9nKGlu
dCB3b3JsZElEKTsKKwogICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBw
cm9ibGVtIGluIFdlYlZpZXdJbXBsLgogICAgIC8vIERvIG5vdCB1c2UgdGhpcyBhbnl3aGVyZSBl
bHNlISEKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWRXb3JsZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01D
b3ZlcldyYXBwaW5nTG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01Db3ZlcldyYXBwaW5nTG9nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTUNvdmVyV3JhcHBpbmdMb2cuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVjhET01Db3ZlcldyYXBwaW5nTG9nX2gKKyNkZWZpbmUgVjhE
T01Db3ZlcldyYXBwaW5nTG9nX2gKKworI2luY2x1ZGUgInY4LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgVjhET01Db3ZlcldyYXBwaW5nTG9nIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5WOERPTUNvdmVyV3JhcHBpbmdMb2coKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBsb2dN
ZXNzYWdlKGNvbnN0IGNoYXIqLCBpbnQsIGNvbnN0IHY4OjpIYW5kbGU8djg6OlZhbHVlPiosIGNv
bnN0IGNoYXIqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFY4RE9NQ292ZXJXcmFwcGluZ0xv
ZworCisjZW5kaWYgLy8gVjhET01Db3ZlcldyYXBwaW5nTG9nX2gKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ292ZXJXcmFwcGluZ0xvZy5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQxMzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTI1ICBB
bmt1ciBUYWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBl
bmFibGluZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBpbml0aWFsIHBs
dW1iaW5nIGZvciBlbmFibGluZyBsb2dnaW5nIG9mIERPTQorICAgICAgICBhY2Nlc3NlcyBjYXJy
aWVkIG91dCBieSBKYXZhU2NyaXB0IGNvZGUgcnVubmluZyB3aXRoaW5nIHY4LCBvbiBhIAorICAg
ICAgICBwZXItd29ybGQgYmFzaXMuIEluIHBhcnRpY3VsYXIgaXQgYWRkcyBtZXRob2RzIHRvIHRo
ZSBjaHJvbWl1bQorICAgICAgICBXZWJLaXQgQVBJIGZvciBhc3NvY2lhdGluZyBhIGxvZyBvYmpl
Y3Qgd2l0aCB3b3JsZCBpZHMgZm9yIHdoaWNoCisgICAgICAgIERPTSBhY2Nlc3MgbG9nZ2luZyBp
cyBlbmFibGVkLgorCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9X
ZWJDb3ZlcldyYXBwaW5nLmg6IEFkZGVkLgorICAgICAgICAodjgpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkNvdmVyV3JhcHBpbmcpOgorICAgICAgICAoTG9nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ292ZXJXcmFwcGluZzo6TG9nOjp+TG9nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ292ZXJXcmFwcGluZzo6TG9nOjpsb2dNZXNzYWdlKToKKyAgICAgICAgKiBzcmMvV2ViQ292
ZXJXcmFwcGluZy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENvdmVy
V3JhcHBpbmdMb2dDb250YWluZXIpOgorICAgICAgICAoV2ViS2l0OjpDb3ZlcldyYXBwaW5nTG9n
Q29udGFpbmVyOjpDb3ZlcldyYXBwaW5nTG9nQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6
Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcjo6fkNvdmVyV3JhcHBpbmdMb2dDb250YWluZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb3ZlcldyYXBwaW5nTG9nQ29udGFpbmVyOjpsb2dNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ292ZXJXcmFwcGluZzo6aGFzTG9nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ292ZXJXcmFwcGluZzo6c2V0TG9nKToKKwogMjAxMy0wMi0yNiAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IFdlYkxheWVyVHJlZVZpZXdDbGllbnQ6Oih3aWxsfGRpZClCZWdpbkZyYW1lCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiAxNDQxMzEpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsNyBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29uc29sZU1lc3NhZ2UuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJDb250ZW50RGV0ZWN0aW9uUmVzdWx0LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRhLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViQ292ZXJXcmFwcGluZy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJDdXJzb3JJbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRE9NQ3VzdG9tRXZl
bnQuaCcsCkBAIC00MzMsNiArNDM0LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbW1v
bi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQ292ZXJXcmFwcGluZy5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ3Vyc29ySW5mby5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRE9NQ3VzdG9tRXZlbnQuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkNvdmVyV3JhcHBpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb3ZlcldyYXBwaW5nLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb3ZlcldyYXBwaW5nLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvdmVyV3JhcHBpbmdfaAorI2RlZmluZSBX
ZWJDb3ZlcldyYXBwaW5nX2gKKworI2lmIFdFQktJVF9VU0lOR19WOAorI2luY2x1ZGUgPHY4Lmg+
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvdmVyV3JhcHBpbmcg
eworcHVibGljOgorICAgIGNsYXNzIExvZyB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5Mb2coKSB7IH0KKyNpZiBXRUJLSVRfVVNJTkdfVjgKKyAgICAgICAgdmlydHVhbCB2b2lkIGxv
Z01lc3NhZ2UoY29uc3QgY2hhciogYXBpQ2FsbCwgaW50IGFyZ2MsIGNvbnN0IHY4OjpIYW5kbGU8
djg6OlZhbHVlPiogYXJncywgY29uc3QgY2hhciogZXh0cmEpIHsgfQorI2VuZGlmCit9OworICAg
IC8vIENoZWNrcyBpZiBhIGxvZyBvYmplY3QgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSB3b3JsZCBp
ZGVudGlmaWVkCisgICAgLy8gYnkgd29ybGRJRCAod29ybGRJRCBtYXkgYmUgMCBpZGVudGlmeWlu
ZyB0aGUgbWFpbiB3b3JsZCkuCisgICAgc3RhdGljIGJvb2wgaGFzTG9nKGludCB3b3JsZElEKTsK
KyAgICAKKyAgICAvLyBTZXRzIHRoZSBwcm92aWRlZCBsb2cgb2JqZWN0IGZvciB0aGUgd29ybGQg
aWRlbnRpZmllZCAKKyAgICAvLyBieSB3b3JsZElEICh3b3JsZElEIG1heSBiZSAwIGlkZW50aWZ5
aW5nIHRoZSBtYWluIHdvcmxkKS4KKyAgICBzdGF0aWMgdm9pZCBzZXRMb2coaW50IHdvcmxkSUQs
IExvZyopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGlu
Zy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvdmVyV3JhcHBpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvdmVyV3JhcHBpbmcuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ292ZXJXcmFwcGluZy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViQ292ZXJXcmFwcGluZy5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisj
aW5jbHVkZSAiVjhET01Db3ZlcldyYXBwaW5nTG9nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBDb3ZlcldyYXBwaW5nTG9nQ29udGFpbmVyIDogcHVibGljIFY4RE9NQ292ZXJXcmFw
cGluZ0xvZyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5l
cihXZWJDb3ZlcldyYXBwaW5nOjpMb2cqIGxvZykKKyAgICAgICAgOiBtX2NvdmVyV3JhcHBpbmdM
b2coYWRvcHRQdHIobG9nKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+Q292ZXJXcmFw
cGluZ0xvZ0NvbnRhaW5lcigpIHsgfQorI2lmIFdFQktJVF9VU0lOR19WOAorICAgIHZpcnR1YWwg
dm9pZCBsb2dNZXNzYWdlKGNvbnN0IGNoYXIqIGFwaUNhbGwsIGludCBhcmdjLCBjb25zdCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4qIGFyZ3MsIGNvbnN0IGNoYXIqIGV4dHJhKQorICAgIHsgICAKKyAg
ICAgICAgbV9jb3ZlcldyYXBwaW5nTG9nLT5sb2dNZXNzYWdlKGFwaUNhbGwsIGFyZ2MsIGFyZ3Ms
IGV4dHJhKTsgCisgICAgfQorI2VuZGlmCitwcml2YXRlOgorICAgIE93blB0cjxXZWJDb3Zlcldy
YXBwaW5nOjpMb2c+IG1fY292ZXJXcmFwcGluZ0xvZzsKK307CisKK2Jvb2wgV2ViQ292ZXJXcmFw
cGluZzo6aGFzTG9nKGludCB3b3JsZElEKQoreworICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6
OmdldENvdmVyV3JhcHBpbmdMb2cod29ybGRJRCk7Cit9CisKK3ZvaWQgV2ViQ292ZXJXcmFwcGlu
Zzo6c2V0TG9nKGludCB3b3JsZElELCBXZWJDb3ZlcldyYXBwaW5nOjpMb2cqIGxvZykKK3sKKyAg
ICBET01XcmFwcGVyV29ybGQ6OnNldENvdmVyV3JhcHBpbmdMb2cod29ybGRJRCwgbmV3IENvdmVy
V3JhcHBpbmdMb2dDb250YWluZXIobG9nKSk7Cit9CisKK30gLy8gV2ViS2l0CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb3ZlcldyYXBwaW5nLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190556</attachid>
            <date>2013-02-27 10:50:03 -0800</date>
            <delta_ts>2013-02-27 16:07:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130227104616.patch</filename>
            <type>text/plain</type>
            <size>15040</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI1ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN0YXRpYyBt
ZXRob2RzIHRvIERPTVdyYXBwZXJXb3JsZCBmb3IgbWFuYWdpbmcgdGhlCisgICAgICAgIG1hcHBp
bmcgYmV0d2VlbiB3b3JsZElEcyBhbmQgbG9nIG9iamVjdHMgKHdoZXJlIERPTSBsb2dnaW5nIG1l
c3NhZ2VzCisgICAgICAgIGFyZSBzZW50KSwgYW5kIGFsc28gZGVmaW5lcyBhIGNsYXNzIChWOERP
TUNvdmVyV3JhcHBpbmdMb2cpIGZvciBsb2cKKyAgICAgICAgb2JqZWN0cy4gCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJXcmFwcGluZ0xv
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzZXRDb3ZlcldyYXBwaW5n
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Z2V0Q292ZXJXcmFwcGlu
Z0xvZyk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAg
IChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQ292ZXJXcmFw
cGluZ0xvZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhET01Db3Zl
cldyYXBwaW5nTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ292ZXJXcmFwcGluZ0xvZzo6
flY4RE9NQ292ZXJXcmFwcGluZ0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvdmVyV3Jh
cHBpbmdMb2c6OmxvZ01lc3NhZ2UpOgorCiAyMDEzLTAyLTI3ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFN3aXRjaCBRdFdlYktpdCB0
byBHU3RyZWFtZXIgMS4wLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQ0MjA5KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY5LDYg
KzEyNjksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvVjhET01Db3ZlcldyYXBwaW5nTG9nLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29y
bGQuY3BwCShyZXZpc2lvbiAxNDQyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01XcmFwcGVyV29ybGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJW
OERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0yMjAs
NCArMjIxLDI0IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcklzb2xhdGVkV29ybGQKICAg
ICBpc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWNpZXMoKS5yZW1vdmUod29ybGRJRCk7
CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDwgaW50LCBPd25QdHI8VjhET01Db3ZlcldyYXBwaW5nTG9n
PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
aW50PiA+IENvdmVyV3JhcHBpbmdMb2dNYXA7IAorc3RhdGljIENvdmVyV3JhcHBpbmdMb2dNYXAm
IGNvdmVyV3JhcHBpbmdMb2dzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ292ZXJXcmFwcGluZ0xvZ01hcCwgbWFwLCAoKSk7CisgICAg
cmV0dXJuIG1hcDsKK30KKwordm9pZCBET01XcmFwcGVyV29ybGQ6OnNldENvdmVyV3JhcHBpbmdM
b2coaW50IHdvcmxkSUQsIFBhc3NPd25QdHI8VjhET01Db3ZlcldyYXBwaW5nTG9nPiBsb2cpCit7
CisgICAgY292ZXJXcmFwcGluZ0xvZ3MoKS5zZXQod29ybGRJRCwgbG9nKTsKK30gCisKK1Y4RE9N
Q292ZXJXcmFwcGluZ0xvZyogRE9NV3JhcHBlcldvcmxkOjpnZXRDb3ZlcldyYXBwaW5nTG9nKGlu
dCB3b3JsZElEKQoreworICAgIENvdmVyV3JhcHBpbmdMb2dNYXAmIGxvZ3MgPSBjb3ZlcldyYXBw
aW5nTG9ncygpOworICAgIENvdmVyV3JhcHBpbmdMb2dNYXA6Oml0ZXJhdG9yIGl0ID0gbG9ncy5m
aW5kKHdvcmxkSUQpOyAgIAorICAgIHJldHVybiBpdCA9PSBsb2dzLmVuZCgpID8gMCA6IChpdC0+
dmFsdWUpLmdldCgpOworfSAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgJKHJldmlzaW9uIDE0NDIw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIERPTVdyYXBwZXJXb3JsZF9oCiAK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlY4RE9NQ292ZXJXcmFwcGlu
Z0xvZy5oIgogI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlIDx2OC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC05MSw2ICs5MiwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgY2xlYXJJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGlu
dCB3b3JsZElEKTsKICAgICBib29sIGlzb2xhdGVkV29ybGRIYXNDb250ZW50U2VjdXJpdHlQb2xp
Y3koKTsKIAorICAgIC8vIEFzc29jaWF0ZSBhIGxvZyBvYmplY3Qgd2l0aCB0aGUgd29ybGQgaWRl
bnRpZmllZCBieSB3b3JsZElEICh3b3JsSUQgbWF5IGJlIDAKKyAgICAvLyBpZGVudGlmeWluZyB0
aGUgbWFpbiB3b3JsZCkuICAKKyAgICBzdGF0aWMgdm9pZCBzZXRDb3ZlcldyYXBwaW5nTG9nKGlu
dCB3b3JsZElELCBQYXNzT3duUHRyPFY4RE9NQ292ZXJXcmFwcGluZ0xvZz4pOworICAgIHN0YXRp
YyBWOERPTUNvdmVyV3JhcHBpbmdMb2cqIGdldENvdmVyV3JhcHBpbmdMb2coaW50IHdvcmxkSUQp
OworCiAgICAgLy8gRklYTUU6IHRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIHByb2JsZW0gaW4g
V2ViVmlld0ltcGwuCiAgICAgLy8gRG8gbm90IHVzZSB0aGlzIGFueXdoZXJlIGVsc2UhIQogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRlVW5pbml0aWFsaXplZFdv
cmxkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvdmVyV3JhcHBp
bmdMb2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNv
dmVyV3JhcHBpbmdMb2cuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NQ292ZXJXcmFwcGluZ0xvZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBWOERPTUNvdmVyV3JhcHBpbmdMb2dfaAorI2RlZmluZSBWOERPTUNvdmVyV3Jh
cHBpbmdMb2dfaAorCisjaW5jbHVkZSAidjguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBWOERPTUNvdmVyV3JhcHBpbmdMb2cgeworcHVibGljOgorICAgIHZpcnR1YWwgflY4RE9N
Q292ZXJXcmFwcGluZ0xvZygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGxvZ01lc3NhZ2UoY29u
c3QgY2hhciosIGludCwgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KiwgY29uc3QgY2hhciop
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgVjhET01Db3ZlcldyYXBwaW5nTG9nCisKKyNlbmRp
ZiAvLyBWOERPTUNvdmVyV3JhcHBpbmdMb2dfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db3ZlcldyYXBwaW5nTG9nLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0NDIwOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTMtMDItMjUgIEFua3VyIFRhbHkg
IDxhdGFseUBnb29nbGUuY29tPgorCisgICAgICAgIFdlYktpdCBBUEkgZm9yIGVuYWJsaW5nIERP
TSBsb2dnaW5nIGZvciBjZXJ0YWluIHdvcmxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGluaXRpYWwgcGx1bWJpbmcgZm9y
IGVuYWJsaW5nIGxvZ2dpbmcgb2YgRE9NCisgICAgICAgIGFjY2Vzc2VzIGNhcnJpZWQgb3V0IGJ5
IEphdmFTY3JpcHQgY29kZSBydW5uaW5nIHdpdGhpbmcgdjgsIG9uIGEgCisgICAgICAgIHBlci13
b3JsZCBiYXNpcy4gSW4gcGFydGljdWxhciBpdCBhZGRzIG1ldGhvZHMgdG8gdGhlIGNocm9taXVt
CisgICAgICAgIFdlYktpdCBBUEkgZm9yIGFzc29jaWF0aW5nIGEgbG9nIG9iamVjdCB3aXRoIHdv
cmxkIGlkcyBmb3Igd2hpY2gKKyAgICAgICAgRE9NIGFjY2VzcyBsb2dnaW5nIGlzIGVuYWJsZWQu
CisKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNvdmVyV3Jh
cHBpbmcuaDogQWRkZWQuCisgICAgICAgICh2OCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ292ZXJXcmFwcGluZyk6CisgICAgICAgIChMb2cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb3ZlcldyYXBwaW5nOjpMb2c6On5Mb2cpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb3Zlcldy
YXBwaW5nOjpMb2c6OmxvZ01lc3NhZ2UpOgorICAgICAgICAqIHNyYy9XZWJDb3ZlcldyYXBwaW5n
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ292ZXJXcmFwcGluZ0xv
Z0NvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OkNvdmVyV3JhcHBpbmdMb2dDb250YWluZXI6
OkNvdmVyV3JhcHBpbmdMb2dDb250YWluZXIpOgorICAgICAgICAoV2ViS2l0OjpDb3ZlcldyYXBw
aW5nTG9nQ29udGFpbmVyOjp+Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcik6CisgICAgICAgIChX
ZWJLaXQ6OkNvdmVyV3JhcHBpbmdMb2dDb250YWluZXI6OmxvZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb3ZlcldyYXBwaW5nOjpoYXNMb2cpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b3ZlcldyYXBwaW5nOjpzZXRMb2cpOgorCiAyMDEzLTAyLTI2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgV2ViVmlld0lt
cGw6OmFuaW1hdGUgc2hpbW15IG91dCB0aHJvdWdoIGNvbXBvc2l0b3IKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDE0NDIwOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJDb25zb2xlTWVzc2FnZS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJDb3ZlcldyYXBwaW5nLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkN1
cnNvckluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJET01DdXN0b21FdmVudC5o
JywKQEAgLTQzMyw2ICs0MzQsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29tbW9uLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
aCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb3ZlcldyYXBwaW5nLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJDdXJzb3JJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJET01DdXN0b21FdmVudC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ292ZXJXcmFwcGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkNvdmVyV3JhcHBpbmcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvdmVyV3JhcHBpbmcuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ292ZXJXcmFwcGluZ19oCisjZGVmaW5lIFdlYkNv
dmVyV3JhcHBpbmdfaAorCisjaWYgV0VCS0lUX1VTSU5HX1Y4CisjaW5jbHVkZSA8djguaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ292ZXJXcmFwcGluZyB7Citw
dWJsaWM6CisgICAgY2xhc3MgTG9nIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkxv
ZygpIHsgfQorI2lmIFdFQktJVF9VU0lOR19WOAorICAgICAgICB2aXJ0dWFsIHZvaWQgbG9nTWVz
c2FnZShjb25zdCBjaGFyKiBhcGlDYWxsLCBpbnQgYXJnYywgY29uc3Qgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KiBhcmdzLCBjb25zdCBjaGFyKiBleHRyYSkgeyB9CisjZW5kaWYKK307CisgICAgLy8g
Q2hlY2tzIGlmIGEgbG9nIG9iamVjdCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHdvcmxkIGlkZW50
aWZpZWQKKyAgICAvLyBieSB3b3JsZElEICh3b3JsZElEIG1heSBiZSAwIGlkZW50aWZ5aW5nIHRo
ZSBtYWluIHdvcmxkKS4KKyAgICBzdGF0aWMgYm9vbCBoYXNMb2coaW50IHdvcmxkSUQpOworICAg
IAorICAgIC8vIFNldHMgdGhlIHByb3ZpZGVkIGxvZyBvYmplY3QgZm9yIHRoZSB3b3JsZCBpZGVu
dGlmaWVkIAorICAgIC8vIGJ5IHdvcmxkSUQgKHdvcmxkSUQgbWF5IGJlIDAgaWRlbnRpZnlpbmcg
dGhlIG1haW4gd29ybGQpLgorICAgIHN0YXRpYyB2b2lkIHNldExvZyhpbnQgd29ybGRJRCwgTG9n
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb3ZlcldyYXBwaW5nLmgK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ292ZXJXcmFwcGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ292ZXJXcmFwcGluZy5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb3ZlcldyYXBwaW5nLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJDb3ZlcldyYXBwaW5nLmgiCisKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNs
dWRlICJWOERPTUNvdmVyV3JhcHBpbmdMb2cuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIENvdmVyV3JhcHBpbmdMb2dDb250YWluZXIgOiBwdWJsaWMgVjhET01Db3ZlcldyYXBwaW5n
TG9nIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDb3ZlcldyYXBwaW5nTG9nQ29udGFpbmVyKFdl
YkNvdmVyV3JhcHBpbmc6OkxvZyogbG9nKQorICAgICAgICA6IG1fY292ZXJXcmFwcGluZ0xvZyhh
ZG9wdFB0cihsb2cpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Db3ZlcldyYXBwaW5n
TG9nQ29udGFpbmVyKCkgeyB9CisjaWYgV0VCS0lUX1VTSU5HX1Y4CisgICAgdmlydHVhbCB2b2lk
IGxvZ01lc3NhZ2UoY29uc3QgY2hhciogYXBpQ2FsbCwgaW50IGFyZ2MsIGNvbnN0IHY4OjpIYW5k
bGU8djg6OlZhbHVlPiogYXJncywgY29uc3QgY2hhciogZXh0cmEpCisgICAgeyAgIAorICAgICAg
ICBtX2NvdmVyV3JhcHBpbmdMb2ctPmxvZ01lc3NhZ2UoYXBpQ2FsbCwgYXJnYywgYXJncywgZXh0
cmEpOyAKKyAgICB9CisjZW5kaWYKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkNvdmVyV3JhcHBp
bmc6OkxvZz4gbV9jb3ZlcldyYXBwaW5nTG9nOworfTsKKworYm9vbCBXZWJDb3ZlcldyYXBwaW5n
OjpoYXNMb2coaW50IHdvcmxkSUQpCit7CisgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Z2V0
Q292ZXJXcmFwcGluZ0xvZyh3b3JsZElEKTsKK30KKwordm9pZCBXZWJDb3ZlcldyYXBwaW5nOjpz
ZXRMb2coaW50IHdvcmxkSUQsIFdlYkNvdmVyV3JhcHBpbmc6OkxvZyogbG9nKQoreworICAgIERP
TVdyYXBwZXJXb3JsZDo6c2V0Q292ZXJXcmFwcGluZ0xvZyh3b3JsZElELCBhZG9wdFB0cihuZXcg
Q292ZXJXcmFwcGluZ0xvZ0NvbnRhaW5lcihsb2cpKSk7Cit9CisKK30gLy8gV2ViS2l0CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb3ZlcldyYXBw
aW5nLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190625</attachid>
            <date>2013-02-27 16:07:27 -0800</date>
            <delta_ts>2013-02-28 18:21:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130227160340.patch</filename>
            <type>text/plain</type>
            <size>15094</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDI0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI1ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN0YXRpYyBt
ZXRob2RzIHRvIERPTVdyYXBwZXJXb3JsZCBmb3IgbWFuYWdpbmcgdGhlCisgICAgICAgIG1hcHBp
bmcgYmV0d2VlbiB3b3JsZElEcyBhbmQgbG9nZ2VyIG9iamVjdHMgKHdoZXJlIERPTSBsb2dnaW5n
IG1lc3NhZ2VzCisgICAgICAgIGFyZSBzZW50KSwgYW5kIGFsc28gZGVmaW5lcyBhIGNsYXNzIChW
OERPTUFjdGl2aXR5TG9nZ2VyKSBmb3IgbG9nZ2VyCisgICAgICAgIG9iamVjdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tQWN0aXZpdHlM
b2dnZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6c2V0RE9NQWN0aXZp
dHlMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpnZXRET01BY3Rp
dml0eUxvZ2dlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6Cisg
ICAgICAgIChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQWN0
aXZpdHlMb2dnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RE9N
QWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01BY3Rpdml0eUxvZ2dlcjo6
flY4RE9NQWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01BY3Rpdml0eUxv
Z2dlcjo6bG9nKToKKwogMjAxMy0wMi0yNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYlNwZWVjaDogc3VwcG9ydCBzcGVlY2ggY2FuY2VsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDQyNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEyNjksNiArMTI2OSw3IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9N
Q29uZmlndXJhdGlvbi5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUFjdGl2aXR5
TG9nZ2VyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCShyZXZpc2lvbiAxNDQyNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw4ICszMywxMCBAQAogCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhET01BY3Rpdml0eUxvZ2dlci5o
IgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMjIwLDQgKzIyMiwyNCBAQCB2b2lk
IERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRlZFdvcmxkCiAgICAgaXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljaWVzKCkucmVtb3ZlKHdvcmxkSUQpOwogfQogCit0eXBlZGVmIEhh
c2hNYXA8IGludCwgT3duUHRyPFY4RE9NQWN0aXZpdHlMb2dnZXI+LCBXVEY6OkludEhhc2g8aW50
PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+ID4gRE9NQWN0aXZpdHlM
b2dnZXJNYXA7IAorc3RhdGljIERPTUFjdGl2aXR5TG9nZ2VyTWFwJiBkb21BY3Rpdml0eUxvZ2dl
cnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChET01BY3Rpdml0eUxvZ2dlck1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30K
Kwordm9pZCBET01XcmFwcGVyV29ybGQ6OnNldERPTUFjdGl2aXR5TG9nZ2VyKGludCB3b3JsZElE
LCBQYXNzT3duUHRyPFY4RE9NQWN0aXZpdHlMb2dnZXI+IGxvZ2dlcikKK3sKKyAgICBkb21BY3Rp
dml0eUxvZ2dlcnMoKS5zZXQod29ybGRJRCwgbG9nZ2VyKTsKK30gCisKK1Y4RE9NQWN0aXZpdHlM
b2dnZXIqIERPTVdyYXBwZXJXb3JsZDo6Z2V0RE9NQWN0aXZpdHlMb2dnZXIoaW50IHdvcmxkSUQp
Cit7CisgICAgRE9NQWN0aXZpdHlMb2dnZXJNYXAmIGxvZ2dlcnMgPSBkb21BY3Rpdml0eUxvZ2dl
cnMoKTsKKyAgICBET01BY3Rpdml0eUxvZ2dlck1hcDo6aXRlcmF0b3IgaXQgPSBsb2dnZXJzLmZp
bmQod29ybGRJRCk7ICAgCisgICAgcmV0dXJuIGl0ID09IGxvZ2dlcnMuZW5kKCkgPyAwIDogKGl0
LT52YWx1ZSkuZ2V0KCk7Cit9IAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAkocmV2aXNpb24gMTQ0
MjQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgRE9NV3JhcHBlcldvcmxkX2gK
IAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVjhET01BY3Rpdml0eUxv
Z2dlci5oIgogI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlIDx2OC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC05MSw2ICs5MiwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgY2xlYXJJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGlu
dCB3b3JsZElEKTsKICAgICBib29sIGlzb2xhdGVkV29ybGRIYXNDb250ZW50U2VjdXJpdHlQb2xp
Y3koKTsKIAorICAgIC8vIEFzc29jaWF0ZSBhIGxvZ2dlciBvYmplY3Qgd2l0aCB0aGUgd29ybGQg
aWRlbnRpZmllZCBieSB3b3JsZElEICh3b3JsSUQgbWF5IGJlIDAKKyAgICAvLyBpZGVudGlmeWlu
ZyB0aGUgbWFpbiB3b3JsZCkuICAKKyAgICBzdGF0aWMgdm9pZCBzZXRET01BY3Rpdml0eUxvZ2dl
cihpbnQgd29ybGRJRCwgUGFzc093blB0cjxWOERPTUFjdGl2aXR5TG9nZ2VyPik7CisgICAgc3Rh
dGljIFY4RE9NQWN0aXZpdHlMb2dnZXIqIGdldERPTUFjdGl2aXR5TG9nZ2VyKGludCB3b3JsZElE
KTsKKwogICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBwcm9ibGVtIGlu
IFdlYlZpZXdJbXBsLgogICAgIC8vIERvIG5vdCB1c2UgdGhpcyBhbnl3aGVyZSBlbHNlISEKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRX
b3JsZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01BY3Rpdml0eUxv
Z2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQWN0
aXZpdHlMb2dnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NQWN0aXZpdHlMb2dnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVjhET01BY3Rpdml0eUxvZ2dlcl9oCisjZGVmaW5lIFY4RE9NQWN0aXZpdHlMb2dnZXJf
aAorCisjaW5jbHVkZSAidjguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOERP
TUFjdGl2aXR5TG9nZ2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WOERPTUFjdGl2aXR5TG9n
Z2VyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9nKGNvbnN0IGNoYXIqIGFwaUNhbGwsIGlu
dCBhcmdjLCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIGFyZ3MsIGNvbnN0IGNoYXIqIGV4
dHJhKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFY4RE9N
QWN0aXZpdHlMb2dnZXJfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01BY3Rpdml0eUxvZ2dlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDQyNDQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTI1ICBBbmt1ciBUYWx5ICA8YXRhbHlAZ29vZ2xl
LmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGluZyBET00gbG9nZ2luZyBmb3Ig
Y2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBpbml0aWFsIHBsdW1iaW5nIGZvciBlbmFibGluZyBsb2dn
aW5nIG9mIERPTQorICAgICAgICBhY3Rpdml0eSBieSBKYXZhU2NyaXB0IGNvZGUgcnVubmluZyB3
aXRoaW5nIHY4LCBvbiBhIAorICAgICAgICBwZXItd29ybGQgYmFzaXMuIEluIHBhcnRpY3VsYXIg
aXQgYWRkcyBtZXRob2RzIHRvIHRoZSBjaHJvbWl1bQorICAgICAgICBXZWJLaXQgQVBJIGZvciBh
c3NvY2lhdGluZyBhIGxvZ2dlciBvYmplY3Qgd2l0aCB3b3JsZCBpZHMgZm9yIHdoaWNoCisgICAg
ICAgIERPTSBhY3Rpdml0eSBsb2dnaW5nIGlzIGVuYWJsZWQuCisKKworICAgICAgICAqIFdlYktp
dC5neXA6CisgICAgICAgICogcHVibGljL1dlYkRPTUFjdGl2aXR5TG9nZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAodjgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkRPTUFjdGl2aXR5
TG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRE9NQWN0aXZpdHlMb2dnZXI6On5XZWJET01B
Y3Rpdml0eUxvZ2dlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRPTUFjdGl2aXR5TG9nZ2VyOjps
b2cpOgorICAgICAgICAqIHNyYy9XZWJET01BY3Rpdml0eUxvZ2dlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKERPTUFjdGl2aXR5TG9nZ2VyQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYktpdDo6RE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXI6OkRPTUFjdGl2aXR5TG9n
Z2VyQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NQWN0aXZpdHlMb2dnZXJDb250YWlu
ZXI6On5ET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OkRPTUFj
dGl2aXR5TG9nZ2VyQ29udGFpbmVyOjpsb2cpOgorICAgICAgICAoV2ViS2l0OjpoYXNET01BY3Rp
dml0eUxvZ2dlcik6CisgICAgICAgIChXZWJLaXQ6OnNldERPTUFjdGl2aXR5TG9nZ2VyKToKKwog
MjAxMy0wMi0yNyAgTWluIFFpbiAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5s
b2NrIHBhcnRpYWxseSBkZWNvZGVkIGltYWdlcyBhZnRlciBwYXNzaW5nIHRoZW0gdG8gdGhlIElt
YWdlRGVjb2RpbmdTdG9yZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNp
b24gMTQ0MjQ0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNv
bnRleHRNZW51RGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDdXJz
b3JJbmZvLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRE9NQWN0aXZpdHlMb2dnZXIu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJET01DdXN0b21FdmVudC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkRPTUV2ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRE9NRXZlbnRMaXN0ZW5lci5oJywKQEAgLTQzNSw2ICs0MzYsNyBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJDdXJzb3JJbmZvLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJET01BY3Rpdml0eUxvZ2dlci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRE9N
Q3VzdG9tRXZlbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRPTUV2ZW50LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJET01FdmVudExpc3RlbmVyLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01BY3Rpdml0eUxvZ2dlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTUFjdGl2aXR5TG9n
Z2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
T01BY3Rpdml0eUxvZ2dlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJET01BY3Rpdml0eUxvZ2dlcl9oCisjZGVmaW5lIFdlYkRPTUFjdGl2aXR5TG9nZ2VyX2gKKwor
I2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJET01BY3Rp
dml0eUxvZ2dlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRE9NQWN0aXZpdHlMb2dnZXIo
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBsb2coY29uc3QgY2hhciogYXBpQ2FsbCwgaW50IGFy
Z2MsIGNvbnN0IHY4OjpIYW5kbGU8djg6OlZhbHVlPiogYXJncywgY29uc3QgY2hhciogZXh0cmEp
IHsgfQorfTsKKyAgICAKKy8vIENoZWNrcyBpZiBhIGxvZ2dlciBvYmplY3QgYWxyZWFkeSBleGlz
dHMgZm9yIHRoZSB3b3JsZCBpZGVudGlmaWVkCisvLyBieSB3b3JsZElEICh3b3JsZElEIG1heSBi
ZSAwIGlkZW50aWZ5aW5nIHRoZSBtYWluIHdvcmxkKS4KK2Jvb2wgaGFzRE9NQWN0aXZpdHlMb2dn
ZXIoaW50IHdvcmxkSUQpOworICAgIAorLy8gQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBsb2dnZXIg
b2JqZWN0IGlzIG5vbi1udWxsIGFuZCBpZiBzbyBhc3NvY2lhdGVzIGl0CisvLyB3aXRoIHRoZSB3
b3JsZCBpZGVudGlmaWVkIGJ5IHdvcmxkSUQgKHdvcmxkSUQgbWF5IGJlIDAgaWRlbnRpZnlpbmcg
dGhlIG1haW4gd29ybGQpLgordm9pZCBzZXRET01BY3Rpdml0eUxvZ2dlcihpbnQgd29ybGRJRCwg
V2ViRE9NQWN0aXZpdHlMb2dnZXIqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RE9NQWN0aXZpdHlMb2dnZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01BY3Rpdml0eUxvZ2dl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NQWN0
aXZpdHlMb2dnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRE9NQWN0aXZpdHlMb2dnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRPTUFjdGl2aXR5TG9nZ2VyLmgiCisK
KyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJWOERPTUFjdGl2aXR5TG9n
Z2VyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBET01BY3Rpdml0eUxvZ2dlckNv
bnRhaW5lciA6IHB1YmxpYyBWOERPTUFjdGl2aXR5TG9nZ2VyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lcihQYXNzT3duUHRyPFdlYkRPTUFjdGl2aXR5
TG9nZ2VyPiBsb2dnZXIpCisgICAgICAgIDogbV9kb21BY3Rpdml0eUxvZ2dlcihsb2dnZXIpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfkRPTUFjdGl2aXR5TG9nZ2VyQ29udGFpbmVyKCkg
eyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGxvZyhjb25zdCBjaGFyKiBhcGlDYWxsLCBpbnQg
YXJnYywgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KiBhcmdzLCBjb25zdCBjaGFyKiBleHRy
YSkKKyAgICB7ICAgCisgICAgICAgIG1fZG9tQWN0aXZpdHlMb2dnZXItPmxvZyhhcGlDYWxsLCBh
cmdjLCBhcmdzLCBleHRyYSk7IAorICAgIH0KK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkRPTUFj
dGl2aXR5TG9nZ2VyPiBtX2RvbUFjdGl2aXR5TG9nZ2VyOworfTsKKworYm9vbCBoYXNET01BY3Rp
dml0eUxvZ2dlcihpbnQgd29ybGRJRCkKK3sKKyAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpn
ZXRET01BY3Rpdml0eUxvZ2dlcih3b3JsZElEKTsKK30KKwordm9pZCBzZXRET01BY3Rpdml0eUxv
Z2dlcihpbnQgd29ybGRJRCwgV2ViRE9NQWN0aXZpdHlMb2dnZXIqIGxvZ2dlcikKK3sgICAKKyAg
ICBpZiAobG9nZ2VyKQorICAgICAgICBET01XcmFwcGVyV29ybGQ6OnNldERPTUFjdGl2aXR5TG9n
Z2VyKHdvcmxkSUQsIGFkb3B0UHRyKG5ldyBET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lcihhZG9w
dFB0cihsb2dnZXIpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTUFjdGl2aXR5TG9nZ2Vy
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190861</attachid>
            <date>2013-02-28 18:21:57 -0800</date>
            <delta_ts>2013-02-28 19:00:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130228181809.patch</filename>
            <type>text/plain</type>
            <size>14168</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI1ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhZGRpdGlvbmFsIHN0YXRpYyBt
ZXRob2RzIHRvIERPTVdyYXBwZXJXb3JsZCBmb3IgbWFuYWdpbmcgdGhlCisgICAgICAgIG1hcHBp
bmcgYmV0d2VlbiB3b3JsZElEcyBhbmQgbG9nZ2VyIG9iamVjdHMgKHdoZXJlIERPTSBsb2dnaW5n
IG1lc3NhZ2VzCisgICAgICAgIGFyZSBzZW50KSwgYW5kIGFsc28gZGVmaW5lcyBhIGNsYXNzIChW
OERPTUFjdGl2aXR5TG9nZ2VyKSBmb3IgbG9nZ2VyCisgICAgICAgIG9iamVjdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tQWN0aXZpdHlM
b2dnZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6c2V0RE9NQWN0aXZp
dHlMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpnZXRET01BY3Rp
dml0eUxvZ2dlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6Cisg
ICAgICAgIChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQWN0
aXZpdHlMb2dnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RE9N
QWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01BY3Rpdml0eUxvZ2dlcjo6
flY4RE9NQWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01BY3Rpdml0eUxv
Z2dlcjo6bG9nKToKKwogMjAxMy0wMi0yOCAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxi
cnVuby5hYmluYWRlckBiYXN5c2tvbS5jb20+CiAKICAgICAgICAgW3RleG1hcF0gUmVtb3ZlIHJl
ZHVuZGFudCBkZWZpbmVzIG9uIFRleHR1cmVNYXBwZXJHTApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTQ0MzU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcwLDYgKzEyNzAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
Q29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRp
b24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01BY3Rpdml0eUxvZ2dlci5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNpb24gMTQ0MzU5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
OCArMzMsMTAgQEAKIAogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4RE9NQWN0aXZpdHlMb2dnZXIuaCIKICNpbmNsdWRlICJWOERP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKQEAgLTIyMCw0ICsyMjIsMjQgQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6
OmNsZWFySXNvbGF0ZWRXb3JsZAogICAgIGlzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y2llcygpLnJlbW92ZSh3b3JsZElEKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPGludCwgT3duUHRy
PFY4RE9NQWN0aXZpdHlMb2dnZXI+LCBXVEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+ID4gRE9NQWN0aXZpdHlMb2dnZXJNYXA7IAorc3RhdGlj
IERPTUFjdGl2aXR5TG9nZ2VyTWFwJiBkb21BY3Rpdml0eUxvZ2dlcnMoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01BY3Rpdml0eUxv
Z2dlck1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBET01XcmFwcGVy
V29ybGQ6OnNldEFjdGl2aXR5TG9nZ2VyKGludCB3b3JsZElkLCBQYXNzT3duUHRyPFY4RE9NQWN0
aXZpdHlMb2dnZXI+IGxvZ2dlcikKK3sKKyAgICBkb21BY3Rpdml0eUxvZ2dlcnMoKS5zZXQod29y
bGRJZCwgbG9nZ2VyKTsKK30gCisKK1Y4RE9NQWN0aXZpdHlMb2dnZXIqIERPTVdyYXBwZXJXb3Js
ZDo6YWN0aXZpdHlMb2dnZXIoaW50IHdvcmxkSWQpCit7CisgICAgRE9NQWN0aXZpdHlMb2dnZXJN
YXAmIGxvZ2dlcnMgPSBkb21BY3Rpdml0eUxvZ2dlcnMoKTsKKyAgICBET01BY3Rpdml0eUxvZ2dl
ck1hcDo6aXRlcmF0b3IgaXQgPSBsb2dnZXJzLmZpbmQod29ybGRJZCk7ICAgCisgICAgcmV0dXJu
IGl0ID09IGxvZ2dlcnMuZW5kKCkgPyAwIDogaXQtPnZhbHVlLmdldCgpOworfSAKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3Jh
cHBlcldvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
V3JhcHBlcldvcmxkLmgJKHJldmlzaW9uIDE0NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjZGVmaW5lIERPTVdyYXBwZXJXb3JsZF9oCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlY4RE9NQWN0aXZpdHlMb2dnZXIuaCIKICNpbmNsdWRlICJWOFBlckNvbnRl
eHREYXRhLmgiCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtOTEsNiArOTIsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFySXNvbGF0ZWRX
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCk7CiAgICAgYm9vbCBpc29sYXRl
ZFdvcmxkSGFzQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKKyAgICAvLyBBc3NvY2lhdGUgYSBs
b2dnZXIgd2l0aCB0aGUgd29ybGQgaWRlbnRpZmllZCBieSB3b3JsZElkICh3b3JsSWQgbWF5IGJl
IDAKKyAgICAvLyBpZGVudGlmeWluZyB0aGUgbWFpbiB3b3JsZCkuICAKKyAgICBzdGF0aWMgdm9p
ZCBzZXRBY3Rpdml0eUxvZ2dlcihpbnQgd29ybGRJZCwgUGFzc093blB0cjxWOERPTUFjdGl2aXR5
TG9nZ2VyPik7CisgICAgc3RhdGljIFY4RE9NQWN0aXZpdHlMb2dnZXIqIGFjdGl2aXR5TG9nZ2Vy
KGludCB3b3JsZElkKTsKKwogICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Ig
YSBwcm9ibGVtIGluIFdlYlZpZXdJbXBsLgogICAgIC8vIERvIG5vdCB1c2UgdGhpcyBhbnl3aGVy
ZSBlbHNlISEKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWRXb3JsZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01BY3Rpdml0eUxvZ2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NQWN0aXZpdHlMb2dnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NQWN0aXZpdHlMb2dnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVjhET01BY3Rpdml0eUxvZ2dlcl9oCisjZGVmaW5lIFY4RE9NQWN0
aXZpdHlMb2dnZXJfaAorCisjaW5jbHVkZSAidjguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWOERPTUFjdGl2aXR5TG9nZ2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WOERP
TUFjdGl2aXR5TG9nZ2VyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9nKGNvbnN0IGNoYXIq
IGFwaU5hbWUsIGludCBhcmdjLCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIGFyZ3YsIGNv
bnN0IGNoYXIqIGV4dHJhSW5mbykgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBWOERPTUFjdGl2aXR5TG9nZ2VyX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQWN0aXZpdHlMb2dnZXIuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQ0MzU5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMy0wMi0yNSAgQW5rdXIgVGFs
eSAgPGF0YWx5QGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IEFQSSBmb3IgZW5hYmxpbmcg
RE9NIGxvZ2dpbmcgZm9yIGNlcnRhaW4gd29ybGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaW5pdGlhbCBwbHVtYmluZyBm
b3IgZW5hYmxpbmcgbG9nZ2luZyBvZiBET00KKyAgICAgICAgYWN0aXZpdHkgYnkgSmF2YVNjcmlw
dCBjb2RlIHJ1bm5pbmcgd2l0aGluZyB2OCwgb24gYSAKKyAgICAgICAgcGVyLXdvcmxkIGJhc2lz
LiBJbiBwYXJ0aWN1bGFyIGl0IGFkZHMgbWV0aG9kcyB0byB0aGUgY2hyb21pdW0KKyAgICAgICAg
V2ViS2l0IEFQSSBmb3IgYXNzb2NpYXRpbmcgYSBsb2dnZXIgb2JqZWN0IHdpdGggd29ybGQgaWRz
IGZvciB3aGljaAorICAgICAgICBET00gYWN0aXZpdHkgbG9nZ2luZyBpcyBlbmFibGVkLgorCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJET01BY3Rpdml0eUxv
Z2dlci5oOiBBZGRlZC4KKyAgICAgICAgKHY4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJET01BY3Rpdml0eUxvZ2dlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRPTUFjdGl2aXR5
TG9nZ2VyOjp+V2ViRE9NQWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJET01B
Y3Rpdml0eUxvZ2dlcjo6bG9nKToKKyAgICAgICAgKiBzcmMvV2ViRE9NQWN0aXZpdHlMb2dnZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChET01BY3Rpdml0eUxvZ2dl
ckNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OkRPTUFjdGl2aXR5TG9nZ2VyQ29udGFpbmVy
OjpET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OkRPTUFjdGl2
aXR5TG9nZ2VyQ29udGFpbmVyOjp+RE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXIpOgorICAgICAg
ICAoV2ViS2l0OjpET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lcjo6bG9nKToKKyAgICAgICAgKFdl
YktpdDo6aGFzRE9NQWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViS2l0OjpzZXRET01BY3Rp
dml0eUxvZ2dlcik6CisKIDIwMTMtMDItMjggIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZCBuZXcgd2Via2l0IEFQSSB0byBpbnZva2UgYSBjb250ZXh0
IG1lbnUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01BY3Rpdml0
eUxvZ2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRPTUFjdGl2aXR5TG9nZ2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJET01BY3Rpdml0eUxvZ2dlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJET01BY3Rpdml0eUxvZ2dlcl9oCisjZGVmaW5lIFdlYkRPTUFjdGl2
aXR5TG9nZ2VyX2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDYW52YXMuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJET01BY3Rpdml0eUxvZ2dlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
RE9NQWN0aXZpdHlMb2dnZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBsb2coY29uc3QgY2hh
ciogYXBpTmFtZSwgaW50IGFyZ2MsIGNvbnN0IHY4OjpIYW5kbGU8djg6OlZhbHVlPiogYXJndiwg
Y29uc3QgY2hhciogZXh0cmFJbmZvKSB7IH0KK307CisgICAgCisvLyBDaGVja3MgaWYgYSBsb2dn
ZXIgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSB3b3JsZCBpZGVudGlmaWVkCisvLyBieSB3b3JsZElk
ICh3b3JsZElkIG1heSBiZSAwIGlkZW50aWZ5aW5nIHRoZSBtYWluIHdvcmxkKS4KK1dFQktJVF9F
WFBPUlQgYm9vbCBoYXNET01BY3Rpdml0eUxvZ2dlcihpbnQgd29ybGRJZCk7CisgICAgCisvLyBD
aGVja3MgaWYgdGhlIHByb3ZpZGVkIGxvZ2dlciBpcyBub24tbnVsbCBhbmQgaWYgc28gYXNzb2Np
YXRlcyBpdAorLy8gd2l0aCB0aGUgd29ybGQgaWRlbnRpZmllZCBieSB3b3JsZElkICh3b3JsZElk
IG1heSBiZSAwIGlkZW50aWZ5aW5nIHRoZSBtYWluIHdvcmxkKS4KK1dFQktJVF9FWFBPUlQgdm9p
ZCBzZXRET01BY3Rpdml0eUxvZ2dlcihpbnQgd29ybGRJZCwgV2ViRE9NQWN0aXZpdHlMb2dnZXIq
KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NQWN0aXZpdHlMb2dnZXIuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJET01BY3Rpdml0eUxvZ2dlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NQWN0aXZpdHlMb2dnZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NQWN0aXZpdHlMb2dn
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkRPTUFjdGl2aXR5TG9nZ2VyLmgiCisKKyNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKKyNpbmNsdWRlICJWOERPTUFjdGl2aXR5TG9nZ2VyLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lciA6IHB1YmxpYyBWOERP
TUFjdGl2aXR5TG9nZ2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBET01BY3Rpdml0eUxvZ2dl
ckNvbnRhaW5lcihQYXNzT3duUHRyPFdlYkRPTUFjdGl2aXR5TG9nZ2VyPiBsb2dnZXIpCisgICAg
ICAgIDogbV9kb21BY3Rpdml0eUxvZ2dlcihsb2dnZXIpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgbG9nKGNvbnN0IGNoYXIqIGFwaU5hbWUsIGludCBhcmdjLCBjb25zdCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIGFyZ3YsIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykKKyAgICB7
ICAgCisgICAgICAgIG1fZG9tQWN0aXZpdHlMb2dnZXItPmxvZyhhcGlOYW1lLCBhcmdjLCBhcmd2
LCBleHRyYUluZm8pOyAKKyAgICB9Citwcml2YXRlOgorICAgIE93blB0cjxXZWJET01BY3Rpdml0
eUxvZ2dlcj4gbV9kb21BY3Rpdml0eUxvZ2dlcjsKK307CisKK2Jvb2wgaGFzRE9NQWN0aXZpdHlM
b2dnZXIoaW50IHdvcmxkSWQpCit7CisgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6YWN0aXZp
dHlMb2dnZXIod29ybGRJZCk7Cit9CisKK3ZvaWQgc2V0RE9NQWN0aXZpdHlMb2dnZXIoaW50IHdv
cmxkSWQsIFdlYkRPTUFjdGl2aXR5TG9nZ2VyKiBsb2dnZXIpCit7ICAgCisgICAgQVNTRVJUKGxv
Z2dlcik7CisgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRBY3Rpdml0eUxvZ2dlcih3b3JsZElkLCBh
ZG9wdFB0cihuZXcgRE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXIoYWRvcHRQdHIobG9nZ2VyKSkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01BY3Rpdml0eUxvZ2dlci5jcHAKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190865</attachid>
            <date>2013-02-28 19:00:31 -0800</date>
            <delta_ts>2013-03-02 00:16:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-110779-20130228185646.patch</filename>
            <type>text/plain</type>
            <size>13672</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDQwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI4ICBBbmt1ciBU
YWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJLaXQgQVBJIGZvciBlbmFibGlu
ZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCisgICAgICAgIAorICAgICAgICBBZGRzIGFkZGl0aW9uYWwgc3RhdGljIG1ldGhv
ZHMgdG8gRE9NV3JhcHBlcldvcmxkIGZvciBtYW5hZ2luZyB0aGUKKyAgICAgICAgbWFwcGluZyBi
ZXR3ZWVuIHdvcmxkSURzIGFuZCBsb2dnZXIgb2JqZWN0cyAod2hlcmUgRE9NIGxvZ2dpbmcgbWVz
c2FnZXMKKyAgICAgICAgYXJlIHNlbnQpLCBhbmQgYWxzbyBkZWZpbmVzIGEgY2xhc3MgKFY4RE9N
QWN0aXZpdHlMb2dnZXIpIGZvciBsb2dnZXIKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpkb21BY3Rpdml0eUxvZ2dl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpzZXRET01BY3Rpdml0eUxv
Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmdldERPTUFjdGl2aXR5
TG9nZ2VyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAg
ICAgKERPTVdyYXBwZXJXb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01BY3Rpdml0
eUxvZ2dlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhET01BY3Rp
dml0eUxvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUFjdGl2aXR5TG9nZ2VyOjp+VjhE
T01BY3Rpdml0eUxvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUFjdGl2aXR5TG9nZ2Vy
Ojpsb2cpOgorCiAyMDEzLTAyLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVGhlIHRocmVhZGVkIEhUTUwgcGFyc2VyIHNob3VsZG4ndCBuZWVkIHRvIGludmFs
aWRhdGUgdGhlIHNwZWN1bGF0aW9uIGJ1ZmZlciBvbiBldmVyeSBkb2N1bWVudC53cml0ZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQ0NDA3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcwLDYgKzEyNzAsNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERP
TUNvbmZpZ3VyYXRpb24uaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01BY3Rpdml0
eUxvZ2dlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNpb24gMTQ0NDA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsOCArMzMsMTAgQEAKIAogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4RE9NQWN0aXZpdHlMb2dnZXIu
aCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTIyMCw0ICsyMjIsMjQgQEAgdm9p
ZCBET01XcmFwcGVyV29ybGQ6OmNsZWFySXNvbGF0ZWRXb3JsZAogICAgIGlzb2xhdGVkV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY2llcygpLnJlbW92ZSh3b3JsZElEKTsKIH0KIAordHlwZWRlZiBI
YXNoTWFwPGludCwgT3duUHRyPFY4RE9NQWN0aXZpdHlMb2dnZXI+LCBXVEY6OkludEhhc2g8aW50
PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+ID4gRE9NQWN0aXZpdHlM
b2dnZXJNYXA7IAorc3RhdGljIERPTUFjdGl2aXR5TG9nZ2VyTWFwJiBkb21BY3Rpdml0eUxvZ2dl
cnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChET01BY3Rpdml0eUxvZ2dlck1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30K
Kwordm9pZCBET01XcmFwcGVyV29ybGQ6OnNldEFjdGl2aXR5TG9nZ2VyKGludCB3b3JsZElkLCBQ
YXNzT3duUHRyPFY4RE9NQWN0aXZpdHlMb2dnZXI+IGxvZ2dlcikKK3sKKyAgICBkb21BY3Rpdml0
eUxvZ2dlcnMoKS5zZXQod29ybGRJZCwgbG9nZ2VyKTsKK30gCisKK1Y4RE9NQWN0aXZpdHlMb2dn
ZXIqIERPTVdyYXBwZXJXb3JsZDo6YWN0aXZpdHlMb2dnZXIoaW50IHdvcmxkSWQpCit7CisgICAg
RE9NQWN0aXZpdHlMb2dnZXJNYXAmIGxvZ2dlcnMgPSBkb21BY3Rpdml0eUxvZ2dlcnMoKTsKKyAg
ICBET01BY3Rpdml0eUxvZ2dlck1hcDo6aXRlcmF0b3IgaXQgPSBsb2dnZXJzLmZpbmQod29ybGRJ
ZCk7ICAgCisgICAgcmV0dXJuIGl0ID09IGxvZ2dlcnMuZW5kKCkgPyAwIDogaXQtPnZhbHVlLmdl
dCgpOworfSAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgJKHJldmlzaW9uIDE0NDQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIERPTVdyYXBwZXJXb3JsZF9oCiAKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlY4RE9NQWN0aXZpdHlMb2dnZXIuaCIKICNp
bmNsdWRlICJWOFBlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtODcsNiArODgsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCk7
CiAgICAgYm9vbCBpc29sYXRlZFdvcmxkSGFzQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKKyAg
ICAvLyBBc3NvY2lhdGUgYSBsb2dnZXIgd2l0aCB0aGUgd29ybGQgaWRlbnRpZmllZCBieSB3b3Js
ZElkICh3b3JsSWQgbWF5IGJlIDAKKyAgICAvLyBpZGVudGlmeWluZyB0aGUgbWFpbiB3b3JsZCku
ICAKKyAgICBzdGF0aWMgdm9pZCBzZXRBY3Rpdml0eUxvZ2dlcihpbnQgd29ybGRJZCwgUGFzc093
blB0cjxWOERPTUFjdGl2aXR5TG9nZ2VyPik7CisgICAgc3RhdGljIFY4RE9NQWN0aXZpdHlMb2dn
ZXIqIGFjdGl2aXR5TG9nZ2VyKGludCB3b3JsZElkKTsKKwogICAgIC8vIEZJWE1FOiB0aGlzIGlz
IGEgd29ya2Fyb3VuZCBmb3IgYSBwcm9ibGVtIGluIFdlYlZpZXdJbXBsLgogICAgIC8vIERvIG5v
dCB1c2UgdGhpcyBhbnl3aGVyZSBlbHNlISEKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFw
cGVyV29ybGQ+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRXb3JsZCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01BY3Rpdml0eUxvZ2dlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQWN0aXZpdHlMb2dnZXIuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQWN0aXZpdHlMb2dnZXIuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhET01BY3Rpdml0eUxvZ2dlcl9o
CisjZGVmaW5lIFY4RE9NQWN0aXZpdHlMb2dnZXJfaAorCisjaW5jbHVkZSAidjguaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOERPTUFjdGl2aXR5TG9nZ2VyIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5WOERPTUFjdGl2aXR5TG9nZ2VyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgbG9nKGNvbnN0IGNoYXIqIGFwaU5hbWUsIGludCBhcmdjLCBjb25zdCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4qIGFyZ3YsIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykgeyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOERPTUFjdGl2aXR5TG9nZ2VyX2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQ0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisy
MDEzLTAyLTI4ICBBbmt1ciBUYWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJL
aXQgQVBJIGZvciBlbmFibGluZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGlu
aXRpYWwgcGx1bWJpbmcgZm9yIGVuYWJsaW5nIGxvZ2dpbmcgb2YgRE9NCisgICAgICAgIGFjdGl2
aXR5IGJ5IEphdmFTY3JpcHQgY29kZSBydW5uaW5nIHdpdGhpbmcgdjgsIG9uIGEgCisgICAgICAg
IHBlci13b3JsZCBiYXNpcy4gSW4gcGFydGljdWxhciBpdCBhZGRzIG1ldGhvZHMgdG8gdGhlIGNo
cm9taXVtCisgICAgICAgIFdlYktpdCBBUEkgZm9yIGFzc29jaWF0aW5nIGEgbG9nZ2VyIG9iamVj
dCB3aXRoIHdvcmxkIGlkcyBmb3Igd2hpY2gKKyAgICAgICAgRE9NIGFjdGl2aXR5IGxvZ2dpbmcg
aXMgZW5hYmxlZC4KKworCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViRE9NQWN0aXZpdHlMb2dnZXIuaDogQWRkZWQuCisgICAgICAgICh2OCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViRE9NQWN0aXZpdHlMb2dnZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJET01BY3Rpdml0eUxvZ2dlcjo6fldlYkRPTUFjdGl2aXR5TG9nZ2VyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRE9NQWN0aXZpdHlMb2dnZXI6OmxvZyk6CisgICAgICAgICogc3JjL1dlYkRP
TUFjdGl2aXR5TG9nZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
RE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXIpOgorICAgICAgICAoV2ViS2l0OjpET01BY3Rpdml0
eUxvZ2dlckNvbnRhaW5lcjo6RE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXIpOgorICAgICAgICAo
V2ViS2l0OjpET01BY3Rpdml0eUxvZ2dlckNvbnRhaW5lcjo6fkRPTUFjdGl2aXR5TG9nZ2VyQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXI6Omxv
Zyk6CisgICAgICAgIChXZWJLaXQ6Omhhc0RPTUFjdGl2aXR5TG9nZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6c2V0RE9NQWN0aXZpdHlMb2dnZXIpOgorCiAyMDEzLTAyLTI4ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9s
bGVkIENocm9taXVtIERFUFMgdG8gcjE4NTM0MS4gIFJlcXVlc3RlZCBieQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NQWN0aXZpdHlMb2dnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01BY3Rpdml0eUxvZ2dlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NQWN0
aXZpdHlMb2dnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRE9N
QWN0aXZpdHlMb2dnZXJfaAorI2RlZmluZSBXZWJET01BY3Rpdml0eUxvZ2dlcl9oCisKKyNpbmNs
dWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRPTUFjdGl2aXR5
TG9nZ2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJET01BY3Rpdml0eUxvZ2dlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBsb2coY29uc3QgY2hhciogYXBpTmFtZSwgaW50IGFyZ2MsIGNv
bnN0IHY4OjpIYW5kbGU8djg6OlZhbHVlPiogYXJndiwgY29uc3QgY2hhciogZXh0cmFJbmZvKSB7
IH0KK307CisKKy8vIENoZWNrcyBpZiBhIGxvZ2dlciBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHdv
cmxkIGlkZW50aWZpZWQKKy8vIGJ5IHdvcmxkSWQgKHdvcmxkSWQgbWF5IGJlIDAgaWRlbnRpZnlp
bmcgdGhlIG1haW4gd29ybGQpLgorV0VCS0lUX0VYUE9SVCBib29sIGhhc0RPTUFjdGl2aXR5TG9n
Z2VyKGludCB3b3JsZElkKTsKKworLy8gQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBsb2dnZXIgaXMg
bm9uLW51bGwgYW5kIGlmIHNvIGFzc29jaWF0ZXMgaXQKKy8vIHdpdGggdGhlIHdvcmxkIGlkZW50
aWZpZWQgYnkgd29ybGRJZCAod29ybGRJZCBtYXkgYmUgMCBpZGVudGlmeWluZyB0aGUgbWFpbiB3
b3JsZCkuCitXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RE9NQWN0aXZpdHlMb2dnZXIoaW50IHdvcmxk
SWQsIFdlYkRPTUFjdGl2aXR5TG9nZ2VyKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTUFjdGl2aXR5TG9n
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01B
Y3Rpdml0eUxvZ2dlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJET01BY3Rpdml0eUxvZ2dlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRE9NQWN0aXZpdHlMb2dnZXIuaCIK
KworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIlY4RE9NQWN0aXZpdHlM
b2dnZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERPTUFjdGl2aXR5TG9nZ2Vy
Q29udGFpbmVyIDogcHVibGljIFY4RE9NQWN0aXZpdHlMb2dnZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IERPTUFjdGl2aXR5TG9nZ2VyQ29udGFpbmVyKFBhc3NPd25QdHI8V2ViRE9NQWN0aXZp
dHlMb2dnZXI+IGxvZ2dlcikKKyAgICAgICAgOiBtX2RvbUFjdGl2aXR5TG9nZ2VyKGxvZ2dlcikK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGxvZyhjb25zdCBjaGFyKiBhcGlOYW1l
LCBpbnQgYXJnYywgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KiBhcmd2LCBjb25zdCBjaGFy
KiBleHRyYUluZm8pCisgICAgeyAgIAorICAgICAgICBtX2RvbUFjdGl2aXR5TG9nZ2VyLT5sb2co
YXBpTmFtZSwgYXJnYywgYXJndiwgZXh0cmFJbmZvKTsgCisgICAgfQorCitwcml2YXRlOgorICAg
IE93blB0cjxXZWJET01BY3Rpdml0eUxvZ2dlcj4gbV9kb21BY3Rpdml0eUxvZ2dlcjsKK307CisK
K2Jvb2wgaGFzRE9NQWN0aXZpdHlMb2dnZXIoaW50IHdvcmxkSWQpCit7CisgICAgcmV0dXJuIERP
TVdyYXBwZXJXb3JsZDo6YWN0aXZpdHlMb2dnZXIod29ybGRJZCk7Cit9CisKK3ZvaWQgc2V0RE9N
QWN0aXZpdHlMb2dnZXIoaW50IHdvcmxkSWQsIFdlYkRPTUFjdGl2aXR5TG9nZ2VyKiBsb2dnZXIp
Cit7CisgICAgQVNTRVJUKGxvZ2dlcik7CisgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRBY3Rpdml0
eUxvZ2dlcih3b3JsZElkLCBhZG9wdFB0cihuZXcgRE9NQWN0aXZpdHlMb2dnZXJDb250YWluZXIo
YWRvcHRQdHIobG9nZ2VyKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191084</attachid>
            <date>2013-03-01 18:20:51 -0800</date>
            <delta_ts>2013-03-03 00:58:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110779-20130301181701.patch</filename>
            <type>text/plain</type>
            <size>1566</size>
            <attacher name="Ankur Taly">ataly</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQ1MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEzLTAzLTAxICBBbmt1ciBUYWx5ICA8YXRhbHlAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBXZWJLaXQgQVBJIGZvciBlbmFibGluZyBET00gbG9nZ2luZyBmb3IgY2VydGFpbiB3b3JsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc3OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0
Lmd5cDoKKwogMjAxMy0wMy0wMSAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUo
KSBzaG91bGQgaW52b2tlIHRoZSB1c2VyLWdlbmVyYXRlZCBzY3JvbGwgcm91dGluZXMgCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiAxNDQ1MjEpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAs
NyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRhLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkN1cnNvckluZm8uaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJET01BY3Rpdml0eUxvZ2dlci5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkRPTUN1c3RvbUV2ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
RE9NRXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJET01FdmVudExpc3RlbmVy
LmgnLApAQCAtNDM5LDYgKzQ0MCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkN1
cnNvckluZm8uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRPTUFjdGl2aXR5TG9nZ2Vy
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJET01DdXN0b21FdmVudC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRE9NRXZlbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRPTUV2ZW50TGlzdGVuZXIuY3BwJywK
</data>

          </attachment>
      

    </bug>

</bugzilla>