<?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>56922</bug_id>
          
          <creation_ts>2011-03-23 06:51:49 -0700</creation_ts>
          <short_desc>Media Stream API: add the skeleton of the frame and page controllers and the embedder client.</short_desc>
          <delta_ts>2012-09-19 07:21:16 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>56586</dependson>
          <blocked>58550</blocked>
    
    <blocked>60177</blocked>
    
    <blocked>61069</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Leandro Graciá Gil">leandrogracia</assigned_to>
          <cc>adam.bergkvist</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>satish</cc>
    
    <cc>steveblock</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>372121</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-03-23 06:51:49 -0700</bug_when>
    <thetext>Add the basic outlines of the page controller for the Media Stream API and its client interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372163</commentid>
    <comment_count>1</comment_count>
      <attachid>86621</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-03-23 08:47:52 -0700</bug_when>
    <thetext>Created attachment 86621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372391</commentid>
    <comment_count>2</comment_count>
      <attachid>86677</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-03-23 13:16:15 -0700</bug_when>
    <thetext>Created attachment 86677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372392</commentid>
    <comment_count>3</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-03-23 13:16:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=86677) [details]
&gt; Patch

Rebasing and changing raw pointers to the corresponding RefPtr and PassRefPtr objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381568</commentid>
    <comment_count>4</comment_count>
      <attachid>88672</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-07 12:18:44 -0700</bug_when>
    <thetext>Created attachment 88672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382232</commentid>
    <comment_count>5</comment_count>
      <attachid>88823</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-08 07:58:48 -0700</bug_when>
    <thetext>Created attachment 88823
Patch

Rebasing and fixing license copyrights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383210</commentid>
    <comment_count>6</comment_count>
      <attachid>88823</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-11 09:25:52 -0700</bug_when>
    <thetext>Comment on attachment 88823
Patch

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

&gt; Source/WebCore/page/DOMWindow.h:503
&gt; +        OwnPtr&lt;MediaStreamContext&gt; m_mediaStreamContext;

Can he controller own a set of these, rather than polluting DOMWindow?

&gt; Source/WebCore/page/MediaStreamContext.cpp:56
&gt; +    ScriptExecutionContext* m_scriptContext;

Use full name - m_scriptExecutionContext

&gt; Source/WebCore/page/MediaStreamContext.cpp:105
&gt; +void MediaStreamContext::pageDetached()

As discussed, this method probably isn&apos;t needed right now.

&gt; Source/WebCore/page/MediaStreamContext.cpp:116
&gt; +// Called on frame destruction despite the name.

Remove

&gt; Source/WebCore/page/MediaStreamContext.cpp:131
&gt; +    if (pageController() == controller)

When can the controller not be our controller?

&gt; Source/WebCore/page/MediaStreamContext.h:44
&gt; +class MediaStreamContext {

Try to avoid generic names like Context - maybe MediaStreamFrameController ?

&gt; Source/WebCore/page/MediaStreamContext.h:61
&gt; +    class IdGenerator {

Why is this a separate class?

&gt; Source/WebCore/page/MediaStreamContext.h:77
&gt; +    void enterDetachedState();

Add a description of what it means to be detached.

&gt; Source/WebCore/page/MediaStreamContext.h:81
&gt; +    bool m_detachedState;

m_isInDetachedState

&gt; Source/WebCore/page/MediaStreamController.cpp:83
&gt; +void MediaStreamController::transferContext(MediaStreamContext* context, MediaStreamController* newController)

Given that this method isn&apos;t implemented properly yet, let&apos;s not add it yet to avoid bloat. transferToNewPage() can call contextDestroyed() directly.

&gt; Source/WebCore/page/MediaStreamController.h:45
&gt; +    void contextDetached(MediaStreamContext*);

Make more descriptive - removeContentForFrameController

&gt; Source/WebCore/page/MediaStreamController.h:46
&gt; +    void transferContext(MediaStreamContext*, MediaStreamController*);

transferContentForFrameController

&gt; Source/WebCore/page/MediaStreamController.h:49
&gt; +    class RequestContext {

If this class is just for internal use, I don&apos;t think there&apos;s much need for it. Otherwsie, add an id() method to MediaStreamContext.

&gt; Source/WebCore/page/MediaStreamController.h:67
&gt; +    typedef HashMap&lt;int, RequestContext&gt; RequestContextMap;

keep typedef with with first use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384277</commentid>
    <comment_count>7</comment_count>
      <attachid>89253</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-12 13:01:01 -0700</bug_when>
    <thetext>Created attachment 89253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384279</commentid>
    <comment_count>8</comment_count>
      <attachid>88823</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-12 13:02:18 -0700</bug_when>
    <thetext>Comment on attachment 88823
Patch

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

&gt;&gt; Source/WebCore/page/DOMWindow.h:503
&gt;&gt; +        OwnPtr&lt;MediaStreamContext&gt; m_mediaStreamContext;
&gt; 
&gt; Can he controller own a set of these, rather than polluting DOMWindow?

No, since we can have a frame without a page. These are the frames in the detached state. I&apos;m moving this to the Frame class.

&gt;&gt; Source/WebCore/page/MediaStreamContext.cpp:56
&gt;&gt; +    ScriptExecutionContext* m_scriptContext;
&gt; 
&gt; Use full name - m_scriptExecutionContext

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamContext.cpp:105
&gt;&gt; +void MediaStreamContext::pageDetached()
&gt; 
&gt; As discussed, this method probably isn&apos;t needed right now.

It seems it is. This is called from Frame::pageDestroyed, which is called not only by the Page&apos;s destructor but also by FrameLoader::detachFromParent. In this last case the page is not really destroyed despite its name (there is a FIXME about this), so we need to tell the page controller to stop forwarding request replies to us.

&gt;&gt; Source/WebCore/page/MediaStreamContext.cpp:116
&gt;&gt; +// Called on frame destruction despite the name.
&gt; 
&gt; Remove

Changed to &apos;Called when the frame is being destroyed&apos;.

&gt;&gt; Source/WebCore/page/MediaStreamContext.cpp:131
&gt;&gt; +    if (pageController() == controller)
&gt; 
&gt; When can the controller not be our controller?

This method is being deleted as it&apos;s not required for the moment.

&gt;&gt; Source/WebCore/page/MediaStreamContext.h:44
&gt;&gt; +class MediaStreamContext {
&gt; 
&gt; Try to avoid generic names like Context - maybe MediaStreamFrameController ?

Done. Changed to MediaStreamFrameController everywhere.

&gt;&gt; Source/WebCore/page/MediaStreamContext.h:61
&gt;&gt; +    class IdGenerator {
&gt; 
&gt; Why is this a separate class?

Because the next patch will introduce a new hash map that will inherit from it.

&gt;&gt; Source/WebCore/page/MediaStreamContext.h:77
&gt;&gt; +    void enterDetachedState();
&gt; 
&gt; Add a description of what it means to be detached.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamContext.h:81
&gt;&gt; +    bool m_detachedState;
&gt; 
&gt; m_isInDetachedState

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:83
&gt;&gt; +void MediaStreamController::transferContext(MediaStreamContext* context, MediaStreamController* newController)
&gt; 
&gt; Given that this method isn&apos;t implemented properly yet, let&apos;s not add it yet to avoid bloat. transferToNewPage() can call contextDestroyed() directly.

Done. This method is now deleted.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:45
&gt;&gt; +    void contextDetached(MediaStreamContext*);
&gt; 
&gt; Make more descriptive - removeContentForFrameController

Now using unregisterFrameController. Is that OK?

&gt;&gt; Source/WebCore/page/MediaStreamController.h:46
&gt;&gt; +    void transferContext(MediaStreamContext*, MediaStreamController*);
&gt; 
&gt; transferContentForFrameController

Method deleted as part of a previous review comment.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:49
&gt;&gt; +    class RequestContext {
&gt; 
&gt; If this class is just for internal use, I don&apos;t think there&apos;s much need for it. Otherwsie, add an id() method to MediaStreamContext.

Renamed to Request and its id to localId to make clear its use. It is a map that translates from global per-page request id to local per-frame-controller request id, with its corresponding frame controller.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:67
&gt;&gt; +    typedef HashMap&lt;int, RequestContext&gt; RequestContextMap;
&gt; 
&gt; keep typedef with with first use

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385833</commentid>
    <comment_count>9</comment_count>
      <attachid>89599</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-14 10:04:37 -0700</bug_when>
    <thetext>Created attachment 89599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385836</commentid>
    <comment_count>10</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-14 10:05:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=89599) [details]
&gt; Patch

Fixing a problem in MediaStreamController::unregisterFrameController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385839</commentid>
    <comment_count>11</comment_count>
      <attachid>89599</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-14 10:08:32 -0700</bug_when>
    <thetext>Comment on attachment 89599
Patch

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

&gt; Source/WebCore/page/MediaStreamController.cpp:54
&gt; +            it = m_requests.begin();

I&apos;m not sure if this is the best way to do this. Are HashMap iterators valid after another element from the map has been removed? If that&apos;s the case, I can just make a copy of the iterator, advance the original iterator to the next element and operate (possibly delete) the copy. That should avoid coming back to the beginning of the map everytime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385856</commentid>
    <comment_count>12</comment_count>
      <attachid>89599</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-14 10:40:43 -0700</bug_when>
    <thetext>Comment on attachment 89599
Patch

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

&gt; Source/WebCore/page/MediaStreamController.cpp:54
&gt; +            it = m_requests.begin();

You&apos;re right that remove() does invalidate iterators. A neater solution might be to maintain the reverse mapping from MediaStreamFrameController* to Set&lt;globalId&gt;. Then you can look up the set of map entries to delete.

&gt; Source/WebCore/page/MediaStreamController.h:49
&gt; +    class Request {

Probably best to move the impl of this class to the cpp. Or better, just forward declare the type here.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:55
&gt; +    // This script execution context is the document referenced by the frame. It will

I think you could simplify this comment. You just need to say that the SEC is guaranteed to have the lifetime of the Frame and that it&apos;s used only to make the callback async.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:66
&gt; +    ASSERT(contains(requestId));

No need to assert when we&apos;d crash immediately afterwards anyway. Use asserts to highlight more subtle requirements.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:73
&gt; +    for (iterator it = begin(); it != end(); it = begin()) {

Strange construct. &apos;while (!empty())&apos; is more usual.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:113
&gt; +// Called also on frame detachment, in which case the page controller will remain alive.

You mean when the Frame is detached from it&apos;s Page? Make this more clear.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:123
&gt; +void MediaStreamFrameController::disconnectFrame()

Make clear that we&apos;re doomed to at this point.

&gt; Source/WebCore/page/MediaStreamFrameController.h:70
&gt; +    class RequestMap : public IdGenerator, public HashMap&lt;int, RefPtr&lt;Request&gt; &gt; {

Why does RequestMap implement IdGenerator? I&apos;d expect getNextId() to be an impl detail of the map. May be best to leave this class out for now, as I can&apos;t yet see how it&apos;s used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385953</commentid>
    <comment_count>13</comment_count>
      <attachid>89624</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-14 12:26:51 -0700</bug_when>
    <thetext>Created attachment 89624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385957</commentid>
    <comment_count>14</comment_count>
      <attachid>89599</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-14 12:32:00 -0700</bug_when>
    <thetext>Comment on attachment 89599
Patch

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

&gt;&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:54
&gt;&gt;&gt; +            it = m_requests.begin();
&gt;&gt; 
&gt;&gt; I&apos;m not sure if this is the best way to do this. Are HashMap iterators valid after another element from the map has been removed? If that&apos;s the case, I can just make a copy of the iterator, advance the original iterator to the next element and operate (possibly delete) the copy. That should avoid coming back to the beginning of the map everytime.
&gt; 
&gt; You&apos;re right that remove() does invalidate iterators. A neater solution might be to maintain the reverse mapping from MediaStreamFrameController* to Set&lt;globalId&gt;. Then you can look up the set of map entries to delete.

This loop is going to be repeated for Streams and, unlikely but possible, for something else in the future. I think that introducing these reverse maps adds an unnecessary extra complexity and more cleanups that can make the code even dirtier. I propose to use auxiliary vectors to find the keys to be removed and then remove them in a 2nd pass. This both avoids adding extra complexity and solves the problem of restarting the iteration for pages with many frames.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:49
&gt;&gt; +    class Request {
&gt; 
&gt; Probably best to move the impl of this class to the cpp. Or better, just forward declare the type here.

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:55
&gt;&gt; +    // This script execution context is the document referenced by the frame. It will
&gt; 
&gt; I think you could simplify this comment. You just need to say that the SEC is guaranteed to have the lifetime of the Frame and that it&apos;s used only to make the callback async.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:66
&gt;&gt; +    ASSERT(contains(requestId));
&gt; 
&gt; No need to assert when we&apos;d crash immediately afterwards anyway. Use asserts to highlight more subtle requirements.

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:73
&gt;&gt; +    for (iterator it = begin(); it != end(); it = begin()) {
&gt; 
&gt; Strange construct. &apos;while (!empty())&apos; is more usual.

This follows the model of ScriptExecutionContext&apos;s destructor. In any case I have adopted your proposal.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:113
&gt;&gt; +// Called also on frame detachment, in which case the page controller will remain alive.
&gt; 
&gt; You mean when the Frame is detached from it&apos;s Page? Make this more clear.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:123
&gt;&gt; +void MediaStreamFrameController::disconnectFrame()
&gt; 
&gt; Make clear that we&apos;re doomed to at this point.

Done. Also refactored the code a bit.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:140
&gt; +    enterDetachedState();

Refactored.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.h:70
&gt;&gt; +    class RequestMap : public IdGenerator, public HashMap&lt;int, RefPtr&lt;Request&gt; &gt; {
&gt; 
&gt; Why does RequestMap implement IdGenerator? I&apos;d expect getNextId() to be an impl detail of the map. May be best to leave this class out for now, as I can&apos;t yet see how it&apos;s used.

Fixed. It will be introduced with its use in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389924</commentid>
    <comment_count>15</comment_count>
      <attachid>89624</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-21 03:48:39 -0700</bug_when>
    <thetext>Comment on attachment 89624
Patch

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

Just a few nits.

When you get the chance, I&apos;d like to ask you and Steve about the ownership model here. It seems slightly sad that we need two controllers, one for the frame and one for the page, but maybe that is unavoidable because of the async nature and possible desire to keep a stream running across frames.

&gt; Source/WebCore/page/MediaStreamClient.h:34
&gt; +    // Notify the client about shutting down.

Nit: this comment seems extraneous.

&gt; Source/WebCore/page/MediaStreamController.cpp:38
&gt; +    Request()

Is this ctor just required for HashMap?

&gt; Source/WebCore/page/MediaStreamController.cpp:72
&gt; +    for (RequestMap::iterator it = m_requests.begin(); it != m_requests.end(); ++it)

So this can be a const_iterator now, right?

&gt; Source/WebCore/page/MediaStreamController.cpp:81
&gt; +{

Can we make any useful ASSERTs here? e.g. ASSERT(localId &gt; 0) or ASSERT(frameController).

&gt; Source/WebCore/page/MediaStreamController.h:30
&gt; +#include &quot;NavigatorUserMediaError.h&quot;

This include seems unnecessary here and also in a couple of other places. Maybe add it once it is needed?

&gt; Source/WebCore/page/MediaStreamController.h:57
&gt; +    int m_nextGlobalRequestId;

Nit, but this should probably be unsigned.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:45
&gt; +        : m_scriptExecutionContext(scriptExecutionContext) { }

I don&apos;t quite understand how this call will be used yet, but should we ASSERT(scriptExecutionContext)?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:102
&gt; +    if (m_isInDetachedState)

Since we are skipping abortAll, should we ASSERT(m_requests.isEmpty()) here?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:130
&gt; +    // FIXME: in the future we should keep running the media stream services while transfering frames.

s/in/In/
s/frames/pages/

&gt; Source/WebCore/page/MediaStreamFrameController.h:43
&gt; +class SecurityOrigin;

Some extra forward declaring here, maybe just trim to what is needed for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397063</commentid>
    <comment_count>16</comment_count>
      <attachid>92069</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-03 06:53:28 -0700</bug_when>
    <thetext>Created attachment 92069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397064</commentid>
    <comment_count>17</comment_count>
      <attachid>89624</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-03 06:55:09 -0700</bug_when>
    <thetext>Comment on attachment 89624
Patch

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

&gt;&gt; Source/WebCore/page/MediaStreamClient.h:34
&gt;&gt; +    // Notify the client about shutting down.
&gt; 
&gt; Nit: this comment seems extraneous.

Replaced with &apos;Notify the embedder client about the page controller being destroyed&apos;. Is this better?

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:38
&gt;&gt; +    Request()
&gt; 
&gt; Is this ctor just required for HashMap?

Yes, that&apos;s right. Do you think it can be removed?

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:72
&gt;&gt; +    for (RequestMap::iterator it = m_requests.begin(); it != m_requests.end(); ++it)
&gt; 
&gt; So this can be a const_iterator now, right?

For some reason it seems that m_requests.end() is returning an iterator instead of a const_iterator, producing a series of compile errors. The only way I managed to find to fix this is changing the comparison to end with it != static_cast&lt;const RequestMap&amp;&gt;(m_requests).end(), which is very ugly. Since there&apos;s no clear benefit to keep trying to make it a const_iterator I&apos;m leaving it as it is.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:81
&gt;&gt; +{
&gt; 
&gt; Can we make any useful ASSERTs here? e.g. ASSERT(localId &gt; 0) or ASSERT(frameController).

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:30
&gt;&gt; +#include &quot;NavigatorUserMediaError.h&quot;
&gt; 
&gt; This include seems unnecessary here and also in a couple of other places. Maybe add it once it is needed?

Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamController.h:57
&gt;&gt; +    int m_nextGlobalRequestId;
&gt; 
&gt; Nit, but this should probably be unsigned.

This follows the example of Speech Input and Geolocation, where all the ids are ints. Changing this would require in practice to change all id types from int to size_t. It can be done, but I&apos;m not sure if we should make this different to all others because of a nit. Maybe we should leave this to a later refactoring of the page clients?

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:45
&gt;&gt; +        : m_scriptExecutionContext(scriptExecutionContext) { }
&gt; 
&gt; I don&apos;t quite understand how this call will be used yet, but should we ASSERT(scriptExecutionContext)?

It will be used to schedule a call to the callback. This follows the example of the StringCallback class.
About asserting, no, we shouldn&apos;t as there are situations (in the detached frame state for example) where the scriptExecutionContext will be NULL. In this case, it just won&apos;t dispatch the corresponding error callback if any.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:102
&gt;&gt; +    if (m_isInDetachedState)
&gt; 
&gt; Since we are skipping abortAll, should we ASSERT(m_requests.isEmpty()) here?

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:130
&gt;&gt; +    // FIXME: in the future we should keep running the media stream services while transfering frames.
&gt; 
&gt; s/in/In/
&gt; s/frames/pages/

The comment is right about transferring frames. I&apos;ve added &apos;between pages&apos; to the end to make it clearer.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.h:43
&gt;&gt; +class SecurityOrigin;
&gt; 
&gt; Some extra forward declaring here, maybe just trim to what is needed for now.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397777</commentid>
    <comment_count>18</comment_count>
      <attachid>92210</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-04 03:32:33 -0700</bug_when>
    <thetext>Created attachment 92210
Patch

Just rebasing to avoid any problems in the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397896</commentid>
    <comment_count>19</comment_count>
      <attachid>92210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 06:57:43 -0700</bug_when>
    <thetext>Comment on attachment 92210
Patch

Clearing flags on attachment: 92210

Committed r85745: &lt;http://trac.webkit.org/changeset/85745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397897</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 06:57:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86621</attachid>
            <date>2011-03-23 08:47:52 -0700</date>
            <delta_ts>2011-03-23 13:16:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110323154750.patch</filename>
            <type>text/plain</type>
            <size>26575</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTJmNTU5ZmI1NGJmZDMxYmZmYjY4ODE3Y2Y4OGE5ZjUz
M2EyM2Q4Ny4uMjcwMzVkYzRkYmI0NTE3ZjZhNThjODk1YzdhYzA2ZjY3MGVkZTc1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE5NDMsNiArMTk0Myw3IEBAIElGIChFTkFCTEVfTUVESUFfU1RS
RUFNKQogICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmNwcAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1
c3RvbS5jcHAKKyAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCiAgICAgKQog
CiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOTczNzRm
NmEwMTNkMjFkNzBmZTUyMWZmYjA1NDhlNDg3NjYyNWM4Li5iYzliNGJjOGM2MTdjMTM3YmUwNjNi
NDJhMDU0MzY1NzJkYTMwNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNDIgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBNZWRpYSBTdHJlYW0gQVBJ
OiBhZGQgdGhlIHNrZWxldG9uIG9mIE1lZGlhU3RyZWFtQ29udHJvbGxlciBhbmQgTWVkaWFTdHJl
YW1DbGllbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjkyMgorCisgICAgICAgIEFkZCB0aGUgYmFzaWMgb3V0bGluZXMgb2YgdGhlIHBhZ2UgY29u
dHJvbGxlciBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgYW5kIGl0cyBjbGllbnQgaW50ZXJmYWNl
LgorCisgICAgICAgIFRlc3RzIGZvciB0aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3Zp
ZGVkIGJ5IHRoZSBidWcgNTY1ODcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvTWVkaWFTdHJlYW1DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNsaWVudDo6fk1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1Db250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Z2VuZXJhdGVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0aW9uRmFpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6U3RyZWFtUmVxdWVz
dDo6U3RyZWFtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6OlN0cmVhbVJlcXVlc3Q6On5TdHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYSk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhU3RyZWFtQ29udHJv
bGxlcik6CisKKzIwMTEtMDMtMjMgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAg
ICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFkZCB0aGUgZ2V0VXNlck1lZGlhIG1ldGhvZCBhbmQg
dGhlIEphdmFzY3JpcHQgYmluZGluZ3MuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjU4NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGQzMmE1YjRk
ZWQxYTZiNzY3MTkwNmJlMGJhZmE4MzJkNDdmMTdlOTUuLjRkOGIzYmM1OWY4MDNkMzNlNDUzMDM4
MTgxNWU2MWFiYTBhYjY5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjY5LDYgKzIyNjks
OSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFTdHJlYW1DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Nb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTM4ZWFjYmVmZGM3ZGMz
MzY2ZTgwOWNhYWY5MWQ3ZDQzNWIxNjgxNy4uMDk1NDBlMjVmZjQ4NjBlZjU0ZjIwMzMwMjY1YmVh
ZjA5MTI2NGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzM3Niw2ICszMzc2LDkgQEAKICAgICAg
ICAgICAgICdwYWdlL0hpc3RvcnkuaCcsCiAgICAgICAgICAgICAncGFnZS9Mb2NhdGlvbi5jcHAn
LAogICAgICAgICAgICAgJ3BhZ2UvTG9jYXRpb24uaCcsCisgICAgICAgICAgICAncGFnZS9NZWRp
YVN0cmVhbUNsaWVudC5oJywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxl
ci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ3BhZ2UvTWVtb3J5SW5mby5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNTc0ODAxZTQzNmU0ODYz
NzExYWQyZjRlMTUwMDRkN2I2MjJjZjZiMy4uYWZiMmY1YTJiM2Y0OTE4Y2NlNWFjNjU2MWZlZjQz
YTQzNjg2NmZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMwOTcsMTAgKzMwOTcsMTUgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9OPTEpIHsKIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgIEhFQURFUlMgKz0gXAogICAgICAgICBwYWdlL0Nh
bGxiYWNrVGFzay5oIFwKKyAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIFwKKyAgICAg
ICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBcCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IuaCBcCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjay5oIFwKICAgICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2suaAogCisgICAgU09VUkNFUyArPSBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcAorCiAgICAgdjggewogICAgICAgICBIRUFERVJTICs9IFwKICAgICAgICAgICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2tDdXN0b20u
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4
IGNlY2E4MGZiYTY5MGI5NmIyYWQ5OTY5ZGQ2MWVhZjU2MzIwZGNmZGIuLmUyYTcwOWM0OTczNDQw
OWJjZDJlZmI5ZDNjNWJiOTQ2MTFmNzMxOWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDg1OCw2ICsyNDg1OCwxOCBAQAogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFt
Q2xpZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNvbnRyb2xsZXIu
aCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFn
ZVxNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggODM4YTI0YTEzMTNiNWVhYzAzZTE0ZDYyMjZkMmQyYTZiZjQ2NDFmMC4uMjc2MjNiYTdlNGMz
ODgxNjdlMmRhYmYzMGUzYWRkZDhiYzRlM2ZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA4MCw2ICs0MDgwLDkgQEAKIAkJ
QjAxNDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QTExQTRCMjE1MDAx
OTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCAqLzsgfTsKIAkJQjAxNDlFN0YxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcCAqLzsgfTsKIAkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIElt
YWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5o
ICovOyB9OworCQlCMURDNEE1OTEzMzdBRjREMDBFRkY4RDggLyogTWVkaWFTdHJlYW1DbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxREM0QTU1
MTMzN0FGNEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNsaWVudC5oICovOyB9OworCQlCMURDNEE1
QTEzMzdBRjREMDBFRkY4RDggLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxREM0QTU2MTMzN0FGNEQwMEVG
RjhEOCAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlCMURDNEE1QjEzMzdB
RjREMDBFRkY4RDggLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMURDNEE1NzEzMzdBRjREMDBFRkY4RDggLyog
TWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi87IH07CiAJCUIxREM0QkFGMTMzOEUwRjMwMEVGRjhE
OCAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2tDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFEQzRCQTgxMzM4RTBGMzAw
RUZGOEQ4IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFja0N1c3RvbS5jcHAgKi87
IH07CiAJCUIxREM0QkIwMTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIxREM0QkE5MTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2tDdXN0b20uaCAqLzsgfTsKIAkJQjFEQzRCQjExMzM4RTBGMzAwRUZGOEQ4
IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxREM0QkFBMTMzOEUwRjMw
MEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1c3RvbS5jcHAg
Ki87IH07CkBAIC0xMDMyOSw2ICsxMDMzMiw5IEBACiAJCUIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBc3luY0ltYWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMDE0
OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFn
ZVJlc2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VS
ZXNpemVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxREM0QTU1MTMz
N0FGNEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCMURDNEE1NjEzMzdBRjREMDBFRkY4RDggLyogTWVkaWFTdHJlYW1Db250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxREM0QTU3MTMzN0FG
NEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIxREM0QkE4MTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yQ2FsbGJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFEQzRCQTkxMzM4RTBGMzAwRUZGOEQ4IC8qIEpT
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2tDdXN0b20u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFEQzRCQUExMzM4RTBGMzAwRUZGOEQ4
IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTky
LDYgKzE0MTk4LDkgQEAKIAkJCQlCQ0UxQzQyMjBEOTgyOUYyMDAzQjAyRjIgLyogTG9jYXRpb24u
aWRsICovLAogCQkJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMgKi8sCiAJCQkJOTMx
QkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovLAorCQkJ
CUIxREM0QTU1MTMzN0FGNEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNsaWVudC5oICovLAorCQkJ
CUIxREM0QTU2MTMzN0FGNEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICov
LAorCQkJCUIxREM0QTU3MTMzN0FGNEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIu
aCAqLywKIAkJCQk5RkZFM0U3ODExQjU5QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5jcHAgKi8s
CiAJCQkJOUZGRTNFNzkxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uaCAqLywKIAkJCQk5
RkZFM0U3QzExQjU5QzZFMDAzNzg3NEUgLyogTWVtb3J5SW5mby5pZGwgKi8sCkBAIC0yMjczMCw2
ICsyMjczOSw4IEBACiAJCQkJQjFFNDZDMEMxMzMzQjU3RjAwODIyRDdGIC8qIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTQ2QzBGMTMzM0I1
N0YwMDgyMkQ3RiAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIxRTQ2QzUzMTMzM0MxREMwMDgyMkQ3RiAvKiBKU05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMURDNEE1OTEzMzdBRjREMDBFRkY4RDgg
LyogTWVkaWFTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxREM0QTVCMTMzN0FG
NEQwMEVGRjhEOCAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIxREM0QkIwMTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxREM0QkIyMTMzOEUwRjMwMEVGRjhE
OCAvKiBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1c3RvbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjFEQzRCQjUxMzM4RTE0MDAwRUZGOEQ4IC8qIENhbGxiYWNrVGFzay5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNTQwNCw2ICsyNTQxNSw3IEBACiAJCQkJN0UzN0VGMkUxMzM5MjA4
ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEYxNDQyMjgxMzM5RkQ2MjAwRTBENkY4IC8qIERPTU5vZGVIaWdobGlnaHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMUU0NkM1MjEzMzNDMURDMDA4MjJEN0YgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMURDNEE1QTEzMzdBRjREMDBFRkY4
RDggLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxREM0
QkFGMTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2tD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjFEQzRCQjExMzM4RTBGMzAwRUZGOEQ4IC8q
IEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1D
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Y2I2ZDBkMmVkZmRlNTI4ZWVlYzRkYTUwMTc5ZjE2MDIwY2U0MzkzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lZGlhU3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DbGllbnRf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjsK
KworY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQgeworcHVibGljOgorICAgIC8vIE5vdGlmeSB0aGUg
Y2xpZW50IGFib3V0IHNodXR0aW5nIGRvd24uCisgICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFt
RGVzdHJveWVkKCkgPSAwOworCisgICAgLy8gR2VuZXJhdGUgYSBuZXcgbG9jYWwgc3RyZWFtLgor
ICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZVN0cmVhbShpbnQgcmVxdWVzdElkLCBib29sIHZpZGVv
LCBib29sIGF1ZGlvLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOworCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1DbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBNZWRpYVN0cmVhbUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIzYThmMDRkY2Q2YWI5YWUwN2I2YjM0NTNi
YTQwOGE2N2Q5OTE5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk5h
dmlnYXRvclVzZXJNZWRpYUVycm9yLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTWVkaWFTdHJlYW1Db250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIoTWVkaWFTdHJl
YW1DbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fbmV4dFN0
cmVhbVJlcXVlc3RJZCgxKQoreworfQorCitNZWRpYVN0cmVhbUNvbnRyb2xsZXI6On5NZWRpYVN0
cmVhbUNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQt
Pm1lZGlhU3RyZWFtRGVzdHJveWVkKCk7Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1Db250cm9sbGVy
OjpnZW5lcmF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIE5hdmlnYXRvclVzZXJNZWRp
YVN1Y2Nlc3NDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sqIGVy
cm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGJvb2wgdmlkZW8gPSBmYWxzZTsKKyAgICBib29sIGF1ZGlvID0gZmFs
c2U7CisgICAgVmVjdG9yPFN0cmluZz4gc3BsaXRPcHRpb25zOworICAgIG9wdGlvbnMuc3BsaXQo
IiwiLCBzcGxpdE9wdGlvbnMpOworICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gc3BsaXRPcHRpb25zLmJlZ2luKCk7IGl0ICE9IHNwbGl0T3B0aW9ucy5lbmQoKSAm
JiAoIXZpZGVvIHx8ICFhdWRpbyk7ICsraXQpCisgICAgICAgIGlmICgqaXQgPT0gInZpZGVvIikK
KyAgICAgICAgICAgIHZpZGVvID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoKml0ID09ICJhdWRp
byIpCisgICAgICAgICAgICBhdWRpbyA9IHRydWU7CisKKyAgICBpZiAoIWF1ZGlvICYmICF2aWRl
bykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IHN1Y2Nlc3NDYWxsYmFjay0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAg
IEFTU0VSVChjb250ZXh0KTsKKworICAgIG1fc3RyZWFtUmVxdWVzdHMuc2V0KG1fbmV4dFN0cmVh
bVJlcXVlc3RJZCwgYWRvcHRSZWYobmV3IFN0cmVhbVJlcXVlc3Qoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSkpOworICAgIG1fY2xpZW50LT5nZW5lcmF0ZVN0cmVhbShtX25leHRTdHJl
YW1SZXF1ZXN0SWQsIHZpZGVvLCBhdWRpbywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7Cisg
ICAgKyttX25leHRTdHJlYW1SZXF1ZXN0SWQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwgaW50
IHN0cmVhbUlkLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIEFTU0VSVChtX3N0cmVhbVJl
cXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJZCkpOworCisgICAgUmVmUHRyPFN0cmVhbVJlcXVlc3Q+
IHN0cmVhbVJlcXVlc3QgPSBtX3N0cmVhbVJlcXVlc3RzLmdldChyZXF1ZXN0SWQpOworICAgIEFT
U0VSVChzdHJlYW1SZXF1ZXN0LmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBjcmVhdGUgdGhlIEdl
bmVyYXRlZFN0cmVhbSBvYmplY3QgYW5kIHNoZWR1bGUgdGhlIGNhbGxiYWNrIHdoZW4gdGhlIGNs
YXNzIGlzIGF2YWlsYWJsZS4KKworICAgIG1fc3RyZWFtUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3RJ
ZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0aW9uRmFp
bGVkKGludCByZXF1ZXN0SWQsIHVuc2lnbmVkIHNob3J0IGNvZGUpCit7CisgICAgQVNTRVJUKG1f
c3RyZWFtUmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSk7CisgICAgUmVmUHRyPFN0cmVhbVJl
cXVlc3Q+IHN0cmVhbVJlcXVlc3QgPSBtX3N0cmVhbVJlcXVlc3RzLmdldChyZXF1ZXN0SWQpOwor
ICAgIEFTU0VSVChzdHJlYW1SZXF1ZXN0LmdldCgpKTsKKworICAgIGlmIChSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IHN0cmVhbVJlcXVlc3Qt
Pm1fZXJyb3JDYWxsYmFjaykgeworICAgICAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3I+IGVycm9yID0gYWRvcHRSZWYobmV3IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yKGNvZGUpKTsK
KyAgICAgICAgZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhlcnJvci5nZXQoKSk7Cisg
ICAgfQorCisgICAgbV9zdHJlYW1SZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElkKTsKK30KKworTWVk
aWFTdHJlYW1Db250cm9sbGVyOjpTdHJlYW1SZXF1ZXN0OjpTdHJlYW1SZXF1ZXN0KE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2sqIGVycm9yQ2FsbGJhY2spCisgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhz
dWNjZXNzQ2FsbGJhY2spCisgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKK3sK
KyAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+c2V0UGVuZGluZ0FjdGl2aXR5KG1fc3VjY2Vzc0NhbGxi
YWNrKTsKKyAgICBpZiAobV9lcnJvckNhbGxiYWNrKQorICAgICAgICBtX2Vycm9yQ2FsbGJhY2st
PnNldFBlbmRpbmdBY3Rpdml0eShtX2Vycm9yQ2FsbGJhY2spOworfQorCitNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6OlN0cmVhbVJlcXVlc3Q6On5TdHJlYW1SZXF1ZXN0KCkKK3sKKyAgICBtX3N1Y2Nl
c3NDYWxsYmFjay0+dW5zZXRQZW5kaW5nQWN0aXZpdHkobV9zdWNjZXNzQ2FsbGJhY2spOworICAg
IGlmIChtX2Vycm9yQ2FsbGJhY2spCisgICAgICAgIG1fZXJyb3JDYWxsYmFjay0+dW5zZXRQZW5k
aW5nQWN0aXZpdHkobV9lcnJvckNhbGxiYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmN2EyYzI3MmM0NTY0NWQyZGNl
NDBmNmRjNDRiYWJlNDE0ZmY4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlh
U3RyZWFtQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQ29udHJvbGxlcl9oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVk
aWFTdHJlYW1DbGllbnQ7CitjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwor
Y2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOworCitjbGFzcyBNZWRpYVN0
cmVhbUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtQ29u
dHJvbGxlcik7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFt
Q2xpZW50Kik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Db250cm9sbGVyKCk7CisKKyAgICAv
LyBDcmVhdGUgYSBuZXcgZ2VuZXJhdGVkIHN0cmVhbSBhc3luY2hyb25vdXNseSB3aXRoIHRoZSBw
cm92aWRlZCBvcHRpb25zLgorICAgIGJvb2wgZ2VuZXJhdGVTdHJlYW0oY29uc3QgU3RyaW5nJiBv
cHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrKiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2sqKTsKKworICAgIC8vIC0tLSBDYWxscyBjb21taW5nIGJhY2sgZnJvbSB0aGUg
Y2xpZW50LiAtLS0KKworICAgIC8vIFJlcG9ydCB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBsb2Nh
bCBzdHJlYW0uCisgICAgLy8gVGhlIHN0cmVhbSBpZCBzaG91bGQgYmUgYSB1bmlxdWUgaW50ZWdl
ciByZXByZXNlbnRpbmcgdGhlIHN0cmVhbSBvYmplY3QgaW4gYSAxOjEgcmVsYXRpb24gd2l0aCB0
aGUgbGFiZWwuCisgICAgLy8gVGhlIGlkIHNob3VsZCBiZSBwcm92aWRlZCBieSB0aGUgVUEgYW5k
IHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5IGluc3RlYWQgb2YgdGhlIGxhYmVsIHRvIHNpbXBsaWZ5
IG9wZXJhdGlvbnMuCisgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwgaW50
IHN0cmVhbUlkLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKKworICAgIC8vIFJlcG9ydCBhIGZhaWx1
cmUgaW4gdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc3RyZWFtLgorICAgIHZvaWQgc3RyZWFtR2Vu
ZXJhdGlvbkZhaWxlZChpbnQgcmVxdWVzdElkLCB1bnNpZ25lZCBzaG9ydCBjb2RlKTsKKworcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgU3RyZWFtUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cmVh
bVJlcXVlc3Q+IHsKKyAgICAgICAgU3RyZWFtUmVxdWVzdChOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2sqLAorICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2sqKTsKKyAgICAgICAgflN0cmVhbVJlcXVlc3QoKTsKKworICAgICAgICBOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2sqIG1fc3VjY2Vzc0NhbGxiYWNrOworICAgICAg
ICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrKiBtX2Vycm9yQ2FsbGJhY2s7CisgICAg
fTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxTdHJlYW1SZXF1ZXN0PiA+IFN0
cmVhbVJlcXVlc3RNYXA7CisKKyAgICBNZWRpYVN0cmVhbUNsaWVudCogbV9jbGllbnQ7CisgICAg
U3RyZWFtUmVxdWVzdE1hcCBtX3N0cmVhbVJlcXVlc3RzOworICAgIGludCBtX25leHRTdHJlYW1S
ZXF1ZXN0SWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1Db250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBkMWRhN2E4MTlkYmZhYjBlZjcwMjk4Yjk3Y2Zi
NzhmNDE4YzhjZGZiLi44ZGIwNWJhODYzOTVhMDQ4MjljNmE5ZDEzMGFlYjM1OTkwYjczYTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
R2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTI0
Nyw3ICsyNDgsMTEgQEAgdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShjb25zdCBT
dHJpbmcmIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NS
ZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTog
aW1wbGVtZW50IGEgY2FsbCB0byB0aGUgTWVkaWFTdHJlYW1Db250cm9sbGVyIHdoZW4gaXQncyBh
dmFpbGFibGUuCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPm1lZGlhU3RyZWFtQ29udHJvbGxlcigp
LT5nZW5lcmF0ZVN0cmVhbShvcHRpb25zLCBzdWNjZXNzQ2FsbGJhY2suZ2V0KCksIGVycm9yQ2Fs
bGJhY2suZ2V0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGFmYWU5NmY3
MTRjZTdkMWY0NDg0YzMyMDk5MGM0NmZkYzk5MDE1YzcuLmY0NjYzMzY3MWY4MzVhMmMyMzU4ODY0
MDNkNjg5OGQxMTY4YWNiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTAsNiArNTAsOCBAQAog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCkBAIC0xMzYsNiArMTM4LDkgQEAgUGFnZTo6UGFnZShjb25zdCBQ
YWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCgpID8gbmV3IERldmlj
ZU1vdGlvbkNvbnRyb2xsZXIocGFnZUNsaWVudHMuZGV2aWNlTW90aW9uQ2xpZW50KSA6IDApCiAg
ICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSA/IG5ldyBEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIodGhpcywgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQpIDogMCkKICNl
bmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX21lZGlhU3RyZWFtQ29udHJv
bGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYVN0cmVhbUVuYWJsZWQoKSA/IG5ldyBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIocGFnZUNsaWVudHMubWVkaWFTdHJlYW1DbGllbnQpIDogMCkK
KyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xp
ZW50KHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCkBAIC05NDQsNiArOTQ5
LDcgQEAgUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKICAgICAsIGRldmljZU1vdGlv
bkNsaWVudCgwKQogICAgICwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoMCkKICAgICAsIHNwZWVj
aElucHV0Q2xpZW50KDApCisgICAgLCBtZWRpYVN0cmVhbUNsaWVudCgwKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IGQzZWRkNmYxNGMwMzhkOWU4NGUwOTZiZTBhYzhiNTY2YTIwNWQ4NTguLmYy
ZWNhZTc3NjJlOTk2ZWI1MzJkMjA4NzJlNTE3OWM0NGU2ZjA4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC02Miw2ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnNwZWN0b3JD
bGllbnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYUNh
blN0YXJ0TGlzdGVuZXI7CisgICAgY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQ7CisgICAgY2xhc3Mg
TWVkaWFTdHJlYW1Db250cm9sbGVyOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdy
b3VwOwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CkBAIC0xMTQsNiArMTE2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9y
aWVudGF0aW9uQ2xpZW50OwogICAgICAgICAgICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gYmFj
a0ZvcndhcmRDbGllbnQ7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNoSW5w
dXRDbGllbnQ7CisgICAgICAgICAgICBNZWRpYVN0cmVhbUNsaWVudCogbWVkaWFTdHJlYW1DbGll
bnQ7CiAgICAgICAgIH07CiAKICAgICAgICAgUGFnZShjb25zdCBQYWdlQ2xpZW50cyYpOwpAQCAt
MTc3LDYgKzE4MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRGV2aWNlTW90aW9u
Q29udHJvbGxlciogZGV2aWNlTW90aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2
aWNlTW90aW9uQ29udHJvbGxlci5nZXQoKTsgfQogICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIqIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgICAgICBNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIG1lZGlhU3RyZWFt
Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1Db250cm9sbGVyLmdldCgp
OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1
dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzMzLDEzICszMzksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4gbV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyOwogICAgICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyPiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgICAgIE93blB0cjxNZWRpYVN0cmVhbUNvbnRyb2xsZXI+IG1f
bWVkaWFTdHJlYW1Db250cm9sbGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
ICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAg
IE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsKICNlbmRpZgogICAgICAgICBPd25Q
dHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgICAgIE93blB0cjxQcm9ncmVzc1RyYWNrZXI+
IG1fcHJvZ3Jlc3M7Ci0gICAgICAgIAorCiAgICAgICAgIE93blB0cjxCYWNrRm9yd2FyZENvbnRy
b2xsZXI+IG1fYmFja0ZvcndhcmRDb250cm9sbGVyOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1f
bWFpbkZyYW1lOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86677</attachid>
            <date>2011-03-23 13:16:15 -0700</date>
            <delta_ts>2011-04-07 12:18:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110323201613.patch</filename>
            <type>text/plain</type>
            <size>26151</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTJmNTU5ZmI1NGJmZDMxYmZmYjY4ODE3Y2Y4OGE5ZjUz
M2EyM2Q4Ny4uMjcwMzVkYzRkYmI0NTE3ZjZhNThjODk1YzdhYzA2ZjY3MGVkZTc1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE5NDMsNiArMTk0Myw3IEBAIElGIChFTkFCTEVfTUVESUFfU1RS
RUFNKQogICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmNwcAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1
c3RvbS5jcHAKKyAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCiAgICAgKQog
CiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTJiNmMy
ZDA3OGIzZjllOWJmZWRjZWU2YjYwNGZkYTkzZjI1NDg1Li43MWQzZDg5YjA1MzI3YWE0NmU4YzUw
NjY5ZDA3OGQzMzdmZDE0ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNDEgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBNZWRpYSBTdHJlYW0gQVBJ
OiBhZGQgdGhlIHNrZWxldG9uIG9mIE1lZGlhU3RyZWFtQ29udHJvbGxlciBhbmQgTWVkaWFTdHJl
YW1DbGllbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjkyMgorCisgICAgICAgIEFkZCB0aGUgYmFzaWMgb3V0bGluZXMgb2YgdGhlIHBhZ2UgY29u
dHJvbGxlciBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgYW5kIGl0cyBjbGllbnQgaW50ZXJmYWNl
LgorCisgICAgICAgIFRlc3RzIGZvciB0aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3Zp
ZGVkIGJ5IHRoZSBidWcgNTY1ODcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvTWVkaWFTdHJlYW1DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNsaWVudDo6fk1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1Db250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Z2VuZXJhdGVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1HZW5lcmF0aW9uRmFpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6U3RyZWFtUmVxdWVz
dDo6U3RyZWFtUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEpOgorICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorCisyMDExLTAz
LTIzICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBNZWRpYSBTdHJl
YW0gQVBJOiBhZGQgdGhlIGdldFVzZXJNZWRpYSBtZXRob2QgYW5kIHRoZSBKYXZhc2NyaXB0IGJp
bmRpbmdzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTY1ODYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBkMzJhNWI0ZGVkMWE2Yjc2NzE5MDZiZTBi
YWZhODMyZDQ3ZjE3ZTk1Li40ZDhiM2JjNTlmODAzZDMzZTQ1MzAzODE4MTVlNjFhYmEwYWI2OTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjI2OSw2ICsyMjY5LDkgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlJbmZvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZv
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUzOGVhY2JlZmRjN2RjMzM2NmU4MDljYWFmOTFkN2Q0
MzViMTY4MTcuLjA5NTQwZTI1ZmY0ODYwZWY1NGYyMDMzMDI2NWJlYWYwOTEyNjRjNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTMzNzYsNiArMzM3Niw5IEBACiAgICAgICAgICAgICAncGFnZS9IaXN0
b3J5LmgnLAogICAgICAgICAgICAgJ3BhZ2UvTG9jYXRpb24uY3BwJywKICAgICAgICAgICAgICdw
YWdlL0xvY2F0aW9uLmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCcs
CisgICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAg
ICAgICdwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL01l
bW9yeUluZm8uY3BwJywKICAgICAgICAgICAgICdwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMuY3BwJywKICAgICAgICAgICAgICdwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDU3NDgwMWU0MzZlNDg2MzcxMWFkMmY0ZTE1MDA0ZDdi
NjIyY2Y2YjMuLmFmYjJmNWEyYjNmNDkxOGNjZTVhYzY1NjFmZWY0M2E0MzY4NjZmY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC0zMDk3LDEwICszMDk3LDE1IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9HRU9MT0NBVElPTj0xKSB7CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFN
PTEpIHsKICAgICBIRUFERVJTICs9IFwKICAgICAgICAgcGFnZS9DYWxsYmFja1Rhc2suaCBcCisg
ICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgg
XAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAgICAg
ICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgKIAorICAgIFNPVVJD
RVMgKz0gXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKKwogICAgIHY4
IHsKICAgICAgICAgSEVBREVSUyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjZWNhODBmYmE2OTBiOTZi
MmFkOTk2OWRkNjFlYWY1NjMyMGRjZmRiLi5lMmE3MDljNDk3MzQ0MDliY2QyZWZiOWQzYzViYjk0
NjExZjczMTliIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMjQ4NTgsNiArMjQ4NTgsMTggQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNsaWVudC5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3Ry
ZWFtQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgzOGEyNGExMzEzYjVl
YWMwM2UxNGQ2MjI2ZDJkMmE2YmY0NjQxZjAuLjI3NjIzYmE3ZTRjMzg4MTY3ZTJkYWJmMzBlM2Fk
ZGQ4YmM0ZTNmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQwODAsNiArNDA4MCw5IEBACiAJCUIwMTQ5RTdFMTFBNEIyMTUw
MDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1h
Z2VSZXNpemVyLmggKi87IH07CiAJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAg
Ki87IH07CiAJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdD
MTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKKwkJQjFEQzRB
NTkxMzM3QUY0RDAwRUZGOEQ4IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMURDNEE1NTEzMzdBRjREMDBFRkY4RDgg
LyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLzsgfTsKKwkJQjFEQzRBNUExMzM3QUY0RDAwRUZGOEQ4
IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMURDNEE1NjEzMzdBRjREMDBFRkY4RDggLyogTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQjFEQzRBNUIxMzM3QUY0RDAwRUZGOEQ4IC8qIE1l
ZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjFEQzRBNTcxMzM3QUY0RDAwRUZGOEQ4IC8qIE1lZGlhU3RyZWFtQ29udHJv
bGxlci5oICovOyB9OwogCQlCMURDNEJBRjEzMzhFMEYzMDBFRkY4RDggLyogSlNOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxREM0QkE4MTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2tDdXN0b20uY3BwICovOyB9OwogCQlCMURDNEJCMDEz
MzhFMEYzMDBFRkY4RDggLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMURDNEJB
OTEzMzhFMEYzMDBFRkY4RDggLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3Vz
dG9tLmggKi87IH07CiAJCUIxREM0QkIxMTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMURDNEJBQTEzMzhFMEYzMDBFRkY4RDggLyogSlNOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2tDdXN0b20uY3BwICovOyB9OwpAQCAtMTAzMjks
NiArMTAzMzIsOSBAQAogCQlCMDE0OUU3QTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJl
c2l6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNJbWFnZVJlc2l6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjAxNDlFN0IxMUE0QjIxNTAwMTk2
QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMDE0OUU3QzExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMURDNEE1NTEzMzdBRjREMDBFRkY4RDggLyog
TWVkaWFTdHJlYW1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFTdHJlYW1DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFEQzRBNTYx
MzM3QUY0RDAwRUZGOEQ4IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMURDNEE1NzEzMzdBRjREMDBFRkY4RDggLyogTWVk
aWFTdHJlYW1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMURD
NEJBODEzMzhFMEYzMDBFRkY4RDggLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3JDYWxsYmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIxREM0QkE5MTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIxREM0QkFBMTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE5Miw2ICsxNDE5OCw5IEBACiAJ
CQkJQkNFMUM0MjIwRDk4MjlGMjAwM0IwMkYyIC8qIExvY2F0aW9uLmlkbCAqLywKIAkJCQk5M0Mw
OUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovLAogCQkJCTkzMUJDQzYwMTEyNERGQ0IwMEJF
NzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLywKKwkJCQlCMURDNEE1NTEzMzdBRjRE
MDBFRkY4RDggLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLywKKwkJCQlCMURDNEE1NjEzMzdBRjRE
MDBFRkY4RDggLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKKwkJCQlCMURDNEE1NzEz
MzdBRjREMDBFRkY4RDggLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi8sCiAJCQkJOUZGRTNF
NzgxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uY3BwICovLAogCQkJCTlGRkUzRTc5MTFC
NTlDNUQwMDM3ODc0RSAvKiBNZW1vcnlJbmZvLmggKi8sCiAJCQkJOUZGRTNFN0MxMUI1OUM2RTAw
Mzc4NzRFIC8qIE1lbW9yeUluZm8uaWRsICovLApAQCAtMjI3MzAsNiArMjI3MzksOCBAQAogCQkJ
CUIxRTQ2QzBDMTMzM0I1N0YwMDgyMkQ3RiAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU0NkMwRjEzMzNCNTdGMDA4MjJEN0YgLyogTmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU0
NkM1MzEzMzNDMURDMDA4MjJEN0YgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQjFEQzRBNTkxMzM3QUY0RDAwRUZGOEQ4IC8qIE1lZGlhU3RyZWFtQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMURDNEE1QjEzMzdBRjREMDBFRkY4RDggLyogTWVk
aWFTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMURDNEJCMDEzMzhFMEYz
MDBFRkY4RDggLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMURDNEJCMjEzMzhFMEYzMDBFRkY4RDggLyogSlNOYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxREM0
QkI1MTMzOEUxNDAwMEVGRjhEOCAvKiBDYWxsYmFja1Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAt
MjU0MDQsNiArMjU0MTUsNyBAQAogCQkJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMTQ0MjI4MTMzOUZENjIw
MEUwRDZGOCAvKiBET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjFF
NDZDNTIxMzMzQzFEQzAwODIyRDdGIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQjFEQzRBNUExMzM3QUY0RDAwRUZGOEQ4IC8qIE1lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMURDNEJBRjEzMzhFMEYzMDBFRkY4
RDggLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIxREM0QkIxMTMzOEUwRjMwMEVGRjhEOCAvKiBKU05hdmlnYXRvclVzZXJN
ZWRpYVN1Y2Nlc3NDYWxsYmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdhMWJlMTUzYmEw
YWZkOTEyMzEyNmU3ZTVjZTU0ODEwODQ0NWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0
cmVhbUNsaWVudF9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQ2xpZW50X2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VjdXJpdHlPcmln
aW47CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBOb3RpZnkg
dGhlIGNsaWVudCBhYm91dCBzaHV0dGluZyBkb3duLgorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVN0
cmVhbURlc3Ryb3llZCgpID0gMDsKKworICAgIC8vIEdlbmVyYXRlIGEgbmV3IGxvY2FsIHN0cmVh
bS4KKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVTdHJlYW0oaW50IHJlcXVlc3RJZCwgYm9vbCBh
dWRpbywgYm9vbCB2aWRlbywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKKworcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2xpZW50KCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLy8gTWVkaWFTdHJlYW1DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZGRhMjNjYmVkZjM5NWMwNzRkN2U3
NWEzN2IzZmNkYjczOGQyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DbGllbnQuaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK01lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlh
U3RyZWFtQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX25l
eHRTdHJlYW1SZXF1ZXN0SWQoMSkKK3sKK30KKworTWVkaWFTdHJlYW1Db250cm9sbGVyOjp+TWVk
aWFTdHJlYW1Db250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5tZWRpYVN0cmVhbURlc3Ryb3llZCgpOworfQorCitib29sIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6Z2VuZXJhdGVTdHJlYW0oY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIXN1Y2Nl
c3NDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB2aWRlbyA9IGZh
bHNlOworICAgIGJvb2wgYXVkaW8gPSBmYWxzZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdE9w
dGlvbnM7CisgICAgb3B0aW9ucy5zcGxpdCgiLCIsIHNwbGl0T3B0aW9ucyk7CisgICAgZm9yIChW
ZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzcGxpdE9wdGlvbnMuYmVnaW4oKTsg
aXQgIT0gc3BsaXRPcHRpb25zLmVuZCgpICYmICghYXVkaW8gfHwgIXZpZGVvKTsgKytpdCkKKyAg
ICAgICAgaWYgKCppdCA9PSAiYXVkaW8iKQorICAgICAgICAgICAgYXVkaW8gPSB0cnVlOworICAg
ICAgICBlbHNlIGlmICgqaXQgPT0gInZpZGVvIikKKyAgICAgICAgICAgIHZpZGVvID0gdHJ1ZTsK
KworICAgIGlmICghYXVkaW8gJiYgIXZpZGVvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3VjY2Vzc0NhbGxiYWNrLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQpOworCisgICAgbV9zdHJl
YW1SZXF1ZXN0cy5zZXQobV9uZXh0U3RyZWFtUmVxdWVzdElkLCBhZG9wdFJlZihuZXcgU3RyZWFt
UmVxdWVzdChzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKSk7CisgICAgbV9jbGllbnQt
PmdlbmVyYXRlU3RyZWFtKG1fbmV4dFN0cmVhbVJlcXVlc3RJZCwgYXVkaW8sIHZpZGVvLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICArK21fbmV4dFN0cmVhbVJlcXVlc3RJZDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUdl
bmVyYXRlZChpbnQgcmVxdWVzdElkLCBpbnQgc3RyZWFtSWQsIGNvbnN0IFN0cmluZyYgbGFiZWwp
Cit7CisgICAgQVNTRVJUKG1fc3RyZWFtUmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSk7CisK
KyAgICBSZWZQdHI8U3RyZWFtUmVxdWVzdD4gc3RyZWFtUmVxdWVzdCA9IG1fc3RyZWFtUmVxdWVz
dHMuZ2V0KHJlcXVlc3RJZCk7CisgICAgQVNTRVJUKHN0cmVhbVJlcXVlc3QpOworCisgICAgLy8g
RklYTUU6IGNyZWF0ZSB0aGUgR2VuZXJhdGVkU3RyZWFtIG9iamVjdCBhbmQgc2NoZWR1bGUgdGhl
IGNhbGxiYWNrIHdoZW4gdGhlIGNsYXNzIGlzIGF2YWlsYWJsZS4KKworICAgIG1fc3RyZWFtUmVx
dWVzdHMucmVtb3ZlKHJlcXVlc3RJZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVy
OjpzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIHVuc2lnbmVkIHNob3J0IGNv
ZGUpCit7CisgICAgQVNTRVJUKG1fc3RyZWFtUmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSk7
CisgICAgUmVmUHRyPFN0cmVhbVJlcXVlc3Q+IHN0cmVhbVJlcXVlc3QgPSBtX3N0cmVhbVJlcXVl
c3RzLmdldChyZXF1ZXN0SWQpOworICAgIEFTU0VSVChzdHJlYW1SZXF1ZXN0KTsKKworICAgIGlm
IChSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9
IHN0cmVhbVJlcXVlc3QtPm1fZXJyb3JDYWxsYmFjaykgeworICAgICAgICBSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I+IGVycm9yID0gYWRvcHRSZWYobmV3IE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yKGNvZGUpKTsKKyAgICAgICAgZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvcik7CisgICAgfQorCisgICAgbV9zdHJlYW1SZXF1ZXN0cy5yZW1vdmUocmVxdWVzdElkKTsK
K30KKworTWVkaWFTdHJlYW1Db250cm9sbGVyOjpTdHJlYW1SZXF1ZXN0OjpTdHJlYW1SZXF1ZXN0
KFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQorICAgIDogbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9l
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzZkYjBlMmQxMTRiOWY4N2Vl
NDkwMWEyZmIwZjBiMGFhNWM2NTdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRp
YVN0cmVhbUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2xpZW50OworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsK
K2NsYXNzIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKKworY2xhc3MgTWVkaWFT
dHJlYW1Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVN0cmVhbUNv
bnRyb2xsZXIpOworcHVibGljOgorICAgIE1lZGlhU3RyZWFtQ29udHJvbGxlcihNZWRpYVN0cmVh
bUNsaWVudCopOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ29udHJvbGxlcigpOworCisgICAg
Ly8gQ3JlYXRlIGEgbmV3IGdlbmVyYXRlZCBzdHJlYW0gYXN5bmNocm9ub3VzbHkgd2l0aCB0aGUg
cHJvdmlkZWQgb3B0aW9ucy4KKyAgICBib29sIGdlbmVyYXRlU3RyZWFtKGNvbnN0IFN0cmluZyYg
b3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQ
dHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4pOworCisgICAgLy8gLS0tIENhbGxz
IGNvbW1pbmcgYmFjayBmcm9tIHRoZSBjbGllbnQuIC0tLQorCisgICAgLy8gUmVwb3J0IHRoZSBn
ZW5lcmF0aW9uIG9mIGEgbmV3IGxvY2FsIHN0cmVhbS4KKyAgICAvLyBUaGUgc3RyZWFtIGlkIHNo
b3VsZCBiZSBhIHVuaXF1ZSBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgc3RyZWFtIG9iamVjdCBp
biBhIDE6MSByZWxhdGlvbiB3aXRoIHRoZSBsYWJlbC4KKyAgICAvLyBUaGUgaWQgc2hvdWxkIGJl
IHByb3ZpZGVkIGJ5IHRoZSBVQSBhbmQgd2lsbCBiZSB1c2VkIGludGVybmFsbHkgaW5zdGVhZCBv
ZiB0aGUgbGFiZWwgdG8gc2ltcGxpZnkgb3BlcmF0aW9ucy4KKyAgICB2b2lkIHN0cmVhbUdlbmVy
YXRlZChpbnQgcmVxdWVzdElkLCBpbnQgc3RyZWFtSWQsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwor
CisgICAgLy8gUmVwb3J0IGEgZmFpbHVyZSBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBzdHJl
YW0uCisgICAgdm9pZCBzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIHVuc2ln
bmVkIHNob3J0IGNvZGUpOworCitwcml2YXRlOgorICAgIHN0cnVjdCBTdHJlYW1SZXF1ZXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8U3RyZWFtUmVxdWVzdD4geworICAgICAgICBTdHJlYW1SZXF1ZXN0
KFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwKKyAgICAgICAg
ICAgICAgICAgICAgICBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+
KTsKKworICAgICAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgUmVmUHRyPFN0cmVhbVJlcXVlc3Q+ID4gU3RyZWFtUmVxdWVzdE1hcDsKKworICAgIE1l
ZGlhU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJlYW1SZXF1ZXN0TWFwIG1fc3RyZWFt
UmVxdWVzdHM7CisgICAgaW50IG1fbmV4dFN0cmVhbVJlcXVlc3RJZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmlu
ZGV4IGQxZGE3YTgxOWRiZmFiMGVmNzAyOThiOTdjZmI3OGY0MThjOGNkZmIuLjhkYjA1YmE4NjM5
NWEwNDgyOWM2YTlkMTMwYWViMzU5OTBiNzNhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMjQ3LDcgKzI0OCwxMSBAQCB2b2lkIE5hdmln
YXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0cmluZyYgb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYSBjYWxsIHRvIHRoZSBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIgd2hlbiBpdCdzIGF2YWlsYWJsZS4KKyAgICBQYWdlKiBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcGFnZS0+bWVkaWFTdHJlYW1Db250cm9sbGVyKCktPmdlbmVyYXRlU3RyZWFtKG9wdGlvbnMs
IHN1Y2Nlc3NDYWxsYmFjay5nZXQoKSwgZXJyb3JDYWxsYmFjay5nZXQoKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYWZhZTk2ZjcxNGNlN2QxZjQ0ODRjMzIwOTkwYzQ2ZmRj
OTkwMTVjNy4uZjQ2NjMzNjcxZjgzNWEyYzIzNTg4NjQwM2Q2ODk4ZDExNjhhY2I4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC01MCw2ICs1MCw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTEz
Niw2ICsxMzgsOSBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykK
ICAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpk
ZXZpY2VNb3Rpb25FbmFibGVkKCkgPyBuZXcgRGV2aWNlTW90aW9uQ29udHJvbGxlcihwYWdlQ2xp
ZW50cy5kZXZpY2VNb3Rpb25DbGllbnQpIDogMCkKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU9yaWVudGF0aW9uRW5hYmxl
ZCgpID8gbmV3IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcih0aGlzLCBwYWdlQ2xpZW50cy5k
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCkgOiAwKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICAsIG1fbWVkaWFTdHJlYW1Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6Om1lZGlhU3RyZWFtRW5hYmxlZCgpID8gbmV3IE1lZGlhU3RyZWFtQ29udHJvbGxlcihwYWdl
Q2xpZW50cy5tZWRpYVN0cmVhbUNsaWVudCkgOiAwKQorI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQocGFnZUNsaWVudHMuc3BlZWNoSW5w
dXRDbGllbnQpCiAjZW5kaWYKQEAgLTk0NCw2ICs5NDksNyBAQCBQYWdlOjpQYWdlQ2xpZW50czo6
UGFnZUNsaWVudHMoKQogICAgICwgZGV2aWNlTW90aW9uQ2xpZW50KDApCiAgICAgLCBkZXZpY2VP
cmllbnRhdGlvbkNsaWVudCgwKQogICAgICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKKyAgICAsIG1l
ZGlhU3RyZWFtQ2xpZW50KDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZDNlZGQ2ZjE0YzAz
OGQ5ZTg0ZTA5NmJlMGFjOGI1NjZhMjA1ZDg1OC4uZjJlY2FlNzc2MmU5OTZlYjUzMmQyMDg3MmU1
MTc5YzQ0ZTZmMDg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYyLDYgKzYyLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOwogICAgIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKKyAgICBjbGFz
cyBNZWRpYVN0cmVhbUNsaWVudDsKKyAgICBjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI7CiAg
ICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CiAgICAgY2xhc3MgUGx1Z2luRGF0
YTsKQEAgLTExNCw2ICsxMTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiAgICAgICAg
ICAgICBSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZENsaWVudDsKICAgICAgICAg
ICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudDsKKyAgICAgICAgICAgIE1l
ZGlhU3RyZWFtQ2xpZW50KiBtZWRpYVN0cmVhbUNsaWVudDsKICAgICAgICAgfTsKIAogICAgICAg
ICBQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJik7CkBAIC0xNzcsNiArMTgwLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBkZXZpY2VNb3Rpb25D
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyLmdldCgp
OyB9CiAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogZGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIuZ2V0KCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE1l
ZGlhU3RyZWFtQ29udHJvbGxlciogbWVkaWFTdHJlYW1Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYVN0cmVhbUNvbnRyb2xsZXIuZ2V0KCk7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCiAgICAgICAgIFNwZWVjaElucHV0KiBzcGVlY2hJbnB1dCgpOwogI2VuZGlm
CkBAIC0zMzMsMTMgKzMzOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0
cjxEZXZpY2VNb3Rpb25Db250cm9sbGVyPiBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXI7CiAgICAg
ICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+IG1fZGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAg
T3duUHRyPE1lZGlhU3RyZWFtQ29udHJvbGxlcj4gbV9tZWRpYVN0cmVhbUNvbnRyb2xsZXI7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dENsaWVu
dCogbV9zcGVlY2hJbnB1dENsaWVudDsKICAgICAgICAgT3duUHRyPFNwZWVjaElucHV0PiBtX3Nw
ZWVjaElucHV0OwogI2VuZGlmCiAgICAgICAgIE93blB0cjxTZXR0aW5ncz4gbV9zZXR0aW5nczsK
ICAgICAgICAgT3duUHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVzczsKLSAgICAgICAgCisK
ICAgICAgICAgT3duUHRyPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4gbV9iYWNrRm9yd2FyZENvbnRy
b2xsZXI7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9tYWluRnJhbWU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88672</attachid>
            <date>2011-04-07 12:18:44 -0700</date>
            <delta_ts>2011-04-08 07:58:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110407201841.patch</filename>
            <type>text/plain</type>
            <size>38723</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDkyODgxNzc5M2FkNDAzNWExMzYzN2FmMjcxZjZiNmVjMGZhZGNjZDQu
LjQ4YjVhMmY1MTdhMGIwNjM3OGI3YzE5NDJhOWU2NWMzODE0NWVkNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNDM0LDYgKzQzNCw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAogCXBhZ2UvSGlzdG9yeS5jcHAgXAogCXBhZ2Uv
TG9jYXRpb24uY3BwIFwKKwlwYWdlL01lZGlhU3RyZWFtQ29udGV4dC5jcHAgXAorCXBhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCiAJcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzLmNwcCBcCiAJcGFnZS9OYXZpZ2F0b3IuY3BwIFwKIAlwYWdlL05hdmlnYXRvckJhc2UuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjVmMWQxZGQzMTVhZDk4ZGRkOGIzNzJhZTMzNDIw
OTQ0ZmE0NTVmYy4uNjAxYmY2ZWZjODEyZTQ3OGIzYjNlMjUzNzU0OTRmMjU4MTkwOTVhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5NTAsNiArMTk1MCw4IEBAIEVORElGICgpCiBJRiAoRU5B
QkxFX01FRElBX1NUUkVBTSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAg
ICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAgIHBhZ2UvTWVkaWFT
dHJlYW1Db250ZXh0LmNwcAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAK
ICAgICApCiAKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQ5NWRkYjQwZmM5ZDI1Y2I1MmIzMzU0YzNiMDBlMWYwZjVkZWFkMjkuLjdhZTRiMDI3ZmU3MzY0
OGRiZjVlYTQ4MGFmMmQ0MTMzNTBiZGNjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAor
MjAxMS0wNC0wNyAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVk
aWEgU3RyZWFtIEFQSTogYWRkIHRoZSBza2VsZXRvbiBvZiB0aGUgZnJhbWUgY29udGV4dCwgdGhl
IHBhZ2UgY29udHJvbGxlciBhbmQgdGhlIGVtYmVkZGVyIGNsaWVudC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTIyCisKKyAgICAgICAgQWRkIHRo
ZSBiYXNpYyBvdXRsaW5lcyBvZiB0aGUgcGFnZSBjb250cm9sbGVyLCB0aGUgcGVyLWZyYW1lIGNv
bnRleHQgYW5kIHRoZSBlbWJlZGRlcgorICAgICAgICBjbGllbnQgaW50ZXJmYWNlIGZvciB0aGUg
TWVkaWEgU3RyZWFtIEFQSS4gUHJvdmlkZSBtZXRob2RzIHRvIGhhbmRsZSB0aGUgc2l0dWF0aW9u
cworICAgICAgICB3aGVyZSBhIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2Ugb3IgdHJh
bnNmZXJyZWQgYmV0d2VlbiBwYWdlcy4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0
cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LgorCisgICAgICAgICog
QW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjptZWRpYVN0cmVhbVBhZ2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
Om1lZGlhU3RyZWFtVHJhbnNmZXJUb05ld1BhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om1lZGlhU3RyZWFtQ29udGV4dCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6cGFnZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6dHJhbnNmZXJDaGlsZEZyYW1lVG9O
ZXdEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2xpZW50Ojp+TWVkaWFTdHJlYW1DbGllbnQp
OgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRleHQ6OlJlcXVlc3Q6OlJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250ZXh0OjpSZXF1ZXN0Ojp+UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRleHQ6OlJlcXVlc3Q6OnNjcmlwdENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250ZXh0OjpSZXF1ZXN0TWFwOjphYm9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRleHQ6OlJlcXVlc3RNYXA6OmFi
b3J0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6TWVkaWFTdHJl
YW1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6fk1lZGlh
U3RyZWFtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRleHQ6OnNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRl
eHQ6OnBhZ2VDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4
dDo6ZW50ZXJEZXRhY2hlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dGV4dDo6cGFnZURldGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4
dDo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4
dDo6Y29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNv
bnRleHQ6OnRyYW5zZmVyVG9OZXdQYWdlKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ29u
dGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6SWRH
ZW5lcmF0b3I6OklkR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dGV4dDo6SWRHZW5lcmF0b3I6OmdldE5leHRJZCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpjb250ZXh0RGVzdHJveWVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Y29udGV4dERldGFj
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dHJhbnNmZXJD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0
ZXJSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdENvbnRl
eHQ6OlJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6UmVxdWVzdENvbnRleHQ6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6UmVxdWVzdENvbnRleHQ6OmNvbnRleHQpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorCiAyMDEx
LTA0LTA3ICBOYW5jeSBQaWVkcmEgIDxuYW5jeS5waWVkcmFAbm9raWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOWZlYTIy
MzZjNWM1MjcwNWQ4MTI1ZDMyZWRlZjIyMzJiNmNhODA4Yi4uOGMyZWU4YTA5OGMzYTI1MmUyZTA3
NjE0OTJmYmQ3NGRhMDUyZjYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIyOTcsNiArMjI5
NywxMSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNv
bnRleHQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udGV4dC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVtb3J5SW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5SW5mby5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxYmZhZGI0MmFlYWU4YjMxZGU2MmUwM2U5ZWRmMDE2YmIz
ZTgyNDk1Li44NjlmZGFjNThhZTdjMzk5ZjFiNGZlZjMzYTJmZmE2NTEyZjU1ZWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNDQyLDYgKzM0NDIsMTEgQEAKICAgICAgICAgICAgICdwYWdlL1NwZWVj
aElucHV0UmVzdWx0LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0
LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaCcsCisgICAg
ICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oJywKKyAgICAgICAgICAgICdwYWdlL01l
ZGlhU3RyZWFtQ29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1Db250
ZXh0LmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCcsCisg
ICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAn
cGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TdXNwZW5kYWJs
ZVRpbWVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCmluZGV4IDFmMGZhMGNjZjUxNWJhZDczNDBiMzlmY2Y0MjZjNjc1Y2QzNzFj
ZTAuLmIyNzA0MzY0YzAyY2IyYjY1ZGY1MTNiOGUxODY0ZTcxYTJiZjc3NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC0zMTIxLDEwICszMTIxLDE3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HRU9M
T0NBVElPTj0xKSB7CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkg
ewogICAgIEhFQURFUlMgKz0gXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggXAor
ICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udGV4dC5oIFwKKyAgICAgICAgcGFnZS9NZWRpYVN0
cmVhbUNvbnRyb2xsZXIuaCBcCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aCBcCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIFwKICAg
ICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaAogCisgICAgU09V
UkNFUyArPSBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmNwcCBcCisgICAgICAg
IHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAorCiAgICAgdjggewogICAgICAgICBTT1VS
Q0VTICs9IFwKICAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3Rv
bS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggYTM2NGNjNGRiMjYzNjM2ZjViNTdiN2NjYjA2YjgwMmE3MWFmNDk5Ny4uMGZhNjQ5ZDNmNzYx
NTQwODAyYzZjYWIzMGU4ZmYzNDc2ZWYzMjI3YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI1MDI2LDYgKzI1MDI2LDI2IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJl
YW1DbGllbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNvbnRleHQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtQ29udGV4dC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1l
ZGlhU3RyZWFtQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkxMzg3MmU5
MDYzZGEwNzQyYjFkNWUyYTg3ODQzMjZhZGEwMjIzZmIuLmQ4YzViNWEzNThkZjkyYWNjZGI4ZTc4
ZDliYTY2ZDI2NGExMWM3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwOTgsNiArNDA5OCwxMSBAQAogCQlCMDE0OUU4MDEx
QTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1MDAxOTZBN0IgLyog
SW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CiAJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAv
KiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9u
LmNwcCAqLzsgfTsKIAkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRDVF
Q0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CisJCUIxRTU0
NTk0MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1
IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggKi87IH07CisJCUIxRTU0NTk1MTM0NjI5QzEwMDkyQTU0
NSAvKiBNZWRpYVN0cmVhbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFt
Q29udGV4dC5jcHAgKi87IH07CisJCUIxRTU0NTk2MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0
cmVhbUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIxRTU0NThBMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRleHQuaCAqLzsg
fTsKKwkJQjFFNTQ1OTcxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4
QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsgfTsKKwkJ
QjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEMxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQlCMUU1NDU5OTEz
NDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThEMTM0NjI5QzEwMDkyQTU0
NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oICovOyB9OwogCQlCMUU1NDU5QjEzNDYyOUMx
MDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEYxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLzsgfTsKIAkJQjFFNTQ1
OUQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OTEx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oICov
OyB9OwpAQCAtMTAzODYsNiArMTAzOTEsMTEgQEAKIAkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdC
IC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjE4
Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFj
a0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrRnVu
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODgxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU3RyZWFtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUIxRTU0NTg5MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Db250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVN0cmVhbUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1
OEIxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMUU1NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyog
TWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhU3RyZWFtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MUU1NDU4RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEUxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIx
RTU0NThGMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mjg1LDYgKzE0
Mjk1LDExIEBACiAJCQkJQkNFMUM0MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmggKi8s
CiAJCQkJQkNFMUM0MjIwRDk4MjlGMjAwM0IwMkYyIC8qIExvY2F0aW9uLmlkbCAqLywKIAkJCQk5
MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi8sCisJ
CQkJQjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggKi8sCisJ
CQkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udGV4dC5jcHAgKi8s
CisJCQkJQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udGV4dC5oICov
LAorCQkJCUIxRTU0NThCMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwICovLAorCQkJCUIxRTU0NThDMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaCAqLywKIAkJCQk5RkZFM0U3ODExQjU5QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5j
cHAgKi8sCiAJCQkJOUZGRTNFNzkxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uaCAqLywK
IAkJCQk5RkZFM0U3QzExQjU5QzZFMDAzNzg3NEUgLyogTWVtb3J5SW5mby5pZGwgKi8sCkBAIC0y
Mjg3MCw2ICsyMjg4NSw5IEBACiAJCQkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRC
Q0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRDVF
Q0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCMUU1NDU5NDEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUIxRTU0NTk2MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNv
bnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxRTU0NTk4MTM0NjI5QzEwMDkyQTU0NSAvKiBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0NTk5MTM0NjI5
QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjFFNTQ1OUIxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0NTlEMTM0NjI5QzEwMDkyQTU0NSAvKiBO
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjU1
NjUsNiArMjU1ODMsOCBAQAogCQkJCUZEMDZERkE1MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBMzE2MkUxMzRC
QzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUIxRTU0NTk1MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0
cmVhbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1OTcxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMUU1
NDVERjEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMUU1NDVFMTEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxRTU0NUUzMTM0
NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBhOGVmNmM0N2E1
YjUxZDBlOTRiOWZkYzI0NmU5MmMyOGE3MTA4MmJkLi4wNDI1YjEyYTdkODllNjU0NTIxOTdiOWQ3
NmEzNzQyOWRjZGMyYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03MSw2ICs3
MSw3IEBACiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5o
IgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
b250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9y
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCkBAIC04MCw2ICs4MSw3IEBACiAj
aW5jbHVkZSAiUGVyZm9ybWFuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmVlbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC0zOTUsNiArMzk3LDkgQEAgRE9N
V2luZG93OjpET01XaW5kb3coRnJhbWUqIGZyYW1lKQogICAgIDogbV9zaG91bGRQcmludFdoZW5G
aW5pc2hlZExvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9wcmlu
dFRpbWVyKHRoaXMsICZET01XaW5kb3c6OnByaW50VGltZXJGaXJlZCkKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgICwgbV9tZWRpYVN0cmVhbUNvbnRleHQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6bWVkaWFTdHJlYW1FbmFibGVkKCkgPyBuZXcgTWVkaWFTdHJlYW1Db250ZXh0KGZyYW1l
KSA6IDApCisjZW5kaWYKIHsKIH0KIApAQCAtNTEwLDYgKzUxNSwxMSBAQCB2b2lkIERPTVdpbmRv
dzo6Y2xlYXIoKQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIG1faWRiRmFjdG9y
eSA9IDA7CiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1fbWVk
aWFTdHJlYW1Db250ZXh0KQorICAgICAgICBtX21lZGlhU3RyZWFtQ29udGV4dC0+ZGlzY29ubmVj
dEZyYW1lKCk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBA
IC0xODU4LDQgKzE4NjgsMTggQEAgRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIERPTVdpbmRvdzo6
bWVkaWFTdHJlYW1QYWdlRGV0YWNoZWQoKQoreworICAgIGlmIChtX21lZGlhU3RyZWFtQ29udGV4
dCkKKyAgICAgICAgbV9tZWRpYVN0cmVhbUNvbnRleHQtPnBhZ2VEZXRhY2hlZCgpOworfQorCit2
b2lkIERPTVdpbmRvdzo6bWVkaWFTdHJlYW1UcmFuc2ZlclRvTmV3UGFnZShQYWdlKiBuZXdQYWdl
KQoreworICAgIGlmIChtX21lZGlhU3RyZWFtQ29udGV4dCkKKyAgICAgICAgbV9tZWRpYVN0cmVh
bUNvbnRleHQtPnRyYW5zZmVyVG9OZXdQYWdlKG5ld1BhZ2UpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IDAxZTUzYmJlZWU0
M2JmZTcwYjA5MDRhZWRmODgzM2ZlYTgxNDc4ZjkuLmYwNWE4YTVhZWMzNmRkODU2NWZiYzQ2MTAz
ZjVlNjhmOTg0ODA4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNTUsNiArNTUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCRmFjdG9yeTsKICAgICBjbGFzcyBM
b2NhdGlvbjsKICAgICBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKKyAgICBjbGFzcyBNZWRpYVN0cmVh
bUNvbnRleHQ7CiAgICAgY2xhc3MgTmF2aWdhdG9yOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xh
c3MgTm90aWZpY2F0aW9uQ2VudGVyOwpAQCAtNDI1LDYgKzQyNiwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFBlcmZvcm1hbmNlKiBvcHRpb25hbFBlcmZvcm1hbmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9wZXJmb3JtYW5jZS5nZXQoKTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgICAgICB2b2lkIG1lZGlhU3RyZWFtUGFnZURldGFjaGVkKCk7CisgICAg
ICAgIHZvaWQgbWVkaWFTdHJlYW1UcmFuc2ZlclRvTmV3UGFnZShQYWdlKik7CisgICAgICAgIE1l
ZGlhU3RyZWFtQ29udGV4dCogbWVkaWFTdHJlYW1Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9t
ZWRpYVN0cmVhbUNvbnRleHQuZ2V0KCk7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgRE9NV2luZG93KEZyYW1lKik7CiAKQEAgLTQ5MSw2ICs0OTgsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01VUkw+
IG1fZG9tVVJMOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBP
d25QdHI8TWVkaWFTdHJlYW1Db250ZXh0PiBtX21lZGlhU3RyZWFtQ29udGV4dDsKKyNlbmRpZgog
ICAgIH07CiAKICAgICBpbmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6c3RhdHVzKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggY2E5N2I5YjQ0NjI3MzE5NWNkNjI2OWY2ZWFjY2NmMjJhNDA3
YmYzOS4uY2JhZmIzMjUwNmEwOGVkNmNkMTJjOGU5ZjFiNmQzYmE4MGRlZTllYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTY4OCw2ICs2ODgsOSBAQCB2b2lkIEZyYW1lOjpwYWdlRGVzdHJveWVk
KCkKIAogICAgIGlmIChtX2RvbVdpbmRvdykgewogICAgICAgICBtX2RvbVdpbmRvdy0+cmVzZXRH
ZW9sb2NhdGlvbigpOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIG1fZG9tV2lu
ZG93LT5tZWRpYVN0cmVhbVBhZ2VEZXRhY2hlZCgpOworI2VuZGlmCiAgICAgICAgIG1fZG9tV2lu
ZG93LT5wYWdlRGVzdHJveWVkKCk7CiAgICAgfQogCkBAIC03MzgsOCArNzQxLDEyIEBAIHZvaWQg
RnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQogICAgICAgICAvLyB3aGVu
IHRoZSBHZW9sb2NhdGlvbidzIGlmcmFtZSBpcyByZXBhcmVudGVkLgogICAgICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NTc3CiAgICAgICAgIC8v
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NzcKLSAgICAg
ICAgaWYgKG1fZG9tV2luZG93KQorICAgICAgICBpZiAobV9kb21XaW5kb3cpIHsKICAgICAgICAg
ICAgIG1fZG9tV2luZG93LT5yZXNldEdlb2xvY2F0aW9uKCk7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICAgICAgICAgIG1fZG9tV2luZG93LT5tZWRpYVN0cmVhbVRyYW5zZmVyVG9OZXdQ
YWdlKG5ld1BhZ2UpOworI2VuZGlmCisgICAgICAgIH0KIAogICAgICAgICBtX3BhZ2UgPSBuZXdQ
YWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzRlZjBmYjhkMmI0ODczOThhMjZmOTkwZTljMzdkMTlmNjQ4ZWFmNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DbGllbnRfaAorI2RlZmluZSBN
ZWRpYVN0cmVhbUNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAv
LyBOb3RpZnkgdGhlIGNsaWVudCBhYm91dCBzaHV0dGluZyBkb3duLgorICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVN0cmVhbURlc3Ryb3llZCgpID0gMDsKKworICAgIC8vIEZJWE1FOiBhZGQgaGVyZSB0
aGUgcmVxdWVzdHMgdG8gdGhlIGVtYmVkZGVyLgorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+
TWVkaWFTdHJlYW1DbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUNs
aWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udGV4dC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTg1Yjk4NDRkMmU3NzZlNjgzM2M2YWFhZTZhNjYyYjA5MWZhMjhmZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmNwcApAQCAt
MCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Db250ZXh0LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1Db250ZXh0
OjpSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVxdWVzdD4geworcHVibGljOgorICAgIFJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKKyAgICAgICAgOiBt
X3NjcmlwdENvbnRleHQoc2NyaXB0Q29udGV4dCkgeyB9CisKKyAgICB2aXJ0dWFsIH5SZXF1ZXN0
KCkgeyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JpcHRDb250ZXh0OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CisKK3ByaXZhdGU6CisgICAgLy8gVGhpcyBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQg
aXMgdGhlIGRvY3VtZW50IHJlZmVyZW5jZWQgYnkgdGhlIGZyYW1lLiBJdCB3aWxsCisgICAgLy8g
cmVtYWluIGFsaXZlIGFuZCB2YWxpZCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIGZyYW1lIGlzLCBh
Ym9ydGluZyBhbGwgcmVxdWVzdHMKKyAgICAvLyB3aGVuIHJlY2VpdmluZyBkaXNjb25uZWN0RnJh
bWUuIEl0cyBwdXJwb3NlIGlzIHRvIGFsbG93IGFzeW5jIHJlcXVlc3QKKyAgICAvLyBhYm9ydGlv
bnMgdG8gYmUgcHJvcGVybHkgc2NoZWR1bGVkIHRvIGNvbXBseSB3aXRoIHRoZSBzcGVjaWZpY2F0
aW9uLgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0Q29udGV4dDsKK307CisK
K3ZvaWQgTWVkaWFTdHJlYW1Db250ZXh0OjpSZXF1ZXN0TWFwOjphYm9ydChpbnQgcmVxdWVzdElk
KQoreworICAgIEFTU0VSVChjb250YWlucyhyZXF1ZXN0SWQpKTsKKyAgICBnZXQocmVxdWVzdElk
KS0+YWJvcnQoKTsKKyAgICByZW1vdmUocmVxdWVzdElkKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bUNvbnRleHQ6OlJlcXVlc3RNYXA6OmFib3J0QWxsKCkKK3sKKyAgICBmb3IgKGl0ZXJhdG9yIGl0
ID0gYmVnaW4oKTsgaXQgIT0gZW5kKCk7IGl0ID0gYmVnaW4oKSkgeworICAgICAgICBpdC0+c2Vj
b25kLT5hYm9ydCgpOworICAgICAgICByZW1vdmUoaXQpOworICAgIH0KK30KKworTWVkaWFTdHJl
YW1Db250ZXh0OjpNZWRpYVN0cmVhbUNvbnRleHQoRnJhbWUqIGZyYW1lKQorICAgIDogbV9mcmFt
ZShmcmFtZSkKKyAgICAsIG1fZGV0YWNoZWRTdGF0ZShmYWxzZSkKK3sKK30KKworTWVkaWFTdHJl
YW1Db250ZXh0Ojp+TWVkaWFTdHJlYW1Db250ZXh0KCkKK3sKK30KKworU2VjdXJpdHlPcmlnaW4q
IE1lZGlhU3RyZWFtQ29udGV4dDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVy
biBtX2ZyYW1lID8gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKS0+c2VjdXJpdHlPcmlnaW4o
KSA6IDA7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtQ29udGV4dDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBt
X2ZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgOiAw
OworfQorCitNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIE1lZGlhU3RyZWFtQ29udGV4dDo6cGFnZUNv
bnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kZXRhY2hlZFN0YXRlICYmIG1fZnJh
bWUgJiYgbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5tZWRpYVN0cmVhbUNvbnRy
b2xsZXIoKSA6IDA7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250ZXh0OjplbnRlckRldGFjaGVk
U3RhdGUoKQoreworICAgIG1fcmVxdWVzdHMuYWJvcnRBbGwoKTsKKyAgICBtX2RldGFjaGVkU3Rh
dGUgPSB0cnVlOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udGV4dDo6cGFnZURldGFjaGVkKCkK
K3sKKyAgICBpZiAobV9kZXRhY2hlZFN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
cGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+Y29udGV4dERldGFj
aGVkKHRoaXMpOworCisgICAgZW50ZXJEZXRhY2hlZFN0YXRlKCk7Cit9CisKKy8vIENhbGxlZCBv
biBmcmFtZSBkZXN0cnVjdGlvbiBkZXNwaXRlIHRoZSBuYW1lLgordm9pZCBNZWRpYVN0cmVhbUNv
bnRleHQ6OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgbV9yZXF1ZXN0cy5hYm9ydEFsbCgpOwor
CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPmNv
bnRleHREZXN0cm95ZWQodGhpcyk7CisKKyAgICBtX2ZyYW1lID0gMDsKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNvbnRleHQ6OmNvbnRyb2xsZXJEZXN0cm95ZWQoTWVkaWFTdHJlYW1Db250cm9sbGVy
KiBjb250cm9sbGVyKQoreworICAgIEFTU0VSVChjb250cm9sbGVyKTsKKworICAgIGlmIChwYWdl
Q29udHJvbGxlcigpID09IGNvbnRyb2xsZXIpCisgICAgICAgIGVudGVyRGV0YWNoZWRTdGF0ZSgp
OworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udGV4dDo6dHJhbnNmZXJUb05ld1BhZ2UoUGFnZSog
bmV3UGFnZSkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRy
b2xsZXIoKS0+dHJhbnNmZXJDb250ZXh0KHRoaXMsIG5ld1BhZ2UgPyBuZXdQYWdlLT5tZWRpYVN0
cmVhbUNvbnRyb2xsZXIoKSA6IDApOworCisgICAgaWYgKCFuZXdQYWdlKSB7CisgICAgICAgIGVu
dGVyRGV0YWNoZWRTdGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklY
TUU6IGluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGtlZXAgcnVubmluZyB0aGUgbWVkaWEgc3RyZWFt
IHNlcnZpY2VzIHdoaWxlIHRyYW5zZmVyaW5nIGZyYW1lcy4KKyAgICAvLyBIb3dldmVyLCB1bnRp
bCBhIHByb3BlciB3YXkgdG8gZG8gdGhpcyBpcyBkZWNpZGVkLCB3ZSdyZSBzaHV0dGluZyBkb3du
IHNlcnZpY2VzLgorICAgIGVudGVyRGV0YWNoZWRTdGF0ZSgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRkNTY0ZDc2YTkzMzliNTYz
OWIxZWZmNjVjMDcwZDNkZjQ4OGVlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lZGlhU3RyZWFtQ29udGV4dF9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQ29udGV4
dF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgTWVkaWFTdHJl
YW1Db250cm9sbGVyOworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKK2Ns
YXNzIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKK2NsYXNzIFBhZ2U7CitjbGFz
cyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNz
IE1lZGlhU3RyZWFtQ29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJl
YW1Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNvbnRleHQoRnJhbWUqKTsKKyAg
ICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNvbnRleHQoKTsKKworICAgIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIHZvaWQgcGFnZURldGFjaGVkKCk7Cisg
ICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKyAgICB2b2lkIGNvbnRyb2xsZXJEZXN0cm95ZWQo
TWVkaWFTdHJlYW1Db250cm9sbGVyKik7CisgICAgdm9pZCB0cmFuc2ZlclRvTmV3UGFnZShQYWdl
Kik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgUmVxdWVzdDsKKworICAgIGNsYXNzIElkR2VuZXJh
dG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIElkR2VuZXJhdG9yKCkgOiBtX2lkKDApIHsgfQor
ICAgICAgICBpbnQgZ2V0TmV4dElkKCkgeyByZXR1cm4gKyttX2lkOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBpbnQgbV9pZDsKKyAgICB9OworCisgICAgY2xhc3MgUmVxdWVzdE1hcCA6IHB1
YmxpYyBJZEdlbmVyYXRvciwgcHVibGljIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7
CisgICAgcHVibGljOgorICAgICAgICB2b2lkIGFib3J0KGludCByZXF1ZXN0SWQpOworICAgICAg
ICB2b2lkIGFib3J0QWxsKCk7CisgICAgfTsKKworICAgIE1lZGlhU3RyZWFtQ29udHJvbGxlciog
cGFnZUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIGVudGVyRGV0YWNoZWRTdGF0ZSgpOwor
CisgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAgIGJv
b2wgbV9kZXRhY2hlZFN0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ29udGV4
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjE4NmFiNWRkMjEzMGJhYTdhMDE4MGFlMzAxNTI4ZjNjNjY3YzhkOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNw
cApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcihNZWRp
YVN0cmVhbUNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9u
ZXh0UmVxdWVzdElkKDEpCit7Cit9CisKK01lZGlhU3RyZWFtQ29udHJvbGxlcjo6fk1lZGlhU3Ry
ZWFtQ29udHJvbGxlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
bWVkaWFTdHJlYW1EZXN0cm95ZWQoKTsKKworICAgIHVucmVnaXN0ZXJDb250cm9sbGVyKCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVyQ29udGV4dChNZWRpYVN0
cmVhbUNvbnRleHQqIGNvbnRleHQpCit7CisgICAgZm9yIChSZXF1ZXN0Q29udGV4dE1hcDo6aXRl
cmF0b3IgaXQgPSBtX3JlcXVlc3RDb250ZXh0LmJlZ2luKCk7IGl0ICE9IG1fcmVxdWVzdENvbnRl
eHQuZW5kKCk7IGl0ID0gbV9yZXF1ZXN0Q29udGV4dC5iZWdpbigpKSB7CisgICAgICAgIGlmIChp
dC0+c2Vjb25kLmNvbnRleHQoKSA9PSBjb250ZXh0KQorICAgICAgICAgICAgbV9yZXF1ZXN0Q29u
dGV4dC5yZW1vdmUoaXQpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OnVucmVnaXN0ZXJDb250cm9sbGVyKCkKK3sKKyAgICBIYXNoU2V0PE1lZGlhU3RyZWFtQ29udGV4
dCo+IG5vdGlmaWVkQ29udGV4dHM7CisKKyAgICBmb3IgKFJlcXVlc3RDb250ZXh0TWFwOjppdGVy
YXRvciBpdCA9IG1fcmVxdWVzdENvbnRleHQuYmVnaW4oKTsgaXQgIT0gbV9yZXF1ZXN0Q29udGV4
dC5lbmQoKTsgaXQgPSBtX3JlcXVlc3RDb250ZXh0LmJlZ2luKCkpIHsKKyAgICAgICAgaWYgKCFu
b3RpZmllZENvbnRleHRzLmNvbnRhaW5zKGl0LT5zZWNvbmQuY29udGV4dCgpKSkgeworICAgICAg
ICAgICAgbm90aWZpZWRDb250ZXh0cy5hZGQoaXQtPnNlY29uZC5jb250ZXh0KCkpOworICAgICAg
ICAgICAgaXQtPnNlY29uZC5jb250ZXh0KCktPmNvbnRyb2xsZXJEZXN0cm95ZWQodGhpcyk7Cisg
ICAgICAgIH0KKworICAgICAgICBtX3JlcXVlc3RDb250ZXh0LnJlbW92ZShpdCk7CisgICAgfQor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Y29udGV4dERlc3Ryb3llZChNZWRpYVN0
cmVhbUNvbnRleHQqIGNvbnRleHQpCit7CisgICAgdW5yZWdpc3RlckNvbnRleHQoY29udGV4dCk7
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpjb250ZXh0RGV0YWNoZWQoTWVkaWFT
dHJlYW1Db250ZXh0KiBjb250ZXh0KQoreworICAgIC8vIEZJWE1FOiBpbiB0aGUgZnV0dXJlIHdl
IHNob3VsZCByb3V0ZSByZXBsaWVzIHRvIG9uZ29pbmcgYXN5bmNocm9ub3VzIHJlcXVlc3RzIHRv
IHRoZWlyCisgICAgLy8gY29udGV4dHMgZXZlbiBpZiB0aGV5IGhhdmUgYmVlbiBkZXRhY2hlZCBm
cm9tIHRoaXMgcGFnZS4gRm9yIG5vdyBsZXQncyBqdXN0IGRlc3Ryb3kgdGhlbS4KKyAgICBjb250
ZXh0RGVzdHJveWVkKGNvbnRleHQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
dHJhbnNmZXJDb250ZXh0KE1lZGlhU3RyZWFtQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1D
b250cm9sbGVyKiBuZXdDb250cm9sbGVyKQoreworICAgIGlmICghbmV3Q29udHJvbGxlcikgewor
ICAgICAgICBjb250ZXh0RGV0YWNoZWQoY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBGSVhNRTogaW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgcm91dGUgcmVwbGllcyB0
byBvbmdvaW5nIGFzeW5jaHJvbm91cyByZXF1ZXN0cyB0byB0aGVpcgorICAgIC8vIGNvbnRleHRz
IGV2ZW4gaWYgdGhleSBoYXZlIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGlzIHBhZ2UuIEZvciBub3cg
bGV0J3MganVzdCBkZXN0cm95IHRoZW0uCisgICAgY29udGV4dERlc3Ryb3llZChjb250ZXh0KTsK
K30KKworaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1ZXN0KGludCBjb250
ZXh0UmVxdWVzdElkLCBNZWRpYVN0cmVhbUNvbnRleHQqIGNvbnRleHQpCit7CisgICAgbV9yZXF1
ZXN0Q29udGV4dC5hZGQobV9uZXh0UmVxdWVzdElkLCBSZXF1ZXN0Q29udGV4dChjb250ZXh0UmVx
dWVzdElkLCBjb250ZXh0KSk7CisgICAgcmV0dXJuIG1fbmV4dFJlcXVlc3RJZCsrOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDY2OGYwMTY1OWNkZmFlZWU5OThlODJjZjNjY2JjZTA2M2Y2MWRiOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorI2Rl
ZmluZSBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYVN0cmVhbUNsaWVudDsKK2NsYXNzIE1lZGlhU3RyZWFtQ29udGV4dDsKKworY2xhc3Mg
TWVkaWFTdHJlYW1Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVN0
cmVhbUNvbnRyb2xsZXIpOworcHVibGljOgorICAgIE1lZGlhU3RyZWFtQ29udHJvbGxlcihNZWRp
YVN0cmVhbUNsaWVudCopOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ29udHJvbGxlcigpOwor
CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKE1lZGlhU3RyZWFtQ29udGV4dCopOworICAgIHZv
aWQgY29udGV4dERldGFjaGVkKE1lZGlhU3RyZWFtQ29udGV4dCopOworICAgIHZvaWQgdHJhbnNm
ZXJDb250ZXh0KE1lZGlhU3RyZWFtQ29udGV4dCosIE1lZGlhU3RyZWFtQ29udHJvbGxlciopOwor
Citwcml2YXRlOgorICAgIGNsYXNzIFJlcXVlc3RDb250ZXh0IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFJlcXVlc3RDb250ZXh0KCkKKyAgICAgICAgICAgIDogbV9pZCgwKQorICAgICAgICAgICAg
LCBtX2NvbnRleHQoMCkgeyB9CisKKyAgICAgICAgUmVxdWVzdENvbnRleHQoaW50IHJlcXVlc3RJ
ZCwgTWVkaWFTdHJlYW1Db250ZXh0KiBjb250ZXh0KQorICAgICAgICAgICAgOiBtX2lkKHJlcXVl
c3RJZCkKKyAgICAgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpIHsgfQorCisgICAgICAgIGlu
dCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICAgICAgTWVkaWFTdHJlYW1Db250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBpbnQgbV9pZDsKKyAgICAgICAgTWVkaWFTdHJlYW1Db250ZXh0KiBtX2NvbnRleHQ7
CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlcXVlc3RDb250ZXh0PiBSZXF1
ZXN0Q29udGV4dE1hcDsKKworICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGNvbnRleHRSZXF1
ZXN0SWQsIE1lZGlhU3RyZWFtQ29udGV4dCopOworCisgICAgdm9pZCB1bnJlZ2lzdGVyQ29udGV4
dChNZWRpYVN0cmVhbUNvbnRleHQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb250cm9sbGVyKCk7
CisKKyAgICBNZWRpYVN0cmVhbUNsaWVudCogbV9jbGllbnQ7CisgICAgUmVxdWVzdENvbnRleHRN
YXAgbV9yZXF1ZXN0Q29udGV4dDsKKyAgICBpbnQgbV9uZXh0UmVxdWVzdElkOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2VuZGlmIC8vIE1lZGlhU3RyZWFtQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAx
ODYzYjAyNTcxNGE1NzlmNDFmODM4YjBkMjM3YTMwYmMwZDM1YzRkLi45ZDk2OTlmOGMyZGQwZjc1
MjVlNzgyYzZhOWY0Y2NiNGVhYTJlMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTUwLDYgKzUw
LDggQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DbGllbnQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5o
IgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTM2LDYgKzEzOCw5IEBAIFBhZ2U6OlBhZ2Uo
Y29uc3QgUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9kZXZpY2VNb3Rpb25Db250
cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU1vdGlvbkVuYWJsZWQoKSA/IG5l
dyBEZXZpY2VNb3Rpb25Db250cm9sbGVyKHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNsaWVudCkg
OiAwKQogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50KSA6
IDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV9tZWRpYVN0cmVh
bUNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTdHJlYW1FbmFibGVkKCkg
PyBuZXcgTWVkaWFTdHJlYW1Db250cm9sbGVyKHBhZ2VDbGllbnRzLm1lZGlhU3RyZWFtQ2xpZW50
KSA6IDApCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJ
bnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpAQCAtOTUw
LDYgKzk1NSw3IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCiAgICAgLCBkZXZp
Y2VNb3Rpb25DbGllbnQoMCkKICAgICAsIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KDApCiAgICAg
LCBzcGVlY2hJbnB1dENsaWVudCgwKQorICAgICwgbWVkaWFTdHJlYW1DbGllbnQoMCkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCA4MzA3MTIzYjIxMTMwNjAzZTk3Yjg2MGVjMmJlZDVhMDk4NWY3
Nzg2Li5lNzBlNzcwNTZkZGY2YmE5NGRlYjNhOTdiNGMyMjNlZTZiNjgwYjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtNjIsNiArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwogICAgIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgY2xhc3Mg
TWVkaWFDYW5TdGFydExpc3RlbmVyOworICAgIGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50OworICAg
IGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNz
IFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOwpAQCAtMTE0LDYgKzExNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBk
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKICAgICAgICAgICAgIFJlZlB0cjxCYWNrRm9yd2FyZExp
c3Q+IGJhY2tGb3J3YXJkQ2xpZW50OwogICAgICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIHNw
ZWVjaElucHV0Q2xpZW50OworICAgICAgICAgICAgTWVkaWFTdHJlYW1DbGllbnQqIG1lZGlhU3Ry
ZWFtQ2xpZW50OwogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoY29uc3QgUGFnZUNsaWVudHMm
KTsKQEAgLTE3OSw2ICsxODIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERldmlj
ZU1vdGlvbkNvbnRyb2xsZXIqIGRldmljZU1vdGlvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICAgICAgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBtZWRp
YVN0cmVhbUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RyZWFtQ29udHJvbGxl
ci5nZXQoKTsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3Bl
ZWNoSW5wdXQqIHNwZWVjaElucHV0KCk7CiAjZW5kaWYKQEAgLTMzNSwxMyArMzQxLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPERldmljZU1vdGlvbkNvbnRyb2xsZXI+
IG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcjsKICAgICAgICAgT3duUHRyPERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcj4gbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBPd25QdHI8TWVkaWFTdHJlYW1Db250cm9s
bGVyPiBtX21lZGlhU3RyZWFtQ29udHJvbGxlcjsKKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCiAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBtX3NwZWVjaElucHV0Q2xpZW50Owog
ICAgICAgICBPd25QdHI8U3BlZWNoSW5wdXQ+IG1fc3BlZWNoSW5wdXQ7CiAjZW5kaWYKICAgICAg
ICAgT3duUHRyPFNldHRpbmdzPiBtX3NldHRpbmdzOwogICAgICAgICBPd25QdHI8UHJvZ3Jlc3NU
cmFja2VyPiBtX3Byb2dyZXNzOwotICAgICAgICAKKwogICAgICAgICBPd25QdHI8QmFja0Zvcndh
cmRDb250cm9sbGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcjsKICAgICAgICAgUmVmUHRyPEZy
YW1lPiBtX21haW5GcmFtZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88823</attachid>
            <date>2011-04-08 07:58:48 -0700</date>
            <delta_ts>2011-04-12 13:02:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110408155846.patch</filename>
            <type>text/plain</type>
            <size>38713</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IGVkNjNlMmJjN2I5ODcwNTJkNDA3MjlkODAyNzNkNTNkMTY5MGZiODEu
LjE1YWY2ODkwMDkxYjkxNWQ3NGZhMGJlNDg3ZDlkN2Q4MGQ5OTk3Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNDM1LDYgKzQzNSw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAogCXBhZ2UvSGlzdG9yeS5jcHAgXAogCXBhZ2Uv
TG9jYXRpb24uY3BwIFwKKwlwYWdlL01lZGlhU3RyZWFtQ29udGV4dC5jcHAgXAorCXBhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCiAJcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzLmNwcCBcCiAJcGFnZS9OYXZpZ2F0b3IuY3BwIFwKIAlwYWdlL05hdmlnYXRvckJhc2UuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNmJjZTAwNGNjOGVkNWI0NWE3OGI3ZDk3Nzg1MDU1
MTYwZDVhM2I4Yy4uNTA1ZTQ2NTcxZTU0NDlhMTBlYjk3MzhiZWE0NDFlYWEyZTgyZWYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5NTEsNiArMTk1MSw4IEBAIEVORElGICgpCiBJRiAoRU5B
QkxFX01FRElBX1NUUkVBTSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAg
ICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAgIHBhZ2UvTWVkaWFT
dHJlYW1Db250ZXh0LmNwcAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAK
ICAgICApCiAKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQ1ZWQ5ZDI4ZDdiNTYzODgwZWFjOTY2MTQ2MjZiMTZkZjYwMjBjM2YuLmNmNDBlOTZiYmY5NGJl
ZWJmMGYzY2Y2NWYzOTZlODU2ZmYyNTZjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAor
MjAxMS0wNC0wOCAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVk
aWEgU3RyZWFtIEFQSTogYWRkIHRoZSBza2VsZXRvbiBvZiB0aGUgZnJhbWUgY29udGV4dCwgdGhl
IHBhZ2UgY29udHJvbGxlciBhbmQgdGhlIGVtYmVkZGVyIGNsaWVudC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTIyCisKKyAgICAgICAgQWRkIHRo
ZSBiYXNpYyBvdXRsaW5lcyBvZiB0aGUgcGFnZSBjb250cm9sbGVyLCB0aGUgcGVyLWZyYW1lIGNv
bnRleHQgYW5kIHRoZSBlbWJlZGRlcgorICAgICAgICBjbGllbnQgaW50ZXJmYWNlIGZvciB0aGUg
TWVkaWEgU3RyZWFtIEFQSS4gUHJvdmlkZSBtZXRob2RzIHRvIGhhbmRsZSB0aGUgc2l0dWF0aW9u
cworICAgICAgICB3aGVyZSBhIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2Ugb3IgdHJh
bnNmZXJyZWQgYmV0d2VlbiBwYWdlcy4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0
cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LgorCisgICAgICAgICog
QW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpET01XaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6Om1lZGlhU3RyZWFtUGFnZURldGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6bWVkaWFTdHJlYW1UcmFuc2ZlclRvTmV3UGFnZSk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bWVkaWFTdHJlYW1Db250ZXh0
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpw
YWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp0cmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DbGllbnQ6On5NZWRpYVN0cmVhbUNs
aWVudCk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRleHQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6UmVxdWVzdDo6UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRleHQ6OlJlcXVlc3Q6On5SZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6UmVxdWVzdDo6c2NyaXB0Q29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRleHQ6OlJlcXVlc3RNYXA6
OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4dDo6UmVxdWVzdE1h
cDo6YWJvcnRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250ZXh0OjpNZWRp
YVN0cmVhbUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250ZXh0Ojp+
TWVkaWFTdHJlYW1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udGV4
dDo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250ZXh0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q29udGV4dDo6cGFnZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250ZXh0OjplbnRlckRldGFjaGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Db250ZXh0OjpwYWdlRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250ZXh0OjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250ZXh0Ojpjb250cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ29udGV4dDo6dHJhbnNmZXJUb05ld1BhZ2UpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJl
YW1Db250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250ZXh0
OjpJZEdlbmVyYXRvcjo6SWRHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Db250ZXh0OjpJZEdlbmVyYXRvcjo6Z2V0TmV4dElkKToKKyAgICAgICAgKiBwYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Db250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1Db250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVyQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmNvbnRleHREZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpjb250ZXh0
RGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjp0cmFu
c2ZlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpy
ZWdpc3RlclJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0
Q29udGV4dDo6UmVxdWVzdENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250cm9sbGVyOjpSZXF1ZXN0Q29udGV4dDo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0Q29udGV4dDo6Y29udGV4dCk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisK
IDIwMTEtMDQtMDggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDEyNzUwYTRkNjYyZjUxYzFiNzRlMzhkNGM0OTQzYzdlZmZkYTg4OWUuLjYx
MGQ4ZDZmZGQ0NDg4MjY3NGM4NDAyZDQyY2U4MmQ2YWRhYzhkZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjIwMyw2ICsyMjAzLDExIEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1Db250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNv
bnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGFkMTU4
ZTBlNmI3MGJjMmZjMzdmNzc3NDNkZGEwNzk4MmMwODJhYTEuLjgwMWIwZGViYzU2N2Q0NzYwMGRh
ODg0YTVlMTY5YzJlY2QxMGRmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM0NDYsNiArMzQ0Niwx
MSBAQAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaCcsCiAgICAgICAgICAg
ICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuY3BwJywKICAgICAgICAgICAgICdwYWdlL1Nw
ZWVjaElucHV0UmVzdWx0TGlzdC5oJywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFtQ2xp
ZW50LmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1Db250ZXh0LmNwcCcsCisgICAg
ICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRleHQuaCcsCisgICAgICAgICAgICAncGFnZS9N
ZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwJywK
ICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIuaCcsCiAgICAgICAgICAgICAncGFn
ZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggN2U4MWY1MmJk
YzE3OTJhNzlmNjZiOTUxYmJlYjA1ZWE5ZTE0YjlhYy4uYjQ1MjIzNjJlMjNjMTU3ZDdlMWQxODUy
ODJjNTA2ZWEyYjU2OTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMxMjQsMTAgKzMxMjQsMTcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9OPTEpIHsKIAogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAgSEVBREVSUyArPSBcCisgICAgICAg
IHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250
ZXh0LmggXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oIFwKICAgICAgICAg
cGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIFwKICAgICAgICAgcGFnZS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRp
YVN1Y2Nlc3NDYWxsYmFjay5oCiAKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgcGFnZS9NZWRp
YVN0cmVhbUNvbnRleHQuY3BwIFwKKyAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwCisKICAgICB2OCB7CiAgICAgICAgIFNPVVJDRVMgKz0gXAogICAgICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwYTllNmFlNWUyZjE0ZTVhNzcwODkzNzQy
NTcyMjUyOGIxZDcyZDViLi5lMjYyMzQ5MGQyZmJhMWZhMDQ1YzE4N2U5ZGE3ZTI4NjQ2NTExMzU4
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
MjUwMjYsNiArMjUwMjYsMjYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNsaWVudC5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtQ29udGV4
dC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBhZ2VcTWVkaWFTdHJlYW1Db250ZXh0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRp
YVN0cmVhbUNvbnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGFnZVxNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZGNkZDE5NzI1MDY4N2MzMmNhODYxMWYzZjc0ZGFkNmI1ODQ1
MzBmYS4uYjgyOGZhNzAwYzc5MGZiZjE0YmUyYWIxNjU4MWQ1ZmQ3ZDUyYjE5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDEw
MSw2ICs0MTAxLDExIEBACiAJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6
ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsK
IAkJQjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjE4Mjc0OTIxMzRDQTRD
MTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovOyB9OwogCQlCMUQ1RUNCNTEzNEI1
OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxi
YWNrRnVuY3Rpb24uaCAqLzsgfTsKKwkJQjFFNTQ1OTQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLzsg
fTsKKwkJQjFFNTQ1OTUxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udGV4dC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4OTEz
NDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250ZXh0LmNwcCAqLzsgfTsKKwkJQjFFNTQ1
OTYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1
IC8qIE1lZGlhU3RyZWFtQ29udGV4dC5oICovOyB9OworCQlCMUU1NDU5NzEzNDYyOUMxMDA5MkE1
NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThCMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0
cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlCMUU1NDU5ODEzNDYyOUMxMDA5MkE1NDUgLyog
TWVkaWFTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMUU1NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250
cm9sbGVyLmggKi87IH07CiAJCUIxRTU0NTk5MTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjFFNTQ1OEQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
LmggKi87IH07CiAJCUIxRTU0NTlCMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMUU1NDU4RjEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5oICovOyB9OwogCQlCMUU1NDU5RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU5MTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggKi87IH07CkBAIC0xMDM5Miw2ICsxMDM5NywxMSBA
QAogCQlCMDE0OUU3QzExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWxsYmFja0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFENUVD
QjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1DbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYVN0cmVhbUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCMUU1NDU4QTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29udGV4dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFT
dHJlYW1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUIxRTU0NThDMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAvKiBO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMUU1NDU4RTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQyOTEsNiArMTQzMDEsMTEgQEAKIAkJCQlCQ0UxQzQxOTBEOTgy
OTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCAqLywKIAkJCQlCQ0UxQzQyMjBEOTgyOUYyMDAzQjAy
RjIgLyogTG9jYXRpb24uaWRsICovLAogCQkJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLywKKwkJCQlCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUg
LyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLywKKwkJCQlCMUU1NDU4OTEzNDYyOUMxMDA5MkE1NDUg
LyogTWVkaWFTdHJlYW1Db250ZXh0LmNwcCAqLywKKwkJCQlCMUU1NDU4QTEzNDYyOUMxMDA5MkE1
NDUgLyogTWVkaWFTdHJlYW1Db250ZXh0LmggKi8sCisJCQkJQjFFNTQ1OEIxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQjFFNTQ1OEMxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovLAogCQkJCTlGRkUzRTc4MTFC
NTlDNUQwMDM3ODc0RSAvKiBNZW1vcnlJbmZvLmNwcCAqLywKIAkJCQk5RkZFM0U3OTExQjU5QzVE
MDAzNzg3NEUgLyogTWVtb3J5SW5mby5oICovLAogCQkJCTlGRkUzRTdDMTFCNTlDNkUwMDM3ODc0
RSAvKiBNZW1vcnlJbmZvLmlkbCAqLywKQEAgLTIyODg1LDYgKzIyOTAwLDkgQEAKIAkJCQk5M0Yx
OTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQjFFNTQ1OTQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUU1NDU5NjEzNDYyOUMxMDA5MkE1NDUgLyogTWVk
aWFTdHJlYW1Db250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUU1NDU5ODEzNDYyOUMxMDA5
MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU1
NDU5OTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIxRTU0NTlCMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU1NDU5RDEzNDYyOUMxMDA5
MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKQEAgLTI1NTg1LDYgKzI1NjAzLDggQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQw
Q0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUIxRTU0NTk1MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1OTcxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3Ry
ZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMUU1NDVERjEzNDYyQjBCMDA5
MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMUU1NDVFMTEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxRTU0NUUzMTM0NjJCMEIwMDkyQTU0NSAv
KiBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBhOGVmNmM0N2E1YjUxZDBlOTRiOWZkYzI0
NmU5MmMyOGE3MTA4MmJkLi4wNDI1YjEyYTdkODllNjU0NTIxOTdiOWQ3NmEzNzQyOWRjZGMyYWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVk
ZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1l
ZGlhUXVlcnlNYXRjaGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db250ZXh0LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uQ2VudGVyLmgiCkBAIC04MCw2ICs4MSw3IEBACiAjaW5jbHVkZSAiUGVyZm9y
bWFuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmVlbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCkBAIC0zOTUsNiArMzk3LDkgQEAgRE9NV2luZG93OjpET01XaW5k
b3coRnJhbWUqIGZyYW1lKQogICAgIDogbV9zaG91bGRQcmludFdoZW5GaW5pc2hlZExvYWRpbmco
ZmFsc2UpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9wcmludFRpbWVyKHRoaXMsICZE
T01XaW5kb3c6OnByaW50VGltZXJGaXJlZCkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
ICwgbV9tZWRpYVN0cmVhbUNvbnRleHQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTdHJl
YW1FbmFibGVkKCkgPyBuZXcgTWVkaWFTdHJlYW1Db250ZXh0KGZyYW1lKSA6IDApCisjZW5kaWYK
IHsKIH0KIApAQCAtNTEwLDYgKzUxNSwxMSBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIG1faWRiRmFjdG9yeSA9IDA7CiAjZW5kaWYK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1fbWVkaWFTdHJlYW1Db250ZXh0
KQorICAgICAgICBtX21lZGlhU3RyZWFtQ29udGV4dC0+ZGlzY29ubmVjdEZyYW1lKCk7CisjZW5k
aWYKIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBAIC0xODU4LDQgKzE4Njgs
MTggQEAgRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0CiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIERPTVdpbmRvdzo6bWVkaWFTdHJlYW1QYWdl
RGV0YWNoZWQoKQoreworICAgIGlmIChtX21lZGlhU3RyZWFtQ29udGV4dCkKKyAgICAgICAgbV9t
ZWRpYVN0cmVhbUNvbnRleHQtPnBhZ2VEZXRhY2hlZCgpOworfQorCit2b2lkIERPTVdpbmRvdzo6
bWVkaWFTdHJlYW1UcmFuc2ZlclRvTmV3UGFnZShQYWdlKiBuZXdQYWdlKQoreworICAgIGlmICht
X21lZGlhU3RyZWFtQ29udGV4dCkKKyAgICAgICAgbV9tZWRpYVN0cmVhbUNvbnRleHQtPnRyYW5z
ZmVyVG9OZXdQYWdlKG5ld1BhZ2UpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IDAxZTUzYmJlZWU0M2JmZTcwYjA5MDRhZWRm
ODgzM2ZlYTgxNDc4ZjkuLmYwNWE4YTVhZWMzNmRkODU2NWZiYzQ2MTAzZjVlNjhmOTg0ODA4MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgSURCRmFjdG9yeTsKICAgICBjbGFzcyBMb2NhdGlvbjsKICAgICBj
bGFzcyBNZWRpYVF1ZXJ5TGlzdDsKKyAgICBjbGFzcyBNZWRpYVN0cmVhbUNvbnRleHQ7CiAgICAg
Y2xhc3MgTmF2aWdhdG9yOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9u
Q2VudGVyOwpAQCAtNDI1LDYgKzQyNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFBlcmZvcm1hbmNlKiBvcHRpb25hbFBlcmZvcm1hbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wZXJm
b3JtYW5jZS5nZXQoKTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
ICAgICB2b2lkIG1lZGlhU3RyZWFtUGFnZURldGFjaGVkKCk7CisgICAgICAgIHZvaWQgbWVkaWFT
dHJlYW1UcmFuc2ZlclRvTmV3UGFnZShQYWdlKik7CisgICAgICAgIE1lZGlhU3RyZWFtQ29udGV4
dCogbWVkaWFTdHJlYW1Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUNvbnRl
eHQuZ2V0KCk7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NV2luZG93KEZy
YW1lKik7CiAKQEAgLTQ5MSw2ICs0OTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVO
QUJMRShCTE9CKQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01VUkw+IG1fZG9tVVJMOwogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBPd25QdHI8TWVkaWFTdHJl
YW1Db250ZXh0PiBtX21lZGlhU3RyZWFtQ29udGV4dDsKKyNlbmRpZgogICAgIH07CiAKICAgICBp
bmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6c3RhdHVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
aW5kZXggOWQwYjIwYjJkOTI3MGY2N2U2ODZjMWU4MTA1MWYzMTIyMzUyZDcwYS4uNDhmOTc2ODI2
MDQ2YjUyMjUwZTkyMDI5MTcxODQ2ODczNzIzNDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTY4OCw2ICs2ODgsOSBAQCB2b2lkIEZyYW1lOjpwYWdlRGVzdHJveWVkKCkKIAogICAgIGlmICht
X2RvbVdpbmRvdykgewogICAgICAgICBtX2RvbVdpbmRvdy0+cmVzZXRHZW9sb2NhdGlvbigpOwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIG1fZG9tV2luZG93LT5tZWRpYVN0cmVh
bVBhZ2VEZXRhY2hlZCgpOworI2VuZGlmCiAgICAgICAgIG1fZG9tV2luZG93LT5wYWdlRGVzdHJv
eWVkKCk7CiAgICAgfQogCkBAIC03MzgsOCArNzQxLDEyIEBAIHZvaWQgRnJhbWU6OnRyYW5zZmVy
Q2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQogICAgICAgICAvLyB3aGVuIHRoZSBHZW9sb2NhdGlv
bidzIGlmcmFtZSBpcyByZXBhcmVudGVkLgogICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NTc3CiAgICAgICAgIC8vIGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NzcKLSAgICAgICAgaWYgKG1fZG9tV2lu
ZG93KQorICAgICAgICBpZiAobV9kb21XaW5kb3cpIHsKICAgICAgICAgICAgIG1fZG9tV2luZG93
LT5yZXNldEdlb2xvY2F0aW9uKCk7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAg
ICAgIG1fZG9tV2luZG93LT5tZWRpYVN0cmVhbVRyYW5zZmVyVG9OZXdQYWdlKG5ld1BhZ2UpOwor
I2VuZGlmCisgICAgICAgIH0KIAogICAgICAgICBtX3BhZ2UgPSBuZXdQYWdlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTczZjI4YzM0ZTgxMjcx
YzEyZjI4Mjk1NDQ3MGUyZTUyOGZkY2U3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DbGll
bnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYVN0cmVhbUNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gTm90aWZ5IHRoZSBj
bGllbnQgYWJvdXQgc2h1dHRpbmcgZG93bi4KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTdHJlYW1E
ZXN0cm95ZWQoKSA9IDA7CisKKyAgICAvLyBGSVhNRTogYWRkIGhlcmUgdGhlIHJlcXVlc3RzIHRv
IHRoZSBlbWJlZGRlci4KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2xp
ZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1DbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MDAyMmM1
YzY2OTMyZDQ0N2M1YTQzNzUwNGYxZDYzZTE1M2U0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udGV4dC5jcHAKQEAgLTAsMCArMSwxNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUNvbnRleHQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbUNvbnRleHQ6OlJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxSZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQorICAgICAgICA6IG1fc2NyaXB0Q29udGV4
dChzY3JpcHRDb250ZXh0KSB7IH0KKworICAgIHZpcnR1YWwgflJlcXVlc3QoKSB7IH0KKworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X3NjcmlwdENvbnRleHQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKKworcHJp
dmF0ZToKKyAgICAvLyBUaGlzIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBpcyB0aGUgZG9jdW1l
bnQgcmVmZXJlbmNlZCBieSB0aGUgZnJhbWUuIEl0IHdpbGwKKyAgICAvLyByZW1haW4gYWxpdmUg
YW5kIHZhbGlkIHRoZSBzYW1lIHRpbWUgdGhhdCB0aGUgZnJhbWUgaXMsIGFib3J0aW5nIGFsbCBy
ZXF1ZXN0cworICAgIC8vIHdoZW4gcmVjZWl2aW5nIGRpc2Nvbm5lY3RGcmFtZS4gSXRzIHB1cnBv
c2UgaXMgdG8gYWxsb3cgYXN5bmMgcmVxdWVzdAorICAgIC8vIGFib3J0aW9ucyB0byBiZSBwcm9w
ZXJseSBzY2hlZHVsZWQgdG8gY29tcGx5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRDb250ZXh0OworfTsKKwordm9pZCBNZWRpYVN0
cmVhbUNvbnRleHQ6OlJlcXVlc3RNYXA6OmFib3J0KGludCByZXF1ZXN0SWQpCit7CisgICAgQVNT
RVJUKGNvbnRhaW5zKHJlcXVlc3RJZCkpOworICAgIGdldChyZXF1ZXN0SWQpLT5hYm9ydCgpOwor
ICAgIHJlbW92ZShyZXF1ZXN0SWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udGV4dDo6UmVx
dWVzdE1hcDo6YWJvcnRBbGwoKQoreworICAgIGZvciAoaXRlcmF0b3IgaXQgPSBiZWdpbigpOyBp
dCAhPSBlbmQoKTsgaXQgPSBiZWdpbigpKSB7CisgICAgICAgIGl0LT5zZWNvbmQtPmFib3J0KCk7
CisgICAgICAgIHJlbW92ZShpdCk7CisgICAgfQorfQorCitNZWRpYVN0cmVhbUNvbnRleHQ6Ok1l
ZGlhU3RyZWFtQ29udGV4dChGcmFtZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAg
ICwgbV9kZXRhY2hlZFN0YXRlKGZhbHNlKQoreworfQorCitNZWRpYVN0cmVhbUNvbnRleHQ6On5N
ZWRpYVN0cmVhbUNvbnRleHQoKQoreworfQorCitTZWN1cml0eU9yaWdpbiogTWVkaWFTdHJlYW1D
b250ZXh0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBt
X2ZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLT5zZWN1cml0eU9yaWdpbigpIDogMDsKK30KKwor
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW1Db250ZXh0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZSA/IG1fZnJhbWUtPmV4aXN0
aW5nRE9NV2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA6IDA7Cit9CisKK01lZGlh
U3RyZWFtQ29udHJvbGxlciogTWVkaWFTdHJlYW1Db250ZXh0OjpwYWdlQ29udHJvbGxlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICFtX2RldGFjaGVkU3RhdGUgJiYgbV9mcmFtZSAmJiBtX2ZyYW1l
LT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPm1lZGlhU3RyZWFtQ29udHJvbGxlcigpIDogMDsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRleHQ6OmVudGVyRGV0YWNoZWRTdGF0ZSgpCit7Cisg
ICAgbV9yZXF1ZXN0cy5hYm9ydEFsbCgpOworICAgIG1fZGV0YWNoZWRTdGF0ZSA9IHRydWU7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250ZXh0OjpwYWdlRGV0YWNoZWQoKQoreworICAgIGlmICht
X2RldGFjaGVkU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChwYWdlQ29udHJvbGxl
cigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5jb250ZXh0RGV0YWNoZWQodGhpcyk7CisK
KyAgICBlbnRlckRldGFjaGVkU3RhdGUoKTsKK30KKworLy8gQ2FsbGVkIG9uIGZyYW1lIGRlc3Ry
dWN0aW9uIGRlc3BpdGUgdGhlIG5hbWUuCit2b2lkIE1lZGlhU3RyZWFtQ29udGV4dDo6ZGlzY29u
bmVjdEZyYW1lKCkKK3sKKyAgICBtX3JlcXVlc3RzLmFib3J0QWxsKCk7CisKKyAgICBpZiAocGFn
ZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+Y29udGV4dERlc3Ryb3ll
ZCh0aGlzKTsKKworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udGV4
dDo6Y29udHJvbGxlckRlc3Ryb3llZChNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIp
Cit7CisgICAgQVNTRVJUKGNvbnRyb2xsZXIpOworCisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkg
PT0gY29udHJvbGxlcikKKyAgICAgICAgZW50ZXJEZXRhY2hlZFN0YXRlKCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1Db250ZXh0Ojp0cmFuc2ZlclRvTmV3UGFnZShQYWdlKiBuZXdQYWdlKQorewor
ICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT50cmFu
c2ZlckNvbnRleHQodGhpcywgbmV3UGFnZSA/IG5ld1BhZ2UtPm1lZGlhU3RyZWFtQ29udHJvbGxl
cigpIDogMCk7CisKKyAgICBpZiAoIW5ld1BhZ2UpIHsKKyAgICAgICAgZW50ZXJEZXRhY2hlZFN0
YXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogaW4gdGhlIGZ1
dHVyZSB3ZSBzaG91bGQga2VlcCBydW5uaW5nIHRoZSBtZWRpYSBzdHJlYW0gc2VydmljZXMgd2hp
bGUgdHJhbnNmZXJpbmcgZnJhbWVzLgorICAgIC8vIEhvd2V2ZXIsIHVudGlsIGEgcHJvcGVyIHdh
eSB0byBkbyB0aGlzIGlzIGRlY2lkZWQsIHdlJ3JlIHNodXR0aW5nIGRvd24gc2VydmljZXMuCisg
ICAgZW50ZXJEZXRhY2hlZFN0YXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjExM2E0ZWRkMmZjODc4M2UwN2VmMWQ1YTkxODM2
M2I3NjhiYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNvbnRleHQuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1l
ZGlhU3RyZWFtQ29udGV4dF9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQ29udGV4dF9oCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVy
OworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKK2NsYXNzIE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKK2NsYXNzIFBhZ2U7CitjbGFzcyBTZWN1cml0eU9y
aWdpbjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIE1lZGlhU3RyZWFt
Q29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1Db250ZXh0KTsK
K3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNvbnRleHQoRnJhbWUqKTsKKyAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbUNvbnRleHQoKTsKKworICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKKworICAgIHZvaWQgcGFnZURldGFjaGVkKCk7CisgICAgdm9pZCBkaXNj
b25uZWN0RnJhbWUoKTsKKyAgICB2b2lkIGNvbnRyb2xsZXJEZXN0cm95ZWQoTWVkaWFTdHJlYW1D
b250cm9sbGVyKik7CisgICAgdm9pZCB0cmFuc2ZlclRvTmV3UGFnZShQYWdlKik7CisKK3ByaXZh
dGU6CisgICAgY2xhc3MgUmVxdWVzdDsKKworICAgIGNsYXNzIElkR2VuZXJhdG9yIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIElkR2VuZXJhdG9yKCkgOiBtX2lkKDApIHsgfQorICAgICAgICBpbnQg
Z2V0TmV4dElkKCkgeyByZXR1cm4gKyttX2lkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBp
bnQgbV9pZDsKKyAgICB9OworCisgICAgY2xhc3MgUmVxdWVzdE1hcCA6IHB1YmxpYyBJZEdlbmVy
YXRvciwgcHVibGljIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7CisgICAgcHVibGlj
OgorICAgICAgICB2b2lkIGFib3J0KGludCByZXF1ZXN0SWQpOworICAgICAgICB2b2lkIGFib3J0
QWxsKCk7CisgICAgfTsKKworICAgIE1lZGlhU3RyZWFtQ29udHJvbGxlciogcGFnZUNvbnRyb2xs
ZXIoKSBjb25zdDsKKyAgICB2b2lkIGVudGVyRGV0YWNoZWRTdGF0ZSgpOworCisgICAgRnJhbWUq
IG1fZnJhbWU7CisgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworICAgIGJvb2wgbV9kZXRhY2hl
ZFN0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ29udGV4dF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIx
OGFjYjUzOTlmYzc2Yzg3ZGFkMTRmYzMwMWI3ODFhN2NhMzQ4OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcApAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udGV4dC5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVk
aWFTdHJlYW1Db250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1DbGll
bnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fbmV4dFJlcXVlc3RJ
ZCgxKQoreworfQorCitNZWRpYVN0cmVhbUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUNvbnRyb2xs
ZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1lZGlhU3RyZWFt
RGVzdHJveWVkKCk7CisKKyAgICB1bnJlZ2lzdGVyQ29udHJvbGxlcigpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckNvbnRleHQoTWVkaWFTdHJlYW1Db250ZXh0
KiBjb250ZXh0KQoreworICAgIGZvciAoUmVxdWVzdENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9yZXF1ZXN0Q29udGV4dC5iZWdpbigpOyBpdCAhPSBtX3JlcXVlc3RDb250ZXh0LmVuZCgpOyBp
dCA9IG1fcmVxdWVzdENvbnRleHQuYmVnaW4oKSkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5j
b250ZXh0KCkgPT0gY29udGV4dCkKKyAgICAgICAgICAgIG1fcmVxdWVzdENvbnRleHQucmVtb3Zl
KGl0KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVy
Q29udHJvbGxlcigpCit7CisgICAgSGFzaFNldDxNZWRpYVN0cmVhbUNvbnRleHQqPiBub3RpZmll
ZENvbnRleHRzOworCisgICAgZm9yIChSZXF1ZXN0Q29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBt
X3JlcXVlc3RDb250ZXh0LmJlZ2luKCk7IGl0ICE9IG1fcmVxdWVzdENvbnRleHQuZW5kKCk7IGl0
ID0gbV9yZXF1ZXN0Q29udGV4dC5iZWdpbigpKSB7CisgICAgICAgIGlmICghbm90aWZpZWRDb250
ZXh0cy5jb250YWlucyhpdC0+c2Vjb25kLmNvbnRleHQoKSkpIHsKKyAgICAgICAgICAgIG5vdGlm
aWVkQ29udGV4dHMuYWRkKGl0LT5zZWNvbmQuY29udGV4dCgpKTsKKyAgICAgICAgICAgIGl0LT5z
ZWNvbmQuY29udGV4dCgpLT5jb250cm9sbGVyRGVzdHJveWVkKHRoaXMpOworICAgICAgICB9CisK
KyAgICAgICAgbV9yZXF1ZXN0Q29udGV4dC5yZW1vdmUoaXQpOworICAgIH0KK30KKwordm9pZCBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmNvbnRleHREZXN0cm95ZWQoTWVkaWFTdHJlYW1Db250ZXh0
KiBjb250ZXh0KQoreworICAgIHVucmVnaXN0ZXJDb250ZXh0KGNvbnRleHQpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6Y29udGV4dERldGFjaGVkKE1lZGlhU3RyZWFtQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICAvLyBGSVhNRTogaW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgcm91
dGUgcmVwbGllcyB0byBvbmdvaW5nIGFzeW5jaHJvbm91cyByZXF1ZXN0cyB0byB0aGVpcgorICAg
IC8vIGNvbnRleHRzIGV2ZW4gaWYgdGhleSBoYXZlIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGlzIHBh
Z2UuIEZvciBub3cgbGV0J3MganVzdCBkZXN0cm95IHRoZW0uCisgICAgY29udGV4dERlc3Ryb3ll
ZChjb250ZXh0KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnRyYW5zZmVyQ29u
dGV4dChNZWRpYVN0cmVhbUNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtQ29udHJvbGxlciog
bmV3Q29udHJvbGxlcikKK3sKKyAgICBpZiAoIW5ld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgY29u
dGV4dERldGFjaGVkKGNvbnRleHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IGluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIHJvdXRlIHJlcGxpZXMgdG8gb25nb2luZyBh
c3luY2hyb25vdXMgcmVxdWVzdHMgdG8gdGhlaXIKKyAgICAvLyBjb250ZXh0cyBldmVuIGlmIHRo
ZXkgaGF2ZSBiZWVuIGRldGFjaGVkIGZyb20gdGhpcyBwYWdlLiBGb3Igbm93IGxldCdzIGp1c3Qg
ZGVzdHJveSB0aGVtLgorICAgIGNvbnRleHREZXN0cm95ZWQoY29udGV4dCk7Cit9CisKK2ludCBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdChpbnQgY29udGV4dFJlcXVlc3RJ
ZCwgTWVkaWFTdHJlYW1Db250ZXh0KiBjb250ZXh0KQoreworICAgIG1fcmVxdWVzdENvbnRleHQu
YWRkKG1fbmV4dFJlcXVlc3RJZCwgUmVxdWVzdENvbnRleHQoY29udGV4dFJlcXVlc3RJZCwgY29u
dGV4dCkpOworICAgIHJldHVybiBtX25leHRSZXF1ZXN0SWQrKzsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjOTg1NzEwNzlh
MzY3MTE3MDA2ZThhNDMzMDU1YzE5MzljNzFjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisjaWZuZGVmIE1lZGlhU3RyZWFtQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlh
U3RyZWFtQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3Ry
ZWFtQ2xpZW50OworY2xhc3MgTWVkaWFTdHJlYW1Db250ZXh0OworCitjbGFzcyBNZWRpYVN0cmVh
bUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtQ29udHJv
bGxlcik7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFtQ2xp
ZW50Kik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Db250cm9sbGVyKCk7CisKKyAgICB2b2lk
IGNvbnRleHREZXN0cm95ZWQoTWVkaWFTdHJlYW1Db250ZXh0Kik7CisgICAgdm9pZCBjb250ZXh0
RGV0YWNoZWQoTWVkaWFTdHJlYW1Db250ZXh0Kik7CisgICAgdm9pZCB0cmFuc2ZlckNvbnRleHQo
TWVkaWFTdHJlYW1Db250ZXh0KiwgTWVkaWFTdHJlYW1Db250cm9sbGVyKik7CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgUmVxdWVzdENvbnRleHQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVxdWVz
dENvbnRleHQoKQorICAgICAgICAgICAgOiBtX2lkKDApCisgICAgICAgICAgICAsIG1fY29udGV4
dCgwKSB7IH0KKworICAgICAgICBSZXF1ZXN0Q29udGV4dChpbnQgcmVxdWVzdElkLCBNZWRpYVN0
cmVhbUNvbnRleHQqIGNvbnRleHQpCisgICAgICAgICAgICA6IG1faWQocmVxdWVzdElkKQorICAg
ICAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkgeyB9CisKKyAgICAgICAgaW50IGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorICAgICAgICBNZWRpYVN0cmVhbUNvbnRleHQqIGNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGlu
dCBtX2lkOworICAgICAgICBNZWRpYVN0cmVhbUNvbnRleHQqIG1fY29udGV4dDsKKyAgICB9Owor
CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVzdENvbnRleHQ+IFJlcXVlc3RDb250ZXh0
TWFwOworCisgICAgaW50IHJlZ2lzdGVyUmVxdWVzdChpbnQgY29udGV4dFJlcXVlc3RJZCwgTWVk
aWFTdHJlYW1Db250ZXh0Kik7CisKKyAgICB2b2lkIHVucmVnaXN0ZXJDb250ZXh0KE1lZGlhU3Ry
ZWFtQ29udGV4dCopOworICAgIHZvaWQgdW5yZWdpc3RlckNvbnRyb2xsZXIoKTsKKworICAgIE1l
ZGlhU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBSZXF1ZXN0Q29udGV4dE1hcCBtX3JlcXVl
c3RDb250ZXh0OworICAgIGludCBtX25leHRSZXF1ZXN0SWQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8g
TWVkaWFTdHJlYW1Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDE4NjNiMDI1NzE0
YTU3OWY0MWY4MzhiMGQyMzdhMzBiYzBkMzVjNGQuLjlkOTY5OWY4YzJkZDBmNzUyNWU3ODJjNmE5
ZjRjY2I0ZWFhMmUyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTAsNiArNTAsOCBAQAogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ik5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCkBAIC0xMzYsNiArMTM4LDkgQEAgUGFnZTo6UGFnZShjb25zdCBQYWdl
Q2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCgpID8gbmV3IERldmljZU1v
dGlvbkNvbnRyb2xsZXIocGFnZUNsaWVudHMuZGV2aWNlTW90aW9uQ2xpZW50KSA6IDApCiAgICAg
LCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpk
ZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSA/IG5ldyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIodGhpcywgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQpIDogMCkKICNlbmRp
ZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX21lZGlhU3RyZWFtQ29udHJvbGxl
cihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYVN0cmVhbUVuYWJsZWQoKSA/IG5ldyBNZWRp
YVN0cmVhbUNvbnRyb2xsZXIocGFnZUNsaWVudHMubWVkaWFTdHJlYW1DbGllbnQpIDogMCkKKyNl
bmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50
KHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCkBAIC05NTAsNiArOTU1LDcg
QEAgUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKICAgICAsIGRldmljZU1vdGlvbkNs
aWVudCgwKQogICAgICwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoMCkKICAgICAsIHNwZWVjaElu
cHV0Q2xpZW50KDApCisgICAgLCBtZWRpYVN0cmVhbUNsaWVudCgwKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCmluZGV4IDgzMDcxMjNiMjExMzA2MDNlOTdiODYwZWMyYmVkNWEwOTg1Zjc3ODYuLmU3MGU3
NzA1NmRkZjZiYTk0ZGViM2E5N2I0YzIyM2VlNmI2ODBiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02
Miw2ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnNwZWN0b3JDbGll
bnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYUNhblN0
YXJ0TGlzdGVuZXI7CisgICAgY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQ7CisgICAgY2xhc3MgTWVk
aWFTdHJlYW1Db250cm9sbGVyOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdyb3Vw
OwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CkBAIC0xMTQsNiArMTE2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVu
dGF0aW9uQ2xpZW50OwogICAgICAgICAgICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gYmFja0Zv
cndhcmRDbGllbnQ7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNoSW5wdXRD
bGllbnQ7CisgICAgICAgICAgICBNZWRpYVN0cmVhbUNsaWVudCogbWVkaWFTdHJlYW1DbGllbnQ7
CiAgICAgICAgIH07CiAKICAgICAgICAgUGFnZShjb25zdCBQYWdlQ2xpZW50cyYpOwpAQCAtMTc5
LDYgKzE4Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRGV2aWNlTW90aW9uQ29u
dHJvbGxlciogZGV2aWNlTW90aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNl
TW90aW9uQ29udHJvbGxlci5nZXQoKTsgfQogICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIqIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgICAgICBNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIG1lZGlhU3RyZWFtQ29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1Db250cm9sbGVyLmdldCgpOyB9
CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dCog
c3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzM1LDEzICszNDEsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4gbV9kZXZpY2VN
b3Rpb25Db250cm9sbGVyOwogICAgICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyPiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgICAgIE93blB0cjxNZWRpYVN0cmVhbUNvbnRyb2xsZXI+IG1fbWVk
aWFTdHJlYW1Db250cm9sbGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAg
ICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgIE93
blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsKICNlbmRpZgogICAgICAgICBPd25QdHI8
U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgICAgIE93blB0cjxQcm9ncmVzc1RyYWNrZXI+IG1f
cHJvZ3Jlc3M7Ci0gICAgICAgIAorCiAgICAgICAgIE93blB0cjxCYWNrRm9yd2FyZENvbnRyb2xs
ZXI+IG1fYmFja0ZvcndhcmRDb250cm9sbGVyOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fbWFp
bkZyYW1lOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89253</attachid>
            <date>2011-04-12 13:01:01 -0700</date>
            <delta_ts>2011-04-14 10:04:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110412210059.patch</filename>
            <type>text/plain</type>
            <size>36985</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDk0YzRjM2JmMGUzYTI4NGY0NzM0ZWIxZTQ3YjQ2OTQxNGY0ZDdjODQu
LmIyNTgyMWRkYWM2MTk0NDdmNTcwZDA3OWMzNDIxMWUyZGY5YjU1NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNDM1LDYgKzQzNSw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAogCXBhZ2UvSGlzdG9yeS5jcHAgXAogCXBhZ2Uv
TG9jYXRpb24uY3BwIFwKKwlwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorCXBhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIFwKIAlwYWdlL01vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuY3BwIFwKIAlwYWdlL05hdmlnYXRvci5jcHAgXAogCXBhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMDlkOTJiNGRhYzkzMmM5NzAwYjk0
Mjg5NjA5MDEyZWE3ODU3YjhjLi44OGEyZTNjNzc4NmU2MTViNzkwM2M5OWYyOTI2OWJiYTRhOGU0
Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk1OCw2ICsxOTU4LDggQEAgRU5ESUYgKCkK
IElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKyAgICAgICAgcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuY3BwCiAgICAgKQogCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklM
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjNDE4ZTcyMWNlODE5NzNmOGU1MmYxNTcxN2M0NmEyMTc0ODVmNDI0
Li43ZmU3ZWYyZjYyODNlOGYzZmIyMDg1ZjhlNzlkZDQ0NGZkYjExMGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTEtMDQtMTIgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFkZCB0aGUgc2tlbGV0b24gb2YgdGhlIGZy
YW1lIGFuZCBwYWdlIGNvbnRyb2xsZXJzIGFuZCB0aGUgZW1iZWRkZXIgY2xpZW50LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY5MjIKKworICAgICAg
ICBBZGQgdGhlIGJhc2ljIG91dGxpbmVzIG9mIHRoZSBwYWdlIGNvbnRyb2xsZXIsIHRoZSBwZXIt
ZnJhbWUgY29udHJvbGxlciBhbmQgdGhlIGVtYmVkZGVyCisgICAgICAgIGNsaWVudCBpbnRlcmZh
Y2UgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJLiBQcm92aWRlIG1ldGhvZHMgdG8gaGFuZGxlIHRo
ZSBzaXR1YXRpb25zCisgICAgICAgIHdoZXJlIGEgZnJhbWUgaXMgZGV0YWNoZWQgZnJvbSB0aGUg
cGFnZSBvciB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHBhZ2VzLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcuCisK
KyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpw
YWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp0cmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2Uv
TWVkaWFTdHJlYW1DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNsaWVudDo6fk1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250
cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1Db250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdCk6
CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OlJlcXVlc3Q6OlJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0Ojpsb2NhbElkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdDo6ZnJhbWVD
b250cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdDo6UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6UmVxdWVzdDo6flJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmlzR2Vu
ZXJhdGVTdHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpSZXF1ZXN0Ojppc1JlY29yZGVkRGF0YVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3RNYXA6OmFib3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjph
Ym9ydEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c2VjdXJpdHlPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OnBhZ2VDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnRyYW5zZmVyVG9OZXdQYWdlKToK
KyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OklkR2VuZXJhdG9yOjpJ
ZEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6SWRHZW5lcmF0b3I6OmdldE5leHRJZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFn
ZUNsaWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6Om1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisKIDIwMTEtMDQtMTIgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2NWNmNWIzMWJjNDIz
NWRiYTNlNjc4Y2Y0ZmUxYmJjZWUyMWZjZTA4Li44MTAwMzNlOTU0NWU4ZjFmZTc1MGQwZmRhZGYx
ZWNlZjcxN2QzZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIyMDgsNiAr
MjIwOCwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJv
bGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Nb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjczYTA2YTUzZDZlYzA5
YjQxN2JjNWMwNDM2M2QzZmMxYjJhOGU1Zi4uYzdlZWVlNjMwYzI4ZjEwNDBiYTI3Y2Y2NTJjMmQw
NGRmY2FjOWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQ1Miw2ICszNDUyLDExIEBACiAgICAg
ICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oJywKICAgICAgICAgICAgICdwYWdlL1Nw
ZWVjaElucHV0UmVzdWx0TGlzdC5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRS
ZXN1bHRMaXN0LmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCcsCisg
ICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAg
ICdwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdwYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwJywKICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIuaCcsCiAgICAgICAgICAg
ICAncGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMzdi
MTk4MDNlMDA0ZWI4MTA4MmMxYTNlNjNlZGIyNTdhYmQyN2NiOC4uMjI2N2E3ZWQ0MzRjY2YyY2M5
NmE5ZDk3MTUyMDQ0NGZmOTE0MzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMxMjMsMTAgKzMxMjMs
MTcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9OPTEpIHsKIAogY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAgSEVBREVSUyArPSBcCisg
ICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmggXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggXAogICAgICAgICBw
YWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAgICAgICAgIHBhZ2UvTmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgKIAorICAgIFNPVVJDRVMgKz0gXAorICAg
ICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorICAgICAgICBwYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAorCiAgICAgdjggewogICAgICAgICBTT1VSQ0VTICs9
IFwKICAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWE2
ZTRiZTI5NTAyODlmNTkxOGUwZmFkOTBmMzBhM2Y1ZDhjNDgwMC4uNWM2ZTVhMDcwMWY5MzljNzhk
MDY4OGJmYjAzMDkzMDMxZmI2OGE2NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI1MDI2LDYgKzI1MDI2LDI2IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1DbGll
bnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGFnZVxNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdl
XE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyZGViM2M3NWUwM2NhZmVkNTgzZGJjYmI1ZTg0MGI0NjBjNmNkZGUyLi5hODdmZWRkMDdiM2I4
N2VkMDI1MTIzMTFlYzE2MWEyZjJiMWUyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTAxLDYgKzQxMDEsMTEgQEAKIAkJ
QjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovOyB9OwogCQlCMTgyNzQ5MzEzNENBNEMx
MDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJh
Y2tGdW5jdGlvbi5jcHAgKi87IH07CiAJCUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxs
YmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9
OworCQlCMUU1NDU5NDEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTg4MTM0NjI5
QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNsaWVudC5oICovOyB9OworCQlCMUU1NDU5NzEzNDYy
OUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThCMTM0NjI5QzEwMDkyQTU0NSAv
KiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlCMUU1NDU5ODEzNDYyOUMxMDA5
MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFT
dHJlYW1Db250cm9sbGVyLmggKi87IH07CisJCUIxRTU0NTk1MTM0NjI5QzEwMDkyQTU0NSAvKiBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4OTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlCMUU1NDU5NjEzNDYyOUMxMDA5MkE1NDUg
LyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThBMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlci5oICovOyB9OwogCQlCMUU1NDU5OTEzNDYyOUMxMDA5MkE1NDUg
LyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5oICovOyB9OwogCQlCMUU1NDU5QjEzNDYyOUMxMDA5MkE1NDUgLyogTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLzsgfTsKIAkJQjFFNTQ1OUQxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OTExMzQ2MjlDMTAwOTJBNTQ1
IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oICovOyB9OwpAQCAtMTAzOTEs
NiArMTAzOTYsMTEgQEAKIAkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXpl
clRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJlc2l6ZXJU
aHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjE4Mjc0OTIxMzRDQTRDMTAw
Qjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3Ry
ZWFtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NThCMTM0NjI5
QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3Ry
ZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0
cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODkx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEExMzQ2MjlDMTAwOTJB
NTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU4RTEz
NDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQyODksNiArMTQyOTksMTEgQEAKIAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAzQjAyRjIg
LyogTG9jYXRpb24uaCAqLywKIAkJCQlCQ0UxQzQyMjBEOTgyOUYyMDAzQjAyRjIgLyogTG9jYXRp
b24uaWRsICovLAogCQkJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCAqLywKKwkJCQlCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJl
YW1DbGllbnQuaCAqLywKKwkJCQlCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcCAqLywKKwkJCQlCMUU1NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyogTWVk
aWFTdHJlYW1Db250cm9sbGVyLmggKi8sCisJCQkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLywKKwkJCQlCMUU1NDU4QTEzNDYyOUMx
MDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLywKIAkJCQk5RkZFM0U3
ODExQjU5QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5jcHAgKi8sCiAJCQkJOUZGRTNFNzkxMUI1
OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uaCAqLywKIAkJCQk5RkZFM0U3QzExQjU5QzZFMDAz
Nzg3NEUgLyogTWVtb3J5SW5mby5pZGwgKi8sCkBAIC0yMjg4MSw2ICsyMjg5Niw5IEBACiAJCQkJ
OTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUIxRTU0NTk0MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVh
bUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTYxMzQ2
MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMUU1NDU5OTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0NTlCMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU1NDU5
RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1NTgxLDYgKzI1NTk5LDggQEAKIAkJCQk5M0YxOUIwNTA4MjQ1
RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUIxRTU0NTk3MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1OTUxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIxRTU0NURGMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIxRTU0NUUxMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjFFNTQ1
RTMxMzQ2MkIwQjAwOTJBNTQ1IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiNzVlZmRmZmQ4Mzg0
OWExNjE4MTZjYzRlZDMxOGMwODVlNjY2Njk3Li4yOWI4YWFiMjVkN2ZlMzkxZTA1ZWMxZGQ3NjU1
ZjhmNTk2NDU4ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNTksNiArNTksNyBAQAogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVkaWFGZWF0dXJlTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtNzAsNiArNzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTE2Niw2ICsxNjgsOSBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBh
Z2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgogICAg
ICwgbV9pblZpZXdTb3VyY2VNb2RlKGZhbHNlKQogICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChmYWxz
ZSkKICAgICAsIG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNlKQorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgLCBtX21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5hYmxlZCgpID8gbmV3IE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKHRoaXMpIDogMCkKKyNlbmRpZgogewogICAgIEFTU0VSVChwYWdlKTsKICAgICBB
dG9taWNTdHJpbmc6OmluaXQoKTsKQEAgLTIyNiw2ICsyMzEsMTIgQEAgRnJhbWU6On5GcmFtZSgp
CiAKICAgICBpZiAobV9kb21XaW5kb3cpCiAgICAgICAgIG1fZG9tV2luZG93LT5kaXNjb25uZWN0
RnJhbWUoKTsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1fbWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIt
PmRpc2Nvbm5lY3RGcmFtZSgpOworI2VuZGlmCisKICAgICBzY3JpcHQoKS0+Y2xlYXJXaW5kb3dT
aGVsbCgpOwogCiAgICAgSGFzaFNldDxET01XaW5kb3cqPjo6aXRlcmF0b3IgZW5kID0gbV9saXZl
Rm9ybWVyV2luZG93cy5lbmQoKTsKQEAgLTY5MSw2ICs3MDIsMTEgQEAgdm9pZCBGcmFtZTo6cGFn
ZURlc3Ryb3llZCgpCiAgICAgICAgIG1fZG9tV2luZG93LT5wYWdlRGVzdHJveWVkKCk7CiAgICAg
fQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAobV9tZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci0+ZGlzY29u
bmVjdFBhZ2UoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBhcyB0byB3
aHkgdGhpcyBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGJ1dCBpdCBpcywKICAgICAvLyBzbyBw
YWdlKCkgY291bGQgYmUgTlVMTC4KICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpID09IHRoaXMpCkBAIC03NDEsNiArNzU3LDEwIEBAIHZv
aWQgRnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQogICAgICAgICBpZiAo
bV9kb21XaW5kb3cpCiAgICAgICAgICAgICBtX2RvbVdpbmRvdy0+cmVzZXRHZW9sb2NhdGlvbigp
OwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgaWYgKG1fbWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIpCisgICAgICAgICAgICBtX21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LT50cmFuc2ZlclRvTmV3UGFnZShuZXdQYWdlKTsKKyNlbmRpZgogICAgICAgICBtX3BhZ2UgPSBu
ZXdQYWdlOwogCiAgICAgICAgIGlmIChuZXdQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDA1ODA1
Y2YxZTJlNDhkZDQzYmVmNmYwMmFhM2E0NmQyZjY5MzQwZmMuLmNjYzAzODljZmEwMzk4YjkyZjcy
OTUzOTcwZTBlNTQ4NmRlM2VkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY0LDYgKzY0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhU
TUxUYWJsZUNlbGxFbGVtZW50OworICAgIGNsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OwogICAgIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogICAgIGNsYXNzIFJlbmRlclBhcnQ7CiAg
ICAgY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7CkBAIC0xOTksNiArMjAwLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChOU1JlY3QpIGNvbnN0
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlciogbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKKwogICAg
IC8vID09PT09PT09CiAKICAgICBwcml2YXRlOgpAQCAtMjY1LDYgKzI3MCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3RpbGVk
QmFja2luZ1N0b3JlOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAg
ICBPd25QdHI8TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI+IG1fbWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI7CisjZW5kaWYKICAgICB9OwogCiAgICAgaW5saW5lIHZvaWQgRnJhbWU6OmluaXQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3M2Yy
OGMzNGU4MTI3MWMxMmYyODI5NTQ0NzBlMmU1MjhmZGNlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNsaWVudF9oCisjZGVmaW5lIE1lZGlh
U3RyZWFtQ2xpZW50X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQgeworcHVibGljOgorICAgIC8vIE5v
dGlmeSB0aGUgY2xpZW50IGFib3V0IHNodXR0aW5nIGRvd24uCisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhU3RyZWFtRGVzdHJveWVkKCkgPSAwOworCisgICAgLy8gRklYTUU6IGFkZCBoZXJlIHRoZSBy
ZXF1ZXN0cyB0byB0aGUgZW1iZWRkZXIuCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YjYxYjFiNGRmMzFiMzYzZDViMDJmNTA0Y2RkNDQyNTE1Y2E4N2E2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3Bw
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DbGllbnQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhU3RyZWFt
Q29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50KiBjbGll
bnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX25leHRHbG9iYWxSZXF1ZXN0SWQo
MSkKK3sKK30KKworTWVkaWFTdHJlYW1Db250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVy
KCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tZWRpYVN0cmVhbURl
c3Ryb3llZCgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZy
YW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVy
KQoreworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xsZXIpOworCisgICAgZm9yIChSZXF1ZXN0TWFw
OjppdGVyYXRvciBpdCA9IG1fcmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gbV9yZXF1ZXN0cy5lbmQo
KTsgaXQgPSBtX3JlcXVlc3RzLmJlZ2luKCkpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQuZnJh
bWVDb250cm9sbGVyKCkgPT0gZnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgbV9yZXF1ZXN0
cy5yZW1vdmUoaXQpOworICAgIH0KK30KKworaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVn
aXN0ZXJSZXF1ZXN0KGludCBsb2NhbElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyKQoreworICAgIG1fcmVxdWVzdHMuYWRkKG1fbmV4dEdsb2JhbFJlcXVlc3RJ
ZCwgUmVxdWVzdChsb2NhbElkLCBmcmFtZUNvbnRyb2xsZXIpKTsKKyAgICByZXR1cm4gbV9uZXh0
R2xvYmFsUmVxdWVzdElkKys7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODAxZjE0MWZkMGVlNDM2MWY2NmJlOGI4YTI1YjA3
OTEyOTA5ODQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2xpZW50OworY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTWVkaWFTdHJlYW1Db250cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVh
bUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1DbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVh
bUNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgdW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlciopOworCitwcml2YXRlOgorICAgIGNsYXNzIFJlcXVlc3Qg
eworICAgIHB1YmxpYzoKKyAgICAgICAgUmVxdWVzdCgpCisgICAgICAgICAgICA6IG1fbG9jYWxJ
ZCgwKQorICAgICAgICAgICAgLCBtX2ZyYW1lQ29udHJvbGxlcigwKSB7IH0KKworICAgICAgICBS
ZXF1ZXN0KGludCBsb2NhbElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyKQorICAgICAgICAgICAgOiBtX2xvY2FsSWQobG9jYWxJZCkKKyAgICAgICAgICAgICwg
bV9mcmFtZUNvbnRyb2xsZXIoZnJhbWVDb250cm9sbGVyKSB7IH0KKworICAgICAgICBpbnQgbG9j
YWxJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxJZDsgfQorICAgICAgICBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUNv
bnRyb2xsZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX2xvY2FsSWQ7CisgICAg
ICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBtX2ZyYW1lQ29udHJvbGxlcjsKKyAgICB9
OworCisgICAgaW50IHJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxSZXF1ZXN0SWQsIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZXF1ZXN0
PiBSZXF1ZXN0TWFwOworCisgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworCisgICAgTWVkaWFT
dHJlYW1DbGllbnQqIG1fY2xpZW50OworICAgIGludCBtX25leHRHbG9iYWxSZXF1ZXN0SWQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjM4YjZkN2RlM2ZkOTk1ZTZhOWUzZWUxY2ExNzgxZTQzZTNmMzExYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBA
IC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisj
aW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIk5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8
UmVxdWVzdD4geworcHVibGljOgorICAgIFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyB9CisKKyAgICB2aXJ0dWFsIH5SZXF1ZXN0KCkg
eyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgdmlydHVh
bCBib29sIGlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZWNvcmRlZERhdGFSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKKworcHJpdmF0ZToKKyAg
ICAvLyBUaGlzIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBpcyB0aGUgZG9jdW1lbnQgcmVmZXJl
bmNlZCBieSB0aGUgZnJhbWUuIEl0IHdpbGwKKyAgICAvLyByZW1haW4gYWxpdmUgYW5kIHZhbGlk
IHRoZSBzYW1lIHRpbWUgdGhhdCB0aGUgZnJhbWUgaXMsIGFib3J0aW5nIGFsbCByZXF1ZXN0cwor
ICAgIC8vIHdoZW4gcmVjZWl2aW5nIGRpc2Nvbm5lY3RGcmFtZS4gSXRzIHB1cnBvc2UgaXMgdG8g
YWxsb3cgYXN5bmMgcmVxdWVzdAorICAgIC8vIGFib3J0aW9ucyB0byBiZSBwcm9wZXJseSBzY2hl
ZHVsZWQgdG8gY29tcGx5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uCisgICAgLy8gTm90ZSB0aGF0
IGlmIGFueSBjYWxsYmFjayBpcyBjYWxsZWQgYXMgYSByZXN1bHQgb2YgYWJvcnRpbmcgdGhlIHJl
cXVlc3QKKyAgICAvLyBpdCB3aWxsIHVzZSB0aGUgY29udGV4dCBpbiB3aGljaCBpdCB3YXMgZGVm
aW5lZCwgbm90IG5lY2Vzc2FyaWx5IHRoaXMgb25lLgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK307CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OlJlcXVlc3RNYXA6OmFib3J0KGludCByZXF1ZXN0SWQpCit7CisgICAgQVNT
RVJUKGNvbnRhaW5zKHJlcXVlc3RJZCkpOworICAgIGdldChyZXF1ZXN0SWQpLT5hYm9ydCgpOwor
ICAgIHJlbW92ZShyZXF1ZXN0SWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpSZXF1ZXN0TWFwOjphYm9ydEFsbCgpCit7CisgICAgZm9yIChpdGVyYXRvciBpdCA9IGJl
Z2luKCk7IGl0ICE9IGVuZCgpOyBpdCA9IGJlZ2luKCkpIHsKKyAgICAgICAgaXQtPnNlY29uZC0+
YWJvcnQoKTsKKyAgICAgICAgcmVtb3ZlKGl0KTsKKyAgICB9Cit9CisKK01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcihGcmFtZSogZnJhbWUpCisg
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9pc0luRGV0YWNoZWRTdGF0ZShmYWxzZSkKK3sK
K30KKworTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcigpCit7Cit9CisKK1NlY3VyaXR5T3JpZ2luKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFt
ZS0+ZXhpc3RpbmdET01XaW5kb3coKS0+c2VjdXJpdHlPcmlnaW4oKSA6IDA7Cit9CisKK1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZSA/IG1fZnJhbWUtPmV4
aXN0aW5nRE9NV2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA6IDA7Cit9CisKK01l
ZGlhU3RyZWFtQ29udHJvbGxlciogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnBhZ2VDb250
cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNJbkRldGFjaGVkU3RhdGUgJiYgbV9m
cmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPm1lZGlhU3RyZWFtQ29u
dHJvbGxlcigpIDogMDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZW50
ZXJEZXRhY2hlZFN0YXRlKCkKK3sKKyAgICBpZiAobV9pc0luRGV0YWNoZWRTdGF0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9yZXF1ZXN0cy5hYm9ydEFsbCgpOworICAgIG1faXNJbkRldGFj
aGVkU3RhdGUgPSB0cnVlOworfQorCisvLyBDYWxsZWQgYWxzbyBvbiBmcmFtZSBkZXRhY2htZW50
LCBpbiB3aGljaCBjYXNlIHRoZSBwYWdlIGNvbnRyb2xsZXIgd2lsbCByZW1haW4gYWxpdmUuCit2
b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0UGFnZSgpCit7CisgICAg
aWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnVucmVnaXN0
ZXJGcmFtZUNvbnRyb2xsZXIodGhpcyk7CisKKyAgICBlbnRlckRldGFjaGVkU3RhdGUoKTsKK30K
KworLy8gQ2FsbGVkIHdoZW4gdGhlIGZyYW1lIGlzIGJlaW5nIGRlc3Ryb3llZC4KK3ZvaWQgTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgbV9yZXF1
ZXN0cy5hYm9ydEFsbCgpOworCisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBh
Z2VDb250cm9sbGVyKCktPnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIodGhpcyk7CisKKyAgICBt
X2ZyYW1lID0gMDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6dHJhbnNm
ZXJUb05ld1BhZ2UoUGFnZSogbmV3UGFnZSkKK3sKKyAgICAvLyBGSVhNRTogaW4gdGhlIGZ1dHVy
ZSB3ZSBzaG91bGQga2VlcCBydW5uaW5nIHRoZSBtZWRpYSBzdHJlYW0gc2VydmljZXMgd2hpbGUg
dHJhbnNmZXJpbmcgZnJhbWVzLgorICAgIC8vIEhvd2V2ZXIsIHVudGlsIGEgcHJvcGVyIHdheSB0
byBkbyB0aGlzIGlzIGRlY2lkZWQsIHdlJ3JlIHNodXR0aW5nIGRvd24gc2VydmljZXMuCisgICAg
aWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnVucmVnaXN0
ZXJGcmFtZUNvbnRyb2xsZXIodGhpcyk7CisKKyAgICBlbnRlckRldGFjaGVkU3RhdGUoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NGRlNzAzOTUzYWU4OWU1OWRkZDRiM2NjOTU1MzUxZDcyMmE5ZjNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3IuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI7CitjbGFz
cyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOworY2xhc3MgTmF2aWdhdG9yVXNlck1l
ZGlhU3VjY2Vzc0NhbGxiYWNrOworY2xhc3MgUGFnZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcihGcmFtZSop
OworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCk7CisKKyAgICBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICB2b2lkIGRpc2Nv
bm5lY3RQYWdlKCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKyAgICB2b2lkIHRyYW5z
ZmVyVG9OZXdQYWdlKFBhZ2UqKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBSZXF1ZXN0OworCisg
ICAgY2xhc3MgSWRHZW5lcmF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSWRHZW5lcmF0b3Io
KSA6IG1faWQoMCkgeyB9CisgICAgICAgIGludCBnZXROZXh0SWQoKSB7IHJldHVybiArK21faWQ7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX2lkOworICAgIH07CisKKyAgICBjbGFz
cyBSZXF1ZXN0TWFwIDogcHVibGljIElkR2VuZXJhdG9yLCBwdWJsaWMgSGFzaE1hcDxpbnQsIFJl
ZlB0cjxSZXF1ZXN0PiA+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgYWJvcnQoaW50IHJl
cXVlc3RJZCk7CisgICAgICAgIHZvaWQgYWJvcnRBbGwoKTsKKyAgICB9OworCisgICAgLy8gRGV0
YWNoZWQgZnJvbSBhIHBhZ2UsIGFuZCBoZW5jZSBmcm9tIGEgZW1iZWRkZXIgY2xpZW50LgorICAg
IHZvaWQgZW50ZXJEZXRhY2hlZFN0YXRlKCk7CisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBw
YWdlQ29udHJvbGxlcigpIGNvbnN0OworCisgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworCisg
ICAgRnJhbWUqIG1fZnJhbWU7CisgICAgYm9vbCBtX2lzSW5EZXRhY2hlZFN0YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2VuZGlmIC8vIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDE4NjNiMDI1NzE0YTU3OWY0MWY4MzhiMGQyMzdhMzBiYzBkMzVjNGQuLjlkOTY5OWY4
YzJkZDBmNzUyNWU3ODJjNmE5ZjRjY2I0ZWFhMmUyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
NTAsNiArNTAsOCBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5v
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC0xMzYsNiArMTM4LDkgQEAgUGFn
ZTo6UGFnZShjb25zdCBQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2RldmljZU1v
dGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxl
ZCgpID8gbmV3IERldmljZU1vdGlvbkNvbnRyb2xsZXIocGFnZUNsaWVudHMuZGV2aWNlTW90aW9u
Q2xpZW50KSA6IDApCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSA/IG5ldyBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIodGhpcywgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25D
bGllbnQpIDogMCkKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX21l
ZGlhU3RyZWFtQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYVN0cmVhbUVu
YWJsZWQoKSA/IG5ldyBNZWRpYVN0cmVhbUNvbnRyb2xsZXIocGFnZUNsaWVudHMubWVkaWFTdHJl
YW1DbGllbnQpIDogMCkKKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBt
X3NwZWVjaElucHV0Q2xpZW50KHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlm
CkBAIC05NTAsNiArOTU1LDcgQEAgUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKICAg
ICAsIGRldmljZU1vdGlvbkNsaWVudCgwKQogICAgICwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQo
MCkKICAgICAsIHNwZWVjaElucHV0Q2xpZW50KDApCisgICAgLCBtZWRpYVN0cmVhbUNsaWVudCgw
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGFjNGMxNjA0YmRjOTI3OGI4ZTlmOWJkNDJiYjI0
NzcyNjkzNjY1NGMuLmYwZjBmYjllYWUzODE0ZTQ2MjZmOGY1OWM2MTU3MGEzOGJjOWQ3MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC02Niw2ICs2Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbnNwZWN0b3JDbGllbnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICAg
ICBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CisgICAgY2xhc3MgTWVkaWFTdHJlYW1DbGll
bnQ7CisgICAgY2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVyOwogICAgIGNsYXNzIE5vZGU7CiAg
ICAgY2xhc3MgUGFnZUdyb3VwOwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CkBAIC0xMTgsNiArMTIw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25D
bGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogICAgICAgICAgICAgUmVmUHRyPEJhY2tG
b3J3YXJkTGlzdD4gYmFja0ZvcndhcmRDbGllbnQ7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENs
aWVudCogc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgICAgICAgICBNZWRpYVN0cmVhbUNsaWVudCog
bWVkaWFTdHJlYW1DbGllbnQ7CiAgICAgICAgIH07CiAKICAgICAgICAgUGFnZShjb25zdCBQYWdl
Q2xpZW50cyYpOwpAQCAtMTgzLDYgKzE4Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogZGV2aWNlTW90aW9uQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlci5nZXQoKTsgfQogICAgICAgICBEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5k
aWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBNZWRpYVN0cmVhbUNvbnRyb2xs
ZXIqIG1lZGlhU3RyZWFtQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1D
b250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAg
ICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzM5LDYgKzM0NSw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPERldmljZU1vdGlvbkNvbnRy
b2xsZXI+IG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcjsKICAgICAgICAgT3duUHRyPERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcj4gbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBPd25QdHI8TWVkaWFTdHJlYW1D
b250cm9sbGVyPiBtX21lZGlhU3RyZWFtQ29udHJvbGxlcjsKKyNlbmRpZgogI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCiAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBtX3NwZWVjaElucHV0Q2xp
ZW50OwogICAgICAgICBPd25QdHI8U3BlZWNoSW5wdXQ+IG1fc3BlZWNoSW5wdXQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89599</attachid>
            <date>2011-04-14 10:04:37 -0700</date>
            <delta_ts>2011-04-14 12:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110414180436.patch</filename>
            <type>text/plain</type>
            <size>36693</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDBhYWI2NThlOGIyMWY5NDdhNWQ1ZjA4OTFjYTk3ZTRlMTJlYmRmNTEu
LjM1Y2MxNTE1MTUxMmU2NzgwZjE2NDYzZTVhZjA2MzA2M2E1MWE2MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNDM2LDYgKzQzNiw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAogCXBhZ2UvSGlzdG9yeS5jcHAgXAogCXBhZ2Uv
TG9jYXRpb24uY3BwIFwKKwlwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorCXBhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIFwKIAlwYWdlL01vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuY3BwIFwKIAlwYWdlL05hdmlnYXRvci5jcHAgXAogCXBhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2YmRhMmU3MTQ0MjM5MGM0NWQxMDUw
NGQyN2JiZTdlZmNjOTlkY2I2Li4wMzJkYWY4N2NlMmE5MmZiMGE3MTA3M2I4ZGM4Zjc2NDkyMjgz
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk1OSw2ICsxOTU5LDggQEAgRU5ESUYgKCkK
IElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKyAgICAgICAgcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuY3BwCiAgICAgKQogCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklM
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA2YzlkMGRkNTlkMGQ4MjFjZmYyMGExZTk0M2QxZDVlNGVhYWIwZjVi
Li41NzYyOGFhNzA5MmEyYWFmYzM4M2ZkYWEwY2QwNmIxNzI1MzQ0MzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTEtMDQtMTQgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFkZCB0aGUgc2tlbGV0b24gb2YgdGhlIGZy
YW1lIGFuZCBwYWdlIGNvbnRyb2xsZXJzIGFuZCB0aGUgZW1iZWRkZXIgY2xpZW50LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY5MjIKKworICAgICAg
ICBBZGQgdGhlIGJhc2ljIG91dGxpbmVzIG9mIHRoZSBwYWdlIGNvbnRyb2xsZXIsIHRoZSBwZXIt
ZnJhbWUgY29udHJvbGxlciBhbmQgdGhlIGVtYmVkZGVyCisgICAgICAgIGNsaWVudCBpbnRlcmZh
Y2UgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJLiBQcm92aWRlIG1ldGhvZHMgdG8gaGFuZGxlIHRo
ZSBzaXR1YXRpb25zCisgICAgICAgIHdoZXJlIGEgZnJhbWUgaXMgZGV0YWNoZWQgZnJvbSB0aGUg
cGFnZSBvciB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHBhZ2VzLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcuCisK
KyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpw
YWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp0cmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2Uv
TWVkaWFTdHJlYW1DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNsaWVudDo6fk1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250
cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1Db250cm9sbGVyOjp+TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdCk6
CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OlJlcXVlc3Q6OlJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0Ojpsb2NhbElkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdDo6ZnJhbWVD
b250cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdDo6UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6UmVxdWVzdDo6flJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmlzR2Vu
ZXJhdGVTdHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpSZXF1ZXN0Ojppc1JlY29yZGVkRGF0YVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3RNYXA6OmFib3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjph
Ym9ydEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c2VjdXJpdHlPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OnBhZ2VDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnRyYW5zZmVyVG9OZXdQYWdlKToK
KyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OklkR2VuZXJhdG9yOjpJ
ZEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6SWRHZW5lcmF0b3I6OmdldE5leHRJZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFn
ZUNsaWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6Om1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisKIDIwMTEtMDQtMTQgIEFs
ZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYmM2
Yzc1MjBkZmMyMjcwYzc2MTFhODgzMjA3MTdkYjMyMmQ5OTYxOC4uNWFjODI1MTM1ODdiN2I1MDk0
ZjgxYjZhODhlM2VjOWU4NjcyZWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yMjEwLDYgKzIyMTAsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNvbnRyb2xsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY5NGYy
OGZhMmE2ZGM4NmY1ZjQ4MzE0NThmMjJmNjhlZjM4ODViOWMuLjMzZDc2YWEyZDhkZTNlMWNmZDU5
NjY1ZGRmZjViNTE0NjhkZmRjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM0NTYsNiArMzQ1Niwx
MSBAQAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaCcsCiAgICAgICAgICAg
ICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuY3BwJywKICAgICAgICAgICAgICdwYWdlL1Nw
ZWVjaElucHV0UmVzdWx0TGlzdC5oJywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFtQ2xp
ZW50LmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCcsCisg
ICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAn
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9TdXNwZW5k
YWJsZVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgnLAog
ICAgICAgICAgICAgJ3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IGE1YTllNjE5MmMxOTRmNDQwZTY3MWYxMWQwNjYzMDY1MzViYTBiYjUuLjA1ZjI2MDk2
ZDk3YWU2YjY4ZmQ3YzIxOTE5YjQxZGQ1YTcyNTliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMTM3
LDEwICszMTM3LDE3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HRU9MT0NBVElPTj0xKSB7
CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgIEhFQURF
UlMgKz0gXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggXAorICAgICAgICBwYWdl
L01lZGlhU3RyZWFtQ29udHJvbGxlci5oIFwKKyAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5oIFwKICAgICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIFwK
ICAgICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggXAogICAgICAg
ICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oCiAKKyAgICBTT1VSQ0VT
ICs9IFwKKyAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKKyAgICAgICAg
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKKwogICAgIHY4IHsKICAgICAgICAg
U09VUkNFUyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JD
dXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDA2YzQxOWUyNTBmMDI5ZTFhYzExMWYwMWEyNDljMjYyMzNiNGFmODEuLmQ0ZTMwODIy
YWNkZmMzMmY4N2Y0NTQ2OGUzNDBjZWJjOTk1NDFiNzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNTAyNiw2ICsyNTAyNiwyNiBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlh
U3RyZWFtQ2xpZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGFnZVxNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGFnZVxNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZTU4ZjQ5ZWJkN2M1Y2M0ZDRjN2Y4YWVmNmI1MGRhZjc5ZjU5NzU3ZS4uYzky
MTljYWUxY2I2M2U1MzdiZjIzZDQ0ZjZjODdiNTE0ZWZhNGM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDEwOSw2ICs0MTA5
LDExIEBACiAJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdD
MTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjE4Mjc0
OTMxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJE
IC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovOyB9OwogCQlCMUQ1RUNCNTEzNEI1OERBMDA4N0M3
OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rp
b24uaCAqLzsgfTsKKwkJQjFFNTQ1OTQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1
NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLzsgfTsKKwkJQjFF
NTQ1OTcxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QjEzNDYyOUMx
MDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQjFFNTQ1OTgx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1
IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovOyB9OworCQlCMUU1NDU5NTEzNDYyOUMxMDA5
MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQjFFNTQ1OTYxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QTEzNDYyOUMxMDA5MkE1NDUg
LyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQjFFNTQ1OTkxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4RDEzNDYyOUMxMDA5MkE1NDUgLyog
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCAqLzsgfTsKIAkJQjFFNTQ1OUIxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThGMTM0NjI5QzEwMDkyQTU0NSAv
KiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggKi87IH07CiAJCUIxRTU0NTlEMTM0
NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTkxMTM0NjI5
QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCAqLzsgfTsK
QEAgLTEwNDA2LDYgKzEwNDExLDExIEBACiAJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJ
bWFnZVJlc2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1h
Z2VSZXNpemVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxODI3NDky
MTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0Z1bmN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NTg4MTM0NjI5QzEwMDkyQTU0
NSAvKiBNZWRpYVN0cmVhbUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMUU1
NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NThDMTM0NjI5QzEwMDkyQTU0NSAv
KiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUIxRTU0NTg5MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NThBMTM0
NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU4RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjFFNTQ1OEUxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThGMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MzA4LDYgKzE0MzE4LDExIEBACiAJCQkJQkNFMUM0MTkwRDk4Mjk4
MDAwM0IwMkYyIC8qIExvY2F0aW9uLmggKi8sCiAJCQkJQkNFMUM0MjIwRDk4MjlGMjAwM0IwMkYy
IC8qIExvY2F0aW9uLmlkbCAqLywKIAkJCQk5MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyogTWVk
aWFDYW5TdGFydExpc3RlbmVyLmggKi8sCisJCQkJQjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtQ2xpZW50LmggKi8sCisJCQkJQjFFNTQ1OEIxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQjFFNTQ1OEMxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovLAorCQkJCUIxRTU0NTg5MTM0NjI5QzEw
MDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQjFFNTQ1
OEExMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggKi8sCiAJ
CQkJOUZGRTNFNzgxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uY3BwICovLAogCQkJCTlG
RkUzRTc5MTFCNTlDNUQwMDM3ODc0RSAvKiBNZW1vcnlJbmZvLmggKi8sCiAJCQkJOUZGRTNFN0Mx
MUI1OUM2RTAwMzc4NzRFIC8qIE1lbW9yeUluZm8uaWRsICovLApAQCAtMjI5MTMsNiArMjI5Mjgs
OSBAQAogCQkJCTIyQkQ5RjdGMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTIyQkQ5RjgxMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZl
ckRhdGFDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkzRUFFMUYxMzU2QjJGRTAwNjdBQ0Y5IC8q
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTQx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCMUU1NDU5ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCMUU1NDU5NjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU2MTIsNiArMjU2MzAsOCBAQAog
CQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjI5MkIyN0MxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTI5M0VBRTIxMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1OTcxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMUU1NDU5NTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGI2MGIzOTNjYmMwODk3
YmNiNTVkZTU2ZjcxZjE0MTA2N2QwMjM4MjAuLjc4ODFjODZlMmNkNTgyZTllYzQwOTI1OTkxYmY1
OWU4OTI2Mzk3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
ZWRpYUZlYXR1cmVOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC03MCw2ICs3MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRy
b2wuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
KyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgpAQCAtMTY3LDYgKzE2OSw5IEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSog
cGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAg
ICAgLCBtX2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCiAgICAgLCBtX2lzRGlzY29ubmVjdGVkKGZh
bHNlKQogICAgICwgbV9leGNsdWRlRnJvbVRleHRTZWFyY2goZmFsc2UpCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICAsIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6bWVkaWFTdHJlYW1FbmFibGVkKCkgPyBuZXcgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIodGhpcykgOiAwKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKHBhZ2UpOwogICAg
IEF0b21pY1N0cmluZzo6aW5pdCgpOwpAQCAtMjI3LDYgKzIzMiwxMiBAQCBGcmFtZTo6fkZyYW1l
KCkKIAogICAgIGlmIChtX2RvbVdpbmRvdykKICAgICAgICAgbV9kb21XaW5kb3ctPmRpc2Nvbm5l
Y3RGcmFtZSgpOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAobV9tZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgbV9tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ci0+ZGlzY29ubmVjdEZyYW1lKCk7CisjZW5kaWYKKwogICAgIHNjcmlwdCgpLT5jbGVhcldpbmRv
d1NoZWxsKCk7CiAKICAgICBIYXNoU2V0PERPTVdpbmRvdyo+OjppdGVyYXRvciBlbmQgPSBtX2xp
dmVGb3JtZXJXaW5kb3dzLmVuZCgpOwpAQCAtNjkyLDYgKzcwMywxMSBAQCB2b2lkIEZyYW1lOjpw
YWdlRGVzdHJveWVkKCkKICAgICAgICAgbV9kb21XaW5kb3ctPnBhZ2VEZXN0cm95ZWQoKTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChtX21lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLT5kaXNj
b25uZWN0UGFnZSgpOworI2VuZGlmCisKICAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGFzIHRv
IHdoeSB0aGlzIGlzIGNhbGxlZCBtb3JlIHRoYW4gb25jZSwgYnV0IGl0IGlzLAogICAgIC8vIHNv
IHBhZ2UoKSBjb3VsZCBiZSBOVUxMLgogICAgIGlmIChwYWdlKCkgJiYgcGFnZSgpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZEZyYW1lKCkgPT0gdGhpcykKQEAgLTc0Miw2ICs3NTgsMTAgQEAg
dm9pZCBGcmFtZTo6dHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgpCiAgICAgICAgIGlm
IChtX2RvbVdpbmRvdykKICAgICAgICAgICAgIG1fZG9tV2luZG93LT5yZXNldEdlb2xvY2F0aW9u
KCk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBpZiAobV9tZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgICAgIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXItPnRyYW5zZmVyVG9OZXdQYWdlKG5ld1BhZ2UpOworI2VuZGlmCiAgICAgICAgIG1fcGFnZSA9
IG5ld1BhZ2U7CiAKICAgICAgICAgaWYgKG5ld1BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMDU4
MDVjZjFlMmU0OGRkNDNiZWY2ZjAyYWEzYTQ2ZDJmNjkzNDBmYy4uY2NjMDM4OWNmYTAzOThiOTJm
NzI5NTM5NzBlMGU1NDg2ZGUzZWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNjQsNiArNjQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3Mg
SFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI7CiAgICAgY2xhc3MgUmVndWxhckV4cHJlc3Npb247CiAgICAgY2xhc3MgUmVuZGVyUGFydDsK
ICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKQEAgLTE5OSw2ICsyMDAsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBOU0ltYWdlKiBpbWFnZUZyb21SZWN0KE5TUmVjdCkgY29u
c3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuZ2V0KCk7IH0KKyNlbmRpZgorCiAg
ICAgLy8gPT09PT09PT0KIAogICAgIHByaXZhdGU6CkBAIC0yNjUsNiArMjcwLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fdGls
ZWRCYWNraW5nU3RvcmU7CiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
ICAgIE93blB0cjxNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcj4gbV9tZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjsKKyNlbmRpZgogICAgIH07CiAKICAgICBpbmxpbmUgdm9pZCBGcmFtZTo6aW5p
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcz
ZjI4YzM0ZTgxMjcxYzEyZjI4Mjk1NDQ3MGUyZTUyOGZkY2U3ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgTWVk
aWFTdHJlYW1DbGllbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbUNsaWVudCB7CitwdWJsaWM6CisgICAgLy8g
Tm90aWZ5IHRoZSBjbGllbnQgYWJvdXQgc2h1dHRpbmcgZG93bi4KKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFTdHJlYW1EZXN0cm95ZWQoKSA9IDA7CisKKyAgICAvLyBGSVhNRTogYWRkIGhlcmUgdGhl
IHJlcXVlc3RzIHRvIHRoZSBlbWJlZGRlci4KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtQ2xpZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1DbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMxYjA2ZGE2YmFlNDZlYWY4YTE4Mzg4MDdmOWQ4ZGNlNjI3ZmIxMTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcihNZWRpYVN0cmVhbUNsaWVudCog
Y2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9uZXh0R2xvYmFsUmVxdWVz
dElkKDEpCit7Cit9CisKK01lZGlhU3RyZWFtQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtQ29udHJv
bGxlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bWVkaWFTdHJl
YW1EZXN0cm95ZWQoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0
ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJv
bGxlcikKK3sKKyAgICBBU1NFUlQoZnJhbWVDb250cm9sbGVyKTsKKworICAgIGZvciAoUmVxdWVz
dE1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlcXVlc3RzLmJlZ2luKCk7IGl0ICE9IG1fcmVxdWVzdHMu
ZW5kKCk7ICkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5mcmFtZUNvbnRyb2xsZXIoKSA9PSBm
cmFtZUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGl0KTsKKyAg
ICAgICAgICAgIGl0ID0gbV9yZXF1ZXN0cy5iZWdpbigpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICsraXQ7CisgICAgfQorfQorCitpbnQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdp
c3RlclJlcXVlc3QoaW50IGxvY2FsSWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hZGQobV9uZXh0R2xvYmFsUmVxdWVzdElk
LCBSZXF1ZXN0KGxvY2FsSWQsIGZyYW1lQ29udHJvbGxlcikpOworICAgIHJldHVybiBtX25leHRH
bG9iYWxSZXF1ZXN0SWQrKzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MzkyMDBlOWRhM2QzNjc3ODJiMzliYmNkZDRmNDBh
YmYzOGNkNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TWVkaWFTdHJlYW1Db250cm9sbGVyX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1Db250cm9sbGVyX2gK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYVN0cmVhbUNsaWVudDsKK2NsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOworCitjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1lZGlhU3RyZWFtQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgTWVkaWFTdHJl
YW1Db250cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50Kik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJl
YW1Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBSZXF1ZXN0
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJlcXVlc3QoKQorICAgICAgICAgICAgOiBtX2xvY2Fs
SWQoMCkKKyAgICAgICAgICAgICwgbV9mcmFtZUNvbnRyb2xsZXIoMCkgeyB9CisKKyAgICAgICAg
UmVxdWVzdChpbnQgbG9jYWxJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29u
dHJvbGxlcikKKyAgICAgICAgICAgIDogbV9sb2NhbElkKGxvY2FsSWQpCisgICAgICAgICAgICAs
IG1fZnJhbWVDb250cm9sbGVyKGZyYW1lQ29udHJvbGxlcikgeyB9CisKKyAgICAgICAgaW50IGxv
Y2FsSWQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsSWQ7IH0KKyAgICAgICAgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVD
b250cm9sbGVyOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9sb2NhbElkOworICAg
ICAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogbV9mcmFtZUNvbnRyb2xsZXI7CisgICAg
fTsKKworICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsUmVxdWVzdElkLCBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciopOworCisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVz
dD4gUmVxdWVzdE1hcDsKKworICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0czsKKworICAgIE1lZGlh
U3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBpbnQgbV9uZXh0R2xvYmFsUmVxdWVzdElkOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM3NTIxMmUyMGU2NzNlZWIxNzUzZmNlZWI0MDkzZjQwYTdlYzg5ZTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJO
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgfQorCisgICAgdmlydHVhbCB+UmVxdWVzdCgp
IHsgfQorCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0dlbmVyYXRlU3RyZWFtUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzUmVjb3JkZWREYXRhUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CisKK3ByaXZhdGU6Cisg
ICAgLy8gVGhpcyBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdGhlIGRvY3VtZW50IHJlZmVy
ZW5jZWQgYnkgdGhlIGZyYW1lLiBJdCB3aWxsCisgICAgLy8gcmVtYWluIGFsaXZlIGFuZCB2YWxp
ZCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIGZyYW1lIGlzLCBhYm9ydGluZyBhbGwgcmVxdWVzdHMK
KyAgICAvLyB3aGVuIHJlY2VpdmluZyBkaXNjb25uZWN0RnJhbWUuIEl0cyBwdXJwb3NlIGlzIHRv
IGFsbG93IGFzeW5jIHJlcXVlc3QKKyAgICAvLyBhYm9ydGlvbnMgdG8gYmUgcHJvcGVybHkgc2No
ZWR1bGVkIHRvIGNvbXBseSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIC8vIE5vdGUgdGhh
dCBpZiBhbnkgY2FsbGJhY2sgaXMgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIGFib3J0aW5nIHRoZSBy
ZXF1ZXN0CisgICAgLy8gaXQgd2lsbCB1c2UgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgd2FzIGRl
ZmluZWQsIG5vdCBuZWNlc3NhcmlseSB0aGlzIG9uZS4KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9OworCit2b2lkIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjphYm9ydChpbnQgcmVxdWVzdElkKQoreworICAgIEFT
U0VSVChjb250YWlucyhyZXF1ZXN0SWQpKTsKKyAgICBnZXQocmVxdWVzdElkKS0+YWJvcnQoKTsK
KyAgICByZW1vdmUocmVxdWVzdElkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6UmVxdWVzdE1hcDo6YWJvcnRBbGwoKQoreworICAgIGZvciAoaXRlcmF0b3IgaXQgPSBi
ZWdpbigpOyBpdCAhPSBlbmQoKTsgaXQgPSBiZWdpbigpKSB7CisgICAgICAgIGl0LT5zZWNvbmQt
PmFib3J0KCk7CisgICAgICAgIHJlbW92ZShpdCk7CisgICAgfQorfQorCitNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQor
ICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAsIG1faXNJbkRldGFjaGVkU3RhdGUoZmFsc2UpCit7
Cit9CisKK01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjp+TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIoKQoreworfQorCitTZWN1cml0eU9yaWdpbiogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZSA/IG1fZnJh
bWUtPmV4aXN0aW5nRE9NV2luZG93KCktPnNlY3VyaXR5T3JpZ2luKCkgOiAwOworfQorCitTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5l
eGlzdGluZ0RPTVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgOiAwOworfQorCitN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIqIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpwYWdlQ29u
dHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzSW5EZXRhY2hlZFN0YXRlICYmIG1f
ZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5tZWRpYVN0cmVhbUNv
bnRyb2xsZXIoKSA6IDA7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmVu
dGVyRGV0YWNoZWRTdGF0ZSgpCit7CisgICAgaWYgKG1faXNJbkRldGFjaGVkU3RhdGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcmVxdWVzdHMuYWJvcnRBbGwoKTsKKyAgICBtX2lzSW5EZXRh
Y2hlZFN0YXRlID0gdHJ1ZTsKK30KKworLy8gQ2FsbGVkIGFsc28gb24gZnJhbWUgZGV0YWNobWVu
dCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFnZSBjb250cm9sbGVyIHdpbGwgcmVtYWluIGFsaXZlLgor
dm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdFBhZ2UoKQoreworICAg
IGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT51bnJlZ2lz
dGVyRnJhbWVDb250cm9sbGVyKHRoaXMpOworCisgICAgZW50ZXJEZXRhY2hlZFN0YXRlKCk7Cit9
CisKKy8vIENhbGxlZCB3aGVuIHRoZSBmcmFtZSBpcyBiZWluZyBkZXN0cm95ZWQuCit2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIG1fcmVx
dWVzdHMuYWJvcnRBbGwoKTsKKworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBw
YWdlQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKHRoaXMpOworCisgICAg
bV9mcmFtZSA9IDA7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnRyYW5z
ZmVyVG9OZXdQYWdlKFBhZ2UqKQoreworICAgIC8vIEZJWE1FOiBpbiB0aGUgZnV0dXJlIHdlIHNo
b3VsZCBrZWVwIHJ1bm5pbmcgdGhlIG1lZGlhIHN0cmVhbSBzZXJ2aWNlcyB3aGlsZSB0cmFuc2Zl
cmluZyBmcmFtZXMuCisgICAgLy8gSG93ZXZlciwgdW50aWwgYSBwcm9wZXIgd2F5IHRvIGRvIHRo
aXMgaXMgZGVjaWRlZCwgd2UncmUgc2h1dHRpbmcgZG93biBzZXJ2aWNlcy4KKyAgICBpZiAocGFn
ZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZyYW1l
Q29udHJvbGxlcih0aGlzKTsKKworICAgIGVudGVyRGV0YWNoZWRTdGF0ZSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0ZGU3MDM5NTNhZTg5ZTU5ZGRkNGIzY2M5NTUzNTFkNzIyYTlmM2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBGcmFtZTsKK2NsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjsKK2NsYXNzIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CitjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2s7CitjbGFzcyBQYWdlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
K2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIp
OworcHVibGljOgorICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7CisgICAg
dmlydHVhbCB+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsKKworICAgIFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIHZvaWQgZGlzY29ubmVjdFBh
Z2UoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAgIHZvaWQgdHJhbnNmZXJUb05l
d1BhZ2UoUGFnZSopOworCitwcml2YXRlOgorICAgIGNsYXNzIFJlcXVlc3Q7CisKKyAgICBjbGFz
cyBJZEdlbmVyYXRvciB7CisgICAgcHVibGljOgorICAgICAgICBJZEdlbmVyYXRvcigpIDogbV9p
ZCgwKSB7IH0KKyAgICAgICAgaW50IGdldE5leHRJZCgpIHsgcmV0dXJuICsrbV9pZDsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1faWQ7CisgICAgfTsKKworICAgIGNsYXNzIFJlcXVl
c3RNYXAgOiBwdWJsaWMgSWRHZW5lcmF0b3IsIHB1YmxpYyBIYXNoTWFwPGludCwgUmVmUHRyPFJl
cXVlc3Q+ID4geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBhYm9ydChpbnQgcmVxdWVzdElk
KTsKKyAgICAgICAgdm9pZCBhYm9ydEFsbCgpOworICAgIH07CisKKyAgICAvLyBEZXRhY2hlZCBm
cm9tIGEgcGFnZSwgYW5kIGhlbmNlIGZyb20gYSBlbWJlZGRlciBjbGllbnQuCisgICAgdm9pZCBl
bnRlckRldGFjaGVkU3RhdGUoKTsKKyAgICBNZWRpYVN0cmVhbUNvbnRyb2xsZXIqIHBhZ2VDb250
cm9sbGVyKCkgY29uc3Q7CisKKyAgICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHM7CisKKyAgICBGcmFt
ZSogbV9mcmFtZTsKKyAgICBib29sIG1faXNJbkRldGFjaGVkU3RhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5k
aWYgLy8gTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
MTg2M2IwMjU3MTRhNTc5ZjQxZjgzOGIwZDIzN2EzMGJjMGQzNWM0ZC4uOWQ5Njk5ZjhjMmRkMGY3
NTI1ZTc4MmM2YTlmNGNjYjRlYWEyZTI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01MCw2ICs1
MCw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQ2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIu
aCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTEzNiw2ICsxMzgsOSBAQCBQYWdlOjpQYWdl
KGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fZGV2aWNlTW90aW9uQ29u
dHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25FbmFibGVkKCkgPyBu
ZXcgRGV2aWNlTW90aW9uQ29udHJvbGxlcihwYWdlQ2xpZW50cy5kZXZpY2VNb3Rpb25DbGllbnQp
IDogMCkKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpID8gbmV3IERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcih0aGlzLCBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkg
OiAwKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fbWVkaWFTdHJl
YW1Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5hYmxlZCgp
ID8gbmV3IE1lZGlhU3RyZWFtQ29udHJvbGxlcihwYWdlQ2xpZW50cy5tZWRpYVN0cmVhbUNsaWVu
dCkgOiAwKQorI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAsIG1fc3BlZWNo
SW5wdXRDbGllbnQocGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQpCiAjZW5kaWYKQEAgLTk1
MCw2ICs5NTUsNyBAQCBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAgICwgZGV2
aWNlTW90aW9uQ2xpZW50KDApCiAgICAgLCBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgwKQogICAg
ICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKKyAgICAsIG1lZGlhU3RyZWFtQ2xpZW50KDApCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggYWM0YzE2MDRiZGM5Mjc4YjhlOWY5YmQ0MmJiMjQ3NzI2OTM2
NjU0Yy4uZjBmMGZiOWVhZTM4MTRlNDYyNmY4ZjU5YzYxNTcwYTM4YmM5ZDczMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTY2LDYgKzY2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElu
c3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogICAgIGNsYXNz
IE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKKyAgICBjbGFzcyBNZWRpYVN0cmVhbUNsaWVudDsKKyAg
ICBjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFz
cyBQYWdlR3JvdXA7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKQEAgLTExOCw2ICsxMjAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCog
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiAgICAgICAgICAgICBSZWZQdHI8QmFja0ZvcndhcmRM
aXN0PiBiYWNrRm9yd2FyZENsaWVudDsKICAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBz
cGVlY2hJbnB1dENsaWVudDsKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtQ2xpZW50KiBtZWRpYVN0
cmVhbUNsaWVudDsKICAgICAgICAgfTsKIAogICAgICAgICBQYWdlKGNvbnN0IFBhZ2VDbGllbnRz
Jik7CkBAIC0xODMsNiArMTg2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEZXZp
Y2VNb3Rpb25Db250cm9sbGVyKiBkZXZpY2VNb3Rpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyLmdldCgpOyB9CiAgICAgICAgIERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlciogZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE1lZGlhU3RyZWFtQ29udHJvbGxlciogbWVk
aWFTdHJlYW1Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUNvbnRyb2xs
ZXIuZ2V0KCk7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIFNw
ZWVjaElucHV0KiBzcGVlY2hJbnB1dCgpOwogI2VuZGlmCkBAIC0zMzksNiArMzQ1LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4g
bV9kZXZpY2VNb3Rpb25Db250cm9sbGVyOwogICAgICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyPiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE93blB0cjxNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI+IG1fbWVkaWFTdHJlYW1Db250cm9sbGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAg
ICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89624</attachid>
            <date>2011-04-14 12:26:51 -0700</date>
            <delta_ts>2011-05-03 06:55:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110414202649.patch</filename>
            <type>text/plain</type>
            <size>36146</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDBhYWI2NThlOGIyMWY5NDdhNWQ1ZjA4OTFjYTk3ZTRlMTJlYmRmNTEu
LjM1Y2MxNTE1MTUxMmU2NzgwZjE2NDYzZTVhZjA2MzA2M2E1MWE2MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtNDM2LDYgKzQzNiw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCXBhZ2UvR3JvdXBTZXR0aW5ncy5jcHAgXAogCXBhZ2UvSGlzdG9yeS5jcHAgXAogCXBhZ2Uv
TG9jYXRpb24uY3BwIFwKKwlwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorCXBhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIFwKIAlwYWdlL01vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuY3BwIFwKIAlwYWdlL05hdmlnYXRvci5jcHAgXAogCXBhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2YmRhMmU3MTQ0MjM5MGM0NWQxMDUw
NGQyN2JiZTdlZmNjOTlkY2I2Li4wMzJkYWY4N2NlMmE5MmZiMGE3MTA3M2I4ZGM4Zjc2NDkyMjgz
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk1OSw2ICsxOTU5LDggQEAgRU5ESUYgKCkK
IElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKyAgICAgICAgcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuY3BwCiAgICAgKQogCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklM
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhMjc4YWRmZWRiOGZjZTVkODc0MmNmMDk1YmRkNWFiYmE2YzFhZjli
Li5mOGUwNDQ0NDdjY2EwNTljOTk4MTgzNTM3NGEyYTg1M2ZhMWUxMWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTEtMDQtMTQgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1lZGlhIFN0cmVhbSBBUEk6IGFkZCB0aGUgc2tlbGV0b24gb2YgdGhlIGZy
YW1lIGFuZCBwYWdlIGNvbnRyb2xsZXJzIGFuZCB0aGUgZW1iZWRkZXIgY2xpZW50LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY5MjIKKworICAgICAg
ICBBZGQgdGhlIGJhc2ljIG91dGxpbmVzIG9mIHRoZSBwYWdlIGNvbnRyb2xsZXIsIHRoZSBwZXIt
ZnJhbWUgY29udHJvbGxlciBhbmQgdGhlIGVtYmVkZGVyCisgICAgICAgIGNsaWVudCBpbnRlcmZh
Y2UgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJLiBQcm92aWRlIG1ldGhvZHMgdG8gaGFuZGxlIHRo
ZSBzaXR1YXRpb25zCisgICAgICAgIHdoZXJlIGEgZnJhbWUgaXMgZGV0YWNoZWQgZnJvbSB0aGUg
cGFnZSBvciB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHBhZ2VzLgorCisgICAgICAgIFRlc3RzIGZvciB0
aGUgTWVkaWEgU3RyZWFtIEFQSSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBidWcgNTY1ODcuCisK
KyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpw
YWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp0cmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2Uv
TWVkaWFTdHJlYW1DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNsaWVudDo6fk1lZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250
cm9sbGVyOjpSZXF1ZXN0OjpSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6UmVxdWVzdDo6bG9jYWxJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmZyYW1lQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUNvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVy
RnJhbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6cmVnaXN0ZXJSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdDo6UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6UmVxdWVzdDo6flJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmlzR2Vu
ZXJhdGVTdHJlYW1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpSZXF1ZXN0Ojppc1JlY29yZGVkRGF0YVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3RNYXA6OmFib3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0TWFwOjph
Ym9ydEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c2VjdXJpdHlPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OnBhZ2VDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnRyYW5zZmVyVG9OZXdQYWdlKToK
KyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVN0cmVhbUNvbnRy
b2xsZXIpOgorCiAyMDExLTA0LTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCBiYzZjNzUyMGRmYzIyNzBjNzYxMWE4ODMyMDcxN2RiMzIyZDk5NjE4
Li41YWM4MjUxMzU4N2I3YjUwOTRmODFiNmE4OGUzZWM5ZTg2NzJlZjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIyMTAsNiArMjIxMCwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDYW5TdGFydExp
c3RlbmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01l
bW9yeUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNjk0ZjI4ZmEyYTZkYzg2ZjVmNDgzMTQ1OGYyMmY2OGVmMzg4NWI5Yy4u
MzNkNzZhYTJkOGRlM2UxY2ZkNTk2NjVkZGZmNWI1MTQ2OGRmZGM2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMzQ1Niw2ICszNDU2LDExIEBACiAgICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJl
c3VsdC5oJywKICAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAnLAog
ICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmgnLAorICAgICAgICAgICAg
J3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCcsCisgICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxl
ci5oJywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oJywKICAgICAg
ICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL1N1
c3BlbmRhYmxlVGltZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Vc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTVhOWU2MTkyYzE5NGY0NDBlNjcxZjExZDA2NjMw
NjUzNWJhMGJiNS4uMDVmMjYwOTZkOTdhZTZiNjhmZDdjMjE5MTliNDFkZDVhNzI1OWJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTMxMzcsMTAgKzMxMzcsMTcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0dFT0xPQ0FUSU9OPTEpIHsKIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NU
UkVBTT0xKSB7CiAgICAgSEVBREVSUyArPSBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGll
bnQuaCBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggXAorICAgICAgICBw
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggXAogICAgICAgICBwYWdlL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaCBcCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrLmgKIAorICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJv
bGxlci5jcHAgXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAor
CiAgICAgdjggewogICAgICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMDZjNDE5ZTI1MGYwMjllMWFjMTExZjAxYTI0OWMy
NjIzM2I0YWY4MS4uZDRlMzA4MjJhY2RmYzMyZjg3ZjQ1NDY4ZTM0MGNlYmM5OTU0MWI3MyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI1MDI2
LDYgKzI1MDI2LDI2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1DbGllbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFn
ZVxNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiM2MwNTMxM2M2ZGZlYTIwN2RiNGZlZjYy
MmZkYTgzYWVkMTJhMzg0Li45MzU5ZDg3MjhjYWExNThmMDQ5YjlmY2ZmZDc3Yjg5ZTFjMjEwM2Nm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00MTA5LDYgKzQxMDksMTEgQEAKIAkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8q
IEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVh
ZC5oICovOyB9OwogCQlCMTgyNzQ5MzEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTgy
NzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi87IH07CiAJCUIx
RDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUQ1RUNCNDEzNEI1OERBMDA4N0M3
OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OworCQlCMUU1NDU5NDEzNDYyOUMxMDA5MkE1
NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxRTU0NTg4MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNs
aWVudC5oICovOyB9OworCQlCMUU1NDU5NzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1D
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIxRTU0NThCMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3Bw
ICovOyB9OworCQlCMUU1NDU5ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1
NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi87IH07CisJ
CUIxRTU0NTk1MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4
OTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwICovOyB9
OworCQlCMUU1NDU5NjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0
NThBMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oICovOyB9
OwogCQlCMUU1NDU5OTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThE
MTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oICovOyB9OwogCQlC
MUU1NDU5QjEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1
OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAq
LzsgfTsKIAkJQjFFNTQ1OUQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1
Y2Nlc3NDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjFFNTQ1OTExMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjay5oICovOyB9OwpAQCAtMTA0MDYsNiArMTA0MTEsMTEgQEAKIAkJQjAxNDlFN0Mx
MUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRDVFQ0I0MTM0QjU4REEwMDg3
Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFF
NTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUIxRTU0NThCMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFT
dHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1
OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0
NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU4RTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2
MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQzMDgsNiArMTQzMTgsMTEgQEAK
IAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCAqLywKIAkJCQlCQ0Ux
QzQyMjBEOTgyOUYyMDAzQjAyRjIgLyogTG9jYXRpb24uaWRsICovLAogCQkJCTkzMUJDQzYwMTEy
NERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLywKKwkJCQlCMUU1NDU4
ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLywKKwkJCQlCMUU1NDU4
QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKKwkJCQlC
MUU1NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi8sCisJ
CQkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcCAqLywKKwkJCQlCMUU1NDU4QTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuaCAqLywKIAkJCQk5RkZFM0U3ODExQjU5QzVEMDAzNzg3NEUgLyogTWVtb3J5
SW5mby5jcHAgKi8sCiAJCQkJOUZGRTNFNzkxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8u
aCAqLywKIAkJCQk5RkZFM0U3QzExQjU5QzZFMDAzNzg3NEUgLyogTWVtb3J5SW5mby5pZGwgKi8s
CkBAIC0yMjkxMyw2ICsyMjkyOCw5IEBACiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8q
IFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjJCRDlGN0YxMzUzNjI1QzAwOUJEMTAy
IC8qIEltYWdlQnVmZmVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjJCRDlGODExMzUzNjRG
RTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUU1
NDU5NDEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUIxRTU0NTk4MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUIxRTU0NTk2MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTYxMiw2ICsyNTYzMCw4
IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMjkyQjI3QzEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkzRUFFMjExMzU2QjMyRTAwNjdBQ0Y5IC8qIFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUU1NDU5NzEz
NDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUIxRTU0NTk1MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjYwYjM5M2Ni
YzA4OTdiY2I1NWRlNTZmNzFmMTQxMDY3ZDAyMzgyMC4uNzg4MWM4NmUyY2Q1ODJlOWVjNDA5MjU5
OTFiZjU5ZTg5MjYzOTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTcwLDYgKzcxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0
Q29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCkBAIC0xNjcsNiArMTY5LDkgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQ
YWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2Fk
ZXIKICAgICAsIG1faW5WaWV3U291cmNlTW9kZShmYWxzZSkKICAgICAsIG1faXNEaXNjb25uZWN0
ZWQoZmFsc2UpCiAgICAgLCBtX2V4Y2x1ZGVGcm9tVGV4dFNlYXJjaChmYWxzZSkKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorICAgICwgbV9tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcihSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYVN0cmVhbUVuYWJsZWQoKSA/IG5ldyBNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcih0aGlzKSA6IDApCisjZW5kaWYKIHsKICAgICBBU1NFUlQocGFnZSk7
CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CkBAIC0yMjcsNiArMjMyLDEyIEBAIEZyYW1lOjp+
RnJhbWUoKQogCiAgICAgaWYgKG1fZG9tV2luZG93KQogICAgICAgICBtX2RvbVdpbmRvdy0+ZGlz
Y29ubmVjdEZyYW1lKCk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChtX21l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLT5kaXNjb25uZWN0RnJhbWUoKTsKKyNlbmRpZgorCiAgICAgc2NyaXB0KCktPmNsZWFy
V2luZG93U2hlbGwoKTsKIAogICAgIEhhc2hTZXQ8RE9NV2luZG93Kj46Oml0ZXJhdG9yIGVuZCA9
IG1fbGl2ZUZvcm1lcldpbmRvd3MuZW5kKCk7CkBAIC02OTIsNiArNzAzLDExIEBAIHZvaWQgRnJh
bWU6OnBhZ2VEZXN0cm95ZWQoKQogICAgICAgICBtX2RvbVdpbmRvdy0+cGFnZURlc3Ryb3llZCgp
OwogICAgIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1fbWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIt
PmRpc2Nvbm5lY3RQYWdlKCk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIg
YXMgdG8gd2h5IHRoaXMgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLCBidXQgaXQgaXMsCiAgICAg
Ly8gc28gcGFnZSgpIGNvdWxkIGJlIE5VTEwuCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSB0aGlzKQpAQCAtNzQyLDYgKzc1OCwx
MCBAQCB2b2lkIEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKICAgICAg
ICAgaWYgKG1fZG9tV2luZG93KQogICAgICAgICAgICAgbV9kb21XaW5kb3ctPnJlc2V0R2VvbG9j
YXRpb24oKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIGlmIChtX21lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgbV9tZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlci0+dHJhbnNmZXJUb05ld1BhZ2UobmV3UGFnZSk7CisjZW5kaWYKICAgICAgICAgbV9w
YWdlID0gbmV3UGFnZTsKIAogICAgICAgICBpZiAobmV3UGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRl
eCAwNTgwNWNmMWUyZTQ4ZGQ0M2JlZjZmMDJhYTNhNDZkMmY2OTM0MGZjLi5jY2MwMzg5Y2ZhMDM5
OGI5MmY3Mjk1Mzk3MGUwZTU0ODZkZTNlZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC02NCw2ICs2
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBj
bGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKKyAgICBjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjsKICAgICBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjsKICAgICBjbGFzcyBSZW5kZXJQ
YXJ0OwogICAgIGNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwpAQCAtMTk5LDYgKzIwMCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0
KSBjb25zdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlm
CisKICAgICAvLyA9PT09PT09PQogCiAgICAgcHJpdmF0ZToKQEAgLTI2NSw2ICsyNzAsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4g
bV90aWxlZEJhY2tpbmdTdG9yZTsKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICAgICAgT3duUHRyPE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyPiBtX21lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOworI2VuZGlmCiAgICAgfTsKIAogICAgIGlubGluZSB2b2lkIEZyYW1l
Ojppbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NzNmMjhjMzRlODEyNzFjMTJmMjgyOTU0NDcwZTJlNTI4ZmRjZTdkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DbGllbnRfaAorI2RlZmlu
ZSBNZWRpYVN0cmVhbUNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICAvLyBOb3RpZnkgdGhlIGNsaWVudCBhYm91dCBzaHV0dGluZyBkb3duLgorICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVN0cmVhbURlc3Ryb3llZCgpID0gMDsKKworICAgIC8vIEZJWE1FOiBhZGQgaGVy
ZSB0aGUgcmVxdWVzdHMgdG8gdGhlIGVtYmVkZGVyLgorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB+TWVkaWFTdHJlYW1DbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVh
bUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTIxNjFiMGVmY2Q4OWQ4YjhlNzIwMzY0M2Y4OTQxMWE5N2Q0MTQxMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DbGllbnQuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OlJlcXVl
c3QgeworcHVibGljOgorICAgIFJlcXVlc3QoKQorICAgICAgICA6IG1fbG9jYWxJZCgwKQorICAg
ICAgICAsIG1fZnJhbWVDb250cm9sbGVyKDApIHsgfQorCisgICAgUmVxdWVzdChpbnQgbG9jYWxJ
ZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAg
OiBtX2xvY2FsSWQobG9jYWxJZCkKKyAgICAgICAgLCBtX2ZyYW1lQ29udHJvbGxlcihmcmFtZUNv
bnRyb2xsZXIpIHsgfQorCisgICAgaW50IGxvY2FsSWQoKSBjb25zdCB7IHJldHVybiBtX2xvY2Fs
SWQ7IH0KKyAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZUNvbnRyb2xsZXI7IH0KKworcHJpdmF0ZToKKyAgICBpbnQg
bV9sb2NhbElkOworICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBtX2ZyYW1lQ29udHJv
bGxlcjsKK307CisKK01lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVy
KE1lZGlhU3RyZWFtQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAg
LCBtX25leHRHbG9iYWxSZXF1ZXN0SWQoMSkKK3sKK30KKworTWVkaWFTdHJlYW1Db250cm9sbGVy
Ojp+TWVkaWFTdHJlYW1Db250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT5tZWRpYVN0cmVhbURlc3Ryb3llZCgpOworfQorCit2b2lkIE1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciogZnJhbWVDb250cm9sbGVyKQoreworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xsZXIp
OworCisgICAgLy8gRG9uZSBpbiB0d28gc3RlcHMgdG8gYXZvaWQgcHJvYmxlbXMgYWJvdXQgaXRl
cmF0b3JzIGJlaW5nIGludmFsaWRhdGVkIHdoaWxlIHJlbW92aW5nLgorICAgIFZlY3RvcjxpbnQ+
IGZyYW1lUmVxdWVzdHM7CisgICAgZm9yIChSZXF1ZXN0TWFwOjppdGVyYXRvciBpdCA9IG1fcmVx
dWVzdHMuYmVnaW4oKTsgaXQgIT0gbV9yZXF1ZXN0cy5lbmQoKTsgKytpdCkKKyAgICAgICAgaWYg
KGl0LT5zZWNvbmQuZnJhbWVDb250cm9sbGVyKCkgPT0gZnJhbWVDb250cm9sbGVyKQorICAgICAg
ICAgICAgZnJhbWVSZXF1ZXN0cy5hcHBlbmQoaXQtPmZpcnN0KTsKKworICAgIGZvciAoVmVjdG9y
PGludD46Oml0ZXJhdG9yIGl0ID0gZnJhbWVSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBmcmFtZVJl
cXVlc3RzLmVuZCgpOyArK2l0KQorICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZSgqaXQpOworfQor
CitpbnQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsSWQs
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIpCit7CisgICAgbV9y
ZXF1ZXN0cy5hZGQobV9uZXh0R2xvYmFsUmVxdWVzdElkLCBSZXF1ZXN0KGxvY2FsSWQsIGZyYW1l
Q29udHJvbGxlcikpOworICAgIHJldHVybiBtX25leHRHbG9iYWxSZXF1ZXN0SWQrKzsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3YjljNjQ0M2IxYTIwNWI3ZmM3MWUyOTE0ZjIwNjljZDIxODI4NDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1Db250cm9sbGVyX2gK
KyNkZWZpbmUgTWVkaWFTdHJlYW1Db250cm9sbGVyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbUNs
aWVudDsKK2NsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOworCitjbGFzcyBNZWRpYVN0
cmVhbUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtQ29u
dHJvbGxlcik7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFt
Q2xpZW50Kik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Db250cm9sbGVyKCk7CisKKyAgICB2
b2lkIHVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIq
KTsKKworcHJpdmF0ZToKKyAgICBpbnQgcmVnaXN0ZXJSZXF1ZXN0KGludCBsb2NhbFJlcXVlc3RJ
ZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKKworICAgIGNsYXNzIFJlcXVlc3Q7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVzdD4gUmVxdWVzdE1hcDsKKworICAgIFJlcXVl
c3RNYXAgbV9yZXF1ZXN0czsKKworICAgIE1lZGlhU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKKyAg
ICBpbnQgbV9uZXh0R2xvYmFsUmVxdWVzdElkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3Ry
ZWFtQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwY2EzNTA2YmUwNWEwOGJjNWEwMjg5Nzll
MmY3NzE4NTJiMGQwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50
ZWQ8UmVxdWVzdD4geworcHVibGljOgorICAgIFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyB9CisKKyAgICB2aXJ0dWFsIH5SZXF1ZXN0
KCkgeyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgdmly
dHVhbCBib29sIGlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWNvcmRlZERhdGFSZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKKworcHJpdmF0ZToK
KyAgICAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSB0aGUgbGlmZXRpbWUgb2YgdGhlIEZy
YW1lLCBhbmQgaXQncyBvbmx5IHVzZWQgdG8gbWFrZQorICAgIC8vIHRoZSBjYWxsYmFjayBhc3lu
Y2hyb25vdXMuIFRoZSBvcmlnaW5hbCBjYWxsYmFjayBjb250ZXh0IGlzIHVzZWQgaW4gdGhlIGNh
bGwuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OworfTsKKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJv
cnQoaW50IHJlcXVlc3RJZCkKK3sKKyAgICBnZXQocmVxdWVzdElkKS0+YWJvcnQoKTsKKyAgICBy
ZW1vdmUocmVxdWVzdElkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdE1hcDo6YWJvcnRBbGwoKQoreworICAgIHdoaWxlICghaXNFbXB0eSgpKSB7CisgICAg
ICAgIGJlZ2luKCktPnNlY29uZC0+YWJvcnQoKTsKKyAgICAgICAgcmVtb3ZlKGJlZ2luKCkpOwor
ICAgIH0KK30KKworTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2lz
SW5EZXRhY2hlZFN0YXRlKGZhbHNlKQoreworfQorCitNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6fk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkKK3sKK30KKworU2VjdXJpdHlPcmlnaW4q
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLT5zZWN1cml0
eU9yaWdpbigpIDogMDsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIDogMDsKK30KKworTWVkaWFTdHJlYW1Db250cm9sbGVyKiBNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9pc0luRGV0YWNoZWRTdGF0ZSAmJiBtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSA/IG1fZnJh
bWUtPnBhZ2UoKS0+bWVkaWFTdHJlYW1Db250cm9sbGVyKCkgOiAwOworfQorCit2b2lkIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUoKQoreworICAgIGlmICht
X2lzSW5EZXRhY2hlZFN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlcXVlc3RzLmFi
b3J0QWxsKCk7CisgICAgbV9pc0luRGV0YWNoZWRTdGF0ZSA9IHRydWU7Cit9CisKKy8vIENhbGxl
ZCBhbHNvIHdoZW4gdGhlIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2UsIGluIHdoaWNo
IGNhc2UgdGhlIHBhZ2UgY29udHJvbGxlciB3aWxsIHJlbWFpbiBhbGl2ZS4KK3ZvaWQgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdlKCkKK3sKKyAgICBpZiAocGFnZUNv
bnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZyYW1lQ29u
dHJvbGxlcih0aGlzKTsKKworICAgIGVudGVyRGV0YWNoZWRTdGF0ZSgpOworfQorCisvLyBDYWxs
ZWQgd2hlbiB0aGUgZnJhbWUgaXMgYmVpbmcgZGVzdHJveWVkLiBTaW5jZSB0aGUgZnJhbWUgY29u
dHJvbGxlciBpcyBvd25lZCBieSB0aGUgZnJhbWUgaXQgd2lsbCBkaWUgc2hvcnRseSBhZnRlciB0
aGlzLgordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyYW1lKCkK
K3sKKyAgICBkaXNjb25uZWN0UGFnZSgpOworCisgICAgQVNTRVJUKG1fcmVxdWVzdHMuaXNFbXB0
eSgpKTsKKworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjp0cmFuc2ZlclRvTmV3UGFnZShQYWdlKikKK3sKKyAgICAvLyBGSVhNRTogaW4gdGhl
IGZ1dHVyZSB3ZSBzaG91bGQga2VlcCBydW5uaW5nIHRoZSBtZWRpYSBzdHJlYW0gc2VydmljZXMg
d2hpbGUgdHJhbnNmZXJpbmcgZnJhbWVzLgorICAgIC8vIEhvd2V2ZXIsIHVudGlsIGEgcHJvcGVy
IHdheSB0byBkbyB0aGlzIGlzIGRlY2lkZWQsIHdlJ3JlIHNodXR0aW5nIGRvd24gc2VydmljZXMu
CisgICAgZGlzY29ubmVjdFBhZ2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWVkZjk3MTI4NmRiODRh
ODJkMWMyNjg1YTcyY2JhNjhhNDQxNzU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXJfaAorI2RlZmlu
ZSBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI7CitjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrOworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOworY2xhc3MgUGFn
ZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsK
KworY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcihGcmFtZSopOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKCk7CisKKyAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCk7CisgICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKTsKKyAgICB2b2lkIHRyYW5zZmVyVG9OZXdQYWdlKFBhZ2UqKTsKKworcHJpdmF0
ZToKKyAgICBjbGFzcyBSZXF1ZXN0OworCisgICAgY2xhc3MgUmVxdWVzdE1hcCA6IHB1YmxpYyBI
YXNoTWFwPGludCwgUmVmUHRyPFJlcXVlc3Q+ID4geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9p
ZCBhYm9ydChpbnQgcmVxdWVzdElkKTsKKyAgICAgICAgdm9pZCBhYm9ydEFsbCgpOworICAgIH07
CisKKyAgICAvLyBEZXRhY2hlZCBmcm9tIGEgcGFnZSwgYW5kIGhlbmNlIGZyb20gYSBlbWJlZGRl
ciBjbGllbnQuCisgICAgdm9pZCBlbnRlckRldGFjaGVkU3RhdGUoKTsKKworICAgIE1lZGlhU3Ry
ZWFtQ29udHJvbGxlciogcGFnZUNvbnRyb2xsZXIoKSBjb25zdDsKKworICAgIFJlcXVlc3RNYXAg
bV9yZXF1ZXN0czsKKworICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIGJvb2wgbV9pc0luRGV0YWNo
ZWRTdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCAxODYzYjAyNTcxNGE1NzlmNDFmODM4YjBkMjM3YTMwYmMw
ZDM1YzRkLi45ZDk2OTlmOGMyZGQwZjc1MjVlNzgyYzZhOWY0Y2NiNGVhYTJlMjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTUwLDYgKzUwLDggQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFy
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DbGllbnQuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRl
ICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTM2
LDYgKzEzOCw5IEBAIFBhZ2U6OlBhZ2UoY29uc3QgUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQog
ICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRl
dmljZU1vdGlvbkVuYWJsZWQoKSA/IG5ldyBEZXZpY2VNb3Rpb25Db250cm9sbGVyKHBhZ2VDbGll
bnRzLmRldmljZU1vdGlvbkNsaWVudCkgOiAwKQogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVk
KCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KSA6IDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgICwgbV9tZWRpYVN0cmVhbUNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6bWVkaWFTdHJlYW1FbmFibGVkKCkgPyBuZXcgTWVkaWFTdHJlYW1Db250cm9sbGVyKHBhZ2VD
bGllbnRzLm1lZGlhU3RyZWFtQ2xpZW50KSA6IDApCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1
dENsaWVudCkKICNlbmRpZgpAQCAtOTUwLDYgKzk1NSw3IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQ
YWdlQ2xpZW50cygpCiAgICAgLCBkZXZpY2VNb3Rpb25DbGllbnQoMCkKICAgICAsIGRldmljZU9y
aWVudGF0aW9uQ2xpZW50KDApCiAgICAgLCBzcGVlY2hJbnB1dENsaWVudCgwKQorICAgICwgbWVk
aWFTdHJlYW1DbGllbnQoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBhYzRjMTYwNGJkYzky
NzhiOGU5ZjliZDQyYmIyNDc3MjY5MzY2NTRjLi5mMGYwZmI5ZWFlMzgxNGU0NjI2ZjhmNTljNjE1
NzBhMzhiYzlkNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjYsNiArNjYsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogICAgIGNsYXNzIEluc3BlY3Rv
ckNvbnRyb2xsZXI7CiAgICAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOworICAgIGNsYXNz
IE1lZGlhU3RyZWFtQ2xpZW50OworICAgIGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjsKICAg
ICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRh
OwpAQCAtMTE4LDYgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKICAgICAgICAg
ICAgIFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkQ2xpZW50OwogICAgICAgICAg
ICAgU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xpZW50OworICAgICAgICAgICAgTWVk
aWFTdHJlYW1DbGllbnQqIG1lZGlhU3RyZWFtQ2xpZW50OwogICAgICAgICB9OwogCiAgICAgICAg
IFBhZ2UoY29uc3QgUGFnZUNsaWVudHMmKTsKQEAgLTE4Myw2ICsxODYsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGRldmljZU1vdGlvbkNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIuZ2V0KCk7
IH0KICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5nZXQoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgTWVk
aWFTdHJlYW1Db250cm9sbGVyKiBtZWRpYVN0cmVhbUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhU3RyZWFtQ29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXQqIHNwZWVjaElucHV0KCk7CiAjZW5kaWYK
QEAgLTMzOSw2ICszNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxE
ZXZpY2VNb3Rpb25Db250cm9sbGVyPiBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXI7CiAgICAgICAg
IE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+IG1fZGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgT3du
UHRyPE1lZGlhU3RyZWFtQ29udHJvbGxlcj4gbV9tZWRpYVN0cmVhbUNvbnRyb2xsZXI7CisjZW5k
aWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dENsaWVudCog
bV9zcGVlY2hJbnB1dENsaWVudDsKICAgICAgICAgT3duUHRyPFNwZWVjaElucHV0PiBtX3NwZWVj
aElucHV0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92069</attachid>
            <date>2011-05-03 06:53:28 -0700</date>
            <delta_ts>2011-05-04 03:32:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110503145326.patch</filename>
            <type>text/plain</type>
            <size>35744</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQyZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQy
M2QzYWI0OC4uMGI5NjA4M2JiNmU2YTMwOGM5ZWE2ZGIwMjkyNjJjZWJjYzljNDgyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE5MzIsNiArMTkzMiw4IEBAIEVORElGICgpCiBJRiAoRU5BQkxF
X01FRElBX1NUUkVBTSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAg
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAgIHBhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcAogICAgICkKIAogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZjRiNTIyMTQ1MmQyODEwY2JlNmFhZTljOTk0NzY3ZDRkM2E5NDcyMS4uNTFmOWQ4NGFk
NDIyZWU2YzU1NTA3YzA5YTIzOGMwYTE0Y2EwNzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0
IEBACisyMDExLTA1LTAzICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNZWRpYSBTdHJlYW0gQVBJOiBhZGQgdGhlIHNrZWxldG9uIG9mIHRoZSBmcmFtZSBhbmQgcGFn
ZSBjb250cm9sbGVycyBhbmQgdGhlIGVtYmVkZGVyIGNsaWVudC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTIyCisKKyAgICAgICAgQWRkIHRoZSBi
YXNpYyBvdXRsaW5lcyBvZiB0aGUgcGFnZSBjb250cm9sbGVyLCB0aGUgcGVyLWZyYW1lIGNvbnRy
b2xsZXIgYW5kIHRoZSBlbWJlZGRlcgorICAgICAgICBjbGllbnQgaW50ZXJmYWNlIGZvciB0aGUg
TWVkaWEgU3RyZWFtIEFQSS4gUHJvdmlkZSBtZXRob2RzIHRvIGhhbmRsZSB0aGUgc2l0dWF0aW9u
cworICAgICAgICB3aGVyZSBhIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2Ugb3IgdHJh
bnNmZXJyZWQgYmV0d2VlbiBwYWdlcy4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0
cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp+RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjptZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcik6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2xpZW50Ojp+TWVkaWFTdHJlYW1DbGllbnQpOgorICAg
ICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OlJlcXVlc3Q6OlJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0Ojpsb2NhbElkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdDo6ZnJhbWVDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFT
dHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6fk1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3RlclJlcXVlc3QpOgorICAgICAgICAqIHBh
Z2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0OjpSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0Ojp+UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UmVxdWVzdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6UmVxdWVzdDo6aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmlzUmVjb3JkZWREYXRh
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdE1hcDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OlJlcXVlc3RNYXA6OmFib3J0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmVudGVyRGV0YWNoZWRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6dHJhbnNmZXJUb05ld1BhZ2UpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHM6
OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Om1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisKIDIwMTEtMDUtMDMgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogZml4ZWQg
dHlwbyBpbiBpbnNwZWN0b3Igc3R5bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCAxN2YyYTVmOGEzODk4ODBjN2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li4zY2VmOTFjYWU2NjY2
ZmNkZWRjMjA0Zjk2ZjczY2FjY2RkOWFlODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTIxOTIsNiArMjE5MiwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhU3RyZWFtQ29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
ZTM0Njg4Yzk5OTc0NmU5YjU0NTRhYmNhMDJjMjczMTY0ODc2ZjczZC4uYTMyZmZkM2EwMDQ2NTc1
ZjhhNmIzMjE2NjUxMDk5NThiOWRmNjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQ1Niw2ICsz
NDU2LDExIEBACiAgICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oJywKICAgICAg
ICAgICAgICdwYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJl
YW1DbGllbnQuaCcsCisgICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3Bw
JywKKyAgICAgICAgICAgICdwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oJywKKyAgICAgICAg
ICAgICdwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAn
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1N1
c3BlbmRhYmxlVGltZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIu
aCcsCiAgICAgICAgICAgICAncGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KaW5kZXggNjE1YzNmZWUzYjA3YjU4ZjlmMTZiMzc5OTk3ZWEwYzUzYWZmYTc2NS4uY2Rm
ZjY1ZmNhNGUyZTRkMmE1MzExN2Y4MGQ2ZWU3Njg5ZjEwMjdkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTMwNjcsMTQgKzMwNjcsMjAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9O
PTEpIHsKIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAg
SEVBREVSUyArPSBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisgICAgICAg
IHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyLmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
LmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAg
ICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgKIAorICAgIFNP
VVJDRVMgKz0gXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorICAg
ICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAorCiAgICAgdjggewogICAg
ICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmln
YXRvckN1c3RvbS5jcHAKLQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYzM0OTMyYWE1ZmI5ZTUxYjE4YWYxNjhjY2Y4Nzg2
YzYxYTAzMDExLi5hNGM2ZTYwN2FiODBhZmJiNzNiZWZiYWUzNzQ4OGFhZDYzZjUyNjI2IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjQ2NTgs
NiArMjQ2NTgsMjYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGFnZVxNZWRpYVN0cmVhbUNsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBh
Z2VcTWVkaWFTdHJlYW1Db250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdl
XE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM0OTYwNGYyOThmNGUyYzUyMTM3OThhMTcx
NzYzN2Y4ZjhjMzVkMGIuLjAzNTEzNjliNzI5MmYxMTQ0MDI5ZTkxODQ4YjFlYTdhNTI1NmNiNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQwNzcsNiArNDA3NywxMSBAQAogCQlBRERGMUFENzEyNTdDRDlBMDAwM0E3NTkgLyog
UmVuZGVyU1ZHUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQURERjFBRDUxMjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLzsgfTsK
IAkJQjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjE4Mjc0OTIxMzRDQTRD
MTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovOyB9OwogCQlCMUQ1RUNCNTEzNEI1
OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxi
YWNrRnVuY3Rpb24uaCAqLzsgfTsKKwkJQjFFNTQ1OTQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLzsg
fTsKKwkJQjFFNTQ1OTcxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4
QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsgfTsKKwkJ
QjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEMxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovOyB9OworCQlCMUU1NDU5NTEz
NDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1ODkxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQjFFNTQ1
OTYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QTEzNDYyOUMx
MDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQjFFNTQ1
OTkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4RDEzNDYyOUMxMDA5
MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCAqLzsgfTsKIAkJQjFFNTQ1OUIxMzQ2
MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThGMTM0NjI5QzEw
MDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggKi87IH07CiAJCUIx
RTU0NTlEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0
NTkxMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2su
aCAqLzsgfTsKQEAgLTEwMzE0LDYgKzEwMzE5LDExIEBACiAJCUFEREYxQUQ1MTI1N0NEOUEwMDAz
QTc1OSAvKiBSZW5kZXJTVkdQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlclNWR1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjE4Mjc0OTIx
MzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1
IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhU3RyZWFtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0
NThCMTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEExMzQ2
MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MUU1NDU4RTEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQxMjEsNiArMTQxMzEsMTEgQEAKIAkJCQlCQ0UxQzQxOTBEOTgyOTgw
MDAzQjAyRjIgLyogTG9jYXRpb24uaCAqLywKIAkJCQlCQ0UxQzQyMjBEOTgyOUYyMDAzQjAyRjIg
LyogTG9jYXRpb24uaWRsICovLAogCQkJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCAqLywKKwkJCQlCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyog
TWVkaWFTdHJlYW1DbGllbnQuaCAqLywKKwkJCQlCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyog
TWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLywKKwkJCQlCMUU1NDU4QzEzNDYyOUMxMDA5MkE1
NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmggKi8sCisJCQkJQjFFNTQ1ODkxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLywKKwkJCQlCMUU1NDU4
QTEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLywKIAkJ
CQk5RkZFM0U3ODExQjU5QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5jcHAgKi8sCiAJCQkJOUZG
RTNFNzkxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uaCAqLywKIAkJCQk5RkZFM0U3QzEx
QjU5QzZFMDAzNzg3NEUgLyogTWVtb3J5SW5mby5pZGwgKi8sCkBAIC0yMjcwMiw2ICsyMjcxNyw5
IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxRTU0NTk0MTM0NjI5QzEwMDkyQTU0NSAvKiBN
ZWRpYVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTgxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFF
NTQ1OTYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI1MzYyLDYgKzI1MzgwLDggQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5
MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUIxRTU0NTk3MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1OTUxMzQ2MjlDMTAwOTJBNTQ1
IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCA4NmZjOTE3Zjg2YjhlNWU5ZjA3OGMwMDgyNzE3MGUzNzQ1YzNjNmQ3
Li5lODM1OTQ4ZTQxYmUyMzkyZDYyYjZjNGU5Njk0NDk4NzJlY2Q1M2FmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5o
IgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNzAsNiArNzEs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhl
bWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTE2Myw2ICsxNjUs
OSBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgogICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKGZh
bHNlKQogICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChmYWxzZSkKICAgICAsIG1fZXhjbHVkZUZyb21U
ZXh0U2VhcmNoKGZhbHNlKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX21lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFt
RW5hYmxlZCgpID8gYWRvcHRQdHIobmV3IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKHRoaXMp
KSA6IFBhc3NPd25QdHI8TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI+KCkpCisjZW5kaWYKIHsK
ICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CkBAIC0yMTksNiAr
MjI0LDEyIEBAIEZyYW1lOjp+RnJhbWUoKQogCiAgICAgaWYgKG1fZG9tV2luZG93KQogICAgICAg
ICBtX2RvbVdpbmRvdy0+ZGlzY29ubmVjdEZyYW1lKCk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIGlmIChtX21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKQorICAgICAgICBtX21l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLT5kaXNjb25uZWN0RnJhbWUoKTsKKyNlbmRpZgorCiAg
ICAgc2NyaXB0KCktPmNsZWFyV2luZG93U2hlbGwoKTsKIAogICAgIEhhc2hTZXQ8RE9NV2luZG93
Kj46Oml0ZXJhdG9yIGVuZCA9IG1fbGl2ZUZvcm1lcldpbmRvd3MuZW5kKCk7CkBAIC03MzAsNiAr
NzQxLDExIEBAIHZvaWQgRnJhbWU6OnBhZ2VEZXN0cm95ZWQoKQogICAgICAgICBtX2RvbVdpbmRv
dy0+cGFnZURlc3Ryb3llZCgpOwogICAgIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgaWYgKG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXItPmRpc2Nvbm5lY3RQYWdlKCk7CisjZW5kaWYKKwogICAgIC8vIEZJ
WE1FOiBJdCdzIHVuY2xlYXIgYXMgdG8gd2h5IHRoaXMgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNl
LCBidXQgaXQgaXMsCiAgICAgLy8gc28gcGFnZSgpIGNvdWxkIGJlIE5VTEwuCiAgICAgaWYgKHBh
Z2UoKSAmJiBwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSB0aGlz
KQpAQCAtNzgwLDYgKzc5NiwxMCBAQCB2b2lkIEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KCkKICAgICAgICAgaWYgKG1fZG9tV2luZG93KQogICAgICAgICAgICAgbV9kb21X
aW5kb3ctPnJlc2V0R2VvbG9jYXRpb24oKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgICAgIGlmIChtX21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgbV9t
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci0+dHJhbnNmZXJUb05ld1BhZ2UobmV3UGFnZSk7Cisj
ZW5kaWYKICAgICAgICAgbV9wYWdlID0gbmV3UGFnZTsKIAogICAgICAgICBpZiAobmV3UGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAppbmRleCA1Y2Y3Mzk5NDQ3ZmUyNjllZmRhZDE5NzI2MDRkYTc0YmJmOGUx
NDRiLi4yZDc2YWVlYzUxNmEyNWM1MTdmZDZjYjk2NWNjZTY5OGVlODNjNTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCkBAIC02NCw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBE
b2N1bWVudDsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ7CisgICAgY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI7CiAgICAgY2xhc3Mg
UmVndWxhckV4cHJlc3Npb247CiAgICAgY2xhc3MgUmVuZGVyUGFydDsKICAgICBjbGFzcyBUaWxl
ZEJhY2tpbmdTdG9yZTsKQEAgLTE5OCw2ICsxOTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBOU0ltYWdlKiBpbWFnZUZyb21SZWN0KE5TUmVjdCkgY29uc3Q7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuZ2V0KCk7IH0KKyNlbmRpZgorCiAgICAgLy8gPT09PT09PT0K
IAogICAgIHByaXZhdGU6CkBAIC0yNjQsNiArMjY5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fdGlsZWRCYWNraW5nU3RvcmU7
CiAjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE93blB0cjxNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcj4gbV9tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjsKKyNl
bmRpZgogICAgIH07CiAKICAgICBpbmxpbmUgdm9pZCBGcmFtZTo6aW5pdCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU5ZmJmNWYyZmUzZmI0ZGQy
NDJjYTE1YjE4YzE2MGI4ZmQ1MmM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lZGlhU3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DbGllbnRf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNZWRpYVN0cmVhbUNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gTm90aWZ5IHRoZSBlbWJl
ZGRlciBjbGllbnQgYWJvdXQgdGhlIHBhZ2UgY29udHJvbGxlciBiZWluZyBkZXN0cm95ZWQuCisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtRGVzdHJveWVkKCkgPSAwOworCisgICAgLy8gRklY
TUU6IGFkZCBoZXJlIHRoZSByZXF1ZXN0cyB0byB0aGUgZW1iZWRkZXIuCisKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8v
IE1lZGlhU3RyZWFtQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1D
b250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjE2MWIwZWZjZDg5ZDhiOGU3MjAzNjQzZjg5NDEx
YTk3ZDQxNDEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6UmVxdWVzdCB7CitwdWJsaWM6CisgICAgUmVxdWVzdCgpCisgICAgICAgIDogbV9sb2Nh
bElkKDApCisgICAgICAgICwgbV9mcmFtZUNvbnRyb2xsZXIoMCkgeyB9CisKKyAgICBSZXF1ZXN0
KGludCBsb2NhbElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVy
KQorICAgICAgICA6IG1fbG9jYWxJZChsb2NhbElkKQorICAgICAgICAsIG1fZnJhbWVDb250cm9s
bGVyKGZyYW1lQ29udHJvbGxlcikgeyB9CisKKyAgICBpbnQgbG9jYWxJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxJZDsgfQorICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQ29udHJvbGxlcjsgfQorCitwcml2YXRl
OgorICAgIGludCBtX2xvY2FsSWQ7CisgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIG1f
ZnJhbWVDb250cm9sbGVyOworfTsKKworTWVkaWFTdHJlYW1Db250cm9sbGVyOjpNZWRpYVN0cmVh
bUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1DbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNs
aWVudCkKKyAgICAsIG1fbmV4dEdsb2JhbFJlcXVlc3RJZCgxKQoreworfQorCitNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6On5NZWRpYVN0cmVhbUNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPm1lZGlhU3RyZWFtRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIpCit7CisgICAgQVNTRVJUKGZyYW1l
Q29udHJvbGxlcik7CisKKyAgICAvLyBEb25lIGluIHR3byBzdGVwcyB0byBhdm9pZCBwcm9ibGVt
cyBhYm91dCBpdGVyYXRvcnMgYmVpbmcgaW52YWxpZGF0ZWQgd2hpbGUgcmVtb3ZpbmcuCisgICAg
VmVjdG9yPGludD4gZnJhbWVSZXF1ZXN0czsKKyAgICBmb3IgKFJlcXVlc3RNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBtX3JlcXVlc3RzLmVuZCgpOyArK2l0KQor
ICAgICAgICBpZiAoaXQtPnNlY29uZC5mcmFtZUNvbnRyb2xsZXIoKSA9PSBmcmFtZUNvbnRyb2xs
ZXIpCisgICAgICAgICAgICBmcmFtZVJlcXVlc3RzLmFwcGVuZChpdC0+Zmlyc3QpOworCisgICAg
Zm9yIChWZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBmcmFtZVJlcXVlc3RzLmJlZ2luKCk7IGl0
ICE9IGZyYW1lUmVxdWVzdHMuZW5kKCk7ICsraXQpCisgICAgICAgIG1fcmVxdWVzdHMucmVtb3Zl
KCppdCk7Cit9CisKK2ludCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdChp
bnQgbG9jYWxJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikK
K3sKKyAgICBtX3JlcXVlc3RzLmFkZChtX25leHRHbG9iYWxSZXF1ZXN0SWQsIFJlcXVlc3QobG9j
YWxJZCwgZnJhbWVDb250cm9sbGVyKSk7CisgICAgcmV0dXJuIG1fbmV4dEdsb2JhbFJlcXVlc3RJ
ZCsrOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDc0OWE1ODZkZTE1MzAyNjMzYTBmNGIyMmQ3OGFlM2FiYzZiYzY0NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVy
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNv
bnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbUNsaWVudDsKK2NsYXNzIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOworCitjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgTWVk
aWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50Kik7CisgICAgdmlydHVhbCB+TWVk
aWFTdHJlYW1Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHVucmVnaXN0ZXJGcmFtZUNvbnRyb2xs
ZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKKworcHJpdmF0ZToKKyAgICBpbnQgcmVn
aXN0ZXJSZXF1ZXN0KGludCBsb2NhbFJlcXVlc3RJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIqKTsKKworICAgIGNsYXNzIFJlcXVlc3Q7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVx
dWVzdD4gUmVxdWVzdE1hcDsKKworICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0czsKKworICAgIE1l
ZGlhU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKKyAgICBpbnQgbV9uZXh0R2xvYmFsUmVxdWVzdElk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ29udHJvbGxlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2MTc1NjE3ODc5NzkxNmM5ZWRlMTlhMTUxZDI1YzY1NzMwN2I3NjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNw
cApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVxdWVzdD4geworcHVibGljOgorICAg
IFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
KyAgICAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgeyB9CisKKyAgICB2aXJ0dWFsIH5SZXF1ZXN0KCkgeyB9CisKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVTdHJlYW1S
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWNv
cmRlZERhdGFSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBhYm9ydCgpID0gMDsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlzIGlzIGd1YXJhbnRlZWQg
dG8gaGF2ZSB0aGUgbGlmZXRpbWUgb2YgdGhlIEZyYW1lLCBhbmQgaXQncyBvbmx5IHVzZWQgdG8g
bWFrZQorICAgIC8vIHRoZSBjYWxsYmFjayBhc3luY2hyb25vdXMuIFRoZSBvcmlnaW5hbCBjYWxs
YmFjayBjb250ZXh0IGlzIHVzZWQgaW4gdGhlIGNhbGwuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfTsKKwordm9pZCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJvcnQoaW50IHJlcXVlc3RJZCkKK3sKKyAgICBn
ZXQocmVxdWVzdElkKS0+YWJvcnQoKTsKKyAgICByZW1vdmUocmVxdWVzdElkKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJvcnRBbGwoKQorewor
ICAgIHdoaWxlICghaXNFbXB0eSgpKSB7CisgICAgICAgIGJlZ2luKCktPnNlY29uZC0+YWJvcnQo
KTsKKyAgICAgICAgcmVtb3ZlKGJlZ2luKCkpOworICAgIH0KK30KKworTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKKyAg
ICA6IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2lzSW5EZXRhY2hlZFN0YXRlKGZhbHNlKQorewor
fQorCitNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKCkKK3sKK30KKworU2VjdXJpdHlPcmlnaW4qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1l
LT5leGlzdGluZ0RPTVdpbmRvdygpLT5zZWN1cml0eU9yaWdpbigpIDogMDsKK30KKworU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+ZXhp
c3RpbmdET01XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIDogMDsKK30KKworTWVk
aWFTdHJlYW1Db250cm9sbGVyKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRy
b2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0luRGV0YWNoZWRTdGF0ZSAmJiBtX2Zy
YW1lICYmIG1fZnJhbWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+bWVkaWFTdHJlYW1Db250
cm9sbGVyKCkgOiAwOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjplbnRl
ckRldGFjaGVkU3RhdGUoKQoreworICAgIGlmIChtX2lzSW5EZXRhY2hlZFN0YXRlKSB7CisgICAg
ICAgIEFTU0VSVChtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3JlcXVlc3RzLmFib3J0QWxsKCk7CisgICAgbV9pc0luRGV0YWNoZWRTdGF0ZSA9
IHRydWU7Cit9CisKKy8vIENhbGxlZCBhbHNvIHdoZW4gdGhlIGZyYW1lIGlzIGRldGFjaGVkIGZy
b20gdGhlIHBhZ2UsIGluIHdoaWNoIGNhc2UgdGhlIHBhZ2UgY29udHJvbGxlciB3aWxsIHJlbWFp
biBhbGl2ZS4KK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdl
KCkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIo
KS0+dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcih0aGlzKTsKKworICAgIGVudGVyRGV0YWNoZWRT
dGF0ZSgpOworfQorCisvLyBDYWxsZWQgd2hlbiB0aGUgZnJhbWUgaXMgYmVpbmcgZGVzdHJveWVk
LiBTaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBpcyBvd25lZCBieSB0aGUgZnJhbWUgaXQgd2ls
bCBkaWUgc2hvcnRseSBhZnRlciB0aGlzLgordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyYW1lKCkKK3sKKyAgICBkaXNjb25uZWN0UGFnZSgpOworCisgICAgQVNT
RVJUKG1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lk
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjp0cmFuc2ZlclRvTmV3UGFnZShQYWdlKikKK3sK
KyAgICAvLyBGSVhNRTogSW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQga2VlcCBydW5uaW5nIHRoZSBt
ZWRpYSBzdHJlYW0gc2VydmljZXMgd2hpbGUgdHJhbnNmZXJpbmcgZnJhbWVzIGJldHdlZW4gcGFn
ZXMuCisgICAgLy8gSG93ZXZlciwgdW50aWwgYSBwcm9wZXIgd2F5IHRvIGRvIHRoaXMgaXMgZGVj
aWRlZCwgd2UncmUgc2h1dHRpbmcgZG93biBzZXJ2aWNlcy4KKyAgICBkaXNjb25uZWN0UGFnZSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU5NWE0NGFhN2YyOGQ3MmQxYzA5NmY3NmY3ZmIzY2Q0Njc1MGYx
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBNZWRp
YVN0cmVhbUNvbnRyb2xsZXI7CitjbGFzcyBQYWdlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIpOworcHVibGljOgorICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7
CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsKKworICAgIFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIHZvaWQgZGlzY29u
bmVjdFBhZ2UoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAgIHZvaWQgdHJhbnNm
ZXJUb05ld1BhZ2UoUGFnZSopOworCitwcml2YXRlOgorICAgIGNsYXNzIFJlcXVlc3Q7CisKKyAg
ICBjbGFzcyBSZXF1ZXN0TWFwIDogcHVibGljIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVxdWVzdD4g
PiB7CisgICAgcHVibGljOgorICAgICAgICB2b2lkIGFib3J0KGludCByZXF1ZXN0SWQpOworICAg
ICAgICB2b2lkIGFib3J0QWxsKCk7CisgICAgfTsKKworICAgIC8vIERldGFjaGVkIGZyb20gYSBw
YWdlLCBhbmQgaGVuY2UgZnJvbSBhIGVtYmVkZGVyIGNsaWVudC4KKyAgICB2b2lkIGVudGVyRGV0
YWNoZWRTdGF0ZSgpOworCisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBwYWdlQ29udHJvbGxl
cigpIGNvbnN0OworCisgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworCisgICAgRnJhbWUqIG1f
ZnJhbWU7CisgICAgYm9vbCBtX2lzSW5EZXRhY2hlZFN0YXRlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8v
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhkZjAy
OTk0MmM1ZjdiYTk3NTZiMTgwN2RhZGJhMWRmNDQzYjU1YzYuLjQwYjk1MGNiYjlkMzk5OGViMjgy
MzljZjA4MmVjM2ZhMDIzMGVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTAsNiArNTAsOCBA
QAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC0xMzEsNiArMTMzLDkgQEAgUGFnZTo6UGFnZShjb25z
dCBQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xs
ZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCgpID8gYWRvcHRQ
dHIobmV3IERldmljZU1vdGlvbkNvbnRyb2xsZXIocGFnZUNsaWVudHMuZGV2aWNlTW90aW9uQ2xp
ZW50KSkgOiBQYXNzT3duUHRyPERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCkpCiAgICAgLCBtX2Rl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VP
cmllbnRhdGlvbkVuYWJsZWQoKSA/IGFkb3B0UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIodGhpcywgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKSA6IFBhc3NP
d25QdHI8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigpKQogI2VuZGlmCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICAsIG1fbWVkaWFTdHJlYW1Db250cm9sbGVyKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5hYmxlZCgpID8gYWRvcHRQdHIobmV3IE1lZGlhU3Ry
ZWFtQ29udHJvbGxlcihwYWdlQ2xpZW50cy5tZWRpYVN0cmVhbUNsaWVudCkpIDogUGFzc093blB0
cjxNZWRpYVN0cmVhbUNvbnRyb2xsZXI+KCkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENs
aWVudCkKICNlbmRpZgpAQCAtOTM5LDYgKzk0NCw3IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdl
Q2xpZW50cygpCiAgICAgLCBkZXZpY2VNb3Rpb25DbGllbnQoMCkKICAgICAsIGRldmljZU9yaWVu
dGF0aW9uQ2xpZW50KDApCiAgICAgLCBzcGVlY2hJbnB1dENsaWVudCgwKQorICAgICwgbWVkaWFT
dHJlYW1DbGllbnQoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAzMzNhY2EwZTMzZGRlZDQ1
N2RkYWFmYzA1MDliM2ExZTNhZjIzMGU4Li42MDE5M2ZiZmE5YjZkYmY5ZGQzNzFlZDk3NDVlNzE1
YzEwM2UyOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjYsNiArNjYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogICAgIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CiAgICAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOworICAgIGNsYXNzIE1l
ZGlhU3RyZWFtQ2xpZW50OworICAgIGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjsKICAgICBj
bGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOwpA
QCAtMTE1LDYgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKICAgICAgICAgICAg
IFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkQ2xpZW50OwogICAgICAgICAgICAg
U3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xpZW50OworICAgICAgICAgICAgTWVkaWFT
dHJlYW1DbGllbnQqIG1lZGlhU3RyZWFtQ2xpZW50OwogICAgICAgICB9OwogCiAgICAgICAgIFBh
Z2UoY29uc3QgUGFnZUNsaWVudHMmKTsKQEAgLTE4MCw2ICsxODMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGRldmljZU1vdGlvbkNvbnRy
b2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0K
ICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5n
ZXQoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgTWVkaWFT
dHJlYW1Db250cm9sbGVyKiBtZWRpYVN0cmVhbUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhU3RyZWFtQ29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXQqIHNwZWVjaElucHV0KCk7CiAjZW5kaWYKQEAg
LTMzMiw2ICszMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxEZXZp
Y2VNb3Rpb25Db250cm9sbGVyPiBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXI7CiAgICAgICAgIE93
blB0cjxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+IG1fZGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgT3duUHRy
PE1lZGlhU3RyZWFtQ29udHJvbGxlcj4gbV9tZWRpYVN0cmVhbUNvbnRyb2xsZXI7CisjZW5kaWYK
ICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogbV9z
cGVlY2hJbnB1dENsaWVudDsKICAgICAgICAgT3duUHRyPFNwZWVjaElucHV0PiBtX3NwZWVjaElu
cHV0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92210</attachid>
            <date>2011-05-04 03:32:33 -0700</date>
            <delta_ts>2011-05-04 06:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56922-20110504113231.patch</filename>
            <type>text/plain</type>
            <size>35666</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjc0MGQyZjU5MTMwZTQwMjhkZTY5NzRkNmVlNzIzZTQy
M2QzYWI0OC4uMGI5NjA4M2JiNmU2YTMwOGM5ZWE2ZGIwMjkyNjJjZWJjYzljNDgyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE5MzIsNiArMTkzMiw4IEBAIEVORElGICgpCiBJRiAoRU5BQkxF
X01FRElBX1NUUkVBTSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAg
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAgIHBhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcAogICAgICkKIAogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZWFkZDJiZTI5NzllYThjMDQ5OTUyZmQxZmZjMzQ0NzhjNGY5OTc2ZC4uNTRiYWNmOGE4
ZDU1OWUyMmRhYzNhOWNhNmIzNGNlNzM2YmFkYjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0
IEBACisyMDExLTA1LTA0ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNZWRpYSBTdHJlYW0gQVBJOiBhZGQgdGhlIHNrZWxldG9uIG9mIHRoZSBmcmFtZSBhbmQgcGFn
ZSBjb250cm9sbGVycyBhbmQgdGhlIGVtYmVkZGVyIGNsaWVudC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTIyCisKKyAgICAgICAgQWRkIHRoZSBi
YXNpYyBvdXRsaW5lcyBvZiB0aGUgcGFnZSBjb250cm9sbGVyLCB0aGUgcGVyLWZyYW1lIGNvbnRy
b2xsZXIgYW5kIHRoZSBlbWJlZGRlcgorICAgICAgICBjbGllbnQgaW50ZXJmYWNlIGZvciB0aGUg
TWVkaWEgU3RyZWFtIEFQSS4gUHJvdmlkZSBtZXRob2RzIHRvIGhhbmRsZSB0aGUgc2l0dWF0aW9u
cworICAgICAgICB3aGVyZSBhIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2Ugb3IgdHJh
bnNmZXJyZWQgYmV0d2VlbiBwYWdlcy4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0
cmVhbSBBUEkgd2lsbCBiZSBwcm92aWRlZCBieSB0aGUgYnVnIDU2NTg3LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp+RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjptZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcik6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2xpZW50Ojp+TWVkaWFTdHJlYW1DbGllbnQpOgorICAg
ICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OlJlcXVlc3Q6OlJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpSZXF1ZXN0Ojpsb2NhbElkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdDo6ZnJhbWVDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFT
dHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6fk1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3RlclJlcXVlc3QpOgorICAgICAgICAqIHBh
Z2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0OjpSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0Ojp+UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UmVxdWVzdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6UmVxdWVzdDo6aXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmlzUmVjb3JkZWREYXRh
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdE1hcDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OlJlcXVlc3RNYXA6OmFib3J0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmVudGVyRGV0YWNoZWRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6dHJhbnNmZXJUb05ld1BhZ2UpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHM6
OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Om1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisKIDIwMTEtMDUtMDQgIFNhdGlzaCBTYW1w
YXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IEdl
bnRpbGNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxN2YyYTVmOGEzODk4
ODBjN2RmNWYxZDI5ZTk2MmJjODAyMmFhNDA0Li4zY2VmOTFjYWU2NjY2ZmNkZWRjMjA0Zjk2Zjcz
Y2FjY2RkOWFlODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIxOTIsNiAr
MjE5MiwxMSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJv
bGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Nb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTM0Njg4Yzk5OTc0NmU5
YjU0NTRhYmNhMDJjMjczMTY0ODc2ZjczZC4uYTMyZmZkM2EwMDQ2NTc1ZjhhNmIzMjE2NjUxMDk5
NThiOWRmNjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQ1Niw2ICszNDU2LDExIEBACiAgICAg
ICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oJywKICAgICAgICAgICAgICdwYWdlL1Nw
ZWVjaElucHV0UmVzdWx0TGlzdC5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRS
ZXN1bHRMaXN0LmgnLAorICAgICAgICAgICAgJ3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCcsCisg
ICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAg
ICdwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdwYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAncGFnZS9NZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwJywKICAgICAgICAgICAgICdwYWdlL1N1c3BlbmRhYmxlVGltZXIuaCcsCiAgICAgICAgICAg
ICAncGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMGQw
M2QwMTVkOGU3NTJkODUzYWU5ZWYxNmEwMGQ4N2IxYzk2NDhkNS4uOTk0M2YzYjEyOWM3YzY3ZDZh
ZmJmZDAyYWFiOGQ1M2Y2OGJjNzNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMwNzEsMTQgKzMwNzEs
MjAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9OPTEpIHsKIAogY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAgSEVBREVSUyArPSBcCisg
ICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCisgICAgICAgIHBhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmggXAorICAgICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmggXAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggXAogICAgICAgICBw
YWdlL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAgICAgICAgIHBhZ2UvTmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgKIAorICAgIFNPVVJDRVMgKz0gXAorICAg
ICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAorICAgICAgICBwYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAorCiAgICAgdjggewogICAgICAgICBTT1VSQ0VTICs9
IFwKICAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAK
LQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCA5MWRiN2UyZmFjMDY5NDljOTZhN2M0ZWFlYmQ4NTMxYmVjODYxZGVhLi4xOGE3
MzM5NGFhZmJmYTQ5MDE3MzU1NGJhNmY1ZjEzZDhjODNiNTJjIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjQ2NTgsNiArMjQ2NTgsMjYgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxN
ZWRpYVN0cmVhbUNsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1D
b250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGM0OTYwNGYyOThmNGUyYzUyMTM3OThhMTcxNzYzN2Y4ZjhjMzVkMGIu
LjAzNTEzNjliNzI5MmYxMTQ0MDI5ZTkxODQ4YjFlYTdhNTI1NmNiNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwNzcsNiAr
NDA3NywxMSBAQAogCQlBRERGMUFENzEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0aC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURERjFBRDUx
MjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLzsgfTsKIAkJQjE4Mjc0OTMxMzRD
QTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENh
bGxiYWNrRnVuY3Rpb24uY3BwICovOyB9OwogCQlCMUQ1RUNCNTEzNEI1OERBMDA4N0M3OEYgLyog
Q2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAq
LzsgfTsKKwkJQjFFNTQ1OTQxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4ODEz
NDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLzsgfTsKKwkJQjFFNTQ1OTcx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QjEzNDYyOUMxMDA5MkE1
NDUgLyogTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQjFFNTQ1OTgxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1l
ZGlhU3RyZWFtQ29udHJvbGxlci5oICovOyB9OworCQlCMUU1NDU5NTEzNDYyOUMxMDA5MkE1NDUg
LyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJQjFFNTQ1OTYxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4QTEzNDYyOUMxMDA5MkE1NDUgLyogTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQjFFNTQ1OTkxMzQ2MjlDMTAwOTJB
NTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU4RDEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3IuaCAqLzsgfTsKIAkJQjFFNTQ1OUIxMzQ2MjlDMTAwOTJBNTQ1IC8q
IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NThGMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggKi87IH07CiAJCUIxRTU0NTlEMTM0NjI5QzEw
MDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTkxMTM0NjI5QzEwMDky
QTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCAqLzsgfTsKQEAgLTEw
MzE0LDYgKzEwMzE5LDExIEBACiAJCUFEREYxQUQ1MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJT
VkdQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1BhdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJE
IC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFt
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRTU0NThCMTM0NjI5QzEwMDky
QTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEMxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1ODkxMzQ2MjlD
MTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFFNTQ1OEExMzQ2MjlDMTAwOTJBNTQ1IC8q
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIxRTU0NThEMTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU4RTEzNDYyOUMx
MDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjFFNTQ1OEYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQxMjEsNiArMTQxMzEsMTEgQEAKIAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAzQjAyRjIgLyogTG9j
YXRpb24uaCAqLywKIAkJCQlCQ0UxQzQyMjBEOTgyOUYyMDAzQjAyRjIgLyogTG9jYXRpb24uaWRs
ICovLAogCQkJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCAqLywKKwkJCQlCMUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGll
bnQuaCAqLywKKwkJCQlCMUU1NDU4QjEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1Db250
cm9sbGVyLmNwcCAqLywKKwkJCQlCMUU1NDU4QzEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJl
YW1Db250cm9sbGVyLmggKi8sCisJCQkJQjFFNTQ1ODkxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCAqLywKKwkJCQlCMUU1NDU4QTEzNDYyOUMxMDA5MkE1
NDUgLyogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCAqLywKIAkJCQk5RkZFM0U3ODExQjU5
QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5jcHAgKi8sCiAJCQkJOUZGRTNFNzkxMUI1OUM1RDAw
Mzc4NzRFIC8qIE1lbW9yeUluZm8uaCAqLywKIAkJCQk5RkZFM0U3QzExQjU5QzZFMDAzNzg3NEUg
LyogTWVtb3J5SW5mby5pZGwgKi8sCkBAIC0yMjcwMiw2ICsyMjcxNyw5IEBACiAJCQkJOTNGMTk5
RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUIxRTU0NTk0MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlh
U3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OTYxMzQ2MjlDMTAw
OTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI1MzYyLDYgKzI1MzgwLDggQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdF
MkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUIxRTU0NTk3MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1OTUxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRl
eCA4NmZjOTE3Zjg2YjhlNWU5ZjA3OGMwMDgyNzE3MGUzNzQ1YzNjNmQ3Li5lODM1OTQ4ZTQxYmUy
MzkyZDYyYjZjNGU5Njk0NDk4NzJlY2Q1M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNTks
NiArNTksNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5v
ZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNzAsNiArNzEsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTE2Myw2ICsxNjUsOSBAQCBpbmxpbmUgRnJh
bWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBGcmFtZUxvYWRlcgogICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKGZhbHNlKQogICAgICwgbV9p
c0Rpc2Nvbm5lY3RlZChmYWxzZSkKICAgICAsIG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNl
KQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX21lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5hYmxlZCgpID8gYWRv
cHRQdHIobmV3IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKHRoaXMpKSA6IFBhc3NPd25QdHI8
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI+KCkpCisjZW5kaWYKIHsKICAgICBBU1NFUlQocGFn
ZSk7CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CkBAIC0yMTksNiArMjI0LDEyIEBAIEZyYW1l
Ojp+RnJhbWUoKQogCiAgICAgaWYgKG1fZG9tV2luZG93KQogICAgICAgICBtX2RvbVdpbmRvdy0+
ZGlzY29ubmVjdEZyYW1lKCk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICht
X21lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLT5kaXNjb25uZWN0RnJhbWUoKTsKKyNlbmRpZgorCiAgICAgc2NyaXB0KCktPmNs
ZWFyV2luZG93U2hlbGwoKTsKIAogICAgIEhhc2hTZXQ8RE9NV2luZG93Kj46Oml0ZXJhdG9yIGVu
ZCA9IG1fbGl2ZUZvcm1lcldpbmRvd3MuZW5kKCk7CkBAIC03MzAsNiArNzQxLDExIEBAIHZvaWQg
RnJhbWU6OnBhZ2VEZXN0cm95ZWQoKQogICAgICAgICBtX2RvbVdpbmRvdy0+cGFnZURlc3Ryb3ll
ZCgpOwogICAgIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKG1fbWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXItPmRpc2Nvbm5lY3RQYWdlKCk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xl
YXIgYXMgdG8gd2h5IHRoaXMgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLCBidXQgaXQgaXMsCiAg
ICAgLy8gc28gcGFnZSgpIGNvdWxkIGJlIE5VTEwuCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCkt
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSB0aGlzKQpAQCAtNzgwLDYgKzc5
NiwxMCBAQCB2b2lkIEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKICAg
ICAgICAgaWYgKG1fZG9tV2luZG93KQogICAgICAgICAgICAgbV9kb21XaW5kb3ctPnJlc2V0R2Vv
bG9jYXRpb24oKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIGlmIChtX21l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKQorICAgICAgICAgICAgbV9tZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci0+dHJhbnNmZXJUb05ld1BhZ2UobmV3UGFnZSk7CisjZW5kaWYKICAgICAgICAg
bV9wYWdlID0gbmV3UGFnZTsKIAogICAgICAgICBpZiAobmV3UGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApp
bmRleCA1Y2Y3Mzk5NDQ3ZmUyNjllZmRhZDE5NzI2MDRkYTc0YmJmOGUxNDRiLi4yZDc2YWVlYzUx
NmEyNWM1MTdmZDZjYjk2NWNjZTY5OGVlODNjNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC02NCw2
ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBj
bGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xh
c3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI7CiAgICAgY2xhc3MgUmVndWxhckV4cHJlc3Np
b247CiAgICAgY2xhc3MgUmVuZGVyUGFydDsKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsK
QEAgLTE5OCw2ICsxOTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOU0ltYWdl
KiBpbWFnZUZyb21SZWN0KE5TUmVjdCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBtZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIuZ2V0KCk7IH0KKyNlbmRpZgorCiAgICAgLy8gPT09PT09PT0KIAogICAgIHByaXZhdGU6
CkBAIC0yNjQsNiArMjY5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBPd25Q
dHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fdGlsZWRCYWNraW5nU3RvcmU7CiAjZW5kaWYKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgICAgIE93blB0cjxNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcj4gbV9tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjsKKyNlbmRpZgogICAgIH07CiAK
ICAgICBpbmxpbmUgdm9pZCBGcmFtZTo6aW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3Ry
ZWFtQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU5ZmJmNWYyZmUzZmI0ZGQyNDJjYTE1YjE4YzE2MGI4
ZmQ1MmM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJl
YW1DbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlh
U3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DbGllbnRfaAorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVh
bUNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gTm90aWZ5IHRoZSBlbWJlZGRlciBjbGllbnQgYWJv
dXQgdGhlIHBhZ2UgY29udHJvbGxlciBiZWluZyBkZXN0cm95ZWQuCisgICAgdmlydHVhbCB2b2lk
IG1lZGlhU3RyZWFtRGVzdHJveWVkKCkgPSAwOworCisgICAgLy8gRklYTUU6IGFkZCBoZXJlIHRo
ZSByZXF1ZXN0cyB0byB0aGUgZW1iZWRkZXIuCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2xp
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MjE2MWIwZWZjZDg5ZDhiOGU3MjAzNjQzZjg5NDExYTk3ZDQxNDEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdCB7
CitwdWJsaWM6CisgICAgUmVxdWVzdCgpCisgICAgICAgIDogbV9sb2NhbElkKDApCisgICAgICAg
ICwgbV9mcmFtZUNvbnRyb2xsZXIoMCkgeyB9CisKKyAgICBSZXF1ZXN0KGludCBsb2NhbElkLCBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQorICAgICAgICA6IG1f
bG9jYWxJZChsb2NhbElkKQorICAgICAgICAsIG1fZnJhbWVDb250cm9sbGVyKGZyYW1lQ29udHJv
bGxlcikgeyB9CisKKyAgICBpbnQgbG9jYWxJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxJZDsg
fQorICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lQ29udHJvbGxlcjsgfQorCitwcml2YXRlOgorICAgIGludCBtX2xv
Y2FsSWQ7CisgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIG1fZnJhbWVDb250cm9sbGVy
OworfTsKKworTWVkaWFTdHJlYW1Db250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIoTWVk
aWFTdHJlYW1DbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1f
bmV4dEdsb2JhbFJlcXVlc3RJZCgxKQoreworfQorCitNZWRpYVN0cmVhbUNvbnRyb2xsZXI6On5N
ZWRpYVN0cmVhbUNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPm1lZGlhU3RyZWFtRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250
cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIpCit7CisgICAgQVNTRVJUKGZyYW1lQ29udHJvbGxlcik7CisK
KyAgICAvLyBEb25lIGluIHR3byBzdGVwcyB0byBhdm9pZCBwcm9ibGVtcyBhYm91dCBpdGVyYXRv
cnMgYmVpbmcgaW52YWxpZGF0ZWQgd2hpbGUgcmVtb3ZpbmcuCisgICAgVmVjdG9yPGludD4gZnJh
bWVSZXF1ZXN0czsKKyAgICBmb3IgKFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXF1ZXN0
cy5iZWdpbigpOyBpdCAhPSBtX3JlcXVlc3RzLmVuZCgpOyArK2l0KQorICAgICAgICBpZiAoaXQt
PnNlY29uZC5mcmFtZUNvbnRyb2xsZXIoKSA9PSBmcmFtZUNvbnRyb2xsZXIpCisgICAgICAgICAg
ICBmcmFtZVJlcXVlc3RzLmFwcGVuZChpdC0+Zmlyc3QpOworCisgICAgZm9yIChWZWN0b3I8aW50
Pjo6aXRlcmF0b3IgaXQgPSBmcmFtZVJlcXVlc3RzLmJlZ2luKCk7IGl0ICE9IGZyYW1lUmVxdWVz
dHMuZW5kKCk7ICsraXQpCisgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKCppdCk7Cit9CisKK2lu
dCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxJZCwgTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikKK3sKKyAgICBtX3JlcXVl
c3RzLmFkZChtX25leHRHbG9iYWxSZXF1ZXN0SWQsIFJlcXVlc3QobG9jYWxJZCwgZnJhbWVDb250
cm9sbGVyKSk7CisgICAgcmV0dXJuIG1fbmV4dEdsb2JhbFJlcXVlc3RJZCsrOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0
OWE1ODZkZTE1MzAyNjMzYTBmNGIyMmQ3OGFlM2FiYzZiYzY0NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorI2Rl
ZmluZSBNZWRpYVN0cmVhbUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYVN0cmVhbUNsaWVudDsKK2NsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOwor
CitjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1lZGlhU3RyZWFtQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgTWVkaWFTdHJlYW1Db250cm9s
bGVyKE1lZGlhU3RyZWFtQ2xpZW50Kik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Db250cm9s
bGVyKCk7CisKKyAgICB2b2lkIHVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqKTsKKworcHJpdmF0ZToKKyAgICBpbnQgcmVnaXN0ZXJSZXF1ZXN0KGlu
dCBsb2NhbFJlcXVlc3RJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKKworICAgIGNs
YXNzIFJlcXVlc3Q7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVzdD4gUmVxdWVzdE1h
cDsKKworICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0czsKKworICAgIE1lZGlhU3RyZWFtQ2xpZW50
KiBtX2NsaWVudDsKKyAgICBpbnQgbV9uZXh0R2xvYmFsUmVxdWVzdElkOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2Vu
ZGlmIC8vIE1lZGlhU3RyZWFtQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MTc1NjE3ODc5
NzkxNmM5ZWRlMTlhMTUxZDI1YzY1NzMwN2I3NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2Vy
TWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8UmVxdWVzdD4geworcHVibGljOgorICAgIFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgOiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyB9CisKKyAgICB2
aXJ0dWFsIH5SZXF1ZXN0KCkgeyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9CisgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWNvcmRlZERhdGFSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0g
MDsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSB0aGUgbGlm
ZXRpbWUgb2YgdGhlIEZyYW1lLCBhbmQgaXQncyBvbmx5IHVzZWQgdG8gbWFrZQorICAgIC8vIHRo
ZSBjYWxsYmFjayBhc3luY2hyb25vdXMuIFRoZSBvcmlnaW5hbCBjYWxsYmFjayBjb250ZXh0IGlz
IHVzZWQgaW4gdGhlIGNhbGwuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0OworfTsKKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdE1hcDo6YWJvcnQoaW50IHJlcXVlc3RJZCkKK3sKKyAgICBnZXQocmVxdWVzdElkKS0+
YWJvcnQoKTsKKyAgICByZW1vdmUocmVxdWVzdElkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6UmVxdWVzdE1hcDo6YWJvcnRBbGwoKQoreworICAgIHdoaWxlICghaXNF
bXB0eSgpKSB7CisgICAgICAgIGJlZ2luKCktPnNlY29uZC0+YWJvcnQoKTsKKyAgICAgICAgcmVt
b3ZlKGJlZ2luKCkpOworICAgIH0KK30KKworTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJh
bWUpCisgICAgLCBtX2lzSW5EZXRhY2hlZFN0YXRlKGZhbHNlKQoreworfQorCitNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6fk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkKK3sKK30KKwor
U2VjdXJpdHlPcmlnaW4qIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzZWN1cml0eU9yaWdp
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5leGlzdGluZ0RPTVdp
bmRvdygpLT5zZWN1cml0eU9yaWdpbigpIDogMDsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3co
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIDogMDsKK30KKworTWVkaWFTdHJlYW1Db250cm9s
bGVyKiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cGFnZUNvbnRyb2xsZXIoKSBjb25zdAor
eworICAgIHJldHVybiAhbV9pc0luRGV0YWNoZWRTdGF0ZSAmJiBtX2ZyYW1lICYmIG1fZnJhbWUt
PnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+bWVkaWFTdHJlYW1Db250cm9sbGVyKCkgOiAwOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjplbnRlckRldGFjaGVkU3RhdGUo
KQoreworICAgIGlmIChtX2lzSW5EZXRhY2hlZFN0YXRlKSB7CisgICAgICAgIEFTU0VSVChtX3Jl
cXVlc3RzLmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlcXVl
c3RzLmFib3J0QWxsKCk7CisgICAgbV9pc0luRGV0YWNoZWRTdGF0ZSA9IHRydWU7Cit9CisKKy8v
IENhbGxlZCBhbHNvIHdoZW4gdGhlIGZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIHBhZ2UsIGlu
IHdoaWNoIGNhc2UgdGhlIHBhZ2UgY29udHJvbGxlciB3aWxsIHJlbWFpbiBhbGl2ZS4KK3ZvaWQg
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RQYWdlKCkKK3sKKyAgICBpZiAo
cGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZy
YW1lQ29udHJvbGxlcih0aGlzKTsKKworICAgIGVudGVyRGV0YWNoZWRTdGF0ZSgpOworfQorCisv
LyBDYWxsZWQgd2hlbiB0aGUgZnJhbWUgaXMgYmVpbmcgZGVzdHJveWVkLiBTaW5jZSB0aGUgZnJh
bWUgY29udHJvbGxlciBpcyBvd25lZCBieSB0aGUgZnJhbWUgaXQgd2lsbCBkaWUgc2hvcnRseSBh
ZnRlciB0aGlzLgordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
YW1lKCkKK3sKKyAgICBkaXNjb25uZWN0UGFnZSgpOworCisgICAgQVNTRVJUKG1fcmVxdWVzdHMu
aXNFbXB0eSgpKTsKKworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjp0cmFuc2ZlclRvTmV3UGFnZShQYWdlKikKK3sKKyAgICAvLyBGSVhNRTog
SW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQga2VlcCBydW5uaW5nIHRoZSBtZWRpYSBzdHJlYW0gc2Vy
dmljZXMgd2hpbGUgdHJhbnNmZXJpbmcgZnJhbWVzIGJldHdlZW4gcGFnZXMuCisgICAgLy8gSG93
ZXZlciwgdW50aWwgYSBwcm9wZXIgd2F5IHRvIGRvIHRoaXMgaXMgZGVjaWRlZCwgd2UncmUgc2h1
dHRpbmcgZG93biBzZXJ2aWNlcy4KKyAgICBkaXNjb25uZWN0UGFnZSgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU5NWE0NGFhN2YyOGQ3MmQxYzA5NmY3NmY3ZmIzY2Q0Njc1MGYxZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcl9oCisjZGVmaW5lIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI7CitjbGFzcyBQYWdlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNl
Y3VyaXR5T3JpZ2luOworCitjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOworcHVibGlj
OgorICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7CisgICAgdmlydHVhbCB+
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsKKworICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbigpIGNvbnN0OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIHZvaWQgZGlzY29ubmVjdFBhZ2UoKTsKKyAg
ICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAgIHZvaWQgdHJhbnNmZXJUb05ld1BhZ2UoUGFn
ZSopOworCitwcml2YXRlOgorICAgIGNsYXNzIFJlcXVlc3Q7CisKKyAgICBjbGFzcyBSZXF1ZXN0
TWFwIDogcHVibGljIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVxdWVzdD4gPiB7CisgICAgcHVibGlj
OgorICAgICAgICB2b2lkIGFib3J0KGludCByZXF1ZXN0SWQpOworICAgICAgICB2b2lkIGFib3J0
QWxsKCk7CisgICAgfTsKKworICAgIC8vIERldGFjaGVkIGZyb20gYSBwYWdlLCBhbmQgaGVuY2Ug
ZnJvbSBhIGVtYmVkZGVyIGNsaWVudC4KKyAgICB2b2lkIGVudGVyRGV0YWNoZWRTdGF0ZSgpOwor
CisgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBwYWdlQ29udHJvbGxlcigpIGNvbnN0OworCisg
ICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOworCisgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgYm9v
bCBtX2lzSW5EZXRhY2hlZFN0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDliMGEzZTU1MDJlZmM3ZGFlM2Q3
OTYxZGFjYzJjNWIzNDk3YTNlYTQuLjc2NjQyZjhjZDcyNDgwOGQ5Nzg1MmFhNDg0NmI3NTZlYmI5
NGQxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTAsNiArNTAsOCBAQAogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNsaWVudC5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRv
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUdy
b3VwLmgiCkBAIC0xMzEsNiArMTMzLDkgQEAgUGFnZTo6UGFnZShjb25zdCBQYWdlQ2xpZW50cyYg
cGFnZUNsaWVudHMpCiAgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCgpID8gYWRvcHRQdHIobmV3IERldmljZU1v
dGlvbkNvbnRyb2xsZXIocGFnZUNsaWVudHMuZGV2aWNlTW90aW9uQ2xpZW50KSkgOiBudWxscHRy
KQogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBhZG9wdFB0cihuZXcgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KSkgOiBudWxscHRyKQogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAs
IG1fbWVkaWFTdHJlYW1Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3Ry
ZWFtRW5hYmxlZCgpID8gYWRvcHRQdHIobmV3IE1lZGlhU3RyZWFtQ29udHJvbGxlcihwYWdlQ2xp
ZW50cy5tZWRpYVN0cmVhbUNsaWVudCkpIDogUGFzc093blB0cjxNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI+KCkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJ
bnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpAQCAtOTQw
LDYgKzk0NSw3IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCiAgICAgLCBkZXZp
Y2VNb3Rpb25DbGllbnQoMCkKICAgICAsIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KDApCiAgICAg
LCBzcGVlY2hJbnB1dENsaWVudCgwKQorICAgICwgbWVkaWFTdHJlYW1DbGllbnQoMCkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCAzMzNhY2EwZTMzZGRlZDQ1N2RkYWFmYzA1MDliM2ExZTNhZjIz
MGU4Li42MDE5M2ZiZmE5YjZkYmY5ZGQzNzFlZDk3NDVlNzE1YzEwM2UyOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtNjYsNiArNjYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwogICAgIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgY2xhc3Mg
TWVkaWFDYW5TdGFydExpc3RlbmVyOworICAgIGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50OworICAg
IGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNz
IFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOwpAQCAtMTE1LDYgKzExNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBk
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKICAgICAgICAgICAgIFJlZlB0cjxCYWNrRm9yd2FyZExp
c3Q+IGJhY2tGb3J3YXJkQ2xpZW50OwogICAgICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIHNw
ZWVjaElucHV0Q2xpZW50OworICAgICAgICAgICAgTWVkaWFTdHJlYW1DbGllbnQqIG1lZGlhU3Ry
ZWFtQ2xpZW50OwogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoY29uc3QgUGFnZUNsaWVudHMm
KTsKQEAgLTE4MCw2ICsxODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERldmlj
ZU1vdGlvbkNvbnRyb2xsZXIqIGRldmljZU1vdGlvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICAgICAgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgTWVkaWFTdHJlYW1Db250cm9sbGVyKiBtZWRp
YVN0cmVhbUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RyZWFtQ29udHJvbGxl
ci5nZXQoKTsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3Bl
ZWNoSW5wdXQqIHNwZWVjaElucHV0KCk7CiAjZW5kaWYKQEAgLTMzMiw2ICszMzgsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxEZXZpY2VNb3Rpb25Db250cm9sbGVyPiBt
X2RldmljZU1vdGlvbkNvbnRyb2xsZXI7CiAgICAgICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI+IG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwogI2VuZGlmCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAgT3duUHRyPE1lZGlhU3RyZWFtQ29udHJvbGxl
cj4gbV9tZWRpYVN0cmVhbUNvbnRyb2xsZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogbV9zcGVlY2hJbnB1dENsaWVudDsKICAg
ICAgICAgT3duUHRyPFNwZWVjaElucHV0PiBtX3NwZWVjaElucHV0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>