<?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>77864</bug_id>
          
          <creation_ts>2012-02-06 04:24:41 -0800</creation_ts>
          <short_desc>[Qt] Initial implementation of accessibility support</short_desc>
          <delta_ts>2014-02-03 03:20:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Frederik Gladhorn">gladhorn</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>hausmann</cc>
    
    <cc>jdiggs</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mario</cc>
    
    <cc>qt-info</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549892</commentid>
    <comment_count>0</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 04:24:41 -0800</bug_when>
    <thetext>[Qt] Initial implementation of accessibility support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549893</commentid>
    <comment_count>1</comment_count>
      <attachid>125614</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 04:32:16 -0800</bug_when>
    <thetext>Created attachment 125614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549895</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 04:35:58 -0800</bug_when>
    <thetext>Attachment 125614 did not pass style-queue:

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

Source/WebKit/qt/Api/qwebviewaccessible.cpp:21:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/qt/Api/qwebview.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:20:  #ifndef header guard has wrong style, please use: qwebviewaccessible_p_h  [build/header_guard] [5]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:38:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:49:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:61:  The parameter name &quot;relation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:74:  The parameter name &quot;t&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/AccessibilityObject.h:49:  &quot;AccessibilityObjectWrapper.h&quot; already included at Source/WebCore/accessibility/AccessibilityObject.h:47  [build/include] [4]
Total errors found: 9 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549903</commentid>
    <comment_count>3</comment_count>
      <attachid>125614</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-06 04:50:24 -0800</bug_when>
    <thetext>Comment on attachment 125614
Patch

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

This is a nice start. Let&apos;s iterate :)

&gt; Source/WebCore/ChangeLog:10
&gt; +        No new tests. (OOPS!)

This line should be removed. You&apos;re just using re-implementing a missing platform interface.

&gt; Source/WebKit/ChangeLog:8
&gt; +        * WebKit.pri:

Append to the line that you added new files to the build.

&gt; Source/WebCore/accessibility/AccessibilityObject.h:667
&gt; +#elif PLATFORM(QT)
&gt; +    AccessibilityObjectWrapper* wrapper() const { return m_wrapper; }
&gt; +    void setWrapper(AccessibilityObjectWrapper* wrapper)
&gt; +    {
&gt; +        m_wrapper = wrapper;
&gt; +    }

Where do you call setWrapper? What is the ownership model?

&gt; Source/WebCore/accessibility/AccessibilityObject.h:723
&gt; +    AccessibilityObjectWrapper *m_wrapper;

Coding style, the * placement is wrong.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:40
&gt; +        //     case WebCore::AnnotationRole:
&gt; +        //         return QAccessible::;

I suppose you could remove one level of indentation here :)

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:282
&gt; +int AccessibilityObjectWrapper::indexOfChild(const QAccessibleInterface *childIface) const

Coding style (* placement)

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:284
&gt; +    const AccessibilityObjectWrapper *childWrapper = static_cast&lt;const AccessibilityObjectWrapper*&gt;(childIface);

Ditto.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:293
&gt; +    // FIXME use hit-testing code from AccessibilityObject

Missing period at the end of the sentence. Use // FIXME: Full sentence here.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:323
&gt; +                    QAccessibleInterface* webView = QAccessible::queryAccessibleInterface(pageClient-&gt;ownerWidget());
&gt; +                    QAccessibleInterface* webPage = webView-&gt;child(0);
&gt; +                    QAccessibleInterface* webFrame = webPage-&gt;child(0);
&gt; +
&gt; +                    delete webView;
&gt; +                    delete webPage;

Would it perhaps be nicer to put webView and webPage into an OwnPtr or a QScopedPointer?

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:330
&gt; +    return new AccessibilityObjectWrapper(m_object-&gt;parentObjectUnignored()); // FIXME 0 is wrong

What&apos;s 0?

Who owns the returned object?

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:334
&gt; +// this function is based on the gtk version of the same
&gt; +QString AccessibilityObjectWrapper::text(QAccessible::Text t) const

I think this code should be moved somewhere where it can be shared then, taking a platform-independent enum as argument and returning a String. Then this function here can call the new shared helper function and the String will be automatically converted to a QString.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:37
&gt; +#include &lt;qglobal.h&gt;

Is it necessary to include qglobal.h? Doesn&apos;t qaccessible.h do that implicitly?

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:70
&gt; +    virtual void setText(QAccessible::Text, const QString&amp;)
&gt; +    {
&gt; +    }

Instead of an inline implementation, should this perhaps be placed in the .cpp with notImplemented(); in it?

&gt; Source/WebKit/qt/Api/qwebview.cpp:1113
&gt; +

Stray newline?

&gt; Source/WebKit/qt/Api/qwebview.h:40
&gt; +
&gt; +
&gt; +

Stray newlines?

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:48
&gt; +class QWebFrameAccessible : public QAccessibleObject {

I suggest to place the implementation of the class into a .cpp file instead of it being entirely inline.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:50
&gt; +    QWebFrameAccessible(QWebFrame *frame)

Coding style (* placement).

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:57
&gt; +    QWebFrame *frame() const

Ditto.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:67
&gt; +    QAccessibleInterface *parent() const

Ditto.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:72
&gt; +    QAccessibleInterface *child(int index) const

Ditto.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:85
&gt; +        WebCore::AccessibilityObject *a = frame()-&gt;d-&gt;frame-&gt;document()-&gt;axObjectCache()-&gt;rootObject();

Ditto.

&gt; Source/api.pri:174
&gt; +contains(QT_CONFIG, accessibility) {
&gt; +    DEFINES += ACCESSIBILITY=1
&gt; +}

Did you check if the code still compiles with Qt 4.8? Could it be that you want a haveQt(5) or so before the contains?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549927</commentid>
    <comment_count>4</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 05:40:29 -0800</bug_when>
    <thetext>Thanks for the review. I fixed the trivial stuff and I&apos;ll have to check a few points below.

&gt; Append to the line that you added new files to the build.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:667
&gt; &gt; +#elif PLATFORM(QT)
&gt; &gt; +    AccessibilityObjectWrapper* wrapper() const { return m_wrapper; }
&gt; &gt; +    void setWrapper(AccessibilityObjectWrapper* wrapper)
&gt; &gt; +    {
&gt; &gt; +        m_wrapper = wrapper;
&gt; &gt; +    }
&gt; 
&gt; Where do you call setWrapper? What is the ownership model?

Actually I&apos;m not using it at all. I might be able to remove it completely since currently I only wrap the WebCore::AccessibilityObject into the QAccessibleInterface.
Qt manages the QAccessibleInterfaces and doesn&apos;t keep them persistent.


&gt; &gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:323
&gt; &gt; +                    QAccessibleInterface* webView = QAccessible::queryAccessibleInterface(pageClient-&gt;ownerWidget());
&gt; &gt; +                    QAccessibleInterface* webPage = webView-&gt;child(0);
&gt; &gt; +                    QAccessibleInterface* webFrame = webPage-&gt;child(0);
&gt; &gt; +
&gt; &gt; +                    delete webView;
&gt; &gt; +                    delete webPage;
&gt; 
&gt; Would it perhaps be nicer to put webView and webPage into an OwnPtr or a QScopedPointer?
&gt; 
&gt; &gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:330
&gt; &gt; +    return new AccessibilityObjectWrapper(m_object-&gt;parentObjectUnignored()); // FIXME 0 is wrong
&gt; 
&gt; What&apos;s 0?
This was an old comment when I was debugging the initial version.
&gt; 
&gt; Who owns the returned object?
I don&apos;t like the way it&apos;s done in the Qt apis, but the caller owns the object, it&apos;s the same for parent/child and other calls.

&gt; 
&gt; &gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.cpp:334
&gt; &gt; +// this function is based on the gtk version of the same
&gt; &gt; +QString AccessibilityObjectWrapper::text(QAccessible::Text t) const
&gt; 
&gt; I think this code should be moved somewhere where it can be shared then, taking a platform-independent enum as argument and returning a String. Then this function here can call the new shared helper function and the String will be automatically converted to a QString.

I agree.

&gt; &gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:37
&gt; &gt; +#include &lt;qglobal.h&gt;
&gt; 
&gt; Is it necessary to include qglobal.h? Doesn&apos;t qaccessible.h do that implicitly?
&gt; 
&gt; &gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:70
&gt; &gt; +    virtual void setText(QAccessible::Text, const QString&amp;)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; Instead of an inline implementation, should this perhaps be placed in the .cpp with notImplemented(); in it?
&gt; 

&gt; &gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:48
&gt; &gt; +class QWebFrameAccessible : public QAccessibleObject {
&gt; 
&gt; I suggest to place the implementation of the class into a .cpp file instead of it being entirely inline.
Yes, now that it&apos;s working that makes a lot of sense.

&gt; &gt; Source/api.pri:174
&gt; &gt; +contains(QT_CONFIG, accessibility) {
&gt; &gt; +    DEFINES += ACCESSIBILITY=1
&gt; &gt; +}
&gt; 
&gt; Did you check if the code still compiles with Qt 4.8? Could it be that you want a haveQt(5) or so before the contains?
In theory it&apos;s no big deal to get it working with Qt 4 also, but I don&apos;t think it&apos;s as interesting as moving to WK2.
So I&apos;ll put the haveQt(5) in there for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549959</commentid>
    <comment_count>5</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 06:45:08 -0800</bug_when>
    <thetext>Building with Qt 4 actually works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549960</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-06 06:47:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Building with Qt 4 actually works.

Wicked :). Even one that has accessibility in QT_CONFIG?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549962</commentid>
    <comment_count>7</comment_count>
      <attachid>125635</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 06:50:58 -0800</bug_when>
    <thetext>Created attachment 125635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549964</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 06:53:58 -0800</bug_when>
    <thetext>Attachment 125635 did not pass style-queue:

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

Source/WebKit/qt/Api/qwebviewaccessible_p.h:20:  #ifndef header guard has wrong style, please use: qwebviewaccessible_p_h  [build/header_guard] [5]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:36:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:47:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:65:  The parameter name &quot;page&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:75:  The parameter name &quot;t&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/qt/Api/qwebviewaccessible_p.h:83:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:48:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:60:  The parameter name &quot;relation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/accessibility/qt/AccessibilityObjectWrapper.h:71:  The parameter name &quot;t&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549969</commentid>
    <comment_count>9</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 06:58:31 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Building with Qt 4 actually works.
&gt; 
&gt; Wicked :). Even one that has accessibility in QT_CONFIG?

Hehe, yes, it is in there by default. But the qt version checks for 5 do the trick. I&apos;m not entirely sure if Qt currently builds with QT_NO_ACCESSIBILITY. But that&apos;s something to fix in qtbase if not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549973</commentid>
    <comment_count>10</comment_count>
      <attachid>125635</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-06 07:05:00 -0800</bug_when>
    <thetext>Comment on attachment 125635
Patch

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

&gt;&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:83
&gt;&gt; +    QWebViewAccessible(QWebView* view);
&gt; 
&gt; The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

So the meaning of this warning from the style queue is that you should simply remove the view parameter name, i.e.

    QWebViewAccessible(QWebView*);

(and you can use the parameter in the _implementation_ if you need it of course)

The rationale is that the &quot;View&quot; part of the type name is &quot;redundant&quot; with the &quot;view&quot; parameter name, it is a view anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549975</commentid>
    <comment_count>11</comment_count>
      <attachid>125638</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-06 07:12:13 -0800</bug_when>
    <thetext>Created attachment 125638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549977</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 07:14:27 -0800</bug_when>
    <thetext>Attachment 125638 did not pass style-queue:

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

Source/WebKit/qt/Api/qwebviewaccessible_p.h:20:  #ifndef header guard has wrong style, please use: qwebviewaccessible_p_h  [build/header_guard] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550699</commentid>
    <comment_count>13</comment_count>
      <attachid>125780</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-07 01:09:25 -0800</bug_when>
    <thetext>Created attachment 125780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550754</commentid>
    <comment_count>14</comment_count>
      <attachid>125795</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-07 02:32:55 -0800</bug_when>
    <thetext>Created attachment 125795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550871</commentid>
    <comment_count>15</comment_count>
      <attachid>125795</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-07 05:01:19 -0800</bug_when>
    <thetext>Comment on attachment 125795
Patch

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

Awesome patch, Frederik. Just performing an informal review now.

See my (hopefully useful) comments below...

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:300
&gt; +

I would not include this kind of fixes in this patch (unless they are in the scope of an actual change), since it alters the diff in an unrelated way.

If you feel like fixing this kind of things, it&apos;s better to file a bug for that.

&gt; Source/WebCore/accessibility/AccessibilityObject.h:310
&gt; +

Ditto.

&gt; Source/WebCore/accessibility/AccessibilityObject.h:663
&gt; +    void setWrapper(AccessibilityObjectWrapper* wrapper)

I probably would not change this either, but as it&apos;s so close to an actual change (#elif), I think it makes sense.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectQt.cpp:37
&gt; +    return IncludeObject;

Are you sure you want to do this here? Normally, this function is meant to give flexibility to some ports that do not want to go ahead with the &quot;default behavior&quot; for some very specific cases, this falling back to DefaultBehavior if the AccessibilityObject does not match none of those very specific cases.

What you&apos;re saying here is that, basically, you want to expose *any* WebCore&apos;s Accessibility object in Qt, even those that should probably not be exposed (e.g. those returning &apos;true&apos; in ariaIsHidden() and isPresentationalChildOfAriaRole()).

Maybe it&apos;s what you want, though. Pointing it out just in case, as it&apos;s normally not that way (if you check the mac port you&apos;ll see they also ignore some specific objects).

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectQt.cpp:40
&gt; +

Unneeded extra empty line.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:30
&gt; +*/

Wrong coding style. Place a &apos;*&apos; at the beginning of every line.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:54
&gt; +    //     case AnnotationRole:

Only one space between the // and &apos;case&apos;. Further commented lines should be the same way, respecting the indentation of course.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:255
&gt; +

Unneeded empty line.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:339
&gt; +    }

You should use early returns here to remove unneeded levels of indentation. Also, you should probably add some extra nullchecks, like checking if the document returned by m_object-&gt;document() is a valid one.

Something like this, more or less:

    [...]
    // Check if this is the root object. If so, we need to return the Frame as parent
    if (m_object-&gt;parentObjectUnignored() || !m_object-&gt;isScrollView())
        return 0;

    AccessibilityObject* firstChild = m_object-&gt;firstChild();
    if (!firstChild || !firstChild-&gt;isWebArea())
        return 0;

    // We seem to be the root accessible, get the Frame
    Document* document = m_object-&gt;document();
    if (!document)
        return 0;

    HostWindow* hostWindow = document-&gt;view()-&gt;hostWindow();
    if (!hostWindow)
        return 0;

    QWebPageClient* pageClient = hostWindow-&gt;platformPageClient();
    if (!pageClient || !pageClient-&gt;isQWidgetClient())
        return 0;

    // FIXME: Writing the same for QGraphicsView should be trivial.
    QScopedPointer&lt;QAccessibleInterface&gt; webView(QAccessible::queryAccessibleInterface(pageClient-&gt;ownerWidget()));
    QScopedPointer&lt;QAccessibleInterface&gt; webPage(webView-&gt;child(0));
    QAccessibleInterface* webFrame = webPage-&gt;child(0);
        return webFrame;

    [...]

Yeah, I know in the ATK wrapper there&apos;s atkParentOfRootObject(). We should change that there at some point too :-)

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:343
&gt; +// FXIME: Create a helper used by gtk and here

Typo (FXIME) + missing period at the end of the line.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:347
&gt; +    case QAccessible::Name: {

Why are you using &apos;{&apos;/&apos;}&apos; in this &apos;case&apos; entry?

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.h:18
&gt; +*/

Missing &apos;*&apos; at the beginning of every line.

&gt; Source/WebKit/qt/Api/qwebpage.h:451
&gt; +

Unneeded empty line?

&gt; Source/WebKit/qt/Api/qwebview.cpp:173
&gt; +// The QAccessible interfaces changed API in Qt 5

Missing period at the end of the line.

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:18
&gt; +*/

Missing &apos;*&apos; at the beginning of every line.

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:73
&gt; +    WebCore::AccessibilityObject* a = frame()-&gt;d-&gt;frame-&gt;document()-&gt;axObjectCache()-&gt;rootObject();

You probably want to add a couple of checks here: at least one for the result of frame-&gt;document(), and another for document-&gt;axObjectCache().

Also, &apos;a&apos; is not a good name for a variable in WebKit. You should use something meaningful instead. Looks like &apos;rootObject&apos;, &apos;rootAccessibilityObject&apos; or &apos;axRootObject&apos; (this &apos;ax&apos; prefix is kind of a convention in a11y related code) might work fine.

Last, I have no idea about QWebFrame, but I wonder if the &apos;frame()-&gt;d&apos; statement could be replaced for something more understandable :)

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:97
&gt; +    WebCore::AccessibilityObject* a = frame()-&gt;d-&gt;frame-&gt;document()-&gt;axObjectCache()-&gt;rootObject();

Same here.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:18
&gt; +*/

Missing &apos;*&apos; at the beginning of every line.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:30
&gt; +

This empty line is not needed.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:35
&gt; +

Same here.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:62
&gt; +

...and here :-)

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:80
&gt; +

...and here too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550942</commentid>
    <comment_count>16</comment_count>
      <attachid>125837</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-07 06:41:02 -0800</bug_when>
    <thetext>Created attachment 125837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550944</commentid>
    <comment_count>17</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-07 06:43:38 -0800</bug_when>
    <thetext>&gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectQt.cpp:37
&gt;&gt; +    return IncludeObject;
&gt; 
&gt; Are you sure you want to do this here? Normally, this function is meant to give flexibility to some ports that do not want to go ahead with the &quot;default behavior&quot; for some very specific cases, this falling back to DefaultBehavior if the AccessibilityObject does not match none of those very specific cases.
&gt; 
&gt; What you&apos;re saying here is that, basically, you want to expose *any* WebCore&apos;s Accessibility object in Qt, even those that should probably not be exposed (e.g. those returning &apos;true&apos; in ariaIsHidden() and isPresentationalChildOfAriaRole()).
&gt; 
&gt; Maybe it&apos;s what you want, though. Pointing it out just in case, as it&apos;s normally not that way (if you check the mac port you&apos;ll see they also ignore some specific objects).

For now (debugging and getting this to run at all, I consciously include everything.
Filtering this in a sensible way is on my todo and I&apos;ll check the GTK implementation again.
Right now I feel that it&apos;s too much for one patch. This will come with implementing states and other interfaces which is also missing.

&gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:30
&gt;&gt; +*/
&gt; 
&gt; Wrong coding style. Place a &apos;*&apos; at the beginning of every line.

I don&apos;t see this in the style guide lines. I don&apos;t see the point of adding those stars... I can if it makes you happy though.

&gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:54
&gt;&gt; +    //     case AnnotationRole:
&gt; 
&gt; Only one space between the // and &apos;case&apos;. Further commented lines should be the same way, respecting the indentation of course.

This is one of the next things to sort out anyway. I&apos;d rather do it in a follow up commit though.

&gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:347
&gt;&gt; +    case QAccessible::Name: {
&gt; 
&gt; Why are you using &apos;{&apos;/&apos;}&apos; in this &apos;case&apos; entry?

Because I declare String axTitle inside. If you don&apos;t have the parenthesis, you get &quot;jump to case label/crosses initialization&quot;.

&gt;&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:73
&gt;&gt; +    WebCore::AccessibilityObject* a = frame()-&gt;d-&gt;frame-&gt;document()-&gt;axObjectCache()-&gt;rootObject();
&gt; 
&gt; You probably want to add a couple of checks here: at least one for the result of frame-&gt;document(), and another for document-&gt;axObjectCache().
&gt; 
&gt; Also, &apos;a&apos; is not a good name for a variable in WebKit. You should use something meaningful instead. Looks like &apos;rootObject&apos;, &apos;rootAccessibilityObject&apos; or &apos;axRootObject&apos; (this &apos;ax&apos; prefix is kind of a convention in a11y related code) might work fine.
&gt; 
&gt; Last, I have no idea about QWebFrame, but I wonder if the &apos;frame()-&gt;d&apos; statement could be replaced for something more understandable :)

d is just the pimpl, anyone knowing Qt knows what it&apos;s about.
I agree about the variable names and checks though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550963</commentid>
    <comment_count>18</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-07 07:17:12 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt;[...]
&gt; For now (debugging and getting this to run at all, I consciously include everything.
&gt; Filtering this in a sensible way is on my todo and I&apos;ll check the GTK implementation again.

Seems sensible to me. Just wanting to make sure it was done on purpose.

&gt; Right now I feel that it&apos;s too much for one patch. This will come with implementing states and other interfaces which is also missing.

I also had that feeling, but I also understand that for start iterating over it having it this way is not that bad. Perhaps you could think of ways to splitting it in some way in the future... maybe one patch for the changes in WebCore and another one for the changes in the WebKit/qt layer?

&gt; &gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:30
&gt; &gt;&gt; +*/
&gt; &gt; 
&gt; &gt; Wrong coding style. Place a &apos;*&apos; at the beginning of every line.
&gt; 
&gt; I don&apos;t see this in the style guide lines. I don&apos;t see the point of adding those stars... I can if it makes you happy though.

I don&apos;t think this is in the coding style at all since, after all, C coments &apos;/* ... */&apos; are not the ones that should be used in WebKit&apos;s C++ code base in general.

I just pointed that out because that&apos;s what it&apos;s being done anyway in other files in WebCore (check headers in dom/ accessibility/ node/ ...  and so forth), and so I thought it was a good thing to do here as well, for the sake of consistency.

&gt; &gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:54
&gt; &gt;&gt; +    //     case AnnotationRole:
&gt; &gt; 
&gt; &gt; Only one space between the // and &apos;case&apos;. Further commented lines should be the same way, respecting the indentation of course.
&gt; 
&gt; This is one of the next things to sort out anyway. I&apos;d rather do it in a follow up commit though.

Ok.

&gt; &gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:347
&gt; &gt;&gt; +    case QAccessible::Name: {
&gt; &gt; 
&gt; &gt; Why are you using &apos;{&apos;/&apos;}&apos; in this &apos;case&apos; entry?
&gt; 
&gt; Because I declare String axTitle inside. If you don&apos;t have the parenthesis, you get &quot;jump to case label/crosses initialization&quot;.

When that kind of things happen, the usual the way to go is to pre-declare those variables you need before the switch statement, I think. I know it&apos;s probably not the ideal thing but violating the coding style is not a good option either.

However, in this case I&apos;d say the right one after all would be to move all the code in &apos;case QAccessible::Name:&apos; out to a separate private function, so you just call it from there. Also, if you move it out to a separate function you will probably gain another advantage: you can probably use early returns to get rid of the 3-level of indentation in those &apos;if&apos; blocks in the middle. Looks like a win-win to me :)

&gt; &gt;&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:73
&gt; &gt;&gt; +    WebCore::AccessibilityObject* a = frame()-&gt;d-&gt;frame-&gt;document()-&gt;axObjectCache()-&gt;rootObject();
&gt; &gt; 
&gt; &gt; You probably want to add a couple of checks here: at least one for the result of frame-&gt;document(), and another for document-&gt;axObjectCache().
&gt; &gt; 
&gt; &gt; Also, &apos;a&apos; is not a good name for a variable in WebKit. You should use something meaningful instead. Looks like &apos;rootObject&apos;, &apos;rootAccessibilityObject&apos; or &apos;axRootObject&apos; (this &apos;ax&apos; prefix is kind of a convention in a11y related code) might work fine.
&gt; &gt; 
&gt; &gt; Last, I have no idea about QWebFrame, but I wonder if the &apos;frame()-&gt;d&apos; statement could be replaced for something more understandable :)
&gt; 
&gt; d is just the pimpl, anyone knowing Qt knows what it&apos;s about.

Ok, as I said I have no idea about QWebFrame, so it makes sense to you I&apos;m fine too.

&gt; I agree about the variable names and checks though.

Great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552022</commentid>
    <comment_count>19</comment_count>
      <attachid>125837</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-08 04:38:23 -0800</bug_when>
    <thetext>Comment on attachment 125837
Patch

One thing I&apos;m a bit uneasy about now is the ownership.

AccessibilityObject is refcounted and it seems that on mac/win/chromium the AccessibilityObject also keeps a strong reference on the wrapper object.

This pattern is completely ignored right now, the Qt version of AccessibilityObjectWrapper keeps a raw pointer to the AccessibilityObject, which means it can become dangling at any time.

WTF::RefCounted does not support weak pointers, but there&apos;s the AXObjectCache along with the objects having AXIDs. Is this perhaps what we should be using instead?

So that our implementation of QAccessibleInterface* - which btw should probably live in WebKit/qt/WebCoreSupport - stores a weak pointer to the QWebPage as well as the AXID. Then when we need an AccessibilityObject we can look it up from the document&apos;s AXObjectCache through the ID.

Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552096</commentid>
    <comment_count>20</comment_count>
      <attachid>125837</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-08 07:07:16 -0800</bug_when>
    <thetext>Comment on attachment 125837
Patch

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

Hi again. Thanks for iterating over the patch, this one looks better indeed.

Still, some issues remain, please see my comments below...

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:6
&gt; +

You&apos;re gonna hate me for being such a nitpicker, but the convention used all around WebKit is to put an * at the beginning of _every_ line between the &apos;/*&apos; and the &apos;*/&apos;, even if it&apos;s just an empty line (so only the &apos; *&apos; string would be there, The same issue seems to be present in the rest of new files you&apos;re adding with this patch.

Just check other files&apos; headers and you&apos;ll see what I mean :-)

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:338
&gt; +    }

As I said in comment #15, you should use early returns here to ger rid of this 4 levels of indentation.

Also, you should null-check the result of m_object-&gt;document() with a simple &quot;if (document) return 0;&quot;

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:342
&gt; +// FXIME: Create a helper used by gtk and here.

Typo still here.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:346
&gt; +    case QAccessible::Name: {

As I said earlier in comment #18, you should move this (too big) piece of code here to an external function, and use early returns there.

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:45
&gt; +
&gt; +
&gt; +

Two many empty lines here. Keep just one.

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:73
&gt; +    WebCore::Document* document = frame()-&gt;d-&gt;frame-&gt;document();
&gt; +    if (!document || !document-&gt;axObjectCache())
&gt; +        return 0;
&gt; +    WebCore::AccessibilityObject* rootAccessible = document-&gt;axObjectCache()-&gt;rootObject();

Thanks for adding the extra checks here, but you&apos;re calling axObjectCache() twice here and that&apos;s something that is normally avoided by putting the result in a variable and doing the check separately. Something like this would be better (even though it&apos;s longer):

   WebCore::Document* document = frame()-&gt;d-&gt;frame-&gt;document();
   if (!document)
      return 0;

   AXObjectCache* axObjectCache = document-&gt;axObjectCache();
   if (!axObjectCache)
      return 0;

   WebCore::AccessibilityObject* rootAccessible = axObjectCache-&gt;rootObject();

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:86
&gt; +    WebCore::Document* document = frame()-&gt;d-&gt;frame-&gt;document();
&gt; +    if (!document || !document-&gt;axObjectCache())
&gt; +        return 0;
&gt; +
&gt; +    WebCore::AccessibilityObject* rootAccessible = document-&gt;axObjectCache()-&gt;rootObject();

Ditto.

&gt; Source/WebKit/qt/Api/qwebviewaccessible.cpp:167
&gt; +
&gt; +
&gt; +

Two many empty lines.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:61
&gt; +
&gt; +

Remove one empty line.

&gt; Source/WebKit/qt/Api/qwebviewaccessible_p.h:79
&gt; +
&gt; +

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552318</commentid>
    <comment_count>21</comment_count>
      <attachid>125837</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-08 11:23:29 -0800</bug_when>
    <thetext>Comment on attachment 125837
Patch

I agree with Mario and I had a chat with Frederik about the memory management. So let&apos;s do another iteration :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553146</commentid>
    <comment_count>22</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-02-09 07:28:21 -0800</bug_when>
    <thetext>Thanks for all the reviewing so far :)
I also found that I had the HAVE_ACCESSIBILITY define in the wrong place so it was still not picked up actually.
I&apos;ll try to figure out the proper way to handle the memory management issues next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643332</commentid>
    <comment_count>23</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-07 01:56:48 -0700</bug_when>
    <thetext>Hi again, just wondering if there&apos;s any plan to keep working on this patch.

AFAIK Frederik started working on this on his spare time (please correct me if I&apos;m wrong), so no intention here to put any pressure or so.

Just wondering, because this bug came to my mind recently due to other reasons. 

That&apos;s it :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794506</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-12-19 04:16:21 -0800</bug_when>
    <thetext>*** Bug 30626 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794647</commentid>
    <comment_count>25</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-19 07:14:52 -0800</bug_when>
    <thetext>*** Bug 36693 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795461</commentid>
    <comment_count>26</comment_count>
      <attachid>180345</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2012-12-20 08:31:08 -0800</bug_when>
    <thetext>Created attachment 180345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795463</commentid>
    <comment_count>27</comment_count>
      <attachid>180345</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 08:39:58 -0800</bug_when>
    <thetext>Comment on attachment 180345
Patch

Attachment 180345 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15451074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795466</commentid>
    <comment_count>28</comment_count>
      <attachid>180345</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 08:41:16 -0800</bug_when>
    <thetext>Comment on attachment 180345
Patch

Attachment 180345 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15451075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795759</commentid>
    <comment_count>29</comment_count>
      <attachid>180345</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-12-20 13:47:18 -0800</bug_when>
    <thetext>Comment on attachment 180345
Patch

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

&gt; Source/WTF/WTF.pri:42
&gt; +haveQt(5): contains(QT_CONFIG,accessibility): DEFINES += HAVE_ACCESSIBILITY=1

This should probably go into features.pri.

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectQt.cpp:40
&gt; +void AccessibilityObject::setWrapper(AccessibilityObjectWrapper *wrapper)

* placement

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:126
&gt; +                    QScopedPointer&lt;QAccessibleInterface&gt; webView(QAccessible::queryAccessibleInterface(pageClient-&gt;ownerWidget()));

How do the other ports handle this? Is there a simpler or common way?

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.h:28
&gt; +class QWebFrame;

That doesn&apos;t seem to be needed

&gt; Source/WebKit/qt/WidgetApi/qwebviewaccessible.cpp:34
&gt; +    if (!WebCore::AXObjectCache::accessibilityEnabled())

This class (qwebviewaccessible) needs to move from QtWebKitWidgets into QtWebKit. Try compiling with make &amp;&amp; make to see when this is needed (instead of build-webkit)

(This is a flaw in our current build process)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796172</commentid>
    <comment_count>30</comment_count>
      <attachid>180345</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-12-21 00:31:57 -0800</bug_when>
    <thetext>Comment on attachment 180345
Patch

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

Thanks Frederik for working on this patch. Guess it&apos;s not coincidence the release of Qt5 happened two days ago, huh? :-)

In any case, overall the patch looks good to me providing it works (I have no much knowledge about Qt) and that you fix both those build issues spotted by the EWS and the things both Simon and me commented on.

&gt; Source/WebCore/Target.pri:56
&gt; +    accessibility/AXObjectCacheQt.cpp \

Why not placing AXObjectCacheQt.cpp inside of accessibility/qt, as other ports do?

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:78
&gt; +#if PLATFORM(GTK) || (PLATFORM(EFL) &amp;&amp; HAVE(ACCESSIBILITY)) || (PLATFORM(QT) &amp;&amp; HAVE(ACCESSIBILITY))

You could refactor this boolean condition to something shorter:

  #if PLATFORM(GTK) || ((PLATFORM(EFL) || PLATFORM(QT)) &amp;&amp; HAVE(ACCESSIBILITY))

...or maybe just to leave it as &quot;#if HAVE(ACCESSIBILITY)&quot; (not 100% sure though)

&gt;&gt; Source/WebCore/accessibility/qt/AccessibilityObjectQt.cpp:40
&gt;&gt; +void AccessibilityObject::setWrapper(AccessibilityObjectWrapper *wrapper)
&gt; 
&gt; * placement

Misplaced &quot;*&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803276</commentid>
    <comment_count>31</comment_count>
      <attachid>181907</attachid>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2013-01-09 06:10:21 -0800</bug_when>
    <thetext>Created attachment 181907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803279</commentid>
    <comment_count>32</comment_count>
    <who name="Frederik Gladhorn">gladhorn</who>
    <bug_when>2013-01-09 06:12:06 -0800</bug_when>
    <thetext>I need to still look into this comment from Simon:
&gt; This class (qwebviewaccessible) needs to move from QtWebKitWidgets into QtWebKit. Try compiling with make &amp;&amp; make to see when this is needed (instead of build-webkit)

And accessibility needs to be enabled only for Qt 5.1, so there should probably be a qt version check in the .pri file.

I just thought it made sense to update the patch with what I currently have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803297</commentid>
    <comment_count>33</comment_count>
      <attachid>181907</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-09 06:35:07 -0800</bug_when>
    <thetext>Comment on attachment 181907
Patch

Attachment 181907 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15758543</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803301</commentid>
    <comment_count>34</comment_count>
      <attachid>181907</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-09 06:39:54 -0800</bug_when>
    <thetext>Comment on attachment 181907
Patch

Attachment 181907 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15755586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803319</commentid>
    <comment_count>35</comment_count>
      <attachid>181907</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-09 07:16:50 -0800</bug_when>
    <thetext>Comment on attachment 181907
Patch

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

Some early comments

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:51
&gt; +    Q_ASSERT(m_document);
&gt; +    Q_ASSERT(m_id);

We use WTF/WebKit types and macros usually, so in this case just ASSERT() :)

&gt; Source/WebCore/accessibility/qt/AccessibilityObjectWrapperQt.cpp:102
&gt; +    if (accessibilityObject()) {
&gt; +        const AccessibilityObjectWrapper* childWrapper = static_cast&lt;const AccessibilityObjectWrapper*&gt;(childIface);
&gt; +        if (AccessibilityObject* childObject = childWrapper-&gt;accessibilityObject()) {
&gt; +            AccessibilityObject* parentObject = childObject-&gt;parentObjectUnignored();
&gt; +            if (parentObject)
&gt; +                return parentObject-&gt;children().find(childObject);
&gt; +        }
&gt; +    }
&gt; +    return -1;

I&apos;ve become a fan of the early-return style of code formatting that reduces the nesting required. So

if (!accessibiltyObject())
   return -1;

&lt;other code with one level of indentation less&gt;

&gt; Source/WebKit/qt/WidgetApi/qwebviewaccessible.cpp:64
&gt; +    if (index)

Would it perhaps be more readable to write if (index != 0) ?

&gt; Tools/qmake/mkspecs/features/features.prf:124
&gt; +    contains(QT_CONFIG,accessibility) {

Yeah so it looks like here you need to do a Qt version check :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935662</commentid>
    <comment_count>36</comment_count>
      <attachid>181907</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-02 21:18:42 -0700</bug_when>
    <thetext>Comment on attachment 181907
Patch

Qt has been removed, clearing review flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975396</commentid>
    <comment_count>37</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:20:00 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125614</attachid>
            <date>2012-02-06 04:32:16 -0800</date>
            <delta_ts>2012-02-06 06:50:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20120206133213.patch</filename>
            <type>text/plain</type>
            <size>37820</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uNWEwZTdlZTQ1ZmIyMTVlOTk0MjVhYWEzNDIzMmIx
Y2Q4OTY4ODU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTA2ICBGcmVk
ZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFF0IHdyYXBw
ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxp
dHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxlUm9sZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpyb2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGlsZEF0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpuYXZpZ2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cGFyZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjp0ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVjdCk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmlzVmFsaWQpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6Om9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6c2V0VGV4dCk6CisKIDIwMTItMDIt
MDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR2NjIGJ1aWxk
IGZpeCBhZnRlciByMTA2NDgyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZmM5YWRmN2EwYmYzODQyODIyOGU3YzYz
NmFmNzcyYmM1NzExNDM2Li43ZmNiMzNjNjBhYjM5ODdjNTMzNDdhZGVkMmI0YzE0ZmMzZjYyY2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnByaToKKwogMjAxMi0wMS0x
MSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBBU1NFUlQgZmFpbHVyZSBpbiBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRl
bnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNTU0M2U2MDFiZWIxYzYyNTc4ZDgwZjc3MjJiZmQ5NTM1
NDJiODA1My4uNDFjMzFiODQxNmM2NjhlOTliYjE3NzEzMGEwY2Y5NzdiYWI2ZDRlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wMi0wNiAgRnJlZGVyaWsgR2xhZGhvcm4g
IDxmcmVkZXJpay5nbGFkaG9ybkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBJbml0aWFsIGlt
cGxlbWVudGF0aW9uIG9mIGFjY2Vzc2liaWxpdHkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgUVdlYlZpZXcgdG8gdGhlIGFjY2Vz
c2liaWxpdHkgZnJhbWV3b3JrIGFuZCBtYWtlCisgICAgICAgIGl0IHBvc3NpYmxlIHRvIG5hdmln
YXRlIGludG8gdGhlIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QgaGllcmFyY2h5LgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAg
ICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6UVdlYlZpZXcpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIEFwaS9xd2Vidmlld2FjY2Vzc2li
bGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKGFjY2Vzc2libGVJbnRlcmZhY2VGYWN0b3J5KToKKyAg
ICAgICAgKiBBcGkvcXdlYnZpZXdhY2Nlc3NpYmxlX3AuaDogQWRkZWQuCisgICAgICAgIChRV2Vi
RnJhbWVBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OlFXZWJGcmFt
ZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6ZnJhbWUpOgorICAg
ICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6dGV4dCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjpwYXJlbnQpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6Y2hpbGQpOgor
ICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisgICAgICAgIChRV2Vi
RnJhbWVBY2Nlc3NpYmxlOjppbmRleE9mQ2hpbGQpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNz
aWJsZTo6bmF2aWdhdGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6cm9sZSk6Cisg
ICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpzdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZUFj
Y2Vzc2libGUpOgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpRV2ViUGFnZUFjY2Vzc2li
bGUpOgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYWdlKToKKyAgICAgICAgKFFXZWJQ
YWdlQWNjZXNzaWJsZTo6dGV4dCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhcmVu
dCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OmNoaWxkKToKKyAgICAgICAgKFFXZWJQ
YWdlQWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6
OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6Om5hdmlnYXRlKToK
KyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cm9sZSk6CisgICAgICAgIChRV2ViUGFnZUFj
Y2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZSk6CisgICAgICAg
IChRV2ViVmlld0FjY2Vzc2libGU6OlFXZWJWaWV3QWNjZXNzaWJsZSk6CisgICAgICAgIChRV2Vi
Vmlld0FjY2Vzc2libGU6OnZpZXcpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlOjpjaGls
ZCk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNoaWxkQ291bnQpOgorCiAyMDEyLTAy
LTAxICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIENTU1N0eWxlRGVjbGFyYXRpb24uZ2V0UHJvcGVydHlQcmlvcml0eSgpIGZhaWxzIGZvciBD
U1Mgc2hvcnRoYW5kIHByb3BlcnRpZXMgd2l0aCAnaW1wb3J0YW50JyBwcmlvcml0eQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggZmM2ZjZlNjRmMzhmM2M5YWQ5YjE4YzFiYzRiNjRiYzA3YzdhZGU2NS4uYTg0MzU4
MWFhNzliOTUyMjJhODQ4YTNmOTgzNzk2NTgwZjgyZTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yNzY3
LDYgKzI3NjcsNyBAQCBIRUFERVJTICs9IFwKIAogU09VUkNFUyArPSBcCiAgICAgYWNjZXNzaWJp
bGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwIFwKKyAgICBhY2Nlc3NpYmlsaXR5L3F0
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmNwcCBcCiAgICAgcGFnZS9xdC9EcmFnQ29udHJv
bGxlclF0LmNwcCBcCiAgICAgcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L1RyYW5zZm9ybWF0aW9uTWF0cml4UXQuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkK
aW5kZXggYWRkZDU4NzkzOTc5ZjI3ZDQzZTY4OTAwNDVlZmY0MmY2YmYxYzliOC4uNjE3MjMxYjBk
ZTEyMWY3Yjk3NmVmOGEyNjVmMmFhMjY1NGZlYjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTE5LDYg
KzE5LDcgQEAgV0VCQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIgPSAkJHtST09UX0JVSUxEX0RJ
Un0vU291cmNlL1dlYkNvcmUvJCR7R0VORVJBVEVEX1MKIElOQ0xVREVQQVRIICs9IFwKICAgICAk
JFNPVVJDRV9ESVIgXAogICAgICQkU09VUkNFX0RJUi9hY2Nlc3NpYmlsaXR5IFwKKyAgICAkJFNP
VVJDRV9ESVIvYWNjZXNzaWJpbGl0eS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL2JpbmRpbmdzIFwK
ICAgICAkJFNPVVJDRV9ESVIvYmluZGluZ3MvZ2VuZXJpYyBcCiAgICAgJCRTT1VSQ0VfRElSL2Jy
aWRnZSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCmluZGV4IGM0MTdjYzk1ODU3MTIxNmQwY2EwNGQzYmI0NGI3ZmMyZDYxZmE0ZDku
LjU4MTAyNGI2Mzc1YTYwNDcwNTRhMzY5YzQ3OTI3YmMzNjgxOGZmNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC00NSw2
ICs0NSw4IEBACiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIgorI2VsaWYgUExBVEZPUk0o
UVQpCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCIKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNjU3LDkgKzY1OSwxNSBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKik7CisjZWxp
ZiBQTEFURk9STShRVCkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigp
IGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlcjsgfQorICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikKKyAgICB7CisgICAgICAgIG1fd3JhcHBlciA9
IHdyYXBwZXI7CisgICAgfQogI2Vsc2UKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciog
d3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgCisgICAgdm9pZCBz
ZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKQogICAgIHsKICAg
ICAgICAgbV93cmFwcGVyID0gd3JhcHBlcjsKICAgICB9CkBAIC03MTEsNiArNzE5LDggQEAgcHJv
dGVjdGVkOgogICAgIEF0a09iamVjdCogbV93cmFwcGVyOwogI2VsaWYgUExBVEZPUk0oQ0hST01J
VU0pCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7Cisj
ZWxpZiBQTEFURk9STShRVCkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqbV93cmFw
cGVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKaW5kZXggNzIzMjY0MjM3ODk2OTI4
Nzc4Mjk4YTBkOTMwMjk0NjU4NDYzNzlhOC4uOWE2ZTBkODE3ZDViNzI2MjU3Y2VlNmNkNzdkYmQx
ZjhlYmI0NzhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9B
Y2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcApAQCAtMzQsOSArMzQsMTAgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5
UGxhdGZvcm1JbmNsdWRlc08KICAgICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwgaXNNZW51TGlz
dE9wdGlvbigpKQogICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OwogCi0gICAgcmV0dXJuIERl
ZmF1bHRCZWhhdmlvcjsKKyAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsKIH0KIAorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNzFiYzA3ZGUzMjI5NTdiMGM4YWY3NjY0
MTlhYjFiZGI5NjYwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmNwcApAQCAtMCwwICsxLDQwMiBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgiCisKKy8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZh
Y2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hF
Q0soNSwgMCwgMCkKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKKyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorCisjaW5jbHVkZSAicXdpZGdldC5o
IgorCisjaW5jbHVkZSAicWRlYnVnLmgiCisKK1FBY2Nlc3NpYmxlOjpSb2xlIHdlYktpdFJvbGVU
b1FBY2Nlc3NpYmxlUm9sZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQoreworICAg
IHN3aXRjaCAocm9sZSkgeworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpBbm5vdGF0aW9u
Um9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNl
IFdlYkNvcmU6OkFwcGxpY2F0aW9uUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpB
cHBsaWNhdGlvbjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6QXBwbGljYXRpb25BbGVy
dFJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAg
IC8vICAgICBjYXNlIFdlYkNvcmU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgorICAgICAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgICAgICAvLyAgICAgY2FzZSBX
ZWJDb3JlOjpBcHBsaWNhdGlvbkRpYWxvZ1JvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6OkFwcGxpY2F0aW9u
TG9nUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAg
ICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6QXBwbGljYXRpb25NYXJxdWVlUm9sZToKKyAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2Vi
Q29yZTo6QXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBR
QWNjZXNzaWJsZTo6OworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpBcHBsaWNhdGlvblRp
bWVyUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAg
ICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6QnJvd3NlclJvbGU6CisgICAgICAgIC8vICAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6OkJ1c3lJ
bmRpY2F0b3JSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIGNhc2UgV2ViQ29yZTo6QnV0dG9uUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
OjpCdXR0b247CisgICAgY2FzZSBXZWJDb3JlOjpDZWxsUm9sZToKKyAgICAgICAgcmV0dXJuIFFB
Y2Nlc3NpYmxlOjpDZWxsOworICAgIGNhc2UgV2ViQ29yZTo6Q2hlY2tCb3hSb2xlOgorICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OkNoZWNrQm94OworICAgICAgICAvLyAgICAgY2FzZSBXZWJD
b3JlOjpDb2xvcldlbGxSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgIGNhc2UgV2ViQ29yZTo6Q29sdW1uUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpDb2x1bW47CisgICAgY2FzZSBXZWJDb3JlOjpDb2x1bW5IZWFkZXJSb2xlOgorICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNvbHVtbkhlYWRlcjsKKyAgICBjYXNlIFdlYkNvcmU6
OkNvbWJvQm94Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpDb21ib0JveDsKKyAg
ICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6RGVmaW5pdGlvbkxpc3RUZXJtUm9sZToKKyAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2Ug
V2ViQ29yZTo6RGVmaW5pdGlvbkxpc3REZWZpbml0aW9uUm9sZToKKyAgICAgICAgLy8gICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6RGly
ZWN0b3J5Um9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZToKKyAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2Ug
V2ViQ29yZTo6RGl2Um9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OjsKKyAgICBjYXNlIFdlYkNvcmU6OkRvY3VtZW50Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpEb2N1bWVudDsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6RG9jdW1lbnRB
cnRpY2xlUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6RG9jdW1lbnRNYXRoUm9sZToKKyAgICAgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29y
ZTo6RG9jdW1lbnROb3RlUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6RG9jdW1lbnRSZWdpb25Sb2xlOgor
ICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgICAgICAvLyAgICAg
Y2FzZSBXZWJDb3JlOjpEcmF3ZXJSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIGNhc2UgV2ViQ29yZTo6RWRpdGFibGVUZXh0Um9sZToKKyAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQ7CisgICAgICAgIC8vICAgICBjYXNlIFdl
YkNvcmU6OkZvcm1Sb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpHcmlkUm9sZToKKyAgICAgICAgLy8gICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFdlYkNvcmU6Okdyb3VwUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpHcm91cGluZzsKKyAgICAgICAgLy8gICAgIGNh
c2UgV2ViQ29yZTo6R3Jvd0FyZWFSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpIZWFkaW5nUm9sZToKKyAg
ICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNh
c2UgV2ViQ29yZTo6SGVscFRhZ1JvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjo7CisgICAgY2FzZSBXZWJDb3JlOjpJZ25vcmVkUm9sZToKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpOb1JvbGU7CisgICAgY2FzZSBXZWJDb3JlOjpJbWFnZVJvbGU6CisgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6R3JhcGhpYzsKKyAgICAgICAgLy8gICAgIGNhc2UgV2Vi
Q29yZTo6SW1hZ2VNYXBSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpJbmNyZW1lbnRvclJvbGU6CisgICAg
ICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBXZWJDb3JlOjpM
YWJlbFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGljVGV4dDsgLy8gd2hh
dCBpcyB0aGUgZGlmZiB0byBzdGF0aWMgdGV4dD8KKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29y
ZTo6TGFuZG1hcmtBcHBsaWNhdGlvblJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFB
Y2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6OkxhbmRtYXJrQmFubmVy
Um9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAg
Ly8gICAgIGNhc2UgV2ViQ29yZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKKyAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2Vi
Q29yZTo6TGFuZG1hcmtDb250ZW50SW5mb1JvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6OkxhbmRtYXJrTWFp
blJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAg
IC8vICAgICBjYXNlIFdlYkNvcmU6OkxhbmRtYXJrTmF2aWdhdGlvblJvbGU6CisgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNv
cmU6OkxhbmRtYXJrU2VhcmNoUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OjsKKyAgICBjYXNlIFdlYkNvcmU6OkxpbmtSb2xlOgorICAgIGNhc2UgV2ViQ29yZTo6
SW1hZ2VNYXBMaW5rUm9sZToKKyAgICBjYXNlIFdlYkNvcmU6OldlYkNvcmVMaW5rUm9sZToKKyAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpMaW5rOworICAgIGNhc2UgV2ViQ29yZTo6TGlzdFJv
bGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TGlzdDsKKyAgICAgICAgLy8gICAgIGNh
c2UgV2ViQ29yZTo6TGlzdEJveFJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6Okxpc3RCb3hPcHRpb25Sb2xl
OgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgV2Vi
Q29yZTo6TGlzdEl0ZW1Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okxpc3RJdGVt
OworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpMaXN0TWFya2VyUm9sZToKKyAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2Vi
Q29yZTo6TWF0dGVSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIGNhc2UgV2ViQ29yZTo6TWVudVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6TWVudUl0ZW07CisgICAgY2FzZSBXZWJDb3JlOjpNZW51QmFyUm9sZToKKyAgICAgICAgcmV0
dXJuIFFBY2Nlc3NpYmxlOjpNZW51QmFyOworICAgIGNhc2UgV2ViQ29yZTo6TWVudUJ1dHRvblJv
bGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07IC8vID8KKyAgICBjYXNl
IFdlYkNvcmU6Ok1lbnVJdGVtUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51
SXRlbTsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6TWVudUxpc3RQb3B1cFJvbGU6Cisg
ICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBj
YXNlIFdlYkNvcmU6Ok1lbnVMaXN0T3B0aW9uUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6T3V0bGluZVJv
bGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8v
ICAgICBjYXNlIFdlYkNvcmU6OlBhcmFncmFwaFJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0
dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBXZWJDb3JlOjpQb3BVcEJ1dHRvblJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6QnV0dG9uOyAvLyA/CisgICAgICAgIC8vICAgICBj
YXNlIFdlYkNvcmU6OlByZXNlbnRhdGlvbmFsUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6UHJvZ3Jlc3NJ
bmRpY2F0b3JSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIGNhc2UgV2ViQ29yZTo6UmFkaW9CdXR0b25Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OlJhZGlvQnV0dG9uOworICAgIGNhc2UgV2ViQ29yZTo6UmFkaW9Hcm91cFJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6R3JvdXBpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpS
b3dIZWFkZXJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJvd0hlYWRlcjsKKyAg
ICBjYXNlIFdlYkNvcmU6OlJvd1JvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Um93
OworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpSdWxlclJvbGU6CisgICAgICAgIC8vICAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6
OlJ1bGVyTWFya2VyUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OjsKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEFyZWFSb2xlOgorICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OlBhbmU7IC8vID8KKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEJhclJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U2Nyb2xsQmFyOworICAgICAgICAvLyAgICAgY2Fz
ZSBXZWJDb3JlOjpTaGVldFJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjo7CisgICAgY2FzZSBXZWJDb3JlOjpTbGlkZXJSb2xlOgorICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OlNsaWRlcjsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6U2xpZGVyVGh1
bWJSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OyAvLyBzaG91
bGQgYmUgaWdub3JlZAorICAgIGNhc2UgV2ViQ29yZTo6U3BpbkJ1dHRvblJvbGU6CisgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6U3BpbkJveDsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29y
ZTo6U3BpbkJ1dHRvblBhcnRSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6OworICAgIGNhc2UgV2ViQ29yZTo6U3BsaXRHcm91cFJvbGU6CisgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6U3BsaXR0ZXI7IC8vID8KKyAgICBjYXNlIFdlYkNvcmU6OlNwbGl0dGVy
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTcGxpdHRlcjsKKyAgICBjYXNlIFdl
YkNvcmU6OlN0YXRpY1RleHRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRp
Y1RleHQ7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6OlN5c3RlbVdpZGVSb2xlOgorICAg
ICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgV2ViQ29yZTo6
VGFiR3JvdXBSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlBhZ2VUYWJMaXN0OyAv
LyA/CisgICAgY2FzZSBXZWJDb3JlOjpUYWJMaXN0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpQYWdlVGFiTGlzdDsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6VGFiUGFu
ZWxSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNh
c2UgV2ViQ29yZTo6VGFiUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYWdlVGFi
OworICAgIGNhc2UgV2ViQ29yZTo6VGFibGVSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OlRhYmxlOworICAgICAgICAvLyAgICAgY2FzZSBXZWJDb3JlOjpUYWJsZUhlYWRlckNvbnRh
aW5lclJvbGU6CisgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Y2FzZSBXZWJDb3JlOjpUZXh0QXJlYVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
RWRpdGFibGVUZXh0OworICAgIGNhc2UgV2ViQ29yZTo6VHJlZVJvbGU6CisgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6VHJlZTsKKyAgICAgICAgLy8gICAgIGNhc2UgV2ViQ29yZTo6VHJlZUdy
aWRSb2xlOgorICAgICAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNh
c2UgV2ViQ29yZTo6VHJlZUl0ZW1Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlRy
ZWVJdGVtOworICAgIGNhc2UgV2ViQ29yZTo6VGV4dEZpZWxkUm9sZToKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQ7CisgICAgY2FzZSBXZWJDb3JlOjpUb29sYmFyUm9s
ZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUb29sQmFyOworICAgIGNhc2UgV2ViQ29y
ZTo6VW5rbm93blJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Tm9Sb2xlOworICAg
IGNhc2UgV2ViQ29yZTo6VXNlckludGVyZmFjZVRvb2x0aXBSb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OlRvb2xUaXA7CisgICAgICAgIC8vICAgICBjYXNlIFdlYkNvcmU6OlZhbHVl
SW5kaWNhdG9yUm9sZToKKyAgICAgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsK
KyAgICBjYXNlIFdlYkNvcmU6OldlYkFyZWFSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OlBhbmU7CisgICAgY2FzZSBXZWJDb3JlOjpXaW5kb3dSb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OldpbmRvdzsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHFEZWJ1ZygpIDw8
ICJVbmtub3duIFdlYkNvcmUgYWNjZXNzaWJpbGl0eSByb2xlOiAiIDw8IHJvbGU7CisgICAgfQor
CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpOb1JvbGU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKKyAgICA6IG1fb2JqZWN0KG9iamVjdCkK
K3sKKyAgICBBU1NFUlQob2JqZWN0KTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6
On5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcigpCit7CisgICAgbV9vYmplY3QgPSAwOworfQor
CitRQWNjZXNzaWJsZTo6Um9sZSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cm9sZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxlUm9sZShtX29iamVjdC0+
cm9sZVZhbHVlKCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCAw
IHx8IGluZGV4ID49IG1fb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKSkgeworICAgICAgICBxRGVi
dWcoKSA8PCAiSU5WQUxJRCBDSElMRCIgPDwgbV9vYmplY3QgPDwgaW5kZXg7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9
IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihtX29iamVjdC0+Y2hpbGRyZW4oKS5hdChp
bmRleCkuZ2V0KCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCitpbnQgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX29iamVj
dC0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZElmYWNlKSBj
b25zdAoreworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICpjaGlsZFdyYXBw
ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcio+KGNoaWxk
SWZhY2UpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IGNoaWxkV3Jh
cHBlci0+bV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmIChwYXJlbnRP
YmplY3QpCisgICAgICAgIHJldHVybiBwYXJlbnRPYmplY3QtPmNoaWxkcmVuKCkuZmluZChjaGls
ZFdyYXBwZXItPm1fb2JqZWN0KTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlSW50
ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRBdChpbnQgeCwgaW50IHkp
IGNvbnN0Cit7CisgICAgLy8gRklYTUUgdXNlIGhpdC10ZXN0aW5nIGNvZGUgZnJvbSBBY2Nlc3Np
YmlsaXR5T2JqZWN0CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcjo6bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZyByZWxhdGlvbiwgaW50
IGluZGV4LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICBRX1VO
VVNFRChyZWxhdGlvbikKKyAgICBRX1VOVVNFRChpbmRleCkKKyAgICAqdGFyZ2V0ID0gMDsKKyAg
ICByZXR1cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcjo6cGFyZW50KCkgY29uc3QKK3sKKyAgICAvLyBDaGVjayBpZiB0aGlzIGlzIHRo
ZSByb290IG9iamVjdC4gSWYgc28sIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBGcmFtZSBhcyBwYXJl
bnQKKyAgICBpZiAoIW1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSAmJiBtX29iamVj
dC0+aXNTY3JvbGxWaWV3KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RD
aGlsZCA9IG1fb2JqZWN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmIChmaXJzdENoaWxkICYm
IGZpcnN0Q2hpbGQtPmlzV2ViQXJlYSgpKSB7CisgICAgICAgICAgICAvLyBXZSBzZWVtIHRvIGJl
IHRoZSByb290IGFjY2Vzc2libGUsIGdldCB0aGUgRnJhbWUKKyAgICAgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVudCgpOworICAgICAgICAgICAgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdyA9IGRvY3VtZW50LT52aWV3KCktPmhvc3RXaW5kb3coKTsKKyAgICAgICAg
ICAgIGlmIChob3N0V2luZG93KSB7CisgICAgICAgICAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBh
Z2VDbGllbnQgPSBob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAocGFnZUNsaWVudCAmJiBwYWdlQ2xpZW50LT5pc1FXaWRnZXRDbGllbnQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSB3cml0aW5nIHRoZSBzYW1lIGZvciBRR3JhcGhp
Y3NWaWV3IHNob3VsZCBiZSB0cml2aWFsCisgICAgICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxl
SW50ZXJmYWNlKiB3ZWJWaWV3ID0gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFj
ZShwYWdlQ2xpZW50LT5vd25lcldpZGdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUUFjY2Vz
c2libGVJbnRlcmZhY2UqIHdlYlBhZ2UgPSB3ZWJWaWV3LT5jaGlsZCgwKTsKKyAgICAgICAgICAg
ICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UqIHdlYkZyYW1lID0gd2ViUGFnZS0+Y2hpbGQo
MCk7CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHdlYlZpZXc7CisgICAgICAgICAgICAg
ICAgICAgIGRlbGV0ZSB3ZWJQYWdlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2ViRnJh
bWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7IC8vIEZJWE1FIDAgaXMgd3Jv
bmcKK30KKworLy8gdGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiB0aGUgZ3RrIHZlcnNpb24gb2Yg
dGhlIHNhbWUKK1FTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OnRleHQoUUFjY2Vz
c2libGU6OlRleHQgdCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHQpIHsKKyAgICBjYXNlIFFBY2Nl
c3NpYmxlOjpOYW1lOiB7CisgICAgICAgIGlmICghbV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdWYWx1ZSgp
OworCisgICAgICAgIGlmIChtX29iamVjdC0+aXNDb250cm9sKCkpIHsKKyAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsID0gbV9vYmplY3QtPmNvcnJlc3BvbmRpbmdMYWJlbEZv
ckNvbnRyb2xFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFiZWwpIHsKKyAgICAgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IG5ldyBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcihsYWJlbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIt
PnRleHQodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRyeSB0ZXh0IHVuZGVy
IHRoZSBub2RlLgorICAgICAgICAgICAgU3RyaW5nIHRleHRVbmRlciA9IG1fb2JqZWN0LT50ZXh0
VW5kZXJFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAodGV4dFVuZGVyLmxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0ZXh0VW5kZXI7CisgICAgICAgIH0KKworLy8gICAgICAgIGlm
IChtX29iamVjdC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5pc0lucHV0SW1hZ2UoKSkgeworLy8g
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9vYmplY3QtPm5vZGUoKTsKKy8vICAgICAgICAgICAg
aWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisvLyAgICAgICAgICAgICAgICAv
LyBHZXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBhbHRUZXh0IFN0cmluZyBzbyBhcyBub3Qg
dG8gZmFsbCBiYWNrIG9uIHRpdGxlLgorLy8gICAgICAgICAgICAgICAgU3RyaW5nIGFsdCA9IHRv
SFRNTEVsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFsdEF0dHIpOworLy8g
ICAgICAgICAgICAgICAgaWYgKCFhbHQuaXNFbXB0eSgpKQorLy8gICAgICAgICAgICAgICAgICAg
IHJldHVybiBhbHQ7CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9CisKKyAgICAgICAgLy8g
RmFsbGJhY2sgZm9yIHRoZSB3ZWJBcmVhIG9iamVjdDoganVzdCByZXR1cm4gdGhlIGRvY3VtZW50
J3MgdGl0bGUuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkpIHsKKyAgICAgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVudCgpOworICAgICAgICAg
ICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+dGl0bGUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdGhpbmcgd29ya2VkIHNvIGZhciwgdHJ5IHdp
dGggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QncworICAgICAgICAvLyB0aXRsZSgpIGJlZm9yZSBn
b2luZyBhaGVhZCB3aXRoIHN0cmluZ1ZhbHVlKCkuCisgICAgICAgIFN0cmluZyBheFRpdGxlID0g
bV9vYmplY3QtPnRpdGxlKCk7CisgICAgICAgIGlmICghYXhUaXRsZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm4gYXhUaXRsZTsKKworICAgICAgICByZXR1cm4gbV9vYmplY3QtPnN0cmlu
Z1ZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgUUFjY2Vzc2libGU6OkRlc2NyaXB0aW9uOgorICAg
ICAgICByZXR1cm4gUVN0cmluZyhtX29iamVjdC0+YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkp
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gUVN0cmlu
ZygpOworfQorCitRQWNjZXNzaWJsZTo6U3RhdGUgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6
OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7Cit9CisK
K1FSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpyZWN0KCkgY29uc3QKK3sKKyAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOworICAg
IExheW91dFJlY3QgcmVjdCA9IG1fb2JqZWN0LT5lbGVtZW50UmVjdCgpOworICAgIHJldHVybiBR
UmVjdChmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4ocmVjdCkpOworfQorCit9CisKKyNlbmRp
ZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViNWVlMmIxOTUxNDhkOGJm
YWYwMmU4OTQ0MTgyMjMxNjQ5YTE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaApAQCAtMCwwICsx
LDgzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0
ZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIEFsb256bworICAgIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBJZ2FsaWEgUy5MLgorCisgICAgUG9ydGlvbnMgZnJvbSBN
b3ppbGxhIGExMXksIGNvcHlyaWdodCBhcyBmb2xsb3dzOgorCisgICAgVGhlIE9yaWdpbmFsIENv
ZGUgaXMgbW96aWxsYS5vcmcgY29kZS4KKworICAgIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0
aGUgT3JpZ2luYWwgQ29kZSBpcworICAgIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KKyAgICBQb3J0
aW9ucyBjcmVhdGVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAy
MDAyCisgICAgdGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCisjZGVmaW5lIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyX2gKKworI2luY2x1ZGUgPHFhY2Nlc3NpYmxlLmg+CisjaW5jbHVk
ZSA8cWdsb2JhbC5oPgorCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQ
SSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKKworY2xh
c3MgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgOiBwdWJsaWMgUUFjY2Vzc2libGVJbnRlcmZh
Y2UgeworCitwdWJsaWM6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KTsKKyAgICB+QWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIoKTsKKworICAgIHZpcnR1YWwgUUFjY2Vzc2libGVJbnRlcmZhY2UqIHBhcmVudCgpIGNv
bnN0OworICAgIHZpcnR1YWwgaW50IGNoaWxkQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZChpbnQgaW5kZXgpIGNvbnN0OworCisgICAgdmlydHVh
bCBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3Q7Cisg
ICAgdmlydHVhbCBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGRBdChpbnQgeCwgaW50IHkpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7IHJldHVybiB0cnVl
OyB9CisKKyAgICB2aXJ0dWFsIGludCBuYXZpZ2F0ZShRQWNjZXNzaWJsZTo6UmVsYXRpb25GbGFn
IHJlbGF0aW9uLCBpbnQgaW5kZXgsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiogdGFyZ2V0KSBjb25z
dDsKKyAgICB2aXJ0dWFsIFFPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKwor
ICAgIHZpcnR1YWwgUVJlY3QgcmVjdCgpIGNvbnN0OworCisgICAgUUFjY2Vzc2libGU6OlJvbGUg
cm9sZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNldFRleHQoUUFjY2Vzc2libGU6OlRl
eHQsIGNvbnN0IFFTdHJpbmcmKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFFBY2Nlc3Np
YmxlOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBRU3RyaW5nIHRleHQoUUFj
Y2Vzc2libGU6OlRleHQgdCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdCogbV9vYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBRdCA1CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
LnByaSBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnByaQppbmRleCAwNWViMDlhODc4ZjUzYzFjMzkx
NTYzMDRhYzNkOTA3ZDYwY2QzZTVkLi4yNWYxM2M0MGNjODQ3ZjVhYjBkM2ExNGViZGU2NDk0Y2U0
ZDA3ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQucHJpCkBAIC0zLDYgKzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAkJFBX
RC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAgXAogICAgICQkUFdEL3F0L0FwaS9xd2VicGFn
ZS5jcHAgXAogICAgICQkUFdEL3F0L0FwaS9xd2Vidmlldy5jcHAgXAorICAgICQkUFdEL3F0L0Fw
aS9xd2Vidmlld2FjY2Vzc2libGUuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmVsZW1lbnQu
Y3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwIFwKICAgICAkJFBXRC9xdC9B
cGkvcXdlYnNldHRpbmdzLmNwcCBcCkBAIC0yMyw2ICsyNCw3IEBAIEhFQURFUlMgKz0gXAogICAg
ICQkUFdEL3F0L0FwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaCBcCiAgICAgJCRQV0QvcXQvQXBp
L3F3ZWJwYWdlLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2Vidmlldy5oIFwKKyAgICAkJFBXRC9x
dC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlX3AuaCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaCBcCiAgICAg
JCRQV0QvcXQvQXBpL3F3ZWJkYXRhYmFzZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5k
ZXggMzVmY2U0YmViZmMwOTJkNTM5MTY1ZGViYWZiMzk1YmM1MTE0OTg2Zi4uYjA3MmZhZGJhNzJl
Mjg4MTUzMTc4ZTM3NzRiN2ZmZDRhOTZjNTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgK
QEAgLTIzNSw2ICsyMzUsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGVDbGllbnRR
dDsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lQWNjZXNzaWJsZTsKICAgICBRV2ViRnJhbWVQ
cml2YXRlICpkOwogICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ffb3JpZW50YXRpb25DaGFu
Z2VkKCkpCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKaW5kZXggZmQyZmQ0YjNiZWRiYjc2MTNi
MzUwYTk3MzBkYWZmNTMyYzQxMjllOS4uYTU5MGU1YjdiZjFmMzk0YzNkZjRkNWMyNjJmZTE5OWQx
ZDQyYTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC00NDgsNiArNDQ4LDggQEAgcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOwogICAgIGZyaWVuZCBjbGFz
cyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDsKKworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZUFj
Y2Vzc2libGU7CiB9OwogCiBRX0RFQ0xBUkVfT1BFUkFUT1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6
RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwCmluZGV4IDRhMmQxODZhOWJmZGRm
OTY4ZTdkMDViMWZiNjk4N2E0ZmVjN2FlNDEuLjUzYmVkYWM0YTA0YWE1YTM2ZWJjZjMxODNkMDg0
NzMwYjgwYmNjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKQEAgLTIyLDExICsyMiwx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAKKworI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlFXZWJQYWdl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJxd2ViZnJhbWUuaCIK
ICNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisjaW5jbHVkZSAicXdlYnZpZXdhY2Nlc3NpYmxlX3Au
aCIKICNpbmNsdWRlICJxYml0bWFwLmgiCiAjaW5jbHVkZSAicWV2ZW50LmgiCiAjaW5jbHVkZSAi
cXBhaW50ZXIuaCIKQEAgLTE2Nyw2ICsxNzAsMTEgQEAgUVdlYlZpZXc6OlFXZWJWaWV3KFFXaWRn
ZXQgKnBhcmVudCkKIAogICAgIHNldE1vdXNlVHJhY2tpbmcodHJ1ZSk7CiAgICAgc2V0Rm9jdXNQ
b2xpY3koUXQ6OldoZWVsRm9jdXMpOworCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBj
aGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUs
IDAsIDApCisgICAgUUFjY2Vzc2libGU6Omluc3RhbGxGYWN0b3J5KGFjY2Vzc2libGVJbnRlcmZh
Y2VGYWN0b3J5KTsKKyNlbmRpZgogfQogCiAvKiEKQEAgLTExMDIsNSArMTExMCw2IEBAIHZvaWQg
UVdlYlZpZXc6OmNoYW5nZUV2ZW50KFFFdmVudCAqZSkKICAgICBcc2EgUVdlYlBhZ2U6OmxpbmtE
ZWxlZ2F0aW9uUG9saWN5KCkKICovCiAKKwogI2luY2x1ZGUgIm1vY19xd2Vidmlldy5jcHAiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2Vidmlldy5oCmluZGV4IDA3ZTMwZDM5MTAyMWIzYTU0MWNhYTY4YTFiM2Yz
ZmNlOTE2MjY3ODAuLjEzOGNlOGMwNTc4M2E5NjQ3ZDA5ZGJlMmVlNzY3ZGFmZTM0MDAwMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnZpZXcuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxRdENv
cmUvcXVybC5oPgogI2luY2x1ZGUgPFF0TmV0d29yay9xbmV0d29ya2FjY2Vzc21hbmFnZXIuaD4K
IAorI2luY2x1ZGUgPFF0Q29yZS9xZGVidWcuaD4KKworCisKIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUU5ldHdvcmtSZXF1ZXN0OwogY2xhc3MgUVByaW50ZXI7CkBAIC0xNjcsNCArMTcxLDYg
QEAgcHJpdmF0ZToKICAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3BhZ2VEZXN0cm95ZWQo
KSkKIH07CiAKKworCiAjZW5kaWYgLy8gUVdFQlZJRVdfSApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ3MmJlYWQ4OThjODcwNWQ0YzY4
ODFiZTg3NDU4YjkyZTY0YWIwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJ2aWV3YWNjZXNzaWJs
ZV9wLmgiCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1
CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKK1FBY2Nlc3Np
YmxlSW50ZXJmYWNlKiBhY2Nlc3NpYmxlSW50ZXJmYWNlRmFjdG9yeShjb25zdCBRU3RyaW5nICZr
ZXksIFFPYmplY3QgKm9iamVjdCkKK3sKKyAgICBRX1VOVVNFRChrZXkpCisKKyAgICBpZiAoUVdl
YlBhZ2UgKnBhZ2UgPSBxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihvYmplY3QpKQorICAgICAgICBy
ZXR1cm4gbmV3IFFXZWJQYWdlQWNjZXNzaWJsZShwYWdlKTsKKworICAgIGlmIChRV2ViVmlldyAq
dmlldyA9IHFvYmplY3RfY2FzdDxRV2ViVmlldyo+KG9iamVjdCkpCisgICAgICAgIHJldHVybiBu
ZXcgUVdlYlZpZXdBY2Nlc3NpYmxlKHZpZXcpOworCisgICAgaWYgKFFXZWJGcmFtZSAqZnJhbWUg
PSBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBR
V2ViRnJhbWVBY2Nlc3NpYmxlKGZyYW1lKTsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8v
IFF0IDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJs
ZV9wLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI1NmUwNGVmMDE4MjI4YzhhYmIwNzJkZTYxMWQ2ZTRjMmNiZTMwYTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oCkBA
IC0wLDAgKzEsMTk2IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJWSUVXQUND
RVNTSUJMRV9QX0gKKyNkZWZpbmUgUVdFQlZJRVdBQ0NFU1NJQkxFX1BfSAorCisjaW5jbHVkZSA8
cWdsb2JhbC5oPgorLy8gVGhlIFFBY2Nlc3NpYmxlIGludGVyZmFjZXMgY2hhbmdlZCBBUEkgaW4g
UXQgNQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKQorCisjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCisjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyNpbmNs
dWRlICJxYWNjZXNzaWJsZW9iamVjdC5oIgorI2luY2x1ZGUgInFhY2Nlc3NpYmxld2lkZ2V0Lmgi
CisKKyNpbmNsdWRlICJxd2ViZnJhbWUuaCIKKyNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgorI2lu
Y2x1ZGUgInF3ZWJ2aWV3LmgiCisKKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIGFjY2Vzc2libGVJ
bnRlcmZhY2VGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmtleSwgUU9iamVjdCAqb2JqZWN0KTsKKwor
LyoKKyAqIENsYXNzZXMgcmVwcmVzZW50aW5nIGFjY2Vzc2libGUgb2JqZWN0cyBmb3IgVmlldywg
RnJhbWUgYW5kIFBhZ2UKKyAqCisgKiBFYWNoIG9mIHRoZXNlIGp1c3QgcmV0dXJucyBvbmUgY2hp
bGQgd2hpY2ggbGV0cyB0aGUgYWNjZXNzaWJpbGl0eQorICogZnJhbXdvcmsgbmF2aWdhdGUgdG93
YXJkcyB0aGUgYWN0dWFsIGNvbnRlbnRzIGluIHRoZSBmcmFtZS4KKyAqLworCisKK2NsYXNzIFFX
ZWJGcmFtZUFjY2Vzc2libGUgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QgeworcHVibGljOgor
ICAgIFFXZWJGcmFtZUFjY2Vzc2libGUoUVdlYkZyYW1lICpmcmFtZSkKKyAgICA6IFFBY2Nlc3Np
YmxlT2JqZWN0KGZyYW1lKQorICAgIHsKKyAgICAgICBpZiAoIVdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCisgICAgICAgICAgICBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CisgICAgfQorCisgICAgUVdlYkZyYW1lICpm
cmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJGcmFt
ZSo+KG9iamVjdCgpKTsKKyAgICB9CisKKyAgICBRU3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRl
eHQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIH0KKworICAg
IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpwYXJlbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uob2JqZWN0KCktPnBhcmVu
dCgpKTsKKyAgICB9CisKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGluZGV4KQorICAgICAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCAqYSA9IGZyYW1lKCktPmQt
PmZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKKyAgICAg
ICAgaWYgKGEpCisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKGEpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IGludCBjaGlsZENvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3QgKmEgPSBmcmFtZSgpLT5kLT5mcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RD
YWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBhID8gMSA6IDA7CisgICAgfQor
CisgICAgdmlydHVhbCBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl
KikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZpcnR1YWwg
aW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcsIGludCwgUUFjY2Vzc2libGVJ
bnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0CisgICAgeworICAgICAgICAqdGFyZ2V0ID0gMDsKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHZpcnR1YWwgUUFjY2Vzc2libGU6OlJvbGUg
cm9sZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNsaWVudDsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7CisgICAgfQorfTsKKwor
CitjbGFzcyBRV2ViUGFnZUFjY2Vzc2libGUgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3Qgewor
cHVibGljOgorICAgIFFXZWJQYWdlQWNjZXNzaWJsZShRV2ViUGFnZSAqcGFnZSkKKyAgICA6IFFB
Y2Nlc3NpYmxlT2JqZWN0KHBhZ2UpCisgICAgeworICAgIH0KKworICAgIFFXZWJQYWdlICpwYWdl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihv
YmplY3QoKSk7CisgICAgfQorCisgICAgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0IHQp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIH0KKworICAgIFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlICpwYXJlbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uob2JqZWN0KCktPnBhcmVudCgp
KTsKKyAgICB9CisKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCAmJiBwYWdlKCktPm1haW5GcmFtZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBRV2ViRnJhbWVBY2Nlc3NpYmxlKHBhZ2UoKS0+bWFpbkZy
YW1lKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGludCBjaGls
ZENvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwYWdlKCktPm1haW5GcmFtZSgp
ID8gMSA6IDA7CisgICAgfQorCisgICAgdmlydHVhbCBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGludCBuYXZpZ2F0ZShRQWNjZXNzaWJsZTo6UmVsYXRpb25GbGFn
LCBpbnQsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiogdGFyZ2V0KSBjb25zdAorICAgIHsKKyAgICAg
ICAgKnRhcmdldCA9IDA7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IFFBY2Nlc3NpYmxlOjpSb2xlIHJvbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFFB
Y2Nlc3NpYmxlOjpDbGllbnQ7CisgICAgfQorCisgICAgdmlydHVhbCBRQWNjZXNzaWJsZTo6U3Rh
dGUgc3RhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTdGF0
ZSgpOworICAgIH0KK307CisKKworY2xhc3MgUVdlYlZpZXdBY2Nlc3NpYmxlIDogcHVibGljIFFB
Y2Nlc3NpYmxlV2lkZ2V0IHsKK3B1YmxpYzoKKyAgICBRV2ViVmlld0FjY2Vzc2libGUoUVdlYlZp
ZXcgKnZpZXcpCisgICAgICAgIDogUUFjY2Vzc2libGVXaWRnZXQodmlldywgUUFjY2Vzc2libGU6
OkRvY3VtZW50KQorICAgIHsKKyAgICB9CisKKyAgICBRV2ViVmlldyAqdmlldygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJWaWV3Kj4ob2JqZWN0KCkpOwor
ICAgIH0KKworICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAoIWluZGV4ICYmIHZpZXcoKS0+cGFnZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIG5ldyBRV2ViUGFnZUFjY2Vzc2libGUodmlldygpLT5wYWdlKCkpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gdmlldygpLT5wYWdlKCkgPyAxIDogMDsKKyAgICB9Cit9OworCisKKyNl
bmRpZiAvLyBRdCA1CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9hcGkucHJpIGIvU291cmNl
L2FwaS5wcmkKaW5kZXggOWI3YjI3YmYyZDljNDM1NzdjYjFiYjYxN2NiMTUyZDY0YmQ0MGYxYi4u
MTA2YTI3YzBkZDRlMTVmOTc1YWU5M2ViZWFkMmM1ODYzZGM0MDBhNyAxMDA2NDQKLS0tIGEvU291
cmNlL2FwaS5wcmkKKysrIGIvU291cmNlL2FwaS5wcmkKQEAgLTE2OSw2ICsxNjksOSBAQCBjb250
YWlucyhDT05GSUcsIHRleG1hcCkgewogICAgIERFRklORVMgKz0gV1RGX1VTRV9URVhUVVJFX01B
UFBFUj0xCiB9CiAKK2NvbnRhaW5zKFFUX0NPTkZJRywgYWNjZXNzaWJpbGl0eSkgeworICAgIERF
RklORVMgKz0gQUNDRVNTSUJJTElUWT0xCit9CiAKICMgLS0tLS0tLS0tLS0tLSBJbnN0YWxsIHJ1
bGVzIC0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IGI0NmIzOGZlMzI5YTA3NjdkZjA1ODgxZWExODUzNjViMTMwY2JmN2EuLjkyYTIzMzJlYTcy
YWNkMWE0YjJjY2UzMWZhZWI4ZGYwZGUzMDYzZTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNiAgRnJlZGVyaWsgR2xhZGhv
cm4gIDxmcmVkZXJpay5nbGFkaG9ybkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBJbml0aWFs
IGltcGxlbWVudGF0aW9uIG9mIGFjY2Vzc2liaWxpdHkgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWNjZXNzaWJpbGl0eSBkZWZpbmUg
d2hlbiBRdCBpcyBidWlsdCB3aXRoIGFjY2Vzc2liaWxpdHkgc3VwcG9ydC4KKworICAgICAgICAq
IFNvdXJjZS9hcGkucHJpOgorCiAyMDEyLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIHdlYmtpdC1wZXJmLmFwcHNwb3QuY29tIHNob3VsZCBhY2NlcHQg
dGVzdCByZXN1bHRzIHdpdGhvdXQgbWVkaWFucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125635</attachid>
            <date>2012-02-06 06:50:58 -0800</date>
            <delta_ts>2012-02-06 07:12:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20120206155056.patch</filename>
            <type>text/plain</type>
            <size>36500</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uYjUyYWFlZTE5NzBiZTAzZGRlM2Y4ODY3MTMzNDBh
Y2VmMjY5OGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTA2ICBGcmVk
ZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFF0IHdyYXBw
ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpy
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5k
ZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpz
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6Om9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6c2V0VGV4dCk6CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgR2NjIGJ1aWxkIGZpeCBhZnRlciByMTA2NDgyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
ZmM5YWRmN2EwYmYzODQyODIyOGU3YzYzNmFmNzcyYmM1NzExNDM2Li5mYWY0MWRhN2IzNzNjNjZm
MzdkZWEwNmJjOTk3MGE2YjgyMWEwYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTAyLTA2ICBGcmVkZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0LnByaTogQWRkZWQgbmV3IGZpbGVzIGZvciBhY2Nlc3NpYmlsaXR5LgorCiAyMDEyLTAx
LTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29u
dGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1NTQzZTYwMWJlYjFjNjI1NzhkODBmNzcyMmJmZDk1
MzU0MmI4MDUzLi40MWMzMWI4NDE2YzY2OGU5OWJiMTc3MTMwYTBjZjk3N2JhYjZkNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBRV2ViVmlldyB0byB0aGUgYWNj
ZXNzaWJpbGl0eSBmcmFtZXdvcmsgYW5kIG1ha2UKKyAgICAgICAgaXQgcG9zc2libGUgdG8gbmF2
aWdhdGUgaW50byB0aGUgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCBoaWVyYXJjaHkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3YWNjZXNz
aWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZy
YW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpmcmFtZSk6Cisg
ICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZUFj
Y2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZCk6
CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjpuYXZpZ2F0ZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpyb2xlKToK
KyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OlFXZWJQYWdlQWNjZXNz
aWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhZ2UpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFy
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJs
ZTo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUp
OgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpyb2xlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZTo6c3RhdGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAg
ICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFX
ZWJWaWV3QWNjZXNzaWJsZTo6dmlldyk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNo
aWxkKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisKIDIwMTIt
MDItMDEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVByaW9yaXR5KCkgZmFpbHMgZm9y
IENTUyBzaG9ydGhhbmQgcHJvcGVydGllcyB3aXRoICdpbXBvcnRhbnQnIHByaW9yaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmYzZmNmU2NGYzOGYzYzlhZDliMThjMWJjNGI2NGJjMDdjN2FkZTY1Li5hODQz
NTgxYWE3OWI5NTIyMmE4NDhhM2Y5ODM3OTY1ODBmODJlODA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI3
NjcsNiArMjc2Nyw3IEBAIEhFQURFUlMgKz0gXAogCiBTT1VSQ0VTICs9IFwKICAgICBhY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgXAorICAgIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuY3BwIFwKICAgICBwYWdlL3F0L0RyYWdDb250
cm9sbGVyUXQuY3BwIFwKICAgICBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNmb3JtYXRpb25NYXRyaXhRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQppbmRleCBhZGRkNTg3OTM5NzlmMjdkNDNlNjg5MDA0NWVmZjQyZjZiZjFjOWI4Li42MTcyMzFi
MGRlMTIxZjdiOTc2ZWY4YTI2NWYyYWEyNjU0ZmViMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMTks
NiArMTksNyBAQCBXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9ICQke1JPT1RfQlVJTERf
RElSfS9Tb3VyY2UvV2ViQ29yZS8kJHtHRU5FUkFURURfUwogSU5DTFVERVBBVEggKz0gXAogICAg
ICQkU09VUkNFX0RJUiBcCiAgICAgJCRTT1VSQ0VfRElSL2FjY2Vzc2liaWxpdHkgXAorICAgICQk
U09VUkNFX0RJUi9hY2Nlc3NpYmlsaXR5L3F0IFwKICAgICAkJFNPVVJDRV9ESVIvYmluZGluZ3Mg
XAogICAgICQkU09VUkNFX0RJUi9iaW5kaW5ncy9nZW5lcmljIFwKICAgICAkJFNPVVJDRV9ESVIv
YnJpZGdlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggYzQxN2NjOTU4NTcxMjE2ZDBjYTA0ZDNiYjQ0YjdmYzJkNjFmYTRk
OS4uZTI3Zjk3MzcxMmRjZWEyNjM2YjY4Mzg2N2UzNGFjMjc5ZWMzMTIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTMw
Nyw3ICszMDcsNyBAQCBzdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewogY2xhc3MgQWNjZXNzaWJpbGl0
eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHsKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7Ci0gICAgCisKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgp
OwpAQCAtNjU5LDcgKzY1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIqKTsKICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIAorICAg
IHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikKICAg
ICB7CiAgICAgICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3Bw
CmluZGV4IDcyMzI2NDIzNzg5NjkyODc3ODI5OGEwZDkzMDI5NDY1ODQ2Mzc5YTguLjlhNmUwZDgx
N2Q1YjcyNjI1N2NlZTZjZDc3ZGJkMWY4ZWJiNDc4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKQEAg
LTM0LDkgKzM0LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPCiAgICAgaWYgKGlzTWVudUxp
c3RQb3B1cCgpIHx8IGlzTWVudUxpc3RPcHRpb24oKSkKICAgICAgICAgcmV0dXJuIElnbm9yZU9i
amVjdDsKIAotICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7CisgICAgcmV0dXJuIEluY2x1ZGVP
YmplY3Q7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShB
Q0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTJl
NmRlNTA0OTI5YjlmODFiNDFhMDllMzdjNDFjMDRlNzBiYWZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5jcHAKQEAgLTAsMCArMSw0MDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIgorCisvLyBU
aGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorCisjaW5jbHVkZSA8cWRlYnVnLmg+CisjaW5j
bHVkZSA8cXdpZGdldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1FBY2Nlc3NpYmxlOjpS
b2xlIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxlUm9sZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlKQoreworICAgIHN3aXRjaCAocm9sZSkgeworICAgIC8vICAgICBjYXNlIEFubm90YXRp
b25Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBB
cHBsaWNhdGlvblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6QXBwbGljYXRpb247
CisgICAgLy8gICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6CisgICAgLy8gICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlh
bG9nUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAg
ICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKKyAgICAvLyAg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9u
TWFycXVlZVJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAv
LyAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKKyAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEJyb3dz
ZXJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAg
IGNhc2UgQnVzeUluZGljYXRvclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICBjYXNlIEJ1dHRvblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
QnV0dG9uOworICAgIGNhc2UgQ2VsbFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
Q2VsbDsKKyAgICBjYXNlIENoZWNrQm94Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
OjpDaGVja0JveDsKKyAgICAvLyAgICAgY2FzZSBDb2xvcldlbGxSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBDb2x1bW5Sb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OkNvbHVtbjsKKyAgICBjYXNlIENvbHVtbkhlYWRlclJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q29sdW1uSGVhZGVyOworICAgIGNhc2UgQ29tYm9C
b3hSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNvbWJvQm94OworICAgIC8vICAg
ICBjYXNlIERlZmluaXRpb25MaXN0VGVybVJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEZWZpbml0aW9uTGlzdERlZmluaXRpb25Sb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2Ug
RGlyZWN0b3J5Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IC8vICAgICBjYXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEaXZSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBEb2N1bWVudFJvbGU6CisgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6RG9jdW1lbnQ7CisgICAgLy8gICAgIGNhc2UgRG9jdW1lbnRB
cnRpY2xlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8v
ICAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgRG9jdW1lbnRSZWdpb25S
b2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNh
c2UgRHJhd2VyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IGNhc2UgRWRpdGFibGVUZXh0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpFZGl0
YWJsZVRleHQ7CisgICAgLy8gICAgIGNhc2UgRm9ybVJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBHcmlkUm9sZToKKyAgICAvLyAgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgR3JvdXBSb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6Okdyb3VwaW5nOworICAgIC8vICAgICBjYXNlIEdyb3dBcmVhUm9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNl
IEhlYWRpbmdSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Ly8gICAgIGNhc2UgSGVscFRhZ1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICBjYXNlIElnbm9yZWRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
Ok5vUm9sZTsKKyAgICBjYXNlIEltYWdlUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
OjpHcmFwaGljOworICAgIC8vICAgICBjYXNlIEltYWdlTWFwUm9sZToKKyAgICAvLyAgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEluY3JlbWVudG9yUm9sZToK
KyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgTGFiZWxSb2xl
OgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRpY1RleHQ7IC8vIHdoYXQgaXMgdGhl
IGRpZmYgdG8gc3RhdGljIHRleHQ/CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtBcHBsaWNhdGlv
blJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAg
Y2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgorICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtD
b250ZW50SW5mb1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICAvLyAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFB
Y2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKKyAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIExhbmRt
YXJrU2VhcmNoUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IGNhc2UgTGlua1JvbGU6CisgICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgorICAgIGNhc2UgV2Vi
Q29yZUxpbmtSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okxpbms7CisgICAgY2Fz
ZSBMaXN0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpMaXN0OworICAgIC8vICAg
ICBjYXNlIExpc3RCb3hSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
CisgICAgLy8gICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpMaXN0SXRlbTsKKyAgICAvLyAgICAgY2FzZSBMaXN0TWFya2VyUm9sZToK
KyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIE1h
dHRlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2Ug
TWVudVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07CisgICAgY2Fz
ZSBNZW51QmFyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51QmFyOworICAg
IGNhc2UgTWVudUJ1dHRvblJvbGU6CisgICAgY2FzZSBNZW51SXRlbVJvbGU6CisgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07CisgICAgLy8gICAgIGNhc2UgTWVudUxpc3RQb3B1
cFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAg
Y2FzZSBNZW51TGlzdE9wdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAvLyAgICAgY2FzZSBPdXRsaW5lUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIFBhcmFncmFwaFJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247IC8vID8KKyAgICAvLyAgICAgY2Fz
ZSBQcmVzZW50YXRpb25hbFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OjsKKyAgICAvLyAgICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6CisgICAgLy8gICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpSYWRpb0J1dHRvbjsKKyAgICBjYXNlIFJhZGlvR3JvdXBS
b2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okdyb3VwaW5nOworICAgIGNhc2UgUm93
SGVhZGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpSb3dIZWFkZXI7CisgICAg
Y2FzZSBSb3dSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJvdzsKKyAgICAvLyAg
ICAgY2FzZSBSdWxlclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsK
KyAgICAvLyAgICAgY2FzZSBSdWxlck1hcmtlclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFNjcm9sbEFyZWFSb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OlBhbmU7IC8vID8KKyAgICBjYXNlIFNjcm9sbEJhclJvbGU6CisgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6U2Nyb2xsQmFyOworICAgIC8vICAgICBjYXNlIFNoZWV0Um9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgU2xpZGVy
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTbGlkZXI7CisgICAgLy8gICAgIGNh
c2UgU2xpZGVyVGh1bWJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
IC8vIHNob3VsZCBiZSBpZ25vcmVkCisgICAgY2FzZSBTcGluQnV0dG9uUm9sZToKKyAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjpTcGluQm94OworICAgIC8vICAgICBjYXNlIFNwaW5CdXR0b25Q
YXJ0Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2Ug
U3BsaXRHcm91cFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3BsaXR0ZXI7IC8v
ID8KKyAgICBjYXNlIFNwbGl0dGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpT
cGxpdHRlcjsKKyAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OlN0YXRpY1RleHQ7CisgICAgLy8gICAgIGNhc2UgU3lzdGVtV2lkZVJvbGU6CisgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFRhYkdyb3VwUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYWdlVGFiTGlzdDsgLy8gPworICAgIGNhc2Ug
VGFiTGlzdFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6UGFnZVRhYkxpc3Q7Cisg
ICAgLy8gICAgIGNhc2UgVGFiUGFuZWxSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjo7CisgICAgY2FzZSBUYWJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OlBhZ2VUYWI7CisgICAgY2FzZSBUYWJsZVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6VGFibGU7CisgICAgLy8gICAgIGNhc2UgVGFibGVIZWFkZXJDb250YWluZXJSb2xlOgorICAg
IC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBUZXh0QXJlYVJvbGU6
CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6RWRpdGFibGVUZXh0OworICAgIGNhc2UgVHJl
ZVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6VHJlZTsKKyAgICAvLyAgICAgY2Fz
ZSBUcmVlR3JpZFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICBjYXNlIFRyZWVJdGVtUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUcmVlSXRl
bTsKKyAgICBjYXNlIFRleHRGaWVsZFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
RWRpdGFibGVUZXh0OworICAgIGNhc2UgVG9vbGJhclJvbGU6CisgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6VG9vbEJhcjsKKyAgICBjYXNlIFVua25vd25Sb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6Ok5vUm9sZTsKKyAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUb29sVGlwOworICAgIC8vICAgICBjYXNlIFZh
bHVlSW5kaWNhdG9yUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIGNhc2UgV2ViQXJlYVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6UGFuZTsK
KyAgICBjYXNlIFdpbmRvd1JvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6V2luZG93
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcURlYnVnKCkgPDwgIlVua25vd24gV2ViQ29yZSBh
Y2Nlc3NpYmlsaXR5IHJvbGU6ICIgPDwgcm9sZTsKKyAgICB9CisKKyAgICByZXR1cm4gUUFjY2Vz
c2libGU6Ok5vUm9sZTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKKyAgICA6IG1f
b2JqZWN0KG9iamVjdCkKK3sKKyAgICBBU1NFUlQob2JqZWN0KTsKK30KKworQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6On5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcigpCit7CisgICAgbV9v
YmplY3QgPSAwOworfQorCitRQWNjZXNzaWJsZTo6Um9sZSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcjo6cm9sZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZShtX29iamVjdC0+cm9sZVZhbHVlKCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSog
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAg
ICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1fb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKSkg
eworICAgICAgICBxRGVidWcoKSA8PCAiSU5WQUxJRCBDSElMRCIgPDwgbV9vYmplY3QgPDwgaW5k
ZXg7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihtX29iamVjdC0+
Y2hpbGRyZW4oKS5hdChpbmRleCkuZ2V0KCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCitp
bnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX29iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9CisKK2ludCBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcjo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl
KiBjaGlsZElmYWNlKSBjb25zdAoreworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKiBjaGlsZFdyYXBwZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcio+KGNoaWxkSWZhY2UpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCA9IGNoaWxkV3JhcHBlci0+bV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwor
ICAgIGlmIChwYXJlbnRPYmplY3QpCisgICAgICAgIHJldHVybiBwYXJlbnRPYmplY3QtPmNoaWxk
cmVuKCkuZmluZChjaGlsZFdyYXBwZXItPm1fb2JqZWN0KTsKKyAgICByZXR1cm4gLTE7Cit9CisK
K1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRB
dChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVzZSBoaXQtdGVzdGluZyBj
b2RlIGZyb20gQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6Om5hdmlnYXRl
KFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcgcmVsYXRpb24sIGludCBpbmRleCwgUUFjY2Vzc2li
bGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgUV9VTlVTRUQocmVsYXRpb24pCisg
ICAgUV9VTlVTRUQoaW5kZXgpCisgICAgKnRhcmdldCA9IDA7CisgICAgcmV0dXJuIC0xOworfQor
CitRQWNjZXNzaWJsZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OnBhcmVu
dCgpIGNvbnN0Cit7CisgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgcm9vdCBvYmplY3QuIElm
IHNvLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgRnJhbWUgYXMgcGFyZW50CisgICAgaWYgKCFtX29i
amVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgJiYgbV9vYmplY3QtPmlzU2Nyb2xsVmlldygp
KSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQgPSBtX29iamVjdC0+
Zmlyc3RDaGlsZCgpOworICAgICAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLT5pc1dl
YkFyZWEoKSkgeworICAgICAgICAgICAgLy8gV2Ugc2VlbSB0byBiZSB0aGUgcm9vdCBhY2Nlc3Np
YmxlLCBnZXQgdGhlIEZyYW1lCisgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX29i
amVjdC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBk
b2N1bWVudC0+dmlldygpLT5ob3N0V2luZG93KCk7CisgICAgICAgICAgICBpZiAoaG9zdFdpbmRv
dykgeworICAgICAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gaG9zdFdp
bmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHBhZ2VDbGll
bnQgJiYgcGFnZUNsaWVudC0+aXNRV2lkZ2V0Q2xpZW50KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdyaXRpbmcgdGhlIHNhbWUgZm9yIFFHcmFwaGljc1ZpZXcgc2hvdWxkIGJl
IHRyaXZpYWwuCisgICAgICAgICAgICAgICAgICAgIFFTY29wZWRQb2ludGVyPFFBY2Nlc3NpYmxl
SW50ZXJmYWNlPiB3ZWJWaWV3KFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uo
cGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBRU2NvcGVk
UG9pbnRlcjxRQWNjZXNzaWJsZUludGVyZmFjZT4gd2ViUGFnZSh3ZWJWaWV3LT5jaGlsZCgwKSk7
CisgICAgICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiB3ZWJGcmFtZSA9IHdl
YlBhZ2UtPmNoaWxkKDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2ViRnJhbWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICByZXR1cm4gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKG1f
b2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Cit9CisKKy8vIEZYSU1FOiBDcmVhdGUg
YSBoZWxwZXIgdXNlZCBieSBndGsgYW5kIGhlcmUKK1FTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI6OnRleHQoUUFjY2Vzc2libGU6OlRleHQgdCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KHQpIHsKKyAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lOiB7CisgICAgICAgIGlmICghbV9vYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1f
b2JqZWN0LT5zdHJpbmdWYWx1ZSgpOworCisgICAgICAgIGlmIChtX29iamVjdC0+aXNDb250cm9s
KCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsID0gbV9vYmplY3Qt
PmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAo
bGFiZWwpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3Jh
cHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihsYWJlbCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdyYXBwZXItPnRleHQodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRyeSB0ZXh0IHVuZGVyIHRoZSBub2RlLgorICAgICAgICAgICAgU3RyaW5nIHRleHRV
bmRlciA9IG1fb2JqZWN0LT50ZXh0VW5kZXJFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAodGV4
dFVuZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0VW5kZXI7CisgICAg
ICAgIH0KKworLy8gICAgICAgIGlmIChtX29iamVjdC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5p
c0lucHV0SW1hZ2UoKSkgeworLy8gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9vYmplY3QtPm5v
ZGUoKTsKKy8vICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7
CisvLyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBhbHRU
ZXh0IFN0cmluZyBzbyBhcyBub3QgdG8gZmFsbCBiYWNrIG9uIHRpdGxlLgorLy8gICAgICAgICAg
ICAgICAgU3RyaW5nIGFsdCA9IHRvSFRNTEVsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmFsdEF0dHIpOworLy8gICAgICAgICAgICAgICAgaWYgKCFhbHQuaXNFbXB0eSgpKQor
Ly8gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbHQ7CisvLyAgICAgICAgICAgIH0KKy8vICAg
ICAgICB9CisKKyAgICAgICAgLy8gRmFsbGJhY2sgZm9yIHRoZSB3ZWJBcmVhIG9iamVjdDoganVz
dCByZXR1cm4gdGhlIGRvY3VtZW50J3MgdGl0bGUuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNX
ZWJBcmVhKCkpIHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5k
b2N1bWVudCgpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJl
dHVybiBkb2N1bWVudC0+dGl0bGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdGhpbmcg
d29ya2VkIHNvIGZhciwgdHJ5IHdpdGggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QncworICAgICAg
ICAvLyB0aXRsZSgpIGJlZm9yZSBnb2luZyBhaGVhZCB3aXRoIHN0cmluZ1ZhbHVlKCkuCisgICAg
ICAgIFN0cmluZyBheFRpdGxlID0gbV9vYmplY3QtPnRpdGxlKCk7CisgICAgICAgIGlmICghYXhU
aXRsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gYXhUaXRsZTsKKworICAgICAgICBy
ZXR1cm4gbV9vYmplY3QtPnN0cmluZ1ZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgUUFjY2Vzc2li
bGU6OkRlc2NyaXB0aW9uOgorICAgICAgICByZXR1cm4gUVN0cmluZyhtX29iamVjdC0+YWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitRQWNjZXNzaWJsZTo6U3RhdGUgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OnN0YXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGUoKTsKK30KKworUVJlY3QgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OnJlY3QoKSBjb25zdAoreworICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CisgICAgTGF5b3V0UmVjdCBy
ZWN0ID0gbV9vYmplY3QtPmVsZW1lbnRSZWN0KCk7CisgICAgcmV0dXJuIFFSZWN0KGZyYW1lVmll
dy0+Y29udGVudHNUb1NjcmVlbihyZWN0KSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI6OnNldFRleHQoUUFjY2Vzc2libGU6OlRleHQsIGNvbnN0IFFTdHJpbmcmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDgyZTBiMWQxMGU1MGY2NjhhMjM0MGFhY2MxMWU2ZTA4ODVkMDY0
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaApAQCAtMCwwICsxLDgwIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDkgSmFuIEFsb256bworICAgIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiBJZ2FsaWEgUy5MLgorCisgICAgUG9ydGlvbnMgZnJvbSBNb3ppbGxhIGExMXksIGNvcHlyaWdo
dCBhcyBmb2xsb3dzOgorCisgICAgVGhlIE9yaWdpbmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29k
ZS4KKworICAgIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcwor
ICAgIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KKyAgICBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRoZSBJ
bml0aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAyMDAyCisgICAgdGhlIEluaXRpYWwg
RGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKworI2lmbmRlZiBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcl9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gK
KworI2luY2x1ZGUgPHFhY2Nlc3NpYmxlLmg+CisKKy8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZh
Y2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hF
Q0soNSwgMCwgMCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5
T2JqZWN0OworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciA6IHB1YmxpYyBRQWNj
ZXNzaWJsZUludGVyZmFjZSB7CisKK3B1YmxpYzoKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpOworICAgIH5BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcigpOworCisgICAgdmlydHVhbCBRQWNjZXNzaWJsZUludGVyZmFj
ZSogcGFyZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgY2hpbGRDb3VudCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUUFjY2Vzc2libGVJbnRlcmZhY2UqIGNoaWxkKGludCBpbmRleCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZh
Y2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZEF0KGlu
dCB4LCBpbnQgeSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdAorICAg
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgaW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxl
OjpSZWxhdGlvbkZsYWcgcmVsYXRpb24sIGludCBpbmRleCwgUUFjY2Vzc2libGVJbnRlcmZhY2Uq
KiB0YXJnZXQpIGNvbnN0OworICAgIHZpcnR1YWwgUU9iamVjdCogb2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBRUmVjdCByZWN0KCkgY29uc3Q7CisKKyAgICBRQWNj
ZXNzaWJsZTo6Um9sZSByb2xlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dChR
QWNjZXNzaWJsZTo6VGV4dCwgY29uc3QgUVN0cmluZyYpOworCisgICAgdmlydHVhbCBRQWNjZXNz
aWJsZTo6U3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgUVN0cmluZyB0ZXh0KFFB
Y2Nlc3NpYmxlOjpUZXh0IHQpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3QqIG1fb2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUXQgNQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC5wcmkgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkKaW5kZXggMDVlYjA5YTg3OGY1M2MxYzM5
MTU2MzA0YWMzZDkwN2Q2MGNkM2U1ZC4uMjVmMTNjNDBjYzg0N2Y1YWIwZDNhMTRlYmRlNjQ5NGNl
NGQwN2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0LnByaQpAQCAtMyw2ICszLDcgQEAgU09VUkNFUyArPSBcCiAgICAgJCRQ
V0QvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnBh
Z2UuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXcuY3BwIFwKKyAgICAkJFBXRC9xdC9B
cGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJlbGVtZW50
LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBcCiAgICAgJCRQV0QvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5jcHAgXApAQCAtMjMsNiArMjQsNyBAQCBIRUFERVJTICs9IFwKICAg
ICAkJFBXRC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmggXAogICAgICQkUFdEL3F0L0Fw
aS9xd2VicGFnZS5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXcuaCBcCisgICAgJCRQV0Qv
cXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2Vic2V0
dGluZ3MuaCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmggXAogICAg
ICQkUFdEL3F0L0FwaS9xd2ViZGF0YWJhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCmlu
ZGV4IDM1ZmNlNGJlYmZjMDkyZDUzOTE2NWRlYmFmYjM5NWJjNTExNDk4NmYuLmIwNzJmYWRiYTcy
ZTI4ODE1MzE3OGUzNzc0YjdmZmQ0YTk2YzUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5o
CkBAIC0yMzUsNiArMjM1LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlQ2xpZW50
UXQ7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZUFjY2Vzc2libGU7CiAgICAgUVdlYkZyYW1l
UHJpdmF0ZSAqZDsKICAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX29yaWVudGF0aW9uQ2hh
bmdlZCgpKQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCmluZGV4IGZkMmZkNGIzYmVkYmI3NjEz
YjM1MGE5NzMwZGFmZjUzMmM0MTI5ZTkuLmE1OTBlNWI3YmYxZjM5NGMzZGY0ZDVjMjYyZmUxOTlk
MWQ0MmE1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZy
aWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKICAgICBmcmllbmQgY2xh
c3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7CisKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VB
Y2Nlc3NpYmxlOwogfTsKIAogUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoUVdlYlBhZ2U6
OkZpbmRGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcAppbmRleCA0YTJkMTg2YTliZmRk
Zjk2OGU3ZDA1YjFmYjY5ODdhNGZlYzdhZTQxLi5jM2U5MzJlMTQwNWQwYzExM2IxNmY3Yjk5ZjM5
NTgxYzUxMjk5OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwCkBAIC0yMiwxMSArMjIs
MTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgogCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgog
I2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJxd2Vidmlld2FjY2Vzc2libGVfcC5o
IgogI2luY2x1ZGUgInFiaXRtYXAuaCIKICNpbmNsdWRlICJxZXZlbnQuaCIKICNpbmNsdWRlICJx
cGFpbnRlci5oIgpAQCAtMTY3LDYgKzE2OSwxMSBAQCBRV2ViVmlldzo6UVdlYlZpZXcoUVdpZGdl
dCAqcGFyZW50KQogCiAgICAgc2V0TW91c2VUcmFja2luZyh0cnVlKTsKICAgICBzZXRGb2N1c1Bv
bGljeShRdDo6V2hlZWxGb2N1cyk7CisKKy8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZhY2VzIGNo
YW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwg
MCwgMCkKKyAgICBRQWNjZXNzaWJsZTo6aW5zdGFsbEZhY3RvcnkoYWNjZXNzaWJsZUludGVyZmFj
ZUZhY3RvcnkpOworI2VuZGlmCiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2
aWV3YWNjZXNzaWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNlMGUyYzhhNGI3N2RmZTRjYjNhOTY5YTZm
NzYxMGE1YWEzOTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJ2aWV3YWNjZXNzaWJsZS5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2Vidmlld2FjY2Vzc2libGVfcC5o
IgorCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1Cisj
aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKKyNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCIK
KworUUFjY2Vzc2libGVJbnRlcmZhY2UqIGFjY2Vzc2libGVJbnRlcmZhY2VGYWN0b3J5KGNvbnN0
IFFTdHJpbmcmIGtleSwgUU9iamVjdCogb2JqZWN0KQoreworICAgIFFfVU5VU0VEKGtleSkKKwor
ICAgIGlmIChRV2ViUGFnZSAqcGFnZSA9IHFvYmplY3RfY2FzdDxRV2ViUGFnZSo+KG9iamVjdCkp
CisgICAgICAgIHJldHVybiBuZXcgUVdlYlBhZ2VBY2Nlc3NpYmxlKHBhZ2UpOworCisgICAgaWYg
KFFXZWJWaWV3ICp2aWV3ID0gcW9iamVjdF9jYXN0PFFXZWJWaWV3Kj4ob2JqZWN0KSkKKyAgICAg
ICAgcmV0dXJuIG5ldyBRV2ViVmlld0FjY2Vzc2libGUodmlldyk7CisKKyAgICBpZiAoUVdlYkZy
YW1lICpmcmFtZSA9IHFvYmplY3RfY2FzdDxRV2ViRnJhbWUqPihvYmplY3QpKQorICAgICAgICBy
ZXR1cm4gbmV3IFFXZWJGcmFtZUFjY2Vzc2libGUoZnJhbWUpOworICAgIHJldHVybiAwOworfQor
CisKKworUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZyYW1lQWNjZXNzaWJsZShRV2ViRnJhbWUq
IGZyYW1lKQorICAgIDogUUFjY2Vzc2libGVPYmplY3QoZnJhbWUpCit7CisgICAgaWYgKCFXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQorICAgICAgICBXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7Cit9CisKK1FXZWJGcmFt
ZSogUVdlYkZyYW1lQWNjZXNzaWJsZTo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBxb2Jq
ZWN0X2Nhc3Q8UVdlYkZyYW1lKj4ob2JqZWN0KCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFj
ZSogUVdlYkZyYW1lQWNjZXNzaWJsZTo6cGFyZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShvYmplY3QoKS0+cGFyZW50KCkpOwor
fQorCitRU3RyaW5nIFFXZWJGcmFtZUFjY2Vzc2libGU6OnRleHQoUUFjY2Vzc2libGU6OlRleHQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKworUUFjY2Vzc2libGVJbnRlcmZh
Y2UqIFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBp
ZiAoaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdCogYSA9IGZyYW1lKCktPmQtPmZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hl
KCktPnJvb3RPYmplY3QoKTsKKyAgICBpZiAoYSkKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihhKTsKKyAgICByZXR1cm4gMDsKK30KKworUUFj
Y2Vzc2libGU6OlN0YXRlIFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFX
ZWJGcmFtZUFjY2Vzc2libGU6OnJvbGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6Q2xpZW50OworfQorCitpbnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6bmF2aWdhdGUoUUFjY2Vz
c2libGU6OlJlbGF0aW9uRmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkg
Y29uc3QKK3sKKyAgICAqdGFyZ2V0ID0gMDsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBRV2Vi
RnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KCkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBhID0gZnJhbWUoKS0+ZC0+ZnJhbWUtPmRvY3VtZW50KCktPmF4T2Jq
ZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIHJldHVybiBhID8gMSA6IDA7Cit9CisKK2lu
dCBRV2ViRnJhbWVBY2Nlc3NpYmxlOjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRl
cmZhY2UqKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCisKKworUVdlYlBhZ2VBY2Nlc3Np
YmxlOjpRV2ViUGFnZUFjY2Vzc2libGUoUVdlYlBhZ2UqIHBhZ2UpCisgICAgOiBRQWNjZXNzaWJs
ZU9iamVjdChwYWdlKQoreworfQorCitRV2ViUGFnZSogUVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYWdl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJQYWdlKj4ob2JqZWN0KCkp
OworfQorCitRU3RyaW5nIFFXZWJQYWdlQWNjZXNzaWJsZTo6dGV4dChRQWNjZXNzaWJsZTo6VGV4
dCB0KSBjb25zdAoreworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK1FBY2Nlc3NpYmxlSW50
ZXJmYWNlKiBRV2ViUGFnZUFjY2Vzc2libGU6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uob2JqZWN0KCktPnBhcmVudCgp
KTsKK30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQo
aW50IGluZGV4KSBjb25zdAoreworICAgIGlmICghaW5kZXggJiYgcGFnZSgpLT5tYWluRnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViRnJhbWVBY2Nlc3NpYmxlKHBhZ2UoKS0+bWFpbkZy
YW1lKCkpOworICAgIHJldHVybiAwOworfQorCitpbnQgUVdlYlBhZ2VBY2Nlc3NpYmxlOjpjaGls
ZENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZSgpLT5tYWluRnJhbWUoKSA/IDEgOiAw
OworfQorCitpbnQgUVdlYlBhZ2VBY2Nlc3NpYmxlOjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vz
c2libGVJbnRlcmZhY2UqKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitpbnQgUVdlYlBh
Z2VBY2Nlc3NpYmxlOjpuYXZpZ2F0ZShRQWNjZXNzaWJsZTo6UmVsYXRpb25GbGFnLCBpbnQsIFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKiogdGFyZ2V0KSBjb25zdAoreworICAgICp0YXJnZXQgPSAwOwor
ICAgIHJldHVybiAtMTsKK30KKworUUFjY2Vzc2libGU6OlJvbGUgUVdlYlBhZ2VBY2Nlc3NpYmxl
Ojpyb2xlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNsaWVudDsKK30KKwor
UUFjY2Vzc2libGU6OlN0YXRlIFFXZWJQYWdlQWNjZXNzaWJsZTo6c3RhdGUoKSBjb25zdAorewor
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGUoKTsKK30KKworCisKK1FXZWJWaWV3QWNjZXNz
aWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKFFXZWJWaWV3KiB2aWV3KQorICAgIDogUUFjY2Vzc2li
bGVXaWRnZXQodmlldywgUUFjY2Vzc2libGU6OkRvY3VtZW50KQoreworfQorCitRV2ViVmlldyog
UVdlYlZpZXdBY2Nlc3NpYmxlOjp2aWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcW9iamVjdF9j
YXN0PFFXZWJWaWV3Kj4ob2JqZWN0KCkpOworfQorCitpbnQgUVdlYlZpZXdBY2Nlc3NpYmxlOjpj
aGlsZENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmlldygpLT5wYWdlKCkgPyAxIDogMDsK
K30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGQoaW50
IGluZGV4KSBjb25zdAoreworICAgIGlmICghaW5kZXggJiYgdmlldygpLT5wYWdlKCkpCisgICAg
ICAgIHJldHVybiBuZXcgUVdlYlBhZ2VBY2Nlc3NpYmxlKHZpZXcoKS0+cGFnZSgpKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIFF0IDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
dmlld2FjY2Vzc2libGVfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZWY1NTA4MTJhOTUyMTBlN2Y0ZGNlN2U3
ODAzNDE1N2M0ZjJiNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vidmlld2FjY2Vzc2libGVfcC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgUVdFQlZJRVdBQ0NFU1NJQkxFX1BfSAorI2RlZmluZSBRV0VCVklFV0FDQ0VT
U0lCTEVfUF9ICisKKyNpbmNsdWRlIDxxZ2xvYmFsLmg+CisvLyBUaGUgUUFjY2Vzc2libGUgaW50
ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9O
X0NIRUNLKDUsIDAsIDApCisKKyNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorI2luY2x1ZGUgInFh
Y2Nlc3NpYmxlb2JqZWN0LmgiCisjaW5jbHVkZSAicWFjY2Vzc2libGV3aWRnZXQuaCIKKworI2lu
Y2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAi
cXdlYnZpZXcuaCIKKworCitRQWNjZXNzaWJsZUludGVyZmFjZSogYWNjZXNzaWJsZUludGVyZmFj
ZUZhY3RvcnkoY29uc3QgUVN0cmluZyYga2V5LCBRT2JqZWN0KiBvYmplY3QpOworCisvKgorICog
Q2xhc3NlcyByZXByZXNlbnRpbmcgYWNjZXNzaWJsZSBvYmplY3RzIGZvciBWaWV3LCBGcmFtZSBh
bmQgUGFnZQorICoKKyAqIEVhY2ggb2YgdGhlc2UganVzdCByZXR1cm5zIG9uZSBjaGlsZCB3aGlj
aCBsZXRzIHRoZSBhY2Nlc3NpYmlsaXR5CisgKiBmcmFtd29yayBuYXZpZ2F0ZSB0b3dhcmRzIHRo
ZSBhY3R1YWwgY29udGVudHMgaW4gdGhlIGZyYW1lLgorICovCisKK2NsYXNzIFFXZWJGcmFtZUFj
Y2Vzc2libGUgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QgeworcHVibGljOgorICAgIFFXZWJG
cmFtZUFjY2Vzc2libGUoUVdlYkZyYW1lKiBmcmFtZSk7CisKKyAgICBRV2ViRnJhbWUqIGZyYW1l
KCkgY29uc3Q7CisKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogcGFyZW50KCkgY29uc3Q7Cisg
ICAgaW50IGNoaWxkQ291bnQoKSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hp
bGQoaW50IGluZGV4KSBjb25zdDsKKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3Np
YmxlSW50ZXJmYWNlKikgY29uc3Q7CisgICAgaW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxh
dGlvbkZsYWcsIGludCwgUUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0OworCisg
ICAgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25zdDsKKyAgICBRQWNjZXNzaWJs
ZTo6Um9sZSByb2xlKCkgY29uc3Q7CisgICAgUUFjY2Vzc2libGU6OlN0YXRlIHN0YXRlKCkgY29u
c3Q7Cit9OworCisKK2NsYXNzIFFXZWJQYWdlQWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJs
ZU9iamVjdCB7CitwdWJsaWM6CisgICAgUVdlYlBhZ2VBY2Nlc3NpYmxlKFFXZWJQYWdlKiBwYWdl
KTsKKworICAgIFFXZWJQYWdlKiBwYWdlKCkgY29uc3Q7CisKKyAgICBRQWNjZXNzaWJsZUludGVy
ZmFjZSogcGFyZW50KCkgY29uc3Q7CisgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdDsKKyAgICBR
QWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBjb25zdDsKKyAgICBpbnQgaW5k
ZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3Q7CisgICAgaW50IG5h
dmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcsIGludCwgUUFjY2Vzc2libGVJbnRlcmZh
Y2UqKiB0YXJnZXQpIGNvbnN0OworCisgICAgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0
IHQpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlOjpSb2xlIHJvbGUoKSBjb25zdDsKKyAgICBRQWNj
ZXNzaWJsZTo6U3RhdGUgc3RhdGUoKSBjb25zdDsKK307CisKKworY2xhc3MgUVdlYlZpZXdBY2Nl
c3NpYmxlIDogcHVibGljIFFBY2Nlc3NpYmxlV2lkZ2V0IHsKK3B1YmxpYzoKKyAgICBRV2ViVmll
d0FjY2Vzc2libGUoUVdlYlZpZXcqIHZpZXcpOworCisgICAgUVdlYlZpZXcqIHZpZXcoKSBjb25z
dDsKKworICAgIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgUUFjY2Vzc2libGVJbnRlcmZh
Y2UqIGNoaWxkKGludCBpbmRleCkgY29uc3Q7Cit9OworCisjZW5kaWYgLy8gUXQgNQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXBpLnByaSBiL1NvdXJjZS9hcGkucHJpCmluZGV4IDliN2Iy
N2JmMmQ5YzQzNTc3Y2IxYmI2MTdjYjE1MmQ2NGJkNDBmMWIuLmJmYTFkY2U3ZTE0ZmJjOGQ1ZDQx
YjIxZDZkMTlhZmU4NzUzMDQzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hcGkucHJpCisrKyBiL1Nv
dXJjZS9hcGkucHJpCkBAIC0xNjksNiArMTY5LDkgQEAgY29udGFpbnMoQ09ORklHLCB0ZXhtYXAp
IHsKICAgICBERUZJTkVTICs9IFdURl9VU0VfVEVYVFVSRV9NQVBQRVI9MQogfQogCitjb250YWlu
cyhRVF9DT05GSUcsIGFjY2Vzc2liaWxpdHkpIHsKKyAgICBoYXZlUXQoNSk6IERFRklORVMgKz0g
QUNDRVNTSUJJTElUWT0xCit9CiAKICMgLS0tLS0tLS0tLS0tLSBJbnN0YWxsIHJ1bGVzIC0tLS0t
LS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGI0NmIz
OGZlMzI5YTA3NjdkZjA1ODgxZWExODUzNjViMTMwY2JmN2EuLjkyYTIzMzJlYTcyYWNkMWE0YjJj
Y2UzMWZhZWI4ZGYwZGUzMDYzZTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNiAgRnJlZGVyaWsgR2xhZGhvcm4gIDxmcmVk
ZXJpay5nbGFkaG9ybkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBJbml0aWFsIGltcGxlbWVu
dGF0aW9uIG9mIGFjY2Vzc2liaWxpdHkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWNjZXNzaWJpbGl0eSBkZWZpbmUgd2hlbiBRdCBp
cyBidWlsdCB3aXRoIGFjY2Vzc2liaWxpdHkgc3VwcG9ydC4KKworICAgICAgICAqIFNvdXJjZS9h
cGkucHJpOgorCiAyMDEyLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIHdlYmtpdC1wZXJmLmFwcHNwb3QuY29tIHNob3VsZCBhY2NlcHQgdGVzdCByZXN1
bHRzIHdpdGhvdXQgbWVkaWFucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125638</attachid>
            <date>2012-02-06 07:12:13 -0800</date>
            <delta_ts>2012-02-07 01:09:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20120206161211.patch</filename>
            <type>text/plain</type>
            <size>36457</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uYjUyYWFlZTE5NzBiZTAzZGRlM2Y4ODY3MTMzNDBh
Y2VmMjY5OGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTA2ICBGcmVk
ZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFF0IHdyYXBw
ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpy
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5k
ZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpz
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6Om9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6c2V0VGV4dCk6CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgR2NjIGJ1aWxkIGZpeCBhZnRlciByMTA2NDgyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
ZmM5YWRmN2EwYmYzODQyODIyOGU3YzYzNmFmNzcyYmM1NzExNDM2Li5mYWY0MWRhN2IzNzNjNjZm
MzdkZWEwNmJjOTk3MGE2YjgyMWEwYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTAyLTA2ICBGcmVkZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0LnByaTogQWRkZWQgbmV3IGZpbGVzIGZvciBhY2Nlc3NpYmlsaXR5LgorCiAyMDEyLTAx
LTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29u
dGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1NTQzZTYwMWJlYjFjNjI1NzhkODBmNzcyMmJmZDk1
MzU0MmI4MDUzLi40MWMzMWI4NDE2YzY2OGU5OWJiMTc3MTMwYTBjZjk3N2JhYjZkNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBRV2ViVmlldyB0byB0aGUgYWNj
ZXNzaWJpbGl0eSBmcmFtZXdvcmsgYW5kIG1ha2UKKyAgICAgICAgaXQgcG9zc2libGUgdG8gbmF2
aWdhdGUgaW50byB0aGUgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCBoaWVyYXJjaHkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3YWNjZXNz
aWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZy
YW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpmcmFtZSk6Cisg
ICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZUFj
Y2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZCk6
CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjpuYXZpZ2F0ZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpyb2xlKToK
KyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OlFXZWJQYWdlQWNjZXNz
aWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhZ2UpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFy
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJs
ZTo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUp
OgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpyb2xlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZTo6c3RhdGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAg
ICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFX
ZWJWaWV3QWNjZXNzaWJsZTo6dmlldyk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNo
aWxkKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisKIDIwMTIt
MDItMDEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVByaW9yaXR5KCkgZmFpbHMgZm9y
IENTUyBzaG9ydGhhbmQgcHJvcGVydGllcyB3aXRoICdpbXBvcnRhbnQnIHByaW9yaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmYzZmNmU2NGYzOGYzYzlhZDliMThjMWJjNGI2NGJjMDdjN2FkZTY1Li5hODQz
NTgxYWE3OWI5NTIyMmE4NDhhM2Y5ODM3OTY1ODBmODJlODA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI3
NjcsNiArMjc2Nyw3IEBAIEhFQURFUlMgKz0gXAogCiBTT1VSQ0VTICs9IFwKICAgICBhY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgXAorICAgIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuY3BwIFwKICAgICBwYWdlL3F0L0RyYWdDb250
cm9sbGVyUXQuY3BwIFwKICAgICBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNmb3JtYXRpb25NYXRyaXhRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQppbmRleCBhZGRkNTg3OTM5NzlmMjdkNDNlNjg5MDA0NWVmZjQyZjZiZjFjOWI4Li42MTcyMzFi
MGRlMTIxZjdiOTc2ZWY4YTI2NWYyYWEyNjU0ZmViMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMTks
NiArMTksNyBAQCBXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9ICQke1JPT1RfQlVJTERf
RElSfS9Tb3VyY2UvV2ViQ29yZS8kJHtHRU5FUkFURURfUwogSU5DTFVERVBBVEggKz0gXAogICAg
ICQkU09VUkNFX0RJUiBcCiAgICAgJCRTT1VSQ0VfRElSL2FjY2Vzc2liaWxpdHkgXAorICAgICQk
U09VUkNFX0RJUi9hY2Nlc3NpYmlsaXR5L3F0IFwKICAgICAkJFNPVVJDRV9ESVIvYmluZGluZ3Mg
XAogICAgICQkU09VUkNFX0RJUi9iaW5kaW5ncy9nZW5lcmljIFwKICAgICAkJFNPVVJDRV9ESVIv
YnJpZGdlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggYzQxN2NjOTU4NTcxMjE2ZDBjYTA0ZDNiYjQ0YjdmYzJkNjFmYTRk
OS4uZTI3Zjk3MzcxMmRjZWEyNjM2YjY4Mzg2N2UzNGFjMjc5ZWMzMTIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTMw
Nyw3ICszMDcsNyBAQCBzdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewogY2xhc3MgQWNjZXNzaWJpbGl0
eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHsKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7Ci0gICAgCisKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgp
OwpAQCAtNjU5LDcgKzY1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIqKTsKICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIAorICAg
IHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikKICAg
ICB7CiAgICAgICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3Bw
CmluZGV4IDcyMzI2NDIzNzg5NjkyODc3ODI5OGEwZDkzMDI5NDY1ODQ2Mzc5YTguLjlhNmUwZDgx
N2Q1YjcyNjI1N2NlZTZjZDc3ZGJkMWY4ZWJiNDc4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKQEAg
LTM0LDkgKzM0LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPCiAgICAgaWYgKGlzTWVudUxp
c3RQb3B1cCgpIHx8IGlzTWVudUxpc3RPcHRpb24oKSkKICAgICAgICAgcmV0dXJuIElnbm9yZU9i
amVjdDsKIAotICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7CisgICAgcmV0dXJuIEluY2x1ZGVP
YmplY3Q7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShB
Q0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTJl
NmRlNTA0OTI5YjlmODFiNDFhMDllMzdjNDFjMDRlNzBiYWZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5jcHAKQEAgLTAsMCArMSw0MDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIgorCisvLyBU
aGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorCisjaW5jbHVkZSA8cWRlYnVnLmg+CisjaW5j
bHVkZSA8cXdpZGdldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1FBY2Nlc3NpYmxlOjpS
b2xlIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxlUm9sZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlKQoreworICAgIHN3aXRjaCAocm9sZSkgeworICAgIC8vICAgICBjYXNlIEFubm90YXRp
b25Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBB
cHBsaWNhdGlvblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6QXBwbGljYXRpb247
CisgICAgLy8gICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6CisgICAgLy8gICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlh
bG9nUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAg
ICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKKyAgICAvLyAg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9u
TWFycXVlZVJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAv
LyAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKKyAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEJyb3dz
ZXJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAg
IGNhc2UgQnVzeUluZGljYXRvclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICBjYXNlIEJ1dHRvblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
QnV0dG9uOworICAgIGNhc2UgQ2VsbFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
Q2VsbDsKKyAgICBjYXNlIENoZWNrQm94Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
OjpDaGVja0JveDsKKyAgICAvLyAgICAgY2FzZSBDb2xvcldlbGxSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBDb2x1bW5Sb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OkNvbHVtbjsKKyAgICBjYXNlIENvbHVtbkhlYWRlclJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q29sdW1uSGVhZGVyOworICAgIGNhc2UgQ29tYm9C
b3hSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNvbWJvQm94OworICAgIC8vICAg
ICBjYXNlIERlZmluaXRpb25MaXN0VGVybVJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEZWZpbml0aW9uTGlzdERlZmluaXRpb25Sb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2Ug
RGlyZWN0b3J5Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IC8vICAgICBjYXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEaXZSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBEb2N1bWVudFJvbGU6CisgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6RG9jdW1lbnQ7CisgICAgLy8gICAgIGNhc2UgRG9jdW1lbnRB
cnRpY2xlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8v
ICAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgRG9jdW1lbnRSZWdpb25S
b2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNh
c2UgRHJhd2VyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IGNhc2UgRWRpdGFibGVUZXh0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpFZGl0
YWJsZVRleHQ7CisgICAgLy8gICAgIGNhc2UgRm9ybVJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBHcmlkUm9sZToKKyAgICAvLyAgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgR3JvdXBSb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6Okdyb3VwaW5nOworICAgIC8vICAgICBjYXNlIEdyb3dBcmVhUm9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNl
IEhlYWRpbmdSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Ly8gICAgIGNhc2UgSGVscFRhZ1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICBjYXNlIElnbm9yZWRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
Ok5vUm9sZTsKKyAgICBjYXNlIEltYWdlUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
OjpHcmFwaGljOworICAgIC8vICAgICBjYXNlIEltYWdlTWFwUm9sZToKKyAgICAvLyAgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEluY3JlbWVudG9yUm9sZToK
KyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgTGFiZWxSb2xl
OgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRpY1RleHQ7IC8vIHdoYXQgaXMgdGhl
IGRpZmYgdG8gc3RhdGljIHRleHQ/CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtBcHBsaWNhdGlv
blJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAg
Y2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgorICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtD
b250ZW50SW5mb1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICAvLyAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFB
Y2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKKyAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIExhbmRt
YXJrU2VhcmNoUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IGNhc2UgTGlua1JvbGU6CisgICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgorICAgIGNhc2UgV2Vi
Q29yZUxpbmtSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okxpbms7CisgICAgY2Fz
ZSBMaXN0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpMaXN0OworICAgIC8vICAg
ICBjYXNlIExpc3RCb3hSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
CisgICAgLy8gICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpMaXN0SXRlbTsKKyAgICAvLyAgICAgY2FzZSBMaXN0TWFya2VyUm9sZToK
KyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIE1h
dHRlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2Ug
TWVudVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07CisgICAgY2Fz
ZSBNZW51QmFyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51QmFyOworICAg
IGNhc2UgTWVudUJ1dHRvblJvbGU6CisgICAgY2FzZSBNZW51SXRlbVJvbGU6CisgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07CisgICAgLy8gICAgIGNhc2UgTWVudUxpc3RQb3B1
cFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAg
Y2FzZSBNZW51TGlzdE9wdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAvLyAgICAgY2FzZSBPdXRsaW5lUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIFBhcmFncmFwaFJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247IC8vID8KKyAgICAvLyAgICAgY2Fz
ZSBQcmVzZW50YXRpb25hbFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OjsKKyAgICAvLyAgICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6CisgICAgLy8gICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpSYWRpb0J1dHRvbjsKKyAgICBjYXNlIFJhZGlvR3JvdXBS
b2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okdyb3VwaW5nOworICAgIGNhc2UgUm93
SGVhZGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpSb3dIZWFkZXI7CisgICAg
Y2FzZSBSb3dSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJvdzsKKyAgICAvLyAg
ICAgY2FzZSBSdWxlclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsK
KyAgICAvLyAgICAgY2FzZSBSdWxlck1hcmtlclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFNjcm9sbEFyZWFSb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OlBhbmU7IC8vID8KKyAgICBjYXNlIFNjcm9sbEJhclJvbGU6CisgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6U2Nyb2xsQmFyOworICAgIC8vICAgICBjYXNlIFNoZWV0Um9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgU2xpZGVy
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTbGlkZXI7CisgICAgLy8gICAgIGNh
c2UgU2xpZGVyVGh1bWJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
IC8vIHNob3VsZCBiZSBpZ25vcmVkCisgICAgY2FzZSBTcGluQnV0dG9uUm9sZToKKyAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjpTcGluQm94OworICAgIC8vICAgICBjYXNlIFNwaW5CdXR0b25Q
YXJ0Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2Ug
U3BsaXRHcm91cFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3BsaXR0ZXI7IC8v
ID8KKyAgICBjYXNlIFNwbGl0dGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpT
cGxpdHRlcjsKKyAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OlN0YXRpY1RleHQ7CisgICAgLy8gICAgIGNhc2UgU3lzdGVtV2lkZVJvbGU6CisgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFRhYkdyb3VwUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYWdlVGFiTGlzdDsgLy8gPworICAgIGNhc2Ug
VGFiTGlzdFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6UGFnZVRhYkxpc3Q7Cisg
ICAgLy8gICAgIGNhc2UgVGFiUGFuZWxSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjo7CisgICAgY2FzZSBUYWJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OlBhZ2VUYWI7CisgICAgY2FzZSBUYWJsZVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6VGFibGU7CisgICAgLy8gICAgIGNhc2UgVGFibGVIZWFkZXJDb250YWluZXJSb2xlOgorICAg
IC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBUZXh0QXJlYVJvbGU6
CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6RWRpdGFibGVUZXh0OworICAgIGNhc2UgVHJl
ZVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6VHJlZTsKKyAgICAvLyAgICAgY2Fz
ZSBUcmVlR3JpZFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICBjYXNlIFRyZWVJdGVtUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUcmVlSXRl
bTsKKyAgICBjYXNlIFRleHRGaWVsZFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
RWRpdGFibGVUZXh0OworICAgIGNhc2UgVG9vbGJhclJvbGU6CisgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6VG9vbEJhcjsKKyAgICBjYXNlIFVua25vd25Sb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6Ok5vUm9sZTsKKyAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUb29sVGlwOworICAgIC8vICAgICBjYXNlIFZh
bHVlSW5kaWNhdG9yUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIGNhc2UgV2ViQXJlYVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6UGFuZTsK
KyAgICBjYXNlIFdpbmRvd1JvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6V2luZG93
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcURlYnVnKCkgPDwgIlVua25vd24gV2ViQ29yZSBh
Y2Nlc3NpYmlsaXR5IHJvbGU6ICIgPDwgcm9sZTsKKyAgICB9CisKKyAgICByZXR1cm4gUUFjY2Vz
c2libGU6Ok5vUm9sZTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKKyAgICA6IG1f
b2JqZWN0KG9iamVjdCkKK3sKKyAgICBBU1NFUlQob2JqZWN0KTsKK30KKworQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6On5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcigpCit7CisgICAgbV9v
YmplY3QgPSAwOworfQorCitRQWNjZXNzaWJsZTo6Um9sZSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcjo6cm9sZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZShtX29iamVjdC0+cm9sZVZhbHVlKCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSog
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAg
ICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1fb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKSkg
eworICAgICAgICBxRGVidWcoKSA8PCAiSU5WQUxJRCBDSElMRCIgPDwgbV9vYmplY3QgPDwgaW5k
ZXg7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihtX29iamVjdC0+
Y2hpbGRyZW4oKS5hdChpbmRleCkuZ2V0KCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCitp
bnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX29iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9CisKK2ludCBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcjo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl
KiBjaGlsZElmYWNlKSBjb25zdAoreworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKiBjaGlsZFdyYXBwZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcio+KGNoaWxkSWZhY2UpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCA9IGNoaWxkV3JhcHBlci0+bV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwor
ICAgIGlmIChwYXJlbnRPYmplY3QpCisgICAgICAgIHJldHVybiBwYXJlbnRPYmplY3QtPmNoaWxk
cmVuKCkuZmluZChjaGlsZFdyYXBwZXItPm1fb2JqZWN0KTsKKyAgICByZXR1cm4gLTE7Cit9CisK
K1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRB
dChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVzZSBoaXQtdGVzdGluZyBj
b2RlIGZyb20gQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6Om5hdmlnYXRl
KFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcgcmVsYXRpb24sIGludCBpbmRleCwgUUFjY2Vzc2li
bGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgUV9VTlVTRUQocmVsYXRpb24pCisg
ICAgUV9VTlVTRUQoaW5kZXgpCisgICAgKnRhcmdldCA9IDA7CisgICAgcmV0dXJuIC0xOworfQor
CitRQWNjZXNzaWJsZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OnBhcmVu
dCgpIGNvbnN0Cit7CisgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgcm9vdCBvYmplY3QuIElm
IHNvLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgRnJhbWUgYXMgcGFyZW50CisgICAgaWYgKCFtX29i
amVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgJiYgbV9vYmplY3QtPmlzU2Nyb2xsVmlldygp
KSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQgPSBtX29iamVjdC0+
Zmlyc3RDaGlsZCgpOworICAgICAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLT5pc1dl
YkFyZWEoKSkgeworICAgICAgICAgICAgLy8gV2Ugc2VlbSB0byBiZSB0aGUgcm9vdCBhY2Nlc3Np
YmxlLCBnZXQgdGhlIEZyYW1lCisgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX29i
amVjdC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBk
b2N1bWVudC0+dmlldygpLT5ob3N0V2luZG93KCk7CisgICAgICAgICAgICBpZiAoaG9zdFdpbmRv
dykgeworICAgICAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gaG9zdFdp
bmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHBhZ2VDbGll
bnQgJiYgcGFnZUNsaWVudC0+aXNRV2lkZ2V0Q2xpZW50KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdyaXRpbmcgdGhlIHNhbWUgZm9yIFFHcmFwaGljc1ZpZXcgc2hvdWxkIGJl
IHRyaXZpYWwuCisgICAgICAgICAgICAgICAgICAgIFFTY29wZWRQb2ludGVyPFFBY2Nlc3NpYmxl
SW50ZXJmYWNlPiB3ZWJWaWV3KFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uo
cGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBRU2NvcGVk
UG9pbnRlcjxRQWNjZXNzaWJsZUludGVyZmFjZT4gd2ViUGFnZSh3ZWJWaWV3LT5jaGlsZCgwKSk7
CisgICAgICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiB3ZWJGcmFtZSA9IHdl
YlBhZ2UtPmNoaWxkKDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2ViRnJhbWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICByZXR1cm4gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKG1f
b2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Cit9CisKKy8vIEZYSU1FOiBDcmVhdGUg
YSBoZWxwZXIgdXNlZCBieSBndGsgYW5kIGhlcmUKK1FTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI6OnRleHQoUUFjY2Vzc2libGU6OlRleHQgdCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KHQpIHsKKyAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lOiB7CisgICAgICAgIGlmICghbV9vYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1f
b2JqZWN0LT5zdHJpbmdWYWx1ZSgpOworCisgICAgICAgIGlmIChtX29iamVjdC0+aXNDb250cm9s
KCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsID0gbV9vYmplY3Qt
PmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAo
bGFiZWwpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3Jh
cHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihsYWJlbCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdyYXBwZXItPnRleHQodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRyeSB0ZXh0IHVuZGVyIHRoZSBub2RlLgorICAgICAgICAgICAgU3RyaW5nIHRleHRV
bmRlciA9IG1fb2JqZWN0LT50ZXh0VW5kZXJFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAodGV4
dFVuZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0VW5kZXI7CisgICAg
ICAgIH0KKworLy8gICAgICAgIGlmIChtX29iamVjdC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5p
c0lucHV0SW1hZ2UoKSkgeworLy8gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9vYmplY3QtPm5v
ZGUoKTsKKy8vICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7
CisvLyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBhbHRU
ZXh0IFN0cmluZyBzbyBhcyBub3QgdG8gZmFsbCBiYWNrIG9uIHRpdGxlLgorLy8gICAgICAgICAg
ICAgICAgU3RyaW5nIGFsdCA9IHRvSFRNTEVsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmFsdEF0dHIpOworLy8gICAgICAgICAgICAgICAgaWYgKCFhbHQuaXNFbXB0eSgpKQor
Ly8gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbHQ7CisvLyAgICAgICAgICAgIH0KKy8vICAg
ICAgICB9CisKKyAgICAgICAgLy8gRmFsbGJhY2sgZm9yIHRoZSB3ZWJBcmVhIG9iamVjdDoganVz
dCByZXR1cm4gdGhlIGRvY3VtZW50J3MgdGl0bGUuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNX
ZWJBcmVhKCkpIHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5k
b2N1bWVudCgpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJl
dHVybiBkb2N1bWVudC0+dGl0bGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdGhpbmcg
d29ya2VkIHNvIGZhciwgdHJ5IHdpdGggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QncworICAgICAg
ICAvLyB0aXRsZSgpIGJlZm9yZSBnb2luZyBhaGVhZCB3aXRoIHN0cmluZ1ZhbHVlKCkuCisgICAg
ICAgIFN0cmluZyBheFRpdGxlID0gbV9vYmplY3QtPnRpdGxlKCk7CisgICAgICAgIGlmICghYXhU
aXRsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gYXhUaXRsZTsKKworICAgICAgICBy
ZXR1cm4gbV9vYmplY3QtPnN0cmluZ1ZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgUUFjY2Vzc2li
bGU6OkRlc2NyaXB0aW9uOgorICAgICAgICByZXR1cm4gUVN0cmluZyhtX29iamVjdC0+YWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitRQWNjZXNzaWJsZTo6U3RhdGUgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OnN0YXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGUoKTsKK30KKworUVJlY3QgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OnJlY3QoKSBjb25zdAoreworICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CisgICAgTGF5b3V0UmVjdCBy
ZWN0ID0gbV9vYmplY3QtPmVsZW1lbnRSZWN0KCk7CisgICAgcmV0dXJuIFFSZWN0KGZyYW1lVmll
dy0+Y29udGVudHNUb1NjcmVlbihyZWN0KSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI6OnNldFRleHQoUUFjY2Vzc2libGU6OlRleHQsIGNvbnN0IFFTdHJpbmcmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjMwZTYwNTU2OWE4NmY3Y2IyODg1MGFkYjY5OGI3Njk3MGQ1NDYy
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaApAQCAtMCwwICsxLDgwIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDkgSmFuIEFsb256bworICAgIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiBJZ2FsaWEgUy5MLgorCisgICAgUG9ydGlvbnMgZnJvbSBNb3ppbGxhIGExMXksIGNvcHlyaWdo
dCBhcyBmb2xsb3dzOgorCisgICAgVGhlIE9yaWdpbmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29k
ZS4KKworICAgIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcwor
ICAgIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KKyAgICBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRoZSBJ
bml0aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAyMDAyCisgICAgdGhlIEluaXRpYWwg
RGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKworI2lmbmRlZiBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcl9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gK
KworI2luY2x1ZGUgPHFhY2Nlc3NpYmxlLmg+CisKKy8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZh
Y2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hF
Q0soNSwgMCwgMCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5
T2JqZWN0OworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciA6IHB1YmxpYyBRQWNj
ZXNzaWJsZUludGVyZmFjZSB7CisKK3B1YmxpYzoKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgfkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKCk7CisKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBwYXJl
bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgdmly
dHVhbCBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBjb25zdDsKKworICAg
IHZpcnR1YWwgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSopIGNv
bnN0OworICAgIHZpcnR1YWwgUUFjY2Vzc2libGVJbnRlcmZhY2UqIGNoaWxkQXQoaW50IHgsIGlu
dCB5KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0CisgICAgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBpbnQgbmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0
aW9uRmxhZywgaW50IGluZGV4LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3Q7
CisgICAgdmlydHVhbCBRT2JqZWN0KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAg
ICB2aXJ0dWFsIFFSZWN0IHJlY3QoKSBjb25zdDsKKworICAgIFFBY2Nlc3NpYmxlOjpSb2xlIHJv
bGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0KFFBY2Nlc3NpYmxlOjpUZXh0
LCBjb25zdCBRU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlOjpTdGF0ZSBzdGF0
ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBRU3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRleHQp
IGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG1f
b2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUXQgNQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC5wcmkKaW5kZXggMDVlYjA5YTg3OGY1M2MxYzM5MTU2MzA0YWMzZDkwN2Q2MGNk
M2U1ZC4uMjVmMTNjNDBjYzg0N2Y1YWIwZDNhMTRlYmRlNjQ5NGNlNGQwN2Q1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnBy
aQpAQCAtMyw2ICszLDcgQEAgU09VUkNFUyArPSBcCiAgICAgJCRQV0QvcXQvQXBpL3FncmFwaGlj
c3dlYnZpZXcuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnBhZ2UuY3BwIFwKICAgICAkJFBX
RC9xdC9BcGkvcXdlYnZpZXcuY3BwIFwKKyAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3Np
YmxlLmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBcCiAgICAgJCRQV0Qv
cXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJzZXR0aW5ncy5j
cHAgXApAQCAtMjMsNiArMjQsNyBAQCBIRUFERVJTICs9IFwKICAgICAkJFBXRC9xdC9BcGkvcXdl
YmtpdHBsYXRmb3JtcGx1Z2luLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2VicGFnZS5oIFwKICAg
ICAkJFBXRC9xdC9BcGkvcXdlYnZpZXcuaCBcCisgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3YWNj
ZXNzaWJsZV9wLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2Vic2V0dGluZ3MuaCBcCiAgICAgJCRQ
V0QvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2Vi
ZGF0YWJhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCmluZGV4IDM1ZmNlNGJlYmZjMDky
ZDUzOTE2NWRlYmFmYjM5NWJjNTExNDk4NmYuLmIwNzJmYWRiYTcyZTI4ODE1MzE3OGUzNzc0Yjdm
ZmQ0YTk2YzUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC0yMzUsNiArMjM1LDcg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ7CiAgICAgZnJpZW5k
IGNsYXNzIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlQ2xpZW50UXQ7CisgICAgZnJpZW5kIGNs
YXNzIFFXZWJGcmFtZUFjY2Vzc2libGU7CiAgICAgUVdlYkZyYW1lUHJpdmF0ZSAqZDsKICAgICBR
X1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX29yaWVudGF0aW9uQ2hhbmdlZCgpKQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggYi9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oCmluZGV4IGZkMmZkNGIzYmVkYmI3NjEzYjM1MGE5NzMwZGFmZjUzMmM0
MTI5ZTkuLmE1OTBlNWI3YmYxZjM5NGMzZGY0ZDVjMjYyZmUxOTlkMWQ0MmE1ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuaApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3Jl
OjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKICAgICBmcmllbmQgY2xhc3MgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ7CisKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VBY2Nlc3NpYmxlOwogfTsKIAog
UV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoUVdlYlBhZ2U6OkZpbmRGbGFncykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJ2aWV3LmNwcAppbmRleCA0YTJkMTg2YTliZmRkZjk2OGU3ZDA1YjFmYjY5ODdh
NGZlYzdhZTQxLi5jM2U5MzJlMTQwNWQwYzExM2IxNmY3Yjk5ZjM5NTgxYzUxMjk5OGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwCkBAIC0yMiwxMSArMjIsMTMgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdl
X3AuaCIKKyNpbmNsdWRlICJxd2Vidmlld2FjY2Vzc2libGVfcC5oIgogI2luY2x1ZGUgInFiaXRt
YXAuaCIKICNpbmNsdWRlICJxZXZlbnQuaCIKICNpbmNsdWRlICJxcGFpbnRlci5oIgpAQCAtMTY3
LDYgKzE2OSwxMSBAQCBRV2ViVmlldzo6UVdlYlZpZXcoUVdpZGdldCAqcGFyZW50KQogCiAgICAg
c2V0TW91c2VUcmFja2luZyh0cnVlKTsKICAgICBzZXRGb2N1c1BvbGljeShRdDo6V2hlZWxGb2N1
cyk7CisKKy8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZhY2VzIGNoYW5nZWQgQVBJIGluIFF0IDUK
KyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKyAgICBRQWNjZXNz
aWJsZTo6aW5zdGFsbEZhY3RvcnkoYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkpOworI2VuZGlm
CiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXdhY2Nl
c3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjNlMGUyYzhhNGI3N2RmZTRjYjNhOTY5YTZmNzYxMGE1YWEzOTU1ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5j
cHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJxd2Vidmlld2FjY2Vzc2libGVfcC5oIgorCisvLyBUaGUgUUFjY2Vz
c2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBR
VF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCIKKworUUFjY2Vzc2libGVJbnRl
cmZhY2UqIGFjY2Vzc2libGVJbnRlcmZhY2VGYWN0b3J5KGNvbnN0IFFTdHJpbmcmIGtleSwgUU9i
amVjdCogb2JqZWN0KQoreworICAgIFFfVU5VU0VEKGtleSkKKworICAgIGlmIChRV2ViUGFnZSAq
cGFnZSA9IHFvYmplY3RfY2FzdDxRV2ViUGFnZSo+KG9iamVjdCkpCisgICAgICAgIHJldHVybiBu
ZXcgUVdlYlBhZ2VBY2Nlc3NpYmxlKHBhZ2UpOworCisgICAgaWYgKFFXZWJWaWV3ICp2aWV3ID0g
cW9iamVjdF9jYXN0PFFXZWJWaWV3Kj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2Vi
Vmlld0FjY2Vzc2libGUodmlldyk7CisKKyAgICBpZiAoUVdlYkZyYW1lICpmcmFtZSA9IHFvYmpl
Y3RfY2FzdDxRV2ViRnJhbWUqPihvYmplY3QpKQorICAgICAgICByZXR1cm4gbmV3IFFXZWJGcmFt
ZUFjY2Vzc2libGUoZnJhbWUpOworICAgIHJldHVybiAwOworfQorCisKKworUVdlYkZyYW1lQWNj
ZXNzaWJsZTo6UVdlYkZyYW1lQWNjZXNzaWJsZShRV2ViRnJhbWUqIGZyYW1lKQorICAgIDogUUFj
Y2Vzc2libGVPYmplY3QoZnJhbWUpCit7CisgICAgaWYgKCFXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQorICAgICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7Cit9CisKK1FXZWJGcmFtZSogUVdlYkZyYW1lQWNjZXNz
aWJsZTo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1l
Kj4ob2JqZWN0KCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogUVdlYkZyYW1lQWNjZXNz
aWJsZTo6cGFyZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNj
ZXNzaWJsZUludGVyZmFjZShvYmplY3QoKS0+cGFyZW50KCkpOworfQorCitRU3RyaW5nIFFXZWJG
cmFtZUFjY2Vzc2libGU6OnRleHQoUUFjY2Vzc2libGU6OlRleHQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFFTdHJpbmcoKTsKK30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJGcmFtZUFjY2Vz
c2libGU6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgpCisgICAgICAg
IHJldHVybiAwOworCisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogYSA9IGZyYW1l
KCktPmQtPmZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsK
KyAgICBpZiAoYSkKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcihhKTsKKyAgICByZXR1cm4gMDsKK30KKworUUFjY2Vzc2libGU6OlN0YXRlIFFX
ZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OlN0YXRlKCk7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFXZWJGcmFtZUFjY2Vzc2libGU6
OnJvbGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q2xpZW50OworfQorCitp
bnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxh
ZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICAqdGFy
Z2V0ID0gMDsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpj
aGlsZENvdW50KCkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
ID0gZnJhbWUoKS0+ZC0+ZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9i
amVjdCgpOworICAgIHJldHVybiBhID8gMSA6IDA7Cit9CisKK2ludCBRV2ViRnJhbWVBY2Nlc3Np
YmxlOjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25zdAorewor
ICAgIHJldHVybiAwOworfQorCisKKworUVdlYlBhZ2VBY2Nlc3NpYmxlOjpRV2ViUGFnZUFjY2Vz
c2libGUoUVdlYlBhZ2UqIHBhZ2UpCisgICAgOiBRQWNjZXNzaWJsZU9iamVjdChwYWdlKQorewor
fQorCitRV2ViUGFnZSogUVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYWdlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJQYWdlKj4ob2JqZWN0KCkpOworfQorCitRU3RyaW5nIFFX
ZWJQYWdlQWNjZXNzaWJsZTo6dGV4dChRQWNjZXNzaWJsZTo6VGV4dCB0KSBjb25zdAoreworICAg
IHJldHVybiBRU3RyaW5nKCk7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBRV2ViUGFnZUFj
Y2Vzc2libGU6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVy
eUFjY2Vzc2libGVJbnRlcmZhY2Uob2JqZWN0KCktPnBhcmVudCgpKTsKK30KKworUUFjY2Vzc2li
bGVJbnRlcmZhY2UqIFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAor
eworICAgIGlmICghaW5kZXggJiYgcGFnZSgpLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJu
IG5ldyBRV2ViRnJhbWVBY2Nlc3NpYmxlKHBhZ2UoKS0+bWFpbkZyYW1lKCkpOworICAgIHJldHVy
biAwOworfQorCitpbnQgUVdlYlBhZ2VBY2Nlc3NpYmxlOjpjaGlsZENvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gcGFnZSgpLT5tYWluRnJhbWUoKSA/IDEgOiAwOworfQorCitpbnQgUVdlYlBh
Z2VBY2Nlc3NpYmxlOjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBj
b25zdAoreworICAgIHJldHVybiAwOworfQorCitpbnQgUVdlYlBhZ2VBY2Nlc3NpYmxlOjpuYXZp
Z2F0ZShRQWNjZXNzaWJsZTo6UmVsYXRpb25GbGFnLCBpbnQsIFFBY2Nlc3NpYmxlSW50ZXJmYWNl
KiogdGFyZ2V0KSBjb25zdAoreworICAgICp0YXJnZXQgPSAwOworICAgIHJldHVybiAtMTsKK30K
KworUUFjY2Vzc2libGU6OlJvbGUgUVdlYlBhZ2VBY2Nlc3NpYmxlOjpyb2xlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNsaWVudDsKK30KKworUUFjY2Vzc2libGU6OlN0YXRl
IFFXZWJQYWdlQWNjZXNzaWJsZTo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6U3RhdGUoKTsKK30KKworCisKK1FXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nl
c3NpYmxlKFFXZWJWaWV3KiB2aWV3KQorICAgIDogUUFjY2Vzc2libGVXaWRnZXQodmlldywgUUFj
Y2Vzc2libGU6OkRvY3VtZW50KQoreworfQorCitRV2ViVmlldyogUVdlYlZpZXdBY2Nlc3NpYmxl
Ojp2aWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJWaWV3Kj4ob2Jq
ZWN0KCkpOworfQorCitpbnQgUVdlYlZpZXdBY2Nlc3NpYmxlOjpjaGlsZENvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdmlldygpLT5wYWdlKCkgPyAxIDogMDsKK30KKworUUFjY2Vzc2libGVJ
bnRlcmZhY2UqIFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAorewor
ICAgIGlmICghaW5kZXggJiYgdmlldygpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBuZXcgUVdl
YlBhZ2VBY2Nlc3NpYmxlKHZpZXcoKS0+cGFnZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworI2Vu
ZGlmIC8vIFF0IDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3YWNj
ZXNzaWJsZV9wLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYwYTVhMTkzNjY0NjcxOWM0MWZkZTc2YWEyNmNlZTRhMDU0YzlmYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGVf
cC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUVdFQlZJ
RVdBQ0NFU1NJQkxFX1BfSAorI2RlZmluZSBRV0VCVklFV0FDQ0VTU0lCTEVfUF9ICisKKyNpbmNs
dWRlIDxxZ2xvYmFsLmg+CisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQ
SSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisK
KyNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorI2luY2x1ZGUgInFhY2Nlc3NpYmxlb2JqZWN0Lmgi
CisjaW5jbHVkZSAicWFjY2Vzc2libGV3aWRnZXQuaCIKKworI2luY2x1ZGUgInF3ZWJmcmFtZS5o
IgorI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYnZpZXcuaCIKKworCitR
QWNjZXNzaWJsZUludGVyZmFjZSogYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkoY29uc3QgUVN0
cmluZyYga2V5LCBRT2JqZWN0Kik7CisKKy8qCisgKiBDbGFzc2VzIHJlcHJlc2VudGluZyBhY2Nl
c3NpYmxlIG9iamVjdHMgZm9yIFZpZXcsIEZyYW1lIGFuZCBQYWdlCisgKgorICogRWFjaCBvZiB0
aGVzZSBqdXN0IHJldHVybnMgb25lIGNoaWxkIHdoaWNoIGxldHMgdGhlIGFjY2Vzc2liaWxpdHkK
KyAqIGZyYW13b3JrIG5hdmlnYXRlIHRvd2FyZHMgdGhlIGFjdHVhbCBjb250ZW50cyBpbiB0aGUg
ZnJhbWUuCisgKi8KKworY2xhc3MgUVdlYkZyYW1lQWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNz
aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgUVdlYkZyYW1lQWNjZXNzaWJsZShRV2ViRnJhbWUq
KTsKKworICAgIFFXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKKworICAgIFFBY2Nlc3NpYmxlSW50
ZXJmYWNlKiBwYXJlbnQoKSBjb25zdDsKKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAg
IFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZChpbnQgaW5kZXgpIGNvbnN0OworICAgIGludCBp
bmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25zdDsKKyAgICBpbnQg
bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVy
ZmFjZSoqIHRhcmdldCkgY29uc3Q7CisKKyAgICBRU3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRl
eHQpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlOjpSb2xlIHJvbGUoKSBjb25zdDsKKyAgICBRQWNj
ZXNzaWJsZTo6U3RhdGUgc3RhdGUoKSBjb25zdDsKK307CisKKworY2xhc3MgUVdlYlBhZ2VBY2Nl
c3NpYmxlIDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBRV2ViUGFn
ZUFjY2Vzc2libGUoUVdlYlBhZ2UqKTsKKworICAgIFFXZWJQYWdlKiBwYWdlKCkgY29uc3Q7CisK
KyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogcGFyZW50KCkgY29uc3Q7CisgICAgaW50IGNoaWxk
Q291bnQoKSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4
KSBjb25zdDsKKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl
KikgY29uc3Q7CisgICAgaW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcsIGlu
dCwgUUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0OworCisgICAgUVN0cmluZyB0
ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZTo6Um9sZSByb2xl
KCkgY29uc3Q7CisgICAgUUFjY2Vzc2libGU6OlN0YXRlIHN0YXRlKCkgY29uc3Q7Cit9OworCisK
K2NsYXNzIFFXZWJWaWV3QWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldCB7Citw
dWJsaWM6CisgICAgUVdlYlZpZXdBY2Nlc3NpYmxlKFFXZWJWaWV3Kik7CisKKyAgICBRV2ViVmll
dyogdmlldygpIGNvbnN0OworCisgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdDsKKyAgICBRQWNj
ZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBjb25zdDsKK307CisKKyNlbmRpZiAv
LyBRdCA1CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9hcGkucHJpIGIvU291cmNlL2FwaS5w
cmkKaW5kZXggOWI3YjI3YmYyZDljNDM1NzdjYjFiYjYxN2NiMTUyZDY0YmQ0MGYxYi4uYmZhMWRj
ZTdlMTRmYmM4ZDVkNDFiMjFkNmQxOWFmZTg3NTMwNDNiYyAxMDA2NDQKLS0tIGEvU291cmNlL2Fw
aS5wcmkKKysrIGIvU291cmNlL2FwaS5wcmkKQEAgLTE2OSw2ICsxNjksOSBAQCBjb250YWlucyhD
T05GSUcsIHRleG1hcCkgewogICAgIERFRklORVMgKz0gV1RGX1VTRV9URVhUVVJFX01BUFBFUj0x
CiB9CiAKK2NvbnRhaW5zKFFUX0NPTkZJRywgYWNjZXNzaWJpbGl0eSkgeworICAgIGhhdmVRdCg1
KTogREVGSU5FUyArPSBBQ0NFU1NJQklMSVRZPTEKK30KIAogIyAtLS0tLS0tLS0tLS0tIEluc3Rh
bGwgcnVsZXMgLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggYjQ2YjM4ZmUzMjlhMDc2N2RmMDU4ODFlYTE4NTM2NWIxMzBjYmY3YS4uOTJhMjMz
MmVhNzJhY2QxYTRiMmNjZTMxZmFlYjhkZjBkZTMwNjNlMCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBH
bGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIElu
aXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhY2Nlc3NpYmlsaXR5IGRl
ZmluZSB3aGVuIFF0IGlzIGJ1aWx0IHdpdGggYWNjZXNzaWJpbGl0eSBzdXBwb3J0LgorCisgICAg
ICAgICogU291cmNlL2FwaS5wcmk6CisKIDIwMTItMDEtMzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgd2Via2l0LXBlcmYuYXBwc3BvdC5jb20gc2hvdWxkIGFj
Y2VwdCB0ZXN0IHJlc3VsdHMgd2l0aG91dCBtZWRpYW5zCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125780</attachid>
            <date>2012-02-07 01:09:25 -0800</date>
            <delta_ts>2012-02-07 02:32:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20120207100919.patch</filename>
            <type>text/plain</type>
            <size>36550</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uYjUyYWFlZTE5NzBiZTAzZGRlM2Y4ODY3MTMzNDBh
Y2VmMjY5OGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTA2ICBGcmVk
ZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFF0IHdyYXBw
ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpy
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5k
ZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpz
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6Om9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6c2V0VGV4dCk6CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgR2NjIGJ1aWxkIGZpeCBhZnRlciByMTA2NDgyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
ZmM5YWRmN2EwYmYzODQyODIyOGU3YzYzNmFmNzcyYmM1NzExNDM2Li5mYWY0MWRhN2IzNzNjNjZm
MzdkZWEwNmJjOTk3MGE2YjgyMWEwYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTAyLTA2ICBGcmVkZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0LnByaTogQWRkZWQgbmV3IGZpbGVzIGZvciBhY2Nlc3NpYmlsaXR5LgorCiAyMDEyLTAx
LTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29u
dGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1NTQzZTYwMWJlYjFjNjI1NzhkODBmNzcyMmJmZDk1
MzU0MmI4MDUzLi40MWMzMWI4NDE2YzY2OGU5OWJiMTc3MTMwYTBjZjk3N2JhYjZkNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBRV2ViVmlldyB0byB0aGUgYWNj
ZXNzaWJpbGl0eSBmcmFtZXdvcmsgYW5kIG1ha2UKKyAgICAgICAgaXQgcG9zc2libGUgdG8gbmF2
aWdhdGUgaW50byB0aGUgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCBoaWVyYXJjaHkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3YWNjZXNz
aWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZy
YW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpmcmFtZSk6Cisg
ICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZUFj
Y2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZCk6
CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjpuYXZpZ2F0ZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpyb2xlKToK
KyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OlFXZWJQYWdlQWNjZXNz
aWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhZ2UpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFy
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJs
ZTo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUp
OgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpyb2xlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZTo6c3RhdGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAg
ICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFX
ZWJWaWV3QWNjZXNzaWJsZTo6dmlldyk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNo
aWxkKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisKIDIwMTIt
MDItMDEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVByaW9yaXR5KCkgZmFpbHMgZm9y
IENTUyBzaG9ydGhhbmQgcHJvcGVydGllcyB3aXRoICdpbXBvcnRhbnQnIHByaW9yaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmYzZmNmU2NGYzOGYzYzlhZDliMThjMWJjNGI2NGJjMDdjN2FkZTY1Li5hODQz
NTgxYWE3OWI5NTIyMmE4NDhhM2Y5ODM3OTY1ODBmODJlODA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI3
NjcsNiArMjc2Nyw3IEBAIEhFQURFUlMgKz0gXAogCiBTT1VSQ0VTICs9IFwKICAgICBhY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgXAorICAgIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuY3BwIFwKICAgICBwYWdlL3F0L0RyYWdDb250
cm9sbGVyUXQuY3BwIFwKICAgICBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNmb3JtYXRpb25NYXRyaXhRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQppbmRleCBhZGRkNTg3OTM5NzlmMjdkNDNlNjg5MDA0NWVmZjQyZjZiZjFjOWI4Li42MTcyMzFi
MGRlMTIxZjdiOTc2ZWY4YTI2NWYyYWEyNjU0ZmViMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMTks
NiArMTksNyBAQCBXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9ICQke1JPT1RfQlVJTERf
RElSfS9Tb3VyY2UvV2ViQ29yZS8kJHtHRU5FUkFURURfUwogSU5DTFVERVBBVEggKz0gXAogICAg
ICQkU09VUkNFX0RJUiBcCiAgICAgJCRTT1VSQ0VfRElSL2FjY2Vzc2liaWxpdHkgXAorICAgICQk
U09VUkNFX0RJUi9hY2Nlc3NpYmlsaXR5L3F0IFwKICAgICAkJFNPVVJDRV9ESVIvYmluZGluZ3Mg
XAogICAgICQkU09VUkNFX0RJUi9iaW5kaW5ncy9nZW5lcmljIFwKICAgICAkJFNPVVJDRV9ESVIv
YnJpZGdlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggYzQxN2NjOTU4NTcxMjE2ZDBjYTA0ZDNiYjQ0YjdmYzJkNjFmYTRk
OS4uM2QyYTRhNGM0ZjkwNDhmYWFkMWY0MjhhOTVhODUxOGMyMjYzMDllMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTMw
Nyw3ICszMDcsNyBAQCBzdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewogY2xhc3MgQWNjZXNzaWJpbGl0
eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHsKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7Ci0gICAgCisKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgp
OwpAQCAtNjU3LDkgKzY1NywxMCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRX
cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKik7CisjZWxpZiBQTEFURk9STShRVCkK
ICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCB7
IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIAorICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikKICAgICB7CiAgICAgICAgIG1fd3JhcHBlciA9
IHdyYXBwZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwCmluZGV4IDcyMzI2NDIzNzg5NjkyODc3
ODI5OGEwZDkzMDI5NDY1ODQ2Mzc5YTguLjlhNmUwZDgxN2Q1YjcyNjI1N2NlZTZjZDc3ZGJkMWY4
ZWJiNDc4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNj
ZXNzaWJpbGl0eU9iamVjdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKQEAgLTM0LDkgKzM0LDEwIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBs
YXRmb3JtSW5jbHVkZXNPCiAgICAgaWYgKGlzTWVudUxpc3RQb3B1cCgpIHx8IGlzTWVudUxpc3RP
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKIAotICAgIHJldHVybiBEZWZh
dWx0QmVoYXZpb3I7CisgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CiB9CiAKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzgzZDg1OTVmZTJhMWUzZjRmZWIxYzRlNTM0
OGI3YjhjYzhmYWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5jcHAKQEAgLTAsMCArMSw0MTYgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICAg
IENvcHlyaWdodCAoQykgMjAwOSBKYW4gQWxvbnpvCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDEwLCAyMDExLCAyMDEyIElnYWxpYSBTLkwuCisKKyAgICBQb3J0aW9ucyBmcm9tIE1vemlsbGEg
YTExeSwgY29weXJpZ2h0IGFzIGZvbGxvd3M6CisKKyAgICBUaGUgT3JpZ2luYWwgQ29kZSBpcyBt
b3ppbGxhLm9yZyBjb2RlLgorCisgICAgVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmln
aW5hbCBDb2RlIGlzCisgICAgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgorICAgIFBvcnRpb25zIGNy
ZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDIKKyAg
ICB0aGUgSW5pdGlhbCBEZXZlbG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgiCisK
Ky8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZhY2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBR
VF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKworI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxxZGVidWcuaD4K
KyNpbmNsdWRlIDxxd2lkZ2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUUFjY2Vzc2li
bGU6OlJvbGUgd2ViS2l0Um9sZVRvUUFjY2Vzc2libGVSb2xlKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCit7CisgICAgc3dpdGNoIChyb2xlKSB7CisgICAgLy8gICAgIGNhc2UgQW5u
b3RhdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBj
YXNlIEFwcGxpY2F0aW9uUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpBcHBsaWNh
dGlvbjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICAvLyAgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnREaWFsb2dSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Ly8gICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgorICAg
IC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgQXBwbGlj
YXRpb25NYXJxdWVlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICAvLyAgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2Ug
QnJvd3NlclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAv
LyAgICAgY2FzZSBCdXN5SW5kaWNhdG9yUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIGNhc2UgQnV0dG9uUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjpCdXR0b247CisgICAgY2FzZSBDZWxsUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjpDZWxsOworICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OkNoZWNrQm94OworICAgIC8vICAgICBjYXNlIENvbG9yV2VsbFJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIENvbHVtblJvbGU6CisgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q29sdW1uOworICAgIGNhc2UgQ29sdW1uSGVhZGVyUm9s
ZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpDb2x1bW5IZWFkZXI7CisgICAgY2FzZSBD
b21ib0JveFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q29tYm9Cb3g7CisgICAg
Ly8gICAgIGNhc2UgRGVmaW5pdGlvbkxpc3RUZXJtUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIERlZmluaXRpb25MaXN0RGVmaW5pdGlv
blJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAg
Y2FzZSBEaXJlY3RvcnlSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
CisgICAgLy8gICAgIGNhc2UgRGlzY2xvc3VyZVRyaWFuZ2xlUm9sZToKKyAgICAvLyAgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIERpdlJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIERvY3VtZW50Um9sZToKKyAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpEb2N1bWVudDsKKyAgICAvLyAgICAgY2FzZSBEb2N1
bWVudEFydGljbGVSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7Cisg
ICAgLy8gICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBR
QWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEb2N1bWVudFJl
Z2lvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAg
ICAgY2FzZSBEcmF3ZXJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
CisgICAgY2FzZSBFZGl0YWJsZVRleHRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OkVkaXRhYmxlVGV4dDsKKyAgICAvLyAgICAgY2FzZSBGb3JtUm9sZToKKyAgICAvLyAgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEdyaWRSb2xlOgorICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBHcm91cFJvbGU6CisgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6R3JvdXBpbmc7CisgICAgLy8gICAgIGNhc2UgR3Jvd0Fy
ZWFSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAg
IGNhc2UgSGVhZGluZ1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsK
KyAgICAvLyAgICAgY2FzZSBIZWxwVGFnUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIGNhc2UgSWdub3JlZFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6Tm9Sb2xlOworICAgIGNhc2UgSW1hZ2VSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OkdyYXBoaWM7CisgICAgLy8gICAgIGNhc2UgSW1hZ2VNYXBSb2xlOgorICAgIC8vICAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgSW5jcmVtZW50b3JS
b2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBMYWJl
bFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGljVGV4dDsgLy8gd2hhdCBp
cyB0aGUgZGlmZiB0byBzdGF0aWMgdGV4dD8KKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8v
ICAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6Cisg
ICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBMYW5k
bWFya0NvbnRlbnRJbmZvUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIC8vICAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2Ug
TGFuZG1hcmtTZWFyY2hSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
CisgICAgY2FzZSBMaW5rUm9sZToKKyAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAgY2Fz
ZSBXZWJDb3JlTGlua1JvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TGluazsKKyAg
ICBjYXNlIExpc3RSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okxpc3Q7CisgICAg
Ly8gICAgIGNhc2UgTGlzdEJveFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAvLyAgICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKKyAgICAvLyAgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6Okxpc3RJdGVtOworICAgIC8vICAgICBjYXNlIExpc3RNYXJrZXJS
b2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNh
c2UgTWF0dGVSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Y2FzZSBNZW51Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51SXRlbTsKKyAg
ICBjYXNlIE1lbnVCYXJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Ok1lbnVCYXI7
CisgICAgY2FzZSBNZW51QnV0dG9uUm9sZToKKyAgICBjYXNlIE1lbnVJdGVtUm9sZToKKyAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51SXRlbTsKKyAgICAvLyAgICAgY2FzZSBNZW51TGlz
dFBvcHVwUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8v
ICAgICBjYXNlIE1lbnVMaXN0T3B0aW9uUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIE91dGxpbmVSb2xlOgorICAgIC8vICAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgUGFyYWdyYXBoUm9sZToKKyAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgUG9wVXBCdXR0b25S
b2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkJ1dHRvbjsgLy8gPworICAgIC8vICAg
ICBjYXNlIFByZXNlbnRhdGlvbmFsUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6OworICAgIC8vICAgICBjYXNlIFByb2dyZXNzSW5kaWNhdG9yUm9sZToKKyAgICAvLyAg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgor
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJhZGlvQnV0dG9uOworICAgIGNhc2UgUmFkaW9H
cm91cFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6R3JvdXBpbmc7CisgICAgY2Fz
ZSBSb3dIZWFkZXJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJvd0hlYWRlcjsK
KyAgICBjYXNlIFJvd1JvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Um93OworICAg
IC8vICAgICBjYXNlIFJ1bGVyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgIC8vICAgICBjYXNlIFJ1bGVyTWFya2VyUm9sZToKKyAgICAvLyAgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgU2Nyb2xsQXJlYVJvbGU6CisgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6UGFuZTsgLy8gPworICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKKyAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTY3JvbGxCYXI7CisgICAgLy8gICAgIGNhc2UgU2hl
ZXRSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBT
bGlkZXJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlNsaWRlcjsKKyAgICAvLyAg
ICAgY2FzZSBTbGlkZXJUaHVtYlJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsgLy8gc2hvdWxkIGJlIGlnbm9yZWQKKyAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlNwaW5Cb3g7CisgICAgLy8gICAgIGNhc2UgU3BpbkJ1
dHRvblBhcnRSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Y2FzZSBTcGxpdEdyb3VwUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTcGxpdHRl
cjsgLy8gPworICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OlNwbGl0dGVyOworICAgIGNhc2UgU3RhdGljVGV4dFJvbGU6CisgICAgICAgIHJldHVybiBR
QWNjZXNzaWJsZTo6U3RhdGljVGV4dDsKKyAgICAvLyAgICAgY2FzZSBTeXN0ZW1XaWRlUm9sZToK
KyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgVGFiR3JvdXBS
b2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlBhZ2VUYWJMaXN0OyAvLyA/CisgICAg
Y2FzZSBUYWJMaXN0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYWdlVGFiTGlz
dDsKKyAgICAvLyAgICAgY2FzZSBUYWJQYW5lbFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFRhYlJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6UGFnZVRhYjsKKyAgICBjYXNlIFRhYmxlUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpUYWJsZTsKKyAgICAvLyAgICAgY2FzZSBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU6
CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFRleHRBcmVh
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQ7CisgICAgY2Fz
ZSBUcmVlUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUcmVlOworICAgIC8vICAg
ICBjYXNlIFRyZWVHcmlkUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIGNhc2UgVHJlZUl0ZW1Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlRy
ZWVJdGVtOworICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjpFZGl0YWJsZVRleHQ7CisgICAgY2FzZSBUb29sYmFyUm9sZToKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpUb29sQmFyOworICAgIGNhc2UgVW5rbm93blJvbGU6CisgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6Tm9Sb2xlOworICAgIGNhc2UgVXNlckludGVyZmFjZVRvb2x0aXBS
b2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlRvb2xUaXA7CisgICAgLy8gICAgIGNh
c2UgVmFsdWVJbmRpY2F0b3JSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
Ojo7CisgICAgY2FzZSBXZWJBcmVhUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQ
YW5lOworICAgIGNhc2UgV2luZG93Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpX
aW5kb3c7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBxRGVidWcoKSA8PCAiVW5rbm93biBXZWJD
b3JlIGFjY2Vzc2liaWxpdHkgcm9sZTogIiA8PCByb2xlOworICAgIH0KKworICAgIHJldHVybiBR
QWNjZXNzaWJsZTo6Tm9Sb2xlOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6QWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQorICAg
IDogbV9vYmplY3Qob2JqZWN0KQoreworICAgIEFTU0VSVChvYmplY3QpOworfQorCitBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKCkKK3sKKyAg
ICBtX29iamVjdCA9IDA7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOjpyb2xlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2ViS2l0Um9sZVRvUUFjY2Vz
c2libGVSb2xlKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSk7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJm
YWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAor
eworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbV9vYmplY3QtPmNoaWxkcmVuKCkuc2l6
ZSgpKSB7CisgICAgICAgIHFEZWJ1ZygpIDw8ICJJTlZBTElEIENISUxEIiA8PCBtX29iamVjdCA8
PCBpbmRleDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKiB3cmFwcGVyID0gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKG1fb2Jq
ZWN0LT5jaGlsZHJlbigpLmF0KGluZGV4KS5nZXQoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9
CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKK30KKworaW50IEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRl
cmZhY2UqIGNoaWxkSWZhY2UpIGNvbnN0Cit7CisgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIqIGNoaWxkV3JhcHBlciA9IHN0YXRpY19jYXN0PGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKj4oY2hpbGRJZmFjZSk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50T2JqZWN0ID0gY2hpbGRXcmFwcGVyLT5tX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVk
KCk7CisgICAgaWYgKHBhcmVudE9iamVjdCkKKyAgICAgICAgcmV0dXJuIHBhcmVudE9iamVjdC0+
Y2hpbGRyZW4oKS5maW5kKGNoaWxkV3JhcHBlci0+bV9vYmplY3QpOworICAgIHJldHVybiAtMTsK
K30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpj
aGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVXNlIGhpdC10ZXN0
aW5nIGNvZGUgZnJvbSBBY2Nlc3NpYmlsaXR5T2JqZWN0LgorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6bmF2
aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZyByZWxhdGlvbiwgaW50IGluZGV4LCBRQWNj
ZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICBRX1VOVVNFRChyZWxhdGlv
bikKKyAgICBRX1VOVVNFRChpbmRleCkKKyAgICAqdGFyZ2V0ID0gMDsKKyAgICByZXR1cm4gLTE7
Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6
cGFyZW50KCkgY29uc3QKK3sKKyAgICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSByb290IG9iamVj
dC4gSWYgc28sIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBGcmFtZSBhcyBwYXJlbnQKKyAgICBpZiAo
IW1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSAmJiBtX29iamVjdC0+aXNTY3JvbGxW
aWV3KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RDaGlsZCA9IG1fb2Jq
ZWN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQt
PmlzV2ViQXJlYSgpKSB7CisgICAgICAgICAgICAvLyBXZSBzZWVtIHRvIGJlIHRoZSByb290IGFj
Y2Vzc2libGUsIGdldCB0aGUgRnJhbWUKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fb2JqZWN0LT5kb2N1bWVudCgpOworICAgICAgICAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dyA9IGRvY3VtZW50LT52aWV3KCktPmhvc3RXaW5kb3coKTsKKyAgICAgICAgICAgIGlmIChob3N0
V2luZG93KSB7CisgICAgICAgICAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSBo
b3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAocGFn
ZUNsaWVudCAmJiBwYWdlQ2xpZW50LT5pc1FXaWRnZXRDbGllbnQoKSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV3JpdGluZyB0aGUgc2FtZSBmb3IgUUdyYXBoaWNzVmlldyBzaG91
bGQgYmUgdHJpdmlhbC4KKyAgICAgICAgICAgICAgICAgICAgUVNjb3BlZFBvaW50ZXI8UUFjY2Vz
c2libGVJbnRlcmZhY2U+IHdlYlZpZXcoUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVy
ZmFjZShwYWdlQ2xpZW50LT5vd25lcldpZGdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIFFT
Y29wZWRQb2ludGVyPFFBY2Nlc3NpYmxlSW50ZXJmYWNlPiB3ZWJQYWdlKHdlYlZpZXctPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UqIHdlYkZyYW1l
ID0gd2ViUGFnZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWJGcmFt
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBuZXcgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIobV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKTsKK30KKworLy8gRlhJTUU6IENy
ZWF0ZSBhIGhlbHBlciB1c2VkIGJ5IGd0ayBhbmQgaGVyZQorUVN0cmluZyBBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcjo6dGV4dChRQWNjZXNzaWJsZTo6VGV4dCB0KSBjb25zdAoreworICAgIHN3
aXRjaCAodCkgeworICAgIGNhc2UgUUFjY2Vzc2libGU6Ok5hbWU6IHsKKyAgICAgICAgaWYgKCFt
X29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1
cm4gbV9vYmplY3QtPnN0cmluZ1ZhbHVlKCk7CisKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0Nv
bnRyb2woKSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFiZWwgPSBtX29i
amVjdC0+Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKTsKKyAgICAgICAgICAg
IGlmIChsYWJlbCkgeworICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiB3cmFwcGVyID0gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKGxhYmVsKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gd3JhcHBlci0+dGV4dCh0KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVHJ5IHRleHQgdW5kZXIgdGhlIG5vZGUuCisgICAgICAgICAgICBTdHJpbmcg
dGV4dFVuZGVyID0gbV9vYmplY3QtPnRleHRVbmRlckVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlm
ICh0ZXh0VW5kZXIubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRVbmRlcjsK
KyAgICAgICAgfQorCisvLyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9vYmpl
Y3QtPmlzSW5wdXRJbWFnZSgpKSB7CisvLyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX29iamVj
dC0+bm9kZSgpOworLy8gICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0hUTUxFbGVtZW50
KCkpIHsKKy8vICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIHJhdGhlciB0aGFu
IGFsdFRleHQgU3RyaW5nIHNvIGFzIG5vdCB0byBmYWxsIGJhY2sgb24gdGl0bGUuCisvLyAgICAg
ICAgICAgICAgICBTdHJpbmcgYWx0ID0gdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6YWx0QXR0cik7CisvLyAgICAgICAgICAgICAgICBpZiAoIWFsdC5pc0VtcHR5
KCkpCisvLyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsdDsKKy8vICAgICAgICAgICAgfQor
Ly8gICAgICAgIH0KKworICAgICAgICAvLyBGYWxsYmFjayBmb3IgdGhlIHdlYkFyZWEgb2JqZWN0
OiBqdXN0IHJldHVybiB0aGUgZG9jdW1lbnQncyB0aXRsZS4KKyAgICAgICAgaWYgKG1fb2JqZWN0
LT5pc1dlYkFyZWEoKSkgeworICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmpl
Y3QtPmRvY3VtZW50KCk7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT50aXRsZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTm90
aGluZyB3b3JrZWQgc28gZmFyLCB0cnkgd2l0aCB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCdzCisg
ICAgICAgIC8vIHRpdGxlKCkgYmVmb3JlIGdvaW5nIGFoZWFkIHdpdGggc3RyaW5nVmFsdWUoKS4K
KyAgICAgICAgU3RyaW5nIGF4VGl0bGUgPSBtX29iamVjdC0+dGl0bGUoKTsKKyAgICAgICAgaWYg
KCFheFRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBheFRpdGxlOworCisgICAg
ICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nVmFsdWUoKTsKKyAgICB9CisgICAgY2FzZSBRQWNj
ZXNzaWJsZTo6RGVzY3JpcHRpb246CisgICAgICAgIHJldHVybiBRU3RyaW5nKG1fb2JqZWN0LT5h
Y2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK1FBY2Nlc3NpYmxlOjpTdGF0ZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6c3RhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTdGF0ZSgpOworfQorCitRUmVjdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVjdCgpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKKyAgICBMYXlvdXRS
ZWN0IHJlY3QgPSBtX29iamVjdC0+ZWxlbWVudFJlY3QoKTsKKyAgICByZXR1cm4gUVJlY3QoZnJh
bWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKHJlY3QpKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcjo6c2V0VGV4dChRQWNjZXNzaWJsZTo6VGV4dCwgY29uc3QgUVN0cmluZyYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODNhNWU5MjAwYjM4MWZlODNkNWMzNDZlMGI3NWE3MWU0
MjFhNDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJfaAorI2RlZmlu
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCisKKyNpbmNsdWRlIDxxYWNjZXNzaWJsZS5o
PgorCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1Cisj
aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKKworY2xhc3MgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgOiBwdWJsaWMgUUFjY2Vzc2libGVJbnRlcmZhY2UgeworCitwdWJs
aWM6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdCopOworICAgIH5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcigpOworCisgICAgdmly
dHVhbCBRQWNjZXNzaWJsZUludGVyZmFjZSogcGFyZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBp
bnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAgIHZpcnR1YWwgUUFjY2Vzc2libGVJbnRlcmZhY2Uq
IGNoaWxkKGludCBpbmRleCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGludCBpbmRleE9mQ2hpbGQo
Y29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFFBY2Nlc3Np
YmxlSW50ZXJmYWNlKiBjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwg
aW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcsIGludCBpbmRleCwgUUFjY2Vz
c2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0OworICAgIHZpcnR1YWwgUU9iamVjdCogb2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBRUmVjdCByZWN0KCkgY29u
c3Q7CisKKyAgICBRQWNjZXNzaWJsZTo6Um9sZSByb2xlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VGV4dChRQWNjZXNzaWJsZTo6VGV4dCwgY29uc3QgUVN0cmluZyYpOworCisgICAg
dmlydHVhbCBRQWNjZXNzaWJsZTo6U3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
UVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX29iamVjdDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFF0IDUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQucHJpIGIvU291cmNlL1dlYktpdC9XZWJLaXQucHJpCmluZGV4IDA1ZWIw
OWE4NzhmNTNjMWMzOTE1NjMwNGFjM2Q5MDdkNjBjZDNlNWQuLjI1ZjEzYzQwY2M4NDdmNWFiMGQz
YTE0ZWJkZTY0OTRjZTRkMDdkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnBy
aQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkKQEAgLTMsNiArMyw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgICQkUFdEL3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCiAgICAgJCRQV0Qv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3LmNwcCBcCisg
ICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAgXAogICAgICQkUFdEL3F0L0Fw
aS9xd2ViZWxlbWVudC5jcHAgXAogICAgICQkUFdEL3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAgXAog
ICAgICQkUFdEL3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKQEAgLTIzLDYgKzI0LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIFwKICAg
ICAkJFBXRC9xdC9BcGkvcXdlYnBhZ2UuaCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3Lmgg
XAorICAgICQkUFdEL3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oIFwKICAgICAkJFBXRC9x
dC9BcGkvcXdlYnNldHRpbmdzLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2ViaGlzdG9yeWludGVy
ZmFjZS5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmRhdGFiYXNlLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuaAppbmRleCAzNWZjZTRiZWJmYzA5MmQ1MzkxNjVkZWJhZmIzOTViYzUxMTQ5ODZm
Li5iMDcyZmFkYmE3MmUyODgxNTMxNzhlMzc3NGI3ZmZkNGE5NmM1Mzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2ViZnJhbWUuaApAQCAtMjM1LDYgKzIzNSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTm9kZUNsaWVudFF0OworICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWVBY2Nlc3NpYmxlOwog
ICAgIFFXZWJGcmFtZVByaXZhdGUgKmQ7CiAgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV9v
cmllbnRhdGlvbkNoYW5nZWQoKSkKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCBmZDJm
ZDRiM2JlZGJiNzYxM2IzNTBhOTczMGRhZmY1MzJjNDEyOWU5Li5hNTkwZTViN2JmMWYzOTRjM2Rm
NGQ1YzI2MmZlMTk5ZDFkNDJhNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKQEAgLTQ0OCw2
ICs0NDgsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI7CiAg
ICAgZnJpZW5kIGNsYXNzIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OworCisgICAgZnJpZW5kIGNs
YXNzIFFXZWJQYWdlQWNjZXNzaWJsZTsKIH07CiAKIFFfREVDTEFSRV9PUEVSQVRPUlNfRk9SX0ZM
QUdTKFFXZWJQYWdlOjpGaW5kRmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKaW5kZXgg
NGEyZDE4NmE5YmZkZGY5NjhlN2QwNWIxZmI2OTg3YTRmZWM3YWU0MS4uYzNlOTMyZTE0MDVkMGMx
MTNiMTZmN2I5OWYzOTU4MWM1MTI5OThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcApA
QCAtMjIsMTEgKzIyLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicXdlYnZp
ZXcuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJx
d2ViZnJhbWUuaCIKICNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisjaW5jbHVkZSAicXdlYnZpZXdh
Y2Nlc3NpYmxlX3AuaCIKICNpbmNsdWRlICJxYml0bWFwLmgiCiAjaW5jbHVkZSAicWV2ZW50Lmgi
CiAjaW5jbHVkZSAicXBhaW50ZXIuaCIKQEAgLTE2Nyw2ICsxNjksMTEgQEAgUVdlYlZpZXc6OlFX
ZWJWaWV3KFFXaWRnZXQgKnBhcmVudCkKIAogICAgIHNldE1vdXNlVHJhY2tpbmcodHJ1ZSk7CiAg
ICAgc2V0Rm9jdXNQb2xpY3koUXQ6OldoZWVsRm9jdXMpOworCisvLyBUaGUgUUFjY2Vzc2libGUg
aW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDUsIDAsIDApCisgICAgUUFjY2Vzc2libGU6Omluc3RhbGxGYWN0b3J5KGFjY2Vz
c2libGVJbnRlcmZhY2VGYWN0b3J5KTsKKyNlbmRpZgogfQogCiAvKiEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZTBlMmM4YTRiNzdk
ZmU0Y2IzYTk2OWE2Zjc2MTBhNWFhMzk1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGUuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYnZpZXdh
Y2Nlc3NpYmxlX3AuaCIKKworLy8gVGhlIFFBY2Nlc3NpYmxlIGludGVyZmFjZXMgY2hhbmdlZCBB
UEkgaW4gUXQgNQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKQor
CisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyLmgiCisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBhY2Nlc3NpYmxlSW50ZXJmYWNl
RmFjdG9yeShjb25zdCBRU3RyaW5nJiBrZXksIFFPYmplY3QqIG9iamVjdCkKK3sKKyAgICBRX1VO
VVNFRChrZXkpCisKKyAgICBpZiAoUVdlYlBhZ2UgKnBhZ2UgPSBxb2JqZWN0X2Nhc3Q8UVdlYlBh
Z2UqPihvYmplY3QpKQorICAgICAgICByZXR1cm4gbmV3IFFXZWJQYWdlQWNjZXNzaWJsZShwYWdl
KTsKKworICAgIGlmIChRV2ViVmlldyAqdmlldyA9IHFvYmplY3RfY2FzdDxRV2ViVmlldyo+KG9i
amVjdCkpCisgICAgICAgIHJldHVybiBuZXcgUVdlYlZpZXdBY2Nlc3NpYmxlKHZpZXcpOworCisg
ICAgaWYgKFFXZWJGcmFtZSAqZnJhbWUgPSBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4ob2JqZWN0
KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViRnJhbWVBY2Nlc3NpYmxlKGZyYW1lKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworCisKK1FXZWJGcmFtZUFjY2Vzc2libGU6OlFXZWJGcmFtZUFjY2Vzc2li
bGUoUVdlYkZyYW1lKiBmcmFtZSkKKyAgICA6IFFBY2Nlc3NpYmxlT2JqZWN0KGZyYW1lKQorewor
ICAgIGlmICghV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkK
KyAgICAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwor
fQorCitRV2ViRnJhbWUqIFFXZWJGcmFtZUFjY2Vzc2libGU6OmZyYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJGcmFtZSo+KG9iamVjdCgpKTsKK30KKworUUFjY2Vz
c2libGVJbnRlcmZhY2UqIFFXZWJGcmFtZUFjY2Vzc2libGU6OnBhcmVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uob2JqZWN0KCkt
PnBhcmVudCgpKTsKK30KKworUVN0cmluZyBRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KFFBY2Nl
c3NpYmxlOjpUZXh0KSBjb25zdAoreworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK1FBY2Nl
c3NpYmxlSW50ZXJmYWNlKiBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZChpbnQgaW5kZXgpIGNv
bnN0Cit7CisgICAgaWYgKGluZGV4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3QqIGEgPSBmcmFtZSgpLT5kLT5mcmFtZS0+ZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgaWYgKGEpCisgICAgICAgIHJldHVy
biBuZXcgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoYSk7CisgICAgcmV0dXJu
IDA7Cit9CisKK1FBY2Nlc3NpYmxlOjpTdGF0ZSBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpzdGF0ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTdGF0ZSgpOworfQorCitRQWNjZXNz
aWJsZTo6Um9sZSBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpyb2xlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gUUFjY2Vzc2libGU6OkNsaWVudDsKK30KKworaW50IFFXZWJGcmFtZUFjY2Vzc2libGU6Om5h
dmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcsIGludCwgUUFjY2Vzc2libGVJbnRlcmZh
Y2UqKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgKnRhcmdldCA9IDA7CisgICAgcmV0dXJuIC0xOwor
fQorCitpbnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6Y2hpbGRDb3VudCgpIGNvbnN0Cit7CisgICAg
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogYSA9IGZyYW1lKCktPmQtPmZyYW1lLT5kb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKKyAgICByZXR1cm4gYSA/IDEg
OiAwOworfQorCitpbnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxkKGNvbnN0IFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworCisKK1FX
ZWJQYWdlQWNjZXNzaWJsZTo6UVdlYlBhZ2VBY2Nlc3NpYmxlKFFXZWJQYWdlKiBwYWdlKQorICAg
IDogUUFjY2Vzc2libGVPYmplY3QocGFnZSkKK3sKK30KKworUVdlYlBhZ2UqIFFXZWJQYWdlQWNj
ZXNzaWJsZTo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2ViUGFn
ZSo+KG9iamVjdCgpKTsKK30KKworUVN0cmluZyBRV2ViUGFnZUFjY2Vzc2libGU6OnRleHQoUUFj
Y2Vzc2libGU6OlRleHQgdCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitR
QWNjZXNzaWJsZUludGVyZmFjZSogUVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYXJlbnQoKSBjb25zdAor
eworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKG9iamVj
dCgpLT5wYXJlbnQoKSk7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBRV2ViUGFnZUFjY2Vz
c2libGU6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIWluZGV4ICYmIHBhZ2Uo
KS0+bWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiBuZXcgUVdlYkZyYW1lQWNjZXNzaWJsZShw
YWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IFFXZWJQYWdlQWNj
ZXNzaWJsZTo6Y2hpbGRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKS0+bWFpbkZy
YW1lKCkgPyAxIDogMDsKK30KKworaW50IFFXZWJQYWdlQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxk
KGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30K
KworaW50IFFXZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9u
RmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICAq
dGFyZ2V0ID0gMDsKKyAgICByZXR1cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFXZWJQ
YWdlQWNjZXNzaWJsZTo6cm9sZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpD
bGllbnQ7Cit9CisKK1FBY2Nlc3NpYmxlOjpTdGF0ZSBRV2ViUGFnZUFjY2Vzc2libGU6OnN0YXRl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7Cit9CisKKworCitR
V2ViVmlld0FjY2Vzc2libGU6OlFXZWJWaWV3QWNjZXNzaWJsZShRV2ViVmlldyogdmlldykKKyAg
ICA6IFFBY2Nlc3NpYmxlV2lkZ2V0KHZpZXcsIFFBY2Nlc3NpYmxlOjpEb2N1bWVudCkKK3sKK30K
KworUVdlYlZpZXcqIFFXZWJWaWV3QWNjZXNzaWJsZTo6dmlldygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHFvYmplY3RfY2FzdDxRV2ViVmlldyo+KG9iamVjdCgpKTsKK30KKworaW50IFFXZWJWaWV3
QWNjZXNzaWJsZTo6Y2hpbGRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHZpZXcoKS0+cGFn
ZSgpID8gMSA6IDA7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBRV2ViVmlld0FjY2Vzc2li
bGU6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIWluZGV4ICYmIHZpZXcoKS0+
cGFnZSgpKQorICAgICAgICByZXR1cm4gbmV3IFFXZWJQYWdlQWNjZXNzaWJsZSh2aWV3KCktPnBh
Z2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBRdCA1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTU2ZGQwNTg5Y2Fm
Nzk4ZGQyYjE5YWI0NzgwMDM5OTljMjA2ZGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlX3AuaApAQCAtMCwwICsxLDkyIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaWZuZGVmIHF3ZWJ2aWV3YWNjZXNzaWJsZV9wX2gKKyNkZWZpbmUg
cXdlYnZpZXdhY2Nlc3NpYmxlX3BfaAorCisjaW5jbHVkZSA8cWdsb2JhbC5oPgorLy8gVGhlIFFB
Y2Nlc3NpYmxlIGludGVyZmFjZXMgY2hhbmdlZCBBUEkgaW4gUXQgNQorI2lmIFFUX1ZFUlNJT04g
Pj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKQorCisjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIK
KyNpbmNsdWRlICJxYWNjZXNzaWJsZW9iamVjdC5oIgorI2luY2x1ZGUgInFhY2Nlc3NpYmxld2lk
Z2V0LmgiCisKKyNpbmNsdWRlICJxd2ViZnJhbWUuaCIKKyNpbmNsdWRlICJxd2ViZnJhbWVfcC5o
IgorI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCisKKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIGFjY2Vz
c2libGVJbnRlcmZhY2VGYWN0b3J5KGNvbnN0IFFTdHJpbmcmIGtleSwgUU9iamVjdCopOworCisv
KgorICogQ2xhc3NlcyByZXByZXNlbnRpbmcgYWNjZXNzaWJsZSBvYmplY3RzIGZvciBWaWV3LCBG
cmFtZSBhbmQgUGFnZQorICoKKyAqIEVhY2ggb2YgdGhlc2UganVzdCByZXR1cm5zIG9uZSBjaGls
ZCB3aGljaCBsZXRzIHRoZSBhY2Nlc3NpYmlsaXR5CisgKiBmcmFtd29yayBuYXZpZ2F0ZSB0b3dh
cmRzIHRoZSBhY3R1YWwgY29udGVudHMgaW4gdGhlIGZyYW1lLgorICovCisKK2NsYXNzIFFXZWJG
cmFtZUFjY2Vzc2libGUgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QgeworcHVibGljOgorICAg
IFFXZWJGcmFtZUFjY2Vzc2libGUoUVdlYkZyYW1lKik7CisKKyAgICBRV2ViRnJhbWUqIGZyYW1l
KCkgY29uc3Q7CisKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogcGFyZW50KCkgY29uc3Q7Cisg
ICAgaW50IGNoaWxkQ291bnQoKSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hp
bGQoaW50IGluZGV4KSBjb25zdDsKKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3Np
YmxlSW50ZXJmYWNlKikgY29uc3Q7CisgICAgaW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxh
dGlvbkZsYWcsIGludCwgUUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0OworCisg
ICAgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25zdDsKKyAgICBRQWNjZXNzaWJs
ZTo6Um9sZSByb2xlKCkgY29uc3Q7CisgICAgUUFjY2Vzc2libGU6OlN0YXRlIHN0YXRlKCkgY29u
c3Q7Cit9OworCisKK2NsYXNzIFFXZWJQYWdlQWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJs
ZU9iamVjdCB7CitwdWJsaWM6CisgICAgUVdlYlBhZ2VBY2Nlc3NpYmxlKFFXZWJQYWdlKik7CisK
KyAgICBRV2ViUGFnZSogcGFnZSgpIGNvbnN0OworCisgICAgUUFjY2Vzc2libGVJbnRlcmZhY2Uq
IHBhcmVudCgpIGNvbnN0OworICAgIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgUUFjY2Vz
c2libGVJbnRlcmZhY2UqIGNoaWxkKGludCBpbmRleCkgY29uc3Q7CisgICAgaW50IGluZGV4T2ZD
aGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSopIGNvbnN0OworICAgIGludCBuYXZpZ2F0
ZShRQWNjZXNzaWJsZTo6UmVsYXRpb25GbGFnLCBpbnQsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiog
dGFyZ2V0KSBjb25zdDsKKworICAgIFFTdHJpbmcgdGV4dChRQWNjZXNzaWJsZTo6VGV4dCkgY29u
c3Q7CisgICAgUUFjY2Vzc2libGU6OlJvbGUgcm9sZSgpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxl
OjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworfTsKKworCitjbGFzcyBRV2ViVmlld0FjY2Vzc2libGUg
OiBwdWJsaWMgUUFjY2Vzc2libGVXaWRnZXQgeworcHVibGljOgorICAgIFFXZWJWaWV3QWNjZXNz
aWJsZShRV2ViVmlldyopOworCisgICAgUVdlYlZpZXcqIHZpZXcoKSBjb25zdDsKKworICAgIGlu
dCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UqIGNoaWxkKGlu
dCBpbmRleCkgY29uc3Q7Cit9OworCisjZW5kaWYgLy8gUXQgNQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYXBpLnByaSBiL1NvdXJjZS9hcGkucHJpCmluZGV4IDliN2IyN2JmMmQ5YzQzNTc3
Y2IxYmI2MTdjYjE1MmQ2NGJkNDBmMWIuLmMyMDFlNzIxNTQwZmRkZjAyM2U1ODYzNTAwM2VjMjJj
ZDI2NjU4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hcGkucHJpCisrKyBiL1NvdXJjZS9hcGkucHJp
CkBAIC0xNjksNiArMTY5LDkgQEAgY29udGFpbnMoQ09ORklHLCB0ZXhtYXApIHsKICAgICBERUZJ
TkVTICs9IFdURl9VU0VfVEVYVFVSRV9NQVBQRVI9MQogfQogCitjb250YWlucyhRVF9DT05GSUcs
IGFjY2Vzc2liaWxpdHkpIHsKKyAgICBoYXZlUXQoNSk6IERFRklORVMgKz0gSEFWRV9BQ0NFU1NJ
QklMSVRZPTEKK30KIAogIyAtLS0tLS0tLS0tLS0tIEluc3RhbGwgcnVsZXMgLS0tLS0tLS0tLS0t
LQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYjQ2YjM4ZmUzMjlh
MDc2N2RmMDU4ODFlYTE4NTM2NWIxMzBjYmY3YS4uOTJhMjMzMmVhNzJhY2QxYTRiMmNjZTMxZmFl
YjhkZjBkZTMwNjNlMCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmds
YWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24g
b2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhY2Nlc3NpYmlsaXR5IGRlZmluZSB3aGVuIFF0IGlzIGJ1aWx0
IHdpdGggYWNjZXNzaWJpbGl0eSBzdXBwb3J0LgorCisgICAgICAgICogU291cmNlL2FwaS5wcmk6
CisKIDIwMTItMDEtMzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgd2Via2l0LXBlcmYuYXBwc3BvdC5jb20gc2hvdWxkIGFjY2VwdCB0ZXN0IHJlc3VsdHMgd2l0
aG91dCBtZWRpYW5zCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125795</attachid>
            <date>2012-02-07 02:32:55 -0800</date>
            <delta_ts>2012-02-07 06:40:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20120207113249.patch</filename>
            <type>text/plain</type>
            <size>37178</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uYjUyYWFlZTE5NzBiZTAzZGRlM2Y4ODY3MTMzNDBh
Y2VmMjY5OGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTA2ICBGcmVk
ZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFF0IHdyYXBw
ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpy
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5k
ZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpz
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6Om9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6c2V0VGV4dCk6CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgR2NjIGJ1aWxkIGZpeCBhZnRlciByMTA2NDgyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
ZmM5YWRmN2EwYmYzODQyODIyOGU3YzYzNmFmNzcyYmM1NzExNDM2Li5mYWY0MWRhN2IzNzNjNjZm
MzdkZWEwNmJjOTk3MGE2YjgyMWEwYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTAyLTA2ICBGcmVkZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0LnByaTogQWRkZWQgbmV3IGZpbGVzIGZvciBhY2Nlc3NpYmlsaXR5LgorCiAyMDEyLTAx
LTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29u
dGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1NTQzZTYwMWJlYjFjNjI1NzhkODBmNzcyMmJmZDk1
MzU0MmI4MDUzLi40MWMzMWI4NDE2YzY2OGU5OWJiMTc3MTMwYTBjZjk3N2JhYjZkNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBRV2ViVmlldyB0byB0aGUgYWNj
ZXNzaWJpbGl0eSBmcmFtZXdvcmsgYW5kIG1ha2UKKyAgICAgICAgaXQgcG9zc2libGUgdG8gbmF2
aWdhdGUgaW50byB0aGUgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCBoaWVyYXJjaHkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3YWNjZXNz
aWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZy
YW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpmcmFtZSk6Cisg
ICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZUFj
Y2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZCk6
CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjpuYXZpZ2F0ZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpyb2xlKToK
KyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OlFXZWJQYWdlQWNjZXNz
aWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhZ2UpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFy
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJs
ZTo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUp
OgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpyb2xlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZTo6c3RhdGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAg
ICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFX
ZWJWaWV3QWNjZXNzaWJsZTo6dmlldyk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNo
aWxkKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisKIDIwMTIt
MDItMDEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVByaW9yaXR5KCkgZmFpbHMgZm9y
IENTUyBzaG9ydGhhbmQgcHJvcGVydGllcyB3aXRoICdpbXBvcnRhbnQnIHByaW9yaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmYzZmNmU2NGYzOGYzYzlhZDliMThjMWJjNGI2NGJjMDdjN2FkZTY1Li42Y2Uz
MzYwZWUyNTlhODA2YzI1OTAzMWRjY2E2Y2FkZTFmMzA4NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI3
NjcsNiArMjc2Nyw3IEBAIEhFQURFUlMgKz0gXAogCiBTT1VSQ0VTICs9IFwKICAgICBhY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgXAorICAgIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdC5jcHAgXAogICAgIHBhZ2UvcXQvRHJhZ0Nv
bnRyb2xsZXJRdC5jcHAgXAogICAgIHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9UcmFuc2Zvcm1hdGlvbk1hdHJpeFF0LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpCmluZGV4IGFkZGQ1ODc5Mzk3OWYyN2Q0M2U2ODkwMDQ1ZWZmNDJmNmJmMWM5YjguLjYxNzIz
MWIwZGUxMjFmN2I5NzZlZjhhMjY1ZjJhYTI2NTRmZWIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0x
OSw2ICsxOSw3IEBAIFdFQkNPUkVfR0VORVJBVEVEX1NPVVJDRVNfRElSID0gJCR7Uk9PVF9CVUlM
RF9ESVJ9L1NvdXJjZS9XZWJDb3JlLyQke0dFTkVSQVRFRF9TCiBJTkNMVURFUEFUSCArPSBcCiAg
ICAgJCRTT1VSQ0VfRElSIFwKICAgICAkJFNPVVJDRV9ESVIvYWNjZXNzaWJpbGl0eSBcCisgICAg
JCRTT1VSQ0VfRElSL2FjY2Vzc2liaWxpdHkvcXQgXAogICAgICQkU09VUkNFX0RJUi9iaW5kaW5n
cyBcCiAgICAgJCRTT1VSQ0VfRElSL2JpbmRpbmdzL2dlbmVyaWMgXAogICAgICQkU09VUkNFX0RJ
Ui9icmlkZ2UgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggMDJkNWJmYjIzOWVlNmJkYTRlODgwYjAzZTkyM2ZjMzllZTY1YTNhNi4uYzE4
ZDM3ZTYwOWI2MDYzOTdlYjYyNzJmMmQ2OWMwM2VmMjcwYzhlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdEZvckZyYW1lKEZy
YW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKGZy
YW1lLT52aWV3KCkpOwogfSAgICAKLSAgICAKKwogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmpl
Y3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKIHsKICAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggYzQxN2NjOTU4NTcxMjE2
ZDBjYTA0ZDNiYjQ0YjdmYzJkNjFmYTRkOS4uM2QyYTRhNGM0ZjkwNDhmYWFkMWY0MjhhOTVhODUx
OGMyMjYzMDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKQEAgLTMwNyw3ICszMDcsNyBAQCBzdHJ1Y3QgUGxhaW5UZXh0UmFu
Z2UgewogY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7
Ci0gICAgCisKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwpAQCAtNjU3LDkgKzY1NywxMCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVy
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Kik7CisjZWxpZiBQTEFURk9STShRVCkKICNlbHNlCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIAorICAg
IHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikKICAg
ICB7CiAgICAgICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3Bw
CmluZGV4IDcyMzI2NDIzNzg5NjkyODc3ODI5OGEwZDkzMDI5NDY1ODQ2Mzc5YTguLjlhNmUwZDgx
N2Q1YjcyNjI1N2NlZTZjZDc3ZGJkMWY4ZWJiNDc4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKQEAg
LTM0LDkgKzM0LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPCiAgICAgaWYgKGlzTWVudUxp
c3RQb3B1cCgpIHx8IGlzTWVudUxpc3RPcHRpb24oKSkKICAgICAgICAgcmV0dXJuIElnbm9yZU9i
amVjdDsKIAotICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7CisgICAgcmV0dXJuIEluY2x1ZGVP
YmplY3Q7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShB
Q0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjc2ODU0ZWI3ZDkyNzA4YzIxMzM0MmIxYzZlYzZhN2VhOWE0ODU0MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJRdC5jcHAKQEAgLTAsMCArMSw0MTcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHly
aWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICAgIENvcHlyaWdodCAoQykgMjAwOSBKYW4gQWxv
bnpvCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIElnYWxpYSBTLkwu
CisKKyAgICBQb3J0aW9ucyBmcm9tIE1vemlsbGEgYTExeSwgY29weXJpZ2h0IGFzIGZvbGxvd3M6
CisKKyAgICBUaGUgT3JpZ2luYWwgQ29kZSBpcyBtb3ppbGxhLm9yZyBjb2RlLgorCisgICAgVGhl
IEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCisgICAgU3VuIE1pY3Jv
c3lzdGVtcywgSW5jLgorICAgIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxv
cGVyIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDIKKyAgICB0aGUgSW5pdGlhbCBEZXZlbG9wZXIuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaCIKKworLy8gVGhlIFFBY2Nlc3NpYmxlIGludGVy
ZmFjZXMgY2hhbmdlZCBBUEkgaW4gUXQgNQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9D
SEVDSyg1LCAwLCAwKQorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorCisjaW5jbHVkZSA8cWRlYnVnLmg+
CisjaW5jbHVkZSA8cXdpZGdldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1FBY2Nlc3Np
YmxlOjpSb2xlIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxlUm9sZShXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5Um9sZSByb2xlKQoreworICAgIHN3aXRjaCAocm9sZSkgeworICAgIC8vICAgICBjYXNlIEFu
bm90YXRpb25Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Y2FzZSBBcHBsaWNhdGlvblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6QXBwbGlj
YXRpb247CisgICAgLy8gICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6CisgICAgLy8gICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvbkFs
ZXJ0RGlhbG9nUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IC8vICAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKKyAg
ICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxp
Y2F0aW9uTWFycXVlZVJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsK
KyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgLy8gICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNl
IEJyb3dzZXJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAg
Ly8gICAgIGNhc2UgQnVzeUluZGljYXRvclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICBjYXNlIEJ1dHRvblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6QnV0dG9uOworICAgIGNhc2UgQ2VsbFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6Q2VsbDsKKyAgICBjYXNlIENoZWNrQm94Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpDaGVja0JveDsKKyAgICAvLyAgICAgY2FzZSBDb2xvcldlbGxSb2xlOgorICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBDb2x1bW5Sb2xlOgorICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNvbHVtbjsKKyAgICBjYXNlIENvbHVtbkhlYWRlclJv
bGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q29sdW1uSGVhZGVyOworICAgIGNhc2Ug
Q29tYm9Cb3hSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNvbWJvQm94OworICAg
IC8vICAgICBjYXNlIERlZmluaXRpb25MaXN0VGVybVJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEZWZpbml0aW9uTGlzdERlZmluaXRp
b25Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAg
IGNhc2UgRGlyZWN0b3J5Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIC8vICAgICBjYXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6CisgICAgLy8gICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEaXZSb2xlOgorICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBEb2N1bWVudFJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6RG9jdW1lbnQ7CisgICAgLy8gICAgIGNhc2UgRG9j
dW1lbnRBcnRpY2xlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIC8vICAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIC8v
ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgRG9jdW1lbnRS
ZWdpb25Sb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8g
ICAgIGNhc2UgRHJhd2VyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIGNhc2UgRWRpdGFibGVUZXh0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
OjpFZGl0YWJsZVRleHQ7CisgICAgLy8gICAgIGNhc2UgRm9ybVJvbGU6CisgICAgLy8gICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBHcmlkUm9sZToKKyAgICAv
LyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgR3JvdXBSb2xlOgorICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okdyb3VwaW5nOworICAgIC8vICAgICBjYXNlIEdyb3dB
cmVhUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAg
ICBjYXNlIEhlYWRpbmdSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7
CisgICAgLy8gICAgIGNhc2UgSGVscFRhZ1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICBjYXNlIElnbm9yZWRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6Ok5vUm9sZTsKKyAgICBjYXNlIEltYWdlUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpHcmFwaGljOworICAgIC8vICAgICBjYXNlIEltYWdlTWFwUm9sZToKKyAgICAvLyAg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEluY3JlbWVudG9y
Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgTGFi
ZWxSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRpY1RleHQ7IC8vIHdoYXQg
aXMgdGhlIGRpZmYgdG8gc3RhdGljIHRleHQ/CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtBcHBs
aWNhdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAv
LyAgICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgor
ICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFu
ZG1hcmtDb250ZW50SW5mb1JvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OjsKKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgorICAgIC8vICAgICAgICAgcmV0
dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNl
IExhbmRtYXJrU2VhcmNoUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIGNhc2UgTGlua1JvbGU6CisgICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgorICAgIGNh
c2UgV2ViQ29yZUxpbmtSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okxpbms7Cisg
ICAgY2FzZSBMaXN0Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpMaXN0OworICAg
IC8vICAgICBjYXNlIExpc3RCb3hSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgLy8gICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjpMaXN0SXRlbTsKKyAgICAvLyAgICAgY2FzZSBMaXN0TWFya2Vy
Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBj
YXNlIE1hdHRlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IGNhc2UgTWVudVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07Cisg
ICAgY2FzZSBNZW51QmFyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51QmFy
OworICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6CisgICAgY2FzZSBNZW51SXRlbVJvbGU6CisgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TWVudUl0ZW07CisgICAgLy8gICAgIGNhc2UgTWVudUxp
c3RQb3B1cFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAv
LyAgICAgY2FzZSBNZW51TGlzdE9wdGlvblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBPdXRsaW5lUm9sZToKKyAgICAvLyAgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIFBhcmFncmFwaFJvbGU6Cisg
ICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFBvcFVwQnV0dG9u
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247IC8vID8KKyAgICAvLyAg
ICAgY2FzZSBQcmVzZW50YXRpb25hbFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpSYWRpb0J1dHRvbjsKKyAgICBjYXNlIFJhZGlv
R3JvdXBSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okdyb3VwaW5nOworICAgIGNh
c2UgUm93SGVhZGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpSb3dIZWFkZXI7
CisgICAgY2FzZSBSb3dSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJvdzsKKyAg
ICAvLyAgICAgY2FzZSBSdWxlclJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OjsKKyAgICAvLyAgICAgY2FzZSBSdWxlck1hcmtlclJvbGU6CisgICAgLy8gICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFNjcm9sbEFyZWFSb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OlBhbmU7IC8vID8KKyAgICBjYXNlIFNjcm9sbEJhclJvbGU6Cisg
ICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U2Nyb2xsQmFyOworICAgIC8vICAgICBjYXNlIFNo
ZWV0Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2Ug
U2xpZGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTbGlkZXI7CisgICAgLy8g
ICAgIGNhc2UgU2xpZGVyVGh1bWJSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjo7IC8vIHNob3VsZCBiZSBpZ25vcmVkCisgICAgY2FzZSBTcGluQnV0dG9uUm9sZToKKyAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTcGluQm94OworICAgIC8vICAgICBjYXNlIFNwaW5C
dXR0b25QYXJ0Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IGNhc2UgU3BsaXRHcm91cFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3BsaXR0
ZXI7IC8vID8KKyAgICBjYXNlIFNwbGl0dGVyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjpTcGxpdHRlcjsKKyAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgorICAgICAgICByZXR1cm4g
UUFjY2Vzc2libGU6OlN0YXRpY1RleHQ7CisgICAgLy8gICAgIGNhc2UgU3lzdGVtV2lkZVJvbGU6
CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFRhYkdyb3Vw
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYWdlVGFiTGlzdDsgLy8gPworICAg
IGNhc2UgVGFiTGlzdFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6UGFnZVRhYkxp
c3Q7CisgICAgLy8gICAgIGNhc2UgVGFiUGFuZWxSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBUYWJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OlBhZ2VUYWI7CisgICAgY2FzZSBUYWJsZVJvbGU6CisgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6VGFibGU7CisgICAgLy8gICAgIGNhc2UgVGFibGVIZWFkZXJDb250YWluZXJSb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBUZXh0QXJl
YVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6RWRpdGFibGVUZXh0OworICAgIGNh
c2UgVHJlZVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6VHJlZTsKKyAgICAvLyAg
ICAgY2FzZSBUcmVlR3JpZFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
OjsKKyAgICBjYXNlIFRyZWVJdGVtUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpU
cmVlSXRlbTsKKyAgICBjYXNlIFRleHRGaWVsZFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6RWRpdGFibGVUZXh0OworICAgIGNhc2UgVG9vbGJhclJvbGU6CisgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6VG9vbEJhcjsKKyAgICBjYXNlIFVua25vd25Sb2xlOgorICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6Ok5vUm9sZTsKKyAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlw
Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUb29sVGlwOworICAgIC8vICAgICBj
YXNlIFZhbHVlSW5kaWNhdG9yUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgIGNhc2UgV2ViQXJlYVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
UGFuZTsKKyAgICBjYXNlIFdpbmRvd1JvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
V2luZG93OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcURlYnVnKCkgPDwgIlVua25vd24gV2Vi
Q29yZSBhY2Nlc3NpYmlsaXR5IHJvbGU6ICIgPDwgcm9sZTsKKyAgICB9CisKKyAgICByZXR1cm4g
UUFjY2Vzc2libGU6Ok5vUm9sZTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKKyAg
ICA6IG1fb2JqZWN0KG9iamVjdCkKK3sKKyAgICBBU1NFUlQob2JqZWN0KTsKK30KKworQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6On5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcigpCit7Cisg
ICAgbV9vYmplY3QtPmRldGFjaCgpOworfQorCitRQWNjZXNzaWJsZTo6Um9sZSBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcjo6cm9sZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYktpdFJvbGVU
b1FBY2Nlc3NpYmxlUm9sZShtX29iamVjdC0+cm9sZVZhbHVlKCkpOworfQorCitRQWNjZXNzaWJs
ZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkKGludCBpbmRleCkg
Y29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1fb2JqZWN0LT5jaGlsZHJl
bigpLnNpemUoKSkgeworICAgICAgICBxRGVidWcoKSA8PCAiSU5WQUxJRCBDSElMRCIgPDwgbV9v
YmplY3QgPDwgaW5kZXg7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cihtX29iamVjdC0+Y2hpbGRyZW4oKS5hdChpbmRleCkuZ2V0KCkpOworICAgIHJldHVybiB3cmFw
cGVyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBtX29iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9CisKK2lu
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3Np
YmxlSW50ZXJmYWNlKiBjaGlsZElmYWNlKSBjb25zdAoreworICAgIGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBjaGlsZFdyYXBwZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcio+KGNoaWxkSWZhY2UpOworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudE9iamVjdCA9IGNoaWxkV3JhcHBlci0+bV9vYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOworICAgIGlmIChwYXJlbnRPYmplY3QpCisgICAgICAgIHJldHVybiBwYXJlbnRP
YmplY3QtPmNoaWxkcmVuKCkuZmluZChjaGlsZFdyYXBwZXItPm1fb2JqZWN0KTsKKyAgICByZXR1
cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcjo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVzZSBo
aXQtdGVzdGluZyBjb2RlIGZyb20gQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6Om5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcgcmVsYXRpb24sIGludCBpbmRl
eCwgUUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgUV9VTlVTRUQo
cmVsYXRpb24pCisgICAgUV9VTlVTRUQoaW5kZXgpCisgICAgKnRhcmdldCA9IDA7CisgICAgcmV0
dXJuIC0xOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXI6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgcm9v
dCBvYmplY3QuIElmIHNvLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgRnJhbWUgYXMgcGFyZW50Cisg
ICAgaWYgKCFtX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgJiYgbV9vYmplY3QtPmlz
U2Nyb2xsVmlldygpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQg
PSBtX29iamVjdC0+Zmlyc3RDaGlsZCgpOworICAgICAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJz
dENoaWxkLT5pc1dlYkFyZWEoKSkgeworICAgICAgICAgICAgLy8gV2Ugc2VlbSB0byBiZSB0aGUg
cm9vdCBhY2Nlc3NpYmxlLCBnZXQgdGhlIEZyYW1lCisgICAgICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cgPSBkb2N1bWVudC0+dmlldygpLT5ob3N0V2luZG93KCk7CisgICAgICAgICAgICBp
ZiAoaG9zdFdpbmRvdykgeworICAgICAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xp
ZW50ID0gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgICAgICAgICAg
aWYgKHBhZ2VDbGllbnQgJiYgcGFnZUNsaWVudC0+aXNRV2lkZ2V0Q2xpZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdyaXRpbmcgdGhlIHNhbWUgZm9yIFFHcmFwaGljc1Zp
ZXcgc2hvdWxkIGJlIHRyaXZpYWwuCisgICAgICAgICAgICAgICAgICAgIFFTY29wZWRQb2ludGVy
PFFBY2Nlc3NpYmxlSW50ZXJmYWNlPiB3ZWJWaWV3KFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2li
bGVJbnRlcmZhY2UocGFnZUNsaWVudC0+b3duZXJXaWRnZXQoKSkpOworICAgICAgICAgICAgICAg
ICAgICBRU2NvcGVkUG9pbnRlcjxRQWNjZXNzaWJsZUludGVyZmFjZT4gd2ViUGFnZSh3ZWJWaWV3
LT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiB3
ZWJGcmFtZSA9IHdlYlBhZ2UtPmNoaWxkKDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
d2ViRnJhbWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbmV3IEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Cit9CisKKy8vIEZY
SU1FOiBDcmVhdGUgYSBoZWxwZXIgdXNlZCBieSBndGsgYW5kIGhlcmUKK1FTdHJpbmcgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OnRleHQoUUFjY2Vzc2libGU6OlRleHQgdCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKHQpIHsKKyAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lOiB7CisgICAgICAg
IGlmICghbV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdWYWx1ZSgpOworCisgICAgICAgIGlmIChtX29iamVj
dC0+aXNDb250cm9sKCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVs
ID0gbV9vYmplY3QtPmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCk7CisgICAg
ICAgICAgICBpZiAobGFiZWwpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciogd3JhcHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihsYWJlbCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXItPnRleHQodCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRyeSB0ZXh0IHVuZGVyIHRoZSBub2RlLgorICAgICAgICAgICAg
U3RyaW5nIHRleHRVbmRlciA9IG1fb2JqZWN0LT50ZXh0VW5kZXJFbGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAodGV4dFVuZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0
VW5kZXI7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9vYmplY3QtPmlzSW1hZ2UoKSB8fCBt
X29iamVjdC0+aXNJbnB1dEltYWdlKCkpIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX29i
amVjdC0+bm9kZSgpOworICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4g
YWx0VGV4dCBTdHJpbmcgc28gYXMgbm90IHRvIGZhbGwgYmFjayBvbiB0aXRsZS4KKyAgICAgICAg
ICAgICAgICBTdHJpbmcgYWx0ID0gdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6YWx0QXR0cik7CisgICAgICAgICAgICAgICAgaWYgKCFhbHQuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWx0OworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgLy8gRmFsbGJhY2sgZm9yIHRoZSB3ZWJBcmVhIG9iamVjdDoganVzdCByZXR1
cm4gdGhlIGRvY3VtZW50J3MgdGl0bGUuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVh
KCkpIHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVu
dCgpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBk
b2N1bWVudC0+dGl0bGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdGhpbmcgd29ya2Vk
IHNvIGZhciwgdHJ5IHdpdGggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QncworICAgICAgICAvLyB0
aXRsZSgpIGJlZm9yZSBnb2luZyBhaGVhZCB3aXRoIHN0cmluZ1ZhbHVlKCkuCisgICAgICAgIFN0
cmluZyBheFRpdGxlID0gbV9vYmplY3QtPnRpdGxlKCk7CisgICAgICAgIGlmICghYXhUaXRsZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gYXhUaXRsZTsKKworICAgICAgICByZXR1cm4g
bV9vYmplY3QtPnN0cmluZ1ZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgUUFjY2Vzc2libGU6OkRl
c2NyaXB0aW9uOgorICAgICAgICByZXR1cm4gUVN0cmluZyhtX29iamVjdC0+YWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gUVN0cmluZygpOworfQorCitRQWNjZXNzaWJsZTo6U3RhdGUgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6OnN0YXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGUoKTsKK30KKworUVJlY3QgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6OnJlY3QoKSBjb25zdAoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0g
bV9vYmplY3QtPmVsZW1lbnRSZWN0KCk7CisgICAgcmV0dXJuIFFSZWN0KGZyYW1lVmlldy0+Y29u
dGVudHNUb1NjcmVlbihyZWN0KSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OnNldFRleHQoUUFjY2Vzc2libGU6OlRleHQsIGNvbnN0IFFTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJR
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxOThkMDE4YjIzM2UyMDJlZWNjNWJiY2IwZDViNDc4NWM1MjcxMjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaApAQCAtMCwwICsxLDY3IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXRfaAorI2RlZmluZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0X2gKKworI2luY2x1ZGUgPHFhY2Nlc3NpYmxlLmg+
CisKKy8vIFRoZSBRQWNjZXNzaWJsZSBpbnRlcmZhY2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OworCitjbGFzcyBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciA6IHB1YmxpYyBRQWNjZXNzaWJsZUludGVyZmFjZSB7CisKK3B1Ymxp
YzoKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Kik7CisgICAgfkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKCk7CisKKyAgICB2aXJ0
dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBwYXJlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGlu
dCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBRQWNjZXNzaWJsZUludGVyZmFjZSog
Y2hpbGQoaW50IGluZGV4KSBjb25zdDsKKworICAgIHZpcnR1YWwgaW50IGluZGV4T2ZDaGlsZChj
b25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSopIGNvbnN0OworICAgIHZpcnR1YWwgUUFjY2Vzc2li
bGVJbnRlcmZhY2UqIGNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0CisgICAgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBp
bnQgbmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZywgaW50IGluZGV4LCBRQWNjZXNz
aWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3Q7CisgICAgdmlydHVhbCBRT2JqZWN0KiBvYmpl
Y3QoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFsIFFSZWN0IHJlY3QoKSBjb25z
dDsKKworICAgIFFBY2Nlc3NpYmxlOjpSb2xlIHJvbGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRUZXh0KFFBY2Nlc3NpYmxlOjpUZXh0LCBjb25zdCBRU3RyaW5nJik7CisKKyAgICB2
aXJ0dWFsIFFBY2Nlc3NpYmxlOjpTdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBR
U3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRleHQpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG1fb2JqZWN0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUXQgNQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC5wcmkgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkKaW5kZXggMDVlYjA5
YTg3OGY1M2MxYzM5MTU2MzA0YWMzZDkwN2Q2MGNkM2U1ZC4uMjVmMTNjNDBjYzg0N2Y1YWIwZDNh
MTRlYmRlNjQ5NGNlNGQwN2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQucHJp
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnByaQpAQCAtMyw2ICszLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgJCRQV0QvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwIFwKICAgICAkJFBXRC9x
dC9BcGkvcXdlYnBhZ2UuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXcuY3BwIFwKKyAg
ICAkJFBXRC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBcCiAgICAgJCRQV0QvcXQvQXBp
L3F3ZWJlbGVtZW50LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBcCiAg
ICAgJCRQV0QvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgXApAQCAtMjMsNiArMjQsNyBAQCBIRUFE
RVJTICs9IFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmggXAogICAg
ICQkUFdEL3F0L0FwaS9xd2VicGFnZS5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXcuaCBc
CisgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmggXAogICAgICQkUFdEL3F0
L0FwaS9xd2Vic2V0dGluZ3MuaCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJm
YWNlLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2ViZGF0YWJhc2UuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5oCmluZGV4IDM1ZmNlNGJlYmZjMDkyZDUzOTE2NWRlYmFmYjM5NWJjNTExNDk4NmYu
LmIwNzJmYWRiYTcyZTI4ODE1MzE3OGUzNzc0YjdmZmQ0YTk2YzUzOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5oCkBAIC0yMzUsNiArMjM1LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJOb2RlQ2xpZW50UXQ7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZUFjY2Vzc2libGU7CiAg
ICAgUVdlYkZyYW1lUHJpdmF0ZSAqZDsKICAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX29y
aWVudGF0aW9uQ2hhbmdlZCgpKQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCmluZGV4IGZkMmZk
NGIzYmVkYmI3NjEzYjM1MGE5NzMwZGFmZjUzMmM0MTI5ZTkuLmE1OTBlNWI3YmYxZjM5NGMzZGY0
ZDVjMjYyZmUxOTlkMWQ0MmE1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAtNDQ4LDYg
KzQ0OCw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKICAg
ICBmcmllbmQgY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7CisKKyAgICBmcmllbmQgY2xh
c3MgUVdlYlBhZ2VBY2Nlc3NpYmxlOwogfTsKIAogUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxB
R1MoUVdlYlBhZ2U6OkZpbmRGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcAppbmRleCA0
YTJkMTg2YTliZmRkZjk2OGU3ZDA1YjFmYjY5ODdhNGZlYzdhZTQxLi5jM2U5MzJlMTQwNWQwYzEx
M2IxNmY3Yjk5ZjM5NTgxYzUxMjk5OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwCkBA
IC0yMiwxMSArMjIsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxd2Vidmll
dy5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgInF3
ZWJmcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJxd2Vidmlld2Fj
Y2Vzc2libGVfcC5oIgogI2luY2x1ZGUgInFiaXRtYXAuaCIKICNpbmNsdWRlICJxZXZlbnQuaCIK
ICNpbmNsdWRlICJxcGFpbnRlci5oIgpAQCAtMTY3LDYgKzE2OSwxMSBAQCBRV2ViVmlldzo6UVdl
YlZpZXcoUVdpZGdldCAqcGFyZW50KQogCiAgICAgc2V0TW91c2VUcmFja2luZyh0cnVlKTsKICAg
ICBzZXRGb2N1c1BvbGljeShRdDo6V2hlZWxGb2N1cyk7CisKKy8vIFRoZSBRQWNjZXNzaWJsZSBp
bnRlcmZhY2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJ
T05fQ0hFQ0soNSwgMCwgMCkKKyAgICBRQWNjZXNzaWJsZTo6aW5zdGFsbEZhY3RvcnkoYWNjZXNz
aWJsZUludGVyZmFjZUZhY3RvcnkpOworI2VuZGlmCiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0ZjY2YjExYzRkZTc5
ZTg0NDU1YThkMWE2YTg3YzRjMmUwMzBhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2Vidmlld2Fj
Y2Vzc2libGVfcC5oIgorCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQ
SSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisK
KyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJRdC5oIgorCitRQWNjZXNzaWJsZUludGVyZmFjZSogYWNjZXNzaWJsZUludGVyZmFj
ZUZhY3RvcnkoY29uc3QgUVN0cmluZyYga2V5LCBRT2JqZWN0KiBvYmplY3QpCit7CisgICAgUV9V
TlVTRUQoa2V5KQorCisgICAgaWYgKFFXZWJQYWdlICpwYWdlID0gcW9iamVjdF9jYXN0PFFXZWJQ
YWdlKj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViUGFnZUFjY2Vzc2libGUocGFn
ZSk7CisKKyAgICBpZiAoUVdlYlZpZXcgKnZpZXcgPSBxb2JqZWN0X2Nhc3Q8UVdlYlZpZXcqPihv
YmplY3QpKQorICAgICAgICByZXR1cm4gbmV3IFFXZWJWaWV3QWNjZXNzaWJsZSh2aWV3KTsKKwor
ICAgIGlmIChRV2ViRnJhbWUgKmZyYW1lID0gcW9iamVjdF9jYXN0PFFXZWJGcmFtZSo+KG9iamVj
dCkpCisgICAgICAgIHJldHVybiBuZXcgUVdlYkZyYW1lQWNjZXNzaWJsZShmcmFtZSk7CisgICAg
cmV0dXJuIDA7Cit9CisKKworCitRV2ViRnJhbWVBY2Nlc3NpYmxlOjpRV2ViRnJhbWVBY2Nlc3Np
YmxlKFFXZWJGcmFtZSogZnJhbWUpCisgICAgOiBRQWNjZXNzaWJsZU9iamVjdChmcmFtZSkKK3sK
KyAgICBpZiAoIVdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkp
CisgICAgICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsK
K30KKworUVdlYkZyYW1lKiBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpmcmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2ViRnJhbWUqPihvYmplY3QoKSk7Cit9CisKK1FBY2Nl
c3NpYmxlSW50ZXJmYWNlKiBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpwYXJlbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKG9iamVjdCgp
LT5wYXJlbnQoKSk7Cit9CisKK1FTdHJpbmcgUVdlYkZyYW1lQWNjZXNzaWJsZTo6dGV4dChRQWNj
ZXNzaWJsZTo6VGV4dCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitRQWNj
ZXNzaWJsZUludGVyZmFjZSogUVdlYkZyYW1lQWNjZXNzaWJsZTo6Y2hpbGQoaW50IGluZGV4KSBj
b25zdAoreworICAgIGlmIChpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhID0gZnJhbWUoKS0+ZC0+ZnJhbWUtPmRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIGlmIChhKQorICAgICAgICByZXR1
cm4gbmV3IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKGEpOworICAgIHJldHVy
biAwOworfQorCitRQWNjZXNzaWJsZTo6U3RhdGUgUVdlYkZyYW1lQWNjZXNzaWJsZTo6c3RhdGUo
KSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGUoKTsKK30KKworUUFjY2Vz
c2libGU6OlJvbGUgUVdlYkZyYW1lQWNjZXNzaWJsZTo6cm9sZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFFBY2Nlc3NpYmxlOjpDbGllbnQ7Cit9CisKK2ludCBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpu
YXZpZ2F0ZShRQWNjZXNzaWJsZTo6UmVsYXRpb25GbGFnLCBpbnQsIFFBY2Nlc3NpYmxlSW50ZXJm
YWNlKiogdGFyZ2V0KSBjb25zdAoreworICAgICp0YXJnZXQgPSAwOworICAgIHJldHVybiAtMTsK
K30KKworaW50IFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAg
IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIGEgPSBmcmFtZSgpLT5kLT5mcmFtZS0+ZG9j
dW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgcmV0dXJuIGEgPyAx
IDogMDsKK30KKworaW50IFFXZWJGcmFtZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZChjb25zdCBR
QWNjZXNzaWJsZUludGVyZmFjZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKworCitR
V2ViUGFnZUFjY2Vzc2libGU6OlFXZWJQYWdlQWNjZXNzaWJsZShRV2ViUGFnZSogcGFnZSkKKyAg
ICA6IFFBY2Nlc3NpYmxlT2JqZWN0KHBhZ2UpCit7Cit9CisKK1FXZWJQYWdlKiBRV2ViUGFnZUFj
Y2Vzc2libGU6OnBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYlBh
Z2UqPihvYmplY3QoKSk7Cit9CisKK1FTdHJpbmcgUVdlYlBhZ2VBY2Nlc3NpYmxlOjp0ZXh0KFFB
Y2Nlc3NpYmxlOjpUZXh0IHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKwor
UUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFyZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShvYmpl
Y3QoKS0+cGFyZW50KCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogUVdlYlBhZ2VBY2Nl
c3NpYmxlOjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKCFpbmRleCAmJiBwYWdl
KCktPm1haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gbmV3IFFXZWJGcmFtZUFjY2Vzc2libGUo
cGFnZSgpLT5tYWluRnJhbWUoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBRV2ViUGFnZUFj
Y2Vzc2libGU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBwYWdlKCktPm1haW5G
cmFtZSgpID8gMSA6IDA7Cit9CisKK2ludCBRV2ViUGFnZUFjY2Vzc2libGU6OmluZGV4T2ZDaGls
ZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9
CisKK2ludCBRV2ViUGFnZUFjY2Vzc2libGU6Om5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlv
bkZsYWcsIGludCwgUUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0Cit7CisgICAg
KnRhcmdldCA9IDA7CisgICAgcmV0dXJuIC0xOworfQorCitRQWNjZXNzaWJsZTo6Um9sZSBRV2Vi
UGFnZUFjY2Vzc2libGU6OnJvbGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
Q2xpZW50OworfQorCitRQWNjZXNzaWJsZTo6U3RhdGUgUVdlYlBhZ2VBY2Nlc3NpYmxlOjpzdGF0
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTdGF0ZSgpOworfQorCisKKwor
UVdlYlZpZXdBY2Nlc3NpYmxlOjpRV2ViVmlld0FjY2Vzc2libGUoUVdlYlZpZXcqIHZpZXcpCisg
ICAgOiBRQWNjZXNzaWJsZVdpZGdldCh2aWV3LCBRQWNjZXNzaWJsZTo6RG9jdW1lbnQpCit7Cit9
CisKK1FXZWJWaWV3KiBRV2ViVmlld0FjY2Vzc2libGU6OnZpZXcoKSBjb25zdAoreworICAgIHJl
dHVybiBxb2JqZWN0X2Nhc3Q8UVdlYlZpZXcqPihvYmplY3QoKSk7Cit9CisKK2ludCBRV2ViVmll
d0FjY2Vzc2libGU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiB2aWV3KCktPnBh
Z2UoKSA/IDEgOiAwOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogUVdlYlZpZXdBY2Nlc3Np
YmxlOjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKCFpbmRleCAmJiB2aWV3KCkt
PnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViUGFnZUFjY2Vzc2libGUodmlldygpLT5w
YWdlKCkpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYgLy8gUXQgNQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlX3AuaCBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U1NmRkMDU4OWNh
Zjc5OGRkMmIxOWFiNDc4MDAzOTk5YzIwNmRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmgKQEAgLTAsMCArMSw5MiBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBxd2Vidmlld2FjY2Vzc2libGVfcF9oCisjZGVmaW5l
IHF3ZWJ2aWV3YWNjZXNzaWJsZV9wX2gKKworI2luY2x1ZGUgPHFnbG9iYWwuaD4KKy8vIFRoZSBR
QWNjZXNzaWJsZSBpbnRlcmZhY2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKworI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgi
CisjaW5jbHVkZSAicWFjY2Vzc2libGVvYmplY3QuaCIKKyNpbmNsdWRlICJxYWNjZXNzaWJsZXdp
ZGdldC5oIgorCisjaW5jbHVkZSAicXdlYmZyYW1lLmgiCisjaW5jbHVkZSAicXdlYmZyYW1lX3Au
aCIKKyNpbmNsdWRlICJxd2Vidmlldy5oIgorCisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBhY2Nl
c3NpYmxlSW50ZXJmYWNlRmFjdG9yeShjb25zdCBRU3RyaW5nJiBrZXksIFFPYmplY3QqKTsKKwor
LyoKKyAqIENsYXNzZXMgcmVwcmVzZW50aW5nIGFjY2Vzc2libGUgb2JqZWN0cyBmb3IgVmlldywg
RnJhbWUgYW5kIFBhZ2UKKyAqCisgKiBFYWNoIG9mIHRoZXNlIGp1c3QgcmV0dXJucyBvbmUgY2hp
bGQgd2hpY2ggbGV0cyB0aGUgYWNjZXNzaWJpbGl0eQorICogZnJhbXdvcmsgbmF2aWdhdGUgdG93
YXJkcyB0aGUgYWN0dWFsIGNvbnRlbnRzIGluIHRoZSBmcmFtZS4KKyAqLworCitjbGFzcyBRV2Vi
RnJhbWVBY2Nlc3NpYmxlIDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBRV2ViRnJhbWVBY2Nlc3NpYmxlKFFXZWJGcmFtZSopOworCisgICAgUVdlYkZyYW1lKiBmcmFt
ZSgpIGNvbnN0OworCisgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UqIHBhcmVudCgpIGNvbnN0Owor
ICAgIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UqIGNo
aWxkKGludCBpbmRleCkgY29uc3Q7CisgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNz
aWJsZUludGVyZmFjZSopIGNvbnN0OworICAgIGludCBuYXZpZ2F0ZShRQWNjZXNzaWJsZTo6UmVs
YXRpb25GbGFnLCBpbnQsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiogdGFyZ2V0KSBjb25zdDsKKwor
ICAgIFFTdHJpbmcgdGV4dChRQWNjZXNzaWJsZTo6VGV4dCkgY29uc3Q7CisgICAgUUFjY2Vzc2li
bGU6OlJvbGUgcm9sZSgpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlOjpTdGF0ZSBzdGF0ZSgpIGNv
bnN0OworfTsKKworCitjbGFzcyBRV2ViUGFnZUFjY2Vzc2libGUgOiBwdWJsaWMgUUFjY2Vzc2li
bGVPYmplY3QgeworcHVibGljOgorICAgIFFXZWJQYWdlQWNjZXNzaWJsZShRV2ViUGFnZSopOwor
CisgICAgUVdlYlBhZ2UqIHBhZ2UoKSBjb25zdDsKKworICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNl
KiBwYXJlbnQoKSBjb25zdDsKKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAgIFFBY2Nl
c3NpYmxlSW50ZXJmYWNlKiBjaGlsZChpbnQgaW5kZXgpIGNvbnN0OworICAgIGludCBpbmRleE9m
Q2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25zdDsKKyAgICBpbnQgbmF2aWdh
dGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoq
IHRhcmdldCkgY29uc3Q7CisKKyAgICBRU3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRleHQpIGNv
bnN0OworICAgIFFBY2Nlc3NpYmxlOjpSb2xlIHJvbGUoKSBjb25zdDsKKyAgICBRQWNjZXNzaWJs
ZTo6U3RhdGUgc3RhdGUoKSBjb25zdDsKK307CisKKworY2xhc3MgUVdlYlZpZXdBY2Nlc3NpYmxl
IDogcHVibGljIFFBY2Nlc3NpYmxlV2lkZ2V0IHsKK3B1YmxpYzoKKyAgICBRV2ViVmlld0FjY2Vz
c2libGUoUVdlYlZpZXcqKTsKKworICAgIFFXZWJWaWV3KiB2aWV3KCkgY29uc3Q7CisKKyAgICBp
bnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZChp
bnQgaW5kZXgpIGNvbnN0OworfTsKKworI2VuZGlmIC8vIFF0IDUKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL2FwaS5wcmkgYi9Tb3VyY2UvYXBpLnByaQppbmRleCA5YjdiMjdiZjJkOWM0MzU3
N2NiMWJiNjE3Y2IxNTJkNjRiZDQwZjFiLi5jMjAxZTcyMTU0MGZkZGYwMjNlNTg2MzUwMDNlYzIy
Y2QyNjY1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXBpLnByaQorKysgYi9Tb3VyY2UvYXBpLnBy
aQpAQCAtMTY5LDYgKzE2OSw5IEBAIGNvbnRhaW5zKENPTkZJRywgdGV4bWFwKSB7CiAgICAgREVG
SU5FUyArPSBXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEKIH0KIAorY29udGFpbnMoUVRfQ09ORklH
LCBhY2Nlc3NpYmlsaXR5KSB7CisgICAgaGF2ZVF0KDUpOiBERUZJTkVTICs9IEhBVkVfQUNDRVNT
SUJJTElUWT0xCit9CiAKICMgLS0tLS0tLS0tLS0tLSBJbnN0YWxsIHJ1bGVzIC0tLS0tLS0tLS0t
LS0KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGI0NmIzOGZlMzI5
YTA3NjdkZjA1ODgxZWExODUzNjViMTMwY2JmN2EuLjkyYTIzMzJlYTcyYWNkMWE0YjJjY2UzMWZh
ZWI4ZGYwZGUzMDYzZTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNiAgRnJlZGVyaWsgR2xhZGhvcm4gIDxmcmVkZXJpay5n
bGFkaG9ybkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBJbml0aWFsIGltcGxlbWVudGF0aW9u
IG9mIGFjY2Vzc2liaWxpdHkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYWNjZXNzaWJpbGl0eSBkZWZpbmUgd2hlbiBRdCBpcyBidWls
dCB3aXRoIGFjY2Vzc2liaWxpdHkgc3VwcG9ydC4KKworICAgICAgICAqIFNvdXJjZS9hcGkucHJp
OgorCiAyMDEyLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIHdlYmtpdC1wZXJmLmFwcHNwb3QuY29tIHNob3VsZCBhY2NlcHQgdGVzdCByZXN1bHRzIHdp
dGhvdXQgbWVkaWFucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125837</attachid>
            <date>2012-02-07 06:41:02 -0800</date>
            <delta_ts>2012-12-20 08:31:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20120207154055.patch</filename>
            <type>text/plain</type>
            <size>36402</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uYjUyYWFlZTE5NzBiZTAzZGRlM2Y4ODY3MTMzNDBh
Y2VmMjY5OGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTA2ICBGcmVk
ZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFF0IHdyYXBw
ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3QuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxl
Um9sZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpy
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aW5k
ZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpz
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6Om9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cjo6c2V0VGV4dCk6CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgR2NjIGJ1aWxkIGZpeCBhZnRlciByMTA2NDgyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
ZmM5YWRmN2EwYmYzODQyODIyOGU3YzYzNmFmNzcyYmM1NzExNDM2Li5mYWY0MWRhN2IzNzNjNjZm
MzdkZWEwNmJjOTk3MGE2YjgyMWEwYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTAyLTA2ICBGcmVkZXJpayBHbGFkaG9ybiAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0LnByaTogQWRkZWQgbmV3IGZpbGVzIGZvciBhY2Nlc3NpYmlsaXR5LgorCiAyMDEyLTAx
LTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29u
dGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1NTQzZTYwMWJlYjFjNjI1NzhkODBmNzcyMmJmZDk1
MzU0MmI4MDUzLi40MWMzMWI4NDE2YzY2OGU5OWJiMTc3MTMwYTBjZjk3N2JhYjZkNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAyLTA2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBRV2ViVmlldyB0byB0aGUgYWNj
ZXNzaWJpbGl0eSBmcmFtZXdvcmsgYW5kIG1ha2UKKyAgICAgICAgaXQgcG9zc2libGUgdG8gbmF2
aWdhdGUgaW50byB0aGUgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCBoaWVyYXJjaHkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3YWNjZXNz
aWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZy
YW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpmcmFtZSk6Cisg
ICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZUFj
Y2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZCk6
CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjpuYXZpZ2F0ZSk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpyb2xlKToK
KyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OlFXZWJQYWdlQWNjZXNz
aWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhZ2UpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFy
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdl
YlBhZ2VBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJs
ZTo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUp
OgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpyb2xlKToKKyAgICAgICAgKFFXZWJQYWdl
QWNjZXNzaWJsZTo6c3RhdGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAg
ICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFX
ZWJWaWV3QWNjZXNzaWJsZTo6dmlldyk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNo
aWxkKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisKIDIwMTIt
MDItMDEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVByaW9yaXR5KCkgZmFpbHMgZm9y
IENTUyBzaG9ydGhhbmQgcHJvcGVydGllcyB3aXRoICdpbXBvcnRhbnQnIHByaW9yaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmYzZmNmU2NGYzOGYzYzlhZDliMThjMWJjNGI2NGJjMDdjN2FkZTY1Li42Y2Uz
MzYwZWUyNTlhODA2YzI1OTAzMWRjY2E2Y2FkZTFmMzA4NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI3
NjcsNiArMjc2Nyw3IEBAIEhFQURFUlMgKz0gXAogCiBTT1VSQ0VTICs9IFwKICAgICBhY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgXAorICAgIGFjY2Vzc2liaWxpdHkv
cXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdC5jcHAgXAogICAgIHBhZ2UvcXQvRHJhZ0Nv
bnRyb2xsZXJRdC5jcHAgXAogICAgIHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9UcmFuc2Zvcm1hdGlvbk1hdHJpeFF0LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpCmluZGV4IGFkZGQ1ODc5Mzk3OWYyN2Q0M2U2ODkwMDQ1ZWZmNDJmNmJmMWM5YjguLjYxNzIz
MWIwZGUxMjFmN2I5NzZlZjhhMjY1ZjJhYTI2NTRmZWIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0x
OSw2ICsxOSw3IEBAIFdFQkNPUkVfR0VORVJBVEVEX1NPVVJDRVNfRElSID0gJCR7Uk9PVF9CVUlM
RF9ESVJ9L1NvdXJjZS9XZWJDb3JlLyQke0dFTkVSQVRFRF9TCiBJTkNMVURFUEFUSCArPSBcCiAg
ICAgJCRTT1VSQ0VfRElSIFwKICAgICAkJFNPVVJDRV9ESVIvYWNjZXNzaWJpbGl0eSBcCisgICAg
JCRTT1VSQ0VfRElSL2FjY2Vzc2liaWxpdHkvcXQgXAogICAgICQkU09VUkNFX0RJUi9iaW5kaW5n
cyBcCiAgICAgJCRTT1VSQ0VfRElSL2JpbmRpbmdzL2dlbmVyaWMgXAogICAgICQkU09VUkNFX0RJ
Ui9icmlkZ2UgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAppbmRleCBjNDE3Y2M5NTg1NzEyMTZkMGNhMDRkM2JiNDRiN2ZjMmQ2MWZh
NGQ5Li5hZTYxOGVhZjRjZjc5Y2Q5NDY5YzljMjQ2OWMwYjM0MjEzMDc3MjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAt
NjU3LDYgKzY1Nyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShHVEspCiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFdyYXBwZXIo
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQogI2Vsc2UK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJu
IG1fd3JhcHBlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciogd3JhcHBlcikgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKaW5kZXggNzIzMjY0MjM3ODk2
OTI4Nzc4Mjk4YTBkOTMwMjk0NjU4NDYzNzlhOC4uYTUxYzgyMmQ1NGNjZjNlNWE3M2UwNTUyZWQ3
MmNmM2UyY2FjZmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcApAQCAtMzQsNyArMzQsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxp
dHlQbGF0Zm9ybUluY2x1ZGVzTwogICAgIGlmIChpc01lbnVMaXN0UG9wdXAoKSB8fCBpc01lbnVM
aXN0T3B0aW9uKCkpCiAgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CiAKLSAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgIHJldHVybiBJbmNsdWRlT2JqZWN0OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNGZjYWMzNzliM2Y0ZDcwNmM3NmVhNjczMWZhY2ZlNTFlYzFmMDZmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlclF0LmNwcApAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBBbG9uem8KKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgKiBQb3J0aW9ucyBmcm9tIE1vemlsbGEgYTExeSwgY29weXJpZ2h0IGFzIGZvbGxvd3M6CisK
KyAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCisKKyAqIFRoZSBJbml0
aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcworICogU3VuIE1pY3Jvc3lzdGVt
cywgSW5jLgorICogUG9ydGlvbnMgY3JlYXRlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYXJl
IENvcHlyaWdodCAoQykgMjAwMgorICogdGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJRdC5oIgorCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNlcyBjaGFuZ2VkIEFQSSBp
biBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisKKyNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlFX
ZWJQYWdlQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxxZGVidWcuaD4KKyNpbmNsdWRlIDxxd2lkZ2V0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUUFjY2Vzc2libGU6OlJvbGUgd2ViS2l0Um9s
ZVRvUUFjY2Vzc2libGVSb2xlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCit7Cisg
ICAgc3dpdGNoIChyb2xlKSB7CisgICAgLy8gICAgIGNhc2UgQW5ub3RhdGlvblJvbGU6CisgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIEFwcGxpY2F0aW9uUm9s
ZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpBcHBsaWNhdGlvbjsKKyAgICAvLyAgICAg
Y2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgorICAg
IC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgQXBwbGlj
YXRpb25EaWFsb2dSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7Cisg
ICAgLy8gICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToK
KyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIEFw
cGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIC8vICAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgorICAgIC8vICAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgQnJvd3NlclJvbGU6CisgICAg
Ly8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBCdXN5SW5k
aWNhdG9yUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNh
c2UgQnV0dG9uUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247CisgICAg
Y2FzZSBDZWxsUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpDZWxsOworICAgIGNh
c2UgQ2hlY2tCb3hSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkNoZWNrQm94Owor
ICAgIC8vICAgICBjYXNlIENvbG9yV2VsbFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICBjYXNlIENvbHVtblJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6Q29sdW1uOworICAgIGNhc2UgQ29sdW1uSGVhZGVyUm9sZToKKyAgICAgICAgcmV0dXJu
IFFBY2Nlc3NpYmxlOjpDb2x1bW5IZWFkZXI7CisgICAgY2FzZSBDb21ib0JveFJvbGU6CisgICAg
ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q29tYm9Cb3g7CisgICAgLy8gICAgIGNhc2UgRGVmaW5p
dGlvbkxpc3RUZXJtUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Owor
ICAgIC8vICAgICBjYXNlIERlZmluaXRpb25MaXN0RGVmaW5pdGlvblJvbGU6CisgICAgLy8gICAg
ICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEaXJlY3RvcnlSb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2Ug
RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgIC8vICAgICBjYXNlIERpdlJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICBjYXNlIERvY3VtZW50Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpEb2N1bWVudDsKKyAgICAvLyAgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgor
ICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgRG9j
dW1lbnRNYXRoUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAg
IC8vICAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEb2N1bWVudFJlZ2lvblJvbGU6CisgICAgLy8g
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBEcmF3ZXJSb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBFZGl0YWJs
ZVRleHRSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4dDsKKyAg
ICAvLyAgICAgY2FzZSBGb3JtUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgIC8vICAgICBjYXNlIEdyaWRSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFB
Y2Nlc3NpYmxlOjo7CisgICAgY2FzZSBHcm91cFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6R3JvdXBpbmc7CisgICAgLy8gICAgIGNhc2UgR3Jvd0FyZWFSb2xlOgorICAgIC8vICAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgSGVhZGluZ1JvbGU6
CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBI
ZWxwVGFnUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNh
c2UgSWdub3JlZFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Tm9Sb2xlOworICAg
IGNhc2UgSW1hZ2VSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkdyYXBoaWM7Cisg
ICAgLy8gICAgIGNhc2UgSW1hZ2VNYXBSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgSW5jcmVtZW50b3JSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBMYWJlbFJvbGU6CisgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6U3RhdGljVGV4dDsgLy8gd2hhdCBpcyB0aGUgZGlmZiB0byBzdGF0
aWMgdGV4dD8KKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya0FwcGxpY2F0aW9uUm9sZToKKyAgICAv
LyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIExhbmRtYXJr
QmFubmVyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8v
ICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6CisgICAgLy8gICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNl
IExhbmRtYXJrTWFpblJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsK
KyAgICAvLyAgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgorICAgIC8vICAgICAgICAg
cmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xl
OgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBMaW5rUm9s
ZToKKyAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAgY2FzZSBXZWJDb3JlTGlua1JvbGU6
CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6TGluazsKKyAgICBjYXNlIExpc3RSb2xlOgor
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Okxpc3Q7CisgICAgLy8gICAgIGNhc2UgTGlzdEJv
eFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICAvLyAgICAg
Y2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6OworICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6
Okxpc3RJdGVtOworICAgIC8vICAgICBjYXNlIExpc3RNYXJrZXJSb2xlOgorICAgIC8vICAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgLy8gICAgIGNhc2UgTWF0dGVSb2xlOgorICAg
IC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBNZW51Um9sZToKKyAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpNZW51SXRlbTsKKyAgICBjYXNlIE1lbnVCYXJSb2xl
OgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6Ok1lbnVCYXI7CisgICAgY2FzZSBNZW51QnV0
dG9uUm9sZToKKyAgICBjYXNlIE1lbnVJdGVtUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3Np
YmxlOjpNZW51SXRlbTsKKyAgICAvLyAgICAgY2FzZSBNZW51TGlzdFBvcHVwUm9sZToKKyAgICAv
LyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBjYXNlIE1lbnVMaXN0
T3B0aW9uUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8v
ICAgICBjYXNlIE91dGxpbmVSb2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxl
Ojo7CisgICAgLy8gICAgIGNhc2UgUGFyYWdyYXBoUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVy
biBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OkJ1dHRvbjsgLy8gPworICAgIC8vICAgICBjYXNlIFByZXNlbnRhdGlv
bmFsUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAg
ICBjYXNlIFByb2dyZXNzSW5kaWNhdG9yUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNj
ZXNzaWJsZTo6OworICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgorICAgICAgICByZXR1cm4gUUFj
Y2Vzc2libGU6OlJhZGlvQnV0dG9uOworICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6CisgICAgICAg
IHJldHVybiBRQWNjZXNzaWJsZTo6R3JvdXBpbmc7CisgICAgY2FzZSBSb3dIZWFkZXJSb2xlOgor
ICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlJvd0hlYWRlcjsKKyAgICBjYXNlIFJvd1JvbGU6
CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Um93OworICAgIC8vICAgICBjYXNlIFJ1bGVy
Um9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIC8vICAgICBj
YXNlIFJ1bGVyTWFya2VyUm9sZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
OworICAgIGNhc2UgU2Nyb2xsQXJlYVJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
UGFuZTsgLy8gPworICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nl
c3NpYmxlOjpTY3JvbGxCYXI7CisgICAgLy8gICAgIGNhc2UgU2hlZXRSb2xlOgorICAgIC8vICAg
ICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBTbGlkZXJSb2xlOgorICAgICAg
ICByZXR1cm4gUUFjY2Vzc2libGU6OlNsaWRlcjsKKyAgICAvLyAgICAgY2FzZSBTbGlkZXJUaHVt
YlJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsgLy8gc2hvdWxkIGJl
IGlnbm9yZWQKKyAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vz
c2libGU6OlNwaW5Cb3g7CisgICAgLy8gICAgIGNhc2UgU3BpbkJ1dHRvblBhcnRSb2xlOgorICAg
IC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBTcGxpdEdyb3VwUm9s
ZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTcGxpdHRlcjsgLy8gPworICAgIGNhc2Ug
U3BsaXR0ZXJSb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlNwbGl0dGVyOworICAg
IGNhc2UgU3RhdGljVGV4dFJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6U3RhdGlj
VGV4dDsKKyAgICAvLyAgICAgY2FzZSBTeXN0ZW1XaWRlUm9sZToKKyAgICAvLyAgICAgICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgVGFiR3JvdXBSb2xlOgorICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OlBhZ2VUYWJMaXN0OyAvLyA/CisgICAgY2FzZSBUYWJMaXN0Um9sZToK
KyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYWdlVGFiTGlzdDsKKyAgICAvLyAgICAgY2Fz
ZSBUYWJQYW5lbFJvbGU6CisgICAgLy8gICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAg
ICBjYXNlIFRhYlJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6UGFnZVRhYjsKKyAg
ICBjYXNlIFRhYmxlUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUYWJsZTsKKyAg
ICAvLyAgICAgY2FzZSBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU6CisgICAgLy8gICAgICAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OjsKKyAgICBjYXNlIFRleHRBcmVhUm9sZToKKyAgICAgICAgcmV0
dXJuIFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQ7CisgICAgY2FzZSBUcmVlUm9sZToKKyAgICAg
ICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUcmVlOworICAgIC8vICAgICBjYXNlIFRyZWVHcmlkUm9s
ZToKKyAgICAvLyAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6OworICAgIGNhc2UgVHJlZUl0
ZW1Sb2xlOgorICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OlRyZWVJdGVtOworICAgIGNhc2Ug
VGV4dEZpZWxkUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQ7
CisgICAgY2FzZSBUb29sYmFyUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpUb29s
QmFyOworICAgIGNhc2UgVW5rbm93blJvbGU6CisgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
Tm9Sb2xlOworICAgIGNhc2UgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlOgorICAgICAgICByZXR1
cm4gUUFjY2Vzc2libGU6OlRvb2xUaXA7CisgICAgLy8gICAgIGNhc2UgVmFsdWVJbmRpY2F0b3JS
b2xlOgorICAgIC8vICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjo7CisgICAgY2FzZSBXZWJB
cmVhUm9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpQYW5lOworICAgIGNhc2UgV2lu
ZG93Um9sZToKKyAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpXaW5kb3c7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcURlYnVnKCkgPDwgIlVua25vd24gV2ViQ29yZSBhY2Nlc3NpYmlsaXR5IHJv
bGU6ICIgPDwgcm9sZTsKKyAgICB9CisKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6Ok5vUm9sZTsK
K30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKKyAgICA6IG1fb2JqZWN0KG9iamVjdCkK
K3sKKyAgICBBU1NFUlQob2JqZWN0KTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6
On5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcigpCit7CisgICAgbV9vYmplY3QtPmRldGFjaCgp
OworfQorCitRQWNjZXNzaWJsZTo6Um9sZSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cm9s
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYktpdFJvbGVUb1FBY2Nlc3NpYmxlUm9sZShtX29i
amVjdC0+cm9sZVZhbHVlKCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5k
ZXggPCAwIHx8IGluZGV4ID49IG1fb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKSkgeworICAgICAg
ICBxRGVidWcoKSA8PCAiSU5WQUxJRCBDSElMRCIgPDwgbV9vYmplY3QgPDwgaW5kZXg7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3Jh
cHBlciA9IG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihtX29iamVjdC0+Y2hpbGRyZW4o
KS5hdChpbmRleCkuZ2V0KCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCitpbnQgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBt
X29iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcjo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZElm
YWNlKSBjb25zdAoreworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBjaGls
ZFdyYXBwZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcio+
KGNoaWxkSWZhY2UpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IGNo
aWxkV3JhcHBlci0+bV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmIChw
YXJlbnRPYmplY3QpCisgICAgICAgIHJldHVybiBwYXJlbnRPYmplY3QtPmNoaWxkcmVuKCkuZmlu
ZChjaGlsZFdyYXBwZXItPm1fb2JqZWN0KTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1FBY2Nlc3Np
YmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGRBdChpbnQgeCwg
aW50IHkpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVzZSBoaXQtdGVzdGluZyBjb2RlIGZyb20g
QWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCitpbnQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6Om5hdmlnYXRlKFFBY2Nlc3Np
YmxlOjpSZWxhdGlvbkZsYWcgcmVsYXRpb24sIGludCBpbmRleCwgUUFjY2Vzc2libGVJbnRlcmZh
Y2UqKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgUV9VTlVTRUQocmVsYXRpb24pCisgICAgUV9VTlVT
RUQoaW5kZXgpCisgICAgKnRhcmdldCA9IDA7CisgICAgcmV0dXJuIC0xOworfQorCitRQWNjZXNz
aWJsZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OnBhcmVudCgpIGNvbnN0
Cit7CisgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgcm9vdCBvYmplY3QuIElmIHNvLCB3ZSBu
ZWVkIHRvIHJldHVybiB0aGUgRnJhbWUgYXMgcGFyZW50CisgICAgaWYgKCFtX29iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCkgJiYgbV9vYmplY3QtPmlzU2Nyb2xsVmlldygpKSB7CisgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQgPSBtX29iamVjdC0+Zmlyc3RDaGls
ZCgpOworICAgICAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLT5pc1dlYkFyZWEoKSkg
eworICAgICAgICAgICAgLy8gV2Ugc2VlbSB0byBiZSB0aGUgcm9vdCBhY2Nlc3NpYmxlLCBnZXQg
dGhlIEZyYW1lCisgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9j
dW1lbnQoKTsKKyAgICAgICAgICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBkb2N1bWVudC0+
dmlldygpLT5ob3N0V2luZG93KCk7CisgICAgICAgICAgICBpZiAoaG9zdFdpbmRvdykgeworICAg
ICAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gaG9zdFdpbmRvdy0+cGxh
dGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHBhZ2VDbGllbnQgJiYgcGFn
ZUNsaWVudC0+aXNRV2lkZ2V0Q2xpZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdyaXRpbmcgdGhlIHNhbWUgZm9yIFFHcmFwaGljc1ZpZXcgc2hvdWxkIGJlIHRyaXZpYWwu
CisgICAgICAgICAgICAgICAgICAgIFFTY29wZWRQb2ludGVyPFFBY2Nlc3NpYmxlSW50ZXJmYWNl
PiB3ZWJWaWV3KFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UocGFnZUNsaWVu
dC0+b3duZXJXaWRnZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBRU2NvcGVkUG9pbnRlcjxR
QWNjZXNzaWJsZUludGVyZmFjZT4gd2ViUGFnZSh3ZWJWaWV3LT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiB3ZWJGcmFtZSA9IHdlYlBhZ2UtPmNo
aWxkKDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2ViRnJhbWU7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKG1fb2JqZWN0LT5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Cit9CisKKy8vIEZYSU1FOiBDcmVhdGUgYSBoZWxwZXIg
dXNlZCBieSBndGsgYW5kIGhlcmUuCitRU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Ojp0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0IHQpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0KSB7Cisg
ICAgY2FzZSBRQWNjZXNzaWJsZTo6TmFtZTogeworICAgICAgICBpZiAoIW1fb2JqZWN0LT5pc0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX29iamVjdC0+
c3RyaW5nVmFsdWUoKTsKKworICAgICAgICBpZiAobV9vYmplY3QtPmlzQ29udHJvbCgpKSB7Cisg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYWJlbCA9IG1fb2JqZWN0LT5jb3JyZXNw
b25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpOworICAgICAgICAgICAgaWYgKGxhYmVsKSB7
CisgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBu
ZXcgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIobGFiZWwpOworICAgICAgICAgICAgICAgIHJl
dHVybiB3cmFwcGVyLT50ZXh0KHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
cnkgdGV4dCB1bmRlciB0aGUgbm9kZS4KKyAgICAgICAgICAgIFN0cmluZyB0ZXh0VW5kZXIgPSBt
X29iamVjdC0+dGV4dFVuZGVyRWxlbWVudCgpOworICAgICAgICAgICAgaWYgKHRleHRVbmRlci5s
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFVuZGVyOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9vYmplY3QtPmlzSW5wdXRJbWFn
ZSgpKSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9vYmplY3QtPm5vZGUoKTsKKyAgICAg
ICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICAgICAg
ICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIHJhdGhlciB0aGFuIGFsdFRleHQgU3RyaW5nIHNvIGFz
IG5vdCB0byBmYWxsIGJhY2sgb24gdGl0bGUuCisgICAgICAgICAgICAgICAgU3RyaW5nIGFsdCA9
IHRvSFRNTEVsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFsdEF0dHIpOwor
ICAgICAgICAgICAgICAgIGlmICghYWx0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGFsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGxi
YWNrIGZvciB0aGUgd2ViQXJlYSBvYmplY3Q6IGp1c3QgcmV0dXJuIHRoZSBkb2N1bWVudCdzIHRp
dGxlLgorICAgICAgICBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpKSB7CisgICAgICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGlm
IChkb2N1bWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnRpdGxlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBOb3RoaW5nIHdvcmtlZCBzbyBmYXIsIHRyeSB3aXRoIHRo
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0J3MKKyAgICAgICAgLy8gdGl0bGUoKSBiZWZvcmUgZ29pbmcg
YWhlYWQgd2l0aCBzdHJpbmdWYWx1ZSgpLgorICAgICAgICBTdHJpbmcgYXhUaXRsZSA9IG1fb2Jq
ZWN0LT50aXRsZSgpOworICAgICAgICBpZiAoIWF4VGl0bGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGF4VGl0bGU7CisKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdWYWx1
ZSgpOworICAgIH0KKyAgICBjYXNlIFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbjoKKyAgICAgICAg
cmV0dXJuIFFTdHJpbmcobV9vYmplY3QtPmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFFTdHJpbmcoKTsK
K30KKworUUFjY2Vzc2libGU6OlN0YXRlIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpzdGF0
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gUUFjY2Vzc2li
bGU6OlN0YXRlKCk7Cit9CisKK1FSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpyZWN0
KCkgY29uc3QKK3sKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fb2JqZWN0LT5kb2N1bWVu
dEZyYW1lVmlldygpOworICAgIExheW91dFJlY3QgcmVjdCA9IG1fb2JqZWN0LT5lbGVtZW50UmVj
dCgpOworICAgIHJldHVybiBRUmVjdChmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4ocmVjdCkp
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpzZXRUZXh0KFFBY2Nlc3Np
YmxlOjpUZXh0LCBjb25zdCBRU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjMy
NjQ2MmExMTI5Y2I5YjVjNGQzNzRkYzZkMzIzN2ZlMGE2NTM2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
clF0LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlclF0X2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdF9oCisK
KyNpbmNsdWRlIDxxYWNjZXNzaWJsZS5oPgorCisvLyBUaGUgUUFjY2Vzc2libGUgaW50ZXJmYWNl
cyBjaGFuZ2VkIEFQSSBpbiBRdCA1CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNL
KDUsIDAsIDApCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9i
amVjdDsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgOiBwdWJsaWMgUUFjY2Vz
c2libGVJbnRlcmZhY2UgeworCitwdWJsaWM6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIH5BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcigpOworCisgICAgdmlydHVhbCBRQWNjZXNzaWJsZUludGVyZmFjZSogcGFyZW50
KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAgIHZpcnR1
YWwgUUFjY2Vzc2libGVJbnRlcmZhY2UqIGNoaWxkKGludCBpbmRleCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZEF0KGludCB4LCBpbnQg
eSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIHZpcnR1YWwgaW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlv
bkZsYWcsIGludCBpbmRleCwgUUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUU9iamVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCisgICAg
dmlydHVhbCBRUmVjdCByZWN0KCkgY29uc3Q7CisKKyAgICBRQWNjZXNzaWJsZTo6Um9sZSByb2xl
KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dChRQWNjZXNzaWJsZTo6VGV4dCwg
Y29uc3QgUVN0cmluZyYpOworCisgICAgdmlydHVhbCBRQWNjZXNzaWJsZTo6U3RhdGUgc3RhdGUo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX29i
amVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFF0IDUKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQucHJpIGIvU291cmNlL1dlYktp
dC9XZWJLaXQucHJpCmluZGV4IDA1ZWIwOWE4NzhmNTNjMWMzOTE1NjMwNGFjM2Q5MDdkNjBjZDNl
NWQuLjI1ZjEzYzQwY2M4NDdmNWFiMGQzYTE0ZWJkZTY0OTRjZTRkMDdkNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkK
QEAgLTMsNiArMyw3IEBAIFNPVVJDRVMgKz0gXAogICAgICQkUFdEL3F0L0FwaS9xZ3JhcGhpY3N3
ZWJ2aWV3LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJwYWdlLmNwcCBcCiAgICAgJCRQV0Qv
cXQvQXBpL3F3ZWJ2aWV3LmNwcCBcCisgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJs
ZS5jcHAgXAogICAgICQkUFdEL3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgXAogICAgICQkUFdEL3F0
L0FwaS9xd2ViaGlzdG9yeS5jcHAgXAogICAgICQkUFdEL3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
IFwKQEAgLTIzLDYgKzI0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJr
aXRwbGF0Zm9ybXBsdWdpbi5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnBhZ2UuaCBcCiAgICAg
JCRQV0QvcXQvQXBpL3F3ZWJ2aWV3LmggXAorICAgICQkUFdEL3F0L0FwaS9xd2Vidmlld2FjY2Vz
c2libGVfcC5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnNldHRpbmdzLmggXAogICAgICQkUFdE
L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmRh
dGFiYXNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAppbmRleCAzNWZjZTRiZWJmYzA5MmQ1
MzkxNjVkZWJhZmIzOTViYzUxMTQ5ODZmLi5iMDcyZmFkYmE3MmUyODgxNTMxNzhlMzc3NGI3ZmZk
NGE5NmM1Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaApAQCAtMjM1LDYgKzIzNSw3IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7
CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OwogICAgIGZyaWVuZCBj
bGFzcyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZUNsaWVudFF0OworICAgIGZyaWVuZCBjbGFz
cyBRV2ViRnJhbWVBY2Nlc3NpYmxlOwogICAgIFFXZWJGcmFtZVByaXZhdGUgKmQ7CiAgICAgUV9Q
UklWQVRFX1NMT1QoZCwgdm9pZCBfcV9vcmllbnRhdGlvbkNoYW5nZWQoKSkKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oIGIvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuaAppbmRleCBmZDJmZDRiM2JlZGJiNzYxM2IzNTBhOTczMGRhZmY1MzJjNDEy
OWU5Li40NjM2NzVjNDZhNjM1MTIyNTEzZmI1MmUwZDZmZWE1Mzc4ZmU4NzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmgKQEAgLTQzMSw2ICs0MzEsNyBAQCBwcml2YXRlOgogICAgIFFXZWJQYWdl
UHJpdmF0ZSAqZDsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWU7CisgICAgZnJpZW5kIGNs
YXNzIFFXZWJQYWdlQWNjZXNzaWJsZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRl
OwogICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlldzsKICAgICBmcmllbmQgY2xhc3MgUVdlYlZpZXdQ
cml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwCmluZGV4IDRhMmQxODZhOWJmZGRmOTY4
ZTdkMDViMWZiNjk4N2E0ZmVjN2FlNDEuLmMzZTkzMmUxNDA1ZDBjMTEzYjE2ZjdiOTlmMzk1ODFj
NTEyOTk4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKQEAgLTIyLDExICsyMiwxMyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViUGFnZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5j
bHVkZSAicXdlYnBhZ2VfcC5oIgorI2luY2x1ZGUgInF3ZWJ2aWV3YWNjZXNzaWJsZV9wLmgiCiAj
aW5jbHVkZSAicWJpdG1hcC5oIgogI2luY2x1ZGUgInFldmVudC5oIgogI2luY2x1ZGUgInFwYWlu
dGVyLmgiCkBAIC0xNjcsNiArMTY5LDExIEBAIFFXZWJWaWV3OjpRV2ViVmlldyhRV2lkZ2V0ICpw
YXJlbnQpCiAKICAgICBzZXRNb3VzZVRyYWNraW5nKHRydWUpOwogICAgIHNldEZvY3VzUG9saWN5
KFF0OjpXaGVlbEZvY3VzKTsKKworLy8gVGhlIFFBY2Nlc3NpYmxlIGludGVyZmFjZXMgY2hhbmdl
ZCBBUEkgaW4gUXQgNQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAw
KQorICAgIFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeShhY2Nlc3NpYmxlSW50ZXJmYWNlRmFj
dG9yeSk7CisjZW5kaWYKIH0KIAogLyohCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vidmlld2FjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXdh
Y2Nlc3NpYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTkxNGU2MmM5MTA2ZTc5YmY3YzdiNmIxZWZhNTA1
YWQyMjQxNjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZp
ZXdhY2Nlc3NpYmxlLmNwcApAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInF3ZWJ2aWV3YWNjZXNzaWJsZV9wLmgiCisKKy8vIFRoZSBRQWNj
ZXNzaWJsZSBpbnRlcmZhY2VzIGNoYW5nZWQgQVBJIGluIFF0IDUKKyNpZiBRVF9WRVJTSU9OID49
IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKworI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmgiCisKK1FBY2Nlc3NpYmxl
SW50ZXJmYWNlKiBhY2Nlc3NpYmxlSW50ZXJmYWNlRmFjdG9yeShjb25zdCBRU3RyaW5nJiBrZXks
IFFPYmplY3QqIG9iamVjdCkKK3sKKyAgICBRX1VOVVNFRChrZXkpCisKKyAgICBpZiAoUVdlYlBh
Z2UgKnBhZ2UgPSBxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihvYmplY3QpKQorICAgICAgICByZXR1
cm4gbmV3IFFXZWJQYWdlQWNjZXNzaWJsZShwYWdlKTsKKworICAgIGlmIChRV2ViVmlldyAqdmll
dyA9IHFvYmplY3RfY2FzdDxRV2ViVmlldyo+KG9iamVjdCkpCisgICAgICAgIHJldHVybiBuZXcg
UVdlYlZpZXdBY2Nlc3NpYmxlKHZpZXcpOworCisgICAgaWYgKFFXZWJGcmFtZSAqZnJhbWUgPSBx
b2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2Vi
RnJhbWVBY2Nlc3NpYmxlKGZyYW1lKTsKKyAgICByZXR1cm4gMDsKK30KKworCisKK1FXZWJGcmFt
ZUFjY2Vzc2libGU6OlFXZWJGcmFtZUFjY2Vzc2libGUoUVdlYkZyYW1lKiBmcmFtZSkKKyAgICA6
IFFBY2Nlc3NpYmxlT2JqZWN0KGZyYW1lKQoreworICAgIGlmICghV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworfQorCitRV2ViRnJhbWUqIFFXZWJGcmFtZUFj
Y2Vzc2libGU6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJG
cmFtZSo+KG9iamVjdCgpKTsKK30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJGcmFtZUFj
Y2Vzc2libGU6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVy
eUFjY2Vzc2libGVJbnRlcmZhY2Uob2JqZWN0KCktPnBhcmVudCgpKTsKK30KKworUVN0cmluZyBR
V2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25zdAoreworICAg
IHJldHVybiBRU3RyaW5nKCk7Cit9CisKK2ludCBRV2ViRnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENv
dW50KCkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgp
LT5kLT5mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+
YXhPYmplY3RDYWNoZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0KiByb290QWNjZXNzaWJsZSA9IGRvY3VtZW50LT5heE9iamVjdENhY2hlKCkt
PnJvb3RPYmplY3QoKTsKKyAgICByZXR1cm4gcm9vdEFjY2Vzc2libGUgPyAxIDogMDsKK30KKwor
UUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxkKGludCBpbmRl
eCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgV2Vi
Q29yZTo6RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS0+ZC0+ZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290QWNj
ZXNzaWJsZSA9IGRvY3VtZW50LT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKKyAgICBp
ZiAocm9vdEFjY2Vzc2libGUpCisgICAgICAgIHJldHVybiBuZXcgV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIocm9vdEFjY2Vzc2libGUpOworICAgIHJldHVybiAwOworfQorCitp
bnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50
ZXJmYWNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworUUFjY2Vzc2libGU6OlN0YXRl
IFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vz
c2libGU6OlN0YXRlKCk7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFXZWJGcmFtZUFjY2Vzc2li
bGU6OnJvbGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6Q2xpZW50OworfQor
CitpbnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9u
RmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICAq
dGFyZ2V0ID0gMDsKKyAgICByZXR1cm4gLTE7Cit9CisKK1FXZWJQYWdlQWNjZXNzaWJsZTo6UVdl
YlBhZ2VBY2Nlc3NpYmxlKFFXZWJQYWdlKiBwYWdlKQorICAgIDogUUFjY2Vzc2libGVPYmplY3Qo
cGFnZSkKK3sKK30KKworUVdlYlBhZ2UqIFFXZWJQYWdlQWNjZXNzaWJsZTo6cGFnZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2ViUGFnZSo+KG9iamVjdCgpKTsKK30KKwor
UVN0cmluZyBRV2ViUGFnZUFjY2Vzc2libGU6OnRleHQoUUFjY2Vzc2libGU6OlRleHQgdCkgY29u
c3QKK3sKKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSog
UVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYXJlbnQoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNz
aWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKG9iamVjdCgpLT5wYXJlbnQoKSk7Cit9CisK
K1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBRV2ViUGFnZUFjY2Vzc2libGU6OmNoaWxkKGludCBpbmRl
eCkgY29uc3QKK3sKKyAgICBpZiAoIWluZGV4ICYmIHBhZ2UoKS0+bWFpbkZyYW1lKCkpCisgICAg
ICAgIHJldHVybiBuZXcgUVdlYkZyYW1lQWNjZXNzaWJsZShwYWdlKCktPm1haW5GcmFtZSgpKTsK
KyAgICByZXR1cm4gMDsKK30KKworaW50IFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGRDb3VudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKS0+bWFpbkZyYW1lKCkgPyAxIDogMDsKK30KKwor
aW50IFFXZWJQYWdlQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50
ZXJmYWNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50IFFXZWJQYWdlQWNjZXNz
aWJsZTo6bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZywgaW50LCBRQWNjZXNzaWJs
ZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICAqdGFyZ2V0ID0gMDsKKyAgICByZXR1
cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFXZWJQYWdlQWNjZXNzaWJsZTo6cm9sZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpDbGllbnQ7Cit9CisKK1FBY2Nlc3Np
YmxlOjpTdGF0ZSBRV2ViUGFnZUFjY2Vzc2libGU6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7Cit9CisKKworCitRV2ViVmlld0FjY2Vzc2libGU6OlFX
ZWJWaWV3QWNjZXNzaWJsZShRV2ViVmlldyogdmlldykKKyAgICA6IFFBY2Nlc3NpYmxlV2lkZ2V0
KHZpZXcsIFFBY2Nlc3NpYmxlOjpEb2N1bWVudCkKK3sKK30KKworUVdlYlZpZXcqIFFXZWJWaWV3
QWNjZXNzaWJsZTo6dmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2Vi
Vmlldyo+KG9iamVjdCgpKTsKK30KKworaW50IFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGRDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHZpZXcoKS0+cGFnZSgpID8gMSA6IDA7Cit9CisKK1FB
Y2Nlc3NpYmxlSW50ZXJmYWNlKiBRV2ViVmlld0FjY2Vzc2libGU6OmNoaWxkKGludCBpbmRleCkg
Y29uc3QKK3sKKyAgICBpZiAoIWluZGV4ICYmIHZpZXcoKS0+cGFnZSgpKQorICAgICAgICByZXR1
cm4gbmV3IFFXZWJQYWdlQWNjZXNzaWJsZSh2aWV3KCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7
Cit9CisKKyNlbmRpZiAvLyBRdCA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vidmlld2FjY2Vzc2libGVfcC5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXdhY2Nl
c3NpYmxlX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yjc2ZDFiYjAyNTNjM2UxYjRhZTE3ZDIzMGE3YTAzMzQx
MjBmYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnZpZXdh
Y2Nlc3NpYmxlX3AuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIHF3ZWJ2aWV3
YWNjZXNzaWJsZV9wX2gKKyNkZWZpbmUgcXdlYnZpZXdhY2Nlc3NpYmxlX3BfaAorCisjaW5jbHVk
ZSA8cWdsb2JhbC5oPgorLy8gVGhlIFFBY2Nlc3NpYmxlIGludGVyZmFjZXMgY2hhbmdlZCBBUEkg
aW4gUXQgNQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKQorCisj
aW5jbHVkZSAicXdlYmZyYW1lLmgiCisjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKKyNpbmNsdWRl
ICJxd2Vidmlldy5oIgorCisjaW5jbHVkZSA8cWFjY2Vzc2libGUuaD4KKyNpbmNsdWRlIDxxYWNj
ZXNzaWJsZW9iamVjdC5oPgorI2luY2x1ZGUgPHFhY2Nlc3NpYmxld2lkZ2V0Lmg+CisKK1FBY2Nl
c3NpYmxlSW50ZXJmYWNlKiBhY2Nlc3NpYmxlSW50ZXJmYWNlRmFjdG9yeShjb25zdCBRU3RyaW5n
JiBrZXksIFFPYmplY3QqKTsKKworLyoKKyAqIENsYXNzZXMgcmVwcmVzZW50aW5nIGFjY2Vzc2li
bGUgb2JqZWN0cyBmb3IgVmlldywgRnJhbWUgYW5kIFBhZ2UuCisgKgorICogRWFjaCBvZiB0aGVz
ZSBqdXN0IHJldHVybnMgb25lIGNoaWxkIHdoaWNoIGxldHMgdGhlIGFjY2Vzc2liaWxpdHkKKyAq
IGZyYW13b3JrIG5hdmlnYXRlIHRvd2FyZHMgdGhlIGFjdHVhbCBjb250ZW50cyBpbiB0aGUgZnJh
bWUuCisgKi8KKworY2xhc3MgUVdlYkZyYW1lQWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJs
ZU9iamVjdCB7CitwdWJsaWM6CisgICAgUVdlYkZyYW1lQWNjZXNzaWJsZShRV2ViRnJhbWUqKTsK
KworICAgIFFXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKKworICAgIFFBY2Nlc3NpYmxlSW50ZXJm
YWNlKiBwYXJlbnQoKSBjb25zdDsKKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAgIFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZChpbnQgaW5kZXgpIGNvbnN0OworICAgIGludCBpbmRl
eE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25zdDsKKyAgICBpbnQgbmF2
aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFj
ZSoqIHRhcmdldCkgY29uc3Q7CisKKyAgICBRU3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRleHQp
IGNvbnN0OworICAgIFFBY2Nlc3NpYmxlOjpSb2xlIHJvbGUoKSBjb25zdDsKKyAgICBRQWNjZXNz
aWJsZTo6U3RhdGUgc3RhdGUoKSBjb25zdDsKK307CisKKworY2xhc3MgUVdlYlBhZ2VBY2Nlc3Np
YmxlIDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBRV2ViUGFnZUFj
Y2Vzc2libGUoUVdlYlBhZ2UqKTsKKworICAgIFFXZWJQYWdlKiBwYWdlKCkgY29uc3Q7CisKKyAg
ICBRQWNjZXNzaWJsZUludGVyZmFjZSogcGFyZW50KCkgY29uc3Q7CisgICAgaW50IGNoaWxkQ291
bnQoKSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBj
b25zdDsKKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlKikg
Y29uc3Q7CisgICAgaW50IG5hdmlnYXRlKFFBY2Nlc3NpYmxlOjpSZWxhdGlvbkZsYWcsIGludCwg
UUFjY2Vzc2libGVJbnRlcmZhY2UqKiB0YXJnZXQpIGNvbnN0OworCisgICAgUVN0cmluZyB0ZXh0
KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZTo6Um9sZSByb2xlKCkg
Y29uc3Q7CisgICAgUUFjY2Vzc2libGU6OlN0YXRlIHN0YXRlKCkgY29uc3Q7Cit9OworCisKK2Ns
YXNzIFFXZWJWaWV3QWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldCB7CitwdWJs
aWM6CisgICAgUVdlYlZpZXdBY2Nlc3NpYmxlKFFXZWJWaWV3Kik7CisKKyAgICBRV2ViVmlldyog
dmlldygpIGNvbnN0OworCisgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdDsKKyAgICBRQWNjZXNz
aWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBjb25zdDsKK307CisKKyNlbmRpZiAvLyBR
dCA1CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9hcGkucHJpIGIvU291cmNlL2FwaS5wcmkK
aW5kZXggOWI3YjI3YmYyZDljNDM1NzdjYjFiYjYxN2NiMTUyZDY0YmQ0MGYxYi4uYzIwMWU3MjE1
NDBmZGRmMDIzZTU4NjM1MDAzZWMyMmNkMjY2NTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL2FwaS5w
cmkKKysrIGIvU291cmNlL2FwaS5wcmkKQEAgLTE2OSw2ICsxNjksOSBAQCBjb250YWlucyhDT05G
SUcsIHRleG1hcCkgewogICAgIERFRklORVMgKz0gV1RGX1VTRV9URVhUVVJFX01BUFBFUj0xCiB9
CiAKK2NvbnRhaW5zKFFUX0NPTkZJRywgYWNjZXNzaWJpbGl0eSkgeworICAgIGhhdmVRdCg1KTog
REVGSU5FUyArPSBIQVZFX0FDQ0VTU0lCSUxJVFk9MQorfQogCiAjIC0tLS0tLS0tLS0tLS0gSW5z
dGFsbCBydWxlcyAtLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBiNDZiMzhmZTMyOWEwNzY3ZGYwNTg4MWVhMTg1MzY1YjEzMGNiZjdhLi45MmEy
MzMyZWE3MmFjZDFhNGIyY2NlMzFmYWViOGRmMGRlMzA2M2UwIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDItMDYgIEZyZWRlcmlr
IEdsYWRob3JuICA8ZnJlZGVyaWsuZ2xhZGhvcm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0g
SW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODY0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFjY2Vzc2liaWxpdHkg
ZGVmaW5lIHdoZW4gUXQgaXMgYnVpbHQgd2l0aCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuCisKKyAg
ICAgICAgKiBTb3VyY2UvYXBpLnByaToKKwogMjAxMi0wMS0zMSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICB3ZWJraXQtcGVyZi5hcHBzcG90LmNvbSBzaG91bGQg
YWNjZXB0IHRlc3QgcmVzdWx0cyB3aXRob3V0IG1lZGlhbnMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180345</attachid>
            <date>2012-12-20 08:31:08 -0800</date>
            <delta_ts>2013-01-09 06:10:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20121220172823.patch</filename>
            <type>text/plain</type>
            <size>24155</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxYmRiMjc1N2M1NjYzZTAwOTIwYmYw
MzI0ODJmYWY0Y2I1ZTM3MWYuLmY5MGJkMGZjYzVkNDI4ODlhYjk3YjJkNDI2Zjg2Yjc2NTI0Mzll
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjAgIEZyZWRlcmlrIEdsYWRob3JuICA8
Z2xhZGhvcm5Aa2RlLm9yZz4KKworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24g
b2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSBhY2Nlc3NpYmlsaXR5IGluIFF0IHBvcnQuCisKKyAgICAg
ICAgKiBXVEYucHJpOiBFbmFibGUgYWNjZXNzaWJpbGl0eSBpZiBRdCBpcyBjb25maWd1cmVkIHdp
dGggYTExeS4KKwogMjAxMi0xMi0xOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG93IGNhY2hlZCBpbWFnZXMgdW5kZXIg
TWVtb3J5Q2FjaGUgLT4gSW1hZ2VzIHNlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYTljYWQzMDgxODFk
ZWRhM2RiMWY0OTZiNWI2ZTZhMDhjMWQ2Yjk1Li44YjUxODI3YWMyNzc3ZWFhODE4M2JjNmM1YmNi
MzYxYTIyZjQwZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMTItMjAgIEZy
ZWRlcmlrIEdsYWRob3JuICA8Z2xhZGhvcm5Aa2RlLm9yZz4KKworICAgICAgICBbUXRdIEluaXRp
YWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbWluaW1hbCBj
bGFzc2VzIHRvIGV4cG9zZSB0aGUgaGllcmFyY2h5IG9mIAorICAgICAgICBhY2Nlc3NpYmxlIG9i
amVjdHMgdXNpbmcgUXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZVF0LmNwcDogQWRkZWQuCisgICAgICAgIChBWE9iamVjdENh
Y2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAgKEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBw
ZXIpOgorICAgICAgICAoQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAoQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbik6CisgICAgICAgIChBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVt
ZW50Q2hhbmdlZCk6CisgICAgICAgIChBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRvQW5j
aG9yKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3F0L0Fj
Y2Vzc2liaWxpdHlPYmplY3RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6d3JhcHBlcik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjphY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyOjpyb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOjpjaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcjo6Y2hpbGRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcjo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOjpyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyOjpzZXRUZXh0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyOjpvYmplY3QpOgorCiAyMDEyLTEyLTE4ICBUb21teSBXaWRlbmZs
eWNodCAgPHRvbW15d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0pTQ10gUmVmYWN0b3Jpbmcg
Q29kZUdlbmVyYXRvckpTLnBtIHRvIHNpbXBsaWZ5IGFkZGluZyBzdXBwb3J0IGZvciBvdmVybG9h
ZGVkIGNvbnN0cnVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYWM0MDdlOGE4NjhlYjhlY2JiZGJjMmM5NmQ1
YzE1ZDRiYTczYjYxLi5jMzA2NWVmYWRjMjljNjdjODdiMjA0OTYxYTFjNWQ5YzQ2YzkwNmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBGcmVkZXJpayBHbGFkaG9ybiAg
PGdsYWRob3JuQGtkZS5vcmc+CisKKyAgICAgICAgW1F0XSBJbml0aWFsIGltcGxlbWVudGF0aW9u
IG9mIGFjY2Vzc2liaWxpdHkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3Vj
aCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlw
dGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5wcmk6CisKIDIwMTItMTIt
MTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRl
IGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggODI1ODA0MGJlMzU4NjU2ZTdlZjAyOTA0NTc2NjVlZjYyMmY3Mjc1NC4u
Yzk1OGNiNzQ0ZmEyYjBkZmI4NmViMWQxMTFlNjYxZWUzMjk0ZDg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0yMCAgRnJlZGVyaWsgR2xhZGhvcm4gIDxnbGFkaG9y
bkBrZGUub3JnPgorCisgICAgICAgIFtRdF0gSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhY2Nl
c3NpYmlsaXR5IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3ODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5hYmxlIG5hdmlnYXRpbmcgdG8gdGhlIHdlYmtpdCBhY2Nlc3NpYmxlcyBmcm9t
IHRoZSBmcmFtZS4KKworICAgICAgICAqIFdpZGdldEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAg
KiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXcuY3Bw
OgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlld2FjY2Vzc2libGUuY3BwOgorICAgICAgICAo
UVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZyYW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2Vi
RnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2li
bGU6OmNoaWxkKToKKwogMjAxMi0xMi0xNyAgT3N3YWxkIEJ1ZGRlbmhhZ2VuICA8b3N3YWxkLmJ1
ZGRlbmhhZ2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIHJlbW92ZSBzb21lIHVubmVjZXNz
YXJ5IENPTkZJRyBhZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnByaSBiL1Nv
dXJjZS9XVEYvV1RGLnByaQppbmRleCAyYjRlOGJjNGJlZGNjNTIyZDIyMWIwMDNmODUxZTE0YzZi
YTY4YmFmLi5lMTZhNzM4NWQ2ZmUwOWEyN2NjMjBjZjFkZDUzYzQwNDM4NDM0ZDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi5wcmkKKysrIGIvU291cmNlL1dURi9XVEYucHJpCkBAIC0zOSw1
ICszOSw3IEBAIG1hYyB7CiAgICAgTElCUyArPSAtZnJhbWV3b3JrIEFwcEtpdAogfQogCitoYXZl
UXQoNSk6IGNvbnRhaW5zKFFUX0NPTkZJRyxhY2Nlc3NpYmlsaXR5KTogREVGSU5FUyArPSBIQVZF
X0FDQ0VTU0lCSUxJVFk9MQorCiAjIE1TVkMgaXMgbGFja2luZyBzdGRpbnQuaCBhcyB3ZWxsIGFz
IGludHR5cGVzLmguCiB3aW4zMi1tc3ZjKnx3aW4zMi1pY2N8d2luY2UqOiBJTkNMVURFUEFUSCAr
PSAkJFJPT1RfV0VCS0lUX0RJUi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IGE2OGFkODRmNDM1OWZkMTdmNjc1OTE3NDJmNDU4ZDc4MWMwM2YyODguLjM4OWI4
NmU4NmZiZTJiZTFlMTY1YjZhYzBiMzE4N2QxZTU0ZTE1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTMs
NiArNTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUhlYWRlckNvbnRhaW5lci5jcHAgXAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBcCisg
ICAgYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlUXQuY3BwIFwKICAgICBiaW5kaW5ncy9nZW5l
cmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcCBcCiAgICAgYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5n
U2VjdXJpdHkuY3BwIFwKICAgICBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuY3BwCkBAIC0yODE4LDYgKzI4MTksNyBAQCBIRUFERVJTICs9IFwKIAogU09VUkNFUyArPSBc
CiAgICAgYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwIFwKKyAgICBh
Y2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuY3BwIFwKICAgICBw
YWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwIFwKICAgICBwYWdlL3F0L0V2ZW50SGFuZGxlclF0
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNmb3JtYXRpb25NYXRyaXhRdC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQppbmRleCBmZTIxNTRjNTQ5OWJiMzI0NDU3NWVlMTA5OGU4Y2ZiNzFj
MjdhYjMwLi45Y2I5ODhiNDg2NjMyYzU2NzYwMmE5ZDgyYWNjMzg0NmZmYTMxMDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaQpAQCAtMjMsNiArMjMsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0Vf
RElSL01vZHVsZXMvd2ViZGF0YWJhc2UgXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL3dlYnNv
Y2tldHMgXAogICAgICQkU09VUkNFX0RJUi9hY2Nlc3NpYmlsaXR5IFwKKyAgICAkJFNPVVJDRV9E
SVIvYWNjZXNzaWJpbGl0eS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL2JpbmRpbmdzIFwKICAgICAk
JFNPVVJDRV9ESVIvYmluZGluZ3MvZ2VuZXJpYyBcCiAgICAgJCRTT1VSQ0VfRElSL2JyaWRnZSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGVR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGVRdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmNlMzU3ODE5MDhmNGQwOTViYWM0N2M1ZTU0MTU4MTM4ZWRmMzRjOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZVF0LmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lh
IFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmgiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmRldGFjaFdy
YXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQoreworICAgIFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gb2JqLT53cmFwcGVyKCk7CisgICAgb2JqLT5z
ZXRXcmFwcGVyKDApOworICAgIGRlbGV0ZSB3cmFwcGVyOworfQorCit2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQoreworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKG1fZG9jdW1lbnQsIG9iai0+YXhPYmplY3RJRCgpKTsKKyAgICBvYmotPnNldFdyYXBw
ZXIod3JhcHBlcik7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0
aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
QVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3Vz
ZWROb2RlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNo
ZTo6aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA0ZjJiNTMzM2E0ZTdlOGNhYWFkZDE2
YjExZmExZjMwZDVlYTBkOWVjLi44YzY2NTQ2ZjQ2NTc0Mzc1NjVkOWMyOGMwOGVmOTQ2ZDUzYTRi
OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eU9iamVjdCgpCiAgICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKICAgICAsIG1f
cm9sZShVbmtub3duUm9sZSkKICAgICAsIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUoRGVmYXVsdEJl
aGF2aW9yKQotI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NF
U1NJQklMSVRZKSkKKyNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEhBVkUo
QUNDRVNTSUJJTElUWSkpIHx8IChQTEFURk9STShRVCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkK
ICAgICAsIG1fd3JhcHBlcigwKQogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLCBtX2Rl
dGFjaGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAppbmRleCA3N2NiMWQ3Y2JjYjdjNDcxYjkxYTkzZGRmMjE2ZTI2ZWIz
YjFlMzMwLi5hMGExMmNmY2JlMDlmNmU3MWE2Yjg2MDhmNTQ0ZjRkY2EyNjUxNGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApA
QCAtNjcsNyArNjcsOSBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyOwogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCiAvLyBDaHJvbWl1bSBkb2Vz
IG5vdCB1c2UgYSB3cmFwcGVyLgogI2Vsc2UKK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOworfQogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc4MCw3ICs3ODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZl
bmNlZENsb3NlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICAKICNpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKFFUKQogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRX
cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKik7CiAjZWxpZiAhUExBVEZPUk0oQ0hS
T01JVU0pCkBAIC03OTEsNyArNzkzLDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogI2VuZGlm
Ci0gICAgCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQ
YXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KTsKICNlbHNlCkBAIC04NDQsNiArODQ2
LDggQEAgcHJvdGVjdGVkOgogICAgIEF0a09iamVjdCogbV93cmFwcGVyOwogI2VsaWYgUExBVEZP
Uk0oQ0hST01JVU0pCiAgICAgYm9vbCBtX2RldGFjaGVkOworI2VsaWYgUExBVEZPUk0oUVQpCisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIG1fd3JhcHBlcjsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5
T2JqZWN0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmls
aXR5T2JqZWN0UXQuY3BwCmluZGV4IDcyMzI2NDIzNzg5NjkyODc3ODI5OGEwZDkzMDI5NDY1ODQ2
Mzc5YTguLmJlYjVjZDVmNTI3OWQyNzExOTQ3M2EwMGE0OTk0ZmJlNGQyNDY1Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlP
YmplY3RRdC5jcHAKQEAgLTM0LDcgKzM0LDE3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPCiAg
ICAgaWYgKGlzTWVudUxpc3RQb3B1cCgpIHx8IGlzTWVudUxpc3RPcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIElnbm9yZU9iamVjdDsKIAotICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7CisgICAg
cmV0dXJuIEluY2x1ZGVPYmplY3Q7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqd3JhcHBlcikKK3sKKyAgICBtX3dy
YXBwZXIgPSB3cmFwcGVyOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNz
aWJpbGl0eU9iamVjdDo6d3JhcHBlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBlcjsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTk4OWNkN2FjMjAyMTExMjIzM2RjNzRlNjE4MWNjOTM1NjUwZGQxYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJRdC5jcHAKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gQWxv
bnpvCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogUG9ydGlvbnMgZnJvbSBNb3ppbGxhIGExMXksIGNvcHlyaWdodCBhcyBmb2xs
b3dzOgorICoKKyAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCisgKgor
ICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCisgKiBTdW4g
TWljcm9zeXN0ZW1zLCBJbmMuCisgKiBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRoZSBJbml0aWFsIERl
dmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAyMDAyCisgKiB0aGUgSW5pdGlhbCBEZXZlbG9wZXIu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmgiCisKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJR
V2ViUGFnZUNsaWVudC5oIgorCisjaW5jbHVkZSA8cWRlYnVnLmg+CisjaW5jbHVkZSA8cW9iamVj
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihQYXNzUmVmUHRyPERvY3VtZW50PiBkb2MsIEFY
SUQgaWQpCisgICAgOiBtX2RvY3VtZW50KGRvYyksIG1faWQoaWQpCit7CisgICAgUV9BU1NFUlQo
bV9kb2N1bWVudCk7CisgICAgUV9BU1NFUlQobV9pZCk7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOjp+QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoKQoreworfQorCitBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6YWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+
b2JqZWN0RnJvbUFYSUQobV9pZCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXI6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2RvY3VtZW50LT5heE9iamVjdENh
Y2hlKCktPmlzSURpblVzZShtX2lkKTsKK30KKworUUFjY2Vzc2libGU6OlJvbGUgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI6OnJvbGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJs
ZTo6Tm9Sb2xlOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI6OmNoaWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpKSB7CisgICAgICAgIGlmIChpbmRl
eCA8IDAgfHwgaW5kZXggPj0gb2JqLT5jaGlsZHJlbigpLnNpemUoKSkgeworICAgICAgICAgICAg
cVdhcm5pbmcoKSA8PCAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6IGludmFsaWQgY2hpbGQ6
IiA8PCBvYmogPDwgaW5kZXg7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gb2JqLT5jaGlsZHJlbigpLmF0KGluZGV4KS0+d3JhcHBlcigpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGls
ZENvdW50KCkgY29uc3QKK3sKKyAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gYWNj
ZXNzaWJpbGl0eU9iamVjdCgpKQorICAgICAgICByZXR1cm4gb2JqLT5jaGlsZHJlbigpLnNpemUo
KTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpp
bmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqIGNoaWxkSWZhY2UpIGNvbnN0
Cit7CisgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmplY3QoKSkgeworICAgICAgICBjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogY2hpbGRXcmFwcGVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqPihjaGlsZElmYWNlKTsKKyAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkT2JqZWN0ID0gY2hpbGRXcmFwcGVyLT5hY2Nlc3NpYmls
aXR5T2JqZWN0KCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCA9IGNoaWxkT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICAgICAgICAg
IGlmIChwYXJlbnRPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE9iamVjdC0+
Y2hpbGRyZW4oKS5maW5kKGNoaWxkT2JqZWN0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcjo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpwYXJlbnQoKSBjb25zdAoreworICAgIFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3QqIG9iaiA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKyAgICBpZiAoIW9iaikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSByb290IG9i
amVjdC4gSWYgc28sIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBGcmFtZSBhcyBwYXJlbnQKKyAgICBp
ZiAoIW9iai0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgJiYgb2JqLT5pc1Njcm9sbFZpZXcoKSkg
eworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkID0gb2JqLT5maXJzdENo
aWxkKCk7CisgICAgICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQtPmlzV2ViQXJlYSgp
KSB7CisgICAgICAgICAgICAvLyBXZSBzZWVtIHRvIGJlIHRoZSByb290IGFjY2Vzc2libGUsIGdl
dCB0aGUgRnJhbWUKKyAgICAgICAgICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBtX2RvY3Vt
ZW50LT52aWV3KCktPmhvc3RXaW5kb3coKTsKKyAgICAgICAgICAgIGlmIChob3N0V2luZG93KSB7
CisgICAgICAgICAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSBob3N0V2luZG93
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAocGFnZUNsaWVudCAm
JiBwYWdlQ2xpZW50LT5pc1FXaWRnZXRDbGllbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBR
U2NvcGVkUG9pbnRlcjxRQWNjZXNzaWJsZUludGVyZmFjZT4gd2ViVmlldyhRQWNjZXNzaWJsZTo6
cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHBhZ2VDbGllbnQtPm93bmVyV2lkZ2V0KCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgUVNjb3BlZFBvaW50ZXI8UUFjY2Vzc2libGVJbnRlcmZhY2U+IHdl
YlBhZ2Uod2ViVmlldy0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBRQWNjZXNzaWJs
ZUludGVyZmFjZSogd2ViRnJhbWUgPSB3ZWJQYWdlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHdlYkZyYW1lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgUV9BU1NFUlQob2JqLT5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7CisgICAgcmV0dXJuIG9iai0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCktPndyYXBwZXIoKTsKK30KKworUVN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcjo6dGV4dChRQWNjZXNzaWJsZTo6VGV4dCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK1FBY2Nlc3NpYmxlOjpTdGF0ZSBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6c3RhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpTdGF0ZSgpOworfQorCitRUmVjdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cmVjdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gUVJlY3QoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcjo6c2V0VGV4dChRQWNjZXNzaWJsZTo6VGV4dCwgY29uc3QgUVN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZmMyOTJmNzQ2NTRjMjVlYTM4M2FlMTU3NDdkMGY0NDdhODA3ZGQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlclF0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdF9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyUXRfaAorCisjaW5jbHVkZSA8QWNjZXNzaWJpbGl0eU9iamVjdC5oPgorI2luY2x1ZGUg
PERvY3VtZW50Lmg+CisjaW5jbHVkZSA8cWFjY2Vzc2libGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK2NsYXNzIFFXZWJGcmFtZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBY2Nlc3NpYmlsaXR5T2JqZWN0OworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciA6IHB1YmxpYyBRQWNjZXNzaWJsZUludGVyZmFjZSB7CisKK3B1YmxpYzoKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcihQYXNzUmVmUHRyPERvY3VtZW50PiwgQVhJRCk7CisgICAgfkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKCk7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dChRQWNjZXNzaWJsZTo6VGV4dCwgY29uc3QgUVN0
cmluZyYpOworICAgIHZpcnR1YWwgUUFjY2Vzc2libGU6OlN0YXRlIHN0YXRlKCkgY29uc3Q7Cisg
ICAgUUFjY2Vzc2libGU6OlJvbGUgcm9sZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBRUmVjdCBy
ZWN0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBwYXJlbnQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgdmlydHVh
bCBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBjb25zdDsKKyAgICB2aXJ0
dWFsIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZEF0KGludCB4LCBpbnQgeSkg
Y29uc3Q7CisKKyAgICB2aXJ0dWFsIFFPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVj
dCgpIGNvbnN0OworCisgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIEFYSUQg
bV9pZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkKaW5k
ZXggNWE4ZjRkZmUzMzcxMzVhMmMzYWYyNGNiMDBjMjNhNTUzZmM1NDU4Zi4uYmFhY2Q2YzNjYTlj
ZmU1YWExMTA3NDlhYTE2ZWVjYTVlYmVhN2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnByaQpAQCAtMyw2ICszLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgJCRQV0QvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwIFwKICAg
ICAkJFBXRC9xdC9BcGkvcXdlYnBhZ2UuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXcu
Y3BwIFwKKyAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBcCiAgICAgJCRQ
V0QvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0b3J5
LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgXApAQCAtMjQsNiArMjUs
NyBAQCBIRUFERVJTICs9IFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
LmggXAogICAgICQkUFdEL3F0L0FwaS9xd2VicGFnZS5oIFwKICAgICAkJFBXRC9xdC9BcGkvcXdl
YnZpZXcuaCBcCisgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmggXAogICAg
ICQkUFdEL3F0L0FwaS9xd2Vic2V0dGluZ3MuaCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0
b3J5aW50ZXJmYWNlLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2ViZGF0YWJhc2UuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2ViZnJhbWUuaCBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFtZS5oCmluZGV4IDQ4MWQwMTlhZTIxMTMxNjU5N2Zl
YzM1YjNlZGRkYzhkMTJlZmM2NTMuLmI5NTkzZTQwZDdiZDgxYzg4YmMzZmMwMjU3NTJiYjE3OTAz
ZjRjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFtZS5oCkBAIC0yMzEsNiAr
MjMxLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUUdyYXBoaWNzV2ViVmlldzsKICAg
ICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0
ZTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lQWNjZXNzaWJsZTsKICAgICBmcmllbmQgY2xh
c3MgUVdlYkZyYW1lUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oIGIvU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAppbmRleCA2YWEzMDNiNWNkOTk3Y2E0NWExZjNlMjMx
ZmQ1YzZhMmFlNDk2ZmEzLi5hOGJhMjY3NDRiYjNhZjEyYzQ5NjExODNiOGM5OGIxYWI5ZDVlMTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgKQEAgLTQyNiw2ICs0MjYsNyBA
QCBwcml2YXRlOgogICAgIFFXZWJQYWdlUHJpdmF0ZSAqZDsKIAogICAgIGZyaWVuZCBjbGFzcyBR
V2ViRnJhbWU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlQWNjZXNzaWJsZTsKICAgICBmcmll
bmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlldzsKICAg
ICBmcmllbmQgY2xhc3MgUVdlYlZpZXdQcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkv
cXdlYnZpZXcuY3BwCmluZGV4IGZjZmM5MzRiZTljNGQwZGFmNzVhMjQ1YzVmYmIyMjM4MTBiZmNl
ZTYuLmE3ZjBmOTQ1MzJlNTFiYjRjZmQ2MzJkZmEwMDg5Y2UxYjZlMTBhN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgog
I2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lk
Z2V0QXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFw
aS9xd2Vidmlld2FjY2Vzc2libGUuY3BwCmluZGV4IDdjYWUxOWExYTQyMjE0YmRhNDI5MWU4N2Fi
MTE0NmI3YjUzN2RhMjAuLmJhMzI3NWZjMjY3NzllZGUwYzE1NTc1ZDczMzc1YzA4OGY1ZDMwODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3YWNjZXNzaWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXdhY2Nlc3NpYmxl
LmNwcApAQCAtMjAsMTQgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
cXdlYnZpZXdhY2Nlc3NpYmxlX3AuaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmgiCiAjaW5jbHVkZSAicXdlYmZy
YW1lLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgog
I2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAKKwogUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZyYW1l
QWNjZXNzaWJsZShRV2ViRnJhbWUqIGZyYW1lKQogICAgIDogUUFjY2Vzc2libGVPYmplY3QoZnJh
bWUpCiB7CisgICAgaWYgKCFXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQorICAgICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmls
aXR5KCk7CiB9CiAKIFFXZWJGcmFtZSogUVdlYkZyYW1lQWNjZXNzaWJsZTo6ZnJhbWUoKSBjb25z
dApAQCAtNDcsMTEgKzUyLDI2IEBAIFFTdHJpbmcgUVdlYkZyYW1lQWNjZXNzaWJsZTo6dGV4dChR
QWNjZXNzaWJsZTo6VGV4dCkgY29uc3QKIAogaW50IFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxk
Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIFdlYkNvcmU6OkRvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lKCktPmQtPmZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5heE9iamVjdENhY2hlKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RBY2Nlc3NpYmxlID0gZG9jdW1lbnQt
PmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIHJldHVybiByb290QWNjZXNzaWJs
ZSA/IDEgOiAwOwogfQogCiBRQWNjZXNzaWJsZUludGVyZmFjZSogUVdlYkZyYW1lQWNjZXNzaWJs
ZTo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAogeworICAgIGlmIChpbmRleCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLT5kLT5m
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+YXhPYmpl
Y3RDYWNoZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3QqIHJvb3RBY2Nlc3NpYmxlID0gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+cm9v
dE9iamVjdCgpOworICAgIGlmIChyb290QWNjZXNzaWJsZSkKKyAgICAgICAgcmV0dXJuIHJvb3RB
Y2Nlc3NpYmxlLT53cmFwcGVyKCk7CisKICAgICByZXR1cm4gMDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181907</attachid>
            <date>2013-01-09 06:10:21 -0800</date>
            <delta_ts>2013-10-02 21:18:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77864-20130109150724.patch</filename>
            <type>text/plain</type>
            <size>25135</size>
            <attacher name="Frederik Gladhorn">gladhorn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxYmRiMjc1N2M1NjYzZTAwOTIwYmYw
MzI0ODJmYWY0Y2I1ZTM3MWYuLmY5MGJkMGZjYzVkNDI4ODlhYjk3YjJkNDI2Zjg2Yjc2NTI0Mzll
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjAgIEZyZWRlcmlrIEdsYWRob3JuICA8
Z2xhZGhvcm5Aa2RlLm9yZz4KKworICAgICAgICBbUXRdIEluaXRpYWwgaW1wbGVtZW50YXRpb24g
b2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSBhY2Nlc3NpYmlsaXR5IGluIFF0IHBvcnQuCisKKyAgICAg
ICAgKiBXVEYucHJpOiBFbmFibGUgYWNjZXNzaWJpbGl0eSBpZiBRdCBpcyBjb25maWd1cmVkIHdp
dGggYTExeS4KKwogMjAxMi0xMi0xOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG93IGNhY2hlZCBpbWFnZXMgdW5kZXIg
TWVtb3J5Q2FjaGUgLT4gSW1hZ2VzIHNlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYTljYWQzMDgxODFk
ZWRhM2RiMWY0OTZiNWI2ZTZhMDhjMWQ2Yjk1Li44YjUxODI3YWMyNzc3ZWFhODE4M2JjNmM1YmNi
MzYxYTIyZjQwZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMTItMjAgIEZy
ZWRlcmlrIEdsYWRob3JuICA8Z2xhZGhvcm5Aa2RlLm9yZz4KKworICAgICAgICBbUXRdIEluaXRp
YWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZXNzaWJpbGl0eSBzdXBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbWluaW1hbCBj
bGFzc2VzIHRvIGV4cG9zZSB0aGUgaGllcmFyY2h5IG9mIAorICAgICAgICBhY2Nlc3NpYmxlIG9i
amVjdHMgdXNpbmcgUXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZVF0LmNwcDogQWRkZWQuCisgICAgICAgIChBWE9iamVjdENh
Y2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAgKEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBw
ZXIpOgorICAgICAgICAoQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAoQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbik6CisgICAgICAgIChBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVt
ZW50Q2hhbmdlZCk6CisgICAgICAgIChBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRvQW5j
aG9yKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3F0L0Fj
Y2Vzc2liaWxpdHlPYmplY3RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6d3JhcHBlcik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6fkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OjphY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyOjpyb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOjpjaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcjo6Y2hpbGRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcjo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpjaGlsZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyOjpyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyOjpzZXRUZXh0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyOjpvYmplY3QpOgorCiAyMDEyLTEyLTE4ICBUb21teSBXaWRlbmZs
eWNodCAgPHRvbW15d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0pTQ10gUmVmYWN0b3Jpbmcg
Q29kZUdlbmVyYXRvckpTLnBtIHRvIHNpbXBsaWZ5IGFkZGluZyBzdXBwb3J0IGZvciBvdmVybG9h
ZGVkIGNvbnN0cnVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYWM0MDdlOGE4NjhlYjhlY2JiZGJjMmM5NmQ1
YzE1ZDRiYTczYjYxLi5jMzA2NWVmYWRjMjljNjdjODdiMjA0OTYxYTFjNWQ5YzQ2YzkwNmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBGcmVkZXJpayBHbGFkaG9ybiAg
PGdsYWRob3JuQGtkZS5vcmc+CisKKyAgICAgICAgW1F0XSBJbml0aWFsIGltcGxlbWVudGF0aW9u
IG9mIGFjY2Vzc2liaWxpdHkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3Vj
aCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlw
dGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5wcmk6CisKIDIwMTItMTIt
MTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRl
IGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggODI1ODA0MGJlMzU4NjU2ZTdlZjAyOTA0NTc2NjVlZjYyMmY3Mjc1NC4u
Yzk1OGNiNzQ0ZmEyYjBkZmI4NmViMWQxMTFlNjYxZWUzMjk0ZDg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0yMCAgRnJlZGVyaWsgR2xhZGhvcm4gIDxnbGFkaG9y
bkBrZGUub3JnPgorCisgICAgICAgIFtRdF0gSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhY2Nl
c3NpYmlsaXR5IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3ODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5hYmxlIG5hdmlnYXRpbmcgdG8gdGhlIHdlYmtpdCBhY2Nlc3NpYmxlcyBmcm9t
IHRoZSBmcmFtZS4KKworICAgICAgICAqIFdpZGdldEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAg
KiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXcuY3Bw
OgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlld2FjY2Vzc2libGUuY3BwOgorICAgICAgICAo
UVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZyYW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2Vi
RnJhbWVBY2Nlc3NpYmxlOjpjaGlsZENvdW50KToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2li
bGU6OmNoaWxkKToKKwogMjAxMi0xMi0xNyAgT3N3YWxkIEJ1ZGRlbmhhZ2VuICA8b3N3YWxkLmJ1
ZGRlbmhhZ2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIHJlbW92ZSBzb21lIHVubmVjZXNz
YXJ5IENPTkZJRyBhZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGE2OGFkODRmNDM1OWZkMTdmNjc1
OTE3NDJmNDU4ZDc4MWMwM2YyODguLjJkMmQyNGUzZDlhNjNkYTY0NTg4OTE5MDM2YzBkOTc0ZGI1
ZDA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDQsNiArNDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBcCiAgICAgYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5jcHAgXAorICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuY3BwIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAg
XAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgXAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcCBcCkBAIC01Myw2ICs1
NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
SGVhZGVyQ29udGFpbmVyLmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuY3BwIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIFwKKyAgICBh
Y2Nlc3NpYmlsaXR5L3F0L0FYT2JqZWN0Q2FjaGVRdC5jcHAgXAogICAgIGJpbmRpbmdzL2dlbmVy
aWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwIFwKICAgICBiaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdT
ZWN1cml0eS5jcHAgXAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5jcHAKQEAgLTEzMDksNiArMTMxMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmggXAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaCBcCisgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIFwKICAgICBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBcCiAgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuaCBcCkBAIC0yODE4LDYgKzI4MjEsNyBAQCBIRUFERVJTICs9IFwKIAogU09V
UkNFUyArPSBcCiAgICAgYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3Bw
IFwKKyAgICBhY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuY3Bw
IFwKICAgICBwYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwIFwKICAgICBwYWdlL3F0L0V2ZW50
SGFuZGxlclF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNmb3JtYXRpb25N
YXRyaXhRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQppbmRleCBmZTIxNTRjNTQ5OWJiMzI0NDU3NWVlMTA5
OGU4Y2ZiNzFjMjdhYjMwLi45Y2I5ODhiNDg2NjMyYzU2NzYwMmE5ZDgyYWNjMzg0NmZmYTMxMDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQpAQCAtMjMsNiArMjMsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAg
JCRTT1VSQ0VfRElSL01vZHVsZXMvd2ViZGF0YWJhc2UgXAogICAgICQkU09VUkNFX0RJUi9Nb2R1
bGVzL3dlYnNvY2tldHMgXAogICAgICQkU09VUkNFX0RJUi9hY2Nlc3NpYmlsaXR5IFwKKyAgICAk
JFNPVVJDRV9ESVIvYWNjZXNzaWJpbGl0eS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL2JpbmRpbmdz
IFwKICAgICAkJFNPVVJDRV9ESVIvYmluZGluZ3MvZ2VuZXJpYyBcCiAgICAgJCRTT1VSQ0VfRElS
L2JyaWRnZSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCA0ZjJiNTMzM2E0ZTdlOGNhYWFkZDE2YjExZmExZjMwZDVl
YTBkOWVjLi44YzY2NTQ2ZjQ2NTc0Mzc1NjVkOWMyOGMwOGVmOTQ2ZDUzYTRiOTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9i
amVjdCgpCiAgICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKICAgICAsIG1fcm9sZShVbmtub3du
Um9sZSkKICAgICAsIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUoRGVmYXVsdEJlaGF2aW9yKQotI2lm
IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkK
KyNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElU
WSkpIHx8IChQTEFURk9STShRVCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkKICAgICAsIG1fd3Jh
cHBlcigwKQogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLCBtX2RldGFjaGVkKGZhbHNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAppbmRleCA3N2NiMWQ3Y2JjYjdjNDcxYjkxYTkzZGRmMjE2ZTI2ZWIzYjFlMzMwLi5hMGEx
MmNmY2JlMDlmNmU3MWE2Yjg2MDhmNTQ0ZjRkY2EyNjUxNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNjcsNyArNjcs
OSBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
OwogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCiAvLyBDaHJvbWl1bSBkb2VzIG5vdCB1c2UgYSB3
cmFwcGVyLgogI2Vsc2UKK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyOworfQogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4MCw3
ICs3ODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICAKICNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKFFUKQogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKik7CiAjZWxpZiAhUExBVEZPUk0oQ0hST01JVU0pCkBAIC03
OTEsNyArNzkzLDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogI2VuZGlmCi0gICAgCisKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50KTsKICNlbHNlCkBAIC04NDQsNiArODQ2LDggQEAgcHJvdGVj
dGVkOgogICAgIEF0a09iamVjdCogbV93cmFwcGVyOwogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0p
CiAgICAgYm9vbCBtX2RldGFjaGVkOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIqIG1fd3JhcHBlcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BWE9iamVjdENhY2hlUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BWE9iamVjdENhY2hlUXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhYzFmYmNmZDQ2YWZmMjgwZjRkNGU0ZDc5OGRkN2NiMzlhM2E4YzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FYT2JqZWN0Q2FjaGVRdC5j
cHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBEaWdpYSBQbGMg
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdC5oIgorI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKwordm9pZCBB
WE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sK
KyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IG9iai0+
d3JhcHBlcigpOworICAgIG9iai0+c2V0V3JhcHBlcigwKTsKKyAgICBkZWxldGUgd3JhcHBlcjsK
K30KKwordm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IG5l
dyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihtX2RvY3VtZW50LCBvYmotPmF4T2JqZWN0SUQo
KSk7CisgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIpOworfQorCit2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFY
Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpm
cmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
LCBBWExvYWRpbmdFdmVudCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3Vz
ZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9k
ZSogYW5jaG9yTm9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYgLy8g
SEFWRShBQ0NFU1NJQklMSVRZKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RRdC5jcHAKaW5kZXggNzIzMjY0MjM3ODk2
OTI4Nzc4Mjk4YTBkOTMwMjk0NjU4NDYzNzlhOC4uNTU5ZWZhMWVmNjI2ZmViNWYzMThiOGFjZmUz
Y2RhZGU4NjM4NzkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0LmNwcApAQCAtMzQsNyArMzQsMTcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5UGxhdGZvcm1JbmNsdWRlc08KICAgICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwgaXNNZW51
TGlzdE9wdGlvbigpKQogICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OwogCi0gICAgcmV0dXJu
IERlZmF1bHRCZWhhdmlvcjsKKyAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsKK30KKwordm9pZCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiB3cmFwcGVyKQoreworICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7Cit9CisKK0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV93cmFwcGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTg5Y2Q3YWMyMDIxMTEyMjMz
ZGM3NGU2MTgxY2M5MzU2NTBkZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmNwcApAQCAtMCww
ICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEphbiBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwg
MjAxMSwgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBQb3J0aW9ucyBmcm9tIE1vemlsbGEg
YTExeSwgY29weXJpZ2h0IGFzIGZvbGxvd3M6CisgKgorICogVGhlIE9yaWdpbmFsIENvZGUgaXMg
bW96aWxsYS5vcmcgY29kZS4KKyAqCisgKiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9y
aWdpbmFsIENvZGUgaXMKKyAqIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KKyAqIFBvcnRpb25zIGNy
ZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDIKKyAq
IHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaCIKKworI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxxZGVi
dWcuaD4KKyNpbmNsdWRlIDxxb2JqZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+IGRvYywgQVhJRCBpZCkKKyAgICA6IG1fZG9jdW1lbnQoZG9jKSwgbV9p
ZChpZCkKK3sKKyAgICBRX0FTU0VSVChtX2RvY3VtZW50KTsKKyAgICBRX0FTU0VSVChtX2lkKTsK
K30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6On5BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcigpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyOjphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb2N1
bWVudC0+YXhPYmplY3RDYWNoZSgpLT5vYmplY3RGcm9tQVhJRChtX2lkKTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+aXNJRGluVXNlKG1faWQpOworfQorCitRQWNj
ZXNzaWJsZTo6Um9sZSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6cm9sZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpOb1JvbGU7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJm
YWNlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAor
eworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBhY2Nlc3NpYmlsaXR5T2JqZWN0
KCkpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBvYmotPmNoaWxkcmVuKCku
c2l6ZSgpKSB7CisgICAgICAgICAgICBxV2FybmluZygpIDw8ICJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcjogaW52YWxpZCBjaGlsZDoiIDw8IG9iaiA8PCBpbmRleDsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvYmotPmNoaWxkcmVuKCkuYXQoaW5k
ZXgpLT53cmFwcGVyKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIGlmIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmogPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkpCisgICAgICAgIHJldHVy
biBvYmotPmNoaWxkcmVuKCkuc2l6ZSgpOworICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVy
ZmFjZSogY2hpbGRJZmFjZSkgY29uc3QKK3sKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCgp
KSB7CisgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBjaGlsZFdyYXBw
ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcio+KGNoaWxk
SWZhY2UpOworICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmplY3QgPSBj
aGlsZFdyYXBwZXItPmFjY2Vzc2liaWxpdHlPYmplY3QoKSkgeworICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gY2hpbGRPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOworICAgICAgICAgICAgaWYgKHBhcmVudE9iamVjdCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcGFyZW50T2JqZWN0LT5jaGlsZHJlbigpLmZpbmQoY2hpbGRPYmplY3QpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworUUFjY2Vzc2libGVJbnRlcmZhY2Uq
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitRQWNjZXNzaWJs
ZUludGVyZmFjZSogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI6OnBhcmVudCgpIGNvbnN0Cit7
CisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gYWNjZXNzaWJpbGl0eU9i
amVjdCgpOworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgdGhlIHJvb3Qgb2JqZWN0LiBJZiBzbywgd2UgbmVlZCB0byByZXR1cm4gdGhl
IEZyYW1lIGFzIHBhcmVudAorICAgIGlmICghb2JqLT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSAm
JiBvYmotPmlzU2Nyb2xsVmlldygpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZp
cnN0Q2hpbGQgPSBvYmotPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKGZpcnN0Q2hpbGQgJiYg
Zmlyc3RDaGlsZC0+aXNXZWJBcmVhKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIHNlZW0gdG8gYmUg
dGhlIHJvb3QgYWNjZXNzaWJsZSwgZ2V0IHRoZSBGcmFtZQorICAgICAgICAgICAgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdyA9IG1fZG9jdW1lbnQtPnZpZXcoKS0+aG9zdFdpbmRvdygpOworICAgICAg
ICAgICAgaWYgKGhvc3RXaW5kb3cpIHsKKyAgICAgICAgICAgICAgICBRV2ViUGFnZUNsaWVudCog
cGFnZUNsaWVudCA9IGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICAg
ICAgICAgIGlmIChwYWdlQ2xpZW50ICYmIHBhZ2VDbGllbnQtPmlzUVdpZGdldENsaWVudCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIFFTY29wZWRQb2ludGVyPFFBY2Nlc3NpYmxlSW50ZXJmYWNl
PiB3ZWJWaWV3KFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UocGFnZUNsaWVu
dC0+b3duZXJXaWRnZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBRU2NvcGVkUG9pbnRlcjxR
QWNjZXNzaWJsZUludGVyZmFjZT4gd2ViUGFnZSh3ZWJWaWV3LT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiB3ZWJGcmFtZSA9IHdlYlBhZ2UtPmNo
aWxkKDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2ViRnJhbWU7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBRX0FTU0VSVChvYmotPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKTsKKyAgICByZXR1
cm4gb2JqLT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+d3JhcHBlcigpOworfQorCitRU3RyaW5n
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjp0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKwor
UUFjY2Vzc2libGU6OlN0YXRlIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpzdGF0ZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0
YXRlKCk7Cit9CisKK1FSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpyZWN0KCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBRUmVjdCgpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOjpzZXRUZXh0KFFBY2Nlc3NpYmxlOjpUZXh0
LCBjb25zdCBRU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyUXQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1YTgwMzg0MTgyMThhODkzYTQzNGQz
NmVkM2UxZTY1NWJhYTliNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L3F0L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyUXQuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0X2gKKyNkZWZp
bmUgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJRdF9oCisKKyNpbmNsdWRlIDxBY2Nlc3NpYmls
aXR5T2JqZWN0Lmg+CisjaW5jbHVkZSA8RG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxxYWNjZXNzaWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciA6IHB1YmxpYyBRQWNjZXNzaWJsZUludGVyZmFjZSB7CisKK3B1YmxpYzoKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcihQYXNzUmVmUHRyPERvY3VtZW50PiwgQVhJRCk7CisgICAg
fkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKCk7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgUVN0cmluZyB0ZXh0KFFBY2Nlc3NpYmxlOjpUZXh0KSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dChRQWNjZXNzaWJsZTo6VGV4dCwgY29uc3Qg
UVN0cmluZyYpOworICAgIHZpcnR1YWwgUUFjY2Vzc2libGU6OlN0YXRlIHN0YXRlKCkgY29uc3Q7
CisgICAgUUFjY2Vzc2libGU6OlJvbGUgcm9sZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBRUmVj
dCByZWN0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBwYXJl
bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgdmly
dHVhbCBRQWNjZXNzaWJsZUludGVyZmFjZSogY2hpbGQoaW50IGluZGV4KSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZEF0KGludCB4LCBpbnQg
eSkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFFPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9i
amVjdCgpIGNvbnN0OworCisgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIEFY
SUQgbV9pZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC5wcmkK
aW5kZXggNWE4ZjRkZmUzMzcxMzVhMmMzYWYyNGNiMDBjMjNhNTUzZmM1NDU4Zi4uYmFhY2Q2YzNj
YTljZmU1YWExMTA3NDlhYTE2ZWVjYTVlYmVhN2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnByaQpAQCAtMyw2ICszLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgJCRQV0QvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwIFwK
ICAgICAkJFBXRC9xdC9BcGkvcXdlYnBhZ2UuY3BwIFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYnZp
ZXcuY3BwIFwKKyAgICAkJFBXRC9xdC9BcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcCBcCiAgICAg
JCRQV0QvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJoaXN0
b3J5LmNwcCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgXApAQCAtMjQsNiAr
MjUsNyBAQCBIRUFERVJTICs9IFwKICAgICAkJFBXRC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2VicGFnZS5oIFwKICAgICAkJFBXRC9xdC9BcGkv
cXdlYnZpZXcuaCBcCisgICAgJCRQV0QvcXQvQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmggXAog
ICAgICQkUFdEL3F0L0FwaS9xd2Vic2V0dGluZ3MuaCBcCiAgICAgJCRQV0QvcXQvQXBpL3F3ZWJo
aXN0b3J5aW50ZXJmYWNlLmggXAogICAgICQkUFdEL3F0L0FwaS9xd2ViZGF0YWJhc2UuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2ViZnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFtZS5oCmluZGV4IDQ4MWQwMTlhZTIxMTMxNjU5
N2ZlYzM1YjNlZGRkYzhkMTJlZmM2NTMuLmI5NTkzZTQwZDdiZDgxYzg4YmMzZmMwMjU3NTJiYjE3
OTAzZjRjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFtZS5oCkBAIC0yMzEs
NiArMjMxLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUUdyYXBoaWNzV2ViVmlldzsK
ICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJp
dmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lQWNjZXNzaWJsZTsKICAgICBmcmllbmQg
Y2xhc3MgUVdlYkZyYW1lUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oIGIvU291cmNlL1dl
YktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAppbmRleCA2YWEzMDNiNWNkOTk3Y2E0NWExZjNl
MjMxZmQ1YzZhMmFlNDk2ZmEzLi5hOGJhMjY3NDRiYjNhZjEyYzQ5NjExODNiOGM5OGIxYWI5ZDVl
MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgKQEAgLTQyNiw2ICs0MjYs
NyBAQCBwcml2YXRlOgogICAgIFFXZWJQYWdlUHJpdmF0ZSAqZDsKIAogICAgIGZyaWVuZCBjbGFz
cyBRV2ViRnJhbWU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlQWNjZXNzaWJsZTsKICAgICBm
cmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlldzsK
ICAgICBmcmllbmQgY2xhc3MgUVdlYlZpZXdQcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRB
cGkvcXdlYnZpZXcuY3BwCmluZGV4IGZjZmM5MzRiZTljNGQwZGFmNzVhMjQ1YzVmYmIyMjM4MTBi
ZmNlZTYuLmE3ZjBmOTQ1MzJlNTFiYjRjZmQ2MzJkZmEwMDg5Y2UxYjZlMTBhN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgogCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZS5o
IgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0QXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdl
dEFwaS9xd2Vidmlld2FjY2Vzc2libGUuY3BwCmluZGV4IDdjYWUxOWExYTQyMjE0YmRhNDI5MWU4
N2FiMTE0NmI3YjUzN2RhMjAuLmJhMzI3NWZjMjY3NzllZGUwYzE1NTc1ZDczMzc1YzA4OGY1ZDMw
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3YWNjZXNz
aWJsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXdhY2Nlc3Np
YmxlLmNwcApAQCAtMjAsMTQgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAicXdlYnZpZXdhY2Nlc3NpYmxlX3AuaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclF0LmgiCiAjaW5jbHVkZSAicXdl
YmZyYW1lLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5o
IgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAKKwogUVdlYkZyYW1lQWNjZXNzaWJsZTo6UVdlYkZy
YW1lQWNjZXNzaWJsZShRV2ViRnJhbWUqIGZyYW1lKQogICAgIDogUUFjY2Vzc2libGVPYmplY3Qo
ZnJhbWUpCiB7CisgICAgaWYgKCFXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpKQorICAgICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3Np
YmlsaXR5KCk7CiB9CiAKIFFXZWJGcmFtZSogUVdlYkZyYW1lQWNjZXNzaWJsZTo6ZnJhbWUoKSBj
b25zdApAQCAtNDcsMTEgKzUyLDI2IEBAIFFTdHJpbmcgUVdlYkZyYW1lQWNjZXNzaWJsZTo6dGV4
dChRQWNjZXNzaWJsZTo6VGV4dCkgY29uc3QKIAogaW50IFFXZWJGcmFtZUFjY2Vzc2libGU6OmNo
aWxkQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIFdlYkNvcmU6OkRvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lKCktPmQtPmZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5heE9iamVjdENhY2hlKCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RBY2Nlc3NpYmxlID0gZG9jdW1l
bnQtPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIHJldHVybiByb290QWNjZXNz
aWJsZSA/IDEgOiAwOwogfQogCiBRQWNjZXNzaWJsZUludGVyZmFjZSogUVdlYkZyYW1lQWNjZXNz
aWJsZTo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAogeworICAgIGlmIChpbmRleCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLT5k
LT5mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+YXhP
YmplY3RDYWNoZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3QqIHJvb3RBY2Nlc3NpYmxlID0gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+
cm9vdE9iamVjdCgpOworICAgIGlmIChyb290QWNjZXNzaWJsZSkKKyAgICAgICAgcmV0dXJuIHJv
b3RBY2Nlc3NpYmxlLT53cmFwcGVyKCk7CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCAyYTBlYjQwNTEyMTZhNWNiYzhm
NThhYmJlYmI2ZjkzMWE4NzA1OTcxLi5lOGZhMTJkNTVjOWViY2ZmZGZhMDZlM2M2MDg2ODc1MmVm
ZDkyNTM5IDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAt
MTIwLDYgKzEyMCwxMSBAQCBkZWZpbmVUZXN0KGRldGVjdEZlYXR1cmVzKSB7CiAgICAgICAgIFdF
QktJVF9DT05GSUcgKz0gdmlkZW8gdXNlX3F0X211bHRpbWVkaWEKICAgICB9CiAKKyAgICAjIEFj
Y2Vzc2liaWxpdHkgc3VwcG9ydAorICAgIGNvbnRhaW5zKFFUX0NPTkZJRyxhY2Nlc3NpYmlsaXR5
KSB7CisgICAgICAgIFdFQktJVF9DT05GSUcgKz0gaGF2ZV9hY2Nlc3NpYmlsaXR5CisgICAgfQor
CiAgICAgIyBUcnkgdG8gdXNlIGFuIHN5c3RlbSB3aWRlIFNRbGl0ZSBpbnN0YWxsYXRpb24KICAg
ICBpZighY29udGFpbnMoUVRfQ09ORklHLCBuby1wa2ctY29uZmlnKTpwYWNrYWdlc0V4aXN0KCJz
cWxpdGUzIikpfG1hYyB7CiAgICAgICAgIFdFQktJVF9DT05GSUcgKz0gaGF2ZV9zcWxpdGUzCg==
</data>
<flag name="commit-queue"
          id="199710"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>