<?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>49345</bug_id>
          
          <creation_ts>2010-11-10 14:29:46 -0800</creation_ts>
          <short_desc>Add Support to WebCore to optionally call an optional platform-specific gesture recognizer</short_desc>
          <delta_ts>2011-05-09 11:58:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53510</dependson>
          <blocked>54417</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>benm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>efidler</cc>
    
    <cc>gmak</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kim.1.gronholm</cc>
    
    <cc>manyoso</cc>
    
    <cc>peter</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>307565</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-11-10 14:29:46 -0800</bug_when>
    <thetext>The attached patch contains a basic GestureManager for Chromium moved into WebKit per http://codereview.chromium.org/3388013/. The GestureManager provides an extensible framework for synthesizing events from incoming touch events. Also included in this patch are:

* minor type alterations to WebTouchEvent and WebTouchPoint that improves readability
* unit tests
* an implementation of two demonstration gestures: click and scroll.
* layout tests for click and scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307571</commentid>
    <comment_count>1</comment_count>
      <attachid>73542</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-11-10 14:38:41 -0800</bug_when>
    <thetext>Created attachment 73542
patch 1 (of probably many) for a basic Chromium GestureManager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308192</commentid>
    <comment_count>2</comment_count>
      <attachid>73542</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-11 15:05:39 -0800</bug_when>
    <thetext>Comment on attachment 73542
patch 1 (of probably many) for a basic Chromium GestureManager

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

&gt; WebKit/chromium/src/GestureManager.h:109
&gt; +#if defined(UNIT_TEST)
&gt; +public: 
&gt; +#else
&gt; +protected:
&gt; +#endif 

This is unfortunate.

&gt; WebKit/chromium/src/GestureManager.h:139
&gt; +    // The WebViewImpl that invoked the GestureManager.
&gt; +    WebViewImpl* m_WebView;  

m_webView
  ^-- lower case (several instances in this file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308476</commentid>
    <comment_count>3</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-11-12 03:29:10 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 73542 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73542&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/src/GestureManager.h:109
&gt; &gt; +#if defined(UNIT_TEST)
&gt; &gt; +public: 
&gt; &gt; +#else
&gt; &gt; +protected:
&gt; &gt; +#endif 
&gt; 
&gt; This is unfortunate.

It certainly looks a bit ugly. I could probably get rid of it by sub-classing the GestureManager in the test.

&gt; 
&gt; &gt; WebKit/chromium/src/GestureManager.h:139
&gt; &gt; +    // The WebViewImpl that invoked the GestureManager.
&gt; &gt; +    WebViewImpl* m_WebView;  
&gt; 
&gt; m_webView
&gt;   ^-- lower case (several instances in this file)

some of this code use to be in a patch-for-Chromium so it may have other Chromium-style -&gt; WebKit style issues. I&apos;ll scrub carefully before the next patch iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316331</commentid>
    <comment_count>4</comment_count>
      <attachid>75402</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-02 12:21:24 -0800</bug_when>
    <thetext>Created attachment 75402
second proposed patch.

As per discussion earlier, I have moved the GestureManager to WebCore. Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318284</commentid>
    <comment_count>5</comment_count>
      <attachid>75402</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-07 10:09:43 -0800</bug_when>
    <thetext>Comment on attachment 75402
second proposed patch.

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

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:46
&gt; +&lt;body style=&quot;margin:0&quot; onload=&quot;setTimeout(&apos;runTest();&apos;, 100)&quot;&gt;

Why wait 100ms?

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:84
&gt; +        successfullyParsed = true;
&gt; +        isSuccessfullyParsed();

Seems like we should do these even if there&apos;s no layoutTestController.

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:113
&gt; +    // Wait for layout.
&gt; +    setTimeout(checkScrollOffset, 50);

Boo.  setTimeout makes tests slow and flaky.

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:139
&gt; +    layoutTestController.notifyDone();

This should be protected by if (window.layoutTestController)

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:155
&gt; +            setTimeout(exitIfNecessary, 200);

boo

&gt; WebCore/page/EventHandler.cpp:3001
&gt; -}
&gt; +} // namespace WebCore

This change isn&apos;t really necessary.  We&apos;re inconsistent about whether to include these comments.

&gt; WebCore/page/GestureManager.cpp:34
&gt; +// #include &lt;wtf/Assertions.h&gt;

No commented out code, please.  :)

&gt; WebCore/page/GestureManager.cpp:53
&gt; +static const double maxClickDownTime = .8;

0.8

&gt; WebCore/page/GestureManager.cpp:56
&gt; +static const double minClickDownTime = .01;

ditto

&gt; WebCore/page/GestureManager.cpp:78
&gt; +void GestureManager::addEdgeFunction(State state,
&gt; +                                     unsigned finger,
&gt; +                                     PlatformTouchPoint::State touchType,
&gt; +                                     bool handled,
&gt; +                                     GestureTransitionFunction f)

All on one line please.

&gt; WebCore/page/GestureManager.cpp:108
&gt; +    PlatformMouseEvent fakeMouseDown(p.pos(),
&gt; +                                     p.screenPos(),
&gt; +                                     LeftButton,
&gt; +                                     MouseEventPressed,
&gt; +                                     1,
&gt; +                                     false,
&gt; +                                     false,
&gt; +                                     false,
&gt; +                                     false,
&gt; +                                     WTF::currentTime());

WebKit doesn&apos;t have an 80 col limit.  Please feel free to use more horizontal space.  :)

&gt; WebCore/page/GestureManager.cpp:153
&gt; +        GestureTransitionFunction ef = m_edgeFunctions.get(hash(m_state, p.id(), p.state(), handled));
&gt; +        if (ef)

We usually combine these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318417</commentid>
    <comment_count>6</comment_count>
      <attachid>75402</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-07 13:53:07 -0800</bug_when>
    <thetext>Comment on attachment 75402
second proposed patch.

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

My review comments are mostly just style issues.  I don&apos;t know too much about touch, so I&apos;m not able to review the substance of your change.  We&apos;ll want to find someone who&apos;s familiar with this kind of thing to do a review of the substance.

&gt; WebCore/page/GestureManager.h:68
&gt; +    void addEdgeFunction(State,
&gt; +                         unsigned,
&gt; +                         PlatformTouchPoint::State,
&gt; +                         bool,
&gt; +                         GestureTransitionFunction);
&gt; +  

Generally, we omit formal parameter names in header files if the meaning is obvious.  For example &quot;Frame* frame&quot; is kind of redundant. However, here, it looks like you&apos;ve gone a bit overboard.  What does the second parameter mean?  Also, the comment seems to refer to parameter names that are no longer present.  (Also, these declarations should be on one line.)

&gt; WebCore/page/GestureManager.h:95
&gt; +    inline void setState(State s)
&gt; +    {
&gt; +      m_state = s;
&gt; +    }

No need to declare these functions inline.  Also, you can just write the whole function on one line.  (You&apos;ve also got a bad indent here, but that will get fixed when you put the whole thing on one line.)  The general rule is that simple setter/getter functions should take up as little space as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320431</commentid>
    <comment_count>7</comment_count>
      <attachid>75402</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-12-10 14:44:10 -0800</bug_when>
    <thetext>Comment on attachment 75402
second proposed patch.

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

&gt; WebCore/platform/qt/PlatformTouchEventQt.cpp:45
&gt; +    m_timestamp = 0;

Wouldn&apos;t it make sense to set timestamp to WTF::currentTime() instead? This way it could be used with your algoritms of GestureManager.


I like the patch quite a bit, but I am concerned about platform compatibility.

What about forwarding the gestures to the ChromeClient and letting the port decide how to handle the result?
I think about features like kinetic scrolling, and zoom behavior which depends on the platform.

I am also a bit concerned about putting behavior here when the platform already provide gesture recognition. Windows 7 for example has precise timing for gestures (WM_GESTURE messages), and users get used to the platform recognizer. By giving other timing specifically for WebKit, the engine will be less integrated in the platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320465</commentid>
    <comment_count>8</comment_count>
      <attachid>76273</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-10 15:46:23 -0800</bug_when>
    <thetext>Created attachment 76273
third proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320467</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-10 15:49:22 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 75402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75402&amp;action=review
&gt; 
&gt; My review comments are mostly just style issues.  I don&apos;t know too much about touch, so I&apos;m not able to review the substance of your change.  We&apos;ll want to find someone who&apos;s familiar with this kind of thing to do a review of the substance.

Sure. Sounds good. I am (at least in theory) one of the &quot;touch people&quot; for Chrome but can stand to learn a lot about how touch works in WebKit.

&gt; 
&gt; &gt; WebCore/page/GestureManager.h:68
&gt; &gt; +    void addEdgeFunction(State,
&gt; &gt; +                         unsigned,
&gt; &gt; +                         PlatformTouchPoint::State,
&gt; &gt; +                         bool,
&gt; &gt; +                         GestureTransitionFunction);
&gt; &gt; +  
&gt; 
&gt; Generally, we omit formal parameter names in header files if the meaning is obvious.  For example &quot;Frame* frame&quot; is kind of redundant. However, here, it looks like you&apos;ve gone a bit overboard.  What does the second parameter mean?  Also, the comment seems to refer to parameter names that are no longer present.  (Also, these declarations should be on one line.)


I cleaned this up.

&gt; 
&gt; &gt; WebCore/page/GestureManager.h:95
&gt; &gt; +    inline void setState(State s)
&gt; &gt; +    {
&gt; &gt; +      m_state = s;
&gt; &gt; +    }
&gt; 
&gt; No need to declare these functions inline.  Also, you can just write the whole function on one line.  (You&apos;ve also got a bad indent here, but that will get fixed when you put the whole thing on one line.)  The general rule is that simple setter/getter functions should take up as little space as possible.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320489</commentid>
    <comment_count>10</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-10 16:18:09 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 75402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75402&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:46
&gt; &gt; +&lt;body style=&quot;margin:0&quot; onload=&quot;setTimeout(&apos;runTest();&apos;, 100)&quot;&gt;
&gt; 
&gt; Why wait 100ms?

because EventSender::sendCurrentTouchEvent didn&apos;t call webview()-&gt;layout(). fixed.

&gt; 
&gt; &gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:84
&gt; &gt; +        successfullyParsed = true;
&gt; &gt; +        isSuccessfullyParsed();
&gt; 
&gt; Seems like we should do these even if there&apos;s no layoutTestController.

done.

&gt; 
&gt; &gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:113
&gt; &gt; +    // Wait for layout.
&gt; &gt; +    setTimeout(checkScrollOffset, 50);
&gt; 
&gt; Boo.  setTimeout makes tests slow and flaky.

setTimeout removed throughout. I had forgotten to clean up after https://bugs.webkit.org/show_bug.cgi?id=49285

done.

&gt; 
&gt; &gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:139
&gt; &gt; +    layoutTestController.notifyDone();
&gt; 
&gt; This should be protected by if (window.layoutTestController)

done, fourth patch.

&gt; 
&gt; &gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:155
&gt; &gt; +            setTimeout(exitIfNecessary, 200);
&gt; 
&gt; boo

fixed.

&gt; 
&gt; &gt; WebCore/page/EventHandler.cpp:3001
&gt; &gt; -}
&gt; &gt; +} // namespace WebCore
&gt; 
&gt; This change isn&apos;t really necessary.  We&apos;re inconsistent about whether to include these comments.

done

&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:34
&gt; &gt; +// #include &lt;wtf/Assertions.h&gt;
&gt; 
&gt; No commented out code, please.  :)


done.

&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:53
&gt; &gt; +static const double maxClickDownTime = .8;
&gt; 
&gt; 0.8
&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:56
&gt; &gt; +static const double minClickDownTime = .01;
&gt; 
&gt; ditto

done

&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:78
&gt; &gt; +void GestureManager::addEdgeFunction(State state,
&gt; &gt; +                                     unsigned finger,
&gt; &gt; +                                     PlatformTouchPoint::State touchType,
&gt; &gt; +                                     bool handled,
&gt; &gt; +                                     GestureTransitionFunction f)
&gt; 
&gt; All on one line please.

done.

&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:108
&gt; &gt; +    PlatformMouseEvent fakeMouseDown(p.pos(),
&gt; &gt; +                                     p.screenPos(),
&gt; &gt; +                                     LeftButton,
&gt; &gt; +                                     MouseEventPressed,
&gt; &gt; +                                     1,
&gt; &gt; +                                     false,
&gt; &gt; +                                     false,
&gt; &gt; +                                     false,
&gt; &gt; +                                     false,
&gt; &gt; +                                     WTF::currentTime());
&gt; 
&gt; WebKit doesn&apos;t have an 80 col limit.  Please feel free to use more horizontal space.  :)

google3 habits. :-) my bad. fixed.

&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:153
&gt; &gt; +        GestureTransitionFunction ef = m_edgeFunctions.get(hash(m_state, p.id(), p.state(), handled));
&gt; &gt; +        if (ef)
&gt; 
&gt; We usually combine these lines.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320491</commentid>
    <comment_count>11</comment_count>
      <attachid>76281</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-10 16:18:50 -0800</bug_when>
    <thetext>Created attachment 76281
fourth patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320497</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 16:29:44 -0800</bug_when>
    <thetext>Attachment 76273 did not build on chromium:
Build output: http://queues.webkit.org/results/6938050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320501</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-10 16:38:26 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 75402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75402&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/qt/PlatformTouchEventQt.cpp:45
&gt; &gt; +    m_timestamp = 0;
&gt; 
&gt; Wouldn&apos;t it make sense to set timestamp to WTF::currentTime() instead? This way it could be used with your algoritms of GestureManager.

yes. fixed.

&gt; 
&gt; 
&gt; I like the patch quite a bit, but I am concerned about platform compatibility.

Thanks.

My premise is that touch events, if not handled by the page explicitly, are converted into synthetic events handled by EventSender. Consequently, having a GestureManager &quot;near&quot; the EventSender seemed logical.

&gt; 
&gt; What about forwarding the gestures to the ChromeClient and letting the port decide how to handle the result?
&gt; I think about features like kinetic scrolling, and zoom behavior which depends on the platform.

This is an excellent suggestion. However, I think that the basic framework here does not preclude your suggestion. I had imagined extending the GestureManager via sub-classes in a future patch. (You will note that a number of popular gestures are not admitted here.) It would make sense to permit the platform layer to provide platform-specific GestureManager extensions. In particular, the framework here permits a future platform-specific implementation to register arbitrary additional edge functions with minimal modifications here. (fingers crossed.)

&gt; 
&gt; I am also a bit concerned about putting behavior here when the platform already provide gesture recognition. Windows 7 for example has precise timing for gestures (WM_GESTURE messages), and users get used to the platform recognizer. By giving other timing specifically for WebKit, the engine will be less integrated in the platform.

The goal of this patch was to provide a basic framework that would be used on platforms that do not provide a gesture management system (as like double-click on some cases.) I&apos;d like to defer some sort of platform delegation scheme to a follow-on CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320522</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 17:59:20 -0800</bug_when>
    <thetext>Attachment 76281 did not build on chromium:
Build output: http://queues.webkit.org/results/6922050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320527</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-10 18:03:05 -0800</bug_when>
    <thetext>Attachment 76281 did not build on chromium:
Build output: http://queues.webkit.org/results/7005033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320640</commentid>
    <comment_count>16</comment_count>
      <attachid>76281</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-12-11 03:55:44 -0800</bug_when>
    <thetext>Comment on attachment 76281
fourth patch

Comments from a quick look at the patch:


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

&gt; LayoutTests/fast/events/touch/touch-gesture-click.html:21
&gt; +var EXPECTED_CLICK_EVENTS_TOTAL = 3;

I would rename this to expected _mouse_ events. Because only one click event is expected so the name can be confusing.

&gt; LayoutTests/fast/events/touch/touch-gesture-click.html:25
&gt; +var haveTouchEvents = false;

This does not seem to be used anywhere.

&gt; LayoutTests/fast/events/touch/touch-gesture-click.html:30
&gt; +        lastEvent = event;

You could get rid of lastEvent entirely and use event directly here.

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:66
&gt; +var movingdiv;

This does not need to be global, you are getting the element directly in the functions.

&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:159
&gt; +        if (eventSender.clearTouchPoints) {
&gt; +            firstTouchDragSequence();
&gt; +        } else {
&gt; +            exitIfNecessary();
&gt; +        }

No brackets here according to the coding convention? (no idea what our conventions are for JavaScript :))

&gt; WebCore/page/EventHandler.cpp:2989
&gt; +    m_gestureManager-&gt;processTouchEventForGesture(event, this, defaultPrevented);

I guess this should be something like:
if (!defaultPrevented)
    defaultPrevented = m_gestureManager-&gt;processTouchEventForGesture(event, this);

You pass defaultPrevented in the gesture manager but I did not see used anywhere. If the page is handling the touch event, I would not add a WebKit gesture on top (e.g.: you don&apos;t want to scroll the frame when panning the touch version of Google maps).

You also need to change the value of defaultPrevented if processTouchEventForGesture does something with the event. If not, platforms usually pass the event to the parent widget.

&gt; WebCore/page/GestureManager.cpp:62
&gt; +    , m_eventHandler(0)

I think this should be passed as an argument of the constructor. There is a relation 1&lt;-&gt;1 between the EventHandler and the GestureManager. I don&apos;t see the point of passing it in GestureManager::processTouchEventForGesture().

&gt; WebCore/page/GestureManager.cpp:217
&gt; +// To create a richer gesture recognizer, it is sufficient to modify this
&gt; +// factory to add additional edges. (Though additional edges may require
&gt; +// additional state tracking.)
&gt; +GestureManager* createGestureManager()
&gt; +{
&gt; +    GestureManager* gm = new GestureManager();
&gt; +    gm-&gt;init();
&gt; +    return gm;
&gt; +}

I am not sure why you need this instead of calling init from the constructor.
If subclassing the GestureManager is the way to extend it, adding additional edges could be done in the constructor of the subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322752</commentid>
    <comment_count>17</comment_count>
      <attachid>76281</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-15 12:29:05 -0800</bug_when>
    <thetext>Comment on attachment 76281
fourth patch

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

I like Benjamin&apos;s review. His comments should be addressed.

&gt; WebCore/page/GestureManager.cpp:46
&gt; +// Edge functions.
&gt; +static bool click(GestureManager*, const PlatformTouchPoint&amp;);
&gt; +static bool clickOrScroll(GestureManager*, const PlatformTouchPoint&amp;);
&gt; +static bool inScroll(GestureManager*, const PlatformTouchPoint&amp;);
&gt; +static bool reset(GestureManager*, const PlatformTouchPoint&amp;);
&gt; +static bool touchDown(GestureManager*, const PlatformTouchPoint&amp;);
&gt; +

If you are passing the GM here anyways, why not putting these methods as class methods?

&gt; WebCore/platform/PlatformWheelEvent.h:114
&gt;  
&gt; +        PlatformWheelEvent(IntPoint position,
&gt; +                           IntPoint globalPosition,
&gt; +                           float deltaX,
&gt; +                           float deltaY,
&gt; +                           float wheelTicksX,
&gt; +                           float wheelTicksY,
&gt; +                           PlatformWheelEventGranularity granularity,
&gt; +                           bool isAccepted,
&gt; +                           bool shiftKey,
&gt; +                           bool ctrlKey,
&gt; +                           bool altKey,
&gt; +                           bool metaKey)
&gt; +            : m_position(position)
&gt; +            , m_globalPosition(globalPosition)
&gt; +            , m_deltaX(deltaX)
&gt; +            , m_deltaY(deltaY)
&gt; +            , m_wheelTicksX(wheelTicksX)
&gt; +            , m_wheelTicksY(wheelTicksY)
&gt; +            , m_granularity(granularity)
&gt; +            , m_isAccepted(isAccepted)
&gt; +            , m_shiftKey(shiftKey)
&gt; +            , m_ctrlKey(ctrlKey)
&gt; +            , m_altKey(altKey)
&gt; +            , m_metaKey(metaKey)
&gt; +        {
&gt; +        }

You should say in the changelog why you are adding this. (Or it could come on its own patch(?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323457</commentid>
    <comment_count>18</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-16 15:31:12 -0800</bug_when>
    <thetext>(In reply to comment #16)

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

&gt;&gt; LayoutTests/fast/events/touch/touch-gesture-click.html:21
&gt;&gt; +var EXPECTED_CLICK_EVENTS_TOTAL = 3;
&gt; 
&gt; I would rename this to expected _mouse_ events. Because only one click event is expected so the name can be confusing.

done, next patch.

&gt;&gt; LayoutTests/fast/events/touch/touch-gesture-click.html:25
&gt;&gt; +var haveTouchEvents = false;
&gt; 
&gt; This does not seem to be used anywhere.

removed, next patch.

&gt;&gt; LayoutTests/fast/events/touch/touch-gesture-click.html:30
&gt;&gt; +        lastEvent = event;
&gt; 
&gt; You could get rid of lastEvent entirely and use event directly here.

done, next patch.

&gt;&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:66
&gt;&gt; +var movingdiv;
&gt; 
&gt; This does not need to be global, you are getting the element directly in the functions.

It is not obvious to me how to do this. The shouldBe function eval&apos;s its args so a non-global movingdiv doesn&apos;t end up in scope. I could construct String(movingdiv.scrollTop) as an arg to shouldBe but then the output from a failed test is less helpful. Do you have any suggestions?

&gt;&gt; LayoutTests/fast/events/touch/touch-gesture-scroll.html:159
&gt;&gt; +        }
&gt; 
&gt; No brackets here according to the coding convention? (no idea what our conventions are for JavaScript :))

done, np

&gt;&gt; WebCore/page/EventHandler.cpp:2989
&gt;&gt; +    m_gestureManager-&gt;processTouchEventForGesture(event, this, defaultPrevented);
&gt; 
&gt; I guess this should be something like:
&gt; if (!defaultPrevented)
&gt;     defaultPrevented = m_gestureManager-&gt;processTouchEventForGesture(event, this);
&gt; 
&gt; You pass defaultPrevented in the gesture manager but I did not see used anywhere. If the page is handling the touch event, I would not add a WebKit gesture on top (e.g.: you don&apos;t want to scroll the frame when panning the touch version of Google maps).
&gt; 
&gt; You also need to change the value of defaultPrevented if processTouchEventForGesture does something with the event. If not, platforms usually pass the event to the parent widget.

I am not convinced that I should update defaultPrevented -- if embedder code relies on knowing that a touch has not been handled in page, then changing defaultPrevented to indicate if a synthetic event (like a click) was generated strikes me as wrong.

I pass defaultPrevented to the GM because I wanted the GM to be able to inspect all events -- for example if a future GM instance wanted to maintain a spline representation of an entire touch track, it should not be missing motion events that are being suppressed by the JS code.

The defaultPrevented value is used in processTouchEventForGesture -- it is one of the values used to dispatch gesture functions. The set of example gestures in this CL here require it to be false -- but additional gestures in the future will not.

&gt;&gt; WebCore/page/GestureManager.cpp:62
&gt;&gt; +    , m_eventHandler(0)
&gt; 
&gt; I think this should be passed as an argument of the constructor. There is a relation 1&lt;-&gt;1 between the EventHandler and the GestureManager. I don&apos;t see the point of passing it in GestureManager::processTouchEventForGesture().

done, np.

FWIW: I wrote it this way to make it easier to not have the 1-1 relation.

&gt;&gt; WebCore/page/GestureManager.cpp:217
&gt;&gt; +}
&gt; 
&gt; I am not sure why you need this instead of calling init from the constructor.
&gt; If subclassing the GestureManager is the way to extend it, adding additional edges could be done in the constructor of the subclass.

I think it is easier to re-use the GM as written if there is a constructor that produces an &quot;empty&quot; GM instance and then adds the gesture functions separately. That way, different gestures can be loaded into the GM without needing to modify the class or remove the existing gestures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323516</commentid>
    <comment_count>19</comment_count>
      <attachid>76281</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-16 16:49:34 -0800</bug_when>
    <thetext>Comment on attachment 76281
fourth patch

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

&gt;&gt; WebCore/page/GestureManager.cpp:46
&gt;&gt; +
&gt; 
&gt; If you are passing the GM here anyways, why not putting these methods as class methods?

I chose to do this so that gesture functions could be added to this GM implementation without needing to modify it. In particular, platform or embedder code can add additional gestures given this structure.

&gt;&gt; WebCore/platform/PlatformWheelEvent.h:114
&gt;&gt; +        }
&gt; 
&gt; You should say in the changelog why you are adding this. (Or it could come on its own patch(?)

added in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323532</commentid>
    <comment_count>20</comment_count>
      <attachid>76833</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-12-16 17:24:58 -0800</bug_when>
    <thetext>Created attachment 76833
fifth patch

Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329569</commentid>
    <comment_count>21</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-01-05 08:11:37 -0800</bug_when>
    <thetext>Reviewers,

With the end-of-year holiday time largely behind us, would it be possible to take another look at my revised patch &amp; comments? I&apos;m eager to complete an initial version of this functionality so would appreciate feedback that will help me get the patch into a committable state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333810</commentid>
    <comment_count>22</comment_count>
      <attachid>76833</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-13 11:10:34 -0800</bug_when>
    <thetext>Comment on attachment 76833
fifth patch

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

&gt; WebCore/page/GestureManager.cpp:179
&gt; +static bool click(GestureManager* gm, const PlatformTouchPoint&amp; p) 
&gt; +{

Could you tell me from where and when this method would be called, for example?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335833</commentid>
    <comment_count>23</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-01-18 08:07:17 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 76833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76833&amp;action=review
&gt; 
&gt; &gt; WebCore/page/GestureManager.cpp:179
&gt; &gt; +static bool click(GestureManager* gm, const PlatformTouchPoint&amp; p) 
&gt; &gt; +{
&gt; 
&gt; Could you tell me from where and when this method would be called, for example?

These gesture functions are called by processTouchEventForGesture. The gesture functions correspond to specific edges in a FSM stored in the m_edgeFunctions HashMap.  The FSM is built in GestureManager::init. Having the FSM be dynamic permit modifying it dynamically. In particular, I intend to add functionality in a future patch that will permit the embedder to modify the FSM at runtime. For example, I want it to be possible for the embedder to configure the FSM differently depending on the input devices on the user&apos;s computer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344797</commentid>
    <comment_count>24</comment_count>
      <attachid>76833</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-03 10:01:24 -0800</bug_when>
    <thetext>Comment on attachment 76833
fifth patch

I have a new patch in preparation that obsoletes this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348626</commentid>
    <comment_count>25</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-09 15:13:12 -0800</bug_when>
    <thetext>I have divided this patch up into smaller sections hence the dependency on 53510</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348637</commentid>
    <comment_count>26</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-09 15:20:37 -0800</bug_when>
    <thetext>Discussion with tonikitoo suggested that this bug was mis-named so,  now that in patch 6 where I have altered the code (per review advice from Benjamin Poulain below) to permit each platform to provide its own gesture recognizer, I have given this patch a more descriptive name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348659</commentid>
    <comment_count>27</comment_count>
      <attachid>81887</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-09 15:43:16 -0800</bug_when>
    <thetext>Created attachment 81887
patch6

Takes a platform specific approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348668</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-09 15:47:48 -0800</bug_when>
    <thetext>Attachment 81887 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/PlatformGestureRecognizer.h:54:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348709</commentid>
    <comment_count>29</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-09 16:59:22 -0800</bug_when>
    <thetext>Attachment 81887 did not build on qt:
Build output: http://queues.webkit.org/results/7886068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348794</commentid>
    <comment_count>30</comment_count>
      <attachid>81887</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-09 20:52:31 -0800</bug_when>
    <thetext>Comment on attachment 81887
patch6

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        specific gesture recognizer. A single-owner gesture reccognizer can be

typo: cc

&gt; Source/WebCore/page/EventHandler.h:231
&gt; +     // Use thse to move the GestureRecognizer instance between EventHandlers.

typo THSE

&gt; Source/WebCore/platform/PlatformGestureRecognizer.h:46
&gt; +    PlatformGestureRecognizer();

generally when you have ::create methods (i.e. factory), the ctor is private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349471</commentid>
    <comment_count>31</comment_count>
      <attachid>82066</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-10 15:57:35 -0800</bug_when>
    <thetext>Created attachment 82066
patch7

Addressed comments reviewer comments. Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350922</commentid>
    <comment_count>32</comment_count>
      <attachid>82370</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-14 15:15:16 -0800</bug_when>
    <thetext>Created attachment 82370
new patch

Made the constructor protected so that it could be invoked from the subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352112</commentid>
    <comment_count>33</comment_count>
      <attachid>82649</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-16 08:58:33 -0800</bug_when>
    <thetext>Created attachment 82649
patch

fixed bad indenting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352118</commentid>
    <comment_count>34</comment_count>
      <attachid>82649</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-02-16 09:03:18 -0800</bug_when>
    <thetext>Comment on attachment 82649
patch

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

&gt; Source/WebCore/page/EventHandler.cpp:3063
&gt; +PassOwnPtr&lt;PlatformGestureRecognizer&gt; EventHandler::gestureRecognizer()
&gt; +{
&gt; +    return m_gestureRecognizer.release();
&gt; +}
&gt; +
&gt; +void EventHandler::setGestureRecognizer(PassOwnPtr&lt;PlatformGestureRecognizer&gt; g)
&gt; +{
&gt; +    m_gestureRecognizer = g;
&gt; +}

Why do we need getters and setters AND createPlatformGestureRecognizer(). Do you have use case to change the recognizer at runtime?

&gt; Source/WebCore/platform/PlatformGestureRecognizer.cpp:40
&gt; +// here that meets its needs. EventSender will ignore null GestureRecognizers.

EventSender?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352253</commentid>
    <comment_count>35</comment_count>
      <attachid>82649</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-16 12:18:44 -0800</bug_when>
    <thetext>Comment on attachment 82649
patch

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:3063
&gt;&gt; +}
&gt; 
&gt; Why do we need getters and setters AND createPlatformGestureRecognizer(). Do you have use case to change the recognizer at runtime?

Yes. An embedder might want to temporarily take the gesture recognizer away from the EventHandler for handling touch events on a different thread while performing a latency-critical gesture like a page zoom. (For example, such a feature is being considered for platform/chromium.)

&gt;&gt; Source/WebCore/platform/PlatformGestureRecognizer.cpp:40

&gt; 
&gt; EventSender?

EventHandler. Fixed in the next patch, ~10m</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352255</commentid>
    <comment_count>36</comment_count>
      <attachid>82674</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-16 12:20:54 -0800</bug_when>
    <thetext>Created attachment 82674
updated patch

Fixed spelling mistake in comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352268</commentid>
    <comment_count>37</comment_count>
      <attachid>82677</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-16 12:45:07 -0800</bug_when>
    <thetext>Created attachment 82677
next patch

Removed setters/getters that might be useful in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352277</commentid>
    <comment_count>38</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-02-16 12:55:33 -0800</bug_when>
    <thetext>Look good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353217</commentid>
    <comment_count>39</comment_count>
      <attachid>82871</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-17 15:46:56 -0800</bug_when>
    <thetext>Created attachment 82871
patch

Corrected the Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353224</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-17 15:51:51 -0800</bug_when>
    <thetext>Attachment 82871 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/PlatformGestureRecognizer.h:56:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353233</commentid>
    <comment_count>41</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-17 16:12:09 -0800</bug_when>
    <thetext>Attachment 82871 did not build on qt:
Build output: http://queues.webkit.org/results/7920899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353655</commentid>
    <comment_count>42</comment_count>
      <attachid>82977</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-02-18 10:30:55 -0800</bug_when>
    <thetext>Created attachment 82977
patch

Fixes the build on qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353659</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-18 10:33:07 -0800</bug_when>
    <thetext>Attachment 82977 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/PlatformGestureRecognizer.h:56:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356653</commentid>
    <comment_count>44</comment_count>
      <attachid>82977</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-23 20:47:35 -0800</bug_when>
    <thetext>Comment on attachment 82977
patch

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

Looks good to me too.

&gt; Source/WebCore/ChangeLog:5
&gt; +        Add Support to WebCore to optionally call a platform-specific gesture recognizer

Support -&gt; support

&gt;&gt; Source/WebCore/platform/PlatformGestureRecognizer.h:56
&gt;&gt; +    virtual bool processTouchEventForGesture(const PlatformTouchEvent&amp; event, EventHandler* source, bool handled) = 0;
&gt; 
&gt; The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Please remove &quot;event&quot; as per style bot advice.

&gt; Source/WebCore/platform/PlatformGestureRecognizer.h:60
&gt; +PlatformGestureRecognizer* createPlatformGestureRecognizer();

I prefer a static class method. static PlatformGestureRecognizer* PlatformGestureRecognizer::create();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365510</commentid>
    <comment_count>45</comment_count>
      <attachid>82977</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-10 13:58:11 -0800</bug_when>
    <thetext>Comment on attachment 82977
patch

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

&gt;&gt; Source/WebCore/ChangeLog:5
&gt;&gt; +        Add Support to WebCore to optionally call a platform-specific gesture recognizer
&gt; 
&gt; Support -&gt; support

Done

&gt;&gt;&gt; Source/WebCore/platform/PlatformGestureRecognizer.h:56
&gt;&gt;&gt; +    virtual bool processTouchEventForGesture(const PlatformTouchEvent&amp; event, EventHandler* source, bool handled) = 0;
&gt;&gt; 
&gt;&gt; The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; Please remove &quot;event&quot; as per style bot advice.

Done.

&gt;&gt; Source/WebCore/platform/PlatformGestureRecognizer.h:60
&gt;&gt; +PlatformGestureRecognizer* createPlatformGestureRecognizer();
&gt; 
&gt; I prefer a static class method. static PlatformGestureRecognizer* PlatformGestureRecognizer::create();

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365513</commentid>
    <comment_count>46</comment_count>
      <attachid>85387</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-10 13:59:39 -0800</bug_when>
    <thetext>Created attachment 85387
updated patch

Addressed all reviewer comments. Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367144</commentid>
    <comment_count>47</comment_count>
      <attachid>85387</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-14 12:49:29 -0700</bug_when>
    <thetext>Comment on attachment 85387
updated patch

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

My comments:
-I would have kept the ENABLE_GESTURE_MANAGER. This is experimental feature at the moment since you don&apos;t have the full implementation ready. I would guard whatever goes in WebCore for now. If this WebCore gesture recognition end up being the default for touch event handling, the ENABLE_GESTURE_MANAGER can be removed. If adding the gesture support in WebCore end up being impractical in the end, then we can remove the code guarded by ENABLE_GESTURE_MANAGER. So for now I like the #define (maybe that has already been discussed and I missed the thread?)
-Other ports than chromium and Qt are defining ENABLE_TOUCH_EVENTS (at least EFL, and probably WinCE). Those won&apos;t build now since EventHandler reference PlatformGestureRecognizer.

&gt; Source/WebCore/page/EventHandler.h:38
&gt; +#include &lt;wtf/PassOwnPtr.h&gt;

Probably not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370804</commentid>
    <comment_count>48</comment_count>
      <attachid>86346</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-21 11:57:45 -0700</bug_when>
    <thetext>Created attachment 86346
patch next

Wrapped the GestureRecognizer functionality with an #ifdef per Ben&apos;s suggestion and removed a superfluous include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370810</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-21 12:00:57 -0700</bug_when>
    <thetext>Attachment 86346 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/platform/PlatformGestureRecognizer.h:56:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370829</commentid>
    <comment_count>50</comment_count>
      <attachid>86346</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-21 12:35:26 -0700</bug_when>
    <thetext>Comment on attachment 86346
patch next

oops merge error. new patch in a jiffy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370848</commentid>
    <comment_count>51</comment_count>
      <attachid>86357</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-21 13:00:36 -0700</bug_when>
    <thetext>Created attachment 86357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370857</commentid>
    <comment_count>52</comment_count>
      <attachid>86357</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-03-21 13:12:42 -0700</bug_when>
    <thetext>Comment on attachment 86357
Patch

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

&gt; Source/WebCore/platform/PlatformGestureRecognizer.cpp:41
&gt; +PlatformGestureRecognizer* PlatformGestureRecognizer::createPlatformGestureRecognizer()

just ::create() should be ok too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370862</commentid>
    <comment_count>53</comment_count>
      <attachid>86357</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-21 13:23:26 -0700</bug_when>
    <thetext>Comment on attachment 86357
Patch

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

I was going to r+, cq-, but I see Antonio already did :)

&gt; Source/JavaScriptCore/wtf/Platform.h:964
&gt; +#if !defined(ENABLE_GESTURE_RECOGNZER)

Missing a I here: recognizer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370876</commentid>
    <comment_count>54</comment_count>
      <attachid>86360</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-21 13:52:39 -0700</bug_when>
    <thetext>Created attachment 86360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370880</commentid>
    <comment_count>55</comment_count>
      <attachid>86362</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-03-21 14:08:33 -0700</bug_when>
    <thetext>Created attachment 86362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370883</commentid>
    <comment_count>56</comment_count>
      <attachid>86362</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-03-21 14:12:41 -0700</bug_when>
    <thetext>Comment on attachment 86362
Patch

Looking forward to see it being used! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370988</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 16:16:21 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 86362:

http/tests/navigation/changing-frame-hierarchy-in-onload.html bug 56779 (authors: andersca@apple.com and kinuko@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370990</commentid>
    <comment_count>58</comment_count>
      <attachid>86362</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 16:19:32 -0700</bug_when>
    <thetext>Comment on attachment 86362
Patch

Clearing flags on attachment: 86362

Committed r81618: &lt;http://trac.webkit.org/changeset/81618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370991</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 16:19:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371079</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 17:52:25 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 86362:

svg/dom/SVGScriptElement/script-set-href.svg bug 56790 (authors: mitz@webkit.org and zimmermann@kde.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73542</attachid>
            <date>2010-11-10 14:38:41 -0800</date>
            <delta_ts>2010-12-02 12:21:24 -0800</delta_ts>
            <desc>patch 1 (of probably many) for a basic Chromium GestureManager</desc>
            <filename>wk49345_1.patch</filename>
            <type>text/plain</type>
            <size>42990</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZWFhZGY0Li5hMzRjYzU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTEt
MTAgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIGEgYmFz
aWMgR2VzdHVyZU1hbmFnZXIgdG8gQ2hyb21pdW06IGxheW91dCB0ZXN0cyBmb3IgY2xpY2sKKyAg
ICAgICAgYW5kIHNjcm9sbCBnZXN0dXJlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90
b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorCiAyMDEwLTExLTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGEgbmV3IHRlc3QuIFRoZSBwYXRjaCB3
YXMgcG9zdGVkIGJlZm9yZSBmb250CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOGRlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBnZXN0
dXJlIGdlbmVyYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitHZXN0dXJl
IG1hbmFnZXIgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NzkzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKQEAg
LTAsMCArMSw5MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ZGl2LmlkID0gInRvdWNodGFyZ2V0IjsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYu
c3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1
ZSI7CisKK3ZhciBsYXN0RXZlbnQgPSBudWxsOwordmFyIGNsaWNrRXZlbnRzUmVjZWl2ZWQgPSAw
OwordmFyIEVYUEVDVEVEX0NMSUNLX0VWRU5UU19UT1RBTCA9IDM7Cit2YXIgdG91Y2hFdmVudHNS
ZWNlaXZlZCA9IDA7Cit2YXIgZXZlbnRUeXBlcyA9IFsgJ21vdXNlZG93bicsICdtb3VzZXVwJywg
J2NsaWNrJyBdOworCit2YXIgaGF2ZVRvdWNoRXZlbnRzID0gZmFsc2U7CisKK2Z1bmN0aW9uIGdl
c3R1cmVFdmVudENhbGxiYWNrKGV2ZW50KQoreworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgbGFzdEV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnbGFzdEV2ZW50LnR5cGUnLCBldmVudFR5cGVzW3RvdWNoRXZlbnRzUmVjZWl2ZWRdKTsK
KyAgICAgICAgc2hvdWxkQmUoJ2xhc3RFdmVudC5jbGllbnRYJywgJzEwJyk7CisgICAgICAgIHNo
b3VsZEJlKCdsYXN0RXZlbnQuY2xpZW50WScsICcxMicpOworICAgICAgICB0b3VjaEV2ZW50c1Jl
Y2VpdmVkKys7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoZXZlbnQudHlwZSk7CisgICAg
ICAgIGRlYnVnKGV2ZW50LmNsaWVudFgpOworICAgICAgICBkZWJ1ZyhldmVudC5jbGllbnRZKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHNpbmdsZVRvdWNoU2VxdWVuY2UoKQoreworICAgIGV2ZW50
U2VuZGVyLmFkZFRvdWNoUG9pbnQoMTAsIDEyKTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0
KCk7CisKKyAgICAvLyBJbnNlcnQgc29tZSBkZWxheS4gTkI6IHRoaXMgdmFsdWUgZGVwZW5kcyBv
biBtaW5DbGlja0Rvd25UaW1lLAorICAgIC8vIG1heENsaWNrRG93blRpbWUgZnJvbSBHZXN0dXJl
TWFuYWdlci5jcHAKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgyMCk7CisKKyAgICBldmVu
dFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAgICBldmVudFNlbmRlci50b3VjaEVuZCgp
OworfQorCisvLyBFbmQgYnkgdGltZXIgdG8gcnVuIGNvcnJlY3RseSBvbiBub24tQ2hyb21pdW0g
cGxhdGZvcm1zLgorZnVuY3Rpb24gZW5kVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB0b3VjaEV2ZW50c1JlY2VpdmVkIDwKKyAgICAgICAgICAgIEVYUEVD
VEVEX0NMSUNLX0VWRU5UU19UT1RBTCkgeworICAgICAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2Vy
IG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtLicpOworICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5
UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitk
aXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgZ2VzdHVyZUV2ZW50Q2FsbGJhY2ssIGZh
bHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGdlc3R1cmVFdmVudENhbGxiYWNr
LCBmYWxzZSk7CitkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGdlc3R1cmVFdmVudENh
bGxiYWNrLCBmYWxzZSk7Citkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50
LmJvZHkuZmlyc3RDaGlsZCk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYmFzaWMgc2luZ2xlIHRv
dWNoIGdlc3R1cmUgZ2VuZXJhdGlvbi4iKTsKKyAgICBsYXN0RXZlbnQgPSBudWxsOworICAgIGlm
ICghIWV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIu
Y2xlYXJUb3VjaFBvaW50cygpOworICAgICAgICBzaW5nbGVUb3VjaFNlcXVlbmNlKCk7CisgICAg
ICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgMTAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlbmRU
ZXN0KCk7CisgICAgfQorfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1
bXBSZW5kZXJUcmVlLiAgVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIpCit9CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYmI2NmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBzY3JvbGwgZ2VzdHVyZSBnZW5l
cmF0aW9uIGZyb20gdG91Y2ggZXZlbnRzLiBTcXVhcmUgaXMgKG1vc3RseSkgZ3JlZW4gb24gcGFz
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworR2VzdHVyZSBtYW5hZ2VyIG5vdCBp
bXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGJyb2tlbgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MmNlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC5odG1sCkBAIC0w
LDAgKzEsMTY5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorI3RvdWNodGFyZ2V0IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6
IDEwMHB4OworICBwb3NpdGlvbjogcmVsYXRpdmU7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQor
CisjbW92aW5nYm94IHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgcG9zaXRp
b246IGFic29sdXRlOwkJCisgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAgb3ZlcmZsb3cteTog
c2Nyb2xsOworICBvdmVyZmxvdy14OiBzY3JvbGw7CisgIGRpc3BsYXk6IGJsb2NrOworfQorCisj
Z3JlZW5ib3ggeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91
bmQ6IGdyZWVuOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCisjcmVkYm94
IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiByZWQ7
CisgIHBhZGRpbmc6IDBweDsKKyAgbWFyZ2luOiAwcHg7Cit9CisKK3RkIHsKKyAgcGFkZGluZzog
MHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46MCIgb25sb2Fk
PSJzZXRUaW1lb3V0KCdydW5UZXN0KCk7JywgMTAwKSI+Cis8ZGl2IGlkPSJ0b3VjaHRhcmdldCI+
CisgIDxkaXYgaWQ9Im1vdmluZ2JveCI+CisgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNp
bmc9IjBweCI+CisgICAgICA8dHI+CisgICAgICAgIDx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2
PjwvdGQ+CisgICAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICAg
IDwvdHI+CisgICAgICA8dHI+CisgICAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+
PC90ZD4KKyAgICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICAgICAg
PC90cj4KKyAgICA8L3RhYmxlPgorICA8L2Rpdj4KKzwvZGl2PgorCis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorCit2YXIgbW92aW5nZGl2OwordmFyIEVYUEVDVEVEX1NDUk9MTFNfVE9UQUwg
PSAyOwordmFyIHNjcm9sbHNPY2N1cnJlZCA9IDA7Cit2YXIgc2Nyb2xsQW1vdW50WCA9IFsnOTAn
LCAnOTAnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzk1J107CisKK2Z1bmN0aW9uIGNo
ZWNrU2Nyb2xsT2Zmc2V0KCkKK3sKKyAgICBtb3ZpbmdkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbW92aW5nYm94Jyk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICBzaG91bGRCZSgnbW92aW5nZGl2LnNjcm9sbFRvcCcsIHNjcm9sbEFtb3VudFlbc2Nyb2xsc09j
Y3VycmVkXSk7CisgICAgICAgIHNob3VsZEJlKCdtb3ZpbmdkaXYuc2Nyb2xsTGVmdCcsIHNjcm9s
bEFtb3VudFhbc2Nyb2xsc09jY3VycmVkXSk7CisgICAgICAgIHNjcm9sbHNPY2N1cnJlZCsrOwor
ICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgc2Nyb2xsc09j
Y3VycmVkID09IEVYUEVDVEVEX1NDUk9MTFNfVE9UQUwpIHsKKyAgICAgICAgLy8gSWYgd2UndmUg
Z290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KKyAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0gZWxzZSB7CisgICAgICBzZWNvbmRUb3VjaERy
YWdTZXF1ZW5jZSgpOyAgICAKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbmdlclVwKGV2ZW50KQor
eworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgZGVidWcoJ21v
dmVkOiAnICsgZXZlbnQuY3VycmVudFRhcmdldC5zY3JvbGxUb3AgKyAnLCAnICsgZXZlbnQuY3Vy
cmVudFRhcmdldC5zY3JvbGxMZWZ0KTsKKyAgICByZXR1cm4gdHJ1ZTsgIC8vIFdhbnQgdGhlIGRl
ZmF1bHQgYmVoYXZpb3VyLgorfQorCitmdW5jdGlvbiBmaXJzdFRvdWNoRHJhZ1NlcXVlbmNlKCkK
K3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91
Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDk1LCAxMik7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgLy8gU2Nyb2xsIHRoZSBkaXYgdG8gdGhl
IGxlZnQuCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCA1LCAxMik7ICAgIAor
ICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworICAgIAorICAgIGV2ZW50U2VuZGVyLnJlbGVh
c2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKKyAgICAvLyBX
YWl0IGZvciBsYXlvdXQuCisgICAgc2V0VGltZW91dChjaGVja1Njcm9sbE9mZnNldCwgNTApOwor
fQorCitmdW5jdGlvbiBzZWNvbmRUb3VjaERyYWdTZXF1ZW5jZSgpCit7CisgICAgZGVidWcoInNl
Y29uZCBnZXN0dXJlIik7CisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAg
IGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoMTIsIDk3KTsKKyAgICBldmVudFNlbmRlci50b3Vj
aFN0YXJ0KCk7CisgICAgCisgICAgLy8gU2Nyb2xsIHRoZSByZWN0YW5nbGUgZG93bi4KKyAgICBl
dmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIDEyLCAyKTsgICAgCisgICAgZXZlbnRTZW5k
ZXIudG91Y2hNb3ZlKCk7CisKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsK
KyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworICAgIAorICAgIC8vIFdhaXQgZm9yIGxheW91
dC4KKyAgICBzZXRUaW1lb3V0KGNoZWNrU2Nyb2xsT2Zmc2V0LCA1MCk7Cit9CisKK2Z1bmN0aW9u
IGV4aXRJZk5lY2Vzc2FyeSgpCit7CisgICAgZGVidWcoJ0dlc3R1cmUgbWFuYWdlciBub3QgaW1w
bGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBicm9rZW4nKTsKKyAgICBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIG1vdmluZ2RpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdtb3Zpbmdib3gnKTsKKyAgICAKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHNjcm9sbCBnZXN0dXJlIGdlbmVyYXRp
b24gZnJvbSB0b3VjaCBldmVudHMuICcgKworICAgICAgICAgICAgJ1NxdWFyZSBpcyAobW9zdGx5
KSBncmVlbiBvbiBwYXNzJyk7CisKKyAgICAgICAgaWYgKGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQ
b2ludHMpIHsKKyAgICAgICAgICAgIGZpcnN0VG91Y2hEcmFnU2VxdWVuY2UoKTsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZXhpdElmTmVjZXNzYXJ5LCAyMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZXhpdElmTmVjZXNzYXJ5KCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2gg
c2Nyb2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgICAgIG1vdmluZ2Rpdi5hZGRFdmVu
dExpc3RlbmVyKCd0b3VjaGVuZCcsIGZpbmdlclVwLCBmYWxzZSk7CisgICAgfQorfQorPC9zY3Jp
cHQ+CisKKworCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmI0NjJiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBn
ZXN0dXJlIGdlbmVyYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGxhc3RFdmVudC50eXBlIGlzICJtb3VzZWRvd24iCitQQVNTIGxhc3RFdmVudC5jbGllbnRYIGlz
IDEwCitQQVNTIGxhc3RFdmVudC5jbGllbnRZIGlzIDEyCitQQVNTIGxhc3RFdmVudC50eXBlIGlz
ICJtb3VzZXVwIgorUEFTUyBsYXN0RXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQu
Y2xpZW50WSBpcyAxMgorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAiY2xpY2siCitQQVNTIGxhc3RF
dmVudC5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC5jbGllbnRZIGlzIDEyCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTI2Nzk5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgc2Ny
b2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2ZW50cy4gU3F1YXJlIGlzIChtb3N0
bHkpIGdyZWVuIG9uIHBhc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2ZpcnN0
IGdlc3R1cmUKK1BBU1MgbW92aW5nZGl2LnNjcm9sbFRvcCBpcyAwCitQQVNTIG1vdmluZ2Rpdi5z
Y3JvbGxMZWZ0IGlzIDkwCitzZWNvbmQgZ2VzdHVyZQorUEFTUyBtb3ZpbmdkaXYuc2Nyb2xsVG9w
IGlzIDk1CitQQVNTIG1vdmluZ2Rpdi5zY3JvbGxMZWZ0IGlzIDkwCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg3MDg4ODIu
LjU5NjllYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEwLTExLTEwICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCBhIGJhc2ljIEdlc3R1
cmVNYW5hZ2VyIHRvIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTM0NQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwdWJsaWMv
V2ViVG91Y2hQb2ludC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjpXZWJUb3Vj
aFBvaW50KToKKyAgICAgICAgKiBzcmMvR2VzdHVyZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6R2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6R2VzdHVyZU1hbmFnZXI6On5HZXN0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6
Okdlc3R1cmVNYW5hZ2VyOjphZGRFZGdlRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpHZXN0
dXJlTWFuYWdlcjo6aXNJbkNsaWNrVGltZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1
cmVNYW5hZ2VyOjppc0luc2lkZU1hbmhhdHRhblNxdWFyZSk6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVNYW5hZ2VyOjpkaXNwYXRjaFN5bnRoZXRpY0NsaWNrKToKKyAgICAgICAgKFdlYktpdDo6
R2VzdHVyZU1hbmFnZXI6OmluaXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlTWFuYWdlcjo6
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZU1h
bmFnZXI6OnNjcm9sbFZpYVRvdWNoTW90aW9uKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZU1h
bmFnZXI6OnVwZGF0ZVZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVNYW5hZ2VyOjpo
YXNoKToKKyAgICAgICAgKFdlYktpdDo6dG91Y2hEb3duKToKKyAgICAgICAgKFdlYktpdDo6cmVz
ZXQpOgorICAgICAgICAoV2ViS2l0OjpjbGljayk6CisgICAgICAgIChXZWJLaXQ6OmNsaWNrT3JT
Y3JvbGwpOgorICAgICAgICAoV2ViS2l0OjppblNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OmNy
ZWF0ZUdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBzcmMvR2VzdHVyZU1hbmFnZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVNYW5hZ2VyOjpzZXRTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6Okdlc3R1cmVNYW5hZ2VyOjpzdGF0ZSk6CisgICAgICAgICogc3JjL1dlYklucHV0
RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaGVlbEV2ZW50
QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAqIHRlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpUZXN0R2VzdHVyZU1hbmFnZXI6OlRlc3RHZXN0dXJlTWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OlRlc3RHZXN0dXJlTWFuYWdlcjo6U2V0VXApOgorICAgICAgICAoV2ViS2l0
OjpUZXN0R2VzdHVyZU1hbmFnZXI6OlRlYXJEb3duKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9G
KToKKwogMjAxMC0xMS0xMCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0ZGNj
NjFhLi4wZWM2NzE4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzM0LDYgKzMzNCw4IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Zy
YW1lTmV0d29ya2luZ0NvbnRleHRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvR2VzdHVy
ZU1hbmFnZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0dlc3R1cmVNYW5hZ2VyLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL2d0ay9XZWJGb250SW5mby5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDAx
NmNmMWEuLmVlNTlhMTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQor
KysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAg
ICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRl
c3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKKyAg
ICAgICAgICAgICd0ZXN0cy9HZXN0dXJlTWFuYWdlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lE
QktleVBhdGhUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcs
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCmluZGV4IDI2ZTQxYTQuLmE3M2Nj
NWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCkBAIC0yOTAsMTYgKzI5
MCwyMiBAQCBwdWJsaWM6CiB9OwogCiAvLyBXZWJUb3VjaEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KKy8vIEZJWE1F
OiBNYWtlIHRoZSBudW1iZXIgb2YgIFdlYlRvdWNoUG9pbnRzIGFkanVzdGFibGUuCiBjbGFzcyBX
ZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBjb25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIGVudW0gU291cmNlIHsK
KyAgICAgIFNjcmVlbiA9IDAsCisgICAgICBQYWQgPSAxCisgICAgfTsKIAorICAgIHN0YXRpYyBj
b25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSAzOworICAgIFNvdXJjZSBzb3VyY2VpZDsg
ICAgCiAgICAgaW50IHRvdWNoUG9pbnRzTGVuZ3RoOwogICAgIFdlYlRvdWNoUG9pbnQgdG91Y2hQ
b2ludHNbdG91Y2hQb2ludHNMZW5ndGhDYXBdOwogCiAgICAgV2ViVG91Y2hFdmVudCh1bnNpZ25l
ZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViVG91Y2hFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRF
dmVudChzaXplUGFyYW0pCisgICAgICAgICwgc291cmNlaWQoU2NyZWVuKQogICAgICAgICAsIHRv
dWNoUG9pbnRzTGVuZ3RoKDApCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
b3VjaFBvaW50LmgKaW5kZXggZGRmYTI2Zi4uMDJiOTc1MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJUb3VjaFBvaW50LmgKQEAgLTM4LDggKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJUb3VjaFBvaW50IHsKIHB1YmxpYzoKKyAgICBlbnVtIFRvdWNoSWRlbnRpZmll
ciB7CisgICAgICBGaXJzdEZpbmdlciA9IDAsCisgICAgICBTZWNvbmRGaW5nZXIgPSAxLAorICAg
ICAgVGhpcmRGaW5nZXIgPSAyLAorICAgIH07CisKICAgICBXZWJUb3VjaFBvaW50KCkKLSAgICAg
ICAgOiBpZCgwKQorICAgICAgICA6IGlkKEZpcnN0RmluZ2VyKQogICAgICAgICAsIHN0YXRlKFN0
YXRlVW5kZWZpbmVkKSB7IH0KIAogICAgIGVudW0gU3RhdGUgewpAQCAtNTAsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFN0YXRlU3RhdGlvbmFyeSwKICAgICAgICAgU3RhdGVDYW5jZWxsZWQs
CiAgICAgfTsKLQorICAgIAogICAgIGludCBpZDsKICAgICBTdGF0ZSBzdGF0ZTsKICAgICBXZWJQ
b2ludCBzY3JlZW5Qb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvR2Vz
dHVyZU1hbmFnZXIuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HZXN0dXJlTWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiZjg2NwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VzdHVyZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEs
MjU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
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
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlc3R1cmVNYW5hZ2VyLmgiCisK
Ky8vICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgor
I2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiV2ViUG9pbnQu
aCIKKyNpbmNsdWRlICJXZWJUb3VjaFBvaW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEVkZ2UgZnVuY3Rpb25zLgorc3RhdGljIGJvb2wg
Y2xpY2soR2VzdHVyZU1hbmFnZXIqLCBjb25zdCBXZWJUb3VjaFBvaW50Jik7CitzdGF0aWMgYm9v
bCBjbGlja09yU2Nyb2xsKEdlc3R1cmVNYW5hZ2VyKiwgY29uc3QgV2ViVG91Y2hQb2ludCYpOwor
c3RhdGljIGJvb2wgaW5TY3JvbGwoR2VzdHVyZU1hbmFnZXIqLCBjb25zdCBXZWJUb3VjaFBvaW50
Jik7CitzdGF0aWMgYm9vbCByZXNldChHZXN0dXJlTWFuYWdlciosIGNvbnN0IFdlYlRvdWNoUG9p
bnQmKTsKK3N0YXRpYyBib29sIHRvdWNoRG93bihHZXN0dXJlTWFuYWdlciosIGNvbnN0IFdlYlRv
dWNoUG9pbnQmKTsKKworLy8gRklYTUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1t
YXRpY2FsbHkuCisvLyBNYXhpbXVtIGhvbGQgZG93biAocykgZm9yIGEgdG91Y2ggdG8gYmUgdHJl
YXRlZCBhcyBhIGNsaWNrLgorc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhDbGlja0Rvd25UaW1lID0g
Ljg7CisKKy8vIE1pbmltdW0gaG9sZCBkb3duIChzKSBmb3IgYSB0b3VjaCB0byBiZSB0cmVhdGVk
IGFzIGEgY2xpY2suCitzdGF0aWMgY29uc3QgZG91YmxlIG1pbkNsaWNrRG93blRpbWUgPSAuMDE7
CisKKy8vIE1heGltdW0gbWFuaGF0dGFuIGRpc3BsYWNlbWVudCBmb3IgdG91Y2ggbW90aW9uIHRv
CisvLyBzdGlsbCBiZSBjb25zaWRlcmVkIGFzIGEgY2xpY2suCitzdGF0aWMgY29uc3QgaW50IG1h
eE1hbmhhdHRhbkRpc3RhbmNlID0gMjA7CisKK0dlc3R1cmVNYW5hZ2VyOjpHZXN0dXJlTWFuYWdl
cigpCisgICAgOiBtX0ZpcnN0VG91Y2hUaW1lKDAuMCkKKyAgICAsIG1fU3RhdGUoR2VzdHVyZU1h
bmFnZXI6Ok5vR2VzdHVyZSkKKyAgICAsIG1fVG91Y2hEdXJhdGlvbigwLjApCisgICAgLCBtX1dl
YlZpZXcoMCkKK3sKK30KKworR2VzdHVyZU1hbmFnZXI6On5HZXN0dXJlTWFuYWdlcigpCit7Cit9
CisKK3ZvaWQgR2VzdHVyZU1hbmFnZXI6OmFkZEVkZ2VGdW5jdGlvbihTdGF0ZSBzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJUb3VjaEV2ZW50OjpTb3VyY2Ug
c291cmNlaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVG91Y2hQ
b2ludDo6VG91Y2hJZGVudGlmaWVyIGZpbmdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJUb3VjaFBvaW50OjpTdGF0ZSB0b3VjaFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24gZikKK3sKKyAgICBt
X0VkZ2VGdW5jdGlvbnMuYWRkKGhhc2goc3RhdGUsIHNvdXJjZWlkLCBmaW5nZXIsIHRvdWNoVHlw
ZSwgaGFuZGxlZCksIGYpOworfQorCitib29sIEdlc3R1cmVNYW5hZ2VyOjppc0luQ2xpY2tUaW1l
V2luZG93KCkKK3sKKyAgICByZXR1cm4gbV9Ub3VjaER1cmF0aW9uID49IG1pbkNsaWNrRG93blRp
bWUgJiYgbV9Ub3VjaER1cmF0aW9uIDwgbWF4Q2xpY2tEb3duVGltZTsKK30KKworYm9vbCBHZXN0
dXJlTWFuYWdlcjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgV2ViVG91Y2hQb2ludCYg
cCkKK3sKKyAgICBpbnQgbWFuaGF0dGFuRGlzdGFuY2UgPSBhYnMocC5wb3NpdGlvbi54IC0gbV9G
aXJzdFRvdWNoUG9zaXRpb24ueCkgKyBhYnMocC5wb3NpdGlvbi55IC0gbV9GaXJzdFRvdWNoUG9z
aXRpb24ueSk7CisgICAgcmV0dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4TWFuaGF0dGFuRGlz
dGFuY2U7Cit9CisKK3ZvaWQgR2VzdHVyZU1hbmFnZXI6OmRpc3BhdGNoU3ludGhldGljQ2xpY2so
Y29uc3QgV2ViVG91Y2hQb2ludCYgcCkKK3sKKyAgICBXZWJNb3VzZUV2ZW50IGZha2VNb3VzZURv
d24sIGZha2VNb3VzZVVwOworCisgICAgZmFrZU1vdXNlRG93bi50eXBlID0gV2ViSW5wdXRFdmVu
dDo6TW91c2VEb3duOworICAgIGZha2VNb3VzZURvd24udGltZVN0YW1wU2Vjb25kcyA9IG1fRmly
c3RUb3VjaFRpbWU7CisgICAgZmFrZU1vdXNlRG93bi5idXR0b24gPSBXZWJNb3VzZUV2ZW50OjpC
dXR0b25MZWZ0OworICAgIGZha2VNb3VzZURvd24uY2xpY2tDb3VudCA9IDE7CisgICAgZmFrZU1v
dXNlRG93bi54ID0gcC5wb3NpdGlvbi54OworICAgIGZha2VNb3VzZURvd24ueSA9IHAucG9zaXRp
b24ueTsKKyAgICBmYWtlTW91c2VEb3duLndpbmRvd1ggPSBwLnBvc2l0aW9uLng7CisgICAgZmFr
ZU1vdXNlRG93bi53aW5kb3dZID0gcC5wb3NpdGlvbi55OworICAgIGZha2VNb3VzZURvd24uZ2xv
YmFsWCA9IHAuc2NyZWVuUG9zaXRpb24ueDsKKyAgICBmYWtlTW91c2VEb3duLmdsb2JhbFkgPSBw
LnNjcmVlblBvc2l0aW9uLnk7CisKKyAgICBmYWtlTW91c2VVcC50eXBlID0gV2ViSW5wdXRFdmVu
dDo6TW91c2VVcDsKKyAgICBmYWtlTW91c2VVcC50aW1lU3RhbXBTZWNvbmRzID0gbV9GaXJzdFRv
dWNoVGltZTsKKyAgICBmYWtlTW91c2VVcC5idXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25M
ZWZ0OworICAgIGZha2VNb3VzZVVwLmNsaWNrQ291bnQgPSAxOworICAgIGZha2VNb3VzZVVwLngg
PSBwLnBvc2l0aW9uLng7CisgICAgZmFrZU1vdXNlVXAueSA9IHAucG9zaXRpb24ueTsKKyAgICBm
YWtlTW91c2VVcC53aW5kb3dYID0gcC5wb3NpdGlvbi54OworICAgIGZha2VNb3VzZVVwLndpbmRv
d1kgPSBwLnBvc2l0aW9uLnk7CisgICAgZmFrZU1vdXNlVXAuZ2xvYmFsWCA9IHAuc2NyZWVuUG9z
aXRpb24ueDsKKyAgICBmYWtlTW91c2VVcC5nbG9iYWxZID0gcC5zY3JlZW5Qb3NpdGlvbi55Owor
CisgICAgbV9XZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGZha2VNb3VzZURvd24pOworICAgIG1f
V2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChmYWtlTW91c2VVcCk7Cit9CisKK3ZvaWQgR2VzdHVy
ZU1hbmFnZXI6OmluaXQoKQoreworICAgIGNvbnN0IFdlYlRvdWNoRXZlbnQ6OlNvdXJjZSBTY3Jl
ZW4gPSBXZWJUb3VjaEV2ZW50OjpTY3JlZW47CisgICAgY29uc3QgV2ViVG91Y2hQb2ludDo6VG91
Y2hJZGVudGlmaWVyIEZpcnN0RmluZ2VyID0gV2ViVG91Y2hQb2ludDo6Rmlyc3RGaW5nZXI7Cisg
ICAgY29uc3QgV2ViVG91Y2hQb2ludDo6U3RhdGUgU3RhdGVSZWxlYXNlZCA9IFdlYlRvdWNoUG9p
bnQ6OlN0YXRlUmVsZWFzZWQ7CisgICAgY29uc3QgV2ViVG91Y2hQb2ludDo6U3RhdGUgU3RhdGVQ
cmVzc2VkID0gV2ViVG91Y2hQb2ludDo6U3RhdGVQcmVzc2VkOworICAgIGNvbnN0IFdlYlRvdWNo
UG9pbnQ6OlN0YXRlIFN0YXRlTW92ZWQgPSBXZWJUb3VjaFBvaW50OjpTdGF0ZU1vdmVkOworICAg
IGNvbnN0IFdlYlRvdWNoUG9pbnQ6OlN0YXRlIFN0YXRlU3RhdGlvbmFyeSA9IFdlYlRvdWNoUG9p
bnQ6OlN0YXRlU3RhdGlvbmFyeTsKKyAgICBjb25zdCBXZWJUb3VjaFBvaW50OjpTdGF0ZSBTdGF0
ZUNhbmNlbGxlZCA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlQ2FuY2VsbGVkOworCisgICAgYWRkRWRn
ZUZ1bmN0aW9uKE5vR2VzdHVyZSwgU2NyZWVuLCBGaXJzdEZpbmdlciwgU3RhdGVQcmVzc2VkLCBm
YWxzZSwgdG91Y2hEb3duKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0Ns
aWNrLCBTY3JlZW4sIEZpcnN0RmluZ2VyLCBTdGF0ZUNhbmNlbGxlZCwgZmFsc2UsIHJlc2V0KTsK
KyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBTY3JlZW4sIEZpcnN0
RmluZ2VyLCBTdGF0ZVJlbGVhc2VkLCBmYWxzZSwgY2xpY2spOworICAgIGFkZEVkZ2VGdW5jdGlv
bihQZW5kaW5nU3ludGhldGljQ2xpY2ssIFNjcmVlbiwgRmlyc3RGaW5nZXIsIFN0YXRlTW92ZWQs
IGZhbHNlLCBjbGlja09yU2Nyb2xsKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRo
ZXRpY0NsaWNrLCBTY3JlZW4sIEZpcnN0RmluZ2VyLCBTdGF0ZVN0YXRpb25hcnksIGZhbHNlLCBj
bGlja09yU2Nyb2xsKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oU2Nyb2xsLCBTY3JlZW4sIEZpcnN0
RmluZ2VyLCBTdGF0ZU1vdmVkLCBmYWxzZSwgaW5TY3JvbGwpOworICAgIGFkZEVkZ2VGdW5jdGlv
bihTY3JvbGwsIFNjcmVlbiwgRmlyc3RGaW5nZXIsIFN0YXRlUmVsZWFzZWQsIGZhbHNlLCByZXNl
dCk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFNjcm9sbCwgU2NyZWVuLCBGaXJzdEZpbmdlciwgU3Rh
dGVDYW5jZWxsZWQsIGZhbHNlLCByZXNldCk7Cit9CisKK2Jvb2wgR2VzdHVyZU1hbmFnZXI6OnBy
b2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCwgV2Vi
Vmlld0ltcGwqIHdlYlZpZXcsIGJvb2wgaGFuZGxlZCkKK3sKKyAgICBtX1dlYlZpZXcgPSB3ZWJW
aWV3OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hQb2ludHNMZW5ndGg7IGkr
KykgeworICAgICAgICBjb25zdCBXZWJUb3VjaFBvaW50JiBwID0gZXZlbnQudG91Y2hQb2ludHNb
aV07CisgICAgICAgIHVwZGF0ZVZhbHVlcyhldmVudC50aW1lU3RhbXBTZWNvbmRzLCBwKTsKKwor
ICAgICAgICBHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVmID0gbV9FZGdlRnVuY3Rpb25zLmdl
dChoYXNoKG1fU3RhdGUsIGV2ZW50LnNvdXJjZWlkLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViVG91Y2hQb2ludDo6VG91Y2hJZGVudGlmaWVyPihwLmlkKSwgcC5zdGF0ZSwgaGFuZGxlZCkp
OworICAgICAgICBpZiAoZWYpCisgICAgICAgICAgICBoYW5kbGVkID0gKCplZikodGhpcywgcCk7
CisgICAgICAgIC8vIFRoZSBncmFwaCBpcyBzcGFyc2U6IG5vdCBhbGwgZWRnZXMgaGF2ZSBmdW5j
dGlvbnMuICAgICAgICAKKyAgICB9CisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKK3ZvaWQgR2Vz
dHVyZU1hbmFnZXI6OnNjcm9sbFZpYVRvdWNoTW90aW9uKGNvbnN0IFdlYlRvdWNoUG9pbnQmIHRw
KQoreworICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudCgKKyAgICAg
ICAgbV9XZWJWaWV3LT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLAorICAgICAgICB0cC5w
b3NpdGlvbiwKKyAgICAgICAgdHAuc2NyZWVuUG9zaXRpb24sCisgICAgICAgIHRwLnBvc2l0aW9u
LnggLSBtX0ZpcnN0VG91Y2hQb3NpdGlvbi54LAorICAgICAgICB0cC5wb3NpdGlvbi55IC0gbV9G
aXJzdFRvdWNoUG9zaXRpb24ueSk7CisgICAgbV9XZWJWaWV3LT5tYWluRnJhbWVJbXBsKCktPmZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KAorICAgICAgICBwbGF0Zm9y
bUV2ZW50KTsKKyAgICBtX0ZpcnN0VG91Y2hQb3NpdGlvbiA9IHRwLnBvc2l0aW9uOworfQorCit2
b2lkIEdlc3R1cmVNYW5hZ2VyOjp1cGRhdGVWYWx1ZXMoY29uc3QgZG91YmxlIHRvdWNoVGltZSwg
Y29uc3QgV2ViVG91Y2hQb2ludCYgdHApCit7CisgICAgaWYgKG1fU3RhdGUgPT0gTm9HZXN0dXJl
KSB7CisgICAgICAgIG1fRmlyc3RUb3VjaFRpbWUgPSB0b3VjaFRpbWU7CisgICAgICAgIG1fVG91
Y2hEdXJhdGlvbiA9IDAuMDsKKyAgICAgICAgbV9GaXJzdFRvdWNoUG9zaXRpb24gPSB0cC5wb3Np
dGlvbjsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9Ub3VjaER1cmF0aW9uID0gdG91Y2hUaW1lIC0g
bV9GaXJzdFRvdWNoVGltZTsKK30KKworLy8gQnVpbGRzIGEgaGFzaC4gSGFzaGVzIGFyZSBhc3Nl
bWJsZWQgYnkgam9pbmluZyB0b2dldGhlciBtdWx0aXBsZSBiaXRzLgorLy8gMyBMU0IgYml0cyBm
b3IgdGhlIHx0b3VjaFR5cGV8LgorLy8gMSBiaXQgZm9yIHxoYW5kbGVkfAorLy8gOCBiaXRzIGZv
ciB8aWR8CisvLyA0IGJpdHMgZm9yIHxzb3VyY2VpZHwKKy8vIDE2IGJpdHMgZm9yIHRoZSB8Z2Vz
dHVyZVN0YXRlfC4KK2ludCBHZXN0dXJlTWFuYWdlcjo6aGFzaChTdGF0ZSBnZXN0dXJlU3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVG91Y2hFdmVudDo6U291cmNlIHNvdXJjZWlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRvdWNoUG9pbnQ6OlRvdWNoSWRlbnRpZmll
ciBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJUb3VjaFBvaW50OjpTdGF0ZSB0b3Vj
aFR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlZCkKK3sKKyAgICBy
ZXR1cm4gdG91Y2hUeXBlIHwgKGhhbmRsZWQgPyAxIDw8IDMgOiAwKSB8IChpZCA8PCA0ICkgfCAo
c291cmNlaWQgPDwgMTIpIHwgKGdlc3R1cmVTdGF0ZSA8PCAxNik7Cit9CisKKy8vCisvLyBFZGdl
IGZ1bmN0aW9ucworLy8KK3N0YXRpYyBib29sIHRvdWNoRG93bihHZXN0dXJlTWFuYWdlciogZ20s
IGNvbnN0IFdlYlRvdWNoUG9pbnQmIHApCit7CisgICAgZ20tPnNldFN0YXRlKEdlc3R1cmVNYW5h
Z2VyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCByZXNldChHZXN0dXJlTWFuYWdlciogZ20sIGNvbnN0IFdlYlRvdWNoUG9pbnQmIHApCit7Cisg
ICAgZ20tPnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworc3RhdGljIGJvb2wgY2xpY2soR2VzdHVyZU1hbmFnZXIqIGdtLCBjb25zdCBX
ZWJUb3VjaFBvaW50JiBwKSAKK3sKKyAgICBpZiAoZ20tPmlzSW5DbGlja1RpbWVXaW5kb3coKSAm
JiBnbS0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJkaXNwYXRjaGluZyBzeW50aGV0aWMgY2xpY2suLi5cbiIpOworICAgICAgICBnbS0+c2V0
U3RhdGUoR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVyZSk7CisgICAgICAgIGdtLT5kaXNwYXRjaFN5
bnRoZXRpY0NsaWNrKHApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc2V0KGdtLCBwKTsKK30KKworc3RhdGljIGJvb2wgY2xpY2tPclNjcm9sbChHZXN0dXJlTWFu
YWdlciogZ20sIGNvbnN0IFdlYlRvdWNoUG9pbnQmIHApCit7CisgICAgaWYgKGdtLT5pc0luQ2xp
Y2tUaW1lV2luZG93KCkgJiYgZ20tPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKSB7CisgICAg
ICAgIGdtLT5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAocC5zdGF0ZSA9PSBX
ZWJUb3VjaFBvaW50OjpTdGF0ZU1vdmVkICYmICFnbS0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUo
cCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJhbSBzd2l0Y2hpbmcgdG8gc2Nyb2xsaW5n
XG4iKTsKKyAgICAgICAgZ20tPnNjcm9sbFZpYVRvdWNoTW90aW9uKHApOworICAgICAgICBnbS0+
c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6OlNjcm9sbCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGluU2Nyb2xsKEdlc3R1
cmVNYW5hZ2VyKiBnbSwgY29uc3QgV2ViVG91Y2hQb2ludCYgcCkKK3sKKyAgICBnbS0+c2Nyb2xs
VmlhVG91Y2hNb3Rpb24ocCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRvIGNyZWF0ZSBh
IHJpY2hlciBnZXN0dXJlIHJlY29nbml6ZXIsIGl0IGlzIHN1ZmZpY2llbnQgdG8gbW9kaWZ5IHRo
aXMKKy8vIGZhY3RvcnkgdG8gYWRkIGFkZGl0aW9uYWwgZWRnZXMuCitHZXN0dXJlTWFuYWdlciog
Y3JlYXRlR2VzdHVyZU1hbmFnZXIoKQoreworICAgIEdlc3R1cmVNYW5hZ2VyKiBnbSA9IG5ldyBH
ZXN0dXJlTWFuYWdlcigpOworICAgIGdtLT5pbml0KCk7CisgICAgcmV0dXJuIGdtOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvR2Vz
dHVyZU1hbmFnZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvR2VzdHVyZU1hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmJkZThiCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9HZXN0dXJlTWFuYWdlci5oCkBAIC0wLDAgKzEsMTQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
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
I2lmbmRlZiBHZXN0dXJlTWFuYWdlcl9oCisjZGVmaW5lIEdlc3R1cmVNYW5hZ2VyX2gKKworI2lu
Y2x1ZGUgIkhhc2hNYXAuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAi
V2ViUG9pbnQuaCIKKyNpbmNsdWRlICJXZWJUb3VjaFBvaW50LmgiCisjaW5jbHVkZSAiV2ViVmll
d0ltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdlc3R1cmVNYW5hZ2VyOwor
CisvLyBBIEdlc3R1cmVNYW5hZ2VyIGRldGVjdHMgZ2VzdHVyZXMgb2NjdXJyaW5nIGluIHRoZSB0
b3VjaCBldmVudC4KKy8vIEluIHJlc3BvbnNlIHRvIGEgZ2l2ZW4gdG91Y2ggZXZlbnQsIHRoZSBH
ZXN0dXJlTWFuYWdlciwgdXBkYXRlcworLy8gaXRzIGludGVybmFsIHN0YXRlIGFuZCBvcHRpb25h
bGx5IGRpc3BhdGNoZXMgc3ludGhldGljIGV2ZW50cyB0byB0aGUKKy8vIGludm9raW5nIFdlYlZp
ZXdJbXBsLgorY2xhc3MgR2VzdHVyZU1hbmFnZXIgeworcHVibGljOgorIAorICAgIC8vIFRoZSBz
dGF0ZXMgb2YgdGhlIGdlc3R1cmUgbWFuYWdlciBzdGF0ZSBtYWNoaW5lLgorICAgIGVudW0gU3Rh
dGUgeworICAgICAgTm9HZXN0dXJlLAorICAgICAgUGVuZGluZ1N5bnRoZXRpY0NsaWNrLAorICAg
ICAgU2Nyb2xsCisgICAgfTsKKyAgICAKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNp
dGlvbkZ1bmN0aW9uKShHZXN0dXJlTWFuYWdlciosIGNvbnN0IFdlYlRvdWNoUG9pbnQmKTsKKyAg
ICAKKyAgICBHZXN0dXJlTWFuYWdlcigpOworICAgIHZpcnR1YWwgfkdlc3R1cmVNYW5hZ2VyKCk7
CisgIAorICAgIC8vIEFkZHMgYSBuZXcgZWRnZSBmdW5jdGlvbiB0byB0aGUgR2VzdHVyZU1hbmFn
ZXIuIEZpcmVzIHxmdW58IGlmIGN1cnJlbnQgc3RhdGUKKyAgICAvLyBpcyB8c3RhdGV8LCBuZXcg
fHRvdWNofCBhcnJpdmVzIGFuZCBoYW5kbGVkIGlzIHNldC4KKyAgICB2b2lkIGFkZEVkZ2VGdW5j
dGlvbihTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJUb3VjaEV2ZW50OjpTb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVG91Y2hQb2ludDo6VG91Y2hJZGVudGlm
aWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRvdWNoUG9pbnQ6OlN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgR2Vz
dHVyZVRyYW5zaXRpb25GdW5jdGlvbik7CisgIAorICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBk
aXNwYXRjaCBhIG1vdXNlRG93bi9tb3VzZVVwL0NsaWNrIHNlcXVlbmNlLgorICAgIHZvaWQgZGlz
cGF0Y2hTeW50aGV0aWNDbGljayhjb25zdCBXZWJUb3VjaFBvaW50JiBwKTsKKyAgICAKKyAgICAv
LyBDcmVhdGVzIHRoZSBnZXN0dXJhbCBzdGF0ZSBtYWNoaW5lLgorICAgIHZpcnR1YWwgdm9pZCBp
bml0KCk7CisgIAorICAgIC8vIFRydWUgaWYgdGhlIHRpbWUgc2luY2UgdG91Y2hEb3duIGlzIGxl
c3MgdGhhbiB0aGUgbWluaW11bSBmb3IKKyAgICAvLyBhIGNsaWNrLgorICAgIGJvb2wgaXNJbkNs
aWNrVGltZVdpbmRvdygpOworICAgIAorICAgIC8vIFRydWUgZm9yIGEgcG9pbnQgcCBzdGlsbCBp
bnNpZGUgdGhlIHRocmVzaG9sZGVkIHNxdWFyZS4KKyAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFu
U3F1YXJlKGNvbnN0IFdlYlRvdWNoUG9pbnQmIHApOworICAKKyAgICAvLyBJbnZva2VkIGZvciBl
YWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQgY29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0
dXJlLgorICAgIC8vIFRha2VzIHRoZSB8ZXZlbnR8IGFuZCB0aGUgfHNvdXJjZXwgdGhhdCBvcmln
aW5hdGVkIGl0IGFuZCB3aGljaCB3aWxsIGFsc28KKyAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFu
eSBnZW5lcmF0ZWQgc3ludGhldGljIGV2ZW50LiBGaW5hbGx5LCB8aGFuZGxlZHwKKyAgICAvLyBz
cGVjaWZpZXMgaWYgdGhlIHxldmVudHwgd2FzIGFjdHVhbGx5IGhhbmRsZWQgZXhwbGljaXRseSBi
eSBhIFdlYldpZGdldC4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVk
IGluIGZpcmluZyBhIHN5bnRoZXRpYyBldmVudC4KKyAgICBib29sIHByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZShjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCwgV2ViVmlld0ltcGwqIHNvdXJj
ZSwgYm9vbCBoYW5kbGVkKTsKKyAgCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHNjcm9sbCB0
aGUgc2NyZWVuLgorICAgIHZvaWQgc2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgV2ViVG91Y2hQ
b2ludCYgcCk7CisgICAgCisgICAgaW5saW5lIHZvaWQgc2V0U3RhdGUoU3RhdGUgcykKKyAgICB7
CisgICAgICBtX1N0YXRlID0gczsKKyAgICB9CisgIAorICAgIGlubGluZSBTdGF0ZSBzdGF0ZSgp
CisgICAgeworICAgICAgcmV0dXJuIG1fU3RhdGU7CisgICAgfQorCisjaWYgZGVmaW5lZChVTklU
X1RFU1QpCitwdWJsaWM6IAorI2Vsc2UKK3Byb3RlY3RlZDoKKyNlbmRpZiAKKworICAgIC8vIFVw
ZGF0ZSBjb21wdXRlZCBnZXN0dXJhbCBwYXJhbWV0ZXJzIGJhc2VkIG9uIHRoZSBnaXZlbiBldmVu
dC4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmFsdWVzKGRvdWJsZSwgY29uc3QgV2ViVG91Y2hQ
b2ludCAmKTsKKworI2lmIGRlZmluZWQoVU5JVF9URVNUKQorcHVibGljOiAKKyNlbHNlCitwcml2
YXRlOgorI2VuZGlmIAorCisgICAgLy8gTWFrZXMgYW4gZWRnZSBpZGVudGlmaWVyIGludGVnZXIu
CisgICAgaW50IGhhc2goU3RhdGUsIFdlYlRvdWNoRXZlbnQ6OlNvdXJjZSwgV2ViVG91Y2hQb2lu
dDo6VG91Y2hJZGVudGlmaWVyLCBXZWJUb3VjaFBvaW50OjpTdGF0ZSwgYm9vbCk7CisgIAorICAg
IC8vIE1hcCBvZiBlZGdlIGZ1bmN0aW9ucworICAgIFdURjo6SGFzaE1hcDxpbnQsIEdlc3R1cmVU
cmFuc2l0aW9uRnVuY3Rpb24+IG1fRWRnZUZ1bmN0aW9uczsKKyAgICAKKyAgICAvLyBMb2NhdGlv
biBvZiBmaXJzdCB0b3VjaC4KKyAgICBXZWJQb2ludCBtX0ZpcnN0VG91Y2hQb3NpdGlvbjsKKyAg
CisgICAgLy8gVGltZSB3aGVuIHRoZSB0b3VjaCB3ZW50IGRvd24uCisgICAgZG91YmxlIG1fRmly
c3RUb3VjaFRpbWU7CisgICAgCisgICAgLy8gR2VzdHVyZU1hbmFnZXIgc3RhdGUuCisgICAgU3Rh
dGUgbV9TdGF0ZTsKKyAgCisgICAgLy8gVGltZSB0aGF0IHRoZSB0b3VjaCBoYXMgYmVlbiBkb3du
LgorICAgIGRvdWJsZSBtX1RvdWNoRHVyYXRpb247CisgIAorICAgIC8vIFRoZSBXZWJWaWV3SW1w
bCB0aGF0IGludm9rZWQgdGhlIEdlc3R1cmVNYW5hZ2VyLgorICAgIFdlYlZpZXdJbXBsKiBtX1dl
YlZpZXc7ICAKK307CisKKy8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCitH
ZXN0dXJlTWFuYWdlciAqY3JlYXRlR2VzdHVyZU1hbmFnZXIoKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBHZXN0dXJlTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCmluZGV4IDI0ZWIzNzIuLjA2N2EwMTIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3Bw
CkBAIC0xMDIsNiArMTAyLDI2IEBAIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vCiAgICAgbV9tZXRh
S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CiB9CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1X
aGVlbEV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwKKyAgICAgICAgY29uc3QgV2ViUG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwg
ZmxvYXQgZGVsdGFZKQoreworICAgIG1fcG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29u
dGFpbmluZ1dpbmRvdyhJbnRQb2ludChwb3NpdGlvbi54LCBwb3NpdGlvbi55KSk7CisgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IEludFBvaW50KHNjcmVlblBvc2l0aW9uLngsIHNjcmVlblBvc2l0aW9u
LnkpOworICAgIG1fZGVsdGFYID0gZGVsdGFYOworICAgIG1fZGVsdGFZID0gZGVsdGFZOworICAg
IG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRhWCAvIHN0YXRpY19jYXN0PGZsb2F0PigxMjApOworICAg
IG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWSAvIHN0YXRpY19jYXN0PGZsb2F0PigxMjApOworICAg
IG1fZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKKyAgICBtX2lzQWNjZXB0
ZWQgPSBmYWxzZTsKKyAgICBtX3NoaWZ0S2V5ID0gZmFsc2U7CisgICAgbV9jdHJsS2V5ID0gZmFs
c2U7CisgICAgbV9hbHRLZXkgPSBmYWxzZTsKKyAgICBtX21ldGFLZXkgPSBmYWxzZTsKK30KKyNl
bmRpZgorCisKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGlubGluZSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0
RXZlbnQ6OlR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENv
bnZlcnNpb24uaAppbmRleCA2Mzk5MWE5Li4yZDA3MzFhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCkBAIC02Myw2ICs2MywxMCBAQCBwdWJsaWM6
CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtV2hlZWxFdmVudCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihX
ZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lk
Z2V0KiwgY29uc3QgV2ViUG9pbnQmLCBjb25zdCBXZWJQb2ludCYsCisgICAgICAgIGZsb2F0LCBm
bG9hdCk7CisjZW5kaWYKIH07CiAKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNDkwYzYyMC4uNTcyNDM2YiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTU4LDYgKzU4LDkgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5o
IgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiR2VzdHVyZU1hbmFnZXIuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIgpAQCAtMjg4LDYgKzI5
MSw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdl
YkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50
KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQ
cm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgbV9nZXN0dXJlTWFuYWdlcihjcmVhdGVHZXN0
dXJlTWFuYWdlcigpKQorI2VuZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBk
b2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVj
aWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGlu
ZwpAQCAtMzE2LDcgKzMyMiw2IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xp
ZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAKICAgICBzdGF0
aWNfY2FzdDxCYWNrRm9yd2FyZExpc3RJbXBsKj4obV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkt
PnNldENsaWVudCgmbV9iYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKTsKICAgICBtX3BhZ2UtPnNl
dEdyb3VwTmFtZShwYWdlR3JvdXBOYW1lKTsKLQogICAgIG1faW5zcGVjdG9yU2V0dGluZ3NNYXAu
c2V0KG5ldyBTZXR0aW5nc01hcCk7CiB9CiAKQEAgLTcwNyw5ICs3MTIsMTMgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6dG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50
QnVpbGRlcihtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAgcmV0dXJu
IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZl
bnQodG91Y2hFdmVudEJ1aWxkZXIpOworICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IAorICAg
ICAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3Vj
aEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKTsKKworICAgIG1fZ2VzdHVyZU1hbmFnZXItPnByb2Nl
c3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7Cisg
ICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBUT1VDSF9F
VkVOVFMKIAogI2lmIE9TKFdJTkRPV1MpIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKQogLy8g
TWFjIGhhcyBubyB3YXkgdG8gb3BlbiBhIGNvbnRleHQgbWVudSBiYXNlZCBvbiBhIGtleWJvYXJk
IGV2ZW50LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDAzODg3NzAuLmYzOWM0M2Ug
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTg0LDYgKzg0LDEwIEBAIGNsYXNzIFdl
Yk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJTZXR0aW5n
c0ltcGw7CiBjbGFzcyBXZWJUb3VjaEV2ZW50OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitj
bGFzcyBHZXN0dXJlTWFuYWdlcjsKK2NsYXNzIFdlYlRvdWNoUG9pbnQ7CisjZW5kaWYKIAogY2xh
c3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmll
d0ltcGw+IHsKIHB1YmxpYzoKQEAgLTI1OCw3ICsyNjIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
b3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOwogICAgIGJvb2wga2V5RXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmKTsKLSAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYp
OwogCiAgICAgLy8gSGFuZGxlcyBjb250ZXh0IG1lbnUgZXZlbnRzIG9yaWduYXRlZCB2aWEgdGhl
IHRoZSBrZXlib2FyZC4gVGhlc2UKICAgICAvLyBpbmNsdWRlIHRoZSBWS19BUFBTIHZpcnR1YWwg
a2V5IGFuZCB0aGUgU2hpZnQrRjEwIGNvbWJpbmUuIENvZGUgaXMKQEAgLTM1Niw2ICszNTksOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbWFwS2V5Q29kZUZvclNjcm9sbChpbnQga2V5Q29k
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uKiBzY3JvbGxEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KiBzY3JvbGxHcmFudWxhcml0eSk7CisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hF
dmVudCYpOworI2VuZGlmICAgIAogCiAgICAgLy8gQ2FsbGVkIGJ5IGEgZnVsbCBmcmFtZSBwbHVn
aW4gaW5zaWRlIHRoaXMgdmlldyB0byBpbmZvcm0gaXQgdGhhdCBpdHMKICAgICAvLyB6b29tIGxl
dmVsIGhhcyBiZWVuIHVwZGF0ZWQuICBUaGUgcGx1Z2luIHNob3VsZCBvbmx5IGNhbGwgdGhpcyBm
dW5jdGlvbgpAQCAtNTU1LDYgKzU2MSwxMSBAQCBwcml2YXRlOgogICAgIC8vIGVhcmx5LiBUaGlz
IG1lbWJlciBob2xkcyBvbiB0byB0aGUgR0MzRCBpbiB0aGlzIGNhc2UuCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250
ZXh0M0Q7CiAgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk+IG1fZGV2aWNl
T3JpZW50YXRpb25DbGllbnRQcm94eTsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
T3duUHRyPEdlc3R1cmVNYW5hZ2VyPiBtX2dlc3R1cmVNYW5hZ2VyOworI2VuZGlmCisKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR2VzdHVyZU1h
bmFnZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWQyY2Yy
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2Vy
VGVzdC5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJHZXN0dXJlTWFuYWdlci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2Ug
eworCitjbGFzcyBUZXN0R2VzdHVyZU1hbmFnZXIgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citw
dWJsaWM6CisgICAgVGVzdEdlc3R1cmVNYW5hZ2VyKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IH0K
K307CisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIGhhc2gpCit7CisgICAgR2VzdHVyZU1h
bmFnZXIgdGVzdEdtOworCisgICAgQVNTRVJUX0VRKDAsIHRlc3RHbS5oYXNoKEdlc3R1cmVNYW5h
Z2VyOjpOb0dlc3R1cmUsCisgICAgICAgIFdlYlRvdWNoRXZlbnQ6OlNjcmVlbiwgV2ViVG91Y2hQ
b2ludDo6Rmlyc3RGaW5nZXIsCisgICAgICAgIFdlYlRvdWNoUG9pbnQ6OlN0YXRlVW5kZWZpbmVk
LCBmYWxzZSkpOworICAgIEFTU0VSVF9FUSg4LCB0ZXN0R20uaGFzaChHZXN0dXJlTWFuYWdlcjo6
Tm9HZXN0dXJlLAorICAgICAgICBXZWJUb3VjaEV2ZW50OjpTY3JlZW4sIFdlYlRvdWNoUG9pbnQ6
OkZpcnN0RmluZ2VyLAorICAgICAgICBXZWJUb3VjaFBvaW50OjpTdGF0ZVVuZGVmaW5lZCwgdHJ1
ZSkpOworICAgIEFTU0VSVF9FUSgweDEwMDAwLCB0ZXN0R20uaGFzaChHZXN0dXJlTWFuYWdlcjo6
UGVuZGluZ1N5bnRoZXRpY0NsaWNrLAorICAgICAgICBXZWJUb3VjaEV2ZW50OjpTY3JlZW4sIFdl
YlRvdWNoUG9pbnQ6OkZpcnN0RmluZ2VyLAorICAgICAgICBXZWJUb3VjaFBvaW50OjpTdGF0ZVVu
ZGVmaW5lZCwgZmFsc2UpKTsKKyAgICBBU1NFUlRfRVEoMHgyMDAwMCwgdGVzdEdtLmhhc2goR2Vz
dHVyZU1hbmFnZXI6OlNjcm9sbCwKKyAgICAgICAgV2ViVG91Y2hFdmVudDo6U2NyZWVuLCBXZWJU
b3VjaFBvaW50OjpGaXJzdEZpbmdlciwKKyAgICAgICAgV2ViVG91Y2hQb2ludDo6U3RhdGVVbmRl
ZmluZWQsIGZhbHNlKSk7CisgICAgQVNTRVJUX0VRKDB4MjAwMDAgfCAxLCB0ZXN0R20uaGFzaChH
ZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLAorICAgICAgICBXZWJUb3VjaEV2ZW50OjpTY3JlZW4sIFdl
YlRvdWNoUG9pbnQ6OkZpcnN0RmluZ2VyLAorICAgICAgICBXZWJUb3VjaFBvaW50OjpTdGF0ZVJl
bGVhc2VkLCBmYWxzZSkpOworCisgICAgQVNTRVJUX0VRKDB4MjAwMDAgfCAweDEwMDAgfCAweDEw
IHwgOCB8IDEsIHRlc3RHbS5oYXNoKEdlc3R1cmVNYW5hZ2VyOjpTY3JvbGwsCisgICAgICAgIFdl
YlRvdWNoRXZlbnQ6OlBhZCwgV2ViVG91Y2hQb2ludDo6U2Vjb25kRmluZ2VyLAorICAgICAgICBX
ZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2VkLCB0cnVlKSk7Cit9CisKK1RFU1RfRihUZXN0R2Vz
dHVyZU1hbmFnZXIsIHN0YXRlKQoreworICAgIEdlc3R1cmVNYW5hZ2VyIHRlc3RHbTsKKworICAg
IEFTU0VSVF9FUSgwLCB0ZXN0R20uc3RhdGUoKSk7CisgICAgdGVzdEdtLnNldFN0YXRlKEdlc3R1
cmVNYW5hZ2VyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOworICAgIEFTU0VSVF9FUShHZXN0dXJl
TWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCB0ZXN0R20uc3RhdGUoKSk7Cit9CisKK1RF
U1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKQoreworICAg
IEdlc3R1cmVNYW5hZ2VyIGdtOworICAgIFdlYlRvdWNoUG9pbnQgcDsKKworICAgIEFTU0VSVF9F
USgwLjAsIGdtLm1fRmlyc3RUb3VjaFBvc2l0aW9uLngpOworICAgIEFTU0VSVF9FUSgwLjAsIGdt
Lm1fRmlyc3RUb3VjaFBvc2l0aW9uLnkpOworICAKKyAgICBwLnBvc2l0aW9uLnggPSAwLjA7Cisg
ICAgcC5wb3NpdGlvbi55ID0gMTkuOTk5OworICAgIEFTU0VSVF9UUlVFKGdtLmlzSW5zaWRlTWFu
aGF0dGFuU3F1YXJlKHApKTsKKyAgICAKKyAgICBwLnBvc2l0aW9uLnggPSAxOS45OTk7CisgICAg
cC5wb3NpdGlvbi55ID0gMC4wOworICAgIEFTU0VSVF9UUlVFKGdtLmlzSW5zaWRlTWFuaGF0dGFu
U3F1YXJlKHApKTsKKworICAgIHAucG9zaXRpb24ueCA9IDIwLjA7CisgICAgcC5wb3NpdGlvbi55
ID0gMC4wOworICAgIEFTU0VSVF9GQUxTRShnbS5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSk7
CisgICAgCisgICAgcC5wb3NpdGlvbi54ID0gMC4wOworICAgIHAucG9zaXRpb24ueSA9IDIwLjA7
CisgICAgQVNTRVJUX0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKKyAgICAK
KyAgICBwLnBvc2l0aW9uLnggPSAtMjAuMDsKKyAgICBwLnBvc2l0aW9uLnkgPSAwLjA7CisgICAg
QVNTRVJUX0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKKyAgICAKKyAgICBw
LnBvc2l0aW9uLnggPSAwLjA7CisgICAgcC5wb3NpdGlvbi55ID0gLTIwLjA7CisgICAgQVNTRVJU
X0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKK30KKworVEVTVF9GKFRlc3RH
ZXN0dXJlTWFuYWdlciwgaXNJbkNsaWNrVGltZVdpbmRvdykKK3sKKyAgICBHZXN0dXJlTWFuYWdl
ciBnbTsKKyAgICAKKyAgICBnbS5tX1RvdWNoRHVyYXRpb24gPSAwLjA7CisgICAgQVNTRVJUX0ZB
TFNFKGdtLmlzSW5DbGlja1RpbWVXaW5kb3coKSk7CisgICAgCisgICAgZ20ubV9Ub3VjaER1cmF0
aW9uID0gMC4wMTAwMDE7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbkNsaWNrVGltZVdpbmRvdygp
KTsKKyAgICAKKyAgICBnbS5tX1RvdWNoRHVyYXRpb24gPSAwLjggLSAuMDAwMDAwMDE7CisgICAg
QVNTRVJUX1RSVUUoZ20uaXNJbkNsaWNrVGltZVdpbmRvdygpKTsKKyAgICAKKyAgICBnbS5tX1Rv
dWNoRHVyYXRpb24gPSAwLjgwMDAxOworICAgIEFTU0VSVF9GQUxTRShnbS5pc0luQ2xpY2tUaW1l
V2luZG93KCkpOworfQorCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCBhZGRFZGdlRnVuY3Rp
b24pCit7CisgICAgR2VzdHVyZU1hbmFnZXIgZ207CisgICAgZ20uYWRkRWRnZUZ1bmN0aW9uKEdl
c3R1cmVNYW5hZ2VyOjpTY3JvbGwsCisgICAgICAgIFdlYlRvdWNoRXZlbnQ6OlNjcmVlbiwgV2Vi
VG91Y2hQb2ludDo6Rmlyc3RGaW5nZXIsCisgICAgICAgIFdlYlRvdWNoUG9pbnQ6OlN0YXRlVW5k
ZWZpbmVkLCB0cnVlLAorICAgICAgICAoR2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVUcmFuc2l0aW9u
RnVuY3Rpb24pNDA5Nik7CisgICAgCisgICAgQVNTRVJUX0VRKChHZXN0dXJlTWFuYWdlcjo6R2Vz
dHVyZVRyYW5zaXRpb25GdW5jdGlvbik0MDk2LAorICAgICAgICBnbS5tX0VkZ2VGdW5jdGlvbnMu
Z2V0KGdtLmhhc2goR2VzdHVyZU1hbmFnZXI6OlNjcm9sbCwKKyAgICAgICAgIFdlYlRvdWNoRXZl
bnQ6OlNjcmVlbiwgV2ViVG91Y2hQb2ludDo6Rmlyc3RGaW5nZXIsCisgICAgICAgIFdlYlRvdWNo
UG9pbnQ6OlN0YXRlVW5kZWZpbmVkLCB0cnVlKSkpOworfQorCitURVNUX0YoVGVzdEdlc3R1cmVN
YW5hZ2VyLCB1cGRhdGVWYWx1ZXMpCit7CisgICAgR2VzdHVyZU1hbmFnZXIgZ207CisKKyAgICBB
U1NFUlRfRVEoMC4wLCBnbS5tX0ZpcnN0VG91Y2hUaW1lKTsKKyAgICBBU1NFUlRfRVEoMC4wLCBn
bS5tX1RvdWNoRHVyYXRpb24pOworICAgIEFTU0VSVF9FUShHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0
dXJlLCBnbS5tX1N0YXRlKTsKKworICAgIFdlYlRvdWNoUG9pbnQgcDE7CisgICAgcDEucG9zaXRp
b24ueCA9IDEwOworICAgIHAxLnBvc2l0aW9uLnkgPSAxMTsKKyAgICBnbS51cGRhdGVWYWx1ZXMo
MS4xLCBwMSk7CisgICAgCisgICAgQVNTRVJUX0VRKDEwLCBnbS5tX0ZpcnN0VG91Y2hQb3NpdGlv
bi54KTsKKyAgICBBU1NFUlRfRVEoMTEsIGdtLm1fRmlyc3RUb3VjaFBvc2l0aW9uLnkpOworICAg
IEFTU0VSVF9FUSgxLjEsIGdtLm1fRmlyc3RUb3VjaFRpbWUpOworICAgIEFTU0VSVF9FUSgwLjAs
IGdtLm1fVG91Y2hEdXJhdGlvbik7CisKKyAgICBXZWJUb3VjaFBvaW50IHAyOworICAgIHAyLnBv
c2l0aW9uLnggPSAxMzsKKyAgICBwMi5wb3NpdGlvbi55ID0gMTQ7CisgICAgZ20ubV9TdGF0ZSA9
IEdlc3R1cmVNYW5hZ2VyOjpQZW5kaW5nU3ludGhldGljQ2xpY2s7CisgICAgZ20udXBkYXRlVmFs
dWVzKDIuMCwgcDIpOworICAgICAgICAgICAgICAgIAorICAgIEFTU0VSVF9FUSgxMCwgZ20ubV9G
aXJzdFRvdWNoUG9zaXRpb24ueCk7CisgICAgQVNTRVJUX0VRKDExLCBnbS5tX0ZpcnN0VG91Y2hQ
b3NpdGlvbi55KTsKKyAgICBBU1NFUlRfRVEoMS4xLCBnbS5tX0ZpcnN0VG91Y2hUaW1lKTsKKyAg
ICBBU1NFUlRfRVEoMi4wIC0gMS4xLCBnbS5tX1RvdWNoRHVyYXRpb24pOworCisgICAgV2ViVG91
Y2hQb2ludCBwMzsKKyAgICBwMy5wb3NpdGlvbi54ID0gMjM7CisgICAgcDMucG9zaXRpb24ueSA9
IDM0OworICAgIGdtLm1fU3RhdGUgPSBHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0dXJlOworICAgIGdt
LnVwZGF0ZVZhbHVlcygzLjAsIHAzKTsKKyAgICAgICAgICAgICAgICAKKyAgICBBU1NFUlRfRVEo
MjMsIGdtLm1fRmlyc3RUb3VjaFBvc2l0aW9uLngpOworICAgIEFTU0VSVF9FUSgzNCwgZ20ubV9G
aXJzdFRvdWNoUG9zaXRpb24ueSk7CisgICAgQVNTRVJUX0VRKDMuMCwgZ20ubV9GaXJzdFRvdWNo
VGltZSk7CisgICAgQVNTRVJUX0VRKDAuMCwgZ20ubV9Ub3VjaER1cmF0aW9uKTsKK30KKworfSAv
LyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75402</attachid>
            <date>2010-12-02 12:21:24 -0800</date>
            <delta_ts>2010-12-10 15:46:23 -0800</delta_ts>
            <desc>second proposed patch.</desc>
            <filename>patch-49345-2</filename>
            <type>text/plain</type>
            <size>47219</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwYmQ0ZmIwLi5lY2YzMDhkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMTItMDIgIHJqa3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
bGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2VzdHVyZU1hbmFnZXIgZnJhbWV3b3JrCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMDEwLTEyLTAxICBTdGV2ZSBGYWxrZW5idXJnICA8c2Zh
bGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKaW5kZXggMTJjM2UzZC4uMmM4YTNjYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
QEAgLTkxOCw2ICs5MTgsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKICNlbmRp
ZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0dFU1RVUkVfTUFOQUdFUikKKyNkZWZpbmUgRU5BQkxF
X0dFU1RVUkVfTUFOQUdFUiAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9OT1RJRklD
QVRJT05TKQogI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
NTgwNTA3Li5iNGFkNWFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMTItMDIgIHJqa3Jv
ZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIExheW91dCB0ZXN0cyB0
byBzaG93IGNvcnJlY3Qgb3BlcmF0aW9uIG9mIEdlc3R1cmVNYW5hZ2VyIHNhbXBsZSBnZXN0dXJl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUK
KworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJl
LWNsaWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdl
c3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3Rv
dWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTIt
MDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBvbmUgbW9yZSB0cnkgdG8gZ2V0IGNocm9taXVtIGRydCBib3RzIGdyZWVuLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNs
aWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjhk
ZWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0
cyBiYXNpYyBzaW5nbGUgdG91Y2ggZ2VzdHVyZSBnZW5lcmF0aW9uLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlz
IHBsYXRmb3JtLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdl
c3R1cmUtY2xpY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdl
c3R1cmUtY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjc5
MzVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtZ2VzdHVyZS1jbGljay5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0b3VjaHRhcmdldCI7CitkaXYuc3R5
bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYuc3R5
bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCit2YXIgbGFzdEV2ZW50ID0gbnVsbDsKK3Zh
ciBjbGlja0V2ZW50c1JlY2VpdmVkID0gMDsKK3ZhciBFWFBFQ1RFRF9DTElDS19FVkVOVFNfVE9U
QUwgPSAzOwordmFyIHRvdWNoRXZlbnRzUmVjZWl2ZWQgPSAwOwordmFyIGV2ZW50VHlwZXMgPSBb
ICdtb3VzZWRvd24nLCAnbW91c2V1cCcsICdjbGljaycgXTsKKwordmFyIGhhdmVUb3VjaEV2ZW50
cyA9IGZhbHNlOworCitmdW5jdGlvbiBnZXN0dXJlRXZlbnRDYWxsYmFjayhldmVudCkKK3sKKyAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGxhc3RFdmVudCA9IGV2ZW50Owor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2xhc3RFdmVudC50eXBlJywgZXZlbnRUeXBl
c1t0b3VjaEV2ZW50c1JlY2VpdmVkXSk7CisgICAgICAgIHNob3VsZEJlKCdsYXN0RXZlbnQuY2xp
ZW50WCcsICcxMCcpOworICAgICAgICBzaG91bGRCZSgnbGFzdEV2ZW50LmNsaWVudFknLCAnMTIn
KTsKKyAgICAgICAgdG91Y2hFdmVudHNSZWNlaXZlZCsrOworICAgIH0gZWxzZSB7CisgICAgICAg
IGRlYnVnKGV2ZW50LnR5cGUpOworICAgICAgICBkZWJ1ZyhldmVudC5jbGllbnRYKTsKKyAgICAg
ICAgZGVidWcoZXZlbnQuY2xpZW50WSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaW5nbGVUb3Vj
aFNlcXVlbmNlKCkKK3sKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDEwLCAxMik7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgLy8gSW5zZXJ0IHNvbWUgZGVsYXku
IE5COiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gbWluQ2xpY2tEb3duVGltZSwKKyAgICAvLyBtYXhD
bGlja0Rvd25UaW1lIGZyb20gR2VzdHVyZU1hbmFnZXIuY3BwCisgICAgZXZlbnRTZW5kZXIubGVh
cEZvcndhcmQoMjApOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30KKworLy8gRW5kIGJ5IHRpbWVyIHRvIHJ1biBj
b3JyZWN0bHkgb24gbm9uLUNocm9taXVtIHBsYXRmb3Jtcy4KK2Z1bmN0aW9uIGVuZFRlc3QoKQor
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgdG91Y2hFdmVudHNSZWNl
aXZlZCA8CisgICAgICAgICAgICBFWFBFQ1RFRF9DTElDS19FVkVOVFNfVE9UQUwpIHsKKyAgICAg
ICAgZGVidWcoJ0dlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9y
bS4nKTsKKyAgICB9CisgICAgICAgICAgICAgICAgCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7CitkaXYuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNldXAiLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFsc2UpOworZG9jdW1lbnQuYm9keS5p
bnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBnZXN0dXJlIGdlbmVyYXRpb24uIik7CisgICAg
bGFzdEV2ZW50ID0gbnVsbDsKKyAgICBpZiAoISFldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRz
KSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICAgICAgc2lu
Z2xlVG91Y2hTZXF1ZW5jZSgpOworICAgICAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDEwMCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KK30gZWxzZSB7CisgICAgZGVi
dWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRhcCBvbiB0aGUgYmx1ZSBy
ZWN0IHRvIGxvZy4iKQorfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
YmJiNjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMg
dGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2ZW50cy4gU3F1YXJl
IGlzIChtb3N0bHkpIGdyZWVuIG9uIHBhc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0dlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBi
cm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJl
LXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzJjZWJh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gt
Z2VzdHVyZS1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDE2OSBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24u
anMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3VjaHRhcmdldCB7Cisg
IHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworI21vdmluZ2JveCB7CisgIHdpZHRoOiAxMDAlOwor
ICBoZWlnaHQ6IDEwMCU7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsJCQorICB3b3JkLXdyYXA6IGJy
ZWFrLXdvcmQ7CisgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgb3ZlcmZsb3cteDogc2Nyb2xsOwor
ICBkaXNwbGF5OiBibG9jazsKK30KKworI2dyZWVuYm94IHsKKyAgd2lkdGg6IDEwMHB4OworICBo
ZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFkZGluZzogMHB4OworICBt
YXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAx
MDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAwcHg7CisgIG1hcmdpbjogMHB4
OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eSBzdHlsZT0ibWFyZ2luOjAiIG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpOycsIDEwMCki
PgorPGRpdiBpZD0idG91Y2h0YXJnZXQiPgorICA8ZGl2IGlkPSJtb3Zpbmdib3giPgorICAgIDx0
YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwcHgiPgorICAgICAgPHRyPgorICAgICAgICA8
dGQ+PGRpdiBpZD0icmVkYm94Ij48L2Rpdj48L3RkPgorICAgICAgICA8dGQ+PGRpdiBpZD0iZ3Jl
ZW5ib3giPjwvZGl2PjwvdGQ+CisgICAgICA8L3RyPgorICAgICAgPHRyPgorICAgICAgICA8dGQ+
PGRpdiBpZD0iZ3JlZW5ib3giPjwvZGl2PjwvdGQ+CisgICAgICAgIDx0ZD48ZGl2IGlkPSJncmVl
bmJveCI+PC9kaXY+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90YWJsZT4KKyAgPC9kaXY+Cis8
L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIG1vdmluZ2RpdjsKK3Zh
ciBFWFBFQ1RFRF9TQ1JPTExTX1RPVEFMID0gMjsKK3ZhciBzY3JvbGxzT2NjdXJyZWQgPSAwOwor
dmFyIHNjcm9sbEFtb3VudFggPSBbJzkwJywgJzkwJ107Cit2YXIgc2Nyb2xsQW1vdW50WSA9IFsn
MCcsICc5NSddOworCitmdW5jdGlvbiBjaGVja1Njcm9sbE9mZnNldCgpCit7CisgICAgbW92aW5n
ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vdmluZ2JveCcpOworICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgc2hvdWxkQmUoJ21vdmluZ2Rpdi5zY3JvbGxUb3An
LCBzY3JvbGxBbW91bnRZW3Njcm9sbHNPY2N1cnJlZF0pOworICAgICAgICBzaG91bGRCZSgnbW92
aW5nZGl2LnNjcm9sbExlZnQnLCBzY3JvbGxBbW91bnRYW3Njcm9sbHNPY2N1cnJlZF0pOworICAg
ICAgICBzY3JvbGxzT2NjdXJyZWQrKzsKKyAgICB9CisKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyICYmIHNjcm9sbHNPY2N1cnJlZCA9PSBFWFBFQ1RFRF9TQ1JPTExTX1RPVEFM
KSB7CisgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCisgICAgICAg
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9IGVs
c2UgeworICAgICAgc2Vjb25kVG91Y2hEcmFnU2VxdWVuY2UoKTsgICAgCisgICAgfQorfQorCitm
dW5jdGlvbiBmaW5nZXJVcChldmVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgIGRlYnVnKCdtb3ZlZDogJyArIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2Ny
b2xsVG9wICsgJywgJyArIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2Nyb2xsTGVmdCk7CisgICAgcmV0
dXJuIHRydWU7ICAvLyBXYW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KK30KKworZnVuY3Rpb24g
Zmlyc3RUb3VjaERyYWdTZXF1ZW5jZSgpCit7CisgICAgZGVidWcoImZpcnN0IGdlc3R1cmUiKTsK
KyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRk
VG91Y2hQb2ludCg5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKworICAg
IC8vIFNjcm9sbCB0aGUgZGl2IHRvIHRoZSBsZWZ0LgorICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRv
dWNoUG9pbnQoMCwgNSwgMTIpOyAgICAKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKyAg
ICAKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAgICBldmVudFNlbmRl
ci50b3VjaEVuZCgpOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAgIHNldFRpbWVvdXQo
Y2hlY2tTY3JvbGxPZmZzZXQsIDUwKTsKK30KKworZnVuY3Rpb24gc2Vjb25kVG91Y2hEcmFnU2Vx
dWVuY2UoKQoreworICAgIGRlYnVnKCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVy
LmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDEyLCA5
Nyk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAgIAorICAgIC8vIFNjcm9sbCB0
aGUgcmVjdGFuZ2xlIGRvd24uCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAx
MiwgMik7ICAgIAorICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5k
ZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKyAg
ICAKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgc2V0VGltZW91dChjaGVja1Njcm9sbE9m
ZnNldCwgNTApOworfQorCitmdW5jdGlvbiBleGl0SWZOZWNlc3NhcnkoKQoreworICAgIGRlYnVn
KCdHZXN0dXJlIG1hbmFnZXIgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0gb3IgYnJv
a2VuJyk7CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBtb3Zp
bmdkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW92aW5nYm94Jyk7CisgICAgCisgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0
cyBzY3JvbGwgZ2VzdHVyZSBnZW5lcmF0aW9uIGZyb20gdG91Y2ggZXZlbnRzLiAnICsKKyAgICAg
ICAgICAgICdTcXVhcmUgaXMgKG1vc3RseSkgZ3JlZW4gb24gcGFzcycpOworCisgICAgICAgIGlm
IChldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgICAgICAgICBmaXJzdFRvdWNo
RHJhZ1NlcXVlbmNlKCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGV4aXRJZk5lY2Vzc2FyeSwg
MjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJl
cyBEdW1wUmVuZGVyVHJlZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8gbG9nLiIpOwor
ICAgICAgICBtb3ZpbmdkaXYuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBmaW5nZXJVcCwg
ZmFsc2UpOworICAgIH0KK30KKzwvc2NyaXB0PgorCisKKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDYyYmYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0
ZXN0cyBiYXNpYyBzaW5nbGUgdG91Y2ggZ2VzdHVyZSBnZW5lcmF0aW9uLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAibW91c2Vkb3duIgor
UEFTUyBsYXN0RXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQuY2xpZW50WSBpcyAx
MgorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAibW91c2V1cCIKK1BBU1MgbGFzdEV2ZW50LmNsaWVu
dFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LmNsaWVudFkgaXMgMTIKK1BBU1MgbGFzdEV2ZW50LnR5
cGUgaXMgImNsaWNrIgorUEFTUyBsYXN0RXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZl
bnQuY2xpZW50WSBpcyAxMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNj
cm9sbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Uy
Njc5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUaGlzIHRlc3RzIHNjcm9sbCBnZXN0dXJlIGdlbmVyYXRpb24gZnJvbSB0b3Vj
aCBldmVudHMuIFNxdWFyZSBpcyAobW9zdGx5KSBncmVlbiBvbiBwYXNzCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQQVNTIG1vdmluZ2Rpdi5zY3JvbGxU
b3AgaXMgMAorUEFTUyBtb3ZpbmdkaXYuc2Nyb2xsTGVmdCBpcyA5MAorc2Vjb25kIGdlc3R1cmUK
K1BBU1MgbW92aW5nZGl2LnNjcm9sbFRvcCBpcyA5NQorUEFTUyBtb3ZpbmdkaXYuc2Nyb2xsTGVm
dCBpcyA5MAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDJhYzlhOGMuLjBjY2JiNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMTItMDIgIHJqa3JvZWdlQGNo
cm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NTogYWRkZWQgYSBiYXNpYworICAgICAgICBHZXN0dXJl
TWFuYWdlciBmcmFtZXdvcmsgd2l0aCB0d28gc2FtcGxlIGdlc3R1cmVzIChjbGljayBhbmQgc2Ny
b2xsKS4KKyAgICAgICAgCisgICAgICAgIEFsc28sIGFkZGVkIHRpbWUgc3RhbXBzIHRvIFBsYXRm
b3JtVG91Y2hFdmVudCB0byBwZXJtaXQgbm9uLWZsYWt5CisgICAgICAgIGxheW91dCB0ZXN0cy4K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omdl
c3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6R2VzdHVyZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6On5HZXN0dXJlTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6YWRkRWRnZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjppc0luQ2xpY2tUaW1lV2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjppc0luc2lkZU1hbmhhdHRhblNxdWFyZSk6CisgICAgICAg
IChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6ZGlzcGF0Y2hTeW50aGV0aWNDbGljayk6CisgICAg
ICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZXN0dXJlTWFuYWdlcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjpzY3JvbGxWaWFUb3VjaE1vdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6dXBkYXRlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okdlc3R1cmVNYW5hZ2VyOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpjbGljayk6CisgICAg
ICAgIChXZWJDb3JlOjpjbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmluU2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBw
YWdlL0dlc3R1cmVNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1h
bmFnZXI6OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjpzdGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgICogcGxh
dGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9p
ZC9QbGF0Zm9ybVRvdWNoRXZlbnRBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtVG91Y2hFdmVudDo6UGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRv
dWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudCk6CisKIDIwMTAtMTItMDEgIERhdmlkIEh5YXR0
ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA2NGNhZDhlLi5iZjQxNmNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjI2OCw2ICsyMjY4LDggQEAKICAgICAgICAg
ICAgICdwYWdlL0dlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmgnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvcG9z
aXRpb24uaCcsCisgICAgICAgICAgICAncGFnZS9HZXN0dXJlTWFuYWdlci5jcHAnLAorICAgICAg
ICAgICAgJ3BhZ2UvR2VzdHVyZU1hbmFnZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Hcm91cFNl
dHRpbmdzLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmgnLAogICAgICAg
ICAgICAgJ3BhZ2UvSGFsdGFibGVQbHVnaW4uaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDMy
OGJlNjMuLjg5ZjVhNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04OCw2ICs4OCwxMCBAQAog
I2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFO
QUdFUikKKyNpbmNsdWRlICJHZXN0dXJlTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE5NSw2ICsxOTksOSBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCisjaWYgRU5B
QkxFKEdFU1RVUkVfTUFOQUdFUikKKyAgICAsIG1fZ2VzdHVyZU1hbmFnZXIoY3JlYXRlR2VzdHVy
ZU1hbmFnZXIoKSkKKyNlbmRpZgogewogfQogCkBAIC0yOTgzLDggKzI5OTAsMTIgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBl
dmVudCkKICAgICAgICAgZGVmYXVsdFByZXZlbnRlZCB8PSBtb3ZlRXYtPmRlZmF1bHRQcmV2ZW50
ZWQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorICAgIG1fZ2VzdHVy
ZU1hbmFnZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVs
dFByZXZlbnRlZCk7CisjZW5kaWYKKwogICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQog
I2VuZGlmCiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBj
YTE5YTBjLi5hMTY2ODhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
KysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoX19PQkpDX18pCkBAIC03OCw2ICs3
OSwxMCBAQCBleHRlcm4gY29uc3QgaW50IFRleHREcmFnSHlzdGVyZXNpczsKIGV4dGVybiBjb25z
dCBpbnQgR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorY2xhc3MgR2VzdHVyZU1hbmFnZXI7
CisjZW5kaWYKKwogZW51bSBIaXRUZXN0U2Nyb2xsYmFycyB7IFNob3VsZEhpdFRlc3RTY3JvbGxi
YXJzLCBEb250SGl0VGVzdFNjcm9sbGJhcnMgfTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKQEAgLTIxNCw2ICsyMTksMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKKyAgICBHZXN0dXJlTWFuYWdlciogZ2VzdHVyZU1h
bmFnZXIoKSBjb25zdCB7IHJldHVybiBtX2dlc3R1cmVNYW5hZ2VyLmdldCgpOyB9CisjZW5kaWYK
KwogcHJpdmF0ZToKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGVudW0gRHJhZ0FuZERy
b3BIYW5kbGVUeXBlIHsKQEAgLTQzNSw2ICs0NDQsOSBAQCBwcml2YXRlOgogICAgIFRvdWNoVGFy
Z2V0TWFwIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKICAgICBib29sIG1fdG91Y2hQ
cmVzc2VkOwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKKyAgICBPd25QdHI8
R2VzdHVyZU1hbmFnZXI+IG1fZ2VzdHVyZU1hbmFnZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZXN0dXJlTWFuYWdlci5j
cHAgYi9XZWJDb3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjUzNDRhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2Uv
R2VzdHVyZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
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
I2luY2x1ZGUgIkdlc3R1cmVNYW5hZ2VyLmgiCisKKy8vICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorCisKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBFZGdlIGZ1bmN0
aW9ucy4KK3N0YXRpYyBib29sIGNsaWNrKEdlc3R1cmVNYW5hZ2VyKiwgY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50Jik7CitzdGF0aWMgYm9vbCBjbGlja09yU2Nyb2xsKEdlc3R1cmVNYW5hZ2VyKiwg
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CitzdGF0aWMgYm9vbCBpblNjcm9sbChHZXN0dXJl
TWFuYWdlciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworc3RhdGljIGJvb2wgcmVzZXQo
R2VzdHVyZU1hbmFnZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKK3N0YXRpYyBib29s
IHRvdWNoRG93bihHZXN0dXJlTWFuYWdlciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwor
CisvLyBGSVhNRTogTWFrZSB0aGVzZSBjb25maWd1cmFibGUgcHJvZ3JhbW1hdGljYWxseS4KKy8v
IE1heGltdW0gaG9sZCBkb3duIChzKSBmb3IgYSB0b3VjaCB0byBiZSB0cmVhdGVkIGFzIGEgY2xp
Y2suCitzdGF0aWMgY29uc3QgZG91YmxlIG1heENsaWNrRG93blRpbWUgPSAuODsKKworLy8gTWlu
aW11bSBob2xkIGRvd24gKHMpIGZvciBhIHRvdWNoIHRvIGJlIHRyZWF0ZWQgYXMgYSBjbGljay4K
K3N0YXRpYyBjb25zdCBkb3VibGUgbWluQ2xpY2tEb3duVGltZSA9IC4wMTsKKworLy8gTWF4aW11
bSBtYW5oYXR0YW4gZGlzcGxhY2VtZW50IGZvciB0b3VjaCBtb3Rpb24gdG8KKy8vIHN0aWxsIGJl
IGNvbnNpZGVyZWQgYXMgYSBjbGljay4KK3N0YXRpYyBjb25zdCBpbnQgbWF4TWFuaGF0dGFuRGlz
dGFuY2UgPSAyMDsKKworR2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVNYW5hZ2VyKCkKKyAgICA6IG1f
Zmlyc3RUb3VjaFRpbWUoMC4wKQorICAgICwgbV9zdGF0ZShHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0
dXJlKQorICAgICwgbV90b3VjaER1cmF0aW9uKDAuMCkKKyAgICAsIG1fZXZlbnRIYW5kbGVyKDAp
Cit7Cit9CisKK0dlc3R1cmVNYW5hZ2VyOjp+R2VzdHVyZU1hbmFnZXIoKQoreworfQorCit2b2lk
IEdlc3R1cmVNYW5hZ2VyOjphZGRFZGdlRnVuY3Rpb24oU3RhdGUgc3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmluZ2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgdG91Y2hU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXN0dXJlVHJhbnNpdGlvbkZ1
bmN0aW9uIGYpCit7CisgICAgbV9lZGdlRnVuY3Rpb25zLmFkZChoYXNoKHN0YXRlLCBmaW5nZXIs
IHRvdWNoVHlwZSwgaGFuZGxlZCksIGYpOworfQorCitib29sIEdlc3R1cmVNYW5hZ2VyOjppc0lu
Q2xpY2tUaW1lV2luZG93KCkKK3sKKyAgICByZXR1cm4gbV90b3VjaER1cmF0aW9uID49IG1pbkNs
aWNrRG93blRpbWUgJiYgbV90b3VjaER1cmF0aW9uIDwgbWF4Q2xpY2tEb3duVGltZTsKK30KKwor
Ym9vbCBHZXN0dXJlTWFuYWdlcjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiBwKQoreworICAgIGludCBtYW5oYXR0YW5EaXN0YW5jZSA9IGFicyhwLnBv
cygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSkgKworICAgICAgICBhYnMocC5wb3Mo
KS55KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOworICAgIHJldHVybiBtYW5oYXR0YW5E
aXN0YW5jZSA8IG1heE1hbmhhdHRhbkRpc3RhbmNlOworfQorCit2b2lkIEdlc3R1cmVNYW5hZ2Vy
OjpkaXNwYXRjaFN5bnRoZXRpY0NsaWNrKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCkKK3sK
KyAgICAvLyBOQjogc3ludGhldGljIGV2ZW50cyBhcmUgbm90IGRlbGl2ZXJlZCB0byBwbHVnLWlu
cy4KKyAgICAvLyBOQjogdG91Y2gtYmFzZWQgVVggbmVlZHMgY3VzdG9tIHBvcHVwIGNvbXBvbmVu
dHMuCisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24ocC5wb3MoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnNjcmVlblBvcygpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTW91c2VFdmVudFByZXNzZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChwLnBv
cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuc2NyZWVuUG9zKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3VzZUV2ZW50UmVsZWFzZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OmN1cnJlbnRUaW1lKCkpOworCisgICAgbV9l
dmVudEhhbmRsZXItPmhhbmRsZU1vdXNlUHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKKyAgICBt
X2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOworfQor
Cit2b2lkIEdlc3R1cmVNYW5hZ2VyOjppbml0KCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBGaXJz
dEZpbmdlciA9IDA7CisgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBSZWxlYXNl
ZCA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBjb25zdCBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlN0YXRlIFByZXNzZWQgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJl
c3NlZDsKKyAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIE1vdmVkID0gUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkOworICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6
U3RhdGUgU3RhdGlvbmFyeSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5Owor
ICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgQ2FuY2VsbGVkID0gUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKKworICAgIGFkZEVkZ2VGdW5jdGlvbihOb0dlc3R1
cmUsIEZpcnN0RmluZ2VyLCBQcmVzc2VkLCBmYWxzZSwgdG91Y2hEb3duKTsKKyAgICBhZGRFZGdl
RnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJzdEZpbmdlciwgQ2FuY2VsbGVkLCBm
YWxzZSwgcmVzZXQpOworICAgIGFkZEVkZ2VGdW5jdGlvbihQZW5kaW5nU3ludGhldGljQ2xpY2ss
IEZpcnN0RmluZ2VyLCBSZWxlYXNlZCwgZmFsc2UsIGNsaWNrKTsKKyAgICBhZGRFZGdlRnVuY3Rp
b24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJzdEZpbmdlciwgTW92ZWQsIGZhbHNlLCBjbGlj
a09yU2Nyb2xsKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBG
aXJzdEZpbmdlciwgU3RhdGlvbmFyeSwgZmFsc2UsIGNsaWNrT3JTY3JvbGwpOworICAgIGFkZEVk
Z2VGdW5jdGlvbihTY3JvbGwsIEZpcnN0RmluZ2VyLCBNb3ZlZCwgZmFsc2UsIGluU2Nyb2xsKTsK
KyAgICBhZGRFZGdlRnVuY3Rpb24oU2Nyb2xsLCBGaXJzdEZpbmdlciwgUmVsZWFzZWQsIGZhbHNl
LCByZXNldCk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFNjcm9sbCwgRmlyc3RGaW5nZXIsIENhbmNl
bGxlZCwgZmFsc2UsIHJlc2V0KTsKK30KKworYm9vbCBHZXN0dXJlTWFuYWdlcjo6cHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIEV2ZW50
SGFuZGxlciogZXZlbnRIYW5kbGVyLCBib29sIGhhbmRsZWQpCit7CisgICAgbV9ldmVudEhhbmRs
ZXIgPSBldmVudEhhbmRsZXI7CisgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4m
IHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBvaW50cy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmIHAgPSBwb2ludHNbaV07CisgICAgICAgIHVwZGF0ZVZhbHVlcyhldmVudC50aW1lc3RhbXAo
KSwgcCk7CisKKyAgICAgICAgR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1
bmN0aW9ucy5nZXQoaGFzaChtX3N0YXRlLCBwLmlkKCksIHAuc3RhdGUoKSwgaGFuZGxlZCkpOwor
ICAgICAgICBpZiAoZWYpCisgICAgICAgICAgICBoYW5kbGVkID0gKCplZikodGhpcywgcCk7Cisg
ICAgICAgIC8vIFRoZSBncmFwaCBpcyBzcGFyc2U6IG5vdCBhbGwgZWRnZXMgaGF2ZSBmdW5jdGlv
bnMuICAgICAgICAKKyAgICB9CisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKK3ZvaWQgR2VzdHVy
ZU1hbmFnZXI6OnNjcm9sbFZpYVRvdWNoTW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYg
dHApCit7CisgICAgZmxvYXQgZGVsdGFYKHRwLnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0
aW9uLngoKSk7CisgICAgZmxvYXQgZGVsdGFZKHRwLnBvcygpLnkoKSAtIG1fZmlyc3RUb3VjaFBv
c2l0aW9uLnkoKSk7CisgICAgCisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVs
RXZlbnQodHAucG9zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHAuc2NyZWVuUG9zKCksICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbHRhWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWx0YVksICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWx0YVggLyBzdGF0aWNfY2FzdDxmbG9hdD4oMTIwKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
MTIwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JvbGxC
eVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgbV9ldmVu
dEhhbmRsZXItPmhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CisgICAgbV9m
aXJzdFRvdWNoUG9zaXRpb24gPSB0cC5wb3MoKTsKK30KKwordm9pZCBHZXN0dXJlTWFuYWdlcjo6
dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJsZSB0b3VjaFRpbWUsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgdHApCit7CisgICAgaWYgKHN0YXRlKCkgPT0gTm9HZXN0dXJlKSB7CisgICAgICAgIG1f
Zmlyc3RUb3VjaFRpbWUgPSB0b3VjaFRpbWU7CisgICAgICAgIG1fdG91Y2hEdXJhdGlvbiA9IDAu
MDsKKyAgICAgICAgbV9maXJzdFRvdWNoUG9zaXRpb24gPSB0cC5wb3MoKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbV90b3VjaER1cmF0aW9uID0gdG91Y2hUaW1lIC0gbV9maXJzdFRvdWNoVGltZTsK
K30KKworLy8gQnVpbGRzIGEgaGFzaC4gSGFzaGVzIGFyZSBhc3NlbWJsZWQgYnkgam9pbmluZyB0
b2dldGhlciBtdWx0aXBsZSBiaXRzLgorLy8gMyBMU0IgYml0cyBmb3IgdGhlIHx0b3VjaFR5cGV8
LgorLy8gMSBiaXQgZm9yIHxoYW5kbGVkfAorLy8gMTIgYml0cyBmb3IgfGlkfAorLy8gMTYgYml0
cyBmb3IgdGhlIHxnZXN0dXJlU3RhdGV8LgordW5zaWduZWQgaW50IEdlc3R1cmVNYW5hZ2VyOjpo
YXNoKFN0YXRlIGdlc3R1cmVTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRl
IHRvdWNoVHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVkKQorewor
ICAgIHJldHVybiAxICsgKCh0b3VjaFR5cGUgJiA3KSB8IChoYW5kbGVkID8gMSA8PCAzIDogMCkg
fCAoKGlkICYgMHhmZmYpIDw8IDQgKSB8IChnZXN0dXJlU3RhdGUgPDwgMTYpKTsKK30KKworLy8K
Ky8vIEVkZ2UgZnVuY3Rpb25zCisvLworc3RhdGljIGJvb2wgdG91Y2hEb3duKEdlc3R1cmVNYW5h
Z2VyKiBnbSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKQoreworICAgIGdtLT5zZXRTdGF0
ZShHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgcmVzZXQoR2VzdHVyZU1hbmFnZXIqIGdtLCBjb25zdCBQbGF0Zm9ybVRv
dWNoUG9pbnQmIHApCit7CisgICAgZ20tPnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1
cmUpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgY2xpY2soR2VzdHVyZU1h
bmFnZXIqIGdtLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApIAoreworICAgIGlmIChnbS0+
aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdtLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSkg
eworICAgICAgICBnbS0+c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVyZSk7CisgICAg
ICAgIGdtLT5kaXNwYXRjaFN5bnRoZXRpY0NsaWNrKHApOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc2V0KGdtLCBwKTsKK30KKworc3RhdGljIGJvb2wgY2xpY2tP
clNjcm9sbChHZXN0dXJlTWFuYWdlciogZ20sIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCkK
K3sKKyAgICBpZiAoZ20tPmlzSW5DbGlja1RpbWVXaW5kb3coKSAmJiBnbS0+aXNJbnNpZGVNYW5o
YXR0YW5TcXVhcmUocCkpIHsKKyAgICAgICAgZ20tPnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpQ
ZW5kaW5nU3ludGhldGljQ2xpY2spOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmIChwLnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkICYm
ICFnbS0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpIHsKKyAgICAgICAgZ20tPnNjcm9sbFZp
YVRvdWNoTW90aW9uKHApOworICAgICAgICBnbS0+c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6OlNj
cm9sbCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBib29sIGluU2Nyb2xsKEdlc3R1cmVNYW5hZ2VyKiBnbSwgY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiBwKQoreworICAgIGdtLT5zY3JvbGxWaWFUb3VjaE1vdGlvbihwKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVG8gY3JlYXRlIGEgcmljaGVyIGdlc3R1cmUgcmVjb2du
aXplciwgaXQgaXMgc3VmZmljaWVudCB0byBtb2RpZnkgdGhpcworLy8gZmFjdG9yeSB0byBhZGQg
YWRkaXRpb25hbCBlZGdlcy4gKFRob3VnaCBhZGRpdGlvbmFsIGVkZ2VzIG1heSByZXF1aXJlCisv
LyBhZGRpdGlvbmFsIHN0YXRlIHRyYWNraW5nLikKK0dlc3R1cmVNYW5hZ2VyKiBjcmVhdGVHZXN0
dXJlTWFuYWdlcigpCit7CisgICAgR2VzdHVyZU1hbmFnZXIqIGdtID0gbmV3IEdlc3R1cmVNYW5h
Z2VyKCk7CisgICAgZ20tPmluaXQoKTsKKyAgICByZXR1cm4gZ207Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZXN0dXJlTWFuYWdlci5oIGIv
V2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZTc3OWE2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9HZXN0dXJl
TWFuYWdlci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
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
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZXN0dXJlTWFuYWdlcl9oCisjZGVm
aW5lIEdlc3R1cmVNYW5hZ2VyX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgor
I2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlc3R1cmVNYW5hZ2VyOworCisvLyBBIEdlc3R1cmVN
YW5hZ2VyIGRldGVjdHMgZ2VzdHVyZXMgb2NjdXJyaW5nIGluIHRoZSB0b3VjaCBldmVudC4KKy8v
IEluIHJlc3BvbnNlIHRvIGEgZ2l2ZW4gdG91Y2ggZXZlbnQsIHRoZSBHZXN0dXJlTWFuYWdlciwg
dXBkYXRlcworLy8gaXRzIGludGVybmFsIHN0YXRlIGFuZCBvcHRpb25hbGx5IGRpc3BhdGNoZXMg
c3ludGhldGljIGV2ZW50cyB0byB0aGUKKy8vIGludm9raW5nIFdlYlZpZXdJbXBsLgorY2xhc3Mg
R2VzdHVyZU1hbmFnZXIgeworcHVibGljOgorIAorICAgIC8vIFRoZSBzdGF0ZXMgb2YgdGhlIGdl
c3R1cmUgbWFuYWdlciBzdGF0ZSBtYWNoaW5lLgorICAgIGVudW0gU3RhdGUgeworICAgICAgTm9H
ZXN0dXJlLAorICAgICAgUGVuZGluZ1N5bnRoZXRpY0NsaWNrLAorICAgICAgU2Nyb2xsCisgICAg
fTsKKyAgICAKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKShH
ZXN0dXJlTWFuYWdlciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworICAgIAorICAgIEdl
c3R1cmVNYW5hZ2VyKCk7CisgICAgdmlydHVhbCB+R2VzdHVyZU1hbmFnZXIoKTsKKyAgCisgICAg
Ly8gQWRkcyBhIG5ldyBlZGdlIGZ1bmN0aW9uIHRvIHRoZSBHZXN0dXJlTWFuYWdlci4gRmlyZXMg
fGZ1bnwgaWYgY3VycmVudCBzdGF0ZQorICAgIC8vIGlzIHxzdGF0ZXwsIG5ldyB8dG91Y2h8IGFy
cml2ZXMgYW5kIGhhbmRsZWQgaXMgc2V0LgorICAgIHZvaWQgYWRkRWRnZUZ1bmN0aW9uKFN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0
aW9uKTsKKyAgCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRpc3BhdGNoIGEgbW91c2VEb3du
L21vdXNlVXAvQ2xpY2sgc2VxdWVuY2UuCisgICAgdm9pZCBkaXNwYXRjaFN5bnRoZXRpY0NsaWNr
KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCk7CisgICAgCisgICAgLy8gQ3JlYXRlcyB0aGUg
Z2VzdHVyYWwgc3RhdGUgbWFjaGluZS4KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOworICAKKyAg
ICAvLyBUcnVlIGlmIHRoZSB0aW1lIHNpbmNlIHRvdWNoRG93biBpcyBsZXNzIHRoYW4gdGhlIG1p
bmltdW0gZm9yCisgICAgLy8gYSBjbGljay4KKyAgICBib29sIGlzSW5DbGlja1RpbWVXaW5kb3co
KTsKKyAgICAKKyAgICAvLyBUcnVlIGZvciBhIHBvaW50IHAgc3RpbGwgaW5zaWRlIHRoZSB0aHJl
c2hvbGRlZCBzcXVhcmUuCisgICAgYm9vbCBpc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmIHApOworICAKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNo
IGV2ZW50IHRoYXQgY291bGQgY29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJlLgorICAg
IC8vIFRha2VzIHRoZSB8ZXZlbnR8IGFuZCB0aGUgfHNvdXJjZXwgdGhhdCBvcmlnaW5hdGVkIGl0
IGFuZCB3aGljaCB3aWxsIGFsc28KKyAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0
ZWQgc3ludGhldGljIGV2ZW50LiBGaW5hbGx5LCB8aGFuZGxlZHwKKyAgICAvLyBzcGVjaWZpZXMg
aWYgdGhlIHxldmVudHwgd2FzIGFjdHVhbGx5IGhhbmRsZWQgZXhwbGljaXRseSBieSBhIFdlYldp
ZGdldC4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmlu
ZyBhIHN5bnRoZXRpYyBldmVudC4KKyAgICBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVy
ZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBFdmVudEhhbmRsZXIqIHNvdXJjZSwg
Ym9vbCBoYW5kbGVkKTsKKyAgCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHNjcm9sbCB0aGUg
c2NyZWVuLgorICAgIHZvaWQgc2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiBwKTsKKyAgICAKKyAgICBpbmxpbmUgdm9pZCBzZXRTdGF0ZShTdGF0ZSBzKQorICAg
IHsKKyAgICAgIG1fc3RhdGUgPSBzOworICAgIH0KKyAgCisgICAgaW5saW5lIFN0YXRlIHN0YXRl
KCkKKyAgICB7CisgICAgICByZXR1cm4gbV9zdGF0ZTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAg
ICAvLyBVcGRhdGUgY29tcHV0ZWQgZ2VzdHVyYWwgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGUgZ2l2
ZW4gZXZlbnQuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZhbHVlcyhkb3VibGUsIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCAmKTsKKworICAgIC8vIE1ha2VzIGFuIGVkZ2UgaWRlbnRpZmllciBp
bnRlZ2VyLgorICAgIHVuc2lnbmVkIGludCBoYXNoKFN0YXRlLCB1bnNpZ25lZCwgUGxhdGZvcm1U
b3VjaFBvaW50OjpTdGF0ZSwgYm9vbCk7CisgIAorICAgIC8vIE1hcCBvZiBlZGdlIGZ1bmN0aW9u
cworICAgIFdURjo6SGFzaE1hcDxpbnQsIEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24+IG1fZWRn
ZUZ1bmN0aW9uczsKKyAgICAKKyAgICAvLyBMb2NhdGlvbiBvZiBmaXJzdCB0b3VjaC4KKyAgICBJ
bnRQb2ludCBtX2ZpcnN0VG91Y2hQb3NpdGlvbjsKKyAgCisgICAgLy8gVGltZSB3aGVuIHRoZSB0
b3VjaCB3ZW50IGRvd24uCisgICAgZG91YmxlIG1fZmlyc3RUb3VjaFRpbWU7CisgICAgCisgICAg
Ly8gR2VzdHVyZU1hbmFnZXIgc3RhdGUuCisgICAgU3RhdGUgbV9zdGF0ZTsKKyAgCisgICAgLy8g
VGltZSB0aGF0IHRoZSB0b3VjaCBoYXMgYmVlbiBkb3duLgorICAgIGRvdWJsZSBtX3RvdWNoRHVy
YXRpb247CisgIAorICAgIC8vIFRoZSBXZWJWaWV3SW1wbCB0aGF0IGludm9rZWQgdGhlIEdlc3R1
cmVNYW5hZ2VyLgorICAgIEV2ZW50SGFuZGxlciogbV9ldmVudEhhbmRsZXI7ICAKK307CisKKy8v
IEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCitHZXN0dXJlTWFuYWdlciogY3Jl
YXRlR2VzdHVyZU1hbmFnZXIoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gR2VzdHVyZU1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVRvdWNoRXZlbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmgKaW5k
ZXggNjk3ODZhOC4uMmM2ODFkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVRvdWNoRXZlbnQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5o
CkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKICAg
ICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQogICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAg
ICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHt9CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUGxh
dGZvcm1Ub3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CkBAIC03NCw2ICs3NSw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9CiAgICAgYm9vbCBz
aGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KICAgICBib29sIG1ldGFLZXko
KSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KKyAgICAKKyAgICAvLyBUaW1lIGluIHNlY29u
ZHMuCisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9
CiAKIHByb3RlY3RlZDoKICAgICBUb3VjaEV2ZW50VHlwZSBtX3R5cGU7CkBAIC04Miw2ICs4Niw3
IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fYWx0S2V5OwogICAgIGJvb2wgbV9zaGlmdEtleTsK
ICAgICBib29sIG1fbWV0YUtleTsKKyAgICBkb3VibGUgbV90aW1lc3RhbXA7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCA2NzQ3MzkyLi4yN2NjNTgxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTg2LDYgKzg2LDMzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgUGxhdGZv
cm1XaGVlbEV2ZW50KEludFBvaW50IHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBkZWx0YVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZWx0YVksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aGVlbFRpY2tzWCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHdoZWVsVGlja3NZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQWNjZXB0ZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHNoaWZ0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBj
dHJsS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbHRLZXksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFLZXkpCisgICAgICAgICAgICA6IG1fcG9zaXRp
b24ocG9zaXRpb24pCisgICAgICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRp
b24pCisgICAgICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKKyAgICAgICAgICAgICwgbV9kZWx0
YVkoZGVsdGFZKQorICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKHdoZWVsVGlja3NYKQorICAg
ICAgICAgICAgLCBtX3doZWVsVGlja3NZKHdoZWVsVGlja3NZKQorICAgICAgICAgICAgLCBtX2dy
YW51bGFyaXR5KGdyYW51bGFyaXR5KQorICAgICAgICAgICAgLCBtX2lzQWNjZXB0ZWQoaXNBY2Nl
cHRlZCkKKyAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgICAgICwg
bV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKKyAgICAg
ICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9IC8v
IFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgogICAgICAgICBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4gY29v
cmRpbmF0ZXMuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9QbGF0Zm9y
bVRvdWNoRXZlbnRBbmRyb2lkLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9QbGF0Zm9y
bVRvdWNoRXZlbnRBbmRyb2lkLmNwcAppbmRleCA4YjNkMjg1Li4yNDYxOTQ4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvUGxhdGZvcm1Ub3VjaEV2ZW50QW5kcm9pZC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3JtVG91Y2hFdmVudEFuZHJvaWQu
Y3BwCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gQW5kcm9pZE1ldGFLZXlTdGF0ZSB7CiBQbGF0Zm9y
bVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBWZWN0b3I8SW50UG9pbnQ+JiB3
aW5kb3dQb2ludHMsIFRvdWNoRXZlbnRUeXBlIHR5cGUsIFBsYXRmb3JtVG91Y2hQb2ludDo6U3Rh
dGUgc3RhdGUsIGludCBtZXRhU3RhdGUpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fbWV0
YUtleShmYWxzZSkKKyAgICAsIG1fdGltZXN0YW1wKDApCiB7CiAgICAgbV90b3VjaFBvaW50cy5y
ZXNlcnZlQ2FwYWNpdHkod2luZG93UG9pbnRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBj
ID0gMDsgYyA8IHdpbmRvd1BvaW50cy5zaXplKCk7IGMrKykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKaW5kZXggMzM4ZTlkNC4uNmQ1NWUzMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAgUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQq
IGV2ZW50KQogICAgIG1fYWx0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2Rp
Zmllcik7CiAgICAgbV9zaGlmdEtleSA9IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRN
b2RpZmllcik7CiAgICAgbV9tZXRhS2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpNZXRh
TW9kaWZpZXIpOworICAgIG1fdGltZXN0YW1wID0gMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YzkwODQ4MC4uODVmYWU2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMTIt
MDIgIHJqa3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDU6IHVuaXQgdGVzdHMgZm9yCisgICAgICAg
IHRoZSBiYXNpYyBHZXN0dXJlTWFuYWdlciBhbmQgYWRkaXRpb24gb2YgdGltZSBzdGFtcHMgaW4g
Y29udmVyc2lvbgorICAgICAgICBmcm9tIFdlYlRvdWNoRXZlbnQgdG8gUGxhdGZvcm1Ub3VjaEV2
ZW50LgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogZmVhdHVyZXMuZ3lwaToK
KyAgICAgICAgKiBwdWJsaWMvV2ViVG91Y2hQb2ludC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJU
b3VjaFBvaW50OjpXZWJUb3VjaFBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiB0ZXN0cy9HZXN0dXJlTWFu
YWdlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVy
ZU1hbmFnZXI6OnRIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1h
bmFnZXI6OmZpcnN0VG91Y2hQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0YWJs
ZUdlc3R1cmVNYW5hZ2VyOjpzZXRUb3VjaER1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OnRvdWNoRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6c2V0Rmlyc3RUb3VjaFRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6Zmlyc3RUb3VjaFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6ZWRnZUZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OnRVcGRhdGVW
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50Ojpz
ZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludDo6c2V0
WSk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQ6OkJ1aWxk
YWJsZVBsYXRmb3JtVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0R2VzdHVyZU1h
bmFnZXI6OlRlc3RHZXN0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0R2VzdHVy
ZU1hbmFnZXI6OlNldFVwKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RHZXN0dXJlTWFuYWdlcjo6
VGVhckRvd24pOgorICAgICAgICAoV2ViQ29yZTo6VEVTVF9GKToKKwogMjAxMC0xMS0zMCAgVmFu
Z2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDAxNmNmMWEuLmVlNTlhMTQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAgJ3dlYmtpdF91bml0
dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0
cy9HZXN0dXJlTWFuYWdlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5n
VXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQktleVBhdGhUZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5n
eXBpCmluZGV4IDAzZTZjZTQuLjA4NWU0ODMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCisrKyBiL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC01NSw2
ICs1NSw3IEBACiAgICAgICAgICdFTkFCTEVfRklMRV9TWVNURU09MScsCiAgICAgICAgICdFTkFC
TEVfRklMVEVSUz0xJywKICAgICAgICAgJ0VOQUJMRV9HRU9MT0NBVElPTj0xJywKKyAgICAgICAg
J0VOQUJMRV9HRVNUVVJFX01BTkFHRVI9MScsCiAgICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNF
PTAnLAogICAgICAgICAnRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MScsCiAgICAgICAgICdFTkFC
TEVfSU5QVVRfU1BFRUNIPTEnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUb3VjaFBvaW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaApp
bmRleCBkZGZhMjZmLi5iMTU4M2U2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlRvdWNoUG9pbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9p
bnQuaApAQCAtMzgsOCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlRv
dWNoUG9pbnQgewogcHVibGljOgorICAgIGVudW0gVG91Y2hJZGVudGlmaWVyIHsKKyAgICAgIEZp
cnN0RmluZ2VyID0gMCwKKyAgICAgIFNlY29uZEZpbmdlciA9IDEsCisgICAgICBUaGlyZEZpbmdl
ciA9IDIsCisgICAgfTsKKwogICAgIFdlYlRvdWNoUG9pbnQoKQotICAgICAgICA6IGlkKDApCisg
ICAgICAgIDogaWQoRmlyc3RGaW5nZXIpCiAgICAgICAgICwgc3RhdGUoU3RhdGVVbmRlZmluZWQp
IHsgfQogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCmluZGV4IDI0ZWIzNzIuLjI0ZWViODggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0yMjEsNiAr
MjIxLDcgQEAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVp
bGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViVG8KICAgICBtX2FsdEtleSA9IGV2ZW50Lm1v
ZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleTsKICAgICBtX3NoaWZ0S2V5ID0gZXZlbnQu
bW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXk7CiAgICAgbV9tZXRhS2V5ID0gZXZl
bnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKKyAgICBtX3RpbWVzdGFtcCA9
IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50
LnRvdWNoUG9pbnRzTGVuZ3RoOyArK2kpCiAgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBs
YXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50c1tpXSkpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR2VzdHVyZU1hbmFnZXJUZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjIyMTdjCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHAKQEAgLTAsMCArMSwyNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
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
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJHZXN0dXJlTWFuYWdlci5oIgorCisj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIEluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6R2VzdHVyZU1hbmFnZXIgeworcHVibGljOgorICAgIGludCB0SGFzaChTdGF0ZSBnZXN0
dXJlU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZCwKKyAgICAgICAgICAg
ICAgICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgdG91Y2hUeXBlLCAKKyAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaGFuZGxlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNoKGdl
c3R1cmVTdGF0ZSwgaWQsIHRvdWNoVHlwZSwgaGFuZGxlZCk7ICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICB9OworICAKKyAgICBJbnRQb2ludCBmaXJzdFRvdWNoUG9zaXRpb24oKSB7IHJldHVy
biBtX2ZpcnN0VG91Y2hQb3NpdGlvbjsgfTsKKyAgICAKKyAgICB2b2lkIHNldFRvdWNoRHVyYXRp
b24oZG91YmxlIHQpIHsgbV90b3VjaER1cmF0aW9uID0gdDsgfTsKKyAgICBkb3VibGUgdG91Y2hE
dXJhdGlvbigpIHsgcmV0dXJuIG1fdG91Y2hEdXJhdGlvbjsgfTsKKyAgCisgICAgdm9pZCBzZXRG
aXJzdFRvdWNoVGltZShkb3VibGUgdCkgeyBtX2ZpcnN0VG91Y2hUaW1lID0gdDsgfTsKKyAgICBk
b3VibGUgZmlyc3RUb3VjaFRpbWUoKSB7IHJldHVybiBtX2ZpcnN0VG91Y2hUaW1lOyB9OworICAg
IAorICAgIEdlc3R1cmVNYW5hZ2VyOjpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVkZ2VGdW5j
dGlvbihpbnQgaGFzaCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2VGdW5jdGlvbnMuZ2V0
KGhhc2gpOworICAgIH07CisgIAorICAgIHZpcnR1YWwgdm9pZCB0VXBkYXRlVmFsdWVzKGRvdWJs
ZSBkLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQgJnApCisgICAgeworICAgICAgICB1cGRhdGVW
YWx1ZXMoZCwgcCk7CisgICAgfTsKK307CisKK2NsYXNzIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQ
b2ludCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVibGljOgorICAg
IEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCgpOworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91
Y2hQb2ludChpbnQgeCwgaW50IHkpOworICAgIAorICAgIHZvaWQgc2V0WChpbnQgeCkKKyAgICB7
CisgICAgICBtX3Bvcy5zZXRYKHgpOworICAgICAgbV9zY3JlZW5Qb3Muc2V0WCh4KTsKKyAgICB9
OworICAgIAorICAgIHZvaWQgc2V0WShpbnQgeSkKKyAgICB7CisgICAgICBtX3Bvcy5zZXRZKHkp
OworICAgICAgbV9zY3JlZW5Qb3Muc2V0WSh5KTsKKyAgICB9OworfTsKKworQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaFBvaW50OjpCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoKQoreworICAgIG1f
aWQgPSAwOworICAgIG1fc3RhdGUgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFy
eTsKKyAgICBtX3BvcyA9IEludFBvaW50KDAsIDApOworICAgIG1fc2NyZWVuUG9zID0gSW50UG9p
bnQoMCwgMCk7Cit9OworCitCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQ6OkJ1aWxkYWJsZVBs
YXRmb3JtVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgbV9pZCA9IDA7CisgICAgbV9z
dGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIG1fcG9zID0g
SW50UG9pbnQoeCwgeSk7CisgICAgbV9zY3JlZW5Qb3MgPSBJbnRQb2ludCh4LCB5KTsKK307CisK
KworY2xhc3MgVGVzdEdlc3R1cmVNYW5hZ2VyIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVi
bGljOgorICAgIFRlc3RHZXN0dXJlTWFuYWdlcigpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyB9Cit9
OworCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCBoYXNoKQoreworICAgIEluc3BlY3RhYmxl
R2VzdHVyZU1hbmFnZXIgdGVzdEdtOworICAgIGNvbnN0IHVuc2lnbmVkIEZpcnN0RmluZ2VyID0g
MDsKKyAgICBjb25zdCB1bnNpZ25lZCBTZWNvbmRGaW5nZXIgPSAxOworCisgICAgQVNTRVJUX0VR
KDAsIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0dXJlLAorICAgICAgICBGaXJz
dEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBmYWxzZSkpOworCisg
ICAgQVNTRVJUX0VRKDggfCAxLCB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVy
ZSwKKyAgICAgICAgRmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2Vk
LCB0cnVlKSk7CisKKyAgICBBU1NFUlRfRVEoMHgxMDAwMCB8IDIsIHRlc3RHbS50SGFzaChHZXN0
dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLAorICAgICAgICBGaXJzdEZpbmdlciwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBmYWxzZSkpOworCisgICAgQVNTRVJUX0VR
KDB4MjAwMDAsIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLAorICAgICAgICBG
aXJzdEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBmYWxzZSkpOwor
CisgICAgQVNTRVJUX0VRKDB4MjAwMDAgfCAxLCB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6
OlNjcm9sbCwKKyAgICAgICAgRmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
cmVzc2VkLCBmYWxzZSkpOworCisgICAgQVNTRVJUX0VRKDB4MjAwMDAgfCAweDEwIHwgOCB8IDEs
CisgICAgICAgIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLCBTZWNvbmRGaW5n
ZXIgfCAweDEwMDAsIAorICAgICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwg
dHJ1ZSkpOworfQorCisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIHN0YXRlKQoreworICAg
IEluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIgdGVzdEdtOworCisgICAgQVNTRVJUX0VRKDAsIHRl
c3RHbS5zdGF0ZSgpKTsKKyAgICB0ZXN0R20uc2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6OlBlbmRp
bmdTeW50aGV0aWNDbGljayk7CisgICAgQVNTRVJUX0VRKEdlc3R1cmVNYW5hZ2VyOjpQZW5kaW5n
U3ludGhldGljQ2xpY2ssIHRlc3RHbS5zdGF0ZSgpKTsKK30KKworCitURVNUX0YoVGVzdEdlc3R1
cmVNYW5hZ2VyLCBpc0luc2lkZU1hbmhhdHRhblNxdWFyZSkKK3sKKyAgICBJbnNwZWN0YWJsZUdl
c3R1cmVNYW5hZ2VyIGdtOworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBwOworCisg
ICAgQVNTRVJUX0VRKDAuMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueCgpKTsKKyAgICBBU1NF
UlRfRVEoMC4wLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55KCkpOworICAKKyAgICBwLnNldFgo
MC4wKTsKKyAgICBwLnNldFkoMTkuOTk5KTsKKyAgICBBU1NFUlRfVFJVRShnbS5pc0luc2lkZU1h
bmhhdHRhblNxdWFyZShwKSk7CisgICAgCisgICAgcC5zZXRYKDE5Ljk5OSk7CisgICAgcC5zZXRZ
KDAuMCk7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOwor
CisgICAgcC5zZXRYKDIwLjApOworICAgIHAuc2V0WSgwLjApOworICAgIEFTU0VSVF9GQUxTRShn
bS5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSk7CisgICAgCisgICAgcC5zZXRYKDAuMCk7Cisg
ICAgcC5zZXRZKDIwLjApOworICAgIEFTU0VSVF9GQUxTRShnbS5pc0luc2lkZU1hbmhhdHRhblNx
dWFyZShwKSk7CisgICAgCisgICAgcC5zZXRYKC0yMC4wKTsKKyAgICBwLnNldFkoMC4wKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOworICAgIAorICAg
IHAuc2V0WCgwLjApOworICAgIHAuc2V0WSgtMjAuMCk7CisgICAgQVNTRVJUX0ZBTFNFKGdtLmlz
SW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKK30KKworVEVTVF9GKFRlc3RHZXN0dXJlTWFuYWdl
ciwgaXNJbkNsaWNrVGltZVdpbmRvdykKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2Vy
IGdtOworICAgIAorICAgIGdtLnNldFRvdWNoRHVyYXRpb24oMC4wKTsKKyAgICBBU1NFUlRfRkFM
U0UoZ20uaXNJbkNsaWNrVGltZVdpbmRvdygpKTsKKyAgICAKKyAgICBnbS5zZXRUb3VjaER1cmF0
aW9uKDAuMDEwMDAxKTsKKyAgICBBU1NFUlRfVFJVRShnbS5pc0luQ2xpY2tUaW1lV2luZG93KCkp
OworICAgIAorICAgIGdtLnNldFRvdWNoRHVyYXRpb24oMC44IC0gLjAwMDAwMDAxKTsKKyAgICBB
U1NFUlRfVFJVRShnbS5pc0luQ2xpY2tUaW1lV2luZG93KCkpOworICAgIAorICAgIGdtLnNldFRv
dWNoRHVyYXRpb24oMC44MDAwMSk7CisgICAgQVNTRVJUX0ZBTFNFKGdtLmlzSW5DbGlja1RpbWVX
aW5kb3coKSk7Cit9CisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIGFkZEVkZ2VGdW5jdGlv
bikKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIGdtOworICAgIGdtLmFkZEVkZ2VG
dW5jdGlvbihHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLCAwLAorICAgICAgICBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUmVsZWFzZWQsIHRydWUsCisgICAgICAgIChHZXN0dXJlTWFuYWdlcjo6R2Vz
dHVyZVRyYW5zaXRpb25GdW5jdGlvbik0MDk2KTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKEdlc3R1
cmVNYW5hZ2VyOjpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKTQwOTYsCisgICAgICAgIGdtLmVk
Z2VGdW5jdGlvbihnbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLAorICAgICAgICAgMCwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCB0cnVlKSkpOworfQorCitURVNUX0Yo
VGVzdEdlc3R1cmVNYW5hZ2VyLCB1cGRhdGVWYWx1ZXMpCit7CisgICAgSW5zcGVjdGFibGVHZXN0
dXJlTWFuYWdlciBnbTsKKworICAgIEFTU0VSVF9FUSgwLjAsIGdtLmZpcnN0VG91Y2hUaW1lKCkp
OworICAgIEFTU0VSVF9FUSgwLjAsIGdtLnRvdWNoRHVyYXRpb24oKSk7CisgICAgQVNTRVJUX0VR
KEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOworCisgICAgQnVpbGRhYmxl
UGxhdGZvcm1Ub3VjaFBvaW50IHAxKDEwLCAxMSk7CisgICAgZ20udFVwZGF0ZVZhbHVlcygxLjEs
IHAxKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoMTAsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLngo
KSk7CisgICAgQVNTRVJUX0VRKDExLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55KCkpOworICAg
IEFTU0VSVF9FUSgxLjEsIGdtLmZpcnN0VG91Y2hUaW1lKCkpOworICAgIEFTU0VSVF9FUSgwLjAs
IGdtLnRvdWNoRHVyYXRpb24oKSk7CisKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQg
cDIoMTMsIDE0KTsKKyAgICBnbS5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRo
ZXRpY0NsaWNrKTsKKyAgICBnbS50VXBkYXRlVmFsdWVzKDIuMCwgcDIpOworICAgICAgICAgICAg
ICAgIAorICAgIEFTU0VSVF9FUSgxMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueCgpKTsKKyAg
ICBBU1NFUlRfRVEoMTEsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLnkoKSk7CisgICAgQVNTRVJU
X0VRKDEuMSwgZ20uZmlyc3RUb3VjaFRpbWUoKSk7CisgICAgQVNTRVJUX0VRKDIuMCAtIDEuMSwg
Z20udG91Y2hEdXJhdGlvbigpKTsKKworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBw
MygyMywgMzQpOworICAgIGdtLnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUpOwor
ICAgIGdtLnRVcGRhdGVWYWx1ZXMoMy4wLCBwMyk7CisgICAgICAgICAgICAgICAgCisgICAgQVNT
RVJUX0VRKDIzLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS54KCkpOworICAgIEFTU0VSVF9FUSgz
NCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueSgpKTsKKyAgICBBU1NFUlRfRVEoMy4wLCBnbS5m
aXJzdFRvdWNoVGltZSgpKTsKKyAgICBBU1NFUlRfRVEoMC4wLCBnbS50b3VjaER1cmF0aW9uKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>
<flag name="commit-queue"
          id="66196"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76273</attachid>
            <date>2010-12-10 15:46:23 -0800</date>
            <delta_ts>2010-12-10 16:18:50 -0800</delta_ts>
            <desc>third proposed patch</desc>
            <filename>patch49345-3.diff</filename>
            <type>text/plain</type>
            <size>45689</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkZDZmZTQ5Li5iM2U0NjcxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMTItMTAgIHJqa3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
bGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2VzdHVyZU1hbmFnZXIgZnJhbWV3b3JrCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMC0xMi0xMCAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKaW5kZXggODdhMTJjYy4uNWU3YWI5YyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKQEAgLTkyMSw2ICs5MjEsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0dFU1RVUkVfTUFOQUdFUikKKyNkZWZpbmUgRU5B
QkxFX0dFU1RVUkVfTUFOQUdFUiAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKQogI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhNDU1YmIyLi5kNDFmNmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMTItMTAgIHJq
a3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIExheW91dCB0ZXN0
cyB0byBzaG93IGNvcnJlY3Qgb3BlcmF0aW9uIG9mIEdlc3R1cmVNYW5hZ2VyIHNhbXBsZSBnZXN0
dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkz
NDUKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0
dXJlLWNsaWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAt
MTItMTAgIEVtaWwgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjhkZWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBiYXNpYyBzaW5nbGUgdG91Y2ggZ2VzdHVyZSBn
ZW5lcmF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworR2VzdHVyZSBtYW5h
Z2VyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2suaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjM4ZGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCkBAIC0wLDAg
KzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5p
ZCA9ICJ0b3VjaHRhcmdldCI7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxl
LmhlaWdodCA9ICIxMDBweCI7CitkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOwor
Cit2YXIgbGFzdEV2ZW50ID0gbnVsbDsKK3ZhciBjbGlja0V2ZW50c1JlY2VpdmVkID0gMDsKK3Zh
ciBFWFBFQ1RFRF9DTElDS19FVkVOVFNfVE9UQUwgPSAzOwordmFyIHRvdWNoRXZlbnRzUmVjZWl2
ZWQgPSAwOwordmFyIGV2ZW50VHlwZXMgPSBbICdtb3VzZWRvd24nLCAnbW91c2V1cCcsICdjbGlj
aycgXTsKKwordmFyIGhhdmVUb3VjaEV2ZW50cyA9IGZhbHNlOworCitmdW5jdGlvbiBnZXN0dXJl
RXZlbnRDYWxsYmFjayhldmVudCkKK3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgIGxhc3RFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2xhc3RFdmVudC50eXBlJywgZXZlbnRUeXBlc1t0b3VjaEV2ZW50c1JlY2VpdmVkXSk7CisgICAg
ICAgIHNob3VsZEJlKCdsYXN0RXZlbnQuY2xpZW50WCcsICcxMCcpOworICAgICAgICBzaG91bGRC
ZSgnbGFzdEV2ZW50LmNsaWVudFknLCAnMTInKTsKKyAgICAgICAgdG91Y2hFdmVudHNSZWNlaXZl
ZCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKGV2ZW50LnR5cGUpOworICAgICAgICBk
ZWJ1ZyhldmVudC5jbGllbnRYKTsKKyAgICAgICAgZGVidWcoZXZlbnQuY2xpZW50WSk7CisgICAg
fQorfQorCitmdW5jdGlvbiBzaW5nbGVUb3VjaFNlcXVlbmNlKCkKK3sKKyAgICBldmVudFNlbmRl
ci5hZGRUb3VjaFBvaW50KDEwLCAxMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOwor
CisgICAgLy8gSW5zZXJ0IHNvbWUgZGVsYXkuIE5COiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gbWlu
Q2xpY2tEb3duVGltZSwKKyAgICAvLyBtYXhDbGlja0Rvd25UaW1lIGZyb20gR2VzdHVyZU1hbmFn
ZXIuY3BwCisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjApOworCisgICAgZXZlbnRTZW5k
ZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30K
KworLy8gRW5kIGJ5IHRpbWVyIHRvIHJ1biBjb3JyZWN0bHkgb24gbm9uLUNocm9taXVtIHBsYXRm
b3Jtcy4KK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgdG91Y2hFdmVudHNSZWNlaXZlZCA8CisgICAgICAgICAgICBFWFBFQ1RFRF9D
TElDS19FVkVOVFNfVE9UQUwpIHsKKyAgICAgICAgZGVidWcoJ0dlc3R1cmUgbWFuYWdlciBub3Qg
aW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKTsKKyAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNl
ZCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZGl2LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7
CitkaXYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFs
c2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBnZXN0dXJlRXZlbnRDYWxsYmFj
aywgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5
LmZpcnN0Q2hpbGQpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBn
ZXN0dXJlIGdlbmVyYXRpb24uIik7CisgICAgbGFzdEV2ZW50ID0gbnVsbDsKKyAgICBpZiAoISFl
dmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmNsZWFy
VG91Y2hQb2ludHMoKTsKKyAgICAgICAgc2luZ2xlVG91Y2hTZXF1ZW5jZSgpOworICAgICAgICBl
bmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KK30gZWxz
ZSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRhcCBv
biB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKQorfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YmJiNjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1RoaXMgdGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2
ZW50cy4gU3F1YXJlIGlzIChtb3N0bHkpIGdyZWVuIG9uIHBhc3MKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0dlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBw
bGF0Zm9ybSBvciBicm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90
b3VjaC1nZXN0dXJlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4wYTA4NzA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDE2OCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3Vj
aHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgcG9zaXRpb246
IHJlbGF0aXZlOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworI21vdmluZ2JveCB7CisgIHdp
ZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsJCQorICB3
b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgb3ZlcmZsb3ct
eDogc2Nyb2xsOworICBkaXNwbGF5OiBibG9jazsKK30KKworI2dyZWVuYm94IHsKKyAgd2lkdGg6
IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFkZGlu
ZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAxMDBweDsK
KyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAwcHg7Cisg
IG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiIG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2
IGlkPSJ0b3VjaHRhcmdldCI+CisgIDxkaXYgaWQ9Im1vdmluZ2JveCI+CisgICAgPHRhYmxlIGJv
cmRlcj0iMCIgY2VsbHNwYWNpbmc9IjBweCI+CisgICAgICA8dHI+CisgICAgICAgIDx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+
PC9kaXY+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgICA8dHI+CisgICAgICAgIDx0ZD48ZGl2IGlk
PSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48
L2Rpdj48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3RhYmxlPgorICA8L2Rpdj4KKzwvZGl2Pgor
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgbW92aW5nZGl2OwordmFyIEVYUEVD
VEVEX1NDUk9MTFNfVE9UQUwgPSAyOwordmFyIHNjcm9sbHNPY2N1cnJlZCA9IDA7Cit2YXIgc2Ny
b2xsQW1vdW50WCA9IFsnOTAnLCAnOTAnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzk1
J107CisKK2Z1bmN0aW9uIGNoZWNrU2Nyb2xsT2Zmc2V0KCkKK3sKKyAgICBtb3ZpbmdkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW92aW5nYm94Jyk7CisgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICBzaG91bGRCZSgnbW92aW5nZGl2LnNjcm9sbFRvcCcsIHNjcm9s
bEFtb3VudFlbc2Nyb2xsc09jY3VycmVkXSk7CisgICAgICAgIHNob3VsZEJlKCdtb3ZpbmdkaXYu
c2Nyb2xsTGVmdCcsIHNjcm9sbEFtb3VudFhbc2Nyb2xsc09jY3VycmVkXSk7CisgICAgICAgIHNj
cm9sbHNPY2N1cnJlZCsrOworICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgc2Nyb2xsc09jY3VycmVkID09IEVYUEVDVEVEX1NDUk9MTFNfVE9UQUwpIHsKKyAg
ICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlJ3ZlIHBhc3NlZC4KKyAgICAgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICBzZWNvbmRUb3VjaERyYWdTZXF1ZW5jZSgpOyAgICAKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGZpbmdlclVwKGV2ZW50KQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgZGVidWcoJ21vdmVkOiAnICsgZXZlbnQuY3VycmVudFRhcmdldC5zY3JvbGxUb3Ag
KyAnLCAnICsgZXZlbnQuY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0KTsKKyAgICByZXR1cm4gdHJ1
ZTsgIC8vIFdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgorfQorCitmdW5jdGlvbiBmaXJzdFRv
dWNoRHJhZ1NlcXVlbmNlKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2
ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBv
aW50KDk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgLy8gU2Ny
b2xsIHRoZSBkaXYgdG8gdGhlIGxlZnQuCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2lu
dCgwLCA1LCAxMik7ICAgIAorICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworICAgIAorICAg
IGV2ZW50U2VuZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNo
RW5kKCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQo
KTsKK30KKworZnVuY3Rpb24gc2Vjb25kVG91Y2hEcmFnU2VxdWVuY2UoKQoreworICAgIGRlYnVn
KCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsK
KyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDEyLCA5Nyk7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hTdGFydCgpOworICAgIAorICAgIC8vIFNjcm9sbCB0aGUgcmVjdGFuZ2xlIGRvd24uCisg
ICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAxMiwgMik7ICAgIAorICAgIGV2ZW50
U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQo
MCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKyAgICAKKyAgICAvLyBXYWl0IGZvciBs
YXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworZnVuY3Rpb24gZXhpdElmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRlZCBv
biB0aGlzIHBsYXRmb3JtIG9yIGJyb2tlbicpOworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICB2YXIgbW92aW5nZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21v
dmluZ2JveCcpOworICAgIAorICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRv
dWNoIGV2ZW50cy4gJyArCisgICAgICAgICAgICAnU3F1YXJlIGlzIChtb3N0bHkpIGdyZWVuIG9u
IHBhc3MnKTsKKworICAgICAgICBpZiAoZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cykgewor
ICAgICAgICAgICAgZmlyc3RUb3VjaERyYWdTZXF1ZW5jZSgpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZXhpdElmTmVjZXNzYXJ5KCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVG91Y2gg
c2Nyb2xsIHRoZSByZWQgcmVjdCB0byBsb2cuIik7CisgICAgICAgIG1vdmluZ2Rpdi5hZGRFdmVu
dExpc3RlbmVyKCd0b3VjaGVuZCcsIGZpbmdlclVwLCBmYWxzZSk7CisgICAgfQorfQorPC9zY3Jp
cHQ+CisKKworCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmI0NjJiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBn
ZXN0dXJlIGdlbmVyYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGxhc3RFdmVudC50eXBlIGlzICJtb3VzZWRvd24iCitQQVNTIGxhc3RFdmVudC5jbGllbnRYIGlz
IDEwCitQQVNTIGxhc3RFdmVudC5jbGllbnRZIGlzIDEyCitQQVNTIGxhc3RFdmVudC50eXBlIGlz
ICJtb3VzZXVwIgorUEFTUyBsYXN0RXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQu
Y2xpZW50WSBpcyAxMgorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAiY2xpY2siCitQQVNTIGxhc3RF
dmVudC5jbGllbnRYIGlzIDEwCitQQVNTIGxhc3RFdmVudC5jbGllbnRZIGlzIDEyCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTI2Nzk5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2Vz
dHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgc2Ny
b2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2ZW50cy4gU3F1YXJlIGlzIChtb3N0
bHkpIGdyZWVuIG9uIHBhc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2ZpcnN0
IGdlc3R1cmUKK1BBU1MgbW92aW5nZGl2LnNjcm9sbFRvcCBpcyAwCitQQVNTIG1vdmluZ2Rpdi5z
Y3JvbGxMZWZ0IGlzIDkwCitzZWNvbmQgZ2VzdHVyZQorUEFTUyBtb3ZpbmdkaXYuc2Nyb2xsVG9w
IGlzIDk1CitQQVNTIG1vdmluZ2Rpdi5zY3JvbGxMZWZ0IGlzIDkwCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNmYmNkMy4uOTI0ODdiZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MCBAQAorMjAxMC0xMi0wOCAgcmprcm9lZ2VAY2hyb21pdW0ub3JnICA8cmprcm9lZ2VAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1
OiBhZGRlZCBhIGJhc2ljCisgICAgICAgIEdlc3R1cmVNYW5hZ2VyIGZyYW1ld29yayB3aXRoIHR3
byBzYW1wbGUgZ2VzdHVyZXMgKGNsaWNrIGFuZCBzY3JvbGwpLgorICAgICAgICAKKyAgICAgICAg
QWxzbywgYWRkZWQgdGltZSBzdGFtcHMgdG8gUGxhdGZvcm1Ub3VjaEV2ZW50IHRvIHBlcm1pdCBu
b24tZmxha3kKKyAgICAgICAgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Z2VzdHVyZU1hbmFnZXIpOgorICAgICAgICAq
IHBhZ2UvR2VzdHVyZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1
cmVNYW5hZ2VyOjpHZXN0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFu
YWdlcjo6fkdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2Vy
OjphZGRFZGdlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6Omlz
SW5DbGlja1RpbWVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6Omlz
SW5zaWRlTWFuaGF0dGFuU3F1YXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2Vy
OjpkaXNwYXRjaFN5bnRoZXRpY0NsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5h
Z2VyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjpwcm9jZXNzVG91
Y2hFdmVudEZvckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OnNj
cm9sbFZpYVRvdWNoTW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjp1
cGRhdGVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6dG91Y2hEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNsaWNrT3JTY3Jv
bGwpOgorICAgICAgICAoV2ViQ29yZTo6aW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlR2VzdHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBhZ2UvR2VzdHVyZU1hbmFnZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6c2V0U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OnN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVu
dDo6UGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hF
dmVudDo6dGltZXN0YW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3JtVG91Y2hFdmVudEFuZHJv
aWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRv
dWNoRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudDo6UGxhdGZvcm1Ub3VjaEV2
ZW50KToKKwogMjAxMC0xMi0xMCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDBmN2M3ZGIuLjRiYjUx
ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yMzAxLDYgKzIzMDEsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRp
b25Qb3NpdGlvbkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGUuaCcsCiAgICAgICAgICAgICAncGFnZS9HZW9wb3NpdGlvbi5oJywKKyAgICAgICAg
ICAgICdwYWdlL0dlc3R1cmVNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAncGFnZS9HZXN0dXJl
TWFuYWdlci5oJywKICAgICAgICAgICAgICdwYWdlL0dyb3VwU2V0dGluZ3MuY3BwJywKICAgICAg
ICAgICAgICdwYWdlL0dyb3VwU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAncGFnZS9IYWx0YWJs
ZVBsdWdpbi5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTc2Nzg0OS4uZjFlMDM3MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKQEAgLTg4LDYgKzg4LDEwIEBACiAjaW5jbHVkZSAiVG91Y2hFdmVu
dC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorI2luY2x1ZGUgIkdl
c3R1cmVNYW5hZ2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTk1LDYgKzE5OSw5IEBAIEV2ZW50SGFuZGxlcjo6RXZl
bnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwg
bV90b3VjaFByZXNzZWQoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VS
KQorICAgICwgbV9nZXN0dXJlTWFuYWdlcihjcmVhdGVHZXN0dXJlTWFuYWdlcigpKQorI2VuZGlm
CiB7CiB9CiAKQEAgLTI5NzgsNiArMjk4NSwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
VG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICBkZWZh
dWx0UHJldmVudGVkIHw9IG1vdmVFdi0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIH0KIAorI2lm
IEVOQUJMRShHRVNUVVJFX01BTkFHRVIpCisgICAgbV9nZXN0dXJlTWFuYWdlci0+cHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKKyNlbmRp
ZgorCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAppbmRleCBjYTE5YTBjLi5hMTY2ODhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoX19PQkpDX18pCkBA
IC03OCw2ICs3OSwxMCBAQCBleHRlcm4gY29uc3QgaW50IFRleHREcmFnSHlzdGVyZXNpczsKIGV4
dGVybiBjb25zdCBpbnQgR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorY2xhc3MgR2VzdHVy
ZU1hbmFnZXI7CisjZW5kaWYKKwogZW51bSBIaXRUZXN0U2Nyb2xsYmFycyB7IFNob3VsZEhpdFRl
c3RTY3JvbGxiYXJzLCBEb250SGl0VGVzdFNjcm9sbGJhcnMgfTsKIAogY2xhc3MgRXZlbnRIYW5k
bGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTIxNCw2ICsyMTksMTAgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKKyAgICBHZXN0dXJlTWFuYWdlciog
Z2VzdHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX2dlc3R1cmVNYW5hZ2VyLmdldCgpOyB9
CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGVudW0g
RHJhZ0FuZERyb3BIYW5kbGVUeXBlIHsKQEAgLTQzNSw2ICs0NDQsOSBAQCBwcml2YXRlOgogICAg
IFRvdWNoVGFyZ2V0TWFwIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKICAgICBib29s
IG1fdG91Y2hQcmVzc2VkOwogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKKyAg
ICBPd25QdHI8R2VzdHVyZU1hbmFnZXI+IG1fZ2VzdHVyZU1hbmFnZXI7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZXN0dXJl
TWFuYWdlci5jcHAgYi9XZWJDb3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3Y2UxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjE5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdlc3R1cmVNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJFdmVudEhh
bmRsZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVdoZWVsRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBFZGdlIGZ1bmN0
aW9ucy4KK3N0YXRpYyBib29sIGNsaWNrKEdlc3R1cmVNYW5hZ2VyKiwgY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50Jik7CitzdGF0aWMgYm9vbCBjbGlja09yU2Nyb2xsKEdlc3R1cmVNYW5hZ2VyKiwg
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CitzdGF0aWMgYm9vbCBpblNjcm9sbChHZXN0dXJl
TWFuYWdlciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworc3RhdGljIGJvb2wgcmVzZXQo
R2VzdHVyZU1hbmFnZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKK3N0YXRpYyBib29s
IHRvdWNoRG93bihHZXN0dXJlTWFuYWdlciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwor
CisvLyBGSVhNRTogTWFrZSB0aGVzZSBjb25maWd1cmFibGUgcHJvZ3JhbW1hdGljYWxseS4KKy8v
IE1heGltdW0gaG9sZCBkb3duIChzKSBmb3IgYSB0b3VjaCB0byBiZSB0cmVhdGVkIGFzIGEgY2xp
Y2suCitzdGF0aWMgY29uc3QgZG91YmxlIG1heENsaWNrRG93blRpbWUgPSAwLjg7CisKKy8vIE1p
bmltdW0gaG9sZCBkb3duIChzKSBmb3IgYSB0b3VjaCB0byBiZSB0cmVhdGVkIGFzIGEgY2xpY2su
CitzdGF0aWMgY29uc3QgZG91YmxlIG1pbkNsaWNrRG93blRpbWUgPSAwLjAxOworCisvLyBNYXhp
bXVtIG1hbmhhdHRhbiBkaXNwbGFjZW1lbnQgZm9yIHRvdWNoIG1vdGlvbiB0bworLy8gc3RpbGwg
YmUgY29uc2lkZXJlZCBhcyBhIGNsaWNrLgorc3RhdGljIGNvbnN0IGludCBtYXhNYW5oYXR0YW5E
aXN0YW5jZSA9IDIwOworCitHZXN0dXJlTWFuYWdlcjo6R2VzdHVyZU1hbmFnZXIoKQorICAgIDog
bV9maXJzdFRvdWNoVGltZSgwLjApCisgICAgLCBtX3N0YXRlKEdlc3R1cmVNYW5hZ2VyOjpOb0dl
c3R1cmUpCisgICAgLCBtX2xhc3RUb3VjaFRpbWUoMC4wKQorICAgICwgbV9ldmVudEhhbmRsZXIo
MCkKK3sKK30KKworR2VzdHVyZU1hbmFnZXI6On5HZXN0dXJlTWFuYWdlcigpCit7Cit9CisKK3Zv
aWQgR2VzdHVyZU1hbmFnZXI6OmFkZEVkZ2VGdW5jdGlvbihTdGF0ZSBzdGF0ZSwgdW5zaWduZWQg
ZmluZ2VyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHRvdWNoVHlwZSwgYm9vbCBoYW5kbGVk
LCBHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGYpCit7CisgICAgbV9lZGdlRnVuY3Rpb25zLmFk
ZChoYXNoKHN0YXRlLCBmaW5nZXIsIHRvdWNoVHlwZSwgaGFuZGxlZCksIGYpOworfQorCitib29s
IEdlc3R1cmVNYW5hZ2VyOjppc0luQ2xpY2tUaW1lV2luZG93KCkKK3sKKyAgICBkb3VibGUgZHVy
YXRpb24obV9sYXN0VG91Y2hUaW1lIC0gbV9maXJzdFRvdWNoVGltZSk7CisgICAgcmV0dXJuIGR1
cmF0aW9uID49IG1pbkNsaWNrRG93blRpbWUgJiYgZHVyYXRpb24gPCBtYXhDbGlja0Rvd25UaW1l
OworfQorCitib29sIEdlc3R1cmVNYW5hZ2VyOjppc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApCit7CisgICAgaW50IG1hbmhhdHRhbkRpc3RhbmNlID0g
YWJzKHAucG9zKCkueCgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueCgpKSArCisgICAgICAgIGFi
cyhwLnBvcygpLnkoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLnkoKSk7CisgICAgcmV0dXJuIG1h
bmhhdHRhbkRpc3RhbmNlIDwgbWF4TWFuaGF0dGFuRGlzdGFuY2U7Cit9CisKK3ZvaWQgR2VzdHVy
ZU1hbmFnZXI6OmRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiBwKQoreworICAgIC8vIE5COiBzeW50aGV0aWMgZXZlbnRzIGFyZSBub3QgZGVsaXZlcmVkIHRv
IHBsdWctaW5zLgorICAgIC8vIE5COiB0b3VjaC1iYXNlZCBVWCBuZWVkcyBjdXN0b20gcG9wdXAg
Y29tcG9uZW50cy4KKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihwLnBvcygp
LCBwLnNjcmVlblBvcygpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1fbGFzdFRvdWNoVGltZSk7CisgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGZha2VNb3VzZVVwKHAucG9zKCksIHAuc2NyZWVuUG9zKCksIExlZnRCdXR0b24sIE1v
dXNlRXZlbnRSZWxlYXNlZCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1fbGFzdFRv
dWNoVGltZSk7CisKKyAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGZh
a2VNb3VzZURvd24pOworICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChmYWtlTW91c2VVcCk7Cit9CisKK3ZvaWQgR2VzdHVyZU1hbmFnZXI6OmluaXQoKQoreworICAg
IGNvbnN0IHVuc2lnbmVkIEZpcnN0RmluZ2VyID0gMDsKKyAgICBjb25zdCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlN0YXRlIFJlbGVhc2VkID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2Vk
OworICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgUHJlc3NlZCA9IFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOworICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6
U3RhdGUgTW92ZWQgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBTdGF0aW9uYXJ5ID0gUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFN0YXRpb25hcnk7CisgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBD
YW5jZWxsZWQgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOworCisgICAgYWRk
RWRnZUZ1bmN0aW9uKE5vR2VzdHVyZSwgRmlyc3RGaW5nZXIsIFByZXNzZWQsIGZhbHNlLCB0b3Vj
aERvd24pOworICAgIGFkZEVkZ2VGdW5jdGlvbihQZW5kaW5nU3ludGhldGljQ2xpY2ssIEZpcnN0
RmluZ2VyLCBDYW5jZWxsZWQsIGZhbHNlLCByZXNldCk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFBl
bmRpbmdTeW50aGV0aWNDbGljaywgRmlyc3RGaW5nZXIsIFJlbGVhc2VkLCBmYWxzZSwgY2xpY2sp
OworICAgIGFkZEVkZ2VGdW5jdGlvbihQZW5kaW5nU3ludGhldGljQ2xpY2ssIEZpcnN0RmluZ2Vy
LCBNb3ZlZCwgZmFsc2UsIGNsaWNrT3JTY3JvbGwpOworICAgIGFkZEVkZ2VGdW5jdGlvbihQZW5k
aW5nU3ludGhldGljQ2xpY2ssIEZpcnN0RmluZ2VyLCBTdGF0aW9uYXJ5LCBmYWxzZSwgY2xpY2tP
clNjcm9sbCk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFNjcm9sbCwgRmlyc3RGaW5nZXIsIE1vdmVk
LCBmYWxzZSwgaW5TY3JvbGwpOworICAgIGFkZEVkZ2VGdW5jdGlvbihTY3JvbGwsIEZpcnN0Rmlu
Z2VyLCBSZWxlYXNlZCwgZmFsc2UsIHJlc2V0KTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oU2Nyb2xs
LCBGaXJzdEZpbmdlciwgQ2FuY2VsbGVkLCBmYWxzZSwgcmVzZXQpOworfQorCitib29sIEdlc3R1
cmVNYW5hZ2VyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3Vj
aEV2ZW50JiBldmVudCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wgaGFuZGxlZCkK
K3sKKyAgICBtX2V2ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlcjsKKyAgICBjb25zdCBWZWN0b3I8
UGxhdGZvcm1Ub3VjaFBvaW50PiYgcG9pbnRzID0gZXZlbnQudG91Y2hQb2ludHMoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCA9IHBvaW50c1tpXTsKKyAgICAgICAgdXBkYXRlVmFs
dWVzKGV2ZW50LnRpbWVzdGFtcCgpLCBwKTsKKworICAgICAgICBpZiAoR2VzdHVyZVRyYW5zaXRp
b25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoaGFzaChtX3N0YXRlLCBwLmlkKCks
IHAuc3RhdGUoKSwgaGFuZGxlZCkpKQorICAgICAgICAgICAgaGFuZGxlZCA9ICgqZWYpKHRoaXMs
IHApOworICAgICAgICAvLyBUaGUgZ3JhcGggaXMgc3BhcnNlOiBub3QgYWxsIGVkZ2VzIGhhdmUg
ZnVuY3Rpb25zLiAgICAgICAgCisgICAgfQorICAgIHJldHVybiBoYW5kbGVkOworfQorCit2b2lk
IEdlc3R1cmVNYW5hZ2VyOjpzY3JvbGxWaWFUb3VjaE1vdGlvbihjb25zdCBQbGF0Zm9ybVRvdWNo
UG9pbnQmIHRwKQoreworICAgIGZsb2F0IGRlbHRhWCh0cC5wb3MoKS54KCkgLSBtX2ZpcnN0VG91
Y2hQb3NpdGlvbi54KCkpOworICAgIGZsb2F0IGRlbHRhWSh0cC5wb3MoKS55KCkgLSBtX2ZpcnN0
VG91Y2hQb3NpdGlvbi55KCkpOworICAgIAorICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0
aWNXaGVlbEV2ZW50KHRwLnBvcygpLCB0cC5zY3JlZW5Qb3MoKSwgZGVsdGFYLCBkZWx0YVksIGRl
bHRhWCAvIHN0YXRpY19jYXN0PGZsb2F0PigxMjApLCBkZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4oMTIwKSwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7CisgICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZVdoZWVsRXZlbnQoc3ludGhl
dGljV2hlZWxFdmVudCk7CisgICAgbV9maXJzdFRvdWNoUG9zaXRpb24gPSB0cC5wb3MoKTsKK30K
Kwordm9pZCBHZXN0dXJlTWFuYWdlcjo6dXBkYXRlVmFsdWVzKGNvbnN0IGRvdWJsZSB0b3VjaFRp
bWUsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdHApCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
Tm9HZXN0dXJlKSB7CisgICAgICAgIG1fZmlyc3RUb3VjaFRpbWUgPSB0b3VjaFRpbWU7CisgICAg
ICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKKyAgICAgICAgbV9maXJzdFRvdWNoUG9zaXRpb24g
PSB0cC5wb3MoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9sYXN0VG91Y2hUaW1lID0gdG91Y2hU
aW1lOworfQorCisvLyBCdWlsZHMgYSBoYXNoLiBIYXNoZXMgYXJlIGFzc2VtYmxlZCBieSBqb2lu
aW5nIHRvZ2V0aGVyIG11bHRpcGxlIGJpdHMuCisvLyAzIExTQiBiaXRzIGZvciB0aGUgfHRvdWNo
VHlwZXwuCisvLyAxIGJpdCBmb3IgfGhhbmRsZWR8CisvLyAxMiBiaXRzIGZvciB8aWR8CisvLyAx
NiBiaXRzIGZvciB0aGUgfGdlc3R1cmVTdGF0ZXwuCit1bnNpZ25lZCBpbnQgR2VzdHVyZU1hbmFn
ZXI6Omhhc2goU3RhdGUgZ2VzdHVyZVN0YXRlLCB1bnNpZ25lZCBpZCwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpTdGF0ZSB0b3VjaFR5cGUsIGJvb2wgaGFuZGxlZCkKK3sKKyAgICByZXR1cm4gMSArICgo
dG91Y2hUeXBlICYgNykgfCAoaGFuZGxlZCA/IDEgPDwgMyA6IDApIHwgKChpZCAmIDB4ZmZmKSA8
PCA0ICkgfCAoZ2VzdHVyZVN0YXRlIDw8IDE2KSk7Cit9CisKKy8vCisvLyBFZGdlIGZ1bmN0aW9u
cworLy8KK3N0YXRpYyBib29sIHRvdWNoRG93bihHZXN0dXJlTWFuYWdlciogZ20sIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYgcCkKK3sKKyAgICBnbS0+c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6
OlBlbmRpbmdTeW50aGV0aWNDbGljayk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIHJl
c2V0KEdlc3R1cmVNYW5hZ2VyKiBnbSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKQorewor
ICAgIGdtLT5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0dXJlKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGNsaWNrKEdlc3R1cmVNYW5hZ2VyKiBnbSwgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiBwKSAKK3sKKyAgICBpZiAoZ20tPmlzSW5DbGlja1RpbWVXaW5k
b3coKSAmJiBnbS0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpIHsKKyAgICAgICAgZ20tPnNl
dFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUpOworICAgICAgICBnbS0+ZGlzcGF0Y2hT
eW50aGV0aWNDbGljayhwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biByZXNldChnbSwgcCk7Cit9CisKK3N0YXRpYyBib29sIGNsaWNrT3JTY3JvbGwoR2VzdHVyZU1h
bmFnZXIqIGdtLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApCit7CisgICAgaWYgKGdtLT5p
c0luQ2xpY2tUaW1lV2luZG93KCkgJiYgZ20tPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKSB7
CisgICAgICAgIGdtLT5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0Ns
aWNrKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAocC5zdGF0
ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCAmJiAhZ20tPmlzSW5zaWRlTWFu
aGF0dGFuU3F1YXJlKHApKSB7CisgICAgICAgIGdtLT5zY3JvbGxWaWFUb3VjaE1vdGlvbihwKTsK
KyAgICAgICAgZ20tPnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpTY3JvbGwpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBp
blNjcm9sbChHZXN0dXJlTWFuYWdlciogZ20sIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCkK
K3sKKyAgICBnbS0+c2Nyb2xsVmlhVG91Y2hNb3Rpb24ocCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIFRvIGNyZWF0ZSBhIHJpY2hlciBnZXN0dXJlIHJlY29nbml6ZXIsIGl0IGlzIHN1ZmZp
Y2llbnQgdG8gbW9kaWZ5IHRoaXMKKy8vIGZhY3RvcnkgdG8gYWRkIGFkZGl0aW9uYWwgZWRnZXMu
IChUaG91Z2ggYWRkaXRpb25hbCBlZGdlcyBtYXkgcmVxdWlyZQorLy8gYWRkaXRpb25hbCBzdGF0
ZSB0cmFja2luZy4pCitHZXN0dXJlTWFuYWdlciogY3JlYXRlR2VzdHVyZU1hbmFnZXIoKQorewor
ICAgIEdlc3R1cmVNYW5hZ2VyKiBnbSA9IG5ldyBHZXN0dXJlTWFuYWdlcigpOworICAgIGdtLT5p
bml0KCk7CisgICAgcmV0dXJuIGdtOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIuaCBiL1dlYkNvcmUvcGFnZS9HZXN0
dXJlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYmJmYmIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIuaApAQCAtMCww
ICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgR2VzdHVyZU1hbmFnZXJfaAorI2RlZmluZSBHZXN0dXJlTWFuYWdl
cl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaEV2
ZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHZXN0dXJlTWFuYWdlcjsKKworLy8gQSBHZXN0dXJlTWFuYWdlciBkZXRlY3RzIGdl
c3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBh
IGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2VzdHVyZU1hbmFnZXIsIHVwZGF0ZXMKKy8vIGl0cyBp
bnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMg
dG8gdGhlCisvLyBpbnZva2luZyBXZWJWaWV3SW1wbC4KK2NsYXNzIEdlc3R1cmVNYW5hZ2VyIHsK
K3B1YmxpYzoKKyAKKyAgICAvLyBUaGUgc3RhdGVzIG9mIHRoZSBnZXN0dXJlIG1hbmFnZXIgc3Rh
dGUgbWFjaGluZS4KKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgIE5vR2VzdHVyZSwKKyAgICAgIFBl
bmRpbmdTeW50aGV0aWNDbGljaywKKyAgICAgIFNjcm9sbAorICAgIH07CisgICAgCisgICAgdHlw
ZWRlZiBib29sICgqR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbikoR2VzdHVyZU1hbmFnZXIqLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKyAgICAKKyAgICBHZXN0dXJlTWFuYWdlcigpOwor
ICAgIHZpcnR1YWwgfkdlc3R1cmVNYW5hZ2VyKCk7CisgIAorICAgIC8vIEFkZHMgYSBuZXcgZWRn
ZSBmdW5jdGlvbiB0byB0aGUgR2VzdHVyZU1hbmFnZXIuIEZpcmVzIHxmdW58IGlmIGN1cnJlbnQg
c3RhdGUgaXMgfHN0YXRlfCwgbmV3IHx0b3VjaHwgYXJyaXZlcyBhbmQgaGFuZGxlZCBpcyBzZXQu
CisgICAgdm9pZCBhZGRFZGdlRnVuY3Rpb24oU3RhdGUgc3RhdGUsIHVuc2lnbmVkIGZpbmdlciwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSB0b3VjaFR5cGUsIGJvb2wgaGFuZGxlZCwgR2VzdHVy
ZVRyYW5zaXRpb25GdW5jdGlvbiBmKTsKKyAgCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRp
c3BhdGNoIGEgbW91c2VEb3duL21vdXNlVXAvQ2xpY2sgc2VxdWVuY2UuCisgICAgdm9pZCBkaXNw
YXRjaFN5bnRoZXRpY0NsaWNrKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCk7CisgICAgCisg
ICAgLy8gQ3JlYXRlcyB0aGUgZ2VzdHVyYWwgc3RhdGUgbWFjaGluZS4KKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdCgpOworICAKKyAgICAvLyBUcnVlIGlmIHRoZSB0aW1lIHNpbmNlIHRvdWNoRG93biBp
cyBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZm9yIGEgY2xpY2suCisgICAgYm9vbCBpc0luQ2xpY2tU
aW1lV2luZG93KCk7CisgICAgCisgICAgLy8gVHJ1ZSBmb3IgYSBwb2ludCBwIHN0aWxsIGluc2lk
ZSB0aGUgdGhyZXNob2xkZWQgc3F1YXJlLgorICAgIGJvb2wgaXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKTsKKyAgCisgICAgLy8gSW52b2tlZCBmb3Ig
ZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNvbnRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZ2Vz
dHVyZS4KKyAgICAvLyBUYWtlcyB0aGUgfGV2ZW50fCBhbmQgdGhlIHxzb3VyY2V8IHRoYXQgb3Jp
Z2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBhbHNvCisgICAgLy8gYmUgdGhlIHRhcmdldCBvZiBh
bnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVudC4gRmluYWxseSwgfGhhbmRsZWR8CisgICAgLy8g
c3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdhcyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxzb3VyY2V8
LgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEg
c3ludGhldGljIGV2ZW50LgorICAgIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIEV2ZW50SGFuZGxlciogc291cmNlLCBib29s
IGhhbmRsZWQpOworICAKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gc2Nyb2xsIHRoZSBzY3Jl
ZW4uCisgICAgdm9pZCBzY3JvbGxWaWFUb3VjaE1vdGlvbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmIHApOworICAgIAorICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgcykgeyBtX3N0YXRlID0gczsg
fQorICAgIFN0YXRlIHN0YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgLy8gVXBkYXRlIGNvbXB1dGVkIGdlc3R1cmFsIHBhcmFtZXRlcnMgYmFzZWQgb24gdGhlIGdp
dmVuIGV2ZW50LgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWYWx1ZXMoZG91YmxlLCBjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQgJik7CisKKyAgICAvLyBNYWtlcyBhbiBlZGdlIGlkZW50aWZpZXIg
aW50ZWdlci4KKyAgICB1bnNpZ25lZCBpbnQgaGFzaChTdGF0ZSwgdW5zaWduZWQsIFBsYXRmb3Jt
VG91Y2hQb2ludDo6U3RhdGUsIGJvb2wpOworICAKKyAgICAvLyBNYXAgb2YgZWRnZSBmdW5jdGlv
bnMKKyAgICBXVEY6Okhhc2hNYXA8aW50LCBHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uPiBtX2Vk
Z2VGdW5jdGlvbnM7CisgICAgCisgICAgLy8gTG9jYXRpb24gb2YgZmlyc3QgdG91Y2guCisgICAg
SW50UG9pbnQgbV9maXJzdFRvdWNoUG9zaXRpb247CisgIAorICAgIC8vIFRpbWUgd2hlbiB0aGUg
dG91Y2ggd2VudCBkb3duLgorICAgIGRvdWJsZSBtX2ZpcnN0VG91Y2hUaW1lOworICAgIAorICAg
IC8vIEdlc3R1cmVNYW5hZ2VyIHN0YXRlLgorICAgIFN0YXRlIG1fc3RhdGU7CisgIAorICAgIC8v
IFRpbWUgb2YgbW9zdCByZWNlbnQgdG91Y2ggZXZlbnQuCisgICAgZG91YmxlIG1fbGFzdFRvdWNo
VGltZTsKKyAgCisgICAgLy8gVGhlIFdlYlZpZXdJbXBsIHRoYXQgaW52b2tlZCB0aGUgR2VzdHVy
ZU1hbmFnZXIuCisgICAgRXZlbnRIYW5kbGVyKiBtX2V2ZW50SGFuZGxlcjsgIAorfTsKKworLy8g
RmFjdG9yeSBtZXRob2QgZm9yIEdlc3R1cmVNYW5hZ2Vycy4KK0dlc3R1cmVNYW5hZ2VyKiBjcmVh
dGVHZXN0dXJlTWFuYWdlcigpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBHZXN0dXJlTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
VG91Y2hFdmVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAppbmRl
eCA2OTc4NmE4Li4yYzY4MWQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
VG91Y2hFdmVudC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmgK
QEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQogICAg
ICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCiAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAg
ICAgICAsIG1fdGltZXN0YW1wKDApCiAgICAge30KICNpZiBQTEFURk9STShRVCkKICAgICBQbGF0
Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKQEAgLTc0LDYgKzc1LDkgQEAgcHVibGljOgog
ICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KICAgICBib29sIHNo
aWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQogICAgIGJvb2wgbWV0YUtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQorICAgIAorICAgIC8vIFRpbWUgaW4gc2Vjb25k
cy4KKyAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0K
IAogcHJvdGVjdGVkOgogICAgIFRvdWNoRXZlbnRUeXBlIG1fdHlwZTsKQEAgLTgyLDYgKzg2LDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9hbHRLZXk7CiAgICAgYm9vbCBtX3NoaWZ0S2V5Owog
ICAgIGJvb2wgbV9tZXRhS2V5OworICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IDY3NDczOTIuLjI3Y2M1ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtODYsNiArODYsMzMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnQoSW50UG9pbnQgcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IGRlbHRhWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdoZWVsVGlja3NYLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgd2hlZWxUaWNrc1ksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBncmFudWxhcml0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNBY2NlcHRlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc2hpZnRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0
cmxLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsdEtleSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbWV0YUtleSkKKyAgICAgICAgICAgIDogbV9wb3NpdGlv
bihwb3NpdGlvbikKKyAgICAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlv
bikKKyAgICAgICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQorICAgICAgICAgICAgLCBtX2RlbHRh
WShkZWx0YVkpCisgICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1god2hlZWxUaWNrc1gpCisgICAg
ICAgICAgICAsIG1fd2hlZWxUaWNrc1kod2hlZWxUaWNrc1kpCisgICAgICAgICAgICAsIG1fZ3Jh
bnVsYXJpdHkoZ3JhbnVsYXJpdHkpCisgICAgICAgICAgICAsIG1faXNBY2NlcHRlZChpc0FjY2Vw
dGVkKQorICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQorICAgICAgICAgICAgLCBt
X2N0cmxLZXkoY3RybEtleSkKKyAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQorICAgICAg
ICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAg
ICAgY29uc3QgSW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8g
UGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3MoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9IC8vIFNjcmVlbiBjb29y
ZGluYXRlcy4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3Jt
VG91Y2hFdmVudEFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3Jt
VG91Y2hFdmVudEFuZHJvaWQuY3BwCmluZGV4IDhiM2QyODUuLjY1OTk5ZDIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9QbGF0Zm9ybVRvdWNoRXZlbnRBbmRyb2lkLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvUGxhdGZvcm1Ub3VjaEV2ZW50QW5kcm9pZC5j
cHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKIApAQCAtNDAsNiArNDEsNyBAQCBlbnVtIEFuZHJvaWRNZXRh
S2V5U3RhdGUgewogUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoY29uc3Qg
VmVjdG9yPEludFBvaW50PiYgd2luZG93UG9pbnRzLCBUb3VjaEV2ZW50VHlwZSB0eXBlLCBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHN0YXRlLCBpbnQgbWV0YVN0YXRlKQogICAgIDogbV90eXBl
KHR5cGUpCiAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgLCBtX3RpbWVzdGFtcChXVEY6OmN1
cnJlbnRUaW1lKCkpCiB7CiAgICAgbV90b3VjaFBvaW50cy5yZXNlcnZlQ2FwYWNpdHkod2luZG93
UG9pbnRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBjID0gMDsgYyA8IHdpbmRvd1BvaW50
cy5zaXplKCk7IGMrKykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1U
b3VjaEV2ZW50UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRR
dC5jcHAKaW5kZXggMzM4ZTlkNC4uOTFiNmE1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Q
bGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIApAQCAtNDIsNiArNDMs
NyBAQCBQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChRVG91Y2hFdmVudCog
ZXZlbnQpCiAgICAgbV9hbHRLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlm
aWVyKTsKICAgICBtX3NoaWZ0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1v
ZGlmaWVyKTsKICAgICBtX21ldGFLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFN
b2RpZmllcik7CisgICAgbV90aW1lc3RhbXAgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM5MmFjYTYuLjA1NGVkZGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDEwLTEyLTEwICByamtyb2VnZUBjaHJvbWl1bS5vcmcgIDxyamtyb2VnZUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1OiB1bml0IHRl
c3RzIGZvcgorICAgICAgICB0aGUgYmFzaWMgR2VzdHVyZU1hbmFnZXIgYW5kIGFkZGl0aW9uIG9m
IHRpbWUgc3RhbXBzIGluIGNvbnZlcnNpb24KKyAgICAgICAgZnJvbSBXZWJUb3VjaEV2ZW50IHRv
IFBsYXRmb3JtVG91Y2hFdmVudC4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAq
IGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAgICAgICogc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1U
b3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6CisgICAgICAgICog
dGVzdHMvR2VzdHVyZU1hbmFnZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyOjp0SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0YWJsZUdlc3R1cmVNYW5hZ2VyOjpmaXJzdFRvdWNoUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6c2V0VG91Y2hEdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyOjp0b3VjaER1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OnNldEZpcnN0VG91
Y2hUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OmZp
cnN0VG91Y2hUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFn
ZXI6OmVkZ2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUdlc3R1cmVN
YW5hZ2VyOjp0VXBkYXRlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hQb2ludDo6c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoUG9pbnQ6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6QnVpbGRhYmxlUGxhdGZvcm1U
b3VjaFBvaW50OjpCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEdlc3R1cmVNYW5hZ2VyOjpUZXN0R2VzdHVyZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEdlc3R1cmVNYW5hZ2VyOjpTZXRVcCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
R2VzdHVyZU1hbmFnZXI6OlRlYXJEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisK
IDIwMTAtMTItMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDAxNmNmMWEu
LmVlNTlhMTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAgJ3dl
YmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxw
ZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKKyAgICAgICAg
ICAgICd0ZXN0cy9HZXN0dXJlTWFuYWdlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9J
REJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQktleVBh
dGhUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCmluZGV4IDAzZTZjZTQuLjA4NWU0ODMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CkBAIC01NSw2ICs1NSw3IEBACiAgICAgICAgICdFTkFCTEVfRklMRV9TWVNURU09MScsCiAgICAg
ICAgICdFTkFCTEVfRklMVEVSUz0xJywKICAgICAgICAgJ0VOQUJMRV9HRU9MT0NBVElPTj0xJywK
KyAgICAgICAgJ0VOQUJMRV9HRVNUVVJFX01BTkFHRVI9MScsCiAgICAgICAgICdFTkFCTEVfSUNP
TkRBVEFCQVNFPTAnLAogICAgICAgICAnRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MScsCiAgICAg
ICAgICdFTkFCTEVfSU5QVVRfU1BFRUNIPTEnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJUb3VjaFBvaW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNo
UG9pbnQuaAppbmRleCBkZGZhMjZmLi5iMTU4M2U2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRvdWNoUG9pbnQuaApAQCAtMzgsOCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlRvdWNoUG9pbnQgewogcHVibGljOgorICAgIGVudW0gVG91Y2hJZGVudGlmaWVyIHsK
KyAgICAgIEZpcnN0RmluZ2VyID0gMCwKKyAgICAgIFNlY29uZEZpbmdlciA9IDEsCisgICAgICBU
aGlyZEZpbmdlciA9IDIsCisgICAgfTsKKwogICAgIFdlYlRvdWNoUG9pbnQoKQotICAgICAgICA6
IGlkKDApCisgICAgICAgIDogaWQoRmlyc3RGaW5nZXIpCiAgICAgICAgICwgc3RhdGUoU3RhdGVV
bmRlZmluZWQpIHsgfQogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCmluZGV4IDI0ZWIzNzIuLjI0ZWViODggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCkBA
IC0yMjEsNiArMjIxLDcgQEAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3Vj
aEV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViVG8KICAgICBtX2FsdEtleSA9
IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleTsKICAgICBtX3NoaWZ0S2V5
ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXk7CiAgICAgbV9tZXRh
S2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKKyAgICBtX3Rp
bWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyArK2kpCiAgICAgICAgIG1fdG91Y2hQb2ludHMu
YXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50
c1tpXSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2Vy
VGVzdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR2VzdHVyZU1hbmFnZXJUZXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjIyMTdjCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHAKQEAgLTAs
MCArMSwyNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJHZXN0dXJlTWFuYWdl
ci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIgOiBw
dWJsaWMgV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXIgeworcHVibGljOgorICAgIGludCB0SGFzaChT
dGF0ZSBnZXN0dXJlU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgdG91Y2hUeXBlLCAK
KyAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlZCkKKyAgICB7CisgICAgICAgIHJldHVy
biBoYXNoKGdlc3R1cmVTdGF0ZSwgaWQsIHRvdWNoVHlwZSwgaGFuZGxlZCk7ICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICB9OworICAKKyAgICBJbnRQb2ludCBmaXJzdFRvdWNoUG9zaXRpb24o
KSB7IHJldHVybiBtX2ZpcnN0VG91Y2hQb3NpdGlvbjsgfTsKKyAgICAKKyAgICB2b2lkIHNldFRv
dWNoRHVyYXRpb24oZG91YmxlIHQpIHsgbV90b3VjaER1cmF0aW9uID0gdDsgfTsKKyAgICBkb3Vi
bGUgdG91Y2hEdXJhdGlvbigpIHsgcmV0dXJuIG1fdG91Y2hEdXJhdGlvbjsgfTsKKyAgCisgICAg
dm9pZCBzZXRGaXJzdFRvdWNoVGltZShkb3VibGUgdCkgeyBtX2ZpcnN0VG91Y2hUaW1lID0gdDsg
fTsKKyAgICBkb3VibGUgZmlyc3RUb3VjaFRpbWUoKSB7IHJldHVybiBtX2ZpcnN0VG91Y2hUaW1l
OyB9OworICAgIAorICAgIEdlc3R1cmVNYW5hZ2VyOjpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9u
IGVkZ2VGdW5jdGlvbihpbnQgaGFzaCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2VGdW5j
dGlvbnMuZ2V0KGhhc2gpOworICAgIH07CisgIAorICAgIHZpcnR1YWwgdm9pZCB0VXBkYXRlVmFs
dWVzKGRvdWJsZSBkLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQgJnApCisgICAgeworICAgICAg
ICB1cGRhdGVWYWx1ZXMoZCwgcCk7CisgICAgfTsKK307CisKK2NsYXNzIEJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hQb2ludCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVi
bGljOgorICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCgpOworICAgIEJ1aWxkYWJsZVBs
YXRmb3JtVG91Y2hQb2ludChpbnQgeCwgaW50IHkpOworICAgIAorICAgIHZvaWQgc2V0WChpbnQg
eCkKKyAgICB7CisgICAgICBtX3Bvcy5zZXRYKHgpOworICAgICAgbV9zY3JlZW5Qb3Muc2V0WCh4
KTsKKyAgICB9OworICAgIAorICAgIHZvaWQgc2V0WShpbnQgeSkKKyAgICB7CisgICAgICBtX3Bv
cy5zZXRZKHkpOworICAgICAgbV9zY3JlZW5Qb3Muc2V0WSh5KTsKKyAgICB9OworfTsKKworQnVp
bGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50OjpCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoKQor
eworICAgIG1faWQgPSAwOworICAgIG1fc3RhdGUgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
U3RhdGlvbmFyeTsKKyAgICBtX3BvcyA9IEludFBvaW50KDAsIDApOworICAgIG1fc2NyZWVuUG9z
ID0gSW50UG9pbnQoMCwgMCk7Cit9OworCitCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQ6OkJ1
aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgbV9pZCA9IDA7
CisgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAg
IG1fcG9zID0gSW50UG9pbnQoeCwgeSk7CisgICAgbV9zY3JlZW5Qb3MgPSBJbnRQb2ludCh4LCB5
KTsKK307CisKKworY2xhc3MgVGVzdEdlc3R1cmVNYW5hZ2VyIDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworcHVibGljOgorICAgIFRlc3RHZXN0dXJlTWFuYWdlcigpIHsgfQorCitwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeyB9Cit9OworCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCBoYXNoKQoreworICAgIElu
c3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIgdGVzdEdtOworICAgIGNvbnN0IHVuc2lnbmVkIEZpcnN0
RmluZ2VyID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBTZWNvbmRGaW5nZXIgPSAxOworCisgICAg
QVNTRVJUX0VRKDAsIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0dXJlLAorICAg
ICAgICBGaXJzdEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBmYWxz
ZSkpOworCisgICAgQVNTRVJUX0VRKDggfCAxLCB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6
Ok5vR2VzdHVyZSwKKyAgICAgICAgRmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hQcmVzc2VkLCB0cnVlKSk7CisKKyAgICBBU1NFUlRfRVEoMHgxMDAwMCB8IDIsIHRlc3RHbS50
SGFzaChHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLAorICAgICAgICBGaXJz
dEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkLCBmYWxzZSkpOworCisgICAg
QVNTRVJUX0VRKDB4MjAwMDAsIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLAor
ICAgICAgICBGaXJzdEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCBm
YWxzZSkpOworCisgICAgQVNTRVJUX0VRKDB4MjAwMDAgfCAxLCB0ZXN0R20udEhhc2goR2VzdHVy
ZU1hbmFnZXI6OlNjcm9sbCwKKyAgICAgICAgRmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkLCBmYWxzZSkpOworCisgICAgQVNTRVJUX0VRKDB4MjAwMDAgfCAweDEw
IHwgOCB8IDEsCisgICAgICAgIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLCBT
ZWNvbmRGaW5nZXIgfCAweDEwMDAsIAorICAgICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZCwgdHJ1ZSkpOworfQorCisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIHN0YXRl
KQoreworICAgIEluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIgdGVzdEdtOworCisgICAgQVNTRVJU
X0VRKDAsIHRlc3RHbS5zdGF0ZSgpKTsKKyAgICB0ZXN0R20uc2V0U3RhdGUoR2VzdHVyZU1hbmFn
ZXI6OlBlbmRpbmdTeW50aGV0aWNDbGljayk7CisgICAgQVNTRVJUX0VRKEdlc3R1cmVNYW5hZ2Vy
OjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIHRlc3RHbS5zdGF0ZSgpKTsKK30KKworCitURVNUX0Yo
VGVzdEdlc3R1cmVNYW5hZ2VyLCBpc0luc2lkZU1hbmhhdHRhblNxdWFyZSkKK3sKKyAgICBJbnNw
ZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIGdtOworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2lu
dCBwOworCisgICAgQVNTRVJUX0VRKDAuMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueCgpKTsK
KyAgICBBU1NFUlRfRVEoMC4wLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55KCkpOworICAKKyAg
ICBwLnNldFgoMC4wKTsKKyAgICBwLnNldFkoMTkuOTk5KTsKKyAgICBBU1NFUlRfVFJVRShnbS5p
c0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSk7CisgICAgCisgICAgcC5zZXRYKDE5Ljk5OSk7Cisg
ICAgcC5zZXRZKDAuMCk7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUocCkpOworCisgICAgcC5zZXRYKDIwLjApOworICAgIHAuc2V0WSgwLjApOworICAgIEFTU0VS
VF9GQUxTRShnbS5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSk7CisgICAgCisgICAgcC5zZXRY
KDAuMCk7CisgICAgcC5zZXRZKDIwLjApOworICAgIEFTU0VSVF9GQUxTRShnbS5pc0luc2lkZU1h
bmhhdHRhblNxdWFyZShwKSk7CisgICAgCisgICAgcC5zZXRYKC0yMC4wKTsKKyAgICBwLnNldFko
MC4wKTsKKyAgICBBU1NFUlRfRkFMU0UoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOwor
ICAgIAorICAgIHAuc2V0WCgwLjApOworICAgIHAuc2V0WSgtMjAuMCk7CisgICAgQVNTRVJUX0ZB
TFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKK30KKworVEVTVF9GKFRlc3RHZXN0
dXJlTWFuYWdlciwgaXNJbkNsaWNrVGltZVdpbmRvdykKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1
cmVNYW5hZ2VyIGdtOworICAgIAorICAgIGdtLnNldFRvdWNoRHVyYXRpb24oMC4wKTsKKyAgICBB
U1NFUlRfRkFMU0UoZ20uaXNJbkNsaWNrVGltZVdpbmRvdygpKTsKKyAgICAKKyAgICBnbS5zZXRU
b3VjaER1cmF0aW9uKDAuMDEwMDAxKTsKKyAgICBBU1NFUlRfVFJVRShnbS5pc0luQ2xpY2tUaW1l
V2luZG93KCkpOworICAgIAorICAgIGdtLnNldFRvdWNoRHVyYXRpb24oMC44IC0gLjAwMDAwMDAx
KTsKKyAgICBBU1NFUlRfVFJVRShnbS5pc0luQ2xpY2tUaW1lV2luZG93KCkpOworICAgIAorICAg
IGdtLnNldFRvdWNoRHVyYXRpb24oMC44MDAwMSk7CisgICAgQVNTRVJUX0ZBTFNFKGdtLmlzSW5D
bGlja1RpbWVXaW5kb3coKSk7Cit9CisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIGFkZEVk
Z2VGdW5jdGlvbikKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIGdtOworICAgIGdt
LmFkZEVkZ2VGdW5jdGlvbihHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLCAwLAorICAgICAgICBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIHRydWUsCisgICAgICAgIChHZXN0dXJlTWFu
YWdlcjo6R2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbik0MDk2KTsKKyAgICAKKyAgICBBU1NFUlRf
RVEoKEdlc3R1cmVNYW5hZ2VyOjpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKTQwOTYsCisgICAg
ICAgIGdtLmVkZ2VGdW5jdGlvbihnbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLAorICAg
ICAgICAgMCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCB0cnVlKSkpOworfQor
CitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCB1cGRhdGVWYWx1ZXMpCit7CisgICAgSW5zcGVj
dGFibGVHZXN0dXJlTWFuYWdlciBnbTsKKworICAgIEFTU0VSVF9FUSgwLjAsIGdtLmZpcnN0VG91
Y2hUaW1lKCkpOworICAgIEFTU0VSVF9FUSgwLjAsIGdtLnRvdWNoRHVyYXRpb24oKSk7CisgICAg
QVNTRVJUX0VRKEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOworCisgICAg
QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHAxKDEwLCAxMSk7CisgICAgZ20udFVwZGF0ZVZh
bHVlcygxLjEsIHAxKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoMTAsIGdtLmZpcnN0VG91Y2hQb3Np
dGlvbigpLngoKSk7CisgICAgQVNTRVJUX0VRKDExLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55
KCkpOworICAgIEFTU0VSVF9FUSgxLjEsIGdtLmZpcnN0VG91Y2hUaW1lKCkpOworICAgIEFTU0VS
VF9FUSgwLjAsIGdtLnRvdWNoRHVyYXRpb24oKSk7CisKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoUG9pbnQgcDIoMTMsIDE0KTsKKyAgICBnbS5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6UGVu
ZGluZ1N5bnRoZXRpY0NsaWNrKTsKKyAgICBnbS50VXBkYXRlVmFsdWVzKDIuMCwgcDIpOworICAg
ICAgICAgICAgICAgIAorICAgIEFTU0VSVF9FUSgxMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCku
eCgpKTsKKyAgICBBU1NFUlRfRVEoMTEsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLnkoKSk7Cisg
ICAgQVNTRVJUX0VRKDEuMSwgZ20uZmlyc3RUb3VjaFRpbWUoKSk7CisgICAgQVNTRVJUX0VRKDIu
MCAtIDEuMSwgZ20udG91Y2hEdXJhdGlvbigpKTsKKworICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91
Y2hQb2ludCBwMygyMywgMzQpOworICAgIGdtLnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpOb0dl
c3R1cmUpOworICAgIGdtLnRVcGRhdGVWYWx1ZXMoMy4wLCBwMyk7CisgICAgICAgICAgICAgICAg
CisgICAgQVNTRVJUX0VRKDIzLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS54KCkpOworICAgIEFT
U0VSVF9FUSgzNCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueSgpKTsKKyAgICBBU1NFUlRfRVEo
My4wLCBnbS5maXJzdFRvdWNoVGltZSgpKTsKKyAgICBBU1NFUlRfRVEoMC4wLCBnbS50b3VjaER1
cmF0aW9uKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76281</attachid>
            <date>2010-12-10 16:18:50 -0800</date>
            <delta_ts>2010-12-16 17:24:58 -0800</delta_ts>
            <desc>fourth patch</desc>
            <filename>patch49345-3.diff</filename>
            <type>text/plain</type>
            <size>45750</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkZDZmZTQ5Li5iM2U0NjcxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMTItMTAgIHJqa3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
bGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2VzdHVyZU1hbmFnZXIgZnJhbWV3b3JrCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMC0xMi0xMCAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKaW5kZXggODdhMTJjYy4uNWU3YWI5YyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKQEAgLTkyMSw2ICs5MjEsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0dFU1RVUkVfTUFOQUdFUikKKyNkZWZpbmUgRU5B
QkxFX0dFU1RVUkVfTUFOQUdFUiAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKQogI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhNDU1YmIyLi5kNDFmNmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMTItMTAgIHJq
a3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIExheW91dCB0ZXN0
cyB0byBzaG93IGNvcnJlY3Qgb3BlcmF0aW9uIG9mIEdlc3R1cmVNYW5hZ2VyIHNhbXBsZSBnZXN0
dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkz
NDUKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0
dXJlLWNsaWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAt
MTItMTAgIEVtaWwgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjhkZWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyBiYXNpYyBzaW5nbGUgdG91Y2ggZ2VzdHVyZSBn
ZW5lcmF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworR2VzdHVyZSBtYW5h
Z2VyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2suaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2suaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjM4ZGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCkBAIC0wLDAg
KzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5p
ZCA9ICJ0b3VjaHRhcmdldCI7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxl
LmhlaWdodCA9ICIxMDBweCI7CitkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOwor
Cit2YXIgbGFzdEV2ZW50ID0gbnVsbDsKK3ZhciBjbGlja0V2ZW50c1JlY2VpdmVkID0gMDsKK3Zh
ciBFWFBFQ1RFRF9DTElDS19FVkVOVFNfVE9UQUwgPSAzOwordmFyIHRvdWNoRXZlbnRzUmVjZWl2
ZWQgPSAwOwordmFyIGV2ZW50VHlwZXMgPSBbICdtb3VzZWRvd24nLCAnbW91c2V1cCcsICdjbGlj
aycgXTsKKwordmFyIGhhdmVUb3VjaEV2ZW50cyA9IGZhbHNlOworCitmdW5jdGlvbiBnZXN0dXJl
RXZlbnRDYWxsYmFjayhldmVudCkKK3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgIGxhc3RFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2xhc3RFdmVudC50eXBlJywgZXZlbnRUeXBlc1t0b3VjaEV2ZW50c1JlY2VpdmVkXSk7CisgICAg
ICAgIHNob3VsZEJlKCdsYXN0RXZlbnQuY2xpZW50WCcsICcxMCcpOworICAgICAgICBzaG91bGRC
ZSgnbGFzdEV2ZW50LmNsaWVudFknLCAnMTInKTsKKyAgICAgICAgdG91Y2hFdmVudHNSZWNlaXZl
ZCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKGV2ZW50LnR5cGUpOworICAgICAgICBk
ZWJ1ZyhldmVudC5jbGllbnRYKTsKKyAgICAgICAgZGVidWcoZXZlbnQuY2xpZW50WSk7CisgICAg
fQorfQorCitmdW5jdGlvbiBzaW5nbGVUb3VjaFNlcXVlbmNlKCkKK3sKKyAgICBldmVudFNlbmRl
ci5hZGRUb3VjaFBvaW50KDEwLCAxMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOwor
CisgICAgLy8gSW5zZXJ0IHNvbWUgZGVsYXkuIE5COiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gbWlu
Q2xpY2tEb3duVGltZSwKKyAgICAvLyBtYXhDbGlja0Rvd25UaW1lIGZyb20gR2VzdHVyZU1hbmFn
ZXIuY3BwCisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjApOworCisgICAgZXZlbnRTZW5k
ZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30K
KworLy8gRW5kIGJ5IHRpbWVyIHRvIHJ1biBjb3JyZWN0bHkgb24gbm9uLUNocm9taXVtIHBsYXRm
b3Jtcy4KK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgdG91Y2hFdmVudHNSZWNlaXZlZCA8CisgICAgICAgICAgICBFWFBFQ1RFRF9D
TElDS19FVkVOVFNfVE9UQUwpIHsKKyAgICAgICAgZGVidWcoJ0dlc3R1cmUgbWFuYWdlciBub3Qg
aW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKTsKKyAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNl
ZCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZGl2LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7
CitkaXYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFs
c2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBnZXN0dXJlRXZlbnRDYWxsYmFj
aywgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5
LmZpcnN0Q2hpbGQpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBn
ZXN0dXJlIGdlbmVyYXRpb24uIik7CisgICAgbGFzdEV2ZW50ID0gbnVsbDsKKyAgICBpZiAoISFl
dmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmNsZWFy
VG91Y2hQb2ludHMoKTsKKyAgICAgICAgc2luZ2xlVG91Y2hTZXF1ZW5jZSgpOworICAgICAgICBl
bmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KK30gZWxz
ZSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRhcCBv
biB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKQorfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1
cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YmJiNjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1RoaXMgdGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2
ZW50cy4gU3F1YXJlIGlzIChtb3N0bHkpIGdyZWVuIG9uIHBhc3MKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0dlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBw
bGF0Zm9ybSBvciBicm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90
b3VjaC1nZXN0dXJlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41N2M2MGE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDE3MCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyN0b3Vj
aHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgcG9zaXRpb246
IHJlbGF0aXZlOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworI21vdmluZ2JveCB7CisgIHdp
ZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsJCQorICB3
b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgb3ZlcmZsb3ct
eDogc2Nyb2xsOworICBkaXNwbGF5OiBibG9jazsKK30KKworI2dyZWVuYm94IHsKKyAgd2lkdGg6
IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgcGFkZGlu
ZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdpZHRoOiAxMDBweDsK
KyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRkaW5nOiAwcHg7Cisg
IG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiIG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2
IGlkPSJ0b3VjaHRhcmdldCI+CisgIDxkaXYgaWQ9Im1vdmluZ2JveCI+CisgICAgPHRhYmxlIGJv
cmRlcj0iMCIgY2VsbHNwYWNpbmc9IjBweCI+CisgICAgICA8dHI+CisgICAgICAgIDx0ZD48ZGl2
IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgICAgIDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+
PC9kaXY+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgICA8dHI+CisgICAgICAgIDx0ZD48ZGl2IGlk
PSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICAgICAgPHRkPjxkaXYgaWQ9ImdyZWVuYm94Ij48
L2Rpdj48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3RhYmxlPgorICA8L2Rpdj4KKzwvZGl2Pgor
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgbW92aW5nZGl2OwordmFyIEVYUEVD
VEVEX1NDUk9MTFNfVE9UQUwgPSAyOwordmFyIHNjcm9sbHNPY2N1cnJlZCA9IDA7Cit2YXIgc2Ny
b2xsQW1vdW50WCA9IFsnOTAnLCAnOTAnXTsKK3ZhciBzY3JvbGxBbW91bnRZID0gWycwJywgJzk1
J107CisKK2Z1bmN0aW9uIGNoZWNrU2Nyb2xsT2Zmc2V0KCkKK3sKKyAgICBtb3ZpbmdkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW92aW5nYm94Jyk7CisgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICBzaG91bGRCZSgnbW92aW5nZGl2LnNjcm9sbFRvcCcsIHNjcm9s
bEFtb3VudFlbc2Nyb2xsc09jY3VycmVkXSk7CisgICAgICAgIHNob3VsZEJlKCdtb3ZpbmdkaXYu
c2Nyb2xsTGVmdCcsIHNjcm9sbEFtb3VudFhbc2Nyb2xsc09jY3VycmVkXSk7CisgICAgICAgIHNj
cm9sbHNPY2N1cnJlZCsrOworICAgIH0KKworICAgIGlmIChzY3JvbGxzT2NjdXJyZWQgPT0gRVhQ
RUNURURfU0NST0xMU19UT1RBTCkgeworICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2Un
dmUgcGFzc2VkLgorICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICBp
c1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHNlY29uZFRvdWNoRHJhZ1NlcXVlbmNlKCk7ICAgIAorICAg
IH0KK30KKworZnVuY3Rpb24gZmluZ2VyVXAoZXZlbnQpCit7CisgICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGRlYnVnKCdtb3ZlZDogJyArIGV2ZW50LmN1cnJl
bnRUYXJnZXQuc2Nyb2xsVG9wICsgJywgJyArIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2Nyb2xsTGVm
dCk7CisgICAgcmV0dXJuIHRydWU7ICAvLyBXYW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KK30K
KworZnVuY3Rpb24gZmlyc3RUb3VjaERyYWdTZXF1ZW5jZSgpCit7CisgICAgZGVidWcoImZpcnN0
IGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZl
bnRTZW5kZXIuYWRkVG91Y2hQb2ludCg5NSwgMTIpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3Rh
cnQoKTsKKworICAgIC8vIFNjcm9sbCB0aGUgZGl2IHRvIHRoZSBsZWZ0LgorICAgIGV2ZW50U2Vu
ZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNSwgMTIpOyAgICAKKyAgICBldmVudFNlbmRlci50b3Vj
aE1vdmUoKTsKKyAgICAKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAg
ICBldmVudFNlbmRlci50b3VjaEVuZCgpOworCisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAg
IGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZFRvdWNoRHJhZ1NlcXVl
bmNlKCkKK3sKKyAgICBkZWJ1Zygic2Vjb25kIGdlc3R1cmUiKTsKKyAgICBldmVudFNlbmRlci5j
bGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCgxMiwgOTcp
OworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKyAgICAKKyAgICAvLyBTY3JvbGwgdGhl
IHJlY3RhbmdsZSBkb3duLgorICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgMTIs
IDIpOyAgICAKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVy
LnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisgICAg
CisgICAgLy8gV2FpdCBmb3IgbGF5b3V0LgorICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7Cit9CisK
K2Z1bmN0aW9uIGV4aXRJZk5lY2Vzc2FyeSgpCit7CisgICAgZGVidWcoJ0dlc3R1cmUgbWFuYWdl
ciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBicm9rZW4nKTsKKyAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
cnVuVGVzdCgpCit7CisgICAgdmFyIG1vdmluZ2RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdtb3Zpbmdib3gnKTsKKyAgICAKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHNjcm9sbCBnZXN0dXJlIGdlbmVyYXRpb24gZnJv
bSB0b3VjaCBldmVudHMuICcgKworICAgICAgICAgICAgJ1NxdWFyZSBpcyAobW9zdGx5KSBncmVl
biBvbiBwYXNzJyk7CisKKyAgICAgICAgaWYgKGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMp
IHsKKyAgICAgICAgICAgIGZpcnN0VG91Y2hEcmFnU2VxdWVuY2UoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRv
dWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8gbG9nLiIpOworICAgICAgICBtb3ZpbmdkaXYuYWRk
RXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBmaW5nZXJVcCwgZmFsc2UpOworICAgIH0KK30KKzwv
c2NyaXB0PgorCisKKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iNDYyYmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0ZXN0cyBiYXNpYyBzaW5nbGUgdG91
Y2ggZ2VzdHVyZSBnZW5lcmF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBsYXN0RXZlbnQudHlwZSBpcyAibW91c2Vkb3duIgorUEFTUyBsYXN0RXZlbnQuY2xpZW50
WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQuY2xpZW50WSBpcyAxMgorUEFTUyBsYXN0RXZlbnQudHlw
ZSBpcyAibW91c2V1cCIKK1BBU1MgbGFzdEV2ZW50LmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2
ZW50LmNsaWVudFkgaXMgMTIKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgImNsaWNrIgorUEFTUyBs
YXN0RXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQuY2xpZW50WSBpcyAxMgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UyNjc5OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNo
LWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3Rz
IHNjcm9sbCBnZXN0dXJlIGdlbmVyYXRpb24gZnJvbSB0b3VjaCBldmVudHMuIFNxdWFyZSBpcyAo
bW9zdGx5KSBncmVlbiBvbiBwYXNzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitm
aXJzdCBnZXN0dXJlCitQQVNTIG1vdmluZ2Rpdi5zY3JvbGxUb3AgaXMgMAorUEFTUyBtb3Zpbmdk
aXYuc2Nyb2xsTGVmdCBpcyA5MAorc2Vjb25kIGdlc3R1cmUKK1BBU1MgbW92aW5nZGl2LnNjcm9s
bFRvcCBpcyA5NQorUEFTUyBtb3ZpbmdkaXYuc2Nyb2xsTGVmdCBpcyA5MAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVjZmJjZDMuLjkyNDg3YmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMTAtMTItMDggIHJqa3JvZWdlQGNocm9taXVtLm9yZyAgPHJqa3JvZWdl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
OTM0NTogYWRkZWQgYSBiYXNpYworICAgICAgICBHZXN0dXJlTWFuYWdlciBmcmFtZXdvcmsgd2l0
aCB0d28gc2FtcGxlIGdlc3R1cmVzIChjbGljayBhbmQgc2Nyb2xsKS4KKyAgICAgICAgCisgICAg
ICAgIEFsc28sIGFkZGVkIHRpbWUgc3RhbXBzIHRvIFBsYXRmb3JtVG91Y2hFdmVudCB0byBwZXJt
aXQgbm9uLWZsYWt5CisgICAgICAgIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omdlc3R1cmVNYW5hZ2VyKToKKyAgICAg
ICAgKiBwYWdlL0dlc3R1cmVNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpH
ZXN0dXJlTWFuYWdlcjo6R2VzdHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVy
ZU1hbmFnZXI6On5HZXN0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFu
YWdlcjo6YWRkRWRnZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2Vy
Ojppc0luQ2xpY2tUaW1lV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2Vy
Ojppc0luc2lkZU1hbmhhdHRhblNxdWFyZSk6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFu
YWdlcjo6ZGlzcGF0Y2hTeW50aGV0aWNDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
TWFuYWdlcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6cHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2Vy
OjpzY3JvbGxWaWFUb3VjaE1vdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdl
cjo6dXBkYXRlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjpoYXNo
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6CisgICAgICAgIChXZWJDb3JlOjpyZXNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpjbGljayk6CisgICAgICAgIChXZWJDb3JlOjpjbGlja09y
U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmluU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVNYW5hZ2VyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OnNldFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjpzdGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1Ub3VjaEV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNo
RXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRv
dWNoRXZlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hl
ZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9QbGF0Zm9ybVRvdWNoRXZlbnRB
bmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudDo6UGxhdGZv
cm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91
Y2hFdmVudCk6CisKIDIwMTAtMTItMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwZjdjN2RiLi40
YmI1MWViIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMjMwMSw2ICsyMzAxLDggQEAKICAgICAgICAgICAgICdwYWdlL0dlb2xv
Y2F0aW9uUG9zaXRpb25DYWNoZS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmgnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvcG9zaXRpb24uaCcsCisgICAg
ICAgICAgICAncGFnZS9HZXN0dXJlTWFuYWdlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2Vz
dHVyZU1hbmFnZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCiAg
ICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BhZ2UvSGFs
dGFibGVQbHVnaW4uaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGE3Njc4NDkuLmYxZTAzNzIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04OCw2ICs4OCwxMCBAQAogI2luY2x1ZGUgIlRvdWNo
RXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKKyNpbmNsdWRl
ICJHZXN0dXJlTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE5NSw2ICsxOTksOSBAQCBFdmVudEhhbmRsZXI6
OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICAsIG1fdG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFO
QUdFUikKKyAgICAsIG1fZ2VzdHVyZU1hbmFnZXIoY3JlYXRlR2VzdHVyZU1hbmFnZXIoKSkKKyNl
bmRpZgogewogfQogCkBAIC0yOTc4LDYgKzI5ODUsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAg
ZGVmYXVsdFByZXZlbnRlZCB8PSBtb3ZlRXYtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKICAgICB9CiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorICAgIG1fZ2VzdHVyZU1hbmFnZXItPnByb2Nl
c3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7Cisj
ZW5kaWYKKwogICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggY2ExOWEwYy4uYTE2Njg4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKF9fT0JKQ19f
KQpAQCAtNzgsNiArNzksMTAgQEAgZXh0ZXJuIGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXM7
CiBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFC
TEUoRFJBR19TVVBQT1JUKQogCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKK2NsYXNzIEdl
c3R1cmVNYW5hZ2VyOworI2VuZGlmCisKIGVudW0gSGl0VGVzdFNjcm9sbGJhcnMgeyBTaG91bGRI
aXRUZXN0U2Nyb2xsYmFycywgRG9udEhpdFRlc3RTY3JvbGxiYXJzIH07CiAKIGNsYXNzIEV2ZW50
SGFuZGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkBAIC0yMTQsNiArMjE5LDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHRVNUVVJFX01BTkFHRVIpCisgICAgR2VzdHVyZU1hbmFn
ZXIqIGdlc3R1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9nZXN0dXJlTWFuYWdlci5nZXQo
KTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBl
bnVtIERyYWdBbmREcm9wSGFuZGxlVHlwZSB7CkBAIC00MzUsNiArNDQ0LDkgQEAgcHJpdmF0ZToK
ICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAg
Ym9vbCBtX3RvdWNoUHJlc3NlZDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX01BTkFHRVIp
CisgICAgT3duUHRyPEdlc3R1cmVNYW5hZ2VyPiBtX2dlc3R1cmVNYW5hZ2VyOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2Vz
dHVyZU1hbmFnZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2NlMTRhCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIxOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHZXN0dXJlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1XaGVlbEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRWRnZSBm
dW5jdGlvbnMuCitzdGF0aWMgYm9vbCBjbGljayhHZXN0dXJlTWFuYWdlciosIGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYpOworc3RhdGljIGJvb2wgY2xpY2tPclNjcm9sbChHZXN0dXJlTWFuYWdl
ciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworc3RhdGljIGJvb2wgaW5TY3JvbGwoR2Vz
dHVyZU1hbmFnZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKK3N0YXRpYyBib29sIHJl
c2V0KEdlc3R1cmVNYW5hZ2VyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CitzdGF0aWMg
Ym9vbCB0b3VjaERvd24oR2VzdHVyZU1hbmFnZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
KTsKKworLy8gRklYTUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1tYXRpY2FsbHku
CisvLyBNYXhpbXVtIGhvbGQgZG93biAocykgZm9yIGEgdG91Y2ggdG8gYmUgdHJlYXRlZCBhcyBh
IGNsaWNrLgorc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhDbGlja0Rvd25UaW1lID0gMC44OworCisv
LyBNaW5pbXVtIGhvbGQgZG93biAocykgZm9yIGEgdG91Y2ggdG8gYmUgdHJlYXRlZCBhcyBhIGNs
aWNrLgorc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5DbGlja0Rvd25UaW1lID0gMC4wMTsKKworLy8g
TWF4aW11bSBtYW5oYXR0YW4gZGlzcGxhY2VtZW50IGZvciB0b3VjaCBtb3Rpb24gdG8KKy8vIHN0
aWxsIGJlIGNvbnNpZGVyZWQgYXMgYSBjbGljay4KK3N0YXRpYyBjb25zdCBpbnQgbWF4TWFuaGF0
dGFuRGlzdGFuY2UgPSAyMDsKKworR2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVNYW5hZ2VyKCkKKyAg
ICA6IG1fZmlyc3RUb3VjaFRpbWUoMC4wKQorICAgICwgbV9zdGF0ZShHZXN0dXJlTWFuYWdlcjo6
Tm9HZXN0dXJlKQorICAgICwgbV9sYXN0VG91Y2hUaW1lKDAuMCkKKyAgICAsIG1fZXZlbnRIYW5k
bGVyKDApCit7Cit9CisKK0dlc3R1cmVNYW5hZ2VyOjp+R2VzdHVyZU1hbmFnZXIoKQoreworfQor
Cit2b2lkIEdlc3R1cmVNYW5hZ2VyOjphZGRFZGdlRnVuY3Rpb24oU3RhdGUgc3RhdGUsIHVuc2ln
bmVkIGZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSB0b3VjaFR5cGUsIGJvb2wgaGFu
ZGxlZCwgR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbiBmKQoreworICAgIG1fZWRnZUZ1bmN0aW9u
cy5hZGQoaGFzaChzdGF0ZSwgZmluZ2VyLCB0b3VjaFR5cGUsIGhhbmRsZWQpLCBmKTsKK30KKwor
Ym9vbCBHZXN0dXJlTWFuYWdlcjo6aXNJbkNsaWNrVGltZVdpbmRvdygpCit7CisgICAgZG91Ymxl
IGR1cmF0aW9uKG1fbGFzdFRvdWNoVGltZSAtIG1fZmlyc3RUb3VjaFRpbWUpOworICAgIHJldHVy
biBkdXJhdGlvbiA+PSBtaW5DbGlja0Rvd25UaW1lICYmIGR1cmF0aW9uIDwgbWF4Q2xpY2tEb3du
VGltZTsKK30KKworYm9vbCBHZXN0dXJlTWFuYWdlcjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKQoreworICAgIGludCBtYW5oYXR0YW5EaXN0YW5j
ZSA9IGFicyhwLnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSkgKworICAgICAg
ICBhYnMocC5wb3MoKS55KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOworICAgIHJldHVy
biBtYW5oYXR0YW5EaXN0YW5jZSA8IG1heE1hbmhhdHRhbkRpc3RhbmNlOworfQorCit2b2lkIEdl
c3R1cmVNYW5hZ2VyOjpkaXNwYXRjaFN5bnRoZXRpY0NsaWNrKGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgcCkKK3sKKyAgICAvLyBOQjogc3ludGhldGljIGV2ZW50cyBhcmUgbm90IGRlbGl2ZXJl
ZCB0byBwbHVnLWlucy4KKyAgICAvLyBOQjogdG91Y2gtYmFzZWQgVVggbmVlZHMgY3VzdG9tIHBv
cHVwIGNvbXBvbmVudHMuCisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24ocC5w
b3MoKSwgcC5zY3JlZW5Qb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDEsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtX2xhc3RUb3VjaFRpbWUpOworICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VVcChwLnBvcygpLCBwLnNjcmVlblBvcygpLCBMZWZ0QnV0dG9u
LCBNb3VzZUV2ZW50UmVsZWFzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtX2xh
c3RUb3VjaFRpbWUpOworCisgICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChmYWtlTW91c2VEb3duKTsKKyAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VSZWxlYXNl
RXZlbnQoZmFrZU1vdXNlVXApOworfQorCit2b2lkIEdlc3R1cmVNYW5hZ2VyOjppbml0KCkKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBGaXJzdEZpbmdlciA9IDA7CisgICAgY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50OjpTdGF0ZSBSZWxlYXNlZCA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxl
YXNlZDsKKyAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIFByZXNzZWQgPSBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlN0YXRlIE1vdmVkID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkOworICAgIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgU3RhdGlvbmFyeSA9IFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6U3Rh
dGUgQ2FuY2VsbGVkID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKKworICAg
IGFkZEVkZ2VGdW5jdGlvbihOb0dlc3R1cmUsIEZpcnN0RmluZ2VyLCBQcmVzc2VkLCBmYWxzZSwg
dG91Y2hEb3duKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBG
aXJzdEZpbmdlciwgQ2FuY2VsbGVkLCBmYWxzZSwgcmVzZXQpOworICAgIGFkZEVkZ2VGdW5jdGlv
bihQZW5kaW5nU3ludGhldGljQ2xpY2ssIEZpcnN0RmluZ2VyLCBSZWxlYXNlZCwgZmFsc2UsIGNs
aWNrKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJzdEZp
bmdlciwgTW92ZWQsIGZhbHNlLCBjbGlja09yU2Nyb2xsKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24o
UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJzdEZpbmdlciwgU3RhdGlvbmFyeSwgZmFsc2UsIGNs
aWNrT3JTY3JvbGwpOworICAgIGFkZEVkZ2VGdW5jdGlvbihTY3JvbGwsIEZpcnN0RmluZ2VyLCBN
b3ZlZCwgZmFsc2UsIGluU2Nyb2xsKTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oU2Nyb2xsLCBGaXJz
dEZpbmdlciwgUmVsZWFzZWQsIGZhbHNlLCByZXNldCk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFNj
cm9sbCwgRmlyc3RGaW5nZXIsIENhbmNlbGxlZCwgZmFsc2UsIHJlc2V0KTsKK30KKworYm9vbCBH
ZXN0dXJlTWFuYWdlcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgZXZlbnQsIEV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyLCBib29sIGhhbmRs
ZWQpCit7CisgICAgbV9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7CisgICAgY29uc3QgVmVj
dG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaW50cy5zaXplKCk7IGkrKykgeworICAgICAg
ICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHAgPSBwb2ludHNbaV07CisgICAgICAgIHVwZGF0
ZVZhbHVlcyhldmVudC50aW1lc3RhbXAoKSwgcCk7CisKKyAgICAgICAgaWYgKEdlc3R1cmVUcmFu
c2l0aW9uRnVuY3Rpb24gZWYgPSBtX2VkZ2VGdW5jdGlvbnMuZ2V0KGhhc2gobV9zdGF0ZSwgcC5p
ZCgpLCBwLnN0YXRlKCksIGhhbmRsZWQpKSkKKyAgICAgICAgICAgIGhhbmRsZWQgPSAoKmVmKSh0
aGlzLCBwKTsKKyAgICAgICAgLy8gVGhlIGdyYXBoIGlzIHNwYXJzZTogbm90IGFsbCBlZGdlcyBo
YXZlIGZ1bmN0aW9ucy4gICAgICAgIAorICAgIH0KKyAgICByZXR1cm4gaGFuZGxlZDsKK30KKwor
dm9pZCBHZXN0dXJlTWFuYWdlcjo6c2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50JiB0cCkKK3sKKyAgICBmbG9hdCBkZWx0YVgodHAucG9zKCkueCgpIC0gbV9maXJz
dFRvdWNoUG9zaXRpb24ueCgpKTsKKyAgICBmbG9hdCBkZWx0YVkodHAucG9zKCkueSgpIC0gbV9m
aXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKKyAgICAKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3lu
dGhldGljV2hlZWxFdmVudCh0cC5wb3MoKSwgdHAuc2NyZWVuUG9zKCksIGRlbHRhWCwgZGVsdGFZ
LCBkZWx0YVggLyBzdGF0aWNfY2FzdDxmbG9hdD4oMTIwKSwgZGVsdGFZIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KDEyMCksIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpOworICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVXaGVlbEV2ZW50KHN5
bnRoZXRpY1doZWVsRXZlbnQpOworICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdHAucG9zKCk7
Cit9CisKK3ZvaWQgR2VzdHVyZU1hbmFnZXI6OnVwZGF0ZVZhbHVlcyhjb25zdCBkb3VibGUgdG91
Y2hUaW1lLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRwKQoreworICAgIGlmIChzdGF0ZSgp
ID09IE5vR2VzdHVyZSkgeworICAgICAgICBtX2ZpcnN0VG91Y2hUaW1lID0gdG91Y2hUaW1lOwor
ICAgICAgICBtX2xhc3RUb3VjaFRpbWUgPSAwLjA7CisgICAgICAgIG1fZmlyc3RUb3VjaFBvc2l0
aW9uID0gdHAucG9zKCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbGFzdFRvdWNoVGltZSA9IHRv
dWNoVGltZTsKK30KKworLy8gQnVpbGRzIGEgaGFzaC4gSGFzaGVzIGFyZSBhc3NlbWJsZWQgYnkg
am9pbmluZyB0b2dldGhlciBtdWx0aXBsZSBiaXRzLgorLy8gMyBMU0IgYml0cyBmb3IgdGhlIHx0
b3VjaFR5cGV8LgorLy8gMSBiaXQgZm9yIHxoYW5kbGVkfAorLy8gMTIgYml0cyBmb3IgfGlkfAor
Ly8gMTYgYml0cyBmb3IgdGhlIHxnZXN0dXJlU3RhdGV8LgordW5zaWduZWQgaW50IEdlc3R1cmVN
YW5hZ2VyOjpoYXNoKFN0YXRlIGdlc3R1cmVTdGF0ZSwgdW5zaWduZWQgaWQsIFBsYXRmb3JtVG91
Y2hQb2ludDo6U3RhdGUgdG91Y2hUeXBlLCBib29sIGhhbmRsZWQpCit7CisgICAgcmV0dXJuIDEg
KyAoKHRvdWNoVHlwZSAmIDcpIHwgKGhhbmRsZWQgPyAxIDw8IDMgOiAwKSB8ICgoaWQgJiAweGZm
ZikgPDwgNCApIHwgKGdlc3R1cmVTdGF0ZSA8PCAxNikpOworfQorCisvLworLy8gRWRnZSBmdW5j
dGlvbnMKKy8vCitzdGF0aWMgYm9vbCB0b3VjaERvd24oR2VzdHVyZU1hbmFnZXIqIGdtLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApCit7CisgICAgZ20tPnNldFN0YXRlKEdlc3R1cmVNYW5h
Z2VyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCByZXNldChHZXN0dXJlTWFuYWdlciogZ20sIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCkK
K3sKKyAgICBnbS0+c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVyZSk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBjbGljayhHZXN0dXJlTWFuYWdlciogZ20sIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCkgCit7CisgICAgaWYgKGdtLT5pc0luQ2xpY2tUaW1l
V2luZG93KCkgJiYgZ20tPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKSB7CisgICAgICAgIGdt
LT5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0dXJlKTsKKyAgICAgICAgZ20tPmRpc3Bh
dGNoU3ludGhldGljQ2xpY2socCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gcmVzZXQoZ20sIHApOworfQorCitzdGF0aWMgYm9vbCBjbGlja09yU2Nyb2xsKEdlc3R1
cmVNYW5hZ2VyKiBnbSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKQoreworICAgIGlmIChn
bS0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdtLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShw
KSkgeworICAgICAgICBnbS0+c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6OlBlbmRpbmdTeW50aGV0
aWNDbGljayk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHAu
c3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQgJiYgIWdtLT5pc0luc2lk
ZU1hbmhhdHRhblNxdWFyZShwKSkgeworICAgICAgICBnbS0+c2Nyb2xsVmlhVG91Y2hNb3Rpb24o
cCk7CisgICAgICAgIGdtLT5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJv
b2wgaW5TY3JvbGwoR2VzdHVyZU1hbmFnZXIqIGdtLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
IHApCit7CisgICAgZ20tPnNjcm9sbFZpYVRvdWNoTW90aW9uKHApOworICAgIHJldHVybiB0cnVl
OworfQorCisvLyBUbyBjcmVhdGUgYSByaWNoZXIgZ2VzdHVyZSByZWNvZ25pemVyLCBpdCBpcyBz
dWZmaWNpZW50IHRvIG1vZGlmeSB0aGlzCisvLyBmYWN0b3J5IHRvIGFkZCBhZGRpdGlvbmFsIGVk
Z2VzLiAoVGhvdWdoIGFkZGl0aW9uYWwgZWRnZXMgbWF5IHJlcXVpcmUKKy8vIGFkZGl0aW9uYWwg
c3RhdGUgdHJhY2tpbmcuKQorR2VzdHVyZU1hbmFnZXIqIGNyZWF0ZUdlc3R1cmVNYW5hZ2VyKCkK
K3sKKyAgICBHZXN0dXJlTWFuYWdlciogZ20gPSBuZXcgR2VzdHVyZU1hbmFnZXIoKTsKKyAgICBn
bS0+aW5pdCgpOworICAgIHJldHVybiBnbTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmggYi9XZWJDb3JlL3BhZ2Uv
R2VzdHVyZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWJi
ZmJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmgKQEAg
LTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlc3R1cmVNYW5hZ2VyX2gKKyNkZWZpbmUgR2VzdHVyZU1h
bmFnZXJfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR2VzdHVyZU1hbmFnZXI7CisKKy8vIEEgR2VzdHVyZU1hbmFnZXIgZGV0ZWN0
cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50LgorLy8gSW4gcmVzcG9uc2Ug
dG8gYSBnaXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVNYW5hZ2VyLCB1cGRhdGVzCisvLyBp
dHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMgZXZl
bnRzIHRvIHRoZQorLy8gaW52b2tpbmcgV2ViVmlld0ltcGwuCitjbGFzcyBHZXN0dXJlTWFuYWdl
ciB7CitwdWJsaWM6CisgCisgICAgLy8gVGhlIHN0YXRlcyBvZiB0aGUgZ2VzdHVyZSBtYW5hZ2Vy
IHN0YXRlIG1hY2hpbmUuCisgICAgZW51bSBTdGF0ZSB7CisgICAgICBOb0dlc3R1cmUsCisgICAg
ICBQZW5kaW5nU3ludGhldGljQ2xpY2ssCisgICAgICBTY3JvbGwKKyAgICB9OworICAgIAorICAg
IHR5cGVkZWYgYm9vbCAoKkdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24pKEdlc3R1cmVNYW5hZ2Vy
KiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAgCisgICAgR2VzdHVyZU1hbmFnZXIo
KTsKKyAgICB2aXJ0dWFsIH5HZXN0dXJlTWFuYWdlcigpOworICAKKyAgICAvLyBBZGRzIGEgbmV3
IGVkZ2UgZnVuY3Rpb24gdG8gdGhlIEdlc3R1cmVNYW5hZ2VyLiBGaXJlcyB8ZnVufCBpZiBjdXJy
ZW50IHN0YXRlIGlzIHxzdGF0ZXwsIG5ldyB8dG91Y2h8IGFycml2ZXMgYW5kIGhhbmRsZWQgaXMg
c2V0LgorICAgIHZvaWQgYWRkRWRnZUZ1bmN0aW9uKFN0YXRlIHN0YXRlLCB1bnNpZ25lZCBmaW5n
ZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgdG91Y2hUeXBlLCBib29sIGhhbmRsZWQsIEdl
c3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24gZik7CisgIAorICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
byBkaXNwYXRjaCBhIG1vdXNlRG93bi9tb3VzZVVwL0NsaWNrIHNlcXVlbmNlLgorICAgIHZvaWQg
ZGlzcGF0Y2hTeW50aGV0aWNDbGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApOworICAg
IAorICAgIC8vIENyZWF0ZXMgdGhlIGdlc3R1cmFsIHN0YXRlIG1hY2hpbmUuCisgICAgdmlydHVh
bCB2b2lkIGluaXQoKTsKKyAgCisgICAgLy8gVHJ1ZSBpZiB0aGUgdGltZSBzaW5jZSB0b3VjaERv
d24gaXMgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIGZvciBhIGNsaWNrLgorICAgIGJvb2wgaXNJbkNs
aWNrVGltZVdpbmRvdygpOworICAgIAorICAgIC8vIFRydWUgZm9yIGEgcG9pbnQgcCBzdGlsbCBp
bnNpZGUgdGhlIHRocmVzaG9sZGVkIHNxdWFyZS4KKyAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFu
U3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCk7CisgIAorICAgIC8vIEludm9rZWQg
Zm9yIGVhY2ggdG91Y2ggZXZlbnQgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvIHRoZSBjdXJyZW50
IGdlc3R1cmUuCisgICAgLy8gVGFrZXMgdGhlIHxldmVudHwgYW5kIHRoZSB8c291cmNlfCB0aGF0
IG9yaWdpbmF0ZWQgaXQgYW5kIHdoaWNoIHdpbGwgYWxzbworICAgIC8vIGJlIHRoZSB0YXJnZXQg
b2YgYW55IGdlbmVyYXRlZCBzeW50aGV0aWMgZXZlbnQuIEZpbmFsbHksIHxoYW5kbGVkfAorICAg
IC8vIHNwZWNpZmllcyBpZiB0aGUgfGV2ZW50fCB3YXMgYWN0dWFsbHkgaGFuZGxlZCBieSB8c291
cmNlfC4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmlu
ZyBhIHN5bnRoZXRpYyBldmVudC4KKyAgICBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVy
ZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBFdmVudEhhbmRsZXIqIHNvdXJjZSwg
Ym9vbCBoYW5kbGVkKTsKKyAgCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHNjcm9sbCB0aGUg
c2NyZWVuLgorICAgIHZvaWQgc2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiBwKTsKKyAgICAKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHMpIHsgbV9zdGF0ZSA9
IHM7IH0KKyAgICBTdGF0ZSBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KKworcHJvdGVjdGVk
OgorICAgIC8vIFVwZGF0ZSBjb21wdXRlZCBnZXN0dXJhbCBwYXJhbWV0ZXJzIGJhc2VkIG9uIHRo
ZSBnaXZlbiBldmVudC4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmFsdWVzKGRvdWJsZSwgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50ICYpOworCisgICAgLy8gTWFrZXMgYW4gZWRnZSBpZGVudGlm
aWVyIGludGVnZXIuCisgICAgdW5zaWduZWQgaW50IGhhc2goU3RhdGUsIHVuc2lnbmVkLCBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlLCBib29sKTsKKyAgCisgICAgLy8gTWFwIG9mIGVkZ2UgZnVu
Y3Rpb25zCisgICAgV1RGOjpIYXNoTWFwPGludCwgR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbj4g
bV9lZGdlRnVuY3Rpb25zOworICAgIAorICAgIC8vIExvY2F0aW9uIG9mIGZpcnN0IHRvdWNoLgor
ICAgIEludFBvaW50IG1fZmlyc3RUb3VjaFBvc2l0aW9uOworICAKKyAgICAvLyBUaW1lIHdoZW4g
dGhlIHRvdWNoIHdlbnQgZG93bi4KKyAgICBkb3VibGUgbV9maXJzdFRvdWNoVGltZTsKKyAgICAK
KyAgICAvLyBHZXN0dXJlTWFuYWdlciBzdGF0ZS4KKyAgICBTdGF0ZSBtX3N0YXRlOworICAKKyAg
ICAvLyBUaW1lIG9mIG1vc3QgcmVjZW50IHRvdWNoIGV2ZW50LgorICAgIGRvdWJsZSBtX2xhc3RU
b3VjaFRpbWU7CisgIAorICAgIC8vIFRoZSBXZWJWaWV3SW1wbCB0aGF0IGludm9rZWQgdGhlIEdl
c3R1cmVNYW5hZ2VyLgorICAgIEV2ZW50SGFuZGxlciogbV9ldmVudEhhbmRsZXI7ICAKK307CisK
Ky8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCitHZXN0dXJlTWFuYWdlciog
Y3JlYXRlR2VzdHVyZU1hbmFnZXIoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gR2VzdHVyZU1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVRvdWNoRXZlbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmgK
aW5kZXggNjk3ODZhOC4uMmM2ODFkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVRvdWNoRXZlbnQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVu
dC5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkK
ICAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQogICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkK
KyAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHt9CiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
UGxhdGZvcm1Ub3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CkBAIC03NCw2ICs3NSw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9CiAgICAgYm9v
bCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KICAgICBib29sIG1ldGFL
ZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KKyAgICAKKyAgICAvLyBUaW1lIGluIHNl
Y29uZHMuCisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1w
OyB9CiAKIHByb3RlY3RlZDoKICAgICBUb3VjaEV2ZW50VHlwZSBtX3R5cGU7CkBAIC04Miw2ICs4
Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fYWx0S2V5OwogICAgIGJvb2wgbV9zaGlmdEtl
eTsKICAgICBib29sIG1fbWV0YUtleTsKKyAgICBkb3VibGUgbV90aW1lc3RhbXA7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCA2NzQ3MzkyLi4yN2NjNTgx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTg2LDYgKzg2LDMzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgUGxh
dGZvcm1XaGVlbEV2ZW50KEludFBvaW50IHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBkZWx0YVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZWx0YVks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aGVlbFRpY2tzWCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHdoZWVsVGlja3NZLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQWNjZXB0ZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHNoaWZ0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjdHJsS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbHRLZXksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIG1ldGFLZXkpCisgICAgICAgICAgICA6IG1fcG9z
aXRpb24ocG9zaXRpb24pCisgICAgICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCisgICAgICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKKyAgICAgICAgICAgICwgbV9k
ZWx0YVkoZGVsdGFZKQorICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKHdoZWVsVGlja3NYKQor
ICAgICAgICAgICAgLCBtX3doZWVsVGlja3NZKHdoZWVsVGlja3NZKQorICAgICAgICAgICAgLCBt
X2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQorICAgICAgICAgICAgLCBtX2lzQWNjZXB0ZWQoaXNB
Y2NlcHRlZCkKKyAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgICAg
ICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKKyAg
ICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAgICAgIHsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9
IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgogICAgICAgICBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfSAvLyBTY3JlZW4g
Y29vcmRpbmF0ZXMuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9QbGF0
Zm9ybVRvdWNoRXZlbnRBbmRyb2lkLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9QbGF0
Zm9ybVRvdWNoRXZlbnRBbmRyb2lkLmNwcAppbmRleCA4YjNkMjg1Li42NTk5OWQyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvUGxhdGZvcm1Ub3VjaEV2ZW50QW5kcm9pZC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3JtVG91Y2hFdmVudEFuZHJv
aWQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKQEAgLTQwLDYgKzQxLDcgQEAgZW51bSBBbmRyb2lk
TWV0YUtleVN0YXRlIHsKIFBsYXRmb3JtVG91Y2hFdmVudDo6UGxhdGZvcm1Ub3VjaEV2ZW50KGNv
bnN0IFZlY3RvcjxJbnRQb2ludD4mIHdpbmRvd1BvaW50cywgVG91Y2hFdmVudFR5cGUgdHlwZSwg
UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBzdGF0ZSwgaW50IG1ldGFTdGF0ZSkKICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICwgbV90aW1lc3RhbXAoV1RG
OjpjdXJyZW50VGltZSgpKQogewogICAgIG1fdG91Y2hQb2ludHMucmVzZXJ2ZUNhcGFjaXR5KHdp
bmRvd1BvaW50cy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgYyA9IDA7IGMgPCB3aW5kb3dQ
b2ludHMuc2l6ZSgpOyBjKyspCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRm
b3JtVG91Y2hFdmVudFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2
ZW50UXQuY3BwCmluZGV4IDMzOGU5ZDQuLjkxYjZhNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKQEAgLTQyLDYg
KzQzLDcgQEAgUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZl
bnQqIGV2ZW50KQogICAgIG1fYWx0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRN
b2RpZmllcik7CiAgICAgbV9zaGlmdEtleSA9IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6U2hp
ZnRNb2RpZmllcik7CiAgICAgbV9tZXRhS2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpN
ZXRhTW9kaWZpZXIpOworICAgIG1fdGltZXN0YW1wID0gV1RGOjpjdXJyZW50VGltZSgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBjOTJhY2E2Li4wNTRlZGRkIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxMC0xMi0xMCAgcmprcm9lZ2VAY2hyb21pdW0ub3JnICA8cmprcm9lZ2VA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NTogdW5p
dCB0ZXN0cyBmb3IKKyAgICAgICAgdGhlIGJhc2ljIEdlc3R1cmVNYW5hZ2VyIGFuZCBhZGRpdGlv
biBvZiB0aW1lIHN0YW1wcyBpbiBjb252ZXJzaW9uCisgICAgICAgIGZyb20gV2ViVG91Y2hFdmVu
dCB0byBQbGF0Zm9ybVRvdWNoRXZlbnQuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAg
ICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAgICAq
IHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRm
b3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHRlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6dEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6Zmlyc3RUb3VjaFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OnNldFRvdWNoRHVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6dG91Y2hEdXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyOjpzZXRGaXJz
dFRvdWNoVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2Vy
OjpmaXJzdFRvdWNoVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUdlc3R1cmVN
YW5hZ2VyOjplZGdlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdGFibGVHZXN0
dXJlTWFuYWdlcjo6dFVwZGF0ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsZGFibGVQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6QnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaFBvaW50OjpzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hQb2ludDo6QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RHZXN0dXJlTWFuYWdlcjo6VGVzdEdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RHZXN0dXJlTWFuYWdlcjo6U2V0VXApOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdEdlc3R1cmVNYW5hZ2VyOjpUZWFyRG93bik6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0Yp
OgorCiAyMDEwLTEyLTEwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaSBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAwMTZj
ZjFhLi5lZTU5YTE0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysr
IGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC01NCw2ICs1NCw3IEBACiAgICAgICAg
ICd3ZWJraXRfdW5pdHRlc3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0
SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcCcsCisgICAg
ICAgICAgICAndGVzdHMvR2VzdHVyZU1hbmFnZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJL
ZXlQYXRoVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9XZWJLaXQvY2hyb21p
dW0vZmVhdHVyZXMuZ3lwaQppbmRleCAwM2U2Y2U0Li4wODVlNDgzIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMu
Z3lwaQpAQCAtNTUsNiArNTUsNyBAQAogICAgICAgICAnRU5BQkxFX0ZJTEVfU1lTVEVNPTEnLAog
ICAgICAgICAnRU5BQkxFX0ZJTFRFUlM9MScsCiAgICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049
MScsCisgICAgICAgICdFTkFCTEVfR0VTVFVSRV9NQU5BR0VSPTEnLAogICAgICAgICAnRU5BQkxF
X0lDT05EQVRBQkFTRT0wJywKICAgICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLAog
ICAgICAgICAnRU5BQkxFX0lOUFVUX1NQRUVDSD0xJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
b3VjaFBvaW50LmgKaW5kZXggZGRmYTI2Zi4uYjE1ODNlNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJUb3VjaFBvaW50LmgKQEAgLTM4LDggKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJUb3VjaFBvaW50IHsKIHB1YmxpYzoKKyAgICBlbnVtIFRvdWNoSWRlbnRpZmll
ciB7CisgICAgICBGaXJzdEZpbmdlciA9IDAsCisgICAgICBTZWNvbmRGaW5nZXIgPSAxLAorICAg
ICAgVGhpcmRGaW5nZXIgPSAyLAorICAgIH07CisKICAgICBXZWJUb3VjaFBvaW50KCkKLSAgICAg
ICAgOiBpZCgwKQorICAgICAgICA6IGlkKEZpcnN0RmluZ2VyKQogICAgICAgICAsIHN0YXRlKFN0
YXRlVW5kZWZpbmVkKSB7IH0KIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCAyNGViMzcyLi4yNGVlYjg4
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cApAQCAtMjIxLDYgKzIyMSw3IEBAIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
VG91Y2hFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYlRvCiAgICAgbV9hbHRL
ZXkgPSBldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXk7CiAgICAgbV9zaGlm
dEtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5OwogICAgIG1f
bWV0YUtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXk7CisgICAg
bV90aW1lc3RhbXAgPSBldmVudC50aW1lU3RhbXBTZWNvbmRzOwogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBldmVudC50b3VjaFBvaW50c0xlbmd0aDsgKytpKQogICAgICAgICBtX3RvdWNoUG9p
bnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKHdpZGdldCwgZXZlbnQudG91Y2hQ
b2ludHNbaV0pKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HZXN0dXJlTWFu
YWdlclRlc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyMjE3YwotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HZXN0dXJlTWFuYWdlclRlc3QuY3BwCkBA
IC0wLDAgKzEsMjQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiR2VzdHVyZU1h
bmFnZXIuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2Vy
IDogcHVibGljIFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBpbnQgdEhh
c2goU3RhdGUgZ2VzdHVyZVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWQs
CisgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHRvdWNoVHlw
ZSwgCisgICAgICAgICAgICAgICAgICAgICBib29sIGhhbmRsZWQpCisgICAgeworICAgICAgICBy
ZXR1cm4gaGFzaChnZXN0dXJlU3RhdGUsIGlkLCB0b3VjaFR5cGUsIGhhbmRsZWQpOyAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgfTsKKyAgCisgICAgSW50UG9pbnQgZmlyc3RUb3VjaFBvc2l0
aW9uKCkgeyByZXR1cm4gbV9maXJzdFRvdWNoUG9zaXRpb247IH07CisgICAgCisgICAgdm9pZCBz
ZXRUb3VjaER1cmF0aW9uKGRvdWJsZSB0KSB7IG1fdG91Y2hEdXJhdGlvbiA9IHQ7IH07CisgICAg
ZG91YmxlIHRvdWNoRHVyYXRpb24oKSB7IHJldHVybiBtX3RvdWNoRHVyYXRpb247IH07CisgIAor
ICAgIHZvaWQgc2V0Rmlyc3RUb3VjaFRpbWUoZG91YmxlIHQpIHsgbV9maXJzdFRvdWNoVGltZSA9
IHQ7IH07CisgICAgZG91YmxlIGZpcnN0VG91Y2hUaW1lKCkgeyByZXR1cm4gbV9maXJzdFRvdWNo
VGltZTsgfTsKKyAgICAKKyAgICBHZXN0dXJlTWFuYWdlcjo6R2VzdHVyZVRyYW5zaXRpb25GdW5j
dGlvbiBlZGdlRnVuY3Rpb24oaW50IGhhc2gpCisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdl
RnVuY3Rpb25zLmdldChoYXNoKTsKKyAgICB9OworICAKKyAgICB2aXJ0dWFsIHZvaWQgdFVwZGF0
ZVZhbHVlcyhkb3VibGUgZCwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50ICZwKQorICAgIHsKKyAg
ICAgICAgdXBkYXRlVmFsdWVzKGQsIHApOworICAgIH07Cit9OworCitjbGFzcyBCdWlsZGFibGVQ
bGF0Zm9ybVRvdWNoUG9pbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50IHsK
K3B1YmxpYzoKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoKTsKKyAgICBCdWlsZGFi
bGVQbGF0Zm9ybVRvdWNoUG9pbnQoaW50IHgsIGludCB5KTsKKyAgICAKKyAgICB2b2lkIHNldFgo
aW50IHgpCisgICAgeworICAgICAgbV9wb3Muc2V0WCh4KTsKKyAgICAgIG1fc2NyZWVuUG9zLnNl
dFgoeCk7CisgICAgfTsKKyAgICAKKyAgICB2b2lkIHNldFkoaW50IHkpCisgICAgeworICAgICAg
bV9wb3Muc2V0WSh5KTsKKyAgICAgIG1fc2NyZWVuUG9zLnNldFkoeSk7CisgICAgfTsKK307CisK
K0J1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludDo6QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50
KCkKK3sKKyAgICBtX2lkID0gMDsKKyAgICBtX3N0YXRlID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFN0YXRpb25hcnk7CisgICAgbV9wb3MgPSBJbnRQb2ludCgwLCAwKTsKKyAgICBtX3NjcmVl
blBvcyA9IEludFBvaW50KDAsIDApOworfTsKKworQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50
OjpCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIG1faWQg
PSAwOworICAgIG1fc3RhdGUgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsK
KyAgICBtX3BvcyA9IEludFBvaW50KHgsIHkpOworICAgIG1fc2NyZWVuUG9zID0gSW50UG9pbnQo
eCwgeSk7Cit9OworCisKK2NsYXNzIFRlc3RHZXN0dXJlTWFuYWdlciA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKK3B1YmxpYzoKKyAgICBUZXN0R2VzdHVyZU1hbmFnZXIoKSB7IH0KKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsgfQorfTsKKworVEVTVF9GKFRlc3RHZXN0dXJlTWFuYWdlciwgaGFzaCkKK3sKKyAg
ICBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIHRlc3RHbTsKKyAgICBjb25zdCB1bnNpZ25lZCBG
aXJzdEZpbmdlciA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgU2Vjb25kRmluZ2VyID0gMTsKKwor
ICAgIEFTU0VSVF9FUSgwLCB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVyZSwK
KyAgICAgICAgRmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwg
ZmFsc2UpKTsKKworICAgIEFTU0VSVF9FUSg4IHwgMSwgdGVzdEdtLnRIYXNoKEdlc3R1cmVNYW5h
Z2VyOjpOb0dlc3R1cmUsCisgICAgICAgIEZpcnN0RmluZ2VyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUHJlc3NlZCwgdHJ1ZSkpOworCisgICAgQVNTRVJUX0VRKDB4MTAwMDAgfCAyLCB0ZXN0
R20udEhhc2goR2VzdHVyZU1hbmFnZXI6OlBlbmRpbmdTeW50aGV0aWNDbGljaywKKyAgICAgICAg
Rmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCwgZmFsc2UpKTsKKwor
ICAgIEFTU0VSVF9FUSgweDIwMDAwLCB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6OlNjcm9s
bCwKKyAgICAgICAgRmlyc3RGaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNl
ZCwgZmFsc2UpKTsKKworICAgIEFTU0VSVF9FUSgweDIwMDAwIHwgMSwgdGVzdEdtLnRIYXNoKEdl
c3R1cmVNYW5hZ2VyOjpTY3JvbGwsCisgICAgICAgIEZpcnN0RmluZ2VyLCBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZCwgZmFsc2UpKTsKKworICAgIEFTU0VSVF9FUSgweDIwMDAwIHwg
MHgxMCB8IDggfCAxLAorICAgICAgICB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6OlNjcm9s
bCwgU2Vjb25kRmluZ2VyIHwgMHgxMDAwLCAKKyAgICAgICAgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFByZXNzZWQsIHRydWUpKTsKK30KKworCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCBz
dGF0ZSkKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIHRlc3RHbTsKKworICAgIEFT
U0VSVF9FUSgwLCB0ZXN0R20uc3RhdGUoKSk7CisgICAgdGVzdEdtLnNldFN0YXRlKEdlc3R1cmVN
YW5hZ2VyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOworICAgIEFTU0VSVF9FUShHZXN0dXJlTWFu
YWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCB0ZXN0R20uc3RhdGUoKSk7Cit9CisKKworVEVT
VF9GKFRlc3RHZXN0dXJlTWFuYWdlciwgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUpCit7CisgICAg
SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlciBnbTsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNo
UG9pbnQgcDsKKworICAgIEFTU0VSVF9FUSgwLjAsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLngo
KSk7CisgICAgQVNTRVJUX0VRKDAuMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueSgpKTsKKyAg
CisgICAgcC5zZXRYKDAuMCk7CisgICAgcC5zZXRZKDE5Ljk5OSk7CisgICAgQVNTRVJUX1RSVUUo
Z20uaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOworICAgIAorICAgIHAuc2V0WCgxOS45OTkp
OworICAgIHAuc2V0WSgwLjApOworICAgIEFTU0VSVF9UUlVFKGdtLmlzSW5zaWRlTWFuaGF0dGFu
U3F1YXJlKHApKTsKKworICAgIHAuc2V0WCgyMC4wKTsKKyAgICBwLnNldFkoMC4wKTsKKyAgICBB
U1NFUlRfRkFMU0UoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOworICAgIAorICAgIHAu
c2V0WCgwLjApOworICAgIHAuc2V0WSgyMC4wKTsKKyAgICBBU1NFUlRfRkFMU0UoZ20uaXNJbnNp
ZGVNYW5oYXR0YW5TcXVhcmUocCkpOworICAgIAorICAgIHAuc2V0WCgtMjAuMCk7CisgICAgcC5z
ZXRZKDAuMCk7CisgICAgQVNTRVJUX0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHAp
KTsKKyAgICAKKyAgICBwLnNldFgoMC4wKTsKKyAgICBwLnNldFkoLTIwLjApOworICAgIEFTU0VS
VF9GQUxTRShnbS5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwKSk7Cit9CisKK1RFU1RfRihUZXN0
R2VzdHVyZU1hbmFnZXIsIGlzSW5DbGlja1RpbWVXaW5kb3cpCit7CisgICAgSW5zcGVjdGFibGVH
ZXN0dXJlTWFuYWdlciBnbTsKKyAgICAKKyAgICBnbS5zZXRUb3VjaER1cmF0aW9uKDAuMCk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGdtLmlzSW5DbGlja1RpbWVXaW5kb3coKSk7CisgICAgCisgICAgZ20u
c2V0VG91Y2hEdXJhdGlvbigwLjAxMDAwMSk7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbkNsaWNr
VGltZVdpbmRvdygpKTsKKyAgICAKKyAgICBnbS5zZXRUb3VjaER1cmF0aW9uKDAuOCAtIC4wMDAw
MDAwMSk7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbkNsaWNrVGltZVdpbmRvdygpKTsKKyAgICAK
KyAgICBnbS5zZXRUb3VjaER1cmF0aW9uKDAuODAwMDEpOworICAgIEFTU0VSVF9GQUxTRShnbS5p
c0luQ2xpY2tUaW1lV2luZG93KCkpOworfQorCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCBh
ZGRFZGdlRnVuY3Rpb24pCit7CisgICAgSW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlciBnbTsKKyAg
ICBnbS5hZGRFZGdlRnVuY3Rpb24oR2VzdHVyZU1hbmFnZXI6OlNjcm9sbCwgMCwKKyAgICAgICAg
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCB0cnVlLAorICAgICAgICAoR2VzdHVy
ZU1hbmFnZXI6Okdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24pNDA5Nik7CisgICAgCisgICAgQVNT
RVJUX0VRKChHZXN0dXJlTWFuYWdlcjo6R2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbik0MDk2LAor
ICAgICAgICBnbS5lZGdlRnVuY3Rpb24oZ20udEhhc2goR2VzdHVyZU1hbmFnZXI6OlNjcm9sbCwK
KyAgICAgICAgIDAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgdHJ1ZSkpKTsK
K30KKworVEVTVF9GKFRlc3RHZXN0dXJlTWFuYWdlciwgdXBkYXRlVmFsdWVzKQoreworICAgIElu
c3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIgZ207CisKKyAgICBBU1NFUlRfRVEoMC4wLCBnbS5maXJz
dFRvdWNoVGltZSgpKTsKKyAgICBBU1NFUlRfRVEoMC4wLCBnbS50b3VjaER1cmF0aW9uKCkpOwor
ICAgIEFTU0VSVF9FUShHZXN0dXJlTWFuYWdlcjo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKKwor
ICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBwMSgxMCwgMTEpOworICAgIGdtLnRVcGRh
dGVWYWx1ZXMoMS4xLCBwMSk7CisgICAgCisgICAgQVNTRVJUX0VRKDEwLCBnbS5maXJzdFRvdWNo
UG9zaXRpb24oKS54KCkpOworICAgIEFTU0VSVF9FUSgxMSwgZ20uZmlyc3RUb3VjaFBvc2l0aW9u
KCkueSgpKTsKKyAgICBBU1NFUlRfRVEoMS4xLCBnbS5maXJzdFRvdWNoVGltZSgpKTsKKyAgICBB
U1NFUlRfRVEoMC4wLCBnbS50b3VjaER1cmF0aW9uKCkpOworCisgICAgQnVpbGRhYmxlUGxhdGZv
cm1Ub3VjaFBvaW50IHAyKDEzLCAxNCk7CisgICAgZ20uc2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6
OlBlbmRpbmdTeW50aGV0aWNDbGljayk7CisgICAgZ20udFVwZGF0ZVZhbHVlcygyLjAsIHAyKTsK
KyAgICAgICAgICAgICAgICAKKyAgICBBU1NFUlRfRVEoMTAsIGdtLmZpcnN0VG91Y2hQb3NpdGlv
bigpLngoKSk7CisgICAgQVNTRVJUX0VRKDExLCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55KCkp
OworICAgIEFTU0VSVF9FUSgxLjEsIGdtLmZpcnN0VG91Y2hUaW1lKCkpOworICAgIEFTU0VSVF9F
USgyLjAgLSAxLjEsIGdtLnRvdWNoRHVyYXRpb24oKSk7CisKKyAgICBCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoUG9pbnQgcDMoMjMsIDM0KTsKKyAgICBnbS5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6
Tm9HZXN0dXJlKTsKKyAgICBnbS50VXBkYXRlVmFsdWVzKDMuMCwgcDMpOworICAgICAgICAgICAg
ICAgIAorICAgIEFTU0VSVF9FUSgyMywgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueCgpKTsKKyAg
ICBBU1NFUlRfRVEoMzQsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLnkoKSk7CisgICAgQVNTRVJU
X0VRKDMuMCwgZ20uZmlyc3RUb3VjaFRpbWUoKSk7CisgICAgQVNTRVJUX0VRKDAuMCwgZ20udG91
Y2hEdXJhdGlvbigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>
<flag name="review"
          id="67206"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
    <flag name="commit-queue"
          id="67207"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76833</attachid>
            <date>2010-12-16 17:24:58 -0800</date>
            <delta_ts>2011-02-09 15:43:16 -0800</delta_ts>
            <desc>fifth patch</desc>
            <filename>patch5.diff</filename>
            <type>text/plain</type>
            <size>46442</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjMjA1YWY2Li4zOTRkNzQwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMTItMTYgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZsYWcgdG8g
ZW5hYmxlL2Rpc2FibGUgYSBHZXN0dXJlTWFuYWdlciBmcmFtZXdvcmsKKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybS5oOgorICAgICAgICAKIDIwMTAtMTItMTYgIEFyaXlhIEhpZGF5YXQgIDxhcml5
YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCmluZGV4IDg3YTEyY2MuLjVlN2FiOWMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
CkBAIC05MjEsNiArOTIxLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCiAjZW5k
aWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9HRVNUVVJFX01BTkFHRVIpCisjZGVmaW5lIEVOQUJM
RV9HRVNUVVJFX01BTkFHRVIgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykKICNkZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjQ3OTk4Yi4uZDI1MjRmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEyLTE2ICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIExheW91dCB0ZXN0cyB0byBzaG93
IGNvcnJlY3Qgb3BlcmF0aW9uIG9mIEdlc3R1cmVNYW5hZ2VyIHNhbXBsZSBnZXN0dXJlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtY2xpY2stZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNr
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUt
c2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTItMTYgIEFu
ZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLiAgVXBkYXRpbmcgQ2hyb21pdW0gbWVkaWEgdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUt
Y2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNm
OGRlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90
b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRl
c3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBnZXN0dXJlIGdlbmVyYXRpb24uCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitHZXN0dXJlIG1hbmFnZXIgbm90IGltcGxlbWVudGVkIG9uIHRo
aXMgcGxhdGZvcm0uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gt
Z2VzdHVyZS1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gt
Z2VzdHVyZS1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFm
YmUzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90
b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKQEAgLTAsMCArMSw4NyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rp
b24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgordmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2LmlkID0gInRvdWNodGFyZ2V0IjsKK2Rpdi5z
dHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1ZSI7CisKK3ZhciBjbGlja0V2ZW50c1JlY2VpdmVk
ID0gMDsKK3ZhciBleHBlY3RlZE1vdXNlRXZlbnRzID0gMzsKK3ZhciB0b3VjaEV2ZW50c1JlY2Vp
dmVkID0gMDsKK3ZhciBldmVudFR5cGVzID0gWyAnbW91c2Vkb3duJywgJ21vdXNldXAnLCAnY2xp
Y2snIF07CisKK2Z1bmN0aW9uIGdlc3R1cmVFdmVudENhbGxiYWNrKGV2ZW50KQoreworICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdl
dmVudC50eXBlJywgZXZlbnRUeXBlc1t0b3VjaEV2ZW50c1JlY2VpdmVkXSk7CisgICAgICAgIHNo
b3VsZEJlKCdldmVudC5jbGllbnRYJywgJzEwJyk7CisgICAgICAgIHNob3VsZEJlKCdldmVudC5j
bGllbnRZJywgJzEyJyk7CisgICAgICAgIHRvdWNoRXZlbnRzUmVjZWl2ZWQrKzsKKyAgICB9IGVs
c2UgeworICAgICAgICBkZWJ1ZyhldmVudC50eXBlKTsKKyAgICAgICAgZGVidWcoZXZlbnQuY2xp
ZW50WCk7CisgICAgICAgIGRlYnVnKGV2ZW50LmNsaWVudFkpOworICAgIH0KK30KKworZnVuY3Rp
b24gc2luZ2xlVG91Y2hTZXF1ZW5jZSgpCit7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2lu
dCgxMCwgMTIpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKworICAgIC8vIEluc2Vy
dCBzb21lIGRlbGF5LiBOQjogdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIG1pbkNsaWNrRG93blRpbWUs
CisgICAgLy8gbWF4Q2xpY2tEb3duVGltZSBmcm9tIEdlc3R1cmVNYW5hZ2VyLmNwcAorICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDIwKTsKKworICAgIGV2ZW50U2VuZGVyLnJlbGVhc2VUb3Vj
aFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7Cit9CisKKy8vIEVuZCBieSB0
aW1lciB0byBydW4gY29ycmVjdGx5IG9uIG5vbi1DaHJvbWl1bSBwbGF0Zm9ybXMuCitmdW5jdGlv
biBlbmRUZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHRv
dWNoRXZlbnRzUmVjZWl2ZWQgPAorICAgICAgICAgICAgZXhwZWN0ZWRNb3VzZUV2ZW50cykgewor
ICAgICAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBs
YXRmb3JtLicpOworICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgZ2VzdHVyZUV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7CitkaXYuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIGdlc3R1cmVFdmVudENhbGxiYWNrLCBmYWxzZSk7Citkb2N1bWVudC5i
b2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgYmFzaWMgc2luZ2xlIHRvdWNoIGdlc3R1cmUgZ2VuZXJhdGlvbi4iKTsK
KyAgICBpZiAoISFldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgICAgIGV2ZW50
U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICAgICAgc2luZ2xlVG91Y2hTZXF1ZW5jZSgp
OworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0KK30gZWxzZSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVy
VHJlZS4gIFRhcCBvbiB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKQorfQorCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJiNjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBm
cm9tIHRvdWNoIGV2ZW50cy4gU3F1YXJlIGlzIChtb3N0bHkpIGdyZWVuIG9uIHBhc3MKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0dlc3R1cmUgbWFuYWdlciBub3QgaW1wbGVtZW50
ZWQgb24gdGhpcyBwbGF0Zm9ybSBvciBicm9rZW4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zNmIzMzJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDE3
MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyN0b3VjaHRhcmdldCB7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsK
KyAgcG9zaXRpb246IHJlbGF0aXZlOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworI21vdmlu
Z2JveCB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsJCQorICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgIG92ZXJmbG93LXk6IHNjcm9sbDsK
KyAgb3ZlcmZsb3cteDogc2Nyb2xsOworICBkaXNwbGF5OiBibG9jazsKK30KKworI2dyZWVuYm94
IHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWlnaHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kOiBncmVl
bjsKKyAgcGFkZGluZzogMHB4OworICBtYXJnaW46IDBweDsKK30KKworI3JlZGJveCB7CisgIHdp
ZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiAxMDBweDsKKyAgYmFja2dyb3VuZDogcmVkOworICBwYWRk
aW5nOiAwcHg7CisgIG1hcmdpbjogMHB4OworfQorCit0ZCB7CisgIHBhZGRpbmc6IDBweDsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiIG9ubG9hZD0icnVuVGVz
dCgpOyI+Cis8ZGl2IGlkPSJ0b3VjaHRhcmdldCI+CisgIDxkaXYgaWQ9Im1vdmluZ2JveCI+Cisg
ICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjBweCI+CisgICAgICA8dHI+CisgICAg
ICAgIDx0ZD48ZGl2IGlkPSJyZWRib3giPjwvZGl2PjwvdGQ+CisgICAgICAgIDx0ZD48ZGl2IGlk
PSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgICA8dHI+CisgICAgICAg
IDx0ZD48ZGl2IGlkPSJncmVlbmJveCI+PC9kaXY+PC90ZD4KKyAgICAgICAgPHRkPjxkaXYgaWQ9
ImdyZWVuYm94Ij48L2Rpdj48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3RhYmxlPgorICA8L2Rp
dj4KKzwvZGl2PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgbW92aW5nZGl2
OwordmFyIEVYUEVDVEVEX1NDUk9MTFNfVE9UQUwgPSAyOwordmFyIHNjcm9sbHNPY2N1cnJlZCA9
IDA7Cit2YXIgc2Nyb2xsQW1vdW50WCA9IFsnOTAnLCAnOTAnXTsKK3ZhciBzY3JvbGxBbW91bnRZ
ID0gWycwJywgJzk1J107CisKK2Z1bmN0aW9uIGNoZWNrU2Nyb2xsT2Zmc2V0KCkKK3sKKyAgICBt
b3ZpbmdkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW92aW5nYm94Jyk7CisgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBzaG91bGRCZSgnbW92aW5nZGl2LnNjcm9s
bFRvcCcsIHNjcm9sbEFtb3VudFlbc2Nyb2xsc09jY3VycmVkXSk7CisgICAgICAgIC8vIHNob3Vs
ZEJlKFN0cmluZyhtb3ZpbmdkaXYuc2Nyb2xsVG9wKSwgc2Nyb2xsQW1vdW50WVtzY3JvbGxzT2Nj
dXJyZWRdKTsKKyAgICAgICAgc2hvdWxkQmUoJ21vdmluZ2Rpdi5zY3JvbGxMZWZ0Jywgc2Nyb2xs
QW1vdW50WFtzY3JvbGxzT2NjdXJyZWRdKTsKKyAgICAgICAgc2Nyb2xsc09jY3VycmVkKys7Cisg
ICAgfQorCisgICAgaWYgKHNjcm9sbHNPY2N1cnJlZCA9PSBFWFBFQ1RFRF9TQ1JPTExTX1RPVEFM
KSB7CisgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSd2ZSBwYXNzZWQuCisgICAgICAg
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCk7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2Vjb25kVG91Y2hEcmFnU2VxdWVuY2UoKTsgICAgCisgICAgfQorfQorCitmdW5jdGlvbiBm
aW5nZXJVcChldmVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgZGVidWcoJ21vdmVkOiAnICsgZXZlbnQuY3VycmVudFRhcmdldC5zY3JvbGxUb3Ag
KyAnLCAnICsgZXZlbnQuY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0KTsKKyAgICByZXR1cm4gdHJ1
ZTsgIC8vIFdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgorfQorCitmdW5jdGlvbiBmaXJzdFRv
dWNoRHJhZ1NlcXVlbmNlKCkKK3sKKyAgICBkZWJ1ZygiZmlyc3QgZ2VzdHVyZSIpOworICAgIGV2
ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBv
aW50KDk1LCAxMik7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgLy8gU2Ny
b2xsIHRoZSBkaXYgdG8gdGhlIGxlZnQuCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2lu
dCgwLCA1LCAxMik7ICAgIAorICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworICAgIAorICAg
IGV2ZW50U2VuZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNo
RW5kKCk7CisKKyAgICAvLyBXYWl0IGZvciBsYXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQo
KTsKK30KKworZnVuY3Rpb24gc2Vjb25kVG91Y2hEcmFnU2VxdWVuY2UoKQoreworICAgIGRlYnVn
KCJzZWNvbmQgZ2VzdHVyZSIpOworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsK
KyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDEyLCA5Nyk7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hTdGFydCgpOworICAgIAorICAgIC8vIFNjcm9sbCB0aGUgcmVjdGFuZ2xlIGRvd24uCisg
ICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAxMiwgMik7ICAgIAorICAgIGV2ZW50
U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQo
MCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKyAgICAKKyAgICAvLyBXYWl0IGZvciBs
YXlvdXQuCisgICAgY2hlY2tTY3JvbGxPZmZzZXQoKTsKK30KKworZnVuY3Rpb24gZXhpdElmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBkZWJ1ZygnR2VzdHVyZSBtYW5hZ2VyIG5vdCBpbXBsZW1lbnRlZCBv
biB0aGlzIHBsYXRmb3JtIG9yIGJyb2tlbicpOworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2
YXIgbW92aW5nZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vdmluZ2JveCcpOworICAg
IAorICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oJ1Ro
aXMgdGVzdHMgc2Nyb2xsIGdlc3R1cmUgZ2VuZXJhdGlvbiBmcm9tIHRvdWNoIGV2ZW50cy4gJyAr
CisgICAgICAgICAgICAnU3F1YXJlIGlzIChtb3N0bHkpIGdyZWVuIG9uIHBhc3MnKTsKKworICAg
ICAgICBpZiAoZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cykKKyAgICAgICAgICAgIGZpcnN0
VG91Y2hEcmFnU2VxdWVuY2UoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhpdElmTmVj
ZXNzYXJ5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJl
cyBEdW1wUmVuZGVyVHJlZS4gIFRvdWNoIHNjcm9sbCB0aGUgcmVkIHJlY3QgdG8gbG9nLiIpOwor
ICAgICAgICBtb3ZpbmdkaXYuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBmaW5nZXJVcCwg
ZmFsc2UpOworICAgIH0KK30KKzwvc2NyaXB0PgorCisKKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNsaWNrLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmZjOWM5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtZ2VzdHVyZS1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0
ZXN0cyBiYXNpYyBzaW5nbGUgdG91Y2ggZ2VzdHVyZSBnZW5lcmF0aW9uLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBldmVudC50eXBlIGlzICJtb3VzZWRvd24iCitQQVNT
IGV2ZW50LmNsaWVudFggaXMgMTAKK1BBU1MgZXZlbnQuY2xpZW50WSBpcyAxMgorUEFTUyBldmVu
dC50eXBlIGlzICJtb3VzZXVwIgorUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCitQQVNTIGV2ZW50
LmNsaWVudFkgaXMgMTIKK1BBU1MgZXZlbnQudHlwZSBpcyAiY2xpY2siCitQQVNTIGV2ZW50LmNs
aWVudFggaXMgMTAKK1BBU1MgZXZlbnQuY2xpZW50WSBpcyAxMgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1nZXN0dXJlLXNjcm9sbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uM2UyNjc5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3RzIHNjcm9sbCBnZXN0dXJl
IGdlbmVyYXRpb24gZnJvbSB0b3VjaCBldmVudHMuIFNxdWFyZSBpcyAobW9zdGx5KSBncmVlbiBv
biBwYXNzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitmaXJzdCBnZXN0dXJlCitQ
QVNTIG1vdmluZ2Rpdi5zY3JvbGxUb3AgaXMgMAorUEFTUyBtb3ZpbmdkaXYuc2Nyb2xsTGVmdCBp
cyA5MAorc2Vjb25kIGdlc3R1cmUKK1BBU1MgbW92aW5nZGl2LnNjcm9sbFRvcCBpcyA5NQorUEFT
UyBtb3ZpbmdkaXYuc2Nyb2xsTGVmdCBpcyA5MAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGExYzAwNDYuLjkyNThhNTUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIw
MTAtMTItMTYgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1OiBhZGRlZCBhIGJhc2ljCisg
ICAgICAgIEdlc3R1cmVNYW5hZ2VyIGZyYW1ld29yayB3aXRoIHR3byBzYW1wbGUgZ2VzdHVyZXMg
KGNsaWNrIGFuZCBzY3JvbGwpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGltZSBzdGFtcHMg
dG8gUGxhdGZvcm1Ub3VjaEV2ZW50IHRvIHBlcm1pdCBub24tZmxha3kKKyAgICAgICAgbGF5b3V0
IHRlc3RzIHdpdGggdXNlZnVsIGluaXRpYWxpemF0aW9uIG9uIEFuZHJvaWQgYW5kIFF0LgorCisg
ICAgICAgIEFkZGVkIGFuIGFkZGl0aW9uYWwgY29uc3RydWN0b3IgdG8gUGxhdGZvcm1XaGVlbEV2
ZW50IHRvIHBlcm1pdAorICAgICAgICBjb25zdHJ1Y3Rpbmcgc3ludGhldGljIGV2ZW50IGluc3Rh
bmNlcy4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1j
bGljay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJl
LXNjcm9sbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpnZXN0dXJlTWFuYWdlcik6CisgICAgICAgICogcGFnZS9HZXN0dXJlTWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyOjp+R2VzdHVyZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OmFkZEVkZ2VGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6aXNJbkNsaWNrVGltZVdpbmRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OmRpc3BhdGNoU3ludGhldGlj
Q2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OmluaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6c2Nyb2xsVmlhVG91Y2hNb3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZU1hbmFnZXI6OnVwZGF0ZVZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjp0
b3VjaERvd24pOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Y2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2tPclNjcm9sbCk6CisgICAgICAgIChXZWJD
b3JlOjppblNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHZXN0dXJlTWFuYWdlcik6
CisgICAgICAgICogcGFnZS9HZXN0dXJlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Okdlc3R1cmVNYW5hZ2VyOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
TWFuYWdlcjo6c3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50Ojp0aW1lc3RhbXApOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2FuZHJvaWQvUGxhdGZvcm1Ub3VjaEV2ZW50QW5kcm9pZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOgorCiAyMDEwLTEyLTE2
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY2ZmNjZjQuLjEzMzVjZmMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
MzA4LDYgKzIzMDgsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNh
Y2hlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCcs
CiAgICAgICAgICAgICAncGFnZS9HZW9wb3NpdGlvbi5oJywKKyAgICAgICAgICAgICdwYWdlL0dl
c3R1cmVNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAncGFnZS9HZXN0dXJlTWFuYWdlci5oJywK
ICAgICAgICAgICAgICdwYWdlL0dyb3VwU2V0dGluZ3MuY3BwJywKICAgICAgICAgICAgICdwYWdl
L0dyb3VwU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAncGFnZS9IYWx0YWJsZVBsdWdpbi5oJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjgxNDk4YS4uM2Q4ZjU1ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTg4LDYgKzg4LDEwIEBACiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorI2luY2x1ZGUgIkdlc3R1cmVNYW5hZ2Vy
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtMTk1LDYgKzE5OSw5IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZy
YW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNz
ZWQoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9NQU5BR0VSKQorICAgICwgbV9n
ZXN0dXJlTWFuYWdlcihjcmVhdGVHZXN0dXJlTWFuYWdlcih0aGlzKSkKKyNlbmRpZgogewogfQog
CkBAIC0zMDI3LDYgKzMwMzQsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgZGVmYXVsdFByZXZl
bnRlZCB8PSBtb3ZlRXYtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUo
R0VTVFVSRV9NQU5BR0VSKQorICAgIG1fZ2VzdHVyZU1hbmFnZXItPnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7CisjZW5kaWYKKwogICAg
IHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXgg
NjU2OTVjMi4uYzgxYjVjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKF9fT0JKQ19fKQpAQCAtNzgsNiAr
NzksMTAgQEAgZXh0ZXJuIGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29u
c3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogCisjaWYgRU5BQkxFKEdFU1RVUkVfTUFOQUdFUikKK2NsYXNzIEdlc3R1cmVNYW5hZ2Vy
OworI2VuZGlmCisKIGVudW0gSGl0VGVzdFNjcm9sbGJhcnMgeyBTaG91bGRIaXRUZXN0U2Nyb2xs
YmFycywgRG9udEhpdFRlc3RTY3JvbGxiYXJzIH07CiAKIGNsYXNzIEV2ZW50SGFuZGxlciA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CkBAIC0yMTYsNiArMjIxLDEwIEBAIHB1YmxpYzoKICAgICBib29s
IGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShHRVNUVVJFX01BTkFHRVIpCisgICAgR2VzdHVyZU1hbmFnZXIqIGdlc3R1cmVN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9nZXN0dXJlTWFuYWdlci5nZXQoKTsgfQorI2VuZGlm
CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBlbnVtIERyYWdBbmRE
cm9wSGFuZGxlVHlwZSB7CkBAIC00MzcsNiArNDQ2LDkgQEAgcHJpdmF0ZToKICAgICBUb3VjaFRh
cmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3RvdWNo
UHJlc3NlZDsKICNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX01BTkFHRVIpCisgICAgT3duUHRy
PEdlc3R1cmVNYW5hZ2VyPiBtX2dlc3R1cmVNYW5hZ2VyOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIu
Y3BwIGIvV2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kYWUwMDBhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdl
L0dlc3R1cmVNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIxOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZXN0dXJlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVl
bEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRWRnZSBmdW5jdGlvbnMuCitz
dGF0aWMgYm9vbCBjbGljayhHZXN0dXJlTWFuYWdlciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYpOworc3RhdGljIGJvb2wgY2xpY2tPclNjcm9sbChHZXN0dXJlTWFuYWdlciosIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYpOworc3RhdGljIGJvb2wgaW5TY3JvbGwoR2VzdHVyZU1hbmFnZXIq
LCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKK3N0YXRpYyBib29sIHJlc2V0KEdlc3R1cmVN
YW5hZ2VyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CitzdGF0aWMgYm9vbCB0b3VjaERv
d24oR2VzdHVyZU1hbmFnZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKworLy8gRklY
TUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1tYXRpY2FsbHkuCisvLyBNYXhpbXVt
IGhvbGQgZG93biAocykgZm9yIGEgdG91Y2ggdG8gYmUgdHJlYXRlZCBhcyBhIGNsaWNrLgorc3Rh
dGljIGNvbnN0IGRvdWJsZSBtYXhDbGlja0Rvd25UaW1lID0gMC44OworCisvLyBNaW5pbXVtIGhv
bGQgZG93biAocykgZm9yIGEgdG91Y2ggdG8gYmUgdHJlYXRlZCBhcyBhIGNsaWNrLgorc3RhdGlj
IGNvbnN0IGRvdWJsZSBtaW5DbGlja0Rvd25UaW1lID0gMC4wMTsKKworLy8gTWF4aW11bSBtYW5o
YXR0YW4gZGlzcGxhY2VtZW50IGZvciB0b3VjaCBtb3Rpb24gdG8KKy8vIHN0aWxsIGJlIGNvbnNp
ZGVyZWQgYXMgYSBjbGljay4KK3N0YXRpYyBjb25zdCBpbnQgbWF4TWFuaGF0dGFuRGlzdGFuY2Ug
PSAyMDsKKworR2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVNYW5hZ2VyKEV2ZW50SGFuZGxlciogZXZl
bnRIYW5kbGVyKQorICAgIDogbV9maXJzdFRvdWNoVGltZSgwLjApCisgICAgLCBtX3N0YXRlKEdl
c3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUpCisgICAgLCBtX2xhc3RUb3VjaFRpbWUoMC4wKQorICAg
ICwgbV9ldmVudEhhbmRsZXIoZXZlbnRIYW5kbGVyKQoreworfQorCitHZXN0dXJlTWFuYWdlcjo6
fkdlc3R1cmVNYW5hZ2VyKCkKK3sKK30KKwordm9pZCBHZXN0dXJlTWFuYWdlcjo6YWRkRWRnZUZ1
bmN0aW9uKFN0YXRlIHN0YXRlLCB1bnNpZ25lZCBmaW5nZXIsIFBsYXRmb3JtVG91Y2hQb2ludDo6
U3RhdGUgdG91Y2hUeXBlLCBib29sIGhhbmRsZWQsIEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24g
ZikKK3sKKyAgICBtX2VkZ2VGdW5jdGlvbnMuYWRkKGhhc2goc3RhdGUsIGZpbmdlciwgdG91Y2hU
eXBlLCBoYW5kbGVkKSwgZik7Cit9CisKK2Jvb2wgR2VzdHVyZU1hbmFnZXI6OmlzSW5DbGlja1Rp
bWVXaW5kb3coKQoreworICAgIGRvdWJsZSBkdXJhdGlvbihtX2xhc3RUb3VjaFRpbWUgLSBtX2Zp
cnN0VG91Y2hUaW1lKTsKKyAgICByZXR1cm4gZHVyYXRpb24gPj0gbWluQ2xpY2tEb3duVGltZSAm
JiBkdXJhdGlvbiA8IG1heENsaWNrRG93blRpbWU7Cit9CisKK2Jvb2wgR2VzdHVyZU1hbmFnZXI6
OmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCkKK3sK
KyAgICBpbnQgbWFuaGF0dGFuRGlzdGFuY2UgPSBhYnMocC5wb3MoKS54KCkgLSBtX2ZpcnN0VG91
Y2hQb3NpdGlvbi54KCkpICsKKyAgICAgICAgYWJzKHAucG9zKCkueSgpIC0gbV9maXJzdFRvdWNo
UG9zaXRpb24ueSgpKTsKKyAgICByZXR1cm4gbWFuaGF0dGFuRGlzdGFuY2UgPCBtYXhNYW5oYXR0
YW5EaXN0YW5jZTsKK30KKwordm9pZCBHZXN0dXJlTWFuYWdlcjo6ZGlzcGF0Y2hTeW50aGV0aWND
bGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApCit7CisgICAgLy8gTkI6IHN5bnRoZXRp
YyBldmVudHMgYXJlIG5vdCBkZWxpdmVyZWQgdG8gcGx1Zy1pbnMuCisgICAgLy8gTkI6IHRvdWNo
LWJhc2VkIFVYIG5lZWRzIGN1c3RvbSBwb3B1cCBjb21wb25lbnRzLgorICAgIFBsYXRmb3JtTW91
c2VFdmVudCBmYWtlTW91c2VEb3duKHAucG9zKCksIHAuc2NyZWVuUG9zKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbV9sYXN0
VG91Y2hUaW1lKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAocC5wb3MoKSwg
cC5zY3JlZW5Qb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2VkLCAxLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbV9sYXN0VG91Y2hUaW1lKTsKKworICAgIG1fZXZlbnRIYW5k
bGVyLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CisgICAgbV9ldmVudEhh
bmRsZXItPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKK30KKwordm9pZCBH
ZXN0dXJlTWFuYWdlcjo6aW5pdCgpCit7CisgICAgY29uc3QgdW5zaWduZWQgRmlyc3RGaW5nZXIg
PSAwOworICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUgUmVsZWFzZWQgPSBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50OjpTdGF0ZSBQcmVzc2VkID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7Cisg
ICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSBNb3ZlZCA9IFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZDsKKyAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIFN0
YXRpb25hcnkgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKyAgICBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIENhbmNlbGxlZCA9IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hDYW5jZWxsZWQ7CisKKyAgICBhZGRFZGdlRnVuY3Rpb24oTm9HZXN0dXJlLCBGaXJz
dEZpbmdlciwgUHJlc3NlZCwgZmFsc2UsIHRvdWNoRG93bik7CisgICAgYWRkRWRnZUZ1bmN0aW9u
KFBlbmRpbmdTeW50aGV0aWNDbGljaywgRmlyc3RGaW5nZXIsIENhbmNlbGxlZCwgZmFsc2UsIHJl
c2V0KTsKKyAgICBhZGRFZGdlRnVuY3Rpb24oUGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBGaXJzdEZp
bmdlciwgUmVsZWFzZWQsIGZhbHNlLCBjbGljayk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFBlbmRp
bmdTeW50aGV0aWNDbGljaywgRmlyc3RGaW5nZXIsIE1vdmVkLCBmYWxzZSwgY2xpY2tPclNjcm9s
bCk7CisgICAgYWRkRWRnZUZ1bmN0aW9uKFBlbmRpbmdTeW50aGV0aWNDbGljaywgRmlyc3RGaW5n
ZXIsIFN0YXRpb25hcnksIGZhbHNlLCBjbGlja09yU2Nyb2xsKTsKKyAgICBhZGRFZGdlRnVuY3Rp
b24oU2Nyb2xsLCBGaXJzdEZpbmdlciwgTW92ZWQsIGZhbHNlLCBpblNjcm9sbCk7CisgICAgYWRk
RWRnZUZ1bmN0aW9uKFNjcm9sbCwgRmlyc3RGaW5nZXIsIFJlbGVhc2VkLCBmYWxzZSwgcmVzZXQp
OworICAgIGFkZEVkZ2VGdW5jdGlvbihTY3JvbGwsIEZpcnN0RmluZ2VyLCBDYW5jZWxsZWQsIGZh
bHNlLCByZXNldCk7Cit9CisKK2Jvb2wgR2VzdHVyZU1hbmFnZXI6OnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBFdmVudEhhbmRsZXIq
IGV2ZW50SGFuZGxlciwgYm9vbCBoYW5kbGVkKQoreworICAgIG1fZXZlbnRIYW5kbGVyID0gZXZl
bnRIYW5kbGVyOworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+JiBwb2ludHMg
PSBldmVudC50b3VjaFBvaW50cygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2lu
dHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwID0g
cG9pbnRzW2ldOworICAgICAgICB1cGRhdGVWYWx1ZXMoZXZlbnQudGltZXN0YW1wKCksIHApOwor
CisgICAgICAgIGlmIChHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVmID0gbV9lZGdlRnVuY3Rp
b25zLmdldChoYXNoKG1fc3RhdGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBoYW5kbGVkKSkpCisgICAg
ICAgICAgICBoYW5kbGVkID0gKCplZikodGhpcywgcCk7CisgICAgICAgIC8vIFRoZSBncmFwaCBp
cyBzcGFyc2U6IG5vdCBhbGwgZWRnZXMgaGF2ZSBmdW5jdGlvbnMuICAgICAgICAKKyAgICB9Cisg
ICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKK3ZvaWQgR2VzdHVyZU1hbmFnZXI6OnNjcm9sbFZpYVRv
dWNoTW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdHApCit7CisgICAgZmxvYXQgZGVs
dGFYKHRwLnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSk7CisgICAgZmxvYXQg
ZGVsdGFZKHRwLnBvcygpLnkoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLnkoKSk7CisgICAgCisg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQodHAucG9zKCksIHRwLnNj
cmVlblBvcygpLCBkZWx0YVgsIGRlbHRhWSwgZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEy
MCksIGRlbHRhWSAvIHN0YXRpY19jYXN0PGZsb2F0PigxMjApLCBTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX2V2ZW50SGFu
ZGxlci0+aGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2ZW50KTsKKyAgICBtX2ZpcnN0
VG91Y2hQb3NpdGlvbiA9IHRwLnBvcygpOworfQorCit2b2lkIEdlc3R1cmVNYW5hZ2VyOjp1cGRh
dGVWYWx1ZXMoY29uc3QgZG91YmxlIHRvdWNoVGltZSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiB0cCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBOb0dlc3R1cmUpIHsKKyAgICAgICAgbV9maXJz
dFRvdWNoVGltZSA9IHRvdWNoVGltZTsKKyAgICAgICAgbV9sYXN0VG91Y2hUaW1lID0gdG91Y2hU
aW1lOworICAgICAgICBtX2ZpcnN0VG91Y2hQb3NpdGlvbiA9IHRwLnBvcygpOworICAgIH0gZWxz
ZQorICAgICAgICBtX2xhc3RUb3VjaFRpbWUgPSB0b3VjaFRpbWU7Cit9CisKKy8vIEJ1aWxkcyBh
IGhhc2guIEhhc2hlcyBhcmUgYXNzZW1ibGVkIGJ5IGpvaW5pbmcgdG9nZXRoZXIgbXVsdGlwbGUg
Yml0cy4KKy8vIDMgTFNCIGJpdHMgZm9yIHRoZSB8dG91Y2hUeXBlfC4KKy8vIDEgYml0IGZvciB8
aGFuZGxlZHwKKy8vIDEyIGJpdHMgZm9yIHxpZHwKKy8vIDE2IGJpdHMgZm9yIHRoZSB8Z2VzdHVy
ZVN0YXRlfC4KK3Vuc2lnbmVkIGludCBHZXN0dXJlTWFuYWdlcjo6aGFzaChTdGF0ZSBnZXN0dXJl
U3RhdGUsIHVuc2lnbmVkIGlkLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHRvdWNoVHlwZSwg
Ym9vbCBoYW5kbGVkKQoreworICAgIHJldHVybiAxICsgKCh0b3VjaFR5cGUgJiA3KSB8IChoYW5k
bGVkID8gMSA8PCAzIDogMCkgfCAoKGlkICYgMHhmZmYpIDw8IDQgKSB8IChnZXN0dXJlU3RhdGUg
PDwgMTYpKTsKK30KKworLy8KKy8vIEVkZ2UgZnVuY3Rpb25zCisvLworc3RhdGljIGJvb2wgdG91
Y2hEb3duKEdlc3R1cmVNYW5hZ2VyKiBnbSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKQor
eworICAgIGdtLT5zZXRTdGF0ZShHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNr
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgcmVzZXQoR2VzdHVyZU1hbmFnZXIqIGdt
LCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHApCit7CisgICAgZ20tPnNldFN0YXRlKEdlc3R1
cmVNYW5hZ2VyOjpOb0dlc3R1cmUpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJv
b2wgY2xpY2soR2VzdHVyZU1hbmFnZXIqIGdtLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHAp
IAoreworICAgIGlmIChnbS0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdtLT5pc0luc2lkZU1h
bmhhdHRhblNxdWFyZShwKSkgeworICAgICAgICBnbS0+c2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6
Ok5vR2VzdHVyZSk7CisgICAgICAgIGdtLT5kaXNwYXRjaFN5bnRoZXRpY0NsaWNrKHApOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHJlc2V0KGdtLCBwKTsKK30KKwor
c3RhdGljIGJvb2wgY2xpY2tPclNjcm9sbChHZXN0dXJlTWFuYWdlciogZ20sIGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYgcCkKK3sKKyAgICBpZiAoZ20tPmlzSW5DbGlja1RpbWVXaW5kb3coKSAm
JiBnbS0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpIHsKKyAgICAgICAgZ20tPnNldFN0YXRl
KEdlc3R1cmVNYW5hZ2VyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChwLnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkICYmICFnbS0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpIHsKKyAg
ICAgICAgZ20tPnNjcm9sbFZpYVRvdWNoTW90aW9uKHApOworICAgICAgICBnbS0+c2V0U3RhdGUo
R2VzdHVyZU1hbmFnZXI6OlNjcm9sbCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGluU2Nyb2xsKEdlc3R1cmVNYW5hZ2Vy
KiBnbSwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwKQoreworICAgIGdtLT5zY3JvbGxWaWFU
b3VjaE1vdGlvbihwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVG8gY3JlYXRlIGEgcmlj
aGVyIGdlc3R1cmUgcmVjb2duaXplciwgaXQgaXMgc3VmZmljaWVudCB0byBtb2RpZnkgdGhpcwor
Ly8gZmFjdG9yeSB0byBhZGQgYWRkaXRpb25hbCBlZGdlcy4gKFRob3VnaCBhZGRpdGlvbmFsIGVk
Z2VzIG1heSByZXF1aXJlCisvLyBhZGRpdGlvbmFsIHN0YXRlIHRyYWNraW5nLikKK0dlc3R1cmVN
YW5hZ2VyKiBjcmVhdGVHZXN0dXJlTWFuYWdlcihFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlcikK
K3sKKyAgICBHZXN0dXJlTWFuYWdlciogZ20gPSBuZXcgR2VzdHVyZU1hbmFnZXIoZXZlbnRIYW5k
bGVyKTsKKyAgICBnbS0+aW5pdCgpOworICAgIHJldHVybiBnbTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlc3R1cmVNYW5hZ2VyLmggYi9X
ZWJDb3JlL3BhZ2UvR2VzdHVyZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41MWZiNzlmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL0dlc3R1cmVN
YW5hZ2VyLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlc3R1cmVNYW5hZ2VyX2gKKyNkZWZp
bmUgR2VzdHVyZU1hbmFnZXJfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisj
aW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2VzdHVyZU1hbmFnZXI7CisKKy8vIEEgR2VzdHVyZU1h
bmFnZXIgZGV0ZWN0cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50LgorLy8g
SW4gcmVzcG9uc2UgdG8gYSBnaXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVNYW5hZ2VyLCB1
cGRhdGVzCisvLyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBz
eW50aGV0aWMgZXZlbnRzIHRvIHRoZQorLy8gaW52b2tpbmcgV2ViVmlld0ltcGwuCitjbGFzcyBH
ZXN0dXJlTWFuYWdlciB7CitwdWJsaWM6CisgCisgICAgLy8gVGhlIHN0YXRlcyBvZiB0aGUgZ2Vz
dHVyZSBtYW5hZ2VyIHN0YXRlIG1hY2hpbmUuCisgICAgZW51bSBTdGF0ZSB7CisgICAgICBOb0dl
c3R1cmUsCisgICAgICBQZW5kaW5nU3ludGhldGljQ2xpY2ssCisgICAgICBTY3JvbGwKKyAgICB9
OworICAgIAorICAgIHR5cGVkZWYgYm9vbCAoKkdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24pKEdl
c3R1cmVNYW5hZ2VyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAgCisgICAgR2Vz
dHVyZU1hbmFnZXIoRXZlbnRIYW5kbGVyKik7CisgICAgdmlydHVhbCB+R2VzdHVyZU1hbmFnZXIo
KTsKKyAgCisgICAgLy8gQWRkcyBhIG5ldyBlZGdlIGZ1bmN0aW9uIHRvIHRoZSBHZXN0dXJlTWFu
YWdlci4gRmlyZXMgfGZ1bnwgaWYgY3VycmVudCBzdGF0ZSBpcyB8c3RhdGV8LCBuZXcgfHRvdWNo
fCBhcnJpdmVzIGFuZCBoYW5kbGVkIGlzIHNldC4KKyAgICB2b2lkIGFkZEVkZ2VGdW5jdGlvbihT
dGF0ZSBzdGF0ZSwgdW5zaWduZWQgZmluZ2VyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHRv
dWNoVHlwZSwgYm9vbCBoYW5kbGVkLCBHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGYpOworICAK
KyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzcGF0Y2ggYSBtb3VzZURvd24vbW91c2VVcC9D
bGljayBzZXF1ZW5jZS4KKyAgICB2b2lkIGRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiBwKTsKKyAgICAKKyAgICAvLyBDcmVhdGVzIHRoZSBnZXN0dXJhbCBz
dGF0ZSBtYWNoaW5lLgorICAgIHZpcnR1YWwgdm9pZCBpbml0KCk7CisgIAorICAgIC8vIFRydWUg
aWYgdGhlIHRpbWUgc2luY2UgdG91Y2hEb3duIGlzIGxlc3MgdGhhbiB0aGUgbWluaW11bSBmb3Ig
YSBjbGljay4KKyAgICBib29sIGlzSW5DbGlja1RpbWVXaW5kb3coKTsKKyAgICAKKyAgICAvLyBU
cnVlIGZvciBhIHBvaW50IHAgc3RpbGwgaW5zaWRlIHRoZSB0aHJlc2hvbGRlZCBzcXVhcmUuCisg
ICAgYm9vbCBpc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
IHApOworICAKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQg
Y29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJlLgorICAgIC8vIFRha2VzIHRoZSB8ZXZl
bnR8IGFuZCB0aGUgfHNvdXJjZXwgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGljaCB3aWxsIGFs
c28KKyAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhldGljIGV2ZW50
LiBGaW5hbGx5LCB8aGFuZGxlZHwKKyAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxldmVudHwgd2Fz
IGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSBldmVudCByZXN1bHRlZCBpbiBmaXJpbmcgYSBzeW50aGV0aWMgZXZlbnQuCisgICAgYm9vbCBw
cm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVu
dCwgRXZlbnRIYW5kbGVyKiBzb3VyY2UsIGJvb2wgaGFuZGxlZCk7CisgIAorICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBzY3JvbGwgdGhlIHNjcmVlbi4KKyAgICB2b2lkIHNjcm9sbFZpYVRvdWNo
TW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCk7CisgICAgCisgICAgdm9pZCBzZXRT
dGF0ZShTdGF0ZSBzKSB7IG1fc3RhdGUgPSBzOyB9CisgICAgU3RhdGUgc3RhdGUoKSB7IHJldHVy
biBtX3N0YXRlOyB9CisKK3Byb3RlY3RlZDoKKyAgICAvLyBVcGRhdGUgY29tcHV0ZWQgZ2VzdHVy
YWwgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGUgZ2l2ZW4gZXZlbnQuCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVZhbHVlcyhkb3VibGUsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCAmKTsKKworICAg
IC8vIE1ha2VzIGFuIGVkZ2UgaWRlbnRpZmllciBpbnRlZ2VyLgorICAgIHVuc2lnbmVkIGludCBo
YXNoKFN0YXRlLCB1bnNpZ25lZCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0ZSwgYm9vbCk7Cisg
IAorICAgIC8vIE1hcCBvZiBlZGdlIGZ1bmN0aW9ucworICAgIFdURjo6SGFzaE1hcDxpbnQsIEdl
c3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24+IG1fZWRnZUZ1bmN0aW9uczsKKyAgICAKKyAgICAvLyBM
b2NhdGlvbiBvZiBmaXJzdCB0b3VjaC4KKyAgICBJbnRQb2ludCBtX2ZpcnN0VG91Y2hQb3NpdGlv
bjsKKyAgCisgICAgLy8gVGltZSB3aGVuIHRoZSB0b3VjaCB3ZW50IGRvd24uCisgICAgZG91Ymxl
IG1fZmlyc3RUb3VjaFRpbWU7CisgICAgCisgICAgLy8gR2VzdHVyZU1hbmFnZXIgc3RhdGUuCisg
ICAgU3RhdGUgbV9zdGF0ZTsKKyAgCisgICAgLy8gVGltZSBvZiBtb3N0IHJlY2VudCB0b3VjaCBl
dmVudC4KKyAgICBkb3VibGUgbV9sYXN0VG91Y2hUaW1lOworICAKKyAgICAvLyBUaGUgV2ViVmll
d0ltcGwgdGhhdCBpbnZva2VkIHRoZSBHZXN0dXJlTWFuYWdlci4KKyAgICBFdmVudEhhbmRsZXIq
IG1fZXZlbnRIYW5kbGVyOyAgCit9OworCisvLyBGYWN0b3J5IG1ldGhvZCBmb3IgR2VzdHVyZU1h
bmFnZXJzLgorR2VzdHVyZU1hbmFnZXIqIGNyZWF0ZUdlc3R1cmVNYW5hZ2VyKEV2ZW50SGFuZGxl
ciopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZXN0dXJlTWFuYWdl
cl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAppbmRleCA2OTc4NmE4Li4yYzY4
MWQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmgKQEAgLTU4LDYgKzU4LDcg
QEAgcHVibGljOgogICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICAgICAsIG1fc2hpZnRL
ZXkoZmFsc2UpCiAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICAgICAsIG1fdGltZXN0
YW1wKDApCiAgICAge30KICNpZiBQTEFURk9STShRVCkKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnQo
UVRvdWNoRXZlbnQqKTsKQEAgLTc0LDYgKzc1LDkgQEAgcHVibGljOgogICAgIGJvb2wgYWx0S2V5
KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGlmdEtleTsgfQogICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YUtleTsgfQorICAgIAorICAgIC8vIFRpbWUgaW4gc2Vjb25kcy4KKyAgICBkb3VibGUg
dGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KIAogcHJvdGVjdGVkOgog
ICAgIFRvdWNoRXZlbnRUeXBlIG1fdHlwZTsKQEAgLTgyLDYgKzg2LDcgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgbV9hbHRLZXk7CiAgICAgYm9vbCBtX3NoaWZ0S2V5OwogICAgIGJvb2wgbV9tZXRh
S2V5OworICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtV2hlZWxFdmVudC5oCmluZGV4IDY3NDczOTIuLjI3Y2M1ODEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtODYsNiArODYsMzMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSW50
UG9pbnQgcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCBnbG9i
YWxQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHdoZWVsVGlja3NYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgd2hlZWxUaWNrc1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnRHcmFudWxhcml0eSBncmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNBY2NlcHRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hp
ZnRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGFsdEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgbWV0YUtleSkKKyAgICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbikKKyAg
ICAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKKyAgICAgICAgICAg
ICwgbV9kZWx0YVgoZGVsdGFYKQorICAgICAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkpCisgICAg
ICAgICAgICAsIG1fd2hlZWxUaWNrc1god2hlZWxUaWNrc1gpCisgICAgICAgICAgICAsIG1fd2hl
ZWxUaWNrc1kod2hlZWxUaWNrc1kpCisgICAgICAgICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3JhbnVs
YXJpdHkpCisgICAgICAgICAgICAsIG1faXNBY2NlcHRlZChpc0FjY2VwdGVkKQorICAgICAgICAg
ICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQorICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtl
eSkKKyAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQorICAgICAgICAgICAgLCBtX21ldGFL
ZXkobWV0YUtleSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgY29uc3QgSW50UG9p
bnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cg
Y29vcmRpbmF0ZXMuCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3MoKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3JtVG91Y2hFdmVudEFuZHJv
aWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1BsYXRmb3JtVG91Y2hFdmVudEFuZHJv
aWQuY3BwCmluZGV4IDhiM2QyODUuLjY1OTk5ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vYW5kcm9pZC9QbGF0Zm9ybVRvdWNoRXZlbnRBbmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2FuZHJvaWQvUGxhdGZvcm1Ub3VjaEV2ZW50QW5kcm9pZC5jcHAKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVu
dC5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKIApAQCAtNDAsNiArNDEsNyBAQCBlbnVtIEFuZHJvaWRNZXRhS2V5U3RhdGUgewogUGxh
dGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoY29uc3QgVmVjdG9yPEludFBvaW50
PiYgd2luZG93UG9pbnRzLCBUb3VjaEV2ZW50VHlwZSB0eXBlLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlN0YXRlIHN0YXRlLCBpbnQgbWV0YVN0YXRlKQogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBt
X21ldGFLZXkoZmFsc2UpCisgICAgLCBtX3RpbWVzdGFtcChXVEY6OmN1cnJlbnRUaW1lKCkpCiB7
CiAgICAgbV90b3VjaFBvaW50cy5yZXNlcnZlQ2FwYWNpdHkod2luZG93UG9pbnRzLnNpemUoKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBjID0gMDsgYyA8IHdpbmRvd1BvaW50cy5zaXplKCk7IGMrKykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKaW5kZXggMzM4
ZTlkNC4uOTFiNmE1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRv
dWNoRXZlbnRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZl
bnRRdC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIApAQCAtNDIsNiArNDMsNyBAQCBQbGF0Zm9ybVRv
dWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgbV9h
bHRLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyKTsKICAgICBtX3No
aWZ0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlmaWVyKTsKICAgICBt
X21ldGFLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcik7CisgICAg
bV90aW1lc3RhbXAgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU5MjU4NDkuLjk4MzQ4MzkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEwLTEy
LTE2ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDU6IHVuaXQgdGVzdHMgZm9yCisgICAgICAgIHRoZSBi
YXNpYyBHZXN0dXJlTWFuYWdlciBhbmQgYWRkaXRpb24gb2YgdGltZSBzdGFtcHMgaW4gY29udmVy
c2lvbgorICAgICAgICBmcm9tIFdlYlRvdWNoRXZlbnQgdG8gUGxhdGZvcm1Ub3VjaEV2ZW50Lgor
CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViVG91Y2hQb2ludC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBv
aW50OjpXZWJUb3VjaFBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyOjpQbGF0
Zm9ybVRvdWNoRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiB0ZXN0cy9HZXN0dXJlTWFuYWdlclRl
c3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFn
ZXI6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dGFibGVHZXN0dXJlTWFuYWdlcjo6dEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdGFi
bGVHZXN0dXJlTWFuYWdlcjo6Zmlyc3RUb3VjaFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OnNldEZpcnN0VG91Y2hUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OmZpcnN0VG91Y2hUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RhYmxlR2VzdHVyZU1hbmFnZXI6OnNldExhc3RUb3VjaFRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlcjo6bGFzdFRv
dWNoVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyOjpl
ZGdlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdGFibGVHZXN0dXJlTWFuYWdl
cjo6dFVwZGF0ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoUG9pbnQ6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6QnVpbGRhYmxlUGxhdGZvcm1Ub3Vj
aFBvaW50OjpzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQ
b2ludDo6QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RHZXN0dXJlTWFuYWdlcjo6VGVzdEdlc3R1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RHZXN0dXJlTWFuYWdlcjo6U2V0VXApOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEdlc3R1
cmVNYW5hZ2VyOjpUZWFyRG93bik6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDEw
LTEyLTE2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaSBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAwMTZjZjFh
Li5lZTU5YTE0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC01NCw2ICs1NCw3IEBACiAgICAgICAgICd3
ZWJraXRfdW5pdHRlc3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVs
cGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcCcsCisgICAgICAg
ICAgICAndGVzdHMvR2VzdHVyZU1hbmFnZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
SURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJLZXlQ
YXRoVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAnLApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQppbmRleCAzNzJjYzVjLi5mYTkyNzRhIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQpAQCAtNTYsNiArNTYsNyBAQAogICAgICAgICAnRU5BQkxFX0ZJTEVfU1lTVEVNPTEnLAogICAg
ICAgICAnRU5BQkxFX0ZJTFRFUlM9MScsCiAgICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScs
CisgICAgICAgICdFTkFCTEVfR0VTVFVSRV9NQU5BR0VSPTEnLAogICAgICAgICAnRU5BQkxFX0lD
T05EQVRBQkFTRT0wJywKICAgICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLAogICAg
ICAgICAnRU5BQkxFX0lOUFVUX1NQRUVDSD0xJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3Vj
aFBvaW50LmgKaW5kZXggZGRmYTI2Zi4uYjE1ODNlNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUb3VjaFBvaW50LmgKQEAgLTM4LDggKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJUb3VjaFBvaW50IHsKIHB1YmxpYzoKKyAgICBlbnVtIFRvdWNoSWRlbnRpZmllciB7
CisgICAgICBGaXJzdEZpbmdlciA9IDAsCisgICAgICBTZWNvbmRGaW5nZXIgPSAxLAorICAgICAg
VGhpcmRGaW5nZXIgPSAyLAorICAgIH07CisKICAgICBXZWJUb3VjaFBvaW50KCkKLSAgICAgICAg
OiBpZCgwKQorICAgICAgICA6IGlkKEZpcnN0RmluZ2VyKQogICAgICAgICAsIHN0YXRlKFN0YXRl
VW5kZWZpbmVkKSB7IH0KIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCAyNGViMzcyLi4yNGVlYjg4IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApA
QCAtMjIxLDYgKzIyMSw3IEBAIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91
Y2hFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYlRvCiAgICAgbV9hbHRLZXkg
PSBldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXk7CiAgICAgbV9zaGlmdEtl
eSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5OwogICAgIG1fbWV0
YUtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXk7CisgICAgbV90
aW1lc3RhbXAgPSBldmVudC50aW1lU3RhbXBTZWNvbmRzOwogCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBldmVudC50b3VjaFBvaW50c0xlbmd0aDsgKytpKQogICAgICAgICBtX3RvdWNoUG9pbnRz
LmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKHdpZGdldCwgZXZlbnQudG91Y2hQb2lu
dHNbaV0pKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HZXN0dXJlTWFuYWdl
clRlc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dlc3R1cmVNYW5hZ2VyVGVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyMGY5OQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HZXN0dXJlTWFuYWdlclRlc3QuY3BwCkBAIC0w
LDAgKzEsMjU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiR2VzdHVyZU1hbmFn
ZXIuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIDog
cHVibGljIFdlYkNvcmU6Okdlc3R1cmVNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBJbnNwZWN0YWJs
ZUdlc3R1cmVNYW5hZ2VyKCkgOiBXZWJDb3JlOjpHZXN0dXJlTWFuYWdlcigwKSB7IH0KKworICAg
IGludCB0SGFzaChTdGF0ZSBnZXN0dXJlU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpZCwKKyAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUg
dG91Y2hUeXBlLCAKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBoYXNoKGdlc3R1cmVTdGF0ZSwgaWQsIHRvdWNoVHlwZSwgaGFuZGxlZCk7
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9OworICAKKyAgICBJbnRQb2ludCBmaXJzdFRv
dWNoUG9zaXRpb24oKSB7IHJldHVybiBtX2ZpcnN0VG91Y2hQb3NpdGlvbjsgfTsKKyAgICAKKyAg
ICB2b2lkIHNldEZpcnN0VG91Y2hUaW1lKGRvdWJsZSB0KSB7IG1fZmlyc3RUb3VjaFRpbWUgPSB0
OyB9OworICAgIGRvdWJsZSBmaXJzdFRvdWNoVGltZSgpIHsgcmV0dXJuIG1fZmlyc3RUb3VjaFRp
bWU7IH07CisgICAgCisgICAgdm9pZCBzZXRMYXN0VG91Y2hUaW1lKGRvdWJsZSB0KSB7IG1fbGFz
dFRvdWNoVGltZSA9IHQ7IH07CisgICAgZG91YmxlIGxhc3RUb3VjaFRpbWUoKSB7IHJldHVybiBt
X2xhc3RUb3VjaFRpbWU7IH07CisgICAgCisgICAgR2VzdHVyZU1hbmFnZXI6Okdlc3R1cmVUcmFu
c2l0aW9uRnVuY3Rpb24gZWRnZUZ1bmN0aW9uKGludCBoYXNoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZWRnZUZ1bmN0aW9ucy5nZXQoaGFzaCk7CisgICAgfTsKKyAgCisgICAgdmlydHVhbCB2
b2lkIHRVcGRhdGVWYWx1ZXMoZG91YmxlIGQsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCAmcCkK
KyAgICB7CisgICAgICAgIHVwZGF0ZVZhbHVlcyhkLCBwKTsKKyAgICB9OworfTsKKworY2xhc3Mg
QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91
Y2hQb2ludCB7CitwdWJsaWM6CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50KCk7Cisg
ICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50KGludCB4LCBpbnQgeSk7CisgICAgCisgICAg
dm9pZCBzZXRYKGludCB4KQorICAgIHsKKyAgICAgIG1fcG9zLnNldFgoeCk7CisgICAgICBtX3Nj
cmVlblBvcy5zZXRYKHgpOworICAgIH07CisgICAgCisgICAgdm9pZCBzZXRZKGludCB5KQorICAg
IHsKKyAgICAgIG1fcG9zLnNldFkoeSk7CisgICAgICBtX3NjcmVlblBvcy5zZXRZKHkpOworICAg
IH07Cit9OworCitCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQ6OkJ1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hQb2ludCgpCit7CisgICAgbV9pZCA9IDA7CisgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIG1fcG9zID0gSW50UG9pbnQoMCwgMCk7Cisg
ICAgbV9zY3JlZW5Qb3MgPSBJbnRQb2ludCgwLCAwKTsKK307CisKK0J1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hQb2ludDo6QnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50KGludCB4LCBpbnQgeSkKK3sK
KyAgICBtX2lkID0gMDsKKyAgICBtX3N0YXRlID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0
YXRpb25hcnk7CisgICAgbV9wb3MgPSBJbnRQb2ludCh4LCB5KTsKKyAgICBtX3NjcmVlblBvcyA9
IEludFBvaW50KHgsIHkpOworfTsKKworCitjbGFzcyBUZXN0R2VzdHVyZU1hbmFnZXIgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgVGVzdEdlc3R1cmVNYW5hZ2VyKCkgeyB9
CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7IH0KK307CisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIGhh
c2gpCit7CisgICAgSW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlciB0ZXN0R207CisgICAgY29uc3Qg
dW5zaWduZWQgRmlyc3RGaW5nZXIgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIFNlY29uZEZpbmdl
ciA9IDE7CisKKyAgICBBU1NFUlRfRVEoMSArIDAsIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdl
cjo6Tm9HZXN0dXJlLAorICAgICAgICBGaXJzdEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkLCBmYWxzZSkpOworCisgICAgQVNTRVJUX0VRKDEgKyAoOCB8IDEpLCB0ZXN0
R20udEhhc2goR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVyZSwKKyAgICAgICAgRmlyc3RGaW5nZXIs
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkLCB0cnVlKSk7CisKKyAgICBBU1NFUlRf
RVEoMSArICgweDEwMDAwIHwgMiksIHRlc3RHbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6UGVuZGlu
Z1N5bnRoZXRpY0NsaWNrLAorICAgICAgICBGaXJzdEZpbmdlciwgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkLCBmYWxzZSkpOworCisgICAgQVNTRVJUX0VRKDEgKyAweDIwMDAwLCB0ZXN0
R20udEhhc2goR2VzdHVyZU1hbmFnZXI6OlNjcm9sbCwKKyAgICAgICAgRmlyc3RGaW5nZXIsIFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCwgZmFsc2UpKTsKKworICAgIEFTU0VSVF9F
USgxICsgKDB4MjAwMDAgfCAxKSwgdGVzdEdtLnRIYXNoKEdlc3R1cmVNYW5hZ2VyOjpTY3JvbGws
CisgICAgICAgIEZpcnN0RmluZ2VyLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCwg
ZmFsc2UpKTsKKworICAgIEFTU0VSVF9FUSgxICsgKDB4MjAwMDAgfCAweDEwIHwgOCB8IDEpLAor
ICAgICAgICB0ZXN0R20udEhhc2goR2VzdHVyZU1hbmFnZXI6OlNjcm9sbCwgU2Vjb25kRmluZ2Vy
IHwgMHgxMDAwLCAKKyAgICAgICAgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQsIHRy
dWUpKTsKK30KKworCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCBzdGF0ZSkKK3sKKyAgICBJ
bnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIHRlc3RHbTsKKworICAgIEFTU0VSVF9FUSgwLCB0ZXN0
R20uc3RhdGUoKSk7CisgICAgdGVzdEdtLnNldFN0YXRlKEdlc3R1cmVNYW5hZ2VyOjpQZW5kaW5n
U3ludGhldGljQ2xpY2spOworICAgIEFTU0VSVF9FUShHZXN0dXJlTWFuYWdlcjo6UGVuZGluZ1N5
bnRoZXRpY0NsaWNrLCB0ZXN0R20uc3RhdGUoKSk7Cit9CisKKworVEVTVF9GKFRlc3RHZXN0dXJl
TWFuYWdlciwgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUpCit7CisgICAgSW5zcGVjdGFibGVHZXN0
dXJlTWFuYWdlciBnbTsKKyAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcDsKKworICAg
IEFTU0VSVF9FUSgwLjAsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLngoKSk7CisgICAgQVNTRVJU
X0VRKDAuMCwgZ20uZmlyc3RUb3VjaFBvc2l0aW9uKCkueSgpKTsKKyAgCisgICAgcC5zZXRYKDAu
MCk7CisgICAgcC5zZXRZKDE5Ljk5OSk7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbnNpZGVNYW5o
YXR0YW5TcXVhcmUocCkpOworICAgIAorICAgIHAuc2V0WCgxOS45OTkpOworICAgIHAuc2V0WSgw
LjApOworICAgIEFTU0VSVF9UUlVFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKKwor
ICAgIHAuc2V0WCgyMC4wKTsKKyAgICBwLnNldFkoMC4wKTsKKyAgICBBU1NFUlRfRkFMU0UoZ20u
aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocCkpOworICAgIAorICAgIHAuc2V0WCgwLjApOworICAg
IHAuc2V0WSgyMC4wKTsKKyAgICBBU1NFUlRfRkFMU0UoZ20uaXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUocCkpOworICAgIAorICAgIHAuc2V0WCgtMjAuMCk7CisgICAgcC5zZXRZKDAuMCk7CisgICAg
QVNTRVJUX0ZBTFNFKGdtLmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHApKTsKKyAgICAKKyAgICBw
LnNldFgoMC4wKTsKKyAgICBwLnNldFkoLTIwLjApOworICAgIEFTU0VSVF9GQUxTRShnbS5pc0lu
c2lkZU1hbmhhdHRhblNxdWFyZShwKSk7Cit9CisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIs
IGlzSW5DbGlja1RpbWVXaW5kb3cpCit7CisgICAgSW5zcGVjdGFibGVHZXN0dXJlTWFuYWdlciBn
bTsKKyAgICAKKyAgICBnbS5zZXRGaXJzdFRvdWNoVGltZSgwLjApOworICAgIGdtLnNldExhc3RU
b3VjaFRpbWUoMC4wKTsKKyAgICBBU1NFUlRfRkFMU0UoZ20uaXNJbkNsaWNrVGltZVdpbmRvdygp
KTsKKyAgICAKKyAgICBnbS5zZXRGaXJzdFRvdWNoVGltZSgwLjApOworICAgIGdtLnNldExhc3RU
b3VjaFRpbWUoMC4wMTAwMDEpOworICAgIEFTU0VSVF9UUlVFKGdtLmlzSW5DbGlja1RpbWVXaW5k
b3coKSk7CisgICAgCisgICAgZ20uc2V0Rmlyc3RUb3VjaFRpbWUoMC4wKTsKKyAgICBnbS5zZXRM
YXN0VG91Y2hUaW1lKDAuOCAtIC4wMDAwMDAwMSk7CisgICAgQVNTRVJUX1RSVUUoZ20uaXNJbkNs
aWNrVGltZVdpbmRvdygpKTsKKyAgICAKKyAgICBnbS5zZXRGaXJzdFRvdWNoVGltZSgwLjApOwor
ICAgIGdtLnNldExhc3RUb3VjaFRpbWUoMC44MDAwMSk7CisgICAgQVNTRVJUX0ZBTFNFKGdtLmlz
SW5DbGlja1RpbWVXaW5kb3coKSk7Cit9CisKK1RFU1RfRihUZXN0R2VzdHVyZU1hbmFnZXIsIGFk
ZEVkZ2VGdW5jdGlvbikKK3sKKyAgICBJbnNwZWN0YWJsZUdlc3R1cmVNYW5hZ2VyIGdtOworICAg
IGdtLmFkZEVkZ2VGdW5jdGlvbihHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLCAwLAorICAgICAgICBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQsIHRydWUsCisgICAgICAgIChHZXN0dXJl
TWFuYWdlcjo6R2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbik0MDk2KTsKKyAgICAKKyAgICBBU1NF
UlRfRVEoKEdlc3R1cmVNYW5hZ2VyOjpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKTQwOTYsCisg
ICAgICAgIGdtLmVkZ2VGdW5jdGlvbihnbS50SGFzaChHZXN0dXJlTWFuYWdlcjo6U2Nyb2xsLAor
ICAgICAgICAgMCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkLCB0cnVlKSkpOwor
fQorCitURVNUX0YoVGVzdEdlc3R1cmVNYW5hZ2VyLCB1cGRhdGVWYWx1ZXMpCit7CisgICAgSW5z
cGVjdGFibGVHZXN0dXJlTWFuYWdlciBnbTsKKworICAgIEFTU0VSVF9FUSgwLjAsIGdtLmZpcnN0
VG91Y2hUaW1lKCkpOworICAgIEFTU0VSVF9FUSgwLjAsIGdtLmxhc3RUb3VjaFRpbWUoKSk7Cisg
ICAgQVNTRVJUX0VRKEdlc3R1cmVNYW5hZ2VyOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOworCisg
ICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHAxKDEwLCAxMSk7CisgICAgZ20udFVwZGF0
ZVZhbHVlcygxLjEsIHAxKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoMTAsIGdtLmZpcnN0VG91Y2hQ
b3NpdGlvbigpLngoKSk7CisgICAgQVNTRVJUX0VRKDExLCBnbS5maXJzdFRvdWNoUG9zaXRpb24o
KS55KCkpOworICAgIEFTU0VSVF9FUSgxLjEsIGdtLmZpcnN0VG91Y2hUaW1lKCkpOworICAgIEFT
U0VSVF9FUSgwLjAsIGdtLmxhc3RUb3VjaFRpbWUoKSAtIGdtLmZpcnN0VG91Y2hUaW1lKCkpOwor
CisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHAyKDEzLCAxNCk7CisgICAgZ20uc2V0
U3RhdGUoR2VzdHVyZU1hbmFnZXI6OlBlbmRpbmdTeW50aGV0aWNDbGljayk7CisgICAgZ20udFVw
ZGF0ZVZhbHVlcygyLjAsIHAyKTsKKyAgICAgICAgICAgICAgICAKKyAgICBBU1NFUlRfRVEoMTAs
IGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLngoKSk7CisgICAgQVNTRVJUX0VRKDExLCBnbS5maXJz
dFRvdWNoUG9zaXRpb24oKS55KCkpOworICAgIEFTU0VSVF9FUSgxLjEsIGdtLmZpcnN0VG91Y2hU
aW1lKCkpOworICAgIEFTU0VSVF9FUSgyLjAgLSAxLjEsIGdtLmxhc3RUb3VjaFRpbWUoKSAtIGdt
LmZpcnN0VG91Y2hUaW1lKCkpOworCisgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHAz
KDIzLCAzNCk7CisgICAgZ20uc2V0U3RhdGUoR2VzdHVyZU1hbmFnZXI6Ok5vR2VzdHVyZSk7Cisg
ICAgZ20udFVwZGF0ZVZhbHVlcygzLjAsIHAzKTsKKyAgICAgICAgICAgICAgICAKKyAgICBBU1NF
UlRfRVEoMjMsIGdtLmZpcnN0VG91Y2hQb3NpdGlvbigpLngoKSk7CisgICAgQVNTRVJUX0VRKDM0
LCBnbS5maXJzdFRvdWNoUG9zaXRpb24oKS55KCkpOworICAgIEFTU0VSVF9FUSgzLjAsIGdtLmZp
cnN0VG91Y2hUaW1lKCkpOworICAgIEFTU0VSVF9FUSgwLjAsIGdtLmxhc3RUb3VjaFRpbWUoKSAt
IGdtLmZpcnN0VG91Y2hUaW1lKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>
<flag name="review"
          id="67841"
          type_id="1"
          status="-"
          setter="rjkroege"
    />
    <flag name="commit-queue"
          id="67842"
          type_id="3"
          status="-"
          setter="rjkroege"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81887</attachid>
            <date>2011-02-09 15:43:16 -0800</date>
            <delta_ts>2011-02-10 15:57:35 -0800</delta_ts>
            <desc>patch6</desc>
            <filename>patch6.diff</filename>
            <type>text/plain</type>
            <size>9743</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMzA5NTQzLi45ZDE4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDItMDkgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFkZGVkIGFuIGFiaWxpdHkgZm9yIHRoZSBFdmVudEhhbmRsZXIgdG8gaW52b2tl
IGFuIG9wdGlvbmFsIHBsYXRmb3JtCisgICAgICAgIHNwZWNpZmljIGdlc3R1cmUgcmVjb2duaXpl
ci4gQSBzaW5nbGUtb3duZXIgZ2VzdHVyZSByZWNjb2duaXplciBjYW4gYmUKKyAgICAgICAgYWRk
ZWQgb3IgcmVtb3ZlZCBmcm9tIGFuIGluc3RhbmNlIG9mIEV2ZW50SGFuZGxlci4KKyAgICAgICAg
CisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1c2UgdGhlIGNoYW5nZSBzaG91bGQgYmUgZnVu
Y3Rpb25hbGx5IGludmlzaWJsZS4KKworICAgICAgICBBZGQgU3VwcG9ydCB0byBXZWJDb3JlIHRv
IG9wdGlvbmFsbHkgY2FsbCBhIHBsYXRmb3JtLXNwZWNpZmljIGdlc3R1cmUgcmVjb2duaXplcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpnZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNldEdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXI6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oOiBBZGRlZC4KKwogMjAxMS0wMi0w
NyAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzc0MTFlMC4uOTZm
MThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxMSw2ICszNTExLDggQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggN2U3YjZjZS4uMzQzOWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYK
QEAgLTIwMSw2ICsyMDIsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJh
bWUpCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNz
ZWQoZmFsc2UpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKGNyZWF0ZVBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA0NCw4ICszMDQ2LDIyIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYg
ZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9nZXN0dXJlUmVjb2duaXplcikK
KyAgICAgIG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShl
dmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7CisKICAgICByZXR1cm4gZGVmYXVsdFByZXZl
bnRlZDsKIH0KKworUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBFdmVudEhh
bmRsZXI6Omdlc3R1cmVSZWNvZ25pemVyKCkKK3sKKyAgICByZXR1cm4gbV9nZXN0dXJlUmVjb2du
aXplci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzZXRHZXN0dXJlUmVjb2du
aXplcihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IGcpCit7CisgICAgbV9n
ZXN0dXJlUmVjb2duaXplciA9IGc7Cit9CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCAzZTE1MjkxLi45NzFiNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJUZXh0RXZlbnRJbnB1dFR5cGUu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChfX09CSkNfXykK
QEAgLTU5LDYgKzYxLDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJvYXJkRXZl
bnQ7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3MgTm9kZTsKK2Ns
YXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ7CiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7
CkBAIC0yMjQsNiArMjI3LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwor
ICAgIAorICAgICAvLyBVc2UgdGhzZSB0byBtb3ZlIHRoZSBHZXN0dXJlUmVjb2duaXplciBpbnN0
YW5jZSBiZXR3ZWVuIEV2ZW50SGFuZGxlcnMuCisgICAgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyPiBnZXN0dXJlUmVjb2duaXplcigpOworICAgIHZvaWQgc2V0R2VzdHVyZVJl
Y29nbml6ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPik7CiAjZW5kaWYK
IAogcHJpdmF0ZToKQEAgLTQ0OSw2ICs0NTYsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdldE1hcDsKICAgICBUb3Vj
aFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3Rv
dWNoUHJlc3NlZDsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0
dXJlUmVjb2duaXplcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yYWEzYWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
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
LworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkgeyB9CitQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyOjp+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQorCisvLyBUbyBnZXQgYSB1
c2VmdWwgR2VzdHVyZVJlY29nbml6ZXIsIGEgc3BlY2lmaWMgcGxhdGZvcm0gc2hvdWxkIHJldHVy
biBzb21ldGhpbmcKKy8vIGhlcmUgdGhhdCBtZWV0cyBpdHMgbmVlZHMuIEV2ZW50U2VuZGVyIHdp
bGwgaWdub3JlIG51bGwgR2VzdHVyZVJlY29nbml6ZXJzLgorUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplciogY3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41OWI3MzhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZpbmUgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRIYW5k
bGVyOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2NsYXNzIFBsYXRmb3JtVG91
Y2hFdmVudDsKKworLy8gQSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9jY3Vy
cmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRvdWNo
IGV2ZW50LCB0aGUgR2VzdHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKKy8vIGl0cyBpbnRlcm5hbCBz
dGF0ZSBhbmQgb3B0aW9uYWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhlCisv
LyBpbnZva2luZyBFdmVudEhhbmRsZXIgaW5zdGFuY2UuCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyIHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7Cisg
ICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCisgICAgLy8gSW52b2tl
ZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNvbnRyaWJ1dGUgdG8gdGhlIGN1cnJl
bnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyB0aGUgfGV2ZW50fCBhbmQgdGhlIHxzb3VyY2V8IHRo
YXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBhbHNvCisgICAgLy8gYmUgdGhlIHRhcmdl
dCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVudC4gRmluYWxseSwgfGhhbmRsZWR8Cisg
ICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdhcyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxz
b3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2
ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRpYyBldmVudC4KKyAgICB2aXJ0dWFsIGJv
b2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYg
ZXZlbnQsIEV2ZW50SGFuZGxlciogc291cmNlLCBib29sIGhhbmRsZWQpID0gMDsKK307CisKKy8v
IEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCitQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyKiBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82066</attachid>
            <date>2011-02-10 15:57:35 -0800</date>
            <delta_ts>2011-02-14 15:15:16 -0800</delta_ts>
            <desc>patch7</desc>
            <filename>patch7.diff</filename>
            <type>text/plain</type>
            <size>9709</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MzExNDAyLi5hZmYyMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDI2ICsxLDI2
IEBACiAyMDExLTAyLTEwICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBBZGRlZCBhbiBhYmlsaXR5IGZvciB0aGUgRXZlbnRIYW5kbGVyIHRvIGludm9r
ZSBhbiBvcHRpb25hbCBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBnZXN0dXJlIHJlY29nbml6
ZXIuIEEgc2luZ2xlLW93bmVyIGdlc3R1cmUgcmVjb2duaXplciBjYW4gYmUKKyAgICAgICAgYWRk
ZWQgb3IgcmVtb3ZlZCBmcm9tIGFuIGluc3RhbmNlIG9mIEV2ZW50SGFuZGxlci4KKyAgICAgICAg
CisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1c2UgdGhlIGNoYW5nZSBzaG91bGQgYmUgZnVu
Y3Rpb25hbGx5IGludmlzaWJsZS4KIAorICAgICAgICBBZGQgU3VwcG9ydCB0byBXZWJDb3JlIHRv
IG9wdGlvbmFsbHkgY2FsbCBhIHBsYXRmb3JtLXNwZWNpZmljIGdlc3R1cmUgcmVjb2duaXplcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKIAor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpnZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNldEdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXI6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oOiBBZGRlZC4KIAogMjAxMS0wMi0x
MCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
Y2E3YjI5ZS4uNWRmOTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxMiw2ICszNTEyLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjM4NjliYy4uMTA3NTE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50
LmgiCiAjZW5kaWYKQEAgLTIwMSw2ICsyMDIsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxl
cihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwg
bV90b3VjaFByZXNzZWQoZmFsc2UpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKGNyZWF0ZVBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA0NCw4ICszMDQ2
LDIyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9nZXN0dXJl
UmVjb2duaXplcikKKyAgICAgIG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7CisKICAgICByZXR1cm4g
ZGVmYXVsdFByZXZlbnRlZDsKIH0KKworUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyPiBFdmVudEhhbmRsZXI6Omdlc3R1cmVSZWNvZ25pemVyKCkKK3sKKyAgICByZXR1cm4gbV9n
ZXN0dXJlUmVjb2duaXplci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzZXRH
ZXN0dXJlUmVjb2duaXplcihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IGcp
Cit7CisgICAgbV9nZXN0dXJlUmVjb2duaXplciA9IGc7Cit9CisKICNlbmRpZgogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAzZTE1MjkxLi4zMzBkNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJUZXh0RXZl
bnRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChfX09CSkNfXykKQEAgLTU5LDYgKzYxLDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xh
c3MgTm9kZTsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CiBjbGFzcyBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiBjbGFzcyBQbGF0Zm9y
bVdoZWVsRXZlbnQ7CkBAIC0yMjQsNiArMjI3LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYpOworICAgIAorICAgIC8vIFVzZSB0aGVzZSB0byBtb3ZlIHRoZSBHZXN0dXJlUmVj
b2duaXplciBpbnN0YW5jZSBiZXR3ZWVuIEV2ZW50SGFuZGxlcnMuCisgICAgUGFzc093blB0cjxQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBnZXN0dXJlUmVjb2duaXplcigpOworICAgIHZvaWQg
c2V0R2VzdHVyZVJlY29nbml6ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
Pik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTQ0OSw2ICs0NTYsNyBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdldE1h
cDsKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAg
ICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWEzYWViCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkgeyB9CitQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyOjp+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQorCisv
LyBUbyBnZXQgYSB1c2VmdWwgR2VzdHVyZVJlY29nbml6ZXIsIGEgc3BlY2lmaWMgcGxhdGZvcm0g
c2hvdWxkIHJldHVybiBzb21ldGhpbmcKKy8vIGhlcmUgdGhhdCBtZWV0cyBpdHMgbmVlZHMuIEV2
ZW50U2VuZGVyIHdpbGwgaWdub3JlIG51bGwgR2VzdHVyZVJlY29nbml6ZXJzLgorUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplciogY3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGEyY2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZpbmUg
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRXZlbnRIYW5kbGVyOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2NsYXNz
IFBsYXRmb3JtVG91Y2hFdmVudDsKKworLy8gQSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdl
c3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBh
IGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2VzdHVyZVJlY29nbml6ZXIgdXBkYXRlcworLy8gaXRz
IGludGVybmFsIHN0YXRlIGFuZCBvcHRpb25hbGx5IGRpc3BhdGNoZXMgc3ludGhldGljIGV2ZW50
cyB0byB0aGUKKy8vIGludm9raW5nIEV2ZW50SGFuZGxlciBpbnN0YW5jZS4KK2NsYXNzIFBsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIgeworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyKCk7CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyKCk7CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQg
Y29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJlLgorICAgIC8vIFRha2VzIHRoZSB8ZXZl
bnR8IGFuZCB0aGUgfHNvdXJjZXwgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGljaCB3aWxsIGFs
c28KKyAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhldGljIGV2ZW50
LiBGaW5hbGx5LCB8aGFuZGxlZHwKKyAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxldmVudHwgd2Fz
IGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwgKGJ5IHRoZSBKYXZhU2NyaXB0KQorICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEgc3ludGhldGlj
IGV2ZW50LgorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgRXZlbnRIYW5kbGVyKiBzb3VyY2UsIGJvb2wg
aGFuZGxlZCkgPSAwOworfTsKKworLy8gRmFjdG9yeSBtZXRob2QgZm9yIEdlc3R1cmVNYW5hZ2Vy
cy4KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIqIGNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82370</attachid>
            <date>2011-02-14 15:15:16 -0800</date>
            <delta_ts>2011-02-16 08:58:33 -0800</delta_ts>
            <desc>new patch</desc>
            <filename>gm_s1-2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>9767</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MWFmNjk3Li5hZGY5ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDI2ICsxLDI4
IEBACisgMjAxMS0wMi0xNCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+
CisgCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBTdXBwb3J0IHRvIFdlYkNvcmUgdG8gb3B0aW9uYWxseSBjYWxsIGEgcGxhdGZvcm0t
c3BlY2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorICAgICAgICBBZGRlZCBhbiBhYmlsaXR5IGZvciB0
aGUgRXZlbnRIYW5kbGVyIHRvIGludm9rZSBhbiBvcHRpb25hbCBwbGF0Zm9ybQorICAgICAgICBz
cGVjaWZpYyBnZXN0dXJlIHJlY29nbml6ZXIuIEEgc2luZ2xlLW93bmVyIGdlc3R1cmUgcmVjb2du
aXplciBjYW4gYmUKKyAgICAgICAgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIGFuIGluc3RhbmNlIG9m
IEV2ZW50SGFuZGxlci4KKyAgICAgICAgCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1c2Ug
dGhlIGNoYW5nZSBzaG91bGQgYmUgZnVuY3Rpb25hbGx5IGludmlzaWJsZS4KKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpnZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnNldEdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oOiBBZGRlZC4KKyAKIDIwMTEtMDItMTQgIFByYXRp
ayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZWI4
MDE2Yy4uZDkwY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxNSw2ICszNTE1LDggQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjM4NjliYy4uMTA3NTE3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50Lmgi
CiAjZW5kaWYKQEAgLTIwMSw2ICsyMDIsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihG
cmFtZSogZnJhbWUpCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90
b3VjaFByZXNzZWQoZmFsc2UpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKGNyZWF0ZVBsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA0NCw4ICszMDQ2LDIy
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9nZXN0dXJlUmVj
b2duaXplcikKKyAgICAgIG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7CisKICAgICByZXR1cm4gZGVm
YXVsdFByZXZlbnRlZDsKIH0KKworUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
PiBFdmVudEhhbmRsZXI6Omdlc3R1cmVSZWNvZ25pemVyKCkKK3sKKyAgICByZXR1cm4gbV9nZXN0
dXJlUmVjb2duaXplci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzZXRHZXN0
dXJlUmVjb2duaXplcihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IGcpCit7
CisgICAgbV9nZXN0dXJlUmVjb2duaXplciA9IGc7Cit9CisKICNlbmRpZgogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAzZTE1MjkxLi4zMzBkNWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJUZXh0RXZlbnRJ
bnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChf
X09CSkNfXykKQEAgLTU5LDYgKzYxLDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtl
eWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3Mg
Tm9kZTsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CiBjbGFzcyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVdo
ZWVsRXZlbnQ7CkBAIC0yMjQsNiArMjI3LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hF
dmVudCYpOworICAgIAorICAgICAvLyBVc2UgdGhlc2UgdG8gbW92ZSB0aGUgR2VzdHVyZVJlY29n
bml6ZXIgaW5zdGFuY2UgYmV0d2VlbiBFdmVudEhhbmRsZXJzLgorICAgIFBhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcj4gZ2VzdHVyZVJlY29nbml6ZXIoKTsKKyAgICB2b2lkIHNl
dEdlc3R1cmVSZWNvZ25pemVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4p
OwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC00NDksNiArNDU2LDcgQEAgcHJpdmF0ZToKICAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gVG91Y2hUYXJnZXRNYXA7
CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzOwogICAg
IGJvb2wgbV90b3VjaFByZXNzZWQ7CisgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFhM2FlYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKyAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQorUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSB7IH0KKworLy8g
VG8gZ2V0IGEgdXNlZnVsIEdlc3R1cmVSZWNvZ25pemVyLCBhIHNwZWNpZmljIHBsYXRmb3JtIHNo
b3VsZCByZXR1cm4gc29tZXRoaW5nCisvLyBoZXJlIHRoYXQgbWVldHMgaXRzIG5lZWRzLiBFdmVu
dFNlbmRlciB3aWxsIGlnbm9yZSBudWxsIEdlc3R1cmVSZWNvZ25pemVycy4KK1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXIqIGNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKQoreworICAg
IHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RhMmNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
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
LgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisjZGVmaW5lIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEV2ZW50SGFuZGxlcjsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CitjbGFzcyBQ
bGF0Zm9ybVRvdWNoRXZlbnQ7CisKKy8vIEEgR2VzdHVyZVJlY29nbml6ZXIgZGV0ZWN0cyBnZXN0
dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50LgorLy8gSW4gcmVzcG9uc2UgdG8gYSBn
aXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVSZWNvZ25pemVyLCB1cGRhdGVzCisvLyBpdHMg
aW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMgZXZlbnRz
IHRvIHRoZQorLy8gaW52b2tpbmcgRXZlbnRIYW5kbGVyIGluc3RhbmNlLgorY2xhc3MgUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplciB7Citwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcigpOworCitwdWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcigpOworCisgICAgLy8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxk
IGNvbnRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyB0aGUgfGV2
ZW50fCBhbmQgdGhlIHxzb3VyY2V8IHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBh
bHNvCisgICAgLy8gYmUgdGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVu
dC4gRmluYWxseSwgfGhhbmRsZWR8CisgICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdh
cyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKKyAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRp
YyBldmVudC4KKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIEV2ZW50SGFuZGxlciogc291cmNlLCBib29s
IGhhbmRsZWQpID0gMDsKK307CisKKy8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdl
cnMuCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKiBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82649</attachid>
            <date>2011-02-16 08:58:33 -0800</date>
            <delta_ts>2011-02-16 12:20:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>gm_s1-2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>9772</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MWFmNjk3Li5hZGY5ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDI2ICsxLDI4
IEBACisgMjAxMS0wMi0xNCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+
CisgCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBTdXBwb3J0IHRvIFdlYkNvcmUgdG8gb3B0aW9uYWxseSBjYWxsIGEgcGxhdGZvcm0t
c3BlY2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorIAorICAgICAgICBBZGRlZCBhbiBhYmlsaXR5IGZv
ciB0aGUgRXZlbnRIYW5kbGVyIHRvIGludm9rZSBhbiBvcHRpb25hbCBwbGF0Zm9ybQorICAgICAg
ICBzcGVjaWZpYyBnZXN0dXJlIHJlY29nbml6ZXIuIEEgc2luZ2xlLW93bmVyIGdlc3R1cmUgcmVj
b2duaXplciBjYW4gYmUKKyAgICAgICAgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIGFuIGluc3RhbmNl
IG9mIEV2ZW50SGFuZGxlci4KKyAgICAgICAgCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1
c2UgdGhlIGNoYW5nZSBzaG91bGQgYmUgZnVuY3Rpb25hbGx5IGludmlzaWJsZS4KKyAKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6Z2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzZXRHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCiAKIDIwMTEtMDItMTQgIFBy
YXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
ZWI4MDE2Yy4uZDkwY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxNSw2ICszNTE1LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjM4NjliYy4uYzFjNjMyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50
LmgiCiAjZW5kaWYKQEAgLTIwMSw2ICsyMDIsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxl
cihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwg
bV90b3VjaFByZXNzZWQoZmFsc2UpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKGNyZWF0ZVBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA0NCw4ICszMDQ2
LDIyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9nZXN0dXJl
UmVjb2duaXplcikKKyAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZl
bnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKKwogICAgIHJldHVy
biBkZWZhdWx0UHJldmVudGVkOwogfQorCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI+IEV2ZW50SGFuZGxlcjo6Z2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIHJldHVybiBt
X2dlc3R1cmVSZWNvZ25pemVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OnNl
dEdlc3R1cmVSZWNvZ25pemVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4g
ZykKK3sKKyAgICBtX2dlc3R1cmVSZWNvZ25pemVyID0gZzsKK30KKwogI2VuZGlmCiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDNlMTUyOTEuLjMzMGQ1ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlRleHRF
dmVudElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKF9fT0JKQ19fKQpAQCAtNTksNiArNjEsNyBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xh
c3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBj
bGFzcyBOb2RlOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIGNsYXNzIFBsYXRm
b3JtV2hlZWxFdmVudDsKQEAgLTIyNCw2ICsyMjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaEV2ZW50Jik7CisgICAgCisgICAgIC8vIFVzZSB0aGVzZSB0byBtb3ZlIHRoZSBHZXN0dXJl
UmVjb2duaXplciBpbnN0YW5jZSBiZXR3ZWVuIEV2ZW50SGFuZGxlcnMuCisgICAgUGFzc093blB0
cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBnZXN0dXJlUmVjb2duaXplcigpOworICAgIHZv
aWQgc2V0R2VzdHVyZVJlY29nbml6ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyPik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTQ0OSw2ICs0NTYsNyBAQCBwcml2YXRlOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdl
dE1hcDsKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7
CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWEzYWViCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkgeyB9CitQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjp+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQor
CisvLyBUbyBnZXQgYSB1c2VmdWwgR2VzdHVyZVJlY29nbml6ZXIsIGEgc3BlY2lmaWMgcGxhdGZv
cm0gc2hvdWxkIHJldHVybiBzb21ldGhpbmcKKy8vIGhlcmUgdGhhdCBtZWV0cyBpdHMgbmVlZHMu
IEV2ZW50U2VuZGVyIHdpbGwgaWdub3JlIG51bGwgR2VzdHVyZVJlY29nbml6ZXJzLgorUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplciogY3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmI1YmZjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZp
bmUgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRXZlbnRIYW5kbGVyOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2Ns
YXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKKworLy8gQSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3Rz
IGdlc3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0
byBhIGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2VzdHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKKy8v
IGl0cyBpbnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBl
dmVudHMgdG8gdGhlCisvLyBpbnZva2luZyBFdmVudEhhbmRsZXIgaW5zdGFuY2UuCitjbGFzcyBQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyIHsKK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyKCk7CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyKCk7CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQg
Y291bGQgY29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJlLgorICAgIC8vIFRha2VzIHRo
ZSB8ZXZlbnR8IGFuZCB0aGUgfHNvdXJjZXwgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGljaCB3
aWxsIGFsc28KKyAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhldGlj
IGV2ZW50LiBGaW5hbGx5LCB8aGFuZGxlZHwKKyAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxldmVu
dHwgd2FzIGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwgKGJ5IHRoZSBKYXZhU2NyaXB0KQor
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEgc3lu
dGhldGljIGV2ZW50LgorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmUoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgRXZlbnRIYW5kbGVyKiBzb3VyY2Us
IGJvb2wgaGFuZGxlZCkgPSAwOworfTsKKworLy8gRmFjdG9yeSBtZXRob2QgZm9yIEdlc3R1cmVN
YW5hZ2Vycy4KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIqIGNyZWF0ZVBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82674</attachid>
            <date>2011-02-16 12:20:54 -0800</date>
            <delta_ts>2011-02-16 12:45:07 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>gm_s1-2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>9773</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MWFmNjk3Li5hZGY5ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDI2ICsxLDI4
IEBACisgMjAxMS0wMi0xNCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+
CisgCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBTdXBwb3J0IHRvIFdlYkNvcmUgdG8gb3B0aW9uYWxseSBjYWxsIGEgcGxhdGZvcm0t
c3BlY2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorIAorICAgICAgICBBZGRlZCBhbiBhYmlsaXR5IGZv
ciB0aGUgRXZlbnRIYW5kbGVyIHRvIGludm9rZSBhbiBvcHRpb25hbCBwbGF0Zm9ybQorICAgICAg
ICBzcGVjaWZpYyBnZXN0dXJlIHJlY29nbml6ZXIuIEEgc2luZ2xlLW93bmVyIGdlc3R1cmUgcmVj
b2duaXplciBjYW4gYmUKKyAgICAgICAgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIGFuIGluc3RhbmNl
IG9mIEV2ZW50SGFuZGxlci4KKyAgICAgICAgCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1
c2UgdGhlIGNoYW5nZSBzaG91bGQgYmUgZnVuY3Rpb25hbGx5IGludmlzaWJsZS4KKyAKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6Z2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzZXRHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCiAKIDIwMTEtMDItMTQgIFBy
YXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
ZWI4MDE2Yy4uZDkwY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxNSw2ICszNTE1LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMjM4NjliYy4uYzFjNjMyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50
LmgiCiAjZW5kaWYKQEAgLTIwMSw2ICsyMDIsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxl
cihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwg
bV90b3VjaFByZXNzZWQoZmFsc2UpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKGNyZWF0ZVBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA0NCw4ICszMDQ2
LDIyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9nZXN0dXJl
UmVjb2duaXplcikKKyAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZl
bnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKKwogICAgIHJldHVy
biBkZWZhdWx0UHJldmVudGVkOwogfQorCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI+IEV2ZW50SGFuZGxlcjo6Z2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIHJldHVybiBt
X2dlc3R1cmVSZWNvZ25pemVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OnNl
dEdlc3R1cmVSZWNvZ25pemVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4g
ZykKK3sKKyAgICBtX2dlc3R1cmVSZWNvZ25pemVyID0gZzsKK30KKwogI2VuZGlmCiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDNlMTUyOTEuLjMzMGQ1ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlRleHRF
dmVudElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKF9fT0JKQ19fKQpAQCAtNTksNiArNjEsNyBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xh
c3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBj
bGFzcyBOb2RlOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIGNsYXNzIFBsYXRm
b3JtV2hlZWxFdmVudDsKQEAgLTIyNCw2ICsyMjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaEV2ZW50Jik7CisgICAgCisgICAgIC8vIFVzZSB0aGVzZSB0byBtb3ZlIHRoZSBHZXN0dXJl
UmVjb2duaXplciBpbnN0YW5jZSBiZXR3ZWVuIEV2ZW50SGFuZGxlcnMuCisgICAgUGFzc093blB0
cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBnZXN0dXJlUmVjb2duaXplcigpOworICAgIHZv
aWQgc2V0R2VzdHVyZVJlY29nbml6ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyPik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTQ0OSw2ICs0NTYsNyBAQCBwcml2YXRlOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdl
dE1hcDsKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7
CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWEzYWViCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkgeyB9CitQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjp+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQor
CisvLyBUbyBnZXQgYSB1c2VmdWwgR2VzdHVyZVJlY29nbml6ZXIsIGEgc3BlY2lmaWMgcGxhdGZv
cm0gc2hvdWxkIHJldHVybiBzb21ldGhpbmcKKy8vIGhlcmUgdGhhdCBtZWV0cyBpdHMgbmVlZHMu
IEV2ZW50SGFuZGxlciB3aWxsIGlnbm9yZSBudWxsIEdlc3R1cmVSZWNvZ25pemVycy4KK1BsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIqIGNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKQor
eworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiNWJmYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisjZGVm
aW5lIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEV2ZW50SGFuZGxlcjsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7Citj
bGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CisKKy8vIEEgR2VzdHVyZVJlY29nbml6ZXIgZGV0ZWN0
cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50LgorLy8gSW4gcmVzcG9uc2Ug
dG8gYSBnaXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVSZWNvZ25pemVyLCB1cGRhdGVzCisv
LyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMg
ZXZlbnRzIHRvIHRoZQorLy8gaW52b2tpbmcgRXZlbnRIYW5kbGVyIGluc3RhbmNlLgorY2xhc3Mg
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciB7Citwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcigpOworCitwdWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcigpOworCisgICAgLy8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0
IGNvdWxkIGNvbnRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyB0
aGUgfGV2ZW50fCBhbmQgdGhlIHxzb3VyY2V8IHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2gg
d2lsbCBhbHNvCisgICAgLy8gYmUgdGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRp
YyBldmVudC4gRmluYWxseSwgfGhhbmRsZWR8CisgICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZl
bnR8IHdhcyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5
bnRoZXRpYyBldmVudC4KKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0
dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIEV2ZW50SGFuZGxlciogc291cmNl
LCBib29sIGhhbmRsZWQpID0gMDsKK307CisKKy8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJl
TWFuYWdlcnMuCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKiBjcmVhdGVQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82677</attachid>
            <date>2011-02-16 12:45:07 -0800</date>
            <delta_ts>2011-02-17 15:46:56 -0800</delta_ts>
            <desc>next patch</desc>
            <filename>gm_s1-2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>9196</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MWFmNjk3Li5hZGY5ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDI2ICsxLDI4
IEBACisgMjAxMS0wMi0xNCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+
CisgCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBTdXBwb3J0IHRvIFdlYkNvcmUgdG8gb3B0aW9uYWxseSBjYWxsIGEgcGxhdGZvcm0t
c3BlY2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorIAorICAgICAgICBBZGRlZCBhbiBhYmlsaXR5IGZv
ciB0aGUgRXZlbnRIYW5kbGVyIHRvIGludm9rZSBhbiBvcHRpb25hbCBwbGF0Zm9ybQorICAgICAg
ICBzcGVjaWZpYyBnZXN0dXJlIHJlY29nbml6ZXIuIEEgc2luZ2xlLW93bmVyIGdlc3R1cmUgcmVj
b2duaXplciBjYW4gYmUKKyAgICAgICAgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIGFuIGluc3RhbmNl
IG9mIEV2ZW50SGFuZGxlci4KKyAgICAgICAgCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1
c2UgdGhlIGNoYW5nZSBzaG91bGQgYmUgZnVuY3Rpb25hbGx5IGludmlzaWJsZS4KKyAKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXI6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oOiBBZGRlZC4KIAogMjAxMS0wMi0x
NCAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCBlYjgwMTZjLi5kOTBjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTE1LDYgKzM1MTUs
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9u
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyMzg2OWJjLi5jMWM2MzJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC05MSw2ICs5MSw3IEBACiAjZW5kaWYKIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIlRvdWNo
RXZlbnQuaCIKICNlbmRpZgpAQCAtMjAxLDYgKzIwMiw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRI
YW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAg
ICAgLCBtX3RvdWNoUHJlc3NlZChmYWxzZSkKKyAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoY3Jl
YXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpKQogI2VuZGlmCiB7CiB9CkBAIC0zMDQ0LDgg
KzMwNDYsMjIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtX2dl
c3R1cmVSZWNvZ25pemVyKQorICAgICAgICBtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91
Y2hFdmVudEZvckdlc3R1cmUoZXZlbnQsIHRoaXMsIGRlZmF1bHRQcmV2ZW50ZWQpOworCiAgICAg
cmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKaW5kZXggM2UxNTI5MS4uMzMwZDVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50SW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoX19PQkpDX18p
CkBAIC01OSw2ICs2MSw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2
ZW50OwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGU7Citj
bGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OwogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OwogY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50
OwpAQCAtMjI0LDYgKzIyNywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsK
ICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNDQ5LDYgKzQ1Niw3IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiA+IFRvdWNoVGFyZ2V0TWFwOwog
ICAgIFRvdWNoVGFyZ2V0TWFwIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKICAgICBi
b29sIG1fdG91Y2hQcmVzc2VkOworICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
PiBtX2dlc3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYTNhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmln
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
QUdFLgorICovCisgCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSB7IH0KK1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkgeyB9CisKKy8vIFRv
IGdldCBhIHVzZWZ1bCBHZXN0dXJlUmVjb2duaXplciwgYSBzcGVjaWZpYyBwbGF0Zm9ybSBzaG91
bGQgcmV0dXJuIHNvbWV0aGluZworLy8gaGVyZSB0aGF0IG1lZXRzIGl0cyBuZWVkcy4gRXZlbnRI
YW5kbGVyIHdpbGwgaWdub3JlIG51bGwgR2VzdHVyZVJlY29nbml6ZXJzLgorUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplciogY3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpCit7CisgICAg
cmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmI1YmZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZpbmUgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RXZlbnRIYW5kbGVyOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2NsYXNzIFBs
YXRmb3JtVG91Y2hFdmVudDsKKworLy8gQSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1
cmVzIG9jY3VycmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBhIGdp
dmVuIHRvdWNoIGV2ZW50LCB0aGUgR2VzdHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKKy8vIGl0cyBp
bnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMg
dG8gdGhlCisvLyBpbnZva2luZyBFdmVudEhhbmRsZXIgaW5zdGFuY2UuCitjbGFzcyBQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyIHsKK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyKCk7CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyKCk7CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQg
Y29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJlLgorICAgIC8vIFRha2VzIHRoZSB8ZXZl
bnR8IGFuZCB0aGUgfHNvdXJjZXwgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGljaCB3aWxsIGFs
c28KKyAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhldGljIGV2ZW50
LiBGaW5hbGx5LCB8aGFuZGxlZHwKKyAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxldmVudHwgd2Fz
IGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwgKGJ5IHRoZSBKYXZhU2NyaXB0KQorICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEgc3ludGhldGlj
IGV2ZW50LgorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgRXZlbnRIYW5kbGVyKiBzb3VyY2UsIGJvb2wg
aGFuZGxlZCkgPSAwOworfTsKKworLy8gRmFjdG9yeSBtZXRob2QgZm9yIEdlc3R1cmVNYW5hZ2Vy
cy4KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIqIGNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82871</attachid>
            <date>2011-02-17 15:46:56 -0800</date>
            <delta_ts>2011-02-18 10:30:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>gm_s2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>9579</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDBlOTE1Li40NzUwMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDItMTcgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
QWRkIFN1cHBvcnQgdG8gV2ViQ29yZSB0byBvcHRpb25hbGx5IGNhbGwgYSBwbGF0Zm9ybS1zcGVj
aWZpYyBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAgICAgQWRkZWQgYW4gYWJpbGl0eSBmb3IgdGhl
IEV2ZW50SGFuZGxlciB0byBpbnZva2UgYW4gb3B0aW9uYWwgcGxhdGZvcm0KKyAgICAgICAgc3Bl
Y2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAKKyAgICAgICAgTm8gdGVzdHMgYWRk
ZWQgYmVjYXVzZSB0aGUgY2hhbmdlIHNob3VsZCBiZSBmdW5jdGlvbmFsbHkgaW52aXNpYmxlLgor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisKIDIw
MTEtMDItMTYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTk5ZjdiOS4uZDc1YTIw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxOCw2ICszNTE4LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKaW5kZXggOWY5ZTBiNC4uNTA3ZTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtOTAsNiArOTAsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKQEAg
LTIwMCw2ICsyMDEsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUp
CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNzZWQo
ZmFsc2UpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKGNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA0Myw4ICszMDQ1LDIyIEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZl
bnQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9nZXN0dXJlUmVjb2duaXplcikKKyAg
ICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGV2
ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKKwogICAgIHJldHVybiBkZWZhdWx0UHJldmVu
dGVkOwogfQorCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IEV2ZW50SGFu
ZGxlcjo6Z2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIHJldHVybiBtX2dlc3R1cmVSZWNvZ25p
emVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OnNldEdlc3R1cmVSZWNvZ25p
emVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gZykKK3sKKyAgICBtX2dl
c3R1cmVSZWNvZ25pemVyID0gZzsKK30KKwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCmluZGV4IDNlMTUyOTEuLjMzMGQ1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlRleHRFdmVudElucHV0VHlwZS5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKF9fT0JKQ19fKQpA
QCAtNTksNiArNjEsNyBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOb2RlOworY2xh
c3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsK
QEAgLTIyNCw2ICsyMjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7Cisg
ICAgCisgICAgIC8vIFVzZSB0aGVzZSB0byBtb3ZlIHRoZSBHZXN0dXJlUmVjb2duaXplciBpbnN0
YW5jZSBiZXR3ZWVuIEV2ZW50SGFuZGxlcnMuCisgICAgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyPiBnZXN0dXJlUmVjb2duaXplcigpOworICAgIHZvaWQgc2V0R2VzdHVyZVJl
Y29nbml6ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPik7CiAjZW5kaWYK
IAogcHJpdmF0ZToKQEAgLTQ0OSw2ICs0NTYsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdldE1hcDsKICAgICBUb3Vj
aFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3Rv
dWNoUHJlc3NlZDsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0
dXJlUmVjb2duaXplcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NmJiYWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
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
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6
OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSB7IH0KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkgeyB9CisKKy8vIFRvIGdldCBhIHVzZWZ1
bCBHZXN0dXJlUmVjb2duaXplciwgYSBzcGVjaWZpYyBwbGF0Zm9ybSBzaG91bGQgcmV0dXJuIHNv
bWV0aGluZworLy8gaGVyZSB0aGF0IG1lZXRzIGl0cyBuZWVkcy4gRXZlbnRTZW5kZXIgd2lsbCBp
Z25vcmUgbnVsbCBHZXN0dXJlUmVjb2duaXplcnMuCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
KiBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjAwY2Q0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAorI2RlZmluZSBQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudEhhbmRsZXI7Citj
bGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOworY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50
OworCisvLyBBIEdlc3R1cmVSZWNvZ25pemVyIGRldGVjdHMgZ2VzdHVyZXMgb2NjdXJyaW5nIGlu
IHRoZSB0b3VjaCBldmVudC4KKy8vIEluIHJlc3BvbnNlIHRvIGEgZ2l2ZW4gdG91Y2ggZXZlbnQs
IHRoZSBHZXN0dXJlUmVjb2duaXplciwgdXBkYXRlcworLy8gaXRzIGludGVybmFsIHN0YXRlIGFu
ZCBvcHRpb25hbGx5IGRpc3BhdGNoZXMgc3ludGhldGljIGV2ZW50cyB0byB0aGUKKy8vIGludm9r
aW5nIEV2ZW50SGFuZGxlciBpbnN0YW5jZS4KK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIgeworcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKTsKKworcHVi
bGljOgorICAgIHZpcnR1YWwgflBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKTsKKworICAgIC8v
IEludm9rZWQgZm9yIGVhY2ggdG91Y2ggZXZlbnQgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvIHRo
ZSBjdXJyZW50IGdlc3R1cmUuCisgICAgLy8gVGFrZXMgdGhlIHxldmVudHwgYW5kIHRoZSB8c291
cmNlfCB0aGF0IG9yaWdpbmF0ZWQgaXQgYW5kIHdoaWNoIHdpbGwgYWxzbworICAgIC8vIGJlIHRo
ZSB0YXJnZXQgb2YgYW55IGdlbmVyYXRlZCBzeW50aGV0aWMgZXZlbnQuIEZpbmFsbHksIHxoYW5k
bGVkfAorICAgIC8vIHNwZWNpZmllcyBpZiB0aGUgfGV2ZW50fCB3YXMgYWN0dWFsbHkgaGFuZGxl
ZCBieSB8c291cmNlfCAoYnkgdGhlIEphdmFTY3JpcHQpCisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBldmVudCByZXN1bHRlZCBpbiBmaXJpbmcgYSBzeW50aGV0aWMgZXZlbnQuCisgICAgdmly
dHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNo
RXZlbnQmIGV2ZW50LCBFdmVudEhhbmRsZXIqIHNvdXJjZSwgYm9vbCBoYW5kbGVkKSA9IDA7Cit9
OworCisvLyBGYWN0b3J5IG1ldGhvZCBmb3IgR2VzdHVyZU1hbmFnZXJzLgorUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplciogY3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82977</attachid>
            <date>2011-02-18 10:30:55 -0800</date>
            <delta_ts>2011-03-10 13:59:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>gm_s2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>10094</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDBlOTE1Li43YzQ2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDItMTcgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
QWRkIFN1cHBvcnQgdG8gV2ViQ29yZSB0byBvcHRpb25hbGx5IGNhbGwgYSBwbGF0Zm9ybS1zcGVj
aWZpYyBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAgICAgQWRkZWQgYW4gYWJpbGl0eSBmb3IgdGhl
IEV2ZW50SGFuZGxlciB0byBpbnZva2UgYW4gb3B0aW9uYWwgcGxhdGZvcm0KKyAgICAgICAgc3Bl
Y2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAKKyAgICAgICAgTm8gdGVzdHMgYWRk
ZWQgYmVjYXVzZSB0aGUgY2hhbmdlIHNob3VsZCBiZSBmdW5jdGlvbmFsbHkgaW52aXNpYmxlLgor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
VG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6On5QbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXIuaDogQWRkZWQuCisKIDIwMTEtMDItMTYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggYTk5ZjdiOS4uZDc1YTIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxOCw2ICsz
NTE4LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9j
ay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9QYXN0ZWJvYXJkLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlw
dGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IDU3NDFlZmIuLmFhYjhhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMTQ0
LDYgKzExNDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAorICAg
IHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5jcHAgXAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBcCiAg
ICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCA5ZjllMGI0Li41MDdlMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKICNlbmRpZgpA
QCAtMjAwLDYgKzIwMSw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFt
ZSkKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoUHJlc3Nl
ZChmYWxzZSkKKyAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoY3JlYXRlUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcigpKQogI2VuZGlmCiB7CiB9CkBAIC0zMDQzLDggKzMwNDUsMjIgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBl
dmVudCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtX2dlc3R1cmVSZWNvZ25pemVyKQor
ICAgICAgICBtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUo
ZXZlbnQsIHRoaXMsIGRlZmF1bHRQcmV2ZW50ZWQpOworCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2
ZW50ZWQ7CiB9CisKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gRXZlbnRI
YW5kbGVyOjpnZXN0dXJlUmVjb2duaXplcigpCit7CisgICAgcmV0dXJuIG1fZ2VzdHVyZVJlY29n
bml6ZXIucmVsZWFzZSgpOworfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6c2V0R2VzdHVyZVJlY29n
bml6ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBnKQoreworICAgIG1f
Z2VzdHVyZVJlY29nbml6ZXIgPSBnOworfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKaW5kZXggM2UxNTI5MS4uMzMwZDVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50SW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoX19PQkpDX18p
CkBAIC01OSw2ICs2MSw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2
ZW50OwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGU7Citj
bGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OwogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OwogY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50
OwpAQCAtMjI0LDYgKzIyNywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsK
KyAgICAKKyAgICAgLy8gVXNlIHRoZXNlIHRvIG1vdmUgdGhlIEdlc3R1cmVSZWNvZ25pemVyIGlu
c3RhbmNlIGJldHdlZW4gRXZlbnRIYW5kbGVycy4KKyAgICBQYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI+IGdlc3R1cmVSZWNvZ25pemVyKCk7CisgICAgdm9pZCBzZXRHZXN0dXJl
UmVjb2duaXplcihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+KTsKICNlbmRp
ZgogCiBwcml2YXRlOgpAQCAtNDQ5LDYgKzQ1Niw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiA+IFRvdWNoVGFyZ2V0TWFwOwogICAgIFRv
dWNoVGFyZ2V0TWFwIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKICAgICBib29sIG1f
dG91Y2hQcmVzc2VkOworICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dl
c3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjQ2YmJhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
cjo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQorUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcjo6flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSB7IH0KKworLy8gVG8gZ2V0IGEgdXNl
ZnVsIEdlc3R1cmVSZWNvZ25pemVyLCBhIHNwZWNpZmljIHBsYXRmb3JtIHNob3VsZCByZXR1cm4g
c29tZXRoaW5nCisvLyBoZXJlIHRoYXQgbWVldHMgaXRzIG5lZWRzLiBFdmVudFNlbmRlciB3aWxs
IGlnbm9yZSBudWxsIEdlc3R1cmVSZWNvZ25pemVycy4KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIqIGNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIHJldHVybiAwOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDBjZDQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisjZGVmaW5lIFBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50SGFuZGxlcjsK
K2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZl
bnQ7CisKKy8vIEEgR2VzdHVyZVJlY29nbml6ZXIgZGV0ZWN0cyBnZXN0dXJlcyBvY2N1cnJpbmcg
aW4gdGhlIHRvdWNoIGV2ZW50LgorLy8gSW4gcmVzcG9uc2UgdG8gYSBnaXZlbiB0b3VjaCBldmVu
dCwgdGhlIEdlc3R1cmVSZWNvZ25pemVyLCB1cGRhdGVzCisvLyBpdHMgaW50ZXJuYWwgc3RhdGUg
YW5kIG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMgZXZlbnRzIHRvIHRoZQorLy8gaW52
b2tpbmcgRXZlbnRIYW5kbGVyIGluc3RhbmNlLgorY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplciB7Citwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCitw
dWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCisgICAg
Ly8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNvbnRyaWJ1dGUgdG8g
dGhlIGN1cnJlbnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyB0aGUgfGV2ZW50fCBhbmQgdGhlIHxz
b3VyY2V8IHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBhbHNvCisgICAgLy8gYmUg
dGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVudC4gRmluYWxseSwgfGhh
bmRsZWR8CisgICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdhcyBhY3R1YWxseSBoYW5k
bGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKKyAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRpYyBldmVudC4KKyAgICB2
aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYgZXZlbnQsIEV2ZW50SGFuZGxlciogc291cmNlLCBib29sIGhhbmRsZWQpID0gMDsK
K307CisKKy8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCitQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyKiBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85387</attachid>
            <date>2011-03-10 13:59:39 -0800</date>
            <delta_ts>2011-03-21 11:57:45 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>gm_s2_wrt_master_newer.diff</filename>
            <type>text/plain</type>
            <size>9549</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZmQ0ZjFiLi5kZjNhODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDMtMTAgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
QWRkIHN1cHBvcnQgdG8gV2ViQ29yZSB0byBvcHRpb25hbGx5IGNhbGwgYSBwbGF0Zm9ybS1zcGVj
aWZpYyBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAgICAgQWRkZWQgYW4gYWJpbGl0eSBmb3IgdGhl
IEV2ZW50SGFuZGxlciB0byBpbnZva2UgYW4gb3B0aW9uYWwgcGxhdGZvcm0KKyAgICAgICAgc3Bl
Y2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAKKyAgICAgICAgTm8gdGVzdHMgYWRk
ZWQgYmVjYXVzZSB0aGUgY2hhbmdlIHNob3VsZCBiZSBmdW5jdGlvbmFsbHkgaW52aXNpYmxlLgor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
VG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6On5QbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXIuaDogQWRkZWQuCisKIDIwMTEtMDMtMTAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBjODMxM2I5Li5hMTlkYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjExLDYgKzI2
MTEsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vUGFzdGVib2FyZC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCAxNGE3ZDNiLi4xNzQwNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTAwNCw2ICsxMDA0LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgXAog
ICAgIHBsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwIFwKKyAgICBwbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgcGxhdGZvcm0vU2NoZW1lUmVnaXN0
cnkuY3BwIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgXAogICAgIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggNzI3NDI2ZS4uODRhNDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtOTEsNiArOTEsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lu
Y2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRv
dWNoRXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKQEAgLTIwMSw2ICsy
MDIsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNzZWQoZmFsc2UpCisg
ICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0
ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSkKICNlbmRpZgogewogfQpAQCAtMzA1Niw2ICsz
MDU4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtX2dlc3R1
cmVSZWNvZ25pemVyKQorICAgICAgICBtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hF
dmVudEZvckdlc3R1cmUoZXZlbnQsIHRoaXMsIGRlZmF1bHRQcmV2ZW50ZWQpOworCiAgICAgcmV0
dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCmluZGV4IGJiNjZhYzguLjk0MDA5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlRleHRFdmVudElucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKF9fT0JKQ19fKQpAQCAtNTks
NiArNjEsNyBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNs
YXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOb2RlOworY2xhc3MgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNs
YXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKQEAgLTQ0
OSw2ICs0NTIsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxF
dmVudFRhcmdldD4gPiBUb3VjaFRhcmdldE1hcDsKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdp
bmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKKyAgICBP
d25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
NTkzMzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXIoKSB7IH0KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyKCkgeyB9CisKKy8vIFRvIGdldCBhIHVzZWZ1bCBHZXN0dXJlUmVjb2duaXpl
ciwgYSBzcGVjaWZpYyBwbGF0Zm9ybSBzaG91bGQgcmV0dXJuIHNvbWV0aGluZworLy8gaGVyZSB0
aGF0IG1lZXRzIGl0cyBuZWVkcy4gRXZlbnRIYW5kbGVyIHdpbGwgaWdub3JlIG51bGwgR2VzdHVy
ZVJlY29nbml6ZXJzLgorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciogUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcjo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hOTRjZjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZpbmUgUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRI
YW5kbGVyOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2NsYXNzIFBsYXRmb3Jt
VG91Y2hFdmVudDsKKworLy8gQSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9j
Y3VycmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRv
dWNoIGV2ZW50LCB0aGUgR2VzdHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKKy8vIGl0cyBpbnRlcm5h
bCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhl
CisvLyBpbnZva2luZyBFdmVudEhhbmRsZXIgaW5zdGFuY2UuCitjbGFzcyBQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyIHsKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigp
OworCitwdWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOwor
CisgICAgLy8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNvbnRyaWJ1
dGUgdG8gdGhlIGN1cnJlbnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyBhIFBsYXRmb3JtVG91Y2hF
dmVudCBhbmQgdGhlIEV2ZW50SGFuZGxlciB0aGF0IG9yaWdpbmF0ZWQgaXQgYW5kIHdoaWNoIHdp
bGwgYWxzbworICAgIC8vIGJlIHRoZSB0YXJnZXQgb2YgYW55IGdlbmVyYXRlZCBzeW50aGV0aWMg
ZXZlbnQuIEZpbmFsbHksIHxoYW5kbGVkfAorICAgIC8vIHNwZWNpZmllcyBpZiB0aGUgfGV2ZW50
fCB3YXMgYWN0dWFsbHkgaGFuZGxlZCBieSB8c291cmNlfCAoYnkgdGhlIEphdmFTY3JpcHQpCisg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCByZXN1bHRlZCBpbiBmaXJpbmcgYSBzeW50
aGV0aWMgZXZlbnQuCisgICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVy
ZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBFdmVudEhhbmRsZXIqLCBib29sIGhhbmRsZWQp
ID0gMDsKKyAgICAKKyAgICAvLyBGYWN0b3J5IG1ldGhvZCBmb3IgR2VzdHVyZU1hbmFnZXJzLgor
ICAgIHN0YXRpYyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKiBjcmVhdGVQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86346</attachid>
            <date>2011-03-21 11:57:45 -0700</date>
            <delta_ts>2011-03-21 13:00:31 -0700</delta_ts>
            <desc>patch next</desc>
            <filename>gm_s2_wrt_master.diff</filename>
            <type>text/plain</type>
            <size>11125</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM0OTczNmMuLjdhZTE1ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTIxICBSb2JlcnQgS3JvZWdl
ciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgIAorICAgICAgICBGbGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2Vz
dHVyZVJlb2NvZ25pemVyIGZyYW1ld29yaworIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgor
CiAyMDExLTAzLTE1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKaW5kZXggNzM5Njc0My4uYWUxMmRmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaApAQCAtOTYxLDYgKzk2MSwxMCBAQAogI2RlZmluZSBFTkFCTEVfR0VPTE9DQVRJT04gMAog
I2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVIpCisjZGVmaW5l
IEVOQUJMRV9HRVNUVVJFX1JFQ09HTlpFUiAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9OT1RJRklDQVRJT05TKQogI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NjY0YjliLi43ZjgxYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDMtMjEgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
QWRkIFN1cHBvcnQgdG8gV2ViQ29yZSB0byBvcHRpb25hbGx5IGNhbGwgYSBwbGF0Zm9ybS1zcGVj
aWZpYyBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MzQ1CisKKyAgICAgICAgQWRkZWQgYW4gYWJpbGl0eSBmb3IgdGhl
IEV2ZW50SGFuZGxlciB0byBpbnZva2UgYW4gb3B0aW9uYWwgcGxhdGZvcm0KKyAgICAgICAgc3Bl
Y2lmaWMgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAKKyAgICAgICAgTm8gdGVzdHMgYWRk
ZWQgYmVjYXVzZSB0aGUgY2hhbmdlIHNob3VsZCBiZSBmdW5jdGlvbmFsbHkgaW52aXNpYmxlLgor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisKIDIw
MTEtMDMtMTYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWYwNDgxNC4uOGVmYTUw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjc4NCw2ICsyNzg0LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggOTY4MjQ4ZS4uMWVlYjExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtOTUsNiArOTUsMTAgQEAKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVIpCisjaW5jbHVkZSAiUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIwMiw2ICsyMDYsOSBAQCBFdmVudEhhbmRsZXI6
OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICAsIG1fdG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNU
VVJFX1JFQ09HTlpFUikKKyAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcjo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpKQorI2VuZGlmCiB7
CiB9CiAKQEAgLTMxMDEsNiArMzEwOCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICB9CiAgICAg
fQogCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJFX1JFQ09HTlpFUikKKyAgICBpZiAobV9nZXN0
dXJlUmVjb2duaXplcikKKyAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKKyNlbmRpZgor
CiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCmluZGV4IGJiNjZhYzguLjg4NmRiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudElucHV0VHlw
ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChfX09CSkNfXykKQEAgLTc2LDYgKzc3LDEwIEBAIGNsYXNzIFdp
ZGdldDsKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RU5BQkxFX0dFU1RVUkVfUkVDT0dOWkVSKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
cjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIGV4dGVybiBjb25zdCBpbnQg
TGlua0RyYWdIeXN0ZXJlc2lzOwogZXh0ZXJuIGNvbnN0IGludCBJbWFnZURyYWdIeXN0ZXJlc2lz
OwpAQCAtNDUwLDYgKzQ1NSw5IEBAIHByaXZhdGU6CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmln
aW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzOwogICAgIGJvb2wgbV90b3VjaFByZXNzZWQ7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoRU5BQkxFX0dFU1RVUkVfUkVDT0dOWkVSKQorICAgIE93blB0cjxQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjQ2YmJhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMCwwICsxLDQ2IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcigpIHsgfQorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6
flBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKSB7IH0KKworLy8gVG8gZ2V0IGEgdXNlZnVsIEdl
c3R1cmVSZWNvZ25pemVyLCBhIHNwZWNpZmljIHBsYXRmb3JtIHNob3VsZCByZXR1cm4gc29tZXRo
aW5nCisvLyBoZXJlIHRoYXQgbWVldHMgaXRzIG5lZWRzLiBFdmVudFNlbmRlciB3aWxsIGlnbm9y
ZSBudWxsIEdlc3R1cmVSZWNvZ25pemVycy4KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIqIGNy
ZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIHJldHVybiAwOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDBjZDQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisjZGVmaW5lIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50SGFuZGxlcjsKK2NsYXNz
IFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CisK
Ky8vIEEgR2VzdHVyZVJlY29nbml6ZXIgZGV0ZWN0cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhl
IHRvdWNoIGV2ZW50LgorLy8gSW4gcmVzcG9uc2UgdG8gYSBnaXZlbiB0b3VjaCBldmVudCwgdGhl
IEdlc3R1cmVSZWNvZ25pemVyLCB1cGRhdGVzCisvLyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9w
dGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMgZXZlbnRzIHRvIHRoZQorLy8gaW52b2tpbmcg
RXZlbnRIYW5kbGVyIGluc3RhbmNlLgorY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciB7
Citwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCitwdWJsaWM6
CisgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCisgICAgLy8gSW52
b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNvbnRyaWJ1dGUgdG8gdGhlIGN1
cnJlbnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyB0aGUgfGV2ZW50fCBhbmQgdGhlIHxzb3VyY2V8
IHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBhbHNvCisgICAgLy8gYmUgdGhlIHRh
cmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVudC4gRmluYWxseSwgfGhhbmRsZWR8
CisgICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdhcyBhY3R1YWxseSBoYW5kbGVkIGJ5
IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRpYyBldmVudC4KKyAgICB2aXJ0dWFs
IGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgZXZlbnQsIEV2ZW50SGFuZGxlciogc291cmNlLCBib29sIGhhbmRsZWQpID0gMDsKK307CisK
Ky8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCitQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyKiBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlYWNhYTIxLi5mOTMwOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTIxICBSb2JlcnQgS3Jv
ZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgIAorICAgICAgICBGbGFnIHRvIGVuYWJsZSBhIHBsYXRmb3Jt
IHNwZWNpZmljIEdlc3R1cmVSZW9jb2duaXplciBmcmFtZXdvcmsgaW4gQ2hyb21pdW0uCisgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorCisg
ICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMS0wMy0xNSAgSWx5YSBTaGVybWFuICA8aXNo
ZXJtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCA0ZTkxZDYwLi40YmQxNzM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC01OSw2ICs1OSw3IEBACiAgICAg
ICAgICdFTkFCTEVfRklMVEVSUz0xJywKICAgICAgICAgJ0VOQUJMRV9GVUxMU0NSRUVOX0FQST0x
JywKICAgICAgICAgJ0VOQUJMRV9HRU9MT0NBVElPTj0xJywKKyAgICAgICAgJ0VOQUJMRV9HRVNU
VVJFX1JFQ09HTlpFUj0xJywKICAgICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAgICAg
ICAgICdFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0xJywKICAgICAgICAgJ0VOQUJMRV9JTlBVVF9T
UEVFQ0g9MScsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86357</attachid>
            <date>2011-03-21 13:00:36 -0700</date>
            <delta_ts>2011-03-21 13:52:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49345-20110321154518.patch</filename>
            <type>text/plain</type>
            <size>11846</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEyNTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM0
OTczNmNlZGM5YThmY2FjNjM3ZTE2ZmYxNTIyNWVjMjI5YjA1ZDEuLjJmNGE1ZWZmNGZlODE3YTg5
OTg2ZTM4ZjcwYmMyMDBhMWRlMTEzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTAzLTIxICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
bGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2VzdHVyZVJlb2NvZ25pemVyIGZyYW1ld29yaworCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDMtMTUgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCA3Mzk2NzQzZWVjOGZjOGI3OGIxYWM3
YmE0MDRlNWJjMDY3N2U5NGY2Li5hZTEyZGY3YzhiMTRlMWJjMDU1MDZlMmY0ZWNhYjY2MjYwOGU3
NjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NjEsNiArOTYxLDEw
IEBACiAjZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVk
KEVOQUJMRV9HRVNUVVJFX1JFQ09HTlpFUikKKyNkZWZpbmUgRU5BQkxFX0dFU1RVUkVfUkVDT0dO
WkVSIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpCiAjZGVm
aW5lIEVOQUJMRV9OT1RJRklDQVRJT05TIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NjRiOWIx
ZmE3NDE3MWM2MDk5MGJhNDdjMzZiYWY2M2MyNWRkYzYuLmNkMjQxYWMxMzBjNDQyNjVmMDg4NDEy
Njc4YWNlOTg5MDZkMGYyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMy0y
MSAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFN1cHBvcnQgdG8gV2ViQ29y
ZSB0byBvcHRpb25hbGx5IGNhbGwgYSBwbGF0Zm9ybS1zcGVjaWZpYyBnZXN0dXJlIHJlY29nbml6
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1
CisKKyAgICAgICAgQWRkZWQgYW4gYWJpbGl0eSBmb3IgdGhlIEV2ZW50SGFuZGxlciB0byBpbnZv
a2UgYW4gb3B0aW9uYWwgcGxhdGZvcm0KKyAgICAgICAgc3BlY2lmaWMgZ2VzdHVyZSByZWNvZ25p
emVyLgorCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1c2UgdGhlIGNoYW5nZSBzaG91bGQg
YmUgZnVuY3Rpb25hbGx5IGludmlzaWJsZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjp+
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyOjpjcmVhdGVQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmg6IEFkZGVkLgorCiAyMDEx
LTAzLTE2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlmMDQ4MTRkZGNjZjkzNzQ1
ZTU3MGYzYjVmNTM5YmE4ZmRmNjY2MDQuLjhlZmE1MDFjOTQ0MTZkNWJiMDllOWIzN2U5MTQwNTIz
NDE5ZDFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI3ODQsNiArMjc4NCw4IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
UGFzdGVib2FyZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVu
dC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNw
cCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCmluZGV4IDk2ODI0OGVhMmMzYjRmMjdmM2MwODJiODQ1MmM3YjcwMzQ2YjUwNzMuLjFl
ZWIxMTNmY2IyYzQ2ZmIyY2E3OGU5NTQ2M2MyZDI1Yjk4MmVhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKQEAgLTk1LDYgKzk1LDEwIEBACiAjaW5jbHVkZSAiVG91Y2hFdmVu
dC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5BQkxFX0dFU1RVUkVfUkVDT0dOWkVSKQorI2lu
Y2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yMDIsNiArMjA2LDkg
QEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUqIGZyYW1lKQogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoUHJlc3NlZChmYWxzZSkKICNlbmRpZgorI2lmIEVO
QUJMRShFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVIpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVy
KFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIoKSkKKyNlbmRpZgogewogfQogCkBAIC0zMTAxLDYgKzMxMDgsMTEgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkK
ICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVIp
CisgICAgaWYgKG1fZ2VzdHVyZVJlY29nbml6ZXIpCisgICAgICAgIG1fZ2VzdHVyZVJlY29nbml6
ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZl
bnRlZCk7CisjZW5kaWYKKwogICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBiYjY2YWM4OWNhM2U5NTk5NmI4NzAz
MGNlMmNhYjdiMDI1ZjVjOGEzLi44ODZkYmMwOWE3YTc5MjUzOTAwMmUzMDljYzE2N2YwZTdjOTA5
ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJUZXh0RXZlbnRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoX19PQkpDX18pCkBA
IC03Niw2ICs3NywxMCBAQCBjbGFzcyBXaWRnZXQ7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJFX1JFQ09HTlpFUikKK2NsYXNz
IFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiBleHRlcm4gY29uc3QgaW50IExpbmtEcmFnSHlzdGVyZXNpczsKIGV4dGVybiBjb25z
dCBpbnQgSW1hZ2VEcmFnSHlzdGVyZXNpczsKQEAgLTQ1MCw2ICs0NTUsOSBAQCBwcml2YXRlOgog
ICAgIFRvdWNoVGFyZ2V0TWFwIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKICAgICBi
b29sIG1fdG91Y2hQcmVzc2VkOwogI2VuZGlmCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJFX1JF
Q09HTlpFUikKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0dXJl
UmVjb2duaXplcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NTkzMzJlMjgzOGYxODNmZTI4NTI1MzA0NmU3M2FlMmQ4ODg5ZjY0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplci5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIo
KSB7IH0KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyKCkgeyB9CisKKy8vIFRvIGdldCBhIHVzZWZ1bCBHZXN0dXJlUmVjb2duaXplciwgYSBzcGVj
aWZpYyBwbGF0Zm9ybSBzaG91bGQgcmV0dXJuIHNvbWV0aGluZworLy8gaGVyZSB0aGF0IG1lZXRz
IGl0cyBuZWVkcy4gRXZlbnRIYW5kbGVyIHdpbGwgaWdub3JlIG51bGwgR2VzdHVyZVJlY29nbml6
ZXJzLgorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciogUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
cjo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YThjMGY3NzA4ZDc4
N2IyMjA3NTVjZjgxNDg5ZTA4NDZhYmQzZGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZpbmUgUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRI
YW5kbGVyOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2NsYXNzIFBsYXRmb3Jt
VG91Y2hFdmVudDsKKworLy8gQSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9j
Y3VycmluZyBpbiB0aGUgdG91Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRv
dWNoIGV2ZW50LCB0aGUgR2VzdHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKKy8vIGl0cyBpbnRlcm5h
bCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhl
CisvLyBpbnZva2luZyBFdmVudEhhbmRsZXIgaW5zdGFuY2UuCitjbGFzcyBQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyIHsKK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
KCk7CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7
CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQgY29udHJp
YnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJlLgorICAgIC8vIFRha2VzIGEgUGxhdGZvcm1Ub3Vj
aEV2ZW50IGFuZCB0aGUgRXZlbnRIYW5kbGVyIHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2gg
d2lsbCBhbHNvCisgICAgLy8gYmUgdGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRp
YyBldmVudC4gRmluYWxseSwgfGhhbmRsZWR8CisgICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZl
bnR8IHdhcyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5
bnRoZXRpYyBldmVudC4KKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0
dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIEV2ZW50SGFuZGxlciosIGJvb2wgaGFuZGxl
ZCkgPSAwOworCisgICAgLy8gRmFjdG9yeSBtZXRob2QgZm9yIEdlc3R1cmVNYW5hZ2Vycy4KKyAg
ICBzdGF0aWMgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciogY3JlYXRlUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVhY2FhMjE0ZWQ1YTI4ZGIzMmIyMGNlZTZkMTgzNmQ5YzdjYzQxYmEuLmY4ZmNhZmRhN2Y2ZDg5
NTIzNGJiZTcyZjk1ZDkxMmU2ODJjNDM1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMjEgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZsYWcgdG8gZW5hYmxlIGEgcGxhdGZvcm0gc3BlY2lmaWMgR2VzdHVyZVJlb2NvZ25pemVy
IGZyYW1ld29yayBpbiBDaHJvbWl1bS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisKIDIw
MTEtMDMtMTUgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkKaW5kZXggNGU5MWQ2MGM5YTM0ZTkzZTE3MDA2ZjgyZTRhOTZlYTZlNTVkNWZhZi4uNGJkMTcz
NzQ4MDU1MTU4OTM1ZmIwMWIxODZlZGY5OTQ2ODIxM2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQpAQCAtNTksNiArNTksNyBAQAogICAgICAgICAnRU5BQkxFX0ZJTFRFUlM9
MScsCiAgICAgICAgICdFTkFCTEVfRlVMTFNDUkVFTl9BUEk9MScsCiAgICAgICAgICdFTkFCTEVf
R0VPTE9DQVRJT049MScsCisgICAgICAgICdFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVI9MScsCiAg
ICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAogICAgICAgICAnRU5BQkxFX0lOREVYRURf
REFUQUJBU0U9MScsCiAgICAgICAgICdFTkFCTEVfSU5QVVRfU1BFRUNIPTEnLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86360</attachid>
            <date>2011-03-21 13:52:39 -0700</date>
            <delta_ts>2011-03-21 14:08:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49345-20110321163720.patch</filename>
            <type>text/plain</type>
            <size>11746</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEyNTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM0
OTczNmNlZGM5YThmY2FjNjM3ZTE2ZmYxNTIyNWVjMjI5YjA1ZDEuLjJmNGE1ZWZmNGZlODE3YTg5
OTg2ZTM4ZjcwYmMyMDBhMWRlMTEzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTAzLTIxICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
bGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2VzdHVyZVJlb2NvZ25pemVyIGZyYW1ld29yaworCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDMtMTUgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCA3Mzk2NzQzZWVjOGZjOGI3OGIxYWM3
YmE0MDRlNWJjMDY3N2U5NGY2Li5hZTEyZGY3YzhiMTRlMWJjMDU1MDZlMmY0ZWNhYjY2MjYwOGU3
NjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NjEsNiArOTYxLDEw
IEBACiAjZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVk
KEVOQUJMRV9HRVNUVVJFX1JFQ09HTlpFUikKKyNkZWZpbmUgRU5BQkxFX0dFU1RVUkVfUkVDT0dO
WkVSIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpCiAjZGVm
aW5lIEVOQUJMRV9OT1RJRklDQVRJT05TIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NjRiOWIx
ZmE3NDE3MWM2MDk5MGJhNDdjMzZiYWY2M2MyNWRkYzYuLmQzYjRhYTdhODQ4ZTBhM2JkNTQyMzQx
NGI3YjEzOTNlOTBiMGE1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMy0y
MSAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFN1cHBvcnQgdG8gV2ViQ29y
ZSB0byBvcHRpb25hbGx5IGNhbGwgYSBwbGF0Zm9ybS1zcGVjaWZpYyBnZXN0dXJlIHJlY29nbml6
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzQ1
CisKKyAgICAgICAgQWRkZWQgYW4gYWJpbGl0eSBmb3IgdGhlIEV2ZW50SGFuZGxlciB0byBpbnZv
a2UgYW4gb3B0aW9uYWwgcGxhdGZvcm0KKyAgICAgICAgc3BlY2lmaWMgZ2VzdHVyZSByZWNvZ25p
emVyLgorCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGJlY2F1c2UgdGhlIGNoYW5nZSBzaG91bGQg
YmUgZnVuY3Rpb25hbGx5IGludmlzaWJsZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjp+
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisKIDIwMTEtMDMtMTYgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggOWYwNDgxNGRkY2NmOTM3NDVlNTcwZjNiNWY1MzliYThmZGY2NjYwNC4u
OGVmYTUwMWM5NDQxNmQ1YmIwOWU5YjM3ZTkxNDA1MjM0MTlkMWExYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMjc4NCw2ICsyNzg0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9Ob3RJbXBsZW1l
bnRlZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QYXN0ZWJvYXJkLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1l
bnVEZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZl
bnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOTY4MjQ4ZWEyYzNi
NGYyN2YzYzA4MmI4NDUyYzdiNzAzNDZiNTA3My4uNjU4NmYzMzc2MmE2NDBjMzQ0YTg2YTMzOTE5
ZmEzODZmMTcyMmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTUs
NiArOTUsMTAgQEAKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVIpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKQEAgLTIwMiw2ICsyMDYsOSBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFu
ZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91
Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJFX1JFQ09H
TlpFUikKKyAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
cjo6Y3JlYXRlKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMzEwMSw2ICszMTA4LDExIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYg
ZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFCTEUoRU5BQkxFX0dFU1RVUkVfUkVD
T0dOWkVSKQorICAgIGlmIChtX2dlc3R1cmVSZWNvZ25pemVyKQorICAgICAgICBtX2dlc3R1cmVS
ZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoZXZlbnQsIHRoaXMsIGRlZmF1
bHRQcmV2ZW50ZWQpOworI2VuZGlmCisKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggYmI2NmFjODljYTNlOTU5
OTZiODcwMzBjZTJjYWI3YjAyNWY1YzhhMy4uODg2ZGJjMDlhN2E3OTI1MzkwMDJlMzA5Y2MxNjdm
MGU3YzkwOWQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKF9fT0JK
Q19fKQpAQCAtNzYsNiArNzcsMTAgQEAgY2xhc3MgV2lkZ2V0OwogY2xhc3MgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkFCTEVfR0VTVFVSRV9SRUNPR05aRVIp
CitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCisKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogZXh0ZXJuIGNvbnN0IGludCBMaW5rRHJhZ0h5c3RlcmVzaXM7CiBleHRl
cm4gY29uc3QgaW50IEltYWdlRHJhZ0h5c3RlcmVzaXM7CkBAIC00NTAsNiArNDU1LDkgQEAgcHJp
dmF0ZToKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7
CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKICNlbmRpZgorI2lmIEVOQUJMRShFTkFCTEVfR0VT
VFVSRV9SRUNPR05aRVIpCisgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1f
Z2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhmYzNmZTJlMzQ4NWI1YTZlMzkyYTJlYzdhOTljYTRhNjc4
MTBjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyKCkgeyB9CitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjp+UGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcigpIHsgfQorCisvLyBUbyBnZXQgYSB1c2VmdWwgR2VzdHVyZVJlY29nbml6ZXIs
IGEgc3BlY2lmaWMgcGxhdGZvcm0gc2hvdWxkIHJldHVybiBzb21ldGhpbmcKKy8vIGhlcmUgdGhh
dCBtZWV0cyBpdHMgbmVlZHMuIEV2ZW50SGFuZGxlciB3aWxsIGlnbm9yZSBudWxsIEdlc3R1cmVS
ZWNvZ25pemVycy4KK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIqIFBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmU4NWE1ODg4NjJiYTE2YmMxMWNlYmQ5YjA0NWI3
MjdmODMwYjIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyX2gKKyNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRIYW5kbGVyOworY2xhc3MgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcjsKK2NsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKKworLy8g
QSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91
Y2ggZXZlbnQuCisvLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2Vz
dHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKKy8vIGl0cyBpbnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9u
YWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhlCisvLyBpbnZva2luZyBFdmVu
dEhhbmRsZXIgaW5zdGFuY2UuCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyIHsKK3By
b3RlY3RlZDoKKyAgICBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CisKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CisKKyAgICAvLyBJbnZva2Vk
IGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQgY29udHJpYnV0ZSB0byB0aGUgY3VycmVu
dCBnZXN0dXJlLgorICAgIC8vIFRha2VzIGEgUGxhdGZvcm1Ub3VjaEV2ZW50IGFuZCB0aGUgRXZl
bnRIYW5kbGVyIHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBhbHNvCisgICAgLy8g
YmUgdGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVudC4gRmluYWxseSwg
fGhhbmRsZWR8CisgICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdhcyBhY3R1YWxseSBo
YW5kbGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRpYyBldmVudC4KKyAg
ICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYsIEV2ZW50SGFuZGxlciosIGJvb2wgaGFuZGxlZCkgPSAwOworCisgICAgLy8g
RmFjdG9yeSBtZXRob2QgZm9yIEdlc3R1cmVNYW5hZ2Vycy4KKyAgICBzdGF0aWMgUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplciogY3JlYXRlKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggZWFjYWEyMTRlZDVhMjhkYjMyYjIwY2VlNmQxODM2ZDljN2NjNDFiYS4u
ZjhmY2FmZGE3ZjZkODk1MjM0YmJlNzJmOTVkOTEyZTY4MmM0MzUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0yMSAgUm9iZXJ0IEtyb2VnZXIg
IDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRmxhZyB0byBlbmFibGUgYSBwbGF0Zm9ybSBzcGVjaWZpYyBHZXN0
dXJlUmVvY29nbml6ZXIgZnJhbWV3b3JrIGluIENocm9taXVtLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorCisgICAgICAgICogZmVhdHVy
ZXMuZ3lwaToKKwogMjAxMS0wMy0xNSAgSWx5YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vZmVhdHVyZXMuZ3lwaQppbmRleCA0ZTkxZDYwYzlhMzRlOTNlMTcwMDZmODJlNGE5NmVhNmU1
NWQ1ZmFmLi40YmQxNzM3NDgwNTUxNTg5MzVmYjAxYjE4NmVkZjk5NDY4MjEzYWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC01OSw2ICs1OSw3IEBACiAgICAgICAgICdF
TkFCTEVfRklMVEVSUz0xJywKICAgICAgICAgJ0VOQUJMRV9GVUxMU0NSRUVOX0FQST0xJywKICAg
ICAgICAgJ0VOQUJMRV9HRU9MT0NBVElPTj0xJywKKyAgICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JF
Q09HTlpFUj0xJywKICAgICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAgICAgICAgICdF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0xJywKICAgICAgICAgJ0VOQUJMRV9JTlBVVF9TUEVFQ0g9
MScsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86362</attachid>
            <date>2011-03-21 14:08:33 -0700</date>
            <delta_ts>2011-03-21 16:19:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49345-20110321165314.patch</filename>
            <type>text/plain</type>
            <size>11754</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEyNTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM0
OTczNmNlZGM5YThmY2FjNjM3ZTE2ZmYxNTIyNWVjMjI5YjA1ZDEuLjJmNGE1ZWZmNGZlODE3YTg5
OTg2ZTM4ZjcwYmMyMDBhMWRlMTEzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTAzLTIxICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
bGFnIHRvIGVuYWJsZS9kaXNhYmxlIGEgR2VzdHVyZVJlb2NvZ25pemVyIGZyYW1ld29yaworCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM0NQorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDMtMTUgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCA3Mzk2NzQzZWVjOGZjOGI3OGIxYWM3
YmE0MDRlNWJjMDY3N2U5NGY2Li5jOTg0ZDliOGI3OGFiMDZlNWZlNzM1YzY5OWU1ZTY1MjgwY2Zk
MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NjEsNiArOTYxLDEw
IEBACiAjZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVk
KEVOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVIpCisjZGVmaW5lIEVOQUJMRV9HRVNUVVJFX1JFQ09H
TklaRVIgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykKICNk
ZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY2NGI5
YjFmYTc0MTcxYzYwOTkwYmE0N2MzNmJhZjYzYzI1ZGRjNi4uZDNiNGFhN2E4NDhlMGEzYmQ1NDIz
NDE0YjdiMTM5M2U5MGIwYTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTAz
LTIxICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU3VwcG9ydCB0byBXZWJD
b3JlIHRvIG9wdGlvbmFsbHkgY2FsbCBhIHBsYXRmb3JtLXNwZWNpZmljIGdlc3R1cmUgcmVjb2du
aXplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkz
NDUKKworICAgICAgICBBZGRlZCBhbiBhYmlsaXR5IGZvciB0aGUgRXZlbnRIYW5kbGVyIHRvIGlu
dm9rZSBhbiBvcHRpb25hbCBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyBnZXN0dXJlIHJlY29n
bml6ZXIuCisKKyAgICAgICAgTm8gdGVzdHMgYWRkZWQgYmVjYXVzZSB0aGUgY2hhbmdlIHNob3Vs
ZCBiZSBmdW5jdGlvbmFsbHkgaW52aXNpYmxlLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6
On5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplci5oOiBBZGRlZC4KKwogMjAxMS0wMy0xNiAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA5ZjA0ODE0ZGRjY2Y5Mzc0NWU1NzBmM2I1ZjUzOWJhOGZkZjY2NjA0
Li44ZWZhNTAxYzk0NDE2ZDViYjA5ZTliMzdlOTE0MDUyMzQxOWQxYTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0yNzg0LDYgKzI3ODQsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxl
bWVudGVkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3Jt
TWVudURlc2NyaXB0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTW91c2VF
dmVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NjgyNDhlYTJj
M2I0ZjI3ZjNjMDgyYjg0NTJjN2I3MDM0NmI1MDczLi44YTkwZmU4MzQ5NzQyMzhkZDdkZmY5ZDk5
OThlY2Q2ZmMwZjdlZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC05
NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKEVOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIwMiw2ICsyMDYsOSBAQCBFdmVudEhhbmRsZXI6OkV2ZW50
SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1f
dG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJFX1JF
Q09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTMxMDEsNiArMzEwOCwxMSBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZl
bnQmIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJF
X1JFQ09HTklaRVIpCisgICAgaWYgKG1fZ2VzdHVyZVJlY29nbml6ZXIpCisgICAgICAgIG1fZ2Vz
dHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywg
ZGVmYXVsdFByZXZlbnRlZCk7CisjZW5kaWYKKwogICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVk
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBiYjY2YWM4OWNh
M2U5NTk5NmI4NzAzMGNlMmNhYjdiMDI1ZjVjOGEzLi4xOGYyMzgxYWEwNzU4MTVmM2EzZWIzMDkw
YTFhNTM1NzFlYzg5NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJUZXh0RXZlbnRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQo
X19PQkpDX18pCkBAIC03Niw2ICs3NywxMCBAQCBjbGFzcyBXaWRnZXQ7CiBjbGFzcyBQbGF0Zm9y
bUdlc3R1cmVFdmVudDsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQUJMRV9HRVNUVVJFX1JFQ09H
TklaRVIpCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCisKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQogZXh0ZXJuIGNvbnN0IGludCBMaW5rRHJhZ0h5c3RlcmVzaXM7
CiBleHRlcm4gY29uc3QgaW50IEltYWdlRHJhZ0h5c3RlcmVzaXM7CkBAIC00NTAsNiArNDU1LDkg
QEAgcHJpdmF0ZToKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRh
cmdldHM7CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKICNlbmRpZgorI2lmIEVOQUJMRShFTkFC
TEVfR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZmMzZmUyZTM0ODViNWE2ZTM5MmEyZWM3YTk5
Y2E0YTY3ODEwYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcigpIHsgfQorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6flBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXIoKSB7IH0KKworLy8gVG8gZ2V0IGEgdXNlZnVsIEdlc3R1cmVSZWNv
Z25pemVyLCBhIHNwZWNpZmljIHBsYXRmb3JtIHNob3VsZCByZXR1cm4gc29tZXRoaW5nCisvLyBo
ZXJlIHRoYXQgbWVldHMgaXRzIG5lZWRzLiBFdmVudEhhbmRsZXIgd2lsbCBpZ25vcmUgbnVsbCBH
ZXN0dXJlUmVjb2duaXplcnMuCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKiBQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlODVhNTg4ODYyYmExNmJjMTFjZWJk
OWIwNDViNzI3ZjgzMGIyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCisjZGVmaW5lIFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50SGFuZGxlcjsKK2Ns
YXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7
CisKKy8vIEEgR2VzdHVyZVJlY29nbml6ZXIgZGV0ZWN0cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4g
dGhlIHRvdWNoIGV2ZW50LgorLy8gSW4gcmVzcG9uc2UgdG8gYSBnaXZlbiB0b3VjaCBldmVudCwg
dGhlIEdlc3R1cmVSZWNvZ25pemVyLCB1cGRhdGVzCisvLyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5k
IG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMgZXZlbnRzIHRvIHRoZQorLy8gaW52b2tp
bmcgRXZlbnRIYW5kbGVyIGluc3RhbmNlLgorY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
ciB7Citwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCitwdWJs
aWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOworCisgICAgLy8g
SW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNvbnRyaWJ1dGUgdG8gdGhl
IGN1cnJlbnQgZ2VzdHVyZS4KKyAgICAvLyBUYWtlcyBhIFBsYXRmb3JtVG91Y2hFdmVudCBhbmQg
dGhlIEV2ZW50SGFuZGxlciB0aGF0IG9yaWdpbmF0ZWQgaXQgYW5kIHdoaWNoIHdpbGwgYWxzbwor
ICAgIC8vIGJlIHRoZSB0YXJnZXQgb2YgYW55IGdlbmVyYXRlZCBzeW50aGV0aWMgZXZlbnQuIEZp
bmFsbHksIHxoYW5kbGVkfAorICAgIC8vIHNwZWNpZmllcyBpZiB0aGUgfGV2ZW50fCB3YXMgYWN0
dWFsbHkgaGFuZGxlZCBieSB8c291cmNlfCAoYnkgdGhlIEphdmFTY3JpcHQpCisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBldmVudCByZXN1bHRlZCBpbiBmaXJpbmcgYSBzeW50aGV0aWMgZXZl
bnQuCisgICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShjb25zdCBQ
bGF0Zm9ybVRvdWNoRXZlbnQmLCBFdmVudEhhbmRsZXIqLCBib29sIGhhbmRsZWQpID0gMDsKKwor
ICAgIC8vIEZhY3RvcnkgbWV0aG9kIGZvciBHZXN0dXJlTWFuYWdlcnMuCisgICAgc3RhdGljIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXIqIGNyZWF0ZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGVhY2FhMjE0ZWQ1YTI4ZGIzMmIyMGNlZTZkMTgzNmQ5Yzdj
YzQxYmEuLmY4ZmNhZmRhN2Y2ZDg5NTIzNGJiZTcyZjk1ZDkxMmU2ODJjNDM1MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMjEgIFJvYmVydCBL
cm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZsYWcgdG8gZW5hYmxlIGEgcGxhdGZvcm0gc3BlY2lm
aWMgR2VzdHVyZVJlb2NvZ25pemVyIGZyYW1ld29yayBpbiBDaHJvbWl1bS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNDUKKworICAgICAgICAq
IGZlYXR1cmVzLmd5cGk6CisKIDIwMTEtMDMtMTUgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggNGU5MWQ2MGM5YTM0ZTkzZTE3MDA2ZjgyZTRh
OTZlYTZlNTVkNWZhZi4uYzBjMmJmM2I0ZGI3ZGFhZWJkM2FlMjIzMzYxODM4YjkxZTMzN2UwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNTksNiArNTksNyBAQAogICAg
ICAgICAnRU5BQkxFX0ZJTFRFUlM9MScsCiAgICAgICAgICdFTkFCTEVfRlVMTFNDUkVFTl9BUEk9
MScsCiAgICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCisgICAgICAgICdFTkFCTEVfR0VT
VFVSRV9SRUNPR05JWkVSPTEnLAogICAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAg
ICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLAogICAgICAgICAnRU5BQkxFX0lOUFVU
X1NQRUVDSD0xJywK
</data>

          </attachment>
      

    </bug>

</bugzilla>