<?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>26199</bug_id>
          
          <creation_ts>2009-06-04 16:52:11 -0700</creation_ts>
          <short_desc>Implement a reflective XSS filter</short_desc>
          <delta_ts>2009-06-19 01:13:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>emacemac7</cc>
    
    <cc>ifette</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>scarybeasts</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124410</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-04 16:52:11 -0700</bug_when>
    <thetext>We should implement a filter for reflected XSS.  The goal of the filter is to prevent an attacker from exploiting some common kinds of reflected XSS vulnerabilities in web sites.

A student I&apos;m working with at Berkeley is working on one that improves on the IE8 filter in a number of ways.  I&apos;ll update this bug with more information as it becomes available.

What&apos;s the best way to measure the performance impact of the filter?  We can obviously run SunSpider, but that&apos;s probably measuring the wrong thing.  Do we have something like page cycler that we can try the patch on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125023</commentid>
    <comment_count>1</comment_count>
      <attachid>31107</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-09 15:16:21 -0700</bug_when>
    <thetext>Created attachment 31107
Prototype of XSS Auditor

Initial prototype of XSS Auditor. The patch does not include the build files as I was unclear how to modify the command-line build files. It does build using when the files are added to the WebCore Xcode project file and built.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125024</commentid>
    <comment_count>2</comment_count>
      <attachid>31108</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-09 15:22:39 -0700</bug_when>
    <thetext>Created attachment 31108
Prototype of XSS Auditor

Copied and pasted header twice. Fixed in this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125025</commentid>
    <comment_count>3</comment_count>
      <attachid>31109</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-09 15:29:58 -0700</bug_when>
    <thetext>Created attachment 31109
SunSpider comparison

The XSS Auditor does not appear to affect SunSpider performance. From = disabled XSS Auditor, To = enabled XSS Auditor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125085</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-09 21:28:55 -0700</bug_when>
    <thetext>What Computer/OS were those numbers taken with.  The overall number seems quite high.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125090</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-09 21:50:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; What Computer/OS were those numbers taken with.  The overall number seems quite
&gt; high.
&gt; 

2.6 Ghz MacBook Pro (MacBookPro4,1) running Mac OS 10.5.6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125092</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-09 22:08:08 -0700</bug_when>
    <thetext>Are you running the computer under any kind of non-normal settings.  Rosetta?  Inside a VM?  These numbers are dramatically slower than they should be.  It might be a good idea to test these numbers on another machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125093</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-09 22:11:54 -0700</bug_when>
    <thetext>Another idea!  Are you testing on a debug build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125112</commentid>
    <comment_count>8</comment_count>
      <attachid>31126</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-10 01:52:49 -0700</bug_when>
    <thetext>Created attachment 31126
Cleaned up patch (disabled by default)

Here&apos;s a version cleaned up to (hopefully!) match WebKit style.  The XSSAuditor is disabled by default.

Basically, I&apos;d to land this patch (and maybe some follow ups) so we can experiment with this feature behind a command line flag in Chromium and measure things like false positives via the Dev channel.

Once we&apos;ve gathered enough data, we can revisit the issue of whether to turn this on by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125113</commentid>
    <comment_count>9</comment_count>
      <attachid>31127</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-10 02:06:18 -0700</bug_when>
    <thetext>Created attachment 31127
Patch (disabled by default)

Made some changes suggested by Eric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125133</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-10 06:40:16 -0700</bug_when>
    <thetext>Is it possible to make tests for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125148</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-10 10:02:32 -0700</bug_when>
    <thetext>&gt; Is it possible to make tests for this?

I&apos;m not sure we have a way to test something that&apos;s disabled by default.  We&apos;d need Bug 20534 to be fixed first.  Dan Bates has put together a manual test suite:

http://webblaze.org/dbates/

We could also hack around the issue by letting a site opt-in to the filter using an experimental header, like X-Enable-WebKit-XSS-Auditor: true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125176</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-10 11:40:46 -0700</bug_when>
    <thetext>The best way to test something that is disabled by default is to add method to LayoutTestController that turns it on via WebPreferences.  I believe we do this for some tests of private browsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125200</commentid>
    <comment_count>13</comment_count>
      <attachid>31127</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-10 12:40:08 -0700</bug_when>
    <thetext>Comment on attachment 31127
Patch (disabled by default)

Ok.  I&apos;ll give that a try and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125286</commentid>
    <comment_count>14</comment_count>
      <attachid>31154</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-11 02:21:06 -0700</bug_when>
    <thetext>Created attachment 31154
Patch (disabled by default, with a test)

I added a simple test.  We can add more tests as we iterate on this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125801</commentid>
    <comment_count>15</comment_count>
      <attachid>31154</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-14 12:29:51 -0700</bug_when>
    <thetext>Comment on attachment 31154
Patch (disabled by default, with a test)

&gt; @@ -132,6 +133,9 @@ public:
&gt;      NPObject* createScriptObjectForPluginElement(HTMLPlugInElement*);
&gt;      NPObject* windowScriptNPObject();
&gt;  #endif
&gt; +    
&gt; +    // Returns the XSSAuditor associated with this ScriptController.
&gt; +    XSSAuditor* activeXSSAuditor() { return m_XSSAuditor.get(); }

Why activeXSSAuditor?  Will there be more than one per scriptController in the future?

&gt;  
&gt;  private:
&gt;      void initScriptIfNeeded()
&gt; @@ -164,6 +168,9 @@ private:
&gt;  #if PLATFORM(MAC)
&gt;      RetainPtr&lt;WebScriptObject&gt; m_windowScriptObject;
&gt;  #endif
&gt; +    
&gt; +    // The XSSAuditor associated with this ScriptController.
&gt; +    OwnPtr&lt;XSSAuditor&gt; m_XSSAuditor;

Does the auditor have to be a pointer here? 

&gt;  
&gt;      class Tokenizer {
&gt;      public:
&gt; @@ -58,11 +59,19 @@ namespace WebCore {
&gt;          virtual void executeScriptsWaitingForStylesheets() {}
&gt;  
&gt;          virtual bool isHTMLTokenizer() const { return false; }
&gt; +        
&gt; +        // Returns the XSSAuditor associated with this tokenizer.
&gt; +        XSSAuditor* activeXSSAuditor() const { return m_XSSAuditor; }
&gt; +        
&gt; +        // Associates the specified XSSAuditor with this tokenizer.
&gt; +        // @param auditor the XSSAuditor to associate with this tokenizer.

We don&apos;t use @param syntax.  In fact, neither of these comments are really necessary as the code is self explanatory.

&gt; +        void setXSSAuditor(XSSAuditor* auditor) { m_XSSAuditor = auditor; }
&gt;  
&gt;      protected:
&gt;          Tokenizer(bool viewSourceMode = false) 
&gt;              : m_parserStopped(false)
&gt;              , m_inViewSourceMode(viewSourceMode)
&gt; +            , m_XSSAuditor(0)
&gt;          {
&gt;          }
&gt;  
&gt; +namespace WebCore {
&gt; +  
&gt; +// This method also appears in file ResourceResponseBase.cpp.
&gt; +static bool isControlCharacter(UChar c)
&gt; +{
&gt; +   return c &lt; &apos; &apos; || c == 127;
&gt; +}
&gt; +  
&gt; +XSSAuditor::XSSAuditor(Frame* frame)
&gt; +    : m_isEnabled(false)
&gt; +    , m_frame(frame)
&gt; +{
&gt; +    if (Settings* settings = frame-&gt;settings())
&gt; +        m_isEnabled = settings-&gt;xssAuditorEnabled();
&gt; +}
&gt; +
&gt; +XSSAuditor::~XSSAuditor()
&gt; +{
&gt; +}
&gt; +  
&gt; +bool XSSAuditor::canEvaluate(const ScriptSourceCode&amp; sourceCode) const
&gt; +{
&gt; +    if (!m_isEnabled)
&gt; +        return true;
&gt; +    
&gt; +    return canEvaluate(String(sourceCode.jsSourceCode().data(), sourceCode.jsSourceCode().length()));
&gt; +}
&gt; +  
&gt; +bool XSSAuditor::canEvaluate(const String&amp; sourceCode) const
&gt; +{
&gt; +    if (!m_isEnabled)
&gt; +        return true;
&gt; +    
&gt; +    if (findInRequest(sourceCode)) {
&gt; +        String consoleMessage = &quot;Refused to execute a JavaScript script. Source code of script found within request.\n&quot;;

The message should be a static.

&gt; +        m_frame-&gt;domWindow()-&gt;console()-&gt;addMessage(JSMessageSource, ErrorMessageLevel, consoleMessage, 1, String());
&gt; +        return false;
&gt; +    }
&gt; +    return true;
&gt; +}
&gt; +
&gt; +bool XSSAuditor::canCreateInlineEventListener(const String&amp;, const String&amp; code) const
&gt; +{
&gt; +    if (!m_isEnabled)
&gt; +        return true;
&gt; +    
&gt; +    return canEvaluate(code);
&gt; +}
&gt; +
&gt; +bool XSSAuditor::canLoadExternalScriptFromSrc(const String&amp; url) const
&gt; +{
&gt; +    if (!m_isEnabled)
&gt; +        return true;
&gt; +  
&gt; +    if (findInRequest(url)) {
&gt; +        String consoleMessage = &quot;Refused to execute a JavaScript script. Source code of script found within request.\n&quot;;

The message should be a static.

&gt; +        m_frame-&gt;domWindow()-&gt;console()-&gt;addMessage(JSMessageSource, ErrorMessageLevel, consoleMessage, 1, String());
&gt; +        return false;
&gt; +    }
&gt; +    return true;
&gt; +}
&gt; +
&gt; +bool XSSAuditor::canLoadObject(const String&amp; url) const
&gt; +{
&gt; +    if (!m_isEnabled)
&gt; +        return true;
&gt; +
&gt; +    if (findInRequest(url)) {
&gt; +        String consoleMessage = &quot;Refused to execute a JavaScript script. Source code of script found within request&quot;;

The message should be a static.

&gt; +        m_frame-&gt;domWindow()-&gt;console()-&gt;addMessage(OtherMessageSource, ErrorMessageLevel, consoleMessage, 1, String());    
&gt; +        return false;
&gt; +    }
&gt; +    return true;
&gt; +}
&gt; +
&gt; +// static

This comment is not necessary.

&gt; +String XSSAuditor::decodeURL(const String&amp; str, const TextEncoding&amp; encoding, bool allowNullCharacters)
&gt; +{
&gt; +    String result;
&gt; +    String url = str;
&gt; +    
&gt; +    url.replace(&apos;+&apos;, &apos; &apos;);
&gt; +    result = decodeURLEscapeSequences(url, encoding);
&gt; +    return (allowNullCharacters)? result : result.removeCharacters(&amp;isControlCharacter);

Missing space after (allowNullCharacters).  The parens are not needed as well.


&gt; +    // The XSSAuditor class is used to prevent type 1 cross-site scripting
&gt; +    // vulnerabilites (also known as reflected vulnerabilities).
&gt; +    //
&gt; +    // More specifically, the XSSAuditor class decides whether the execution of
&gt; +    // a script is to be allowed or denied based on the content of any
&gt; +    // user-submitted data, including:
&gt; +    //
&gt; +    // * the query string of the URL.
&gt; +    // * the HTTP-POST data.
&gt; +    //
&gt; +    // If the source code of a script resembles any user-submitted data then it
&gt; +    // is denied execution.
&gt; +    //
&gt; +    // When you instantiate the XSSAuditor you must specify the {@link Frame}
&gt; +    // of the page that you wish to audit.
&gt; +    //
&gt; +    // Bindings
&gt; +    //
&gt; +    // An XSSAuditor is instantiated within the contructor of a
&gt; +    // ScriptController object and passed the Frame the script originated. The
&gt; +    // ScriptController calls back to the XSSAuditor to determine whether a
&gt; +    // JavaScript script is safe to execute before executing it. The following
&gt; +    // methods call into XSSAuditor:
&gt; +    //
&gt; +    // * ScriptController::evaluate - used to evaluate JavaScript scripts.
&gt; +    // * ScriptController::createInlineEventListener - used to create JavaScript event handlers.
&gt; +    // * HTMLTokenizer#scriptHandler - used to load external JavaScript scripts.

The use of # is inconsistent with the rest of the comment.

&gt; +    // 
&gt; +    class XSSAuditor {
&gt; +    public:
&gt; +        // Creates a new XSSAuditor object that is associated with the specified frame.
&gt; +        // @param frame the frame to associate with this auditor.

We don&apos;t use @param syntax.  In fact, this comment is not necessary.


Overall this looks great, but I want to defer r+ing this until we have some performance analysis done on it, even it only in the disabled state.  Sunspider and some form of plt testing would be sufficient I think.  Though I would also like to see some targeted performance tests of the cases where the auditor will be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125810</commentid>
    <comment_count>16</comment_count>
      <attachid>31269</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 13:50:07 -0700</bug_when>
    <thetext>Created attachment 31269
updated patch

(In reply to comment #15)
&gt; Why activeXSSAuditor?  Will there be more than one per scriptController in the
&gt; future?

Fixed.

&gt; &gt; +    // The XSSAuditor associated with this ScriptController.
&gt; &gt; +    OwnPtr&lt;XSSAuditor&gt; m_XSSAuditor;
&gt; 
&gt; Does the auditor have to be a pointer here? 

I make this a pointer because I didn&apos;t want to include XSSAuditor.h here because ScriptController.h is included by the entire world (including outside of WebCore).

&gt; We don&apos;t use @param syntax.  In fact, neither of these comments are really
&gt; necessary as the code is self explanatory.

Fixed.

&gt; The message should be a static.

Fixed x3.

&gt; &gt; +// static
&gt; 
&gt; This comment is not necessary.

Fixed.

&gt; Missing space after (allowNullCharacters).  The parens are not needed as well.

Fixed.

&gt; The use of # is inconsistent with the rest of the comment.

Fixed.

&gt; We don&apos;t use @param syntax.  In fact, this comment is not necessary.

Fixed.

&gt; Overall this looks great, but I want to defer r+ing this until we have some
&gt; performance analysis done on it, even it only in the disabled state.

You mean you&apos;d like to measure the performance impact when its enabled, right?

&gt; Sunspider and some form of plt testing would be sufficient I think.

Sunspider I can do.  How do I do plt testing?

Thanks for reviewing the patch.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125812</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-14 13:59:32 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; Overall this looks great, but I want to defer r+ing this until we have some
&gt; &gt; performance analysis done on it, even it only in the disabled state.
&gt; 
&gt; You mean you&apos;d like to measure the performance impact when its enabled, right?

Ideally we would measure both, but I was actually just suggesting that we measure it while it is disabled to begin with, since that is how it is going to be landed.

&gt; 
&gt; &gt; Sunspider and some form of plt testing would be sufficient I think.
&gt; 
&gt; Sunspider I can do.  How do I do plt testing?

PLT testing unfortunately requires internal resources, so I will probably have to do it.  I will try and get that done on Monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125813</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 14:06:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Ideally we would measure both, but I was actually just suggesting that we
&gt; measure it while it is disabled to begin with, since that is how it is going to
&gt; be landed.

Ok.  I&apos;m building a release version now.  I&apos;ll try to do the sunspider measurements today.

&gt; &gt; Sunspider I can do.  How do I do plt testing?
&gt; 
&gt; PLT testing unfortunately requires internal resources, so I will probably have
&gt; to do it.  I will try and get that done on Monday.

Thanks.  :)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125833</commentid>
    <comment_count>19</comment_count>
      <attachid>31270</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 15:22:41 -0700</bug_when>
    <thetext>Created attachment 31270
updated patch

Oops.  Forgot DEFINE_STATIC_LOCAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125860</commentid>
    <comment_count>20</comment_count>
      <attachid>31274</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 19:29:18 -0700</bug_when>
    <thetext>Created attachment 31274
Sunspider (before patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125861</commentid>
    <comment_count>21</comment_count>
      <attachid>31275</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 19:29:55 -0700</bug_when>
    <thetext>Created attachment 31275
Sunspider (after patch, XSSAuditor disabled)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125862</commentid>
    <comment_count>22</comment_count>
      <attachid>31276</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 19:30:35 -0700</bug_when>
    <thetext>Created attachment 31276
Sunspider (after patch, XSSAuditor enabled)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125863</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-14 19:31:30 -0700</bug_when>
    <thetext>Looks like there is no statistically significant impact on Sunsider from the XSSAuditor (either enabled or disabled)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126742</commentid>
    <comment_count>24</comment_count>
      <attachid>31270</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-18 11:47:20 -0700</bug_when>
    <thetext>Comment on attachment 31270
updated patch

Perf seemed fine.  r=me!  Hot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126903</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-19 00:09:31 -0700</bug_when>
    <thetext>Will land.  Might be tricky without try bots.  Blind editing makefiles for the win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126913</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-19 01:13:52 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/http/tests/security/xssAuditor
Adding         LayoutTests/http/tests/security/xssAuditor/resources
Adding         LayoutTests/http/tests/security/xssAuditor/resources/echo-intertag.php
Adding         LayoutTests/http/tests/security/xssAuditor/script-tag-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/script-tag.html
Sending        WebCore/ChangeLog
Sending        WebCore/GNUmakefile.am
Sending        WebCore/WebCore.base.exp
Sending        WebCore/WebCore.pro
Sending        WebCore/WebCore.vcproj/WebCore.vcproj
Sending        WebCore/WebCore.xcodeproj/project.pbxproj
Sending        WebCore/bindings/js/ScriptController.cpp
Sending        WebCore/bindings/js/ScriptController.h
Sending        WebCore/bindings/js/ScriptEventListener.cpp
Sending        WebCore/dom/Tokenizer.h
Sending        WebCore/html/HTMLTokenizer.cpp
Sending        WebCore/loader/FrameLoader.cpp
Sending        WebCore/page/Settings.cpp
Sending        WebCore/page/Settings.h
Adding         WebCore/page/XSSAuditor.cpp
Adding         WebCore/page/XSSAuditor.h
Sending        WebKit/mac/ChangeLog
Sending        WebKit/mac/WebView/WebPreferenceKeysPrivate.h
Sending        WebKit/mac/WebView/WebPreferences.mm
Sending        WebKit/mac/WebView/WebPreferencesPrivate.h
Sending        WebKit/mac/WebView/WebView.mm
Sending        WebKit/win/ChangeLog
Sending        WebKit/win/Interfaces/IWebPreferencesPrivate.idl
Sending        WebKit/win/WebPreferenceKeysPrivate.h
Sending        WebKit/win/WebPreferences.cpp
Sending        WebKit/win/WebPreferences.h
Sending        WebKit/win/WebView.cpp
Sending        WebKitTools/ChangeLog
Sending        WebKitTools/DumpRenderTree/LayoutTestController.cpp
Sending        WebKitTools/DumpRenderTree/LayoutTestController.h
Sending        WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
Sending        WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
Sending        WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
Sending        WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
Sending        WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
Sending        WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp
Transmitting file data ........................................
Committed revision 44846.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31107</attachid>
            <date>2009-06-09 15:16:21 -0700</date>
            <delta_ts>2009-06-09 15:22:39 -0700</delta_ts>
            <desc>Prototype of XSS Auditor</desc>
            <filename>xss-auditor.patch</filename>
            <type>text/plain</type>
            <size>20065</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NDQ1NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRy
b2xsZXIoRnJhbWUKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3dpbmRvd1NjcmlwdE9iamVj
dCgwKQogI2VuZGlmCisgICAgLCBtX1hTU0F1ZGl0b3IoZnJhbWUpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkSmF2YUpTQmluZGluZ3M7CkBAIC02Nyw3ICs2OCw3IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNj
cmlwdENvbnRyb2xsZXIoRnJhbWUKIAogU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xs
ZXIoKQogewotICAgIGlmIChtX3dpbmRvd1NoZWxsKSB7CisgICAgICBpZiAobV93aW5kb3dTaGVs
bCkgewogICAgICAgICBtX3dpbmRvd1NoZWxsID0gMDsKICAgICAKICAgICAgICAgLy8gSXQncyBs
aWtlbHkgdGhhdCByZWxlYXNpbmcgdGhlIGdsb2JhbCBvYmplY3QgaGFzIGNyZWF0ZWQgYSBsb3Qg
b2YgZ2FyYmFnZS4KQEAgLTc5LDYgKzgwLDEwIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRD
b250cm9sbGVyKCkKIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgCiB7CisgICAgaWYgKCFtX1hTU0F1ZGl0
b3IuY2FuRXZhbHVhdGUoc291cmNlQ29kZSkpCisgICAgICAgIC8vIFRoaXMgc2NyaXB0IGlzIG5v
dCBzYWZlIHRvIGJlIGV2YWx1YXRlZC4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAK
ICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1cm5zIHRoZSBKUyByZXR1cm4gdmFsdWUgb3IgMAog
ICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLCBhbiBlcnJvciBvY2N1cmVkIG9yIHRoZSB0eXBlIGNv
dWxkbid0IGJlIGNvbnZlcnRlZC4KICAgICAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA0NDU0NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0SW5zdGFuY2UuaCIKKyNp
bmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMzIsNiArMTMzLDkgQEAgcHVibGljOgogICAgIE5Q
T2JqZWN0KiBjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQbHVnSW5FbGVt
ZW50Kik7CiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKKyAg
ICAKKyAgICAvKiogUmV0dXJucyB0aGUge0BsaW5rIFhTU0F1ZGl0b3J9IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIDxjb2RlPlNjcmlwdENvbnRyb2xsZXI8L2NvZGU+LiAqLworICAgIFhTU0F1ZGl0b3Iq
IGFjdGl2ZVhTU0F1ZGl0b3IoKSB7IHJldHVybiAmbV9YU1NBdWRpdG9yOyB9CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQpAQCAtMTY0LDYgKzE2OCw5IEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXZWJTY3JpcHRPYmplY3Q+IG1f
d2luZG93U2NyaXB0T2JqZWN0OwogI2VuZGlmCisgICAgCisgICAgLyoqIFRoZSBYU1NBdWRpdG9y
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIDxjb2RlPlNjcmlwdENvbnRyb2xsZXI8L2NvZGU+LiAqLwor
ICAgIFhTU0F1ZGl0b3IgbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiA0NDU0NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIFBhc3NSZWZQdHI8SlNMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+
YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxv
Y2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkKKyAgICAgICAgLy8gVGhpcyBzY3Jp
cHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgCiAgICAg
SlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbE9iamVj
dCgpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBl
ciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KQEAgLTgwLDYgKzg0
LDEwIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwogICAgIGlm
ICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5DcmVh
dGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52
YWx1ZSgpKSkKKyAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4K
KyAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyAnZ2xvYmFsT2JqZWN0JyBpcyB0aGUgSmF2YVNj
cmlwdCB3cmFwcGVyIHRoYXQgd2lsbCBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVh
dGluZy4KICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0Q29udHJvbGxlci0+
Z2xvYmFsT2JqZWN0KCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaAkocmV2aXNpb24gNDQ1NDUpCisrKyBXZWJDb3Jl
L2RvbS9Ub2tlbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2VnbWVudGVkU3RyaW5nOworICAgIGNsYXNzIFhT
U0F1ZGl0b3I7CiAKICAgICBjbGFzcyBUb2tlbml6ZXIgewogICAgIHB1YmxpYzoKQEAgLTU4LDEx
ICs1OSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHt9CiAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzSFRNTFRva2VuaXplcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIAor
ICAgICAgICAvKiogUmV0dXJucyB0aGUge0BsaW5rIFhTU0F1ZGl0b3J9IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIHRva2VuaXplci4gKi8KKyAgICAgICAgWFNTQXVkaXRvciogYWN0aXZlWFNTQXVkaXRv
cigpIHsgcmV0dXJuIG1fWFNTQXVkaXRvcjsgfQorICAgICAgICAKKyAgICAgICAgLyoqIEFzc29j
aWF0ZXMgdGhlIHNwZWNpZmllZCB7QGxpbmsgWFNTQXVkaXRvcn0gd2l0aCB0aGlzIHRva2VuaXpl
ci4KKyAgICAgICAgICogQHBhcmFtIGF1ZGl0b3IgdGhlIDxjb2RlPlhTU0F1ZGl0b3I8L2NvZGU+
IHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgdG9rZW5pemVyLgorICAgICAgICAgKi8KKyAgICAgICAg
dm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV9YU1NBdWRpdG9yID0g
YXVkaXRvcjsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBUb2tlbml6ZXIoYm9vbCB2aWV3
U291cmNlTW9kZSA9IGZhbHNlKSAKICAgICAgICAgICAgIDogbV9wYXJzZXJTdG9wcGVkKGZhbHNl
KQogICAgICAgICAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmlld1NvdXJjZU1vZGUpCisgICAg
ICAgICAgICAsIG1fWFNTQXVkaXRvcigwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzEs
NiArODEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGV2ZW4gd2hlbiBpdCBo
YXMgYnVmZmVyZWQgZGF0YS4KICAgICAgICAgYm9vbCBtX3BhcnNlclN0b3BwZWQ7CiAgICAgICAg
IGJvb2wgbV9pblZpZXdTb3VyY2VNb2RlOworICAgICAgICAKKyAgICAgICAgLyoqIFRoZSB7QGxp
bmsgWFNTQXVkaXRvcn0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgdG9rZW5pemVyLiAqLworICAgICAg
ICBYU1NBdWRpdG9yKiBtX1hTU0F1ZGl0b3I7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gNDQ1NDUpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiWFNTQXVkaXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKQEAgLTQzNiwxMSArNDM3LDE0IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tl
bml6ZXI6OnNjcmkKICAgICAgICAgICAgICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkK
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0aW5nIHNjcmlwdCBhdCB0aW1lICVk
XG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAvLyBU
aGUgcGFyc2VyIG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEgd2luZG93
LmNsb3NlIGNhbGwgaW4gYW4gZWFybGllciBzY3JpcHQuCi0gICAgICAgICAgICAgICAgLy8gSWYg
c28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgotICAgICAgICAgICAgICAgIGlmICgh
bV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlw
dChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZhbHVlKSkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiBtX1hT
U0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMobV9zY3JpcHRUYWdTcmNBdHRy
VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBi
ZWVuIHN0b3BwZWQgYnkgZm9yIGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJs
aWVyIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0IHdhbnQg
dG8gbG9hZCBzY3JpcHRzLgorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGFyc2VyU3RvcHBl
ZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3JpcHRUYWdT
cmNBdHRyVmFsdWUsIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0cy5hcHBlbmQoY3MpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAwOworICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAw
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2RlID0gMDsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ0NTQ1KQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBACiAj
aW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlhNTFRva2VuaXplci5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
QEAgLTk5Myw2ICs5OTQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1
cmwsCiAgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKIAogICAgIGRvY3VtZW50LT5pbXBsaWNp
dE9wZW4oKTsKKyAgICAKKyAgICAvLyBBc3NvY2lhdGUgdGhlIGFjdGl2ZSA8Y29kZT5YU1NBdWRp
dG9yPC9jb2RlPiB3aXRoIHRoZSB0b2tlbml6ZXIuCisgICAgZG9jdW1lbnQtPnRva2VuaXplcigp
LT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT5hY3RpdmVYU1NBdWRpdG9yKCkpOwog
CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zZXRD
b250ZW50c1NpemUoSW50U2l6ZSgpKTsKQEAgLTE2NDUsNiArMTY0OSwxMCBAQCBib29sIEZyYW1l
TG9hZGVyOjpyZXF1ZXN0T2JqZWN0KFJlbmRlclBhCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkg
JiYgbWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5Mb2FkT2JqZWN0
KHVybCkpCisgICAgICAgIC8vIEl0IGlzIHVuc2FmZSB0byBob25vciB0aGUgcmVxdWVzdCBmb3Ig
dGhpcyBvYmplY3QuCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEtVUkwgY29tcGxldGVk
VVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERhbmllbCBCYXRl
cyAoZGJhdGVzQGludHVkYXRhLmNvbSkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBY
U1NBdWRpdG9yX2gKKyNkZWZpbmUgWFNTQXVkaXRvcl9oCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisJCisJY2xhc3MgRnJhbWU7CisJY2xhc3MgU2NyaXB0U291
cmNlQ29kZTsKKwkKKwkvKiogVGhlIFhTU0F1ZGl0b3IgY2xhc3MgaXMgdXNlZCB0byBwcmV2ZW50
IHR5cGUgMSBjcm9zcy1zaXRlIHNjcmlwdGluZyB2dWxuZXJhYmlsaXRlcyAoYWxzbyBrbm93biBh
cyByZWZsZWN0ZWQgdnVsbmVyYWJpbGl0aWVzKS4KKwkgKiA8cD4KKwkgKiBNb3JlIHNwZWNpZmlj
YWxseSwgdGhlIFhTU0F1ZGl0b3IgY2xhc3MgZGVjaWRlcyB3aGV0aGVyIHRoZSBleGVjdXRpb24g
b2YgYSBzY3JpcHQgaXMgdG8gYmUgYWxsb3dlZCBvciBkZW5pZWQgYmFzZWQgb24gdGhlIAorCSAq
IGNvbnRlbnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEsIGluY2x1ZGluZzoKKwkgKiA8dWw+
CisJICoJPGxpPnRoZSBxdWVyeSBzdHJpbmcgb2YgdGhlIFVSTC4KKwkgKgk8bGk+dGhlIEhUVFAt
UE9TVCBkYXRhLgorCSAqIDwvdWw+CisJICogPHA+CisJICogSWYgdGhlIHNvdXJjZSBjb2RlIG9m
IGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YSB0aGVuIGl0IGlzIGRl
bmllZCBleGVjdXRpb24uCisJICogPHA+CisJICogV2hlbiB5b3UgaW5zdGFudGlhdGUgdGhlIFhT
U0F1ZGl0b3IgeW91IG11c3Qgc3BlY2lmeSB0aGUge0BsaW5rIEZyYW1lfSBvZiB0aGUgcGFnZSB0
aGF0IHlvdSB3aXNoIHRvIGF1ZGl0LgorCSAqIDxwPgorCSAqIDxoMT5CaW5kaW5nczwvaDE+CisJ
ICogPHA+CisJICogQW4gPGNvZGU+WFNTQXVkaXRvcjwvY29kZT4gaXMgaW5zdGFudGlhdGVkIHdp
dGhpbiB0aGUgY29udHJ1Y3RvciBvZiBhIHtAbGluayBTY3JpcHRDb250cm9sbGVyfSBvYmplY3Qg
YW5kIAorCSAqIHBhc3NlZCB0aGUge0BsaW5rIEZyYW1lfSB0aGUgc2NyaXB0IG9yaWdpbmF0ZWQu
IFRoZSA8Y29kZT5TY3JpcHRDb250cm9sbGVyPC9jb2RlPiBjYWxscyBiYWNrIHRvIHRoZSA8Y29k
ZT5YU1NBdWRpdG9yPC9jb2RlPgorCSAqIHRvIGRldGVybWluZSB3aGV0aGVyIGEgSmF2YVNjcmlw
dCBzY3JpcHQgaXMgc2FmZSB0byBleGVjdXRlIGJlZm9yZSBleGVjdXRpbmcgaXQuIFRoZSBmb2xs
b3dpbmcgbWV0aG9kcyBjYWxsIGludG8gCisJICogPGNvZGU+WFNTQXVkaXRvcjwvY29kZT46CisJ
ICogPHVsPgorCSAqCTxsaT57QGxpbmsgU2NyaXB0Q29udHJvbGxlciNldmFsdWF0ZX0gLSB1c2Vk
IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgc2NyaXB0cy4KKwkgKgk8bGk+e0BsaW5rIFNjcmlwdENv
bnRyb2xsZXIjY3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcn0gLSB1c2VkIHRvIGNyZWF0ZSBKYXZh
U2NyaXB0IGV2ZW50IGhhbmRsZXJzLgorCSAqCTxsaT57QGxpbmsgSFRNTFRva2VuaXplciNzY3Jp
cHRIYW5kbGVyfSAtIHVzZWQgdG8gbG9hZCBleHRlcm5hbCBKYXZhU2NyaXB0IHNjcmlwdHMuCisJ
ICogPC91bD4KKwkgKi8KKwljbGFzcyBYU1NBdWRpdG9yIHsKKwkJCisJcHVibGljOgorCQkKKwkJ
LyoqIENyZWF0ZXMgYSBuZXcgPGNvZGU+WFNTQXVkaXRvcjwvY29kZT4gb2JqZWN0IHRoYXQgaXMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgZnJhbWUuCisJCSAqIEBwYXJhbSBmcmFtZSB0
aGUgZnJhbWUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBhdWRpdG9yLgorCQkgKi8KKwkJWFNTQXVk
aXRvcihGcmFtZSopOworCQkKKwkJLyoqIERlc3RydWN0b3IuICovCisJCXZpcnR1YWwgflhTU0F1
ZGl0b3IoKTsKKwkJCisJCS8qKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyA8Y29kZT5YU1NBdWRpdG9y
PC9jb2RlPiBpcyBlbmFibGVkLgorCQkgKiByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhp
cyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBpcyBlbmFibGVkOworCQkgKgkJICA8Y29kZT5mYWxz
ZTwvY29kZT4gaWYgdGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBpcyBkaXNhYmxlZC4KKwkJ
ICovCisJCWJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CisJCQorCQkvKiogU2V0cyB3aGV0aGVyIHRo
aXMgPGNvZGU+WFNTQXVkaXRvcjwvY29kZT4gaXMgZW5hYmxlZC4KKwkJICogQHBhcmFtIGlzWFNT
QXVkaXRvckVuYWJsZWQgPGNvZGU+dHJ1ZTwvY29kZT4gdG8gZW5hYmxlIHRoaXMgPGNvZGU+WFNT
QXVkaXRvcjwvY29kZT47CisJCSAqCQkJCQkJCSAgPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIGRpc2Fi
bGUgdGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPi4KKwkJICovCisJCXZvaWQgc2V0WFNTQXVk
aXRvckVuYWJsZWQoYm9vbCk7CisJCQorCQkvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3Jp
cHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkIGV4ZWN1dGlvbiBiYXNlZCBvbiB0aGUgY29u
dGVudCBvZiAKKwkJICogYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisJCSAqIEBwYXJhbSBzb3Vy
Y2VDb2RlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGUgc2NyaXB0IHRvIGV2YWx1YXRlLgorCQkgKiBA
cmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV4ZWN1dGVk
OworCQkgKgkJICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKwkJICovCisJCWJvb2wg
Y2FuRXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgY29uc3Q7CisJ
CQorCQkvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQg
b3IgZGVuaWVkIGV4ZWN1dGlvbiBiYXNlZCBvbiB0aGUgY29udGVudCBvZiAKKwkJICogYW55IHVz
ZXItc3VibWl0dGVkIGRhdGEuCisJCSAqIEBwYXJhbSBzb3VyY2VDb2RlIHRoZSBzb3VyY2UgY29k
ZSBvZiB0aGUgc2NyaXB0IHRvIGV2YWx1YXRlLgorCQkgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2Nv
ZGU+IGlmIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV4ZWN1dGVkOworCQkgKgkJICAgPGNvZGU+ZmFs
c2U8L2NvZGU+IG90aGVyd2lzZS4KKwkJICovCisJCWJvb2wgY2FuRXZhbHVhdGUoY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlKSBjb25zdDsKKwkJCisJCS8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhl
IGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9m
IAorCQkgKiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKwkJICogQHBhcmFtIHNvdXJjZUNvZGUg
dGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBzY3JpcHQgdG8gZXZhbHVhdGUuCisJCSAqIEByZXR1cm4g
PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVk
OworCQkgKgkJICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKwkJICovCisJCWJvb2wg
Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb2RlKSBjb25zdDsKKwkJCisJCS8qKiBEZXRlcm1pbmVzIHdoZXRoZXIg
dGhlIGV4dGVybmFsIHNjcmlwdCBzaG91bGQgYmUgbG9hZGVkIGJhc2VkIG9uIHRoZSBjb250ZW50
IG9mIAorCQkgKiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKwkJICogQHBhcmFtIHNvdXJjZUNv
ZGUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBzY3JpcHQgdG8gZXZhbHVhdGUuCisJCSAqIEByZXR1
cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGV4dGVybmFsIHNjcmlwdCBzaG91bGQgbG9hZDsK
KwkJICoJCSAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisJCSAqLworCQlib29sIGNh
bkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OworCQkK
KwkJLyoqIERldGVybWluZXMgd2hldGhlciBvYmplY3Qgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBv
biB0aGUgY29udGVudCBvZiAKKwkJICogYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisJCSAqIDxw
PgorCQkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgbWV0aG9kIHtAbGluayBGcmFtZUxvYWRl
ciNyZXF1ZXN0T2JqZWN0fS4KKwkJICogQHBhcmFtIHVybCB0aGUgdXJsIG9mIHRoZSByZXF1ZXN0
ZWQgb2JqZWN0LgorCQkgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSByZXF1ZXN0
ZWQgb2JqZWN0IHNob3VsZCBiZSBsb2FkZWQ7CisJCSAqCQkgICA8Y29kZT5mYWxzZTwvY29kZT4g
b3RoZXJ3aXNlLgorCQkgKi8KKwkJYm9vbCBjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdDsJCQorCQkKKwlwcml2YXRlOgorCQkKKwkJLyoqIFdoZXRoZXIgdG8gYXVkaXQgc2Ny
aXB0cy4gKi8KKwkJYm9vbCBtX2lzRW5hYmxlZDsKKwkJCisJCS8qKiBUaGUgZnJhbWUgdG8gYXVk
aXQuICovCisJCUZyYW1lKiBtX2ZyYW1lOworCQkKKwkJU3RyaW5nIGRlY29kZVVSTChjb25zdCBT
dHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygp
LCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMgPSBmYWxzZSkgY29uc3Q7CisJfTsKKwkKK30gLy8g
bmFtZXNwYWNlIFhTU0F1ZGl0b3IKKworI2VuZGlmIC8vIFhTU0F1ZGl0b3JfaApJbmRleDogV2Vi
Q29yZS9wYWdlL1hTU0F1ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVk
aXRvci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
RGFuaWVsIEJhdGVzIChkYmF0ZXNAaW50dWRhdGEuY29tKQorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFhTU0F1ZGl0b3JfaAorI2RlZmluZSBYU1NBdWRpdG9yX2gKKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4dEVu
Y29kaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwkKKwljbGFzcyBGcmFtZTsKKwljbGFz
cyBTY3JpcHRTb3VyY2VDb2RlOworCQorCS8qKiBUaGUgWFNTQXVkaXRvciBjbGFzcyBpcyB1c2Vk
IHRvIHByZXZlbnQgdHlwZSAxIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGVzIChh
bHNvIGtub3duIGFzIHJlZmxlY3RlZCB2dWxuZXJhYmlsaXRpZXMpLgorCSAqIDxwPgorCSAqIE1v
cmUgc3BlY2lmaWNhbGx5LCB0aGUgWFNTQXVkaXRvciBjbGFzcyBkZWNpZGVzIHdoZXRoZXIgdGhl
IGV4ZWN1dGlvbiBvZiBhIHNjcmlwdCBpcyB0byBiZSBhbGxvd2VkIG9yIGRlbmllZCBiYXNlZCBv
biB0aGUgCisJICogY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YSwgaW5jbHVkaW5n
OgorCSAqIDx1bD4KKwkgKgk8bGk+dGhlIHF1ZXJ5IHN0cmluZyBvZiB0aGUgVVJMLgorCSAqCTxs
aT50aGUgSFRUUC1QT1NUIGRhdGEuCisJICogPC91bD4KKwkgKiA8cD4KKwkgKiBJZiB0aGUgc291
cmNlIGNvZGUgb2YgYSBzY3JpcHQgcmVzZW1ibGVzIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhIHRo
ZW4gaXQgaXMgZGVuaWVkIGV4ZWN1dGlvbi4KKwkgKiA8cD4KKwkgKiBXaGVuIHlvdSBpbnN0YW50
aWF0ZSB0aGUgWFNTQXVkaXRvciB5b3UgbXVzdCBzcGVjaWZ5IHRoZSB7QGxpbmsgRnJhbWV9IG9m
IHRoZSBwYWdlIHRoYXQgeW91IHdpc2ggdG8gYXVkaXQuCisJICogPHA+CisJICogPGgxPkJpbmRp
bmdzPC9oMT4KKwkgKiA8cD4KKwkgKiBBbiA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBpcyBpbnN0
YW50aWF0ZWQgd2l0aGluIHRoZSBjb250cnVjdG9yIG9mIGEge0BsaW5rIFNjcmlwdENvbnRyb2xs
ZXJ9IG9iamVjdCBhbmQgCisJICogcGFzc2VkIHRoZSB7QGxpbmsgRnJhbWV9IHRoZSBzY3JpcHQg
b3JpZ2luYXRlZC4gVGhlIDxjb2RlPlNjcmlwdENvbnRyb2xsZXI8L2NvZGU+IGNhbGxzIGJhY2sg
dG8gdGhlIDxjb2RlPlhTU0F1ZGl0b3I8L2NvZGU+CisJICogdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
YSBKYXZhU2NyaXB0IHNjcmlwdCBpcyBzYWZlIHRvIGV4ZWN1dGUgYmVmb3JlIGV4ZWN1dGluZyBp
dC4gVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbGwgaW50byAKKwkgKiA8Y29kZT5YU1NBdWRpdG9y
PC9jb2RlPjoKKwkgKiA8dWw+CisJICoJPGxpPntAbGluayBTY3JpcHRDb250cm9sbGVyI2V2YWx1
YXRlfSAtIHVzZWQgdG8gZXZhbHVhdGUgSmF2YVNjcmlwdCBzY3JpcHRzLgorCSAqCTxsaT57QGxp
bmsgU2NyaXB0Q29udHJvbGxlciNjcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyfSAtIHVzZWQgdG8g
Y3JlYXRlIEphdmFTY3JpcHQgZXZlbnQgaGFuZGxlcnMuCisJICoJPGxpPntAbGluayBIVE1MVG9r
ZW5pemVyI3NjcmlwdEhhbmRsZXJ9IC0gdXNlZCB0byBsb2FkIGV4dGVybmFsIEphdmFTY3JpcHQg
c2NyaXB0cy4KKwkgKiA8L3VsPgorCSAqLworCWNsYXNzIFhTU0F1ZGl0b3IgeworCQkKKwlwdWJs
aWM6CisJCQorCQkvKiogQ3JlYXRlcyBhIG5ldyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBvYmpl
Y3QgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBmcmFtZS4KKwkJICogQHBh
cmFtIGZyYW1lIHRoZSBmcmFtZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGF1ZGl0b3IuCisJCSAq
LworCQlYU1NBdWRpdG9yKEZyYW1lKik7CisJCQorCQkvKiogRGVzdHJ1Y3Rvci4gKi8KKwkJdmly
dHVhbCB+WFNTQXVkaXRvcigpOworCQkKKwkJLyoqIFJldHVybnMgd2hldGhlciB0aGlzIDxjb2Rl
PlhTU0F1ZGl0b3I8L2NvZGU+IGlzIGVuYWJsZWQuCisJCSAqIHJldHVybiA8Y29kZT50cnVlPC9j
b2RlPiBpZiB0aGlzIDxjb2RlPlhTU0F1ZGl0b3I8L2NvZGU+IGlzIGVuYWJsZWQ7CisJCSAqCQkg
IDxjb2RlPmZhbHNlPC9jb2RlPiBpZiB0aGlzIDxjb2RlPlhTU0F1ZGl0b3I8L2NvZGU+IGlzIGRp
c2FibGVkLgorCQkgKi8KKwkJYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKKwkJCisJCS8qKiBTZXRz
IHdoZXRoZXIgdGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBpcyBlbmFibGVkLgorCQkgKiBA
cGFyYW0gaXNYU1NBdWRpdG9yRW5hYmxlZCA8Y29kZT50cnVlPC9jb2RlPiB0byBlbmFibGUgdGhp
cyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPjsKKwkJICoJCQkJCQkJICA8Y29kZT5mYWxzZTwvY29k
ZT4gdG8gZGlzYWJsZSB0aGlzIDxjb2RlPlhTU0F1ZGl0b3I8L2NvZGU+LgorCQkgKi8KKwkJdm9p
ZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKKwkJCisJCS8qKiBEZXRlcm1pbmVzIHdoZXRo
ZXIgdGhlIHNjcmlwdCBzaG91bGQgYmUgYWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uIGJhc2Vk
IG9uIHRoZSBjb250ZW50IG9mIAorCQkgKiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKwkJICog
QHBhcmFtIHNvdXJjZUNvZGUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBzY3JpcHQgdG8gZXZhbHVh
dGUuCisJCSAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNjcmlwdCBzaG91bGQg
YmUgZXhlY3V0ZWQ7CisJCSAqCQkgICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorCQkg
Ki8KKwkJYm9vbCBjYW5FdmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
KSBjb25zdDsKKwkJCisJCS8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNjcmlwdCBzaG91bGQg
YmUgYWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIAor
CQkgKiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKwkJICogQHBhcmFtIHNvdXJjZUNvZGUgdGhl
IHNvdXJjZSBjb2RlIG9mIHRoZSBzY3JpcHQgdG8gZXZhbHVhdGUuCisJCSAqIEByZXR1cm4gPGNv
ZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNjcmlwdCBzaG91bGQgYmUgZXhlY3V0ZWQ7CisJCSAqCQkg
ICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorCQkgKi8KKwkJYm9vbCBjYW5FdmFsdWF0
ZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpIGNvbnN0OworCQkKKwkJLyoqIERldGVybWluZXMg
d2hldGhlciB0aGUgZXZlbnQgbGlzdGVuZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYmFzZWQgb24gdGhl
IGNvbnRlbnQgb2YgCisJCSAqIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorCQkgKiBAcGFyYW0g
c291cmNlQ29kZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlIHNjcmlwdCB0byBldmFsdWF0ZS4KKwkJ
ICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZXZlbnQgbGlzdGVuZXIgc2hvdWxk
IGJlIGNyZWF0ZWQ7CisJCSAqCQkgICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorCQkg
Ki8KKwkJYm9vbCBjYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUpIGNvbnN0OworCQkKKwkJLyoqIERldGVybWlu
ZXMgd2hldGhlciB0aGUgZXh0ZXJuYWwgc2NyaXB0IHNob3VsZCBiZSBsb2FkZWQgYmFzZWQgb24g
dGhlIGNvbnRlbnQgb2YgCisJCSAqIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorCQkgKiBAcGFy
YW0gc291cmNlQ29kZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlIHNjcmlwdCB0byBldmFsdWF0ZS4K
KwkJICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZXh0ZXJuYWwgc2NyaXB0IHNo
b3VsZCBsb2FkOworCQkgKgkJICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKwkJICov
CisJCWJvb2wgY2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3Q7CisJCQorCQkvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG9iamVjdCBzaG91bGQgYmUgbG9h
ZGVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIAorCQkgKiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0
YS4KKwkJICogPHA+CisJCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBtZXRob2Qge0BsaW5r
IEZyYW1lTG9hZGVyI3JlcXVlc3RPYmplY3R9LgorCQkgKiBAcGFyYW0gdXJsIHRoZSB1cmwgb2Yg
dGhlIHJlcXVlc3RlZCBvYmplY3QuCisJCSAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYg
dGhlIHJlcXVlc3RlZCBvYmplY3Qgc2hvdWxkIGJlIGxvYWRlZDsKKwkJICoJCSAgIDxjb2RlPmZh
bHNlPC9jb2RlPiBvdGhlcndpc2UuCisJCSAqLworCQlib29sIGNhbkxvYWRPYmplY3QoY29uc3Qg
U3RyaW5nJiB1cmwpIGNvbnN0OwkJCisJCQorCXByaXZhdGU6CisJCQorCQkvKiogV2hldGhlciB0
byBhdWRpdCBzY3JpcHRzLiAqLworCQlib29sIG1faXNFbmFibGVkOworCQkKKwkJLyoqIFRoZSBm
cmFtZSB0byBhdWRpdC4gKi8KKwkJRnJhbWUqIG1fZnJhbWU7CisJCQorCQlTdHJpbmcgZGVjb2Rl
VVJMKGNvbnN0IFN0cmluZyYgc3RyLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nID0gVVRG
OEVuY29kaW5nKCksIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycyA9IGZhbHNlKSBjb25zdDsKKwl9
OworCQorfSAvLyBuYW1lc3BhY2UgWFNTQXVkaXRvcgorCisjZW5kaWYgLy8gWFNTQXVkaXRvcl9o
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31108</attachid>
            <date>2009-06-09 15:22:39 -0700</date>
            <delta_ts>2009-06-10 01:52:49 -0700</delta_ts>
            <desc>Prototype of XSS Auditor</desc>
            <filename>xss-auditor.patch</filename>
            <type>text/plain</type>
            <size>23048</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NDQ1NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRy
b2xsZXIoRnJhbWUKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3dpbmRvd1NjcmlwdE9iamVj
dCgwKQogI2VuZGlmCisgICAgLCBtX1hTU0F1ZGl0b3IoZnJhbWUpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkSmF2YUpTQmluZGluZ3M7CkBAIC02Nyw3ICs2OCw3IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNj
cmlwdENvbnRyb2xsZXIoRnJhbWUKIAogU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xs
ZXIoKQogewotICAgIGlmIChtX3dpbmRvd1NoZWxsKSB7CisgICAgICBpZiAobV93aW5kb3dTaGVs
bCkgewogICAgICAgICBtX3dpbmRvd1NoZWxsID0gMDsKICAgICAKICAgICAgICAgLy8gSXQncyBs
aWtlbHkgdGhhdCByZWxlYXNpbmcgdGhlIGdsb2JhbCBvYmplY3QgaGFzIGNyZWF0ZWQgYSBsb3Qg
b2YgZ2FyYmFnZS4KQEAgLTc5LDYgKzgwLDEwIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRD
b250cm9sbGVyKCkKIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgCiB7CisgICAgaWYgKCFtX1hTU0F1ZGl0
b3IuY2FuRXZhbHVhdGUoc291cmNlQ29kZSkpCisgICAgICAgIC8vIFRoaXMgc2NyaXB0IGlzIG5v
dCBzYWZlIHRvIGJlIGV2YWx1YXRlZC4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAK
ICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1cm5zIHRoZSBKUyByZXR1cm4gdmFsdWUgb3IgMAog
ICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLCBhbiBlcnJvciBvY2N1cmVkIG9yIHRoZSB0eXBlIGNv
dWxkbid0IGJlIGNvbnZlcnRlZC4KICAgICAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA0NDU0NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0SW5zdGFuY2UuaCIKKyNp
bmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMzIsNiArMTMzLDkgQEAgcHVibGljOgogICAgIE5Q
T2JqZWN0KiBjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQbHVnSW5FbGVt
ZW50Kik7CiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKKyAg
ICAKKyAgICAvKiogUmV0dXJucyB0aGUge0BsaW5rIFhTU0F1ZGl0b3J9IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIDxjb2RlPlNjcmlwdENvbnRyb2xsZXI8L2NvZGU+LiAqLworICAgIFhTU0F1ZGl0b3Iq
IGFjdGl2ZVhTU0F1ZGl0b3IoKSB7IHJldHVybiAmbV9YU1NBdWRpdG9yOyB9CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQpAQCAtMTY0LDYgKzE2OCw5IEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXZWJTY3JpcHRPYmplY3Q+IG1f
d2luZG93U2NyaXB0T2JqZWN0OwogI2VuZGlmCisgICAgCisgICAgLyoqIFRoZSBYU1NBdWRpdG9y
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIDxjb2RlPlNjcmlwdENvbnRyb2xsZXI8L2NvZGU+LiAqLwor
ICAgIFhTU0F1ZGl0b3IgbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiA0NDU0NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIFBhc3NSZWZQdHI8SlNMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+
YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxv
Y2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkKKyAgICAgICAgLy8gVGhpcyBzY3Jp
cHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgCiAgICAg
SlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbE9iamVj
dCgpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBl
ciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KQEAgLTgwLDYgKzg0
LDEwIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICBTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwogICAgIGlm
ICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5DcmVh
dGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52
YWx1ZSgpKSkKKyAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4K
KyAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyAnZ2xvYmFsT2JqZWN0JyBpcyB0aGUgSmF2YVNj
cmlwdCB3cmFwcGVyIHRoYXQgd2lsbCBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVh
dGluZy4KICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0Q29udHJvbGxlci0+
Z2xvYmFsT2JqZWN0KCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaAkocmV2aXNpb24gNDQ1NDUpCisrKyBXZWJDb3Jl
L2RvbS9Ub2tlbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2VnbWVudGVkU3RyaW5nOworICAgIGNsYXNzIFhT
U0F1ZGl0b3I7CiAKICAgICBjbGFzcyBUb2tlbml6ZXIgewogICAgIHB1YmxpYzoKQEAgLTU4LDEx
ICs1OSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHt9CiAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzSFRNTFRva2VuaXplcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIAor
ICAgICAgICAvKiogUmV0dXJucyB0aGUge0BsaW5rIFhTU0F1ZGl0b3J9IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIHRva2VuaXplci4gKi8KKyAgICAgICAgWFNTQXVkaXRvciogYWN0aXZlWFNTQXVkaXRv
cigpIHsgcmV0dXJuIG1fWFNTQXVkaXRvcjsgfQorICAgICAgICAKKyAgICAgICAgLyoqIEFzc29j
aWF0ZXMgdGhlIHNwZWNpZmllZCB7QGxpbmsgWFNTQXVkaXRvcn0gd2l0aCB0aGlzIHRva2VuaXpl
ci4KKyAgICAgICAgICogQHBhcmFtIGF1ZGl0b3IgdGhlIDxjb2RlPlhTU0F1ZGl0b3I8L2NvZGU+
IHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgdG9rZW5pemVyLgorICAgICAgICAgKi8KKyAgICAgICAg
dm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV9YU1NBdWRpdG9yID0g
YXVkaXRvcjsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBUb2tlbml6ZXIoYm9vbCB2aWV3
U291cmNlTW9kZSA9IGZhbHNlKSAKICAgICAgICAgICAgIDogbV9wYXJzZXJTdG9wcGVkKGZhbHNl
KQogICAgICAgICAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmlld1NvdXJjZU1vZGUpCisgICAg
ICAgICAgICAsIG1fWFNTQXVkaXRvcigwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzEs
NiArODEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGV2ZW4gd2hlbiBpdCBo
YXMgYnVmZmVyZWQgZGF0YS4KICAgICAgICAgYm9vbCBtX3BhcnNlclN0b3BwZWQ7CiAgICAgICAg
IGJvb2wgbV9pblZpZXdTb3VyY2VNb2RlOworICAgICAgICAKKyAgICAgICAgLyoqIFRoZSB7QGxp
bmsgWFNTQXVkaXRvcn0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgdG9rZW5pemVyLiAqLworICAgICAg
ICBYU1NBdWRpdG9yKiBtX1hTU0F1ZGl0b3I7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gNDQ1NDUpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiWFNTQXVkaXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKQEAgLTQzNiwxMSArNDM3LDE0IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tl
bml6ZXI6OnNjcmkKICAgICAgICAgICAgICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkK
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0aW5nIHNjcmlwdCBhdCB0aW1lICVk
XG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAvLyBU
aGUgcGFyc2VyIG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEgd2luZG93
LmNsb3NlIGNhbGwgaW4gYW4gZWFybGllciBzY3JpcHQuCi0gICAgICAgICAgICAgICAgLy8gSWYg
c28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgotICAgICAgICAgICAgICAgIGlmICgh
bV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlw
dChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZhbHVlKSkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiBtX1hT
U0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMobV9zY3JpcHRUYWdTcmNBdHRy
VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBi
ZWVuIHN0b3BwZWQgYnkgZm9yIGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJs
aWVyIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0IHdhbnQg
dG8gbG9hZCBzY3JpcHRzLgorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGFyc2VyU3RvcHBl
ZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3JpcHRUYWdT
cmNBdHRyVmFsdWUsIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0cy5hcHBlbmQoY3MpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAwOworICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAw
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2RlID0gMDsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ0NTQ1KQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBACiAj
aW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlhNTFRva2VuaXplci5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
QEAgLTk5Myw2ICs5OTQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1
cmwsCiAgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKIAogICAgIGRvY3VtZW50LT5pbXBsaWNp
dE9wZW4oKTsKKyAgICAKKyAgICAvLyBBc3NvY2lhdGUgdGhlIGFjdGl2ZSA8Y29kZT5YU1NBdWRp
dG9yPC9jb2RlPiB3aXRoIHRoZSB0b2tlbml6ZXIuCisgICAgZG9jdW1lbnQtPnRva2VuaXplcigp
LT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT5hY3RpdmVYU1NBdWRpdG9yKCkpOwog
CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zZXRD
b250ZW50c1NpemUoSW50U2l6ZSgpKTsKQEAgLTE2NDUsNiArMTY0OSwxMCBAQCBib29sIEZyYW1l
TG9hZGVyOjpyZXF1ZXN0T2JqZWN0KFJlbmRlclBhCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkg
JiYgbWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5Mb2FkT2JqZWN0
KHVybCkpCisgICAgICAgIC8vIEl0IGlzIHVuc2FmZSB0byBob25vciB0aGUgcmVxdWVzdCBmb3Ig
dGhpcyBvYmplY3QuCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEtVUkwgY29tcGxldGVk
VVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERhbmllbCBCYXRl
cyAoZGJhdGVzQGludHVkYXRhLmNvbSkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKKworI2luY2x1ZGUgIkNvbnNvbGUu
aCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorCit1c2luZyBuYW1l
c3BhY2UgV1RGOworCisvLyNkZWZpbmUgRU5BQkxFX1hTU0FVRElUT1JfREVCVUcgMQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgIAorLyoqIFRoaXMgbWV0aG9kIGFsc28gYXBwZWFycyBpbiBmaWxl
IFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcC4gVXNlZCBpbiBtZXRob2Qge0BsaW5rIFhTU0F1ZGl0
b3I6OmRlY29kZVVSTH0uICovCitzdGF0aWMgYm9vbCBpc0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIg
YykKK3sKKyAgcmV0dXJuIGMgPCAnICcgfHwgYyA9PSAxMjc7Cit9CisgIAorWFNTQXVkaXRvcjo6
WFNTQXVkaXRvcihGcmFtZSogZnJhbWUpIDogbV9pc0VuYWJsZWQodHJ1ZSksIG1fZnJhbWUoZnJh
bWUpCit7Cit9CisKK1hTU0F1ZGl0b3I6On5YU1NBdWRpdG9yKCkKK3sKK30KKyAgCitib29sIFhT
U0F1ZGl0b3I6OmlzRW5hYmxlZCgpIGNvbnN0Cit7CisgIHJldHVybiBtX2lzRW5hYmxlZDsKK30K
Kwordm9pZCBYU1NBdWRpdG9yOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGlzWFNTQXVkaXRv
ckVuYWJsZWQpCit7CisgIG1faXNFbmFibGVkID0gaXNYU1NBdWRpdG9yRW5hYmxlZDsKK30KKwor
Ym9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKSBjb25zdAoreworICBpZiAoIW1faXNFbmFibGVkKQorICAgIC8vIFRoaXMgPGNvZGU+
WFNTQXVkaXRvcjwvY29kZT4gaXMgZGlzYWJsZWQuCisgICAgcmV0dXJuIHRydWU7CisgIAorICBy
ZXR1cm4gY2FuRXZhbHVhdGUoU3RyaW5nKHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCkuZGF0YSgp
LCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLmxlbmd0aCgpKSk7Cit9CisgIAorYm9vbCBYU1NB
dWRpdG9yOjpjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpIGNvbnN0Cit7Cisg
IGlmICghbV9pc0VuYWJsZWQpCisgICAgLy8gVGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBp
cyBkaXNhYmxlZC4KKyAgICByZXR1cm4gdHJ1ZTsKKyAgCisgIEFTU0VSVChtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKKyAgU3RyaW5nIGNvZGUgPSBzb3VyY2VDb2RlLnN0cmlwV2hpdGVTcGFjZSgpOwor
ICBTdHJpbmcgcGFnZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLnN0
cmlwV2hpdGVTcGFjZSgpOworICBTdHJpbmcgZGVjb2RlZFBhZ2VVUkw7CisgIFN0cmluZyBjb25z
b2xlTWVzc2FnZTsKKyAgU3RyaW5nIGRhdGFVUkxNaW1lVHlwZTsKKyAgU3RyaW5nIGRlY29kZWRE
YXRhVVJMOworICBTdHJpbmcgZm9ybURhdGE7CisgIFN0cmluZyBkZWNvZGVkRm9ybURhdGE7Cisg
IEZvcm1EYXRhKiBmb3JtRGF0YU9iaiA9IDA7CisgIGJvb2wgZGlkRmluZENvZGVJblVSTCA9IHRy
dWU7CisgIGludCBwb3MgPSAtMTsKKyAgCisgIGlmIChwcm90b2NvbElzKHBhZ2VVUkwsICJkYXRh
IikpCisgICAgcmV0dXJuIHRydWU7CisgIAorICBmb3JtRGF0YU9iaiA9IG1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpOworICBp
ZiAoZm9ybURhdGFPYmogJiYgIWZvcm1EYXRhT2JqLT5pc0VtcHR5KCkpCisgICAgZm9ybURhdGEg
PSBmb3JtRGF0YU9iai0+ZmxhdHRlblRvU3RyaW5nKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgIAor
ICBpZiAoY29kZS5pc0VtcHR5KCkgfHwgcGFnZVVSTC5pc0VtcHR5KCkgfHwgcGFnZVVSTC5sZW5n
dGgoKSA8IGNvZGUubGVuZ3RoKCkKKyAgICB8fCAoZm9ybURhdGFPYmogJiYgIWZvcm1EYXRhT2Jq
LT5pc0VtcHR5KCkgJiYgZm9ybURhdGEubGVuZ3RoKCkgPCBjb2RlLmxlbmd0aCgpKSkKKyAgICAv
KiBUaGUgbGVuZ3RoIG9mIHRoZSBjb2RlIGlzIGxvbmdlciB0aGFuIHRoZSBsZW5ndGggb2YgYm90
aCB0aGUgVVJMIG9mIHRoZSBwYWdlIGFuZCB0aGUgUE9TVCBkYXRhIChpZiBhbnkpLiAKKyAgICAg
U28sIHRoaXMgY29kZSBjYW4gYmUgc2FmZWx5IGV4ZWN1dGVkLiAKKyAgICAgCisgICAgIE5vdGlj
ZSBpdCBpcyBzdWZmaWNpZW50IHRvIGNvbXBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgY29kZSB0byB0
aGUgdXJsLWVuY29kZWQgcGFnZSBVUkwgYW5kIFBPU1QgZGF0YSwgCisgICAgIHNpbmNlIHRoZSBs
ZW5ndGggb2YgdGhlIHVybC1kZWNvZGVkIGNvZGUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRo
ZSBsZW5ndGggb2YgdGhlIHVybC1lbmNvZGVkIGNvZGUgYW5kIAorICAgICBzdXBwb3NlIHRoZSBj
b2RlIGlzIGNvbnRhaW5lZCBpbiB0aGUgcGFnZSBVUkwgdGhlbiB0aGUgbGVuZ3RoIG9mIHRoZSB1
cmwtZW5jb2RlZCBjb2RlIGlzIHN0cmlja2x5IGxlc3MgCisgICAgIHRoYW4gdGhlIGxlbmd0aCBv
ZiB0aGUgdXJsLWVuY29kZWQgcGFnZSBVUkwgKGJlY2F1c2UgYSBVUkwgaGFzIGF0IGxlYXN0IGEg
cHJvdG9jb2wpLiBCeSBhIHNpbWlsaWFyIGFuYWx5c2lzLCAKKyAgICAgc3VwcG9zZSB0aGUgY29k
ZSBpcyBjb250YWluZWQgaW4gdGhlIFBPU1QgZGF0YSB0aGVuIHRoZSBsZW5ndGggb2YgdGhlIHVy
bC1lbmNvZGVkIGNvZGUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIAorICAgICB0byB0aGUgbGVuZ3Ro
IG9mIHRoZSB1cmwtZW5jb2RlZCBQT1NUIGRhdGEuCisgICAgICovCisgICAgcmV0dXJuIHRydWU7
CisgIAorICBkZWNvZGVkUGFnZVVSTCA9IGRlY29kZVVSTChwYWdlVVJMLCBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOworICBwb3MgPSBkZWNvZGVkUGFnZVVSTC5m
aW5kKGNvZGUsIDEsIGZhbHNlKTsKKyAgCisgIGlmIChwb3MgPT0gLTEgJiYgZm9ybURhdGFPYmog
JiYgIWZvcm1EYXRhT2JqLT5pc0VtcHR5KCkpIHsKKyAgICAvLyBTZWFyY2ggd2l0aGluIGZvcm0g
ZGF0YS4KKyAgICBkZWNvZGVkRm9ybURhdGEgPSBkZWNvZGVVUkwoZm9ybURhdGEsIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgcG9zID0gZGVjb2RlZEZv
cm1EYXRhLmZpbmQoY29kZSwgMSwgZmFsc2UpOworICAgIGRpZEZpbmRDb2RlSW5VUkwgPSBmYWxz
ZTsKKyAgfQorICAKKyAgaWYgKHBvcyAhPSAtMSkgeworICAgIGNvbnNvbGVNZXNzYWdlID0gU3Ry
aW5nOjpmb3JtYXQoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0IGZyb20g
ZnJhbWUgd2l0aCBVUkwgJXMuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gJXMu
XG4iLAorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkUGFnZVVSTC51dGY4KCkuZGF0YSgpLCAo
ZGlkRmluZENvZGVJblVSTCk/ICJmcmFtZSBVUkwiIDogIlBPU1QgZGF0YSIpOworICAgIAorICAg
IG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAg
fQorI2lmIEVOQUJMRShYU1NBVURJVE9SX0RFQlVHKQorICBjb25zb2xlTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCIlczogJWQsICVzOiAlcyAoJXMpLCByZWZ1c2VkQ29kZTogJyVzJ1xuIiwKKyAg
ICAgICAgICAgICAgICAgIChkaWRGaW5kQ29kZUluVVJMKT8gInBvc2l0aW9uSW5GcmFtZVVSTCIg
OiAicG9zaXRpb25JblBPU1REYXRhIiwKKyAgICAgICAgICAgICAgICAgIHBvcywKKyAgICAgICAg
ICAgICAgICAgIChkaWRGaW5kQ29kZUluVVJMKT8gIkZyYW1lVVJMIiA6ICJQT1NURGF0YSIsCisg
ICAgICAgICAgICAgICAgICAoZGlkRmluZENvZGVJblVSTCk/IHBhZ2VVUkwudXRmOCgpLmRhdGEo
KSA6IGZvcm1EYXRhLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAoZGlkRmluZENv
ZGVJblVSTCk/IGRlY29kZWRQYWdlVVJMLnV0ZjgoKS5kYXRhKCkgOiBkZWNvZGVkRm9ybURhdGEu
dXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgIGNvZGUuYXNjaWkoKS5kYXRhKCkpOwor
ICAKKyAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkp
OworI2VuZGlmCisgIHJldHVybiAocG9zID09IC0xKTsgCit9CisKK2Jvb2wgWFNTQXVkaXRvcjo6
Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGNvZGUpIGNvbnN0Cit7CisgIGlmICghbV9pc0VuYWJsZWQpCisgICAgLy8gVGhpcyA8Y29kZT5Y
U1NBdWRpdG9yPC9jb2RlPiBpcyBkaXNhYmxlZC4KKyAgICByZXR1cm4gdHJ1ZTsKKyAgCisgIHJl
dHVybiBjYW5FdmFsdWF0ZShjb2RlKTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2FkRXh0
ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAoreworICBpZiAoIW1f
aXNFbmFibGVkKQorICAgIC8vIFRoaXMgPGNvZGU+WFNTQXVkaXRvcjwvY29kZT4gaXMgZGlzYWJs
ZWQuCisgICAgcmV0dXJuIHRydWU7CisgIAorICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7
CisgIFN0cmluZyBwYWdlVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCku
c3RyaXBXaGl0ZVNwYWNlKCk7CisgIFN0cmluZyBkZWNvZGVkUGFnZVVSTCA9IGRlY29kZVVSTChw
YWdlVVJMLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOworICBT
dHJpbmcgY29uc29sZU1lc3NhZ2U7CisgIGludCBwb3MgPSBkZWNvZGVkUGFnZVVSTC5maW5kKHVy
bCwgMSwgZmFsc2UpOworICAKKyAgaWYgKHBvcyAhPSAtMSkgeworICAgIGNvbnNvbGVNZXNzYWdl
ID0gU3RyaW5nOjpmb3JtYXQoIlJlZnVzZWQgdG8gbG9hZCBhbiBleHRlcm5hbCBKYXZhU2NyaXB0
IHNjcmlwdCBmcm9tIGZyYW1lIHdpdGggVVJMICVzLiBVUkwgb2YgZXh0ZXJuYWwgc2NyaXB0IGZv
dW5kIHdpdGhpbiBmcmFtZSBVUkwuXG4iLAorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkUGFn
ZVVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICAKKyAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNv
bnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisgIH0KKyNpZiBFTkFCTEUoWFNTQVVESVRPUl9E
RUJVRykKKyAgY29uc29sZU1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgicG9zaXRpb25JbkZyYW1l
VVJMOiAlZCwgRnJhbWVVUkw6ICVzICglcyksIHJlZnVzZWRVUkw6ICclcydcbiIsCisgICAgICAg
ICAgICAgICAgICBwb3MsCisgICAgICAgICAgICAgICAgICBwYWdlVVJMLnV0ZjgoKS5kYXRhKCks
CisgICAgICAgICAgICAgICAgICBkZWNvZGVkUGFnZVVSTC51dGY4KCkuZGF0YSgpLAorICAgICAg
ICAgICAgICAgICAgdXJsLnV0ZjgoKS5kYXRhKCkpOworICAKKyAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxl
dmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOworI2VuZGlmCisgIHJldHVybiAocG9z
ID09IC0xKTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgdXJsKSBjb25zdAoreworICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgIFN0cmlu
ZyBwYWdlVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgIFN0cmluZyBvYmplY3RVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTCh1cmwpLnN0cmluZygpLnN0cmlwV2hpdGVTcGFjZSgpOworICBTdHJpbmcgZGVjb2Rl
ZFBhZ2VVUkwgPSBkZWNvZGVVUkwocGFnZVVSTCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2Rl
cigpLT5lbmNvZGluZygpKTsKKyAgU3RyaW5nIGRlY29kZWRPYmplY3RVUkwgPSBkZWNvZGVVUkwo
b2JqZWN0VVJMLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOwor
ICBTdHJpbmcgY29uc29sZU1lc3NhZ2U7CisgIGludCBwb3M7CisgIAorICBpZiAoZGVjb2RlZE9i
amVjdFVSTC5sZW5ndGgoKSA+IGRlY29kZWRQYWdlVVJMLmxlbmd0aCgpKQorICAgIHJldHVybiB0
cnVlOworICAKKyAgcG9zID0gZGVjb2RlZFBhZ2VVUkwuZmluZChkZWNvZGVkT2JqZWN0VVJMLCAx
LCBmYWxzZSk7CisgIGlmIChwb3MgIT0gLTEpIHsKKyAgICBjb25zb2xlTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJSZWZ1c2VkIHRvIGxvYWQgb2JqZWN0IGZyb20gZnJhbWUgd2l0aCBVUkwgJXMu
IFVSTCBvZiBvYmplY3QgZm91bmQgd2l0aGluIGZyYW1lIFVSTC5cbiIsCisgICAgICAgICAgICAg
ICAgICAgIGRlY29kZWRQYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOworICAgIAorICAgIG1fZnJhbWUt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsgICAgCisgIH0K
KyNpZiBFTkFCTEUoWFNTQVVESVRPUl9ERUJVRykKKyAgY29uc29sZU1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgicG9zaXRpb25JbkZyYW1lVVJMOiAlZCwgRnJhbWVVUkw6ICVzICglcyksIHJlZnVz
ZWRPYmplY3RVUkw6ICVzICglcylcbiIsCisgICAgICAgICAgICAgICAgICBwb3MsCisgICAgICAg
ICAgICAgICAgICBwYWdlVVJMLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICBkZWNv
ZGVkUGFnZVVSTC51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgb2JqZWN0VVJMLnV0
ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICBkZWNvZGVkT2JqZWN0VVJMLnV0ZjgoKS5k
YXRhKCkpOworICAKKyAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwg
MSwgU3RyaW5nKCkpOworI2VuZGlmCisgIHJldHVybiAocG9zID09IC0xKTsKK30KKworU3RyaW5n
IFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgYm9vbCBhbGxvd051bGxDaGFyYWN0ZXJzKSBjb25zdAoreworICBTdHJp
bmcgcmVzdWx0OworICBTdHJpbmcgdXJsID0gc3RyOworICAKKyAgdXJsLnJlcGxhY2UoJysnLCAn
ICcpOworICByZXN1bHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLCBlbmNvZGluZyk7
CisgIHJldHVybiAoYWxsb3dOdWxsQ2hhcmFjdGVycyk/IHJlc3VsdCA6IHJlc3VsdC5yZW1vdmVD
aGFyYWN0ZXJzKCZpc0NvbnRyb2xDaGFyYWN0ZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBYU1NB
dWRpdG9yCisKSW5kZXg6IFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IERhbmllbCBCYXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkKKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBYU1NBdWRpdG9yX2gKKyNkZWZpbmUgWFNTQXVk
aXRvcl9oCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisJCisJ
Y2xhc3MgRnJhbWU7CisJY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKKwkKKwkvKiogVGhlIFhTU0F1
ZGl0b3IgY2xhc3MgaXMgdXNlZCB0byBwcmV2ZW50IHR5cGUgMSBjcm9zcy1zaXRlIHNjcmlwdGlu
ZyB2dWxuZXJhYmlsaXRlcyAoYWxzbyBrbm93biBhcyByZWZsZWN0ZWQgdnVsbmVyYWJpbGl0aWVz
KS4KKwkgKiA8cD4KKwkgKiBNb3JlIHNwZWNpZmljYWxseSwgdGhlIFhTU0F1ZGl0b3IgY2xhc3Mg
ZGVjaWRlcyB3aGV0aGVyIHRoZSBleGVjdXRpb24gb2YgYSBzY3JpcHQgaXMgdG8gYmUgYWxsb3dl
ZCBvciBkZW5pZWQgYmFzZWQgb24gdGhlIAorCSAqIGNvbnRlbnQgb2YgYW55IHVzZXItc3VibWl0
dGVkIGRhdGEsIGluY2x1ZGluZzoKKwkgKiA8dWw+CisJICoJPGxpPnRoZSBxdWVyeSBzdHJpbmcg
b2YgdGhlIFVSTC4KKwkgKgk8bGk+dGhlIEhUVFAtUE9TVCBkYXRhLgorCSAqIDwvdWw+CisJICog
PHA+CisJICogSWYgdGhlIHNvdXJjZSBjb2RlIG9mIGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNl
ci1zdWJtaXR0ZWQgZGF0YSB0aGVuIGl0IGlzIGRlbmllZCBleGVjdXRpb24uCisJICogPHA+CisJ
ICogV2hlbiB5b3UgaW5zdGFudGlhdGUgdGhlIFhTU0F1ZGl0b3IgeW91IG11c3Qgc3BlY2lmeSB0
aGUge0BsaW5rIEZyYW1lfSBvZiB0aGUgcGFnZSB0aGF0IHlvdSB3aXNoIHRvIGF1ZGl0LgorCSAq
IDxwPgorCSAqIDxoMT5CaW5kaW5nczwvaDE+CisJICogPHA+CisJICogQW4gPGNvZGU+WFNTQXVk
aXRvcjwvY29kZT4gaXMgaW5zdGFudGlhdGVkIHdpdGhpbiB0aGUgY29udHJ1Y3RvciBvZiBhIHtA
bGluayBTY3JpcHRDb250cm9sbGVyfSBvYmplY3QgYW5kIAorCSAqIHBhc3NlZCB0aGUge0BsaW5r
IEZyYW1lfSB0aGUgc2NyaXB0IG9yaWdpbmF0ZWQuIFRoZSA8Y29kZT5TY3JpcHRDb250cm9sbGVy
PC9jb2RlPiBjYWxscyBiYWNrIHRvIHRoZSA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPgorCSAqIHRv
IGRldGVybWluZSB3aGV0aGVyIGEgSmF2YVNjcmlwdCBzY3JpcHQgaXMgc2FmZSB0byBleGVjdXRl
IGJlZm9yZSBleGVjdXRpbmcgaXQuIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYWxsIGludG8gCisJ
ICogPGNvZGU+WFNTQXVkaXRvcjwvY29kZT46CisJICogPHVsPgorCSAqCTxsaT57QGxpbmsgU2Ny
aXB0Q29udHJvbGxlciNldmFsdWF0ZX0gLSB1c2VkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgc2Ny
aXB0cy4KKwkgKgk8bGk+e0BsaW5rIFNjcmlwdENvbnRyb2xsZXIjY3JlYXRlSW5saW5lRXZlbnRM
aXN0ZW5lcn0gLSB1c2VkIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXJzLgorCSAq
CTxsaT57QGxpbmsgSFRNTFRva2VuaXplciNzY3JpcHRIYW5kbGVyfSAtIHVzZWQgdG8gbG9hZCBl
eHRlcm5hbCBKYXZhU2NyaXB0IHNjcmlwdHMuCisJICogPC91bD4KKwkgKi8KKwljbGFzcyBYU1NB
dWRpdG9yIHsKKwkJCisJcHVibGljOgorCQkKKwkJLyoqIENyZWF0ZXMgYSBuZXcgPGNvZGU+WFNT
QXVkaXRvcjwvY29kZT4gb2JqZWN0IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZp
ZWQgZnJhbWUuCisJCSAqIEBwYXJhbSBmcmFtZSB0aGUgZnJhbWUgdG8gYXNzb2NpYXRlIHdpdGgg
dGhpcyBhdWRpdG9yLgorCQkgKi8KKwkJWFNTQXVkaXRvcihGcmFtZSopOworCQkKKwkJLyoqIERl
c3RydWN0b3IuICovCisJCXZpcnR1YWwgflhTU0F1ZGl0b3IoKTsKKwkJCisJCS8qKiBSZXR1cm5z
IHdoZXRoZXIgdGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBpcyBlbmFibGVkLgorCQkgKiBy
ZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9jb2RlPiBp
cyBlbmFibGVkOworCQkgKgkJICA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhpcyA8Y29kZT5YU1NB
dWRpdG9yPC9jb2RlPiBpcyBkaXNhYmxlZC4KKwkJICovCisJCWJvb2wgaXNFbmFibGVkKCkgY29u
c3Q7CisJCQorCQkvKiogU2V0cyB3aGV0aGVyIHRoaXMgPGNvZGU+WFNTQXVkaXRvcjwvY29kZT4g
aXMgZW5hYmxlZC4KKwkJICogQHBhcmFtIGlzWFNTQXVkaXRvckVuYWJsZWQgPGNvZGU+dHJ1ZTwv
Y29kZT4gdG8gZW5hYmxlIHRoaXMgPGNvZGU+WFNTQXVkaXRvcjwvY29kZT47CisJCSAqCQkJCQkJ
CSAgPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIGRpc2FibGUgdGhpcyA8Y29kZT5YU1NBdWRpdG9yPC9j
b2RlPi4KKwkJICovCisJCXZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCk7CisJCQorCQkv
KiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVu
aWVkIGV4ZWN1dGlvbiBiYXNlZCBvbiB0aGUgY29udGVudCBvZiAKKwkJICogYW55IHVzZXItc3Vi
bWl0dGVkIGRhdGEuCisJCSAqIEBwYXJhbSBzb3VyY2VDb2RlIHRoZSBzb3VyY2UgY29kZSBvZiB0
aGUgc2NyaXB0IHRvIGV2YWx1YXRlLgorCQkgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlm
IHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV4ZWN1dGVkOworCQkgKgkJICAgPGNvZGU+ZmFsc2U8L2Nv
ZGU+IG90aGVyd2lzZS4KKwkJICovCisJCWJvb2wgY2FuRXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkgY29uc3Q7CisJCQorCQkvKiogRGV0ZXJtaW5lcyB3aGV0aGVy
IHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkIGV4ZWN1dGlvbiBiYXNlZCBv
biB0aGUgY29udGVudCBvZiAKKwkJICogYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisJCSAqIEBw
YXJhbSBzb3VyY2VDb2RlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGUgc2NyaXB0IHRvIGV2YWx1YXRl
LgorCQkgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzY3JpcHQgc2hvdWxkIGJl
IGV4ZWN1dGVkOworCQkgKgkJICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKwkJICov
CisJCWJvb2wgY2FuRXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdDsKKwkJ
CisJCS8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBj
cmVhdGVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIAorCQkgKiBhbnkgdXNlci1zdWJtaXR0ZWQg
ZGF0YS4KKwkJICogQHBhcmFtIHNvdXJjZUNvZGUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBzY3Jp
cHQgdG8gZXZhbHVhdGUuCisJCSAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGV2
ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVkOworCQkgKgkJICAgPGNvZGU+ZmFsc2U8L2Nv
ZGU+IG90aGVyd2lzZS4KKwkJICovCisJCWJvb2wgY2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5l
cihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlKSBjb25zdDsK
KwkJCisJCS8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4dGVybmFsIHNjcmlwdCBzaG91bGQg
YmUgbG9hZGVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIAorCQkgKiBhbnkgdXNlci1zdWJtaXR0
ZWQgZGF0YS4KKwkJICogQHBhcmFtIHNvdXJjZUNvZGUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBz
Y3JpcHQgdG8gZXZhbHVhdGUuCisJCSAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhl
IGV4dGVybmFsIHNjcmlwdCBzaG91bGQgbG9hZDsKKwkJICoJCSAgIDxjb2RlPmZhbHNlPC9jb2Rl
PiBvdGhlcndpc2UuCisJCSAqLworCQlib29sIGNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OworCQkKKwkJLyoqIERldGVybWluZXMgd2hldGhlciBv
YmplY3Qgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBvbiB0aGUgY29udGVudCBvZiAKKwkJICogYW55
IHVzZXItc3VibWl0dGVkIGRhdGEuCisJCSAqIDxwPgorCQkgKiBUaGlzIG1ldGhvZCBpcyBjYWxs
ZWQgYnkgbWV0aG9kIHtAbGluayBGcmFtZUxvYWRlciNyZXF1ZXN0T2JqZWN0fS4KKwkJICogQHBh
cmFtIHVybCB0aGUgdXJsIG9mIHRoZSByZXF1ZXN0ZWQgb2JqZWN0LgorCQkgKiBAcmV0dXJuIDxj
b2RlPnRydWU8L2NvZGU+IGlmIHRoZSByZXF1ZXN0ZWQgb2JqZWN0IHNob3VsZCBiZSBsb2FkZWQ7
CisJCSAqCQkgICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorCQkgKi8KKwkJYm9vbCBj
YW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsJCQorCQkKKwlwcml2YXRlOgor
CQkKKwkJLyoqIFdoZXRoZXIgdG8gYXVkaXQgc2NyaXB0cy4gKi8KKwkJYm9vbCBtX2lzRW5hYmxl
ZDsKKwkJCisJCS8qKiBUaGUgZnJhbWUgdG8gYXVkaXQuICovCisJCUZyYW1lKiBtX2ZyYW1lOwor
CQkKKwkJU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29k
aW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMg
PSBmYWxzZSkgY29uc3Q7CisJfTsKKwkKK30gLy8gbmFtZXNwYWNlIFhTU0F1ZGl0b3IKKworI2Vu
ZGlmIC8vIFhTU0F1ZGl0b3JfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31109</attachid>
            <date>2009-06-09 15:29:58 -0700</date>
            <delta_ts>2009-06-14 13:50:07 -0700</delta_ts>
            <desc>SunSpider comparison</desc>
            <filename>compare.pdf</filename>
            <type>application/pdf</type>
            <size>55845</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">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
KnY91Oc4UC9KTIoM7YPapL2nC39AOTGD0d44gq3r4T4Hx8d6Mg8JLfDMhvOP5DVb4/FnqDDH2bzr
e3qXc9MXeiD9AHRNBHQ1FU7iJZuhD/WDyWfcsrgebmwIDO5pOLAr4NhdUDDs7ElCsmXWGKE01KwQ
mNwTeTD+K3yTjcsnnDewGbMyyKw+lGz1O4LQ+J7WfopEfW5PJk7tWUQv/oClgUSGFMkdFjD1hIYt
eQyh72kqnND2yKMXGlLt9e5lFBBPTa2lcSoyhAzvVyMXr81QAU4g/UOipQaYwkmGo6Wu8TW3saOl
GowWd1a0I/hQtNSoqUNmdH0bnnokNFTcY0TLUJsghD+mOqWDqfeHuCojqqN8f6bQY0frjxTiw6U/
n4ad0vlXJ/VQijexLgYG4sqvCjWMtz5nxcPIR1LTjeCVdqiEdk+VOoE02LwJXYVsGep+0NgrkuvL
r7iHtcMFNI4f9/QbbN7+HxQcqq7dA66ehvshKqsiVhwADihEZYWvmMYE8ZAqZNxnDe1wHX5mD4N3
VNxXUOC4YFhvvAbxSDOEqM4fgoGPW2a17UB/ROAcTqx39BsKUTxgTbzlwBI8gE2UfkgTO64HZTHU
kwjBj38TJYdc2MTNiasC1cQ+JfTuXzHLyGK4gXGPqKd03p+VHNiS8RAkBCTXEfguQPArvtA+ypYs
i+EOhr9k4P5HBCv4gNS6MEFCbszxYDxoYneE3pYF7ey3JPF4Or6ic5wf/QYB/muBCf2nGsp9gwB3
fMceJ7LtwyOT04lvfIHgr6qQ9d/Cf6Lx2/8AxpanbgplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoK
NDE3MQplbmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJj
ZXMgNiAwIFIgL0NvbnRlbnRzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Bbm5vdHMg
MTMgMCBSID4+CmVuZG9iago2IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdIC9Db2xv
clNwYWNlIDw8IC9DczEgNyAwIFIgL0NzMiAxMSAwIFIgPj4gL0ZvbnQKPDwgL0YxLjAgOCAwIFIg
L0Y1LjEgMTUgMCBSIC9GMi4wIDkgMCBSIC9GNC4wIDEyIDAgUiAvRjMuMCAxMCAwIFIgPj4gPj4K
ZW5kb2JqCjEzIDAgb2JqClsgMTQgMCBSIF0KZW5kb2JqCjE3IDAgb2JqCjw8IC9MZW5ndGggMTgg
MCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
cmVhbQp4AYWUTUgUYRjH/7ONBLEG0ZcIxdDBJFQmC1IC0/UrU7Zl1UwJYp19d50cZ6eZ3S1FIoTo
mHWMLlZEh4hO4aFDpzpEBJl1iaCjRRAFXiK2/zuTu2NUvjAzv3me//t8vcMAVY9SjmNFNGDKzrvJ
3ph2enRM2/waVahGFFwpw3M6EokBn6mVz/Vr9S0UaVlqlLHW+zZ8q3aZEFA0KndkAz4seTzg45Iv
5J08NWckGxOpNNkhN7hDyU7yLfLWbIjHQ5wWngFUtVOTMxyXcSI7yC1FIytjPiDrdtq0ye+lPe0Z
U9Sw38g3OQvauPL9QNseYNOLim3MAx7cA3bXVWz1NcDOEWDxUMX2PenPR9n1ysscavbDKdEYa/pQ
Kn2vAzbfAH5eL5V+3C6Vft5hDtbx1DIKbtHXsjDlJRDUG+xm/OQa/YuDnnxVC7DAOY5sAfqvADc/
AvsfAtsfA4lqYKgVkctsN7jy4iLnAnTmnGnXzE7ktWZdP6J18GiF1mcbTQ1ayrI03+VprvCEWxTp
JkxZBc7ZX9t4jwp7eJBP9he5JLzu36zMpVNdnCWa2NantOjqJjeQ72fMnj5yPa/3GbdnOGDlgJnv
Gwo4csq24jwXqYnU2OPxk2TGV1QnH5PzkDznFQdlTN9+LnUiQa6lPTmZ65eaXdzbPjMxxDOSrFgz
E53x3/zGLSRl3n3U3HUs/5tnbZFnGIUFARM27zY0JNGLGBrhwEUOGXpMKkxapV/QasLD5F+VFhLl
XRYVvVjhnhV/z3kUuFvGP4VYHHMN5Qia/k7/oi/rC/pd/fN8baG+4plzz5rGq2tfGVdmltXIuEGN
Mr6sKYhvsNoOei1kaZ3iFfTklfWN4eoy9nxt2aPJHOJqfDXUpQhlasQ448muZfdFssU34edby/av
6VH7fPZJTSXXsrp4Zin6fDZcDWv/s6tg0rKr8OSNkC48a6HuVQ+qfWqL2gpNPaa2q21qF9+OqgPl
HcOclYkLrNtl9Sn2YGOa3spJV2aL4N/CL4b/pV5hC9c0NPkPTbi5jGkJ3xHcNnCHlP/DX7MDDd4K
ZW5kc3RyZWFtCmVuZG9iagoxOCAwIG9iago3OTIKZW5kb2JqCjcgMCBvYmoKWyAvSUNDQmFzZWQg
MTcgMCBSIF0KZW5kb2JqCjE5IDAgb2JqCjw8IC9MZW5ndGggMjAgMCBSIC9OIDEgL0FsdGVybmF0
ZSAvRGV2aWNlR3JheSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFUk9IFFEc/s02
EoSIQYV4iHcKCZUprKyg2nZ1WZVtW5XSohhn37qjszPTm9k1xZMEXaI8dQ+iY3Ts0KGbl6LArEvX
IKkgCDx16PvN7OoohG95O9/7/f1+33tEbZ2m7zspQVRzQ5UrpaduTk2Lgx8pRR3UTlimFfjpYnGM
seu5kr+719Zn0tiy3se1dvv2PbWVZWAh6i22txD6IZFmAB+ZnyhlgLPAHZav2D4BPFgOrBrwI6ID
D5q5MNPRnHSlsi2RU+aiKCqvYjtJrvv5uca+i7WJg/5cj2bWjr2z6qrRTNS090ShvA+uRBnPX1T2
bDUUpw3jnEhDGinyrtXfK0zHEZErEEoGUjVkuZ9qTp114HUYu126k+P49hClPslgqIm16bKZHYV9
AHYqy+wQ8AXo8bJiD+eBe2H/W1HDk8AnYT9kh3nWrR/2F65T4HuEPTXgzhSuxfHaih9eLQFD91Qj
aIxzTcTT1zlzpIjvMdQZmPdGOaYLMXeWqhM3gDthH1mqZgqxXfuu6iXuewJ30+M70Zs5C1ygHEly
sRXZFNA8CVgUfYuwSQ48Ps4eVeB3qJjAHLmJ3M0o9x7VERtno1KBVnqNV8ZP47nxxfhlbBjPgH6s
dtd7fP/p4xV117Y+PPmNetw5rr2dG1VhVnFlC93/xzKEj9knOabB06FZWGvYduQPmsxMsAwoxH8F
Ppf6khNV3NXu7bhFEsxQPixsJbpLVG4p1Oo9g0qsHCvYAHZwksQsWhy4U2u6OXh32CJ6bflNV7Lr
hv769nr72vIebcqoKSgTzbNEZpSxW6Pk3Xjb/WaREZ84Or7nvYpayf5JRRA/hTlaKvIUVfRWUNbE
b2cOfhu2flw/pef1Qf08CT2tn9Gv6KMRvgx0Sc/Cc1Efo0nwsGkh4hKgioMz1E5UY40D4inx8rRb
ZJH9D0AZ/WYKZW5kc3RyZWFtCmVuZG9iagoyMCAwIG9iago3MDQKZW5kb2JqCjExIDAgb2JqClsg
L0lDQ0Jhc2VkIDE5IDAgUiBdCmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFC
b3ggWzAgMCA2MTIgNzkyXSAvQ291bnQgMSAvS2lkcyBbIDIgMCBSIF0gPj4KZW5kb2JqCjIxIDAg
b2JqCjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAzIDAgUiA+PgplbmRvYmoKMTQgMCBvYmoKPDwg
L1N1YnR5cGUgL0xpbmsgL1R5cGUgL0Fubm90IC9Cb3JkZXIgWyAwIDAgMCBdIC9BIDIyIDAgUiAv
UmVjdCBbMjkuMjk0MTIgNjc5Ljk3NjQgNzEuNjQ3MDYgNjkwLjE0MTJdCj4+CmVuZG9iagoyMiAw
IG9iago8PCAvVVJJIDIzIDAgUiAvVHlwZSAvQWN0aW9uIC9TIC9VUkkgPj4KZW5kb2JqCjIzIDAg
b2JqCihodHRwOi8vd3d3Mi53ZWJraXQub3JnL3BlcmYvc3Vuc3BpZGVyLTAuOS9zdW5zcGlkZXIt
ZHJpdmVyLmh0bWwpCmVuZG9iagoyNCAwIG9iago8PCAvTGVuZ3RoIDI1IDAgUiAvTGVuZ3RoMSAy
MTUzNiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9vAlgVEW2P1yn6i59e729Z093
moSlwUDCFozSCMGwKYJiokZAAQFFQMQF2UTDEnAZBAMijo4boEgTUIKOgo6JMKNPxqe4zIy7Ao7M
ODMqqKTz/ep2B8Fx5pvve+//v91V51bVvXWrTp1z6pxTdS8jxpiTLWaCJa6cMXFWrGvf8ch5lTHy
XXnD9ZGvDv/1v3D+IWPaM1NmXTVjbsBMMWZbx5ir/Kprbp7Sd+6HScaCuL60eurkiZP+0XPiDsaq
Aqij71RkOMfxT5EeiXSnqTOuv+nTmrxlSM9Cet81M6+c2ElkvcHY0P5IT5kx8aZZ2lZ3HOkHkY5c
O3HG5JeXHPst0nuRLp41c871yjfqHKQPI7101nWTZ5V8fG6IsXNRn3Mb8gg/eThxqlln/zayLubp
S4SiarrNsDucLrfH9MpMH2N+JruCHjKG54RZVraV7IhycvPyCwoj0SIW61Rc0rkL69ot3r3HGaU9
Oy74X4K9/v/Wo8UZWqzuY8Ud8ak1KWezLJlu/4MVS6xa56m57dY5Y6l3ZN7/5LDhZhmU/0kl8t4W
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
sNJX6ak0KrVKUckqR5dT0jeCjbjwnKSfAMeekyyPj2gWkTHJsviIpDH60vS3CpCb5Mvxsv6FSWV5
MwfwDb7k0ppmypafMqjP3S37nRwxof6OWnyn5pwkLU/G8O4+QALfEYgsx1c0LqzZzukcfK8l2Q/f
T5BX1cbzk5Pk9ywW59cmy+TJ3fm1+ETHgAuSubFz4j895siMOddb4Mey7V1KqpLdqiYmu1dNGPJj
djzOkECDq5KpqonNxGOnFXZc+JPKOrIB5+DIJJv5/KpmPg/V8IU/X83J+5rFeVXNYiQuFaPlpdfP
wes4//qYcz3KyIp/epH18OvnoiGnlSADxxygQd4q8WGBUyKr2XPSBezUYnaypo7cDnjKQ07pdqZO
edecOA2uya2N45M0yRiIpOOGTI0SUDPNl5/BaaYFabAwDRalweI0uDUNlqTBbWlwexrUp8HSNFiW
BsvTYIUEmZ5BKznTyuWVaXBWGpydBgPTIJEGg9LgnDQYnAbW93qaeVU6NTQNzpUAeEPf5mw3JPWP
HnPOiKQNH5yxjb40mRNDYh8SfZFwxs5h/w921dgUCmVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmoK
MTQ1MjkKZW5kb2JqCjI2IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDk2
NyAvQ2FwSGVpZ2h0IDczMiAvRGVzY2VudCAtMjExIC9GbGFncyAzMgovRm9udEJCb3ggWy0xMDY3
IC03MzcgMTY0MSAxMTYyXSAvRm9udE5hbWUgL1pWWFhYUStMdWNpZGFHcmFuZGUgL0l0YWxpY0Fu
Z2xlCjAgL1N0ZW1WIDEwMyAvTWF4V2lkdGggMTY0MCAvU3RlbUggNzcgL1hIZWlnaHQgNTM2IC9G
b250RmlsZTIgMjQgMCBSID4+CmVuZG9iagoyNyAwIG9iagpbIDMxNiAwIDAgMCAwIDY2OCAwIDAg
MCAwIDAgMCAzMTYgNTc5IDMxNiA1MjQgNjMyIDYzMiA2MzIgNjMyIDYzMiA2MzIgNjMyCjYzMiA2
MzIgNjMyIDMxNiAwIDAgMCAwIDQyMiAwIDAgNTc1IDAgNzQ5IDAgMCAwIDAgMCAzMTEgMCAwIDg2
MSAwIDAgNTUzIDAKNjMyIDUzOSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU1MiA2MjkgNTEy
IDYyOSA1NTcgMzY4IDYyNCA2MjEgMjg5IDAgNTg0CjI4OSA5MzQgNjIxIDYxNCA2MjkgMCA0MDkg
NTEwIDM3NCA2MjEgNTE4IDc3MSA2MTMgNTIyIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMTAwMCBdCmVuZG9iago4IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0
eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL1pWWFhYUStMdWNpZGFHcmFuZGUgL0ZvbnREZXNjcmlw
dG9yCjI2IDAgUiAvV2lkdGhzIDI3IDAgUiAvRmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAyMDEgL0Vu
Y29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+CmVuZG9iagozMCAwIG9iago8PCAvTGVuZ3RoIDMx
IDAgUiAvU3VidHlwZSAvQ0lERm9udFR5cGUwQyAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl
YW0KeAF1UkFrE0EYnUkyWUynlSZuN9JJO1iraTXbVqXSi1jbaqntUtpIQephbbYxpmbjpgoBwas0
pSgeRCF6yQ8QY0FPAZEeCrV/QTzloNTbzHaS4qR4kBQHvo/3vfdmmDcMBD4PgBBq16YnJm7Hz02m
HPOmmX4069hGbGG4Ic3yTk5e4C4egbzLU8DeAvbVemvzBA0QBFHEB8BOxLe5deewtb3E3RHwY7uO
ewgN41PEcwWfJnCqncAbuJfA8ePAD6EfF9683xpN2HetKTNrZobG7GzeSSXvrdLF6NJiHx0aGbkY
uzA4eJmOm6lMKpu1M3R+ybGsDJ1ZTup0zNbP0+nVhE5HV1boXGNnjs5ZOct5bCX0RopkKmPTVI6a
dNUxE9YD00lTe/k/xzXFHm2siebHOGTHmlkAANUABMAD4cze2Yr7swL3Ku50xbvn/lYP4u7H/bgy
vKCKbzVN7HINuf31r3LiGpOF6n31L6pEHWyn1oHq/R9Ut6iw3dpJ1Mau8kviYSlXCrJPf1HoOX/G
v6tC0XWhCKWqM4Up1Wqj61WhdIfGn7INVRglZiihybWDqMoMRxgKT/P7knaY4Q9FD6Lrki4Jw896
xC+VaUzLF4UmwsglbqcqkVbMSzaM1uoBOUo5z8JC3rXTJdIu5aIIMw21NTJrMU7xmULrP1/iM/Fk
g7y7id0knrdBsVEg6HrB3xVAwIsG8DHmDTBvC/NiLKt1HbdL5fWrW+9wcP/JiSPucqDcUsa4fMT5
B311A0oKZW5kc3RyZWFtCmVuZG9iagozMSAwIG9iago1NzIKZW5kb2JqCjI5IDAgb2JqCjw8IC9U
eXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDg4MCAvQ2FwSGVpZ2h0IDc5MiAvRGVzY2VudCAt
MTIwIC9GbGFncyAzMgovRm9udEJCb3ggWy00MzIgLTQ3OCAxMzU4IDEzMTJdIC9Gb250TmFtZSAv
QkxFRVpUK0hpcmFLYWt1UHJvTi1XNiAvSXRhbGljQW5nbGUKMCAvU3RlbVYgMTI5IC9BdmdXaWR0
aCAxMDAwIC9MZWFkaW5nIDUwMCAvTWF4V2lkdGggMTc5MCAvU3RlbUggMTE3IC9YSGVpZ2h0CjU3
MSAvRm9udEZpbGUzIDMwIDAgUiA+PgplbmRvYmoKMzIgMCBvYmoKWyBdCmVuZG9iagoyOCAwIG9i
ago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvQ0lERm9udFR5cGUwIC9CYXNlRm9udCAvQkxFRVpU
K0hpcmFLYWt1UHJvTi1XNiAvQ0lEU3lzdGVtSW5mbwo8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3Jk
ZXJpbmcgKEphcGFuMSkgL1N1cHBsZW1lbnQgNiA+PiAvRm9udERlc2NyaXB0b3IgMjkgMCBSCi9X
IDMyIDAgUiAvRFcgMTAwMCA+PgplbmRvYmoKMTUgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5
cGUgL1R5cGUwIC9FbmNvZGluZyAvSWRlbnRpdHktSCAvQmFzZUZvbnQgL0JMRUVaVCtIaXJhS2Fr
dVByb04tVzYKL0Rlc2NlbmRhbnRGb250cyBbIDI4IDAgUiBdID4+CmVuZG9iagozMyAwIG9iago8
PCAvTGVuZ3RoIDM0IDAgUiAvTGVuZ3RoMSA5NDk2IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
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
c2NlbnQgNzcwIC9DYXBIZWlnaHQgNzMxIC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJv
eCBbLTEwMTggLTQ4MSAxNDM2IDExNTldIC9Gb250TmFtZSAvVFVWU1dJK0hlbHZldGljYS1Cb2xk
IC9JdGFsaWNBbmdsZQowIC9TdGVtViAxNDkgL01heFdpZHRoIDE1MDAgL1N0ZW1IIDEyNCAvWEhl
aWdodCA1NDAgL0ZvbnRGaWxlMiAzMyAwIFIgPj4KZW5kb2JqCjM2IDAgb2JqClsgMjc4IDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDcyMgowIDAgMCAwIDAgMCAwIDU1NiAwIDAgMCAwIDAgMCAwIDcyMiA2NjcgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCA1NTYgMCA1NTYKNjExIDU1NiAwIDAgNjExIDI3OCAwIDU1NiAyNzgg
ODg5IDYxMSAwIDYxMSAwIDM4OSA1NTYgMzMzIDYxMSA1NTYgXQplbmRvYmoKOSAwIG9iago8PCAv
VHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9UVVZTV0krSGVsdmV0aWNh
LUJvbGQgL0ZvbnREZXNjcmlwdG9yCjM1IDAgUiAvV2lkdGhzIDM2IDAgUiAvRmlyc3RDaGFyIDMy
IC9MYXN0Q2hhciAxMTggL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+CmVuZG9iagozNyAw
IG9iago8PCAvTGVuZ3RoIDM4IDAgUiAvTGVuZ3RoMSAyMDA1MiAvRmlsdGVyIC9GbGF0ZURlY29k
ZSA+PgpzdHJlYW0KeAHVfHlglMXd/8zzPHsku5u9dxP2vs9kj1zkgGwggBJAREQQohwhKoiCHB6p
RRSqSNGqiFweVUChHsjVJiJqDbS2UvUnaOmrLdq0ahtT35YqxbD5fWaeDUJ/fX//v9nMPc88M9/5
3jO7hBJCtOQuIpLcvEVzFos/k4pQ8zbCr+atWOb9ZvXi3YTQTYQIP+pYfN2iOfbFEwiRomhff92N
t3cM0937BMo/I6Tx+uvnz2n/7ydmuwlp9qK9hlUo/zq4FeXpKAevX7TsNttyVzXK30P58xtvnjfn
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
MzggMCBvYmoKMTM4NzgKZW5kb2JqCjM5IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAv
QXNjZW50IDc1NCAvQ2FwSGVpZ2h0IDU4NyAvRGVzY2VudCAtMjQ2IC9GbGFncyAzMwovRm9udEJC
b3ggWy02NTUgLTQwOSA3NjQgMTA4OV0gL0ZvbnROYW1lIC9STE1DTE4rQ291cmllciAvSXRhbGlj
QW5nbGUgMCAvU3RlbVYKNzYgL01heFdpZHRoIDgyMyAvU3RlbUggNjcgL1hIZWlnaHQgNDU3IC9G
b250RmlsZTIgMzcgMCBSID4+CmVuZG9iago0MCAwIG9iagpbIDYwMCAwIDAgMCAwIDYwMCAwIDAg
MCAwIDYwMCA2MDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAw
IDYwMCA2MDAgNjAwIDAgMCA2MDAgMCA2MDAgMCA2MDAgMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDYw
MCAwIDAgNjAwIDYwMAo2MDAgNjAwIDYwMCAwIDYwMCA2MDAgNjAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDAgNjAwIDYwMCA2MDAg
NjAwIDYwMCA2MDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIF0KZW5kb2JqCjEy
IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL1JMTUNM
TitDb3VyaWVyIC9Gb250RGVzY3JpcHRvcgozOSAwIFIgL1dpZHRocyA0MCAwIFIgL0ZpcnN0Q2hh
ciAzMiAvTGFzdENoYXIgMTIxIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+PgplbmRvYmoK
NDEgMCBvYmoKPDwgL0xlbmd0aCA0MiAwIFIgL0xlbmd0aDEgMTIxMjQgL0ZpbHRlciAvRmxhdGVE
ZWNvZGUgPj4Kc3RyZWFtCngBvXp5fFRF9m9V3bWXdHrfO92dTnensy8k0CaQa0jCmgiJQoIGE0gg
IIyAMRoUJiqIREQFWURHRR0IMJgmRGlAfIyDIo4/FccVl9Gf6OC8ydOZh86M0N2/U7eTCH588/xj
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
YmoKNDIgMCBvYmoKODI5MQplbmRvYmoKNDMgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9y
IC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNzI3IC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9Gb250
QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0ZvbnROYW1lIC9QVVNXUEMrSGVsdmV0aWNhIC9J
dGFsaWNBbmdsZSAwCi9TdGVtViA5OCAvTWF4V2lkdGggMTUwMCAvU3RlbUggODUgL1hIZWlnaHQg
NTMxIC9Gb250RmlsZTIgNDEgMCBSID4+CmVuZG9iago0NCAwIG9iagpbIDI3OCAwIDAgMCAwIDAg
MCAwIDMzMyAzMzMgMCAwIDI3OCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjc4IDAgMCAw
CjAgMCAwIDY2NyAwIDAgMCAwIDAgMCAwIDAgMCAwIDU1NiAwIDAgMCAwIDAgNzIyIDAgNjExIDcy
MiAwIDAgMCA2NjcgMCAwIDAKMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYgNTU2
IDIyMiAwIDUwMCAyMjIgODMzIDU1NiA1NTYgNTU2IDAgMzMzCjUwMCAyNzggNTU2IDUwMCA3MjIg
NTAwIF0KZW5kb2JqCjEwIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAv
QmFzZUZvbnQgL1BVU1dQQytIZWx2ZXRpY2EgL0ZvbnREZXNjcmlwdG9yCjQzIDAgUiAvV2lkdGhz
IDQ0IDAgUiAvRmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAxMjAgL0VuY29kaW5nIC9NYWNSb21hbkVu
Y29kaW5nCj4+CmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAoU3VuU3BpZGVyIEphdmFTY3JpcHQg
QmVuY2htYXJrIFJlc3VsdHMpIC9BdXRob3IgKERhbmllbCBCYXRlcykKL1N1YmplY3QgKCkgL0FB
UEw6S2V5d29yZHMgWyAoKSBdIC9LZXl3b3JkcyAoKSAvQ3JlYXRvciAoU2FmYXJpKSAvUHJvZHVj
ZXIKKE1hYyBPUyBYIDEwLjUuNiBRdWFydHogUERGQ29udGV4dCkgL0NyZWF0aW9uRGF0ZSAoRDoy
MDA5MDYwOTAzNDYxNVowMCcwMCcpCi9Nb2REYXRlIChEOjIwMDkwNjA5MDM0NjE1WjAwJzAwJykg
Pj4KZW5kb2JqCnhyZWYKMCA0NQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwNTQ1MDkgMDAwMDAg
biAKMDAwMDAwNDI4NyAwMDAwMCBuIAowMDAwMDA2NDEwIDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAw
MDAgbiAKMDAwMDAwNDI2NyAwMDAwMCBuIAowMDAwMDA0NDA2IDAwMDAwIG4gCjAwMDAwMDU1MDkg
MDAwMDAgbiAKMDAwMDAyMjE0NSAwMDAwMCBuIAowMDAwMDMwNTQwIDAwMDAwIG4gCjAwMDAwNTQz
MzQgMDAwMDAgbiAKMDAwMDAwNjM3MyAwMDAwMCBuIAowMDAwMDQ1MjU2IDAwMDAwIG4gCjAwMDAw
MDQ1NjcgMDAwMDAgbiAKMDAwMDAwNjU0MyAwMDAwMCBuIAowMDAwMDIzNTExIDAwMDAwIG4gCjAw
MDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwNDU5NCAwMDAwMCBuIAowMDAwMDA1NDg5IDAwMDAwIG4g
CjAwMDAwMDU1NDUgMDAwMDAgbiAKMDAwMDAwNjM1MyAwMDAwMCBuIAowMDAwMDA2NDkzIDAwMDAw
IG4gCjAwMDAwMDY2NjUgMDAwMDAgbiAKMDAwMDAwNjcyMSAwMDAwMCBuIAowMDAwMDA2ODAzIDAw
MDAwIG4gCjAwMDAwMjE0MjMgMDAwMDAgbiAKMDAwMDAyMTQ0NSAwMDAwMCBuIAowMDAwMDIxNjg2
IDAwMDAwIG4gCjAwMDAwMjMzMDYgMDAwMDAgbiAKMDAwMDAyMzAxNCAwMDAwMCBuIAowMDAwMDIy
MzIyIDAwMDAwIG4gCjAwMDAwMjI5OTQgMDAwMDAgbiAKMDAwMDAyMzI4NiAwMDAwMCBuIAowMDAw
MDIzNjQ1IDAwMDAwIG4gCjAwMDAwMzAwMzkgMDAwMDAgbiAKMDAwMDAzMDA2MCAwMDAwMCBuIAow
MDAwMDMwMzA0IDAwMDAwIG4gCjAwMDAwMzA3MTkgMDAwMDAgbiAKMDAwMDA0NDY4OCAwMDAwMCBu
IAowMDAwMDQ0NzEwIDAwMDAwIG4gCjAwMDAwNDQ5NDIgMDAwMDAgbiAKMDAwMDA0NTQyOSAwMDAw
MCBuIAowMDAwMDUzODExIDAwMDAwIG4gCjAwMDAwNTM4MzIgMDAwMDAgbiAKMDAwMDA1NDA2OCAw
MDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDQ1IC9Sb290IDIxIDAgUiAvSW5mbyAxIDAgUiAvSUQg
WyA8N2FhM2RmODQ0MzVmY2E0YTNjNTcwMzFlNzhhNjgwYzA+Cjw3YWEzZGY4NDQzNWZjYTRhM2M1
NzAzMWU3OGE2ODBjMD4gXSA+PgpzdGFydHhyZWYKNTQ3ODcKJSVFT0YK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31126</attachid>
            <date>2009-06-10 01:52:49 -0700</date>
            <delta_ts>2009-06-10 02:06:18 -0700</delta_ts>
            <desc>Cleaned up patch (disabled by default)</desc>
            <filename>0001-XSSAuditor (1).patch</filename>
            <type>text/plain</type>
            <size>28738</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBlN2MyODA0MjAzNGJlODk1ZTM5ZjEwZWIwZWFkNzliY2Y3OGQ2MWI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVHVlLCA5IEp1biAyMDA5IDE2OjI1OjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gWFNTQXVk
aXRvcgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA0OCArKysrKysrKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDEgKwogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgICB8ICAg
IDggKysKIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgICA4
ICsrCiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwICAgIHwgICAgNyAr
CiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCAgICAgIHwgICAgNyArCiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIHwgICAxMSArKwogV2Vi
Q29yZS9kb20vVG9rZW5pemVyLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIFdlYkNv
cmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcCAgICAgICAgICAgICAgfCAgIDE0ICsrLQogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwICAgICAgICAgICAgICB8ICAgIDkgKysKIFdlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIFdlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmNwcCAgICAgICAgICAgICAgICAgfCAgMTYxICsrKysrKysrKysrKysrKysrKysr
KysrKysrKwogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaCAgICAgICAgICAgICAgICAgICB8ICAx
MTMgKysrKysrKysrKysrKysrKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wYWdlL1hTU0F1
ZGl0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2Y1NDU3Zi4uNDE3ZGRmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAwOS0wNi0xMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE5
OQorCisgICAgICAgIEFkZGVkIGFuIGV4cGVyaW1lbnRhbCByZWZsZWN0aXZlIFhTUyBmaWx0ZXIu
ICBUaGUgZmlsdGVyIGlzIGRpc2FibGVkIGJ5CisgICAgICAgIGRlZmF1bHQuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjphY3RpdmVYU1NBdWRpdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ub2tlbml6ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRva2VuaXplcjo6YWN0aXZlWFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbml6ZXI6OnNldFhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5pemVy
OjpUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmJlZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVuYWJsZWQp
OgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
Ojp4c3NBdWRpdG9yRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0NvbnRyb2xDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjp+WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5FdmFs
dWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5DcmVhdGVJbmxpbmVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRFeHRlcm5h
bFNjcmlwdEZyb21TcmMpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Y2FuTG9hZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9Y
U1NBdWRpdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OnNldFhTU0F1ZGl0b3JFbmFibGVk
KToKKwogMjAwOS0wNi0wOSAgUGllcnJlIGQnSGVyYmVtb250ICA8cGRoZXJiZW1vbnRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTUxYzAx
YS4uOTE1ZjIxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjY3LDYgKzEyNjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGFnZS9XZWJLaXRQb2ludC5oIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCisJV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKIAlX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBmOThmMTg2Li44ZGE1MTkzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTg5MSw2ICs4
OTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAogICAgIHBhZ2UvU2V0
dGluZ3MuY3BwIFwKICAgICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBcCisgICAgcGFnZS9YU1NB
dWRpdG9yLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBcCiAgICAgcGx1Z2lucy9Q
bHVnaW5BcnJheS5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2MDUyY2U0Li5jNDFmOWE5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIyOTEsNiArMjI5MSwxNCBAQAogCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxXb3JrZXJOYXZpZ2F0b3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdl
XFhTU0F1ZGl0b3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5h
bWU9IndpbiINCiAJCQkJPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYzdiMjdlZS4uMjhmNWVmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIxMzgsNiArMjEzOCw4IEBACiAJCTkzRjlCN0EwMEJBNjAzMjYw
MDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNl
Y3Rpb24uY3BwICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZE
QUZDQTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0
NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdE
RDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OworCQk5N0RENEQ4
NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuaCAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50
RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsg
fTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjEwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQlBNzA5NEFGQTBG
MjdBRTYwMDA1OTZDRUMgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA5NEFGOTBGMjdBRTYwMDA1OTZDRUMgLyog
Q2FudmFzUGl4ZWxBcnJheS5jcHAgKi87IH07CkBAIC03MDEyLDYgKzcwMTQsOCBAQAogCQk5M0Y5
Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8q
IEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3REQ0
RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNG
NzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcwOTRBRjkwRjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJheS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDIzMiw2ICsxMDIzNiw4IEBACiAJCTY1
QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgKi8sCisJCQkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
aCAqLywKIAkJCQkzMTZGRTEwNjBFNkUxRDg0MDBCRjYwODggLyogYW5pbWF0aW9uICovLAogCQkJ
CTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3
MDAwNkE4MUQxIC8qIEFic3RyYWN0Vmlldy5pZGwgKi8sCkBAIC0xNjc5Miw2ICsxNjc5OCw3IEBA
CiAJCQkJMDgxRUJGM0IwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE4RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0RENEQ4NzBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODc4NSw2
ICsxODc5Miw3IEBACiAJCQkJODQ1RTcyRkIwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmls
dGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODlDQ0M1MjBGNDRFOTgxMDBCNURB
MTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBlNTcwMjkzLi45
MmU1NzJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3Iu
aCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5o
IgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CkBAIC01NSw2ICs1Niw3IEBAIFNjcmlw
dENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAsIG1fd2luZG93U2NyaXB0T2JqZWN0KDApCiAjZW5kaWYKKyAgICAsIG1fWFNT
QXVkaXRvcihuZXcgWFNTQXVkaXRvcihmcmFtZSkpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoTUFDX0pBVkFfQlJJREdFKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkSmF2YUpT
QmluZGluZ3M7CkBAIC03OSw2ICs4MSwxMSBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29u
dHJvbGxlcigpCiAKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIAogeworICAgIGlmICghbV9YU1NBdWRpdG9y
LT5jYW5FdmFsdWF0ZShzb3VyY2VDb2RlKSkgeworICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBu
b3Qgc2FmZSB0byBiZSBldmFsdWF0ZWQuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
fQorICAgIAogICAgIC8vIGV2YWx1YXRlIGNvZGUuIFJldHVybnMgdGhlIEpTIHJldHVybiB2YWx1
ZSBvciAwCiAgICAgLy8gaWYgdGhlcmUgd2FzIG5vbmUsIGFuIGVycm9yIG9jY3VyZWQgb3IgdGhl
IHR5cGUgY291bGRuJ3QgYmUgY29udmVydGVkLgogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaAppbmRleCBmNzAwY2Q5Li43NzY0YzJjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBTY3JpcHRTb3VyY2VD
b2RlOwogY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTdHJpbmc7CiBjbGFzcyBXaWRnZXQ7Citj
bGFzcyBYU1NBdWRpdG9yOwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIFJlZlB0cjxKU0M6OkJp
bmRpbmdzOjpSb290T2JqZWN0PiA+IFJvb3RPYmplY3RNYXA7CiAKQEAgLTEzMiw2ICsxMzMsOSBA
QCBwdWJsaWM6CiAgICAgTlBPYmplY3QqIGNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1l
bnQoSFRNTFBsdWdJbkVsZW1lbnQqKTsKICAgICBOUE9iamVjdCogd2luZG93U2NyaXB0TlBPYmpl
Y3QoKTsKICNlbmRpZgorICAgIAorICAgIC8vIFJldHVybnMgdGhlIFhTU0F1ZGl0b3IgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgU2NyaXB0Q29udHJvbGxlci4KKyAgICBYU1NBdWRpdG9yKiBhY3RpdmVY
U1NBdWRpdG9yKCkgeyByZXR1cm4gbV9YU1NBdWRpdG9yLmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQpAQCAtMTY0LDYgKzE2OCw5IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXZWJTY3JpcHRPYmplY3Q+IG1fd2lu
ZG93U2NyaXB0T2JqZWN0OwogI2VuZGlmCisgICAgCisgICAgLy8gVGhlIFhTU0F1ZGl0b3IgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgU2NyaXB0Q29udHJvbGxlci4KKyAgICBPd25QdHI8WFNTQXVkaXRv
cj4gbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMGNlN2JjYS4uYTUyMmU1
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGUuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKIAogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTYxLDYgKzYyLDExIEBAIFBhc3NSZWZQdHI8SlNMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBB
dHRyaWJ1CiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmFjdGl2ZVhTU0F1ZGl0b3Io
KS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmco
KSwgYXR0ci0+dmFsdWUoKSkpIHsKKyAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUg
dG8gZXhlY3V0ZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAogICAgIEpTRE9NV2lu
ZG93KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoKTsKIAog
ICAgIC8vIEVuc3VyZSB0aGF0ICdub2RlJyBoYXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIgdG8gbWFy
ayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcuCkBAIC04MCw2ICs4NiwxMSBAQCBQ
YXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRy
b2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFzY3JpcHRDb250cm9s
bGVyLT5hY3RpdmVYU1NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0
ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CisgICAgICAgIC8vIFRo
aXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4ZWN1dGUuCisgICAgICAgIHJldHVybiAwOworICAg
IH0KIAogICAgIC8vICdnbG9iYWxPYmplY3QnIGlzIHRoZSBKYXZhU2NyaXB0IHdyYXBwZXIgdGhh
dCB3aWxsIG1hcmsgdGhlIGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNyZWF0aW5nLgogICAgIEpTRE9N
V2luZG93KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Rva2VuaXplci5oIGIvV2ViQ29yZS9kb20vVG9rZW5p
emVyLmgKaW5kZXggZjljNmRjNC4uMDY3ZGU0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vVG9r
ZW5pemVyLmgKKysrIGIvV2ViQ29yZS9kb20vVG9rZW5pemVyLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNlZ21lbnRlZFN0cmluZzsKKyAgICBj
bGFzcyBYU1NBdWRpdG9yOwogCiAgICAgY2xhc3MgVG9rZW5pemVyIHsKICAgICBwdWJsaWM6CkBA
IC01OCwxMSArNTksMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSB7fQogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxUb2tlbml6ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICAKKyAgICAgICAgLy8gUmV0dXJucyB0aGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGgg
dGhpcyB0b2tlbml6ZXIuCisgICAgICAgIFhTU0F1ZGl0b3IqIGFjdGl2ZVhTU0F1ZGl0b3IoKSBj
b25zdCB7IHJldHVybiBtX1hTU0F1ZGl0b3I7IH0KKyAgICAgICAgCisgICAgICAgIC8vIEFzc29j
aWF0ZXMgdGhlIHNwZWNpZmllZCBYU1NBdWRpdG9yIHdpdGggdGhpcyB0b2tlbml6ZXIuCisgICAg
ICAgIC8vIEBwYXJhbSBhdWRpdG9yIHRoZSBYU1NBdWRpdG9yIHRvIGFzc29jaWF0ZSB3aXRoIHRo
aXMgdG9rZW5pemVyLgorICAgICAgICB2b2lkIHNldFhTU0F1ZGl0b3IoWFNTQXVkaXRvciogYXVk
aXRvcikgeyBtX1hTU0F1ZGl0b3IgPSBhdWRpdG9yOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFRva2VuaXplcihib29sIHZpZXdTb3VyY2VNb2RlID0gZmFsc2UpIAogICAgICAgICAgICAg
OiBtX3BhcnNlclN0b3BwZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faW5WaWV3U291cmNlTW9k
ZSh2aWV3U291cmNlTW9kZSkKKyAgICAgICAgICAgICwgbV9YU1NBdWRpdG9yKDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC03MSw2ICs4MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gZXZlbiB3aGVuIGl0IGhhcyBidWZmZXJlZCBkYXRhLgogICAgICAgICBib29sIG1f
cGFyc2VyU3RvcHBlZDsKICAgICAgICAgYm9vbCBtX2luVmlld1NvdXJjZU1vZGU7CisgICAgICAg
IAorICAgICAgICAvLyBUaGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyB0b2tlbml6
ZXIuCisgICAgICAgIFhTU0F1ZGl0b3IqIG1fWFNTQXVkaXRvcjsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggMzQxZWVjYy4uODYzM2Yx
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtNDM2LDEx
ICs0MzcsMTQgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaXB0SGFu
ZGxlcihTdGF0ZSBzdGF0ZSkKICAgICAgICAgICAgICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0aW5nIHNjcmlwdCBhdCB0
aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAg
ICAvLyBUaGUgcGFyc2VyIG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEg
d2luZG93LmNsb3NlIGNhbGwgaW4gYW4gZWFybGllciBzY3JpcHQuCi0gICAgICAgICAgICAgICAg
Ly8gSWYgc28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgotICAgICAgICAgICAgICAg
IGlmICghbV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVz
dFNjcmlwdChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZh
bHVlKSkpCi0gICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsK
LSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAm
JiBtX1hTU0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMobV9zY3JpcHRUYWdT
cmNBdHRyVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQg
aGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9yIGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBh
biBlYXJsaWVyIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0
IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGFyc2Vy
U3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3Jp
cHRUYWdTcmNBdHRyVmFsdWUsIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0cy5hcHBlbmQoY3MpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAw
OworICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5v
ZGUgPSAwOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2Rl
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3YTllZjMyLi44M2JkYmE4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2luZG93RmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgIlhNTFRva2VuaXpl
ci5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTk5Myw2ICs5OTQsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZGlzcGF0Y2gsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKIAogICAg
IGRvY3VtZW50LT5pbXBsaWNpdE9wZW4oKTsKKyAgICAKKyAgICAvLyBBc3NvY2lhdGUgdGhlIGFj
dGl2ZSBYU1NBdWRpdG9yIHdpdGggdGhlIHRva2VuaXplci4KKyAgICBkb2N1bWVudC0+dG9rZW5p
emVyKCktPnNldFhTU0F1ZGl0b3IobV9mcmFtZS0+c2NyaXB0KCktPmFjdGl2ZVhTU0F1ZGl0b3Io
KSk7CiAKICAgICBpZiAobV9mcmFtZS0+dmlldygpKQogICAgICAgICBtX2ZyYW1lLT52aWV3KCkt
PnNldENvbnRlbnRzU2l6ZShJbnRTaXplKCkpOwpAQCAtMTY0NSw2ICsxNjQ5LDExIEBAIGJvb2wg
RnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVuZGVyUGFydCogcmVuZGVyZXIsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBBCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgbWltZVR5cGUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFtX2ZyYW1l
LT5zY3JpcHQoKS0+YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5Mb2FkT2JqZWN0KHVybCkpIHsKKyAg
ICAgICAgLy8gSXQgaXMgdW5zYWZlIHRvIGhvbm9yIHRoZSByZXF1ZXN0IGZvciB0aGlzIG9iamVj
dC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIEtVUkwgY29tcGxldGVkVVJM
OwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDkxZWMwYjMuLjA2MDBj
MmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcApAQCAtMTAzLDYgKzEwMyw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgZGlzYWJsZWQg
YnkgZGVmYXVsdCBhcyBpdCBtYWtlcyBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBm
ZWF0dXJlIGRvd25sb2FkIGZpbGVzCiAgICAgLy8gdGhleSBjYW4ndCB1c2UgYnkuIExlYXZpbmcg
ZW5hYmxlZCBmb3Igbm93IHRvIG5vdCBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3IuCiAgICAgLCBt
X2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCh0cnVlKQorICAgICwgbV94c3NBdWRpdG9y
RW5hYmxlZChmYWxzZSkKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0
ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcgCiAgICAgLy8gaGFzaCBi
ZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KQEAgLTQ1OCw0ICs0NTksOSBAQCB2b2lkIFNldHRpbmdz
OjpzZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoYm9vbCBkb3dubG9hZGFibGVCaW5h
cnlGb250c0VuYQogICAgIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkID0gZG93bmxv
YWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRYU1NBdWRp
dG9yRW5hYmxlZChib29sIHhzc0F1ZGl0b3JFbmFibGVkKQoreworICAgIG1feHNzQXVkaXRvckVu
YWJsZWQgPSB4c3NBdWRpdG9yRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCA2MmNmN2Y2Li45ZDRlNDIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjM4LDYgKzIzOCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXREb3dubG9hZGFibGVCaW5hcnlG
b250c0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQ7
IH0KIAorICAgICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpOworICAgICAgICBi
b29sIHhzc0F1ZGl0b3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9yRW5hYmxl
ZDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICAKQEAg
LTI5Nyw2ICszMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9hbGxv
d1NjcmlwdHNUb0Nsb3NlV2luZG93cyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fZWRpdGluZ0Jl
aGF2aW9yIDogMTsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxl
ZCA6IDE7CisgICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7CiAKICNpZiBVU0Uo
U0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250
cm9sczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcCBiL1dlYkNvcmUv
cGFnZS9YU1NBdWRpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODVkNzczCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCkBA
IC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERhbmllbCBC
YXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKKworI2luY2x1ZGUgIkNvbnNv
bGUuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgCisvLyBUaGlzIG1ldGhvZCBh
bHNvIGFwcGVhcnMgaW4gZmlsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAuCitzdGF0aWMgYm9v
bCBpc0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKK3sKKyAgIHJldHVybiBjIDwgJyAnIHx8IGMg
PT0gMTI3OworfQorICAKK1hTU0F1ZGl0b3I6OlhTU0F1ZGl0b3IoRnJhbWUqIGZyYW1lKQorICAg
IDogbV9pc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCit7CisgICAgaWYgKFNl
dHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpKQorICAgICAgICBtX2lzRW5hYmxl
ZCA9IHNldHRpbmdzLT54c3NBdWRpdG9yRW5hYmxlZCgpOworfQorCitYU1NBdWRpdG9yOjp+WFNT
QXVkaXRvcigpCit7Cit9CisgIAorYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSBjb25zdAoreworICAgIGlmICghbV9pc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIHJldHVybiBjYW5FdmFsdWF0ZShT
dHJpbmcoc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKS5kYXRhKCksIHNvdXJjZUNvZGUuanNTb3Vy
Y2VDb2RlKCkubGVuZ3RoKCkpKTsKK30KKyAgCitib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRl
KGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNFbmFibGVk
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAoZmluZEluUmVxdWVzdChzb3Vy
Y2VDb2RlKSkgeworICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSAiUmVmdXNlZCB0byBl
eGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuICBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQg
d2l0aGluIHRoZSByZXF1ZXN0LlxuIjsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBj
b25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFhTU0F1ZGl0b3I6OmNhbkNyZWF0ZUlubGlu
ZUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb2RlKSBjb25zdAor
eworICAgIGlmICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAg
IHJldHVybiBjYW5FdmFsdWF0ZShjb2RlKTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2Fk
RXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAoreworICAgIGlm
ICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAKKyAgICBpZiAoZmluZElu
UmVxdWVzdCh1cmwpKSB7CisgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9ICJSZWZ1c2Vk
IHRvIGxvYWQgYW4gZXh0ZXJuYWwgSmF2YVNjcmlwdCBzY3JpcHQuICBVUkwgb2YgZXh0ZXJuYWwg
c2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIjsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2lu
ZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2Fn
ZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFhTU0F1ZGl0b3I6OmNhbkxv
YWRPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZmluZEluUmVxdWVzdCh1cmwpKSB7
CisgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGxvYWQgb2JqZWN0
LiBVUkwgb2Ygb2JqZWN0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIjsKKyAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2Us
IEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOyAgICAKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gc3Rh
dGljCitTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgc3RyLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMpCit7Cisg
ICAgU3RyaW5nIHJlc3VsdDsKKyAgICBTdHJpbmcgdXJsID0gc3RyOworICAgIAorICAgIHVybC5y
ZXBsYWNlKCcrJywgJyAnKTsKKyAgICByZXN1bHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
dXJsLCBlbmNvZGluZyk7CisgICAgcmV0dXJuIChhbGxvd051bGxDaGFyYWN0ZXJzKT8gcmVzdWx0
IDogcmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7Cit9CisKK2Jv
b2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgU3RyaW5nIHBhZ2VVUkwg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICAKKyAgICBpZiAocHJv
dG9jb2xJcyhwYWdlVVJMLCAiZGF0YSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHN0
cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsKKyAgICAgICAgLy8gVGhlIHN0cmlu
ZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVSTC4KKyAgICAgICAgU3RyaW5nIGRl
Y29kZWRQYWdlVVJMID0gZGVjb2RlVVJMKHBhZ2VVUkwsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRl
Y29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgIGlmIChkZWNvZGVkUGFnZVVSTC5maW5kKHN0
cmluZywgMCwgZmFsc2UpICE9IC0xKQorICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdlJ3Zl
IGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KKyAgICB9CisgICAgCisgICAgRm9ybURhdGEqIGZvcm1E
YXRhT2JqID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVx
dWVzdCgpLmh0dHBCb2R5KCk7CisgICAgaWYgKGZvcm1EYXRhT2JqICYmICFmb3JtRGF0YU9iai0+
aXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBmb3JtRGF0YSA9IGZvcm1EYXRhT2JqLT5mbGF0
dGVuVG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IGZvcm1EYXRhLmxl
bmd0aCgpKSB7CisgICAgICAgICAgICAvLyBOb3RpY2UgaXQgaXMgc3VmZmljaWVudCB0byBjb21w
YXJlIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0bworICAgICAgICAgICAgLy8gdGhlIHVybC1l
bmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5ndGggb2YgdGhlIHVybC1kZWNvZGVkCisg
ICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9m
IHRoZSB1cmwtZW5jb2RlZAorICAgICAgICAgICAgLy8gc3RyaW5nLgorICAgICAgICAgICAgU3Ry
aW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVSTChmb3JtRGF0YSwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICAgICAgICAgIGlmIChkZWNvZGVkRm9y
bURhdGEuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsgIC8vIFdlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0YS4KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmggYi9XZWJDb3JlL3Bh
Z2UvWFNTQXVkaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYzQy
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCkBAIC0wLDAg
KzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERhbmllbCBCYXRlcyAo
ZGJhdGVzQGludHVkYXRhLmNvbSkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBYU1NB
dWRpdG9yX2gKKyNkZWZpbmUgWFNTQXVkaXRvcl9oCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisJCisJY2xhc3MgRnJhbWU7CisJY2xhc3MgU2NyaXB0U291cmNl
Q29kZTsKKwkKKyAgLy8gIFRoZSBYU1NBdWRpdG9yIGNsYXNzIGlzIHVzZWQgdG8gcHJldmVudCB0
eXBlIDEgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcKKyAgLy8gIHZ1bG5lcmFiaWxpdGVzIChhbHNvIGtu
b3duIGFzIHJlZmxlY3RlZCB2dWxuZXJhYmlsaXRpZXMpLgorCS8vCisgIC8vIE1vcmUgc3BlY2lm
aWNhbGx5LCB0aGUgWFNTQXVkaXRvciBjbGFzcyBkZWNpZGVzIHdoZXRoZXIgdGhlIGV4ZWN1dGlv
biBvZiBhCisgIC8vIHNjcmlwdCBpcyB0byBiZSBhbGxvd2VkIG9yIGRlbmllZCBiYXNlZCBvbiB0
aGUgY29udGVudCBvZiBhbnkKKyAgLy8gdXNlci1zdWJtaXR0ZWQgZGF0YSwgaW5jbHVkaW5nOgor
CS8vCisJLy8gKiB0aGUgcXVlcnkgc3RyaW5nIG9mIHRoZSBVUkwuCisJLy8gKiB0aGUgSFRUUC1Q
T1NUIGRhdGEuCisJLy8KKwkvLyBJZiB0aGUgc291cmNlIGNvZGUgb2YgYSBzY3JpcHQgcmVzZW1i
bGVzIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhIHRoZW4gaXQgaXMgZGVuaWVkIGV4ZWN1dGlvbi4K
KwkvLworCS8vIFdoZW4geW91IGluc3RhbnRpYXRlIHRoZSBYU1NBdWRpdG9yIHlvdSBtdXN0IHNw
ZWNpZnkgdGhlIHtAbGluayBGcmFtZX0gb2YgdGhlIHBhZ2UgdGhhdCB5b3Ugd2lzaCB0byBhdWRp
dC4KKwkvLworCS8vIEJpbmRpbmdzCisJLy8KKwkvLyBBbiBYU1NBdWRpdG9yIGlzIGluc3RhbnRp
YXRlZCB3aXRoaW4gdGhlIGNvbnRydWN0b3Igb2YgYSBTY3JpcHRDb250cm9sbGVyIG9iamVjdCBh
bmQgCisJLy8gcGFzc2VkIHRoZSBGcmFtZSB0aGUgc2NyaXB0IG9yaWdpbmF0ZWQuIFRoZSBTY3Jp
cHRDb250cm9sbGVyIGNhbGxzIGJhY2sgdG8gdGhlIFhTU0F1ZGl0b3IKKyAgLy8gdG8gZGV0ZXJt
aW5lIHdoZXRoZXIgYSBKYXZhU2NyaXB0IHNjcmlwdCBpcyBzYWZlIHRvIGV4ZWN1dGUgYmVmb3Jl
CisgIC8vIGV4ZWN1dGluZyBpdC4gVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbGwgaW50byBYU1NB
dWRpdG9yOgorCS8vCisJLy8gKiBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSAtIHVzZWQgdG8g
ZXZhbHVhdGUgSmF2YVNjcmlwdCBzY3JpcHRzLgorCS8vICogU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlSW5saW5lRXZlbnRMaXN0ZW5lciAtIHVzZWQgdG8gY3JlYXRlIEphdmFTY3JpcHQgZXZlbnQg
aGFuZGxlcnMuCisJLy8gKiBIVE1MVG9rZW5pemVyI3NjcmlwdEhhbmRsZXIgLSB1c2VkIHRvIGxv
YWQgZXh0ZXJuYWwgSmF2YVNjcmlwdCBzY3JpcHRzLgorCS8vIAorCWNsYXNzIFhTU0F1ZGl0b3Ig
eworCQkKKwlwdWJsaWM6CisJCQorCQkvLyBDcmVhdGVzIGEgbmV3IFhTU0F1ZGl0b3Igb2JqZWN0
IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgZnJhbWUuCisJCS8vIEBwYXJh
bSBmcmFtZSB0aGUgZnJhbWUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBhdWRpdG9yLgorCQlYU1NB
dWRpdG9yKEZyYW1lKik7CisJCX5YU1NBdWRpdG9yKCk7CisJCQorCQlib29sIGlzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkOyB9CisJCXZvaWQgc2V0WFNTQXVkaXRvckVuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IG1faXNFbmFibGVkID0gZW5hYmxlZDsgfQorCQkKKyAgICAvLyBE
ZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNjcmlwdCBzaG91bGQgYmUgYWxsb3dlZCBvciBkZW5pZWQg
ZXhlY3V0aW9uCisgICAgLy8gYmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgYW55IHVzZXItc3VibWl0
dGVkIGRhdGEuCisJCWJvb2wgY2FuRXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSkgY29uc3Q7CisJCQorICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc2NyaXB0
IHNob3VsZCBiZSBhbGxvd2VkIG9yIGRlbmllZCBleGVjdXRpb24KKyAgICAvLyBiYXNlZCBvbiB0
aGUgY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKwkJYm9vbCBjYW5FdmFsdWF0
ZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpIGNvbnN0OworCQkKKyAgICAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgdGhlIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVkIGJhc2VkIG9uIHRo
ZQorICAgIC8vIGNvbnRlbnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisJCWJvb2wgY2Fu
Q3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29u
c3QgU3RyaW5nJiBjb2RlKSBjb25zdDsKKwkJCisgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRo
ZSBleHRlcm5hbCBzY3JpcHQgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBvbiB0aGUKKyAgICAvLyBj
b250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorCQlib29sIGNhbkxvYWRFeHRlcm5h
bFNjcmlwdEZyb21TcmMoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OworCQkKKwkJLy8gRGV0ZXJt
aW5lcyB3aGV0aGVyIG9iamVjdCBzaG91bGQgYmUgbG9hZGVkIGJhc2VkIG9uIHRoZSBjb250ZW50
IG9mIAorCQkvLyBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKwkJLy8KKwkJLy8gVGhpcyBtZXRo
b2QgaXMgY2FsbGVkIGJ5IEZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0LgorCQlib29sIGNhbkxv
YWRPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwkJCisJCQorCXByaXZhdGU6CisJCXN0
YXRpYyBTdHJpbmcgZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nID0gVVRGOEVuY29kaW5nKCksIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycyA9
IGZhbHNlKTsKKworICAgIGJvb2wgZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmKSBjb25zdDsK
KwkJCisJCS8vIFdoZXRoZXIgdG8gYXVkaXQgc2NyaXB0cy4KKwkJYm9vbCBtX2lzRW5hYmxlZDsK
KwkJCisJCS8vIFRoZSBmcmFtZSB0byBhdWRpdC4KKwkJRnJhbWUqIG1fZnJhbWU7CisJCQorCX07
CisJCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBYU1NBdWRpdG9yX2gKLS0g
CjEuNi4wLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31127</attachid>
            <date>2009-06-10 02:06:18 -0700</date>
            <delta_ts>2009-06-11 02:21:06 -0700</delta_ts>
            <desc>Patch (disabled by default)</desc>
            <filename>0001-XSSAuditor (2).patch</filename>
            <type>text/plain</type>
            <size>28967</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBlZDIwODNkMjcxODYyMmNlMWU2YWFiNzY2Y2ViZGQwZDY5NWZmY2JiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVHVlLCA5IEp1biAyMDA5IDE2OjI1OjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gWFNTQXVk
aXRvcgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA0OCArKysrKysrKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDEgKwogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgICB8ICAg
IDggKysKIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgICA4
ICsrCiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwICAgIHwgICAgNyAr
CiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCAgICAgIHwgICAgNyArCiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIHwgICAxMSArKwogV2Vi
Q29yZS9kb20vVG9rZW5pemVyLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIFdlYkNv
cmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcCAgICAgICAgICAgICAgfCAgIDE0ICsrLQogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwICAgICAgICAgICAgICB8ICAgIDkgKysKIFdlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIFdlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmNwcCAgICAgICAgICAgICAgICAgfCAgMTYxICsrKysrKysrKysrKysrKysrKysr
KysrKysrKwogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaCAgICAgICAgICAgICAgICAgICB8ICAx
MTMgKysrKysrKysrKysrKysrKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wYWdlL1hTU0F1
ZGl0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2Y1NDU3Zi4uNDE3ZGRmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAwOS0wNi0xMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE5
OQorCisgICAgICAgIEFkZGVkIGFuIGV4cGVyaW1lbnRhbCByZWZsZWN0aXZlIFhTUyBmaWx0ZXIu
ICBUaGUgZmlsdGVyIGlzIGRpc2FibGVkIGJ5CisgICAgICAgIGRlZmF1bHQuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjphY3RpdmVYU1NBdWRpdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ub2tlbml6ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRva2VuaXplcjo6YWN0aXZlWFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbml6ZXI6OnNldFhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5pemVy
OjpUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmJlZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVuYWJsZWQp
OgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
Ojp4c3NBdWRpdG9yRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0NvbnRyb2xDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjp+WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5FdmFs
dWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5DcmVhdGVJbmxpbmVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRFeHRlcm5h
bFNjcmlwdEZyb21TcmMpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Y2FuTG9hZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9Y
U1NBdWRpdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OnNldFhTU0F1ZGl0b3JFbmFibGVk
KToKKwogMjAwOS0wNi0wOSAgUGllcnJlIGQnSGVyYmVtb250ICA8cGRoZXJiZW1vbnRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTUxYzAx
YS4uOTE1ZjIxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjY3LDYgKzEyNjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGFnZS9XZWJLaXRQb2ludC5oIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCisJV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKIAlX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBmOThmMTg2Li44ZGE1MTkzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTg5MSw2ICs4
OTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAogICAgIHBhZ2UvU2V0
dGluZ3MuY3BwIFwKICAgICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBcCisgICAgcGFnZS9YU1NB
dWRpdG9yLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBcCiAgICAgcGx1Z2lucy9Q
bHVnaW5BcnJheS5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2MDUyY2U0Li5jNDFmOWE5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIyOTEsNiArMjI5MSwxNCBAQAogCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxXb3JrZXJOYXZpZ2F0b3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdl
XFhTU0F1ZGl0b3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5h
bWU9IndpbiINCiAJCQkJPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYzdiMjdlZS4uMjhmNWVmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIxMzgsNiArMjEzOCw4IEBACiAJCTkzRjlCN0EwMEJBNjAzMjYw
MDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNl
Y3Rpb24uY3BwICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZE
QUZDQTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0
NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdE
RDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OworCQk5N0RENEQ4
NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuaCAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50
RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsg
fTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjEwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQlBNzA5NEFGQTBG
MjdBRTYwMDA1OTZDRUMgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA5NEFGOTBGMjdBRTYwMDA1OTZDRUMgLyog
Q2FudmFzUGl4ZWxBcnJheS5jcHAgKi87IH07CkBAIC03MDEyLDYgKzcwMTQsOCBAQAogCQk5M0Y5
Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8q
IEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3REQ0
RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNG
NzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcwOTRBRjkwRjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJheS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDIzMiw2ICsxMDIzNiw4IEBACiAJCTY1
QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgKi8sCisJCQkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
aCAqLywKIAkJCQkzMTZGRTEwNjBFNkUxRDg0MDBCRjYwODggLyogYW5pbWF0aW9uICovLAogCQkJ
CTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3
MDAwNkE4MUQxIC8qIEFic3RyYWN0Vmlldy5pZGwgKi8sCkBAIC0xNjc5Miw2ICsxNjc5OCw3IEBA
CiAJCQkJMDgxRUJGM0IwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE4RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0RENEQ4NzBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODc4NSw2
ICsxODc5Miw3IEBACiAJCQkJODQ1RTcyRkIwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmls
dGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODlDQ0M1MjBGNDRFOTgxMDBCNURB
MTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBlNTcwMjkzLi45
MmU1NzJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3Iu
aCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5o
IgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CkBAIC01NSw2ICs1Niw3IEBAIFNjcmlw
dENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAsIG1fd2luZG93U2NyaXB0T2JqZWN0KDApCiAjZW5kaWYKKyAgICAsIG1fWFNT
QXVkaXRvcihuZXcgWFNTQXVkaXRvcihmcmFtZSkpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoTUFDX0pBVkFfQlJJREdFKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkSmF2YUpT
QmluZGluZ3M7CkBAIC03OSw2ICs4MSwxMSBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29u
dHJvbGxlcigpCiAKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIAogeworICAgIGlmICghbV9YU1NBdWRpdG9y
LT5jYW5FdmFsdWF0ZShzb3VyY2VDb2RlKSkgeworICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBu
b3Qgc2FmZSB0byBiZSBldmFsdWF0ZWQuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
fQorICAgIAogICAgIC8vIGV2YWx1YXRlIGNvZGUuIFJldHVybnMgdGhlIEpTIHJldHVybiB2YWx1
ZSBvciAwCiAgICAgLy8gaWYgdGhlcmUgd2FzIG5vbmUsIGFuIGVycm9yIG9jY3VyZWQgb3IgdGhl
IHR5cGUgY291bGRuJ3QgYmUgY29udmVydGVkLgogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaAppbmRleCBmNzAwY2Q5Li43NzY0YzJjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBTY3JpcHRTb3VyY2VD
b2RlOwogY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTdHJpbmc7CiBjbGFzcyBXaWRnZXQ7Citj
bGFzcyBYU1NBdWRpdG9yOwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIFJlZlB0cjxKU0M6OkJp
bmRpbmdzOjpSb290T2JqZWN0PiA+IFJvb3RPYmplY3RNYXA7CiAKQEAgLTEzMiw2ICsxMzMsOSBA
QCBwdWJsaWM6CiAgICAgTlBPYmplY3QqIGNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1l
bnQoSFRNTFBsdWdJbkVsZW1lbnQqKTsKICAgICBOUE9iamVjdCogd2luZG93U2NyaXB0TlBPYmpl
Y3QoKTsKICNlbmRpZgorICAgIAorICAgIC8vIFJldHVybnMgdGhlIFhTU0F1ZGl0b3IgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgU2NyaXB0Q29udHJvbGxlci4KKyAgICBYU1NBdWRpdG9yKiBhY3RpdmVY
U1NBdWRpdG9yKCkgeyByZXR1cm4gbV9YU1NBdWRpdG9yLmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQpAQCAtMTY0LDYgKzE2OCw5IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXZWJTY3JpcHRPYmplY3Q+IG1fd2lu
ZG93U2NyaXB0T2JqZWN0OwogI2VuZGlmCisgICAgCisgICAgLy8gVGhlIFhTU0F1ZGl0b3IgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgU2NyaXB0Q29udHJvbGxlci4KKyAgICBPd25QdHI8WFNTQXVkaXRv
cj4gbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMGNlN2JjYS4uYTUyMmU1
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGUuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKIAogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTYxLDYgKzYyLDExIEBAIFBhc3NSZWZQdHI8SlNMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBB
dHRyaWJ1CiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmFjdGl2ZVhTU0F1ZGl0b3Io
KS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmco
KSwgYXR0ci0+dmFsdWUoKSkpIHsKKyAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUg
dG8gZXhlY3V0ZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAogICAgIEpTRE9NV2lu
ZG93KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoKTsKIAog
ICAgIC8vIEVuc3VyZSB0aGF0ICdub2RlJyBoYXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIgdG8gbWFy
ayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcuCkBAIC04MCw2ICs4NiwxMSBAQCBQ
YXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRy
b2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFzY3JpcHRDb250cm9s
bGVyLT5hY3RpdmVYU1NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0
ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CisgICAgICAgIC8vIFRo
aXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4ZWN1dGUuCisgICAgICAgIHJldHVybiAwOworICAg
IH0KIAogICAgIC8vICdnbG9iYWxPYmplY3QnIGlzIHRoZSBKYXZhU2NyaXB0IHdyYXBwZXIgdGhh
dCB3aWxsIG1hcmsgdGhlIGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNyZWF0aW5nLgogICAgIEpTRE9N
V2luZG93KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Rva2VuaXplci5oIGIvV2ViQ29yZS9kb20vVG9rZW5p
emVyLmgKaW5kZXggZjljNmRjNC4uMDY3ZGU0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vVG9r
ZW5pemVyLmgKKysrIGIvV2ViQ29yZS9kb20vVG9rZW5pemVyLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNlZ21lbnRlZFN0cmluZzsKKyAgICBj
bGFzcyBYU1NBdWRpdG9yOwogCiAgICAgY2xhc3MgVG9rZW5pemVyIHsKICAgICBwdWJsaWM6CkBA
IC01OCwxMSArNTksMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSB7fQogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxUb2tlbml6ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICAKKyAgICAgICAgLy8gUmV0dXJucyB0aGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGgg
dGhpcyB0b2tlbml6ZXIuCisgICAgICAgIFhTU0F1ZGl0b3IqIGFjdGl2ZVhTU0F1ZGl0b3IoKSBj
b25zdCB7IHJldHVybiBtX1hTU0F1ZGl0b3I7IH0KKyAgICAgICAgCisgICAgICAgIC8vIEFzc29j
aWF0ZXMgdGhlIHNwZWNpZmllZCBYU1NBdWRpdG9yIHdpdGggdGhpcyB0b2tlbml6ZXIuCisgICAg
ICAgIC8vIEBwYXJhbSBhdWRpdG9yIHRoZSBYU1NBdWRpdG9yIHRvIGFzc29jaWF0ZSB3aXRoIHRo
aXMgdG9rZW5pemVyLgorICAgICAgICB2b2lkIHNldFhTU0F1ZGl0b3IoWFNTQXVkaXRvciogYXVk
aXRvcikgeyBtX1hTU0F1ZGl0b3IgPSBhdWRpdG9yOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFRva2VuaXplcihib29sIHZpZXdTb3VyY2VNb2RlID0gZmFsc2UpIAogICAgICAgICAgICAg
OiBtX3BhcnNlclN0b3BwZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faW5WaWV3U291cmNlTW9k
ZSh2aWV3U291cmNlTW9kZSkKKyAgICAgICAgICAgICwgbV9YU1NBdWRpdG9yKDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC03MSw2ICs4MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gZXZlbiB3aGVuIGl0IGhhcyBidWZmZXJlZCBkYXRhLgogICAgICAgICBib29sIG1f
cGFyc2VyU3RvcHBlZDsKICAgICAgICAgYm9vbCBtX2luVmlld1NvdXJjZU1vZGU7CisgICAgICAg
IAorICAgICAgICAvLyBUaGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyB0b2tlbml6
ZXIuCisgICAgICAgIFhTU0F1ZGl0b3IqIG1fWFNTQXVkaXRvcjsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggMzQxZWVjYy4uODYzM2Yx
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtNDM2LDEx
ICs0MzcsMTQgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaXB0SGFu
ZGxlcihTdGF0ZSBzdGF0ZSkKICAgICAgICAgICAgICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0aW5nIHNjcmlwdCBhdCB0
aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAg
ICAvLyBUaGUgcGFyc2VyIG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEg
d2luZG93LmNsb3NlIGNhbGwgaW4gYW4gZWFybGllciBzY3JpcHQuCi0gICAgICAgICAgICAgICAg
Ly8gSWYgc28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgotICAgICAgICAgICAgICAg
IGlmICghbV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVz
dFNjcmlwdChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZh
bHVlKSkpCi0gICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsK
LSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAm
JiBtX1hTU0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMobV9zY3JpcHRUYWdT
cmNBdHRyVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQg
aGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9yIGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBh
biBlYXJsaWVyIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0
IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGFyc2Vy
U3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3Jp
cHRUYWdTcmNBdHRyVmFsdWUsIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0cy5hcHBlbmQoY3MpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAw
OworICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdE5v
ZGUgPSAwOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2Rl
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3YTllZjMyLi44M2JkYmE4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2luZG93RmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgIlhNTFRva2VuaXpl
ci5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTk5Myw2ICs5OTQsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZGlzcGF0Y2gsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKIAogICAg
IGRvY3VtZW50LT5pbXBsaWNpdE9wZW4oKTsKKyAgICAKKyAgICAvLyBBc3NvY2lhdGUgdGhlIGFj
dGl2ZSBYU1NBdWRpdG9yIHdpdGggdGhlIHRva2VuaXplci4KKyAgICBkb2N1bWVudC0+dG9rZW5p
emVyKCktPnNldFhTU0F1ZGl0b3IobV9mcmFtZS0+c2NyaXB0KCktPmFjdGl2ZVhTU0F1ZGl0b3Io
KSk7CiAKICAgICBpZiAobV9mcmFtZS0+dmlldygpKQogICAgICAgICBtX2ZyYW1lLT52aWV3KCkt
PnNldENvbnRlbnRzU2l6ZShJbnRTaXplKCkpOwpAQCAtMTY0NSw2ICsxNjQ5LDExIEBAIGJvb2wg
RnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVuZGVyUGFydCogcmVuZGVyZXIsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBBCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgbWltZVR5cGUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFtX2ZyYW1l
LT5zY3JpcHQoKS0+YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5Mb2FkT2JqZWN0KHVybCkpIHsKKyAg
ICAgICAgLy8gSXQgaXMgdW5zYWZlIHRvIGhvbm9yIHRoZSByZXF1ZXN0IGZvciB0aGlzIG9iamVj
dC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIEtVUkwgY29tcGxldGVkVVJM
OwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDkxZWMwYjMuLjA2MDBj
MmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcApAQCAtMTAzLDYgKzEwMyw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgZGlzYWJsZWQg
YnkgZGVmYXVsdCBhcyBpdCBtYWtlcyBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBm
ZWF0dXJlIGRvd25sb2FkIGZpbGVzCiAgICAgLy8gdGhleSBjYW4ndCB1c2UgYnkuIExlYXZpbmcg
ZW5hYmxlZCBmb3Igbm93IHRvIG5vdCBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3IuCiAgICAgLCBt
X2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCh0cnVlKQorICAgICwgbV94c3NBdWRpdG9y
RW5hYmxlZChmYWxzZSkKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0
ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcgCiAgICAgLy8gaGFzaCBi
ZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KQEAgLTQ1OCw0ICs0NTksOSBAQCB2b2lkIFNldHRpbmdz
OjpzZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoYm9vbCBkb3dubG9hZGFibGVCaW5h
cnlGb250c0VuYQogICAgIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkID0gZG93bmxv
YWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRYU1NBdWRp
dG9yRW5hYmxlZChib29sIHhzc0F1ZGl0b3JFbmFibGVkKQoreworICAgIG1feHNzQXVkaXRvckVu
YWJsZWQgPSB4c3NBdWRpdG9yRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCA2MmNmN2Y2Li45ZDRlNDIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjM4LDYgKzIzOCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXREb3dubG9hZGFibGVCaW5hcnlG
b250c0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQ7
IH0KIAorICAgICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpOworICAgICAgICBi
b29sIHhzc0F1ZGl0b3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9yRW5hYmxl
ZDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICAKQEAg
LTI5Nyw2ICszMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9hbGxv
d1NjcmlwdHNUb0Nsb3NlV2luZG93cyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fZWRpdGluZ0Jl
aGF2aW9yIDogMTsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxl
ZCA6IDE7CisgICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7CiAKICNpZiBVU0Uo
U0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250
cm9sczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcCBiL1dlYkNvcmUv
cGFnZS9YU1NBdWRpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
ZjMyMWIxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCkBA
IC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERhbmllbCBC
YXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKKworI2luY2x1ZGUgIkNvbnNv
bGUuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgCisvLyBUaGlzIG1ldGhvZCBh
bHNvIGFwcGVhcnMgaW4gZmlsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAuCitzdGF0aWMgYm9v
bCBpc0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKK3sKKyAgIHJldHVybiBjIDwgJyAnIHx8IGMg
PT0gMTI3OworfQorICAKK1hTU0F1ZGl0b3I6OlhTU0F1ZGl0b3IoRnJhbWUqIGZyYW1lKQorICAg
IDogbV9pc0VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworICAgIGlmIChT
ZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKSkKKyAgICAgICAgbV9pc0VuYWJs
ZWQgPSBzZXR0aW5ncy0+eHNzQXVkaXRvckVuYWJsZWQoKTsKK30KKworWFNTQXVkaXRvcjo6flhT
U0F1ZGl0b3IoKQoreworfQorICAKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNFbmFi
bGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gY2FuRXZhbHVhdGUo
U3RyaW5nKHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCkuZGF0YSgpLCBzb3VyY2VDb2RlLmpzU291
cmNlQ29kZSgpLmxlbmd0aCgpKSk7Cit9CisgIAorYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0
ZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKGZpbmRJblJlcXVlc3Qoc291
cmNlQ29kZSkpIHsKKyAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gIlJlZnVzZWQgdG8g
ZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiAgU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5k
IHdpdGhpbiB0aGUgcmVxdWVzdC5cbiI7CisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
Y29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5DcmVhdGVJbmxp
bmVFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29kZSkgY29uc3QK
K3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAg
ICByZXR1cm4gY2FuRXZhbHVhdGUoY29kZSk7Cit9CisKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuTG9h
ZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgCisgICAgaWYgKGZpbmRJ
blJlcXVlc3QodXJsKSkgeworICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSAiUmVmdXNl
ZCB0byBsb2FkIGFuIGV4dGVybmFsIEphdmFTY3JpcHQgc2NyaXB0LiAgVVJMIG9mIGV4dGVybmFs
IHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiI7CisgICAgICAgIG1fZnJhbWUtPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5M
b2FkT2JqZWN0KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAoreworICAgIGlmICghbV9pc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGZpbmRJblJlcXVlc3QodXJsKSkg
eworICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSAiUmVmdXNlZCB0byBsb2FkIG9iamVj
dC4gVVJMIG9mIG9iamVjdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiI7CisgICAgICAgIG1fZnJh
bWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsgICAgCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIHN0
YXRpYworU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0ciwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBhbGxvd051bGxDaGFyYWN0ZXJzKQorewor
ICAgIFN0cmluZyByZXN1bHQ7CisgICAgU3RyaW5nIHVybCA9IHN0cjsKKyAgICAKKyAgICB1cmwu
cmVwbGFjZSgnKycsICcgJyk7CisgICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KHVybCwgZW5jb2RpbmcpOworICAgIHJldHVybiAoYWxsb3dOdWxsQ2hhcmFjdGVycyk/IHJlc3Vs
dCA6IHJlc3VsdC5yZW1vdmVDaGFyYWN0ZXJzKCZpc0NvbnRyb2xDaGFyYWN0ZXIpOworfQorCiti
b29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOworICAgIFN0cmluZyBwYWdlVVJM
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgCisgICAgaWYgKHBy
b3RvY29sSXMocGFnZVVSTCwgImRhdGEiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
dHJpbmcubGVuZ3RoKCkgPCBwYWdlVVJMLmxlbmd0aCgpKSB7CisgICAgICAgIC8vIFRoZSBzdHJp
bmcgY2FuIGFjdHVhbGx5IGZpdCBpbnNpZGUgdGhlIHBhZ2VVUkwuCisgICAgICAgIFN0cmluZyBk
ZWNvZGVkUGFnZVVSTCA9IGRlY29kZVVSTChwYWdlVVJMLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5k
ZWNvZGVyKCktPmVuY29kaW5nKCkpOworICAgICAgICBpZiAoZGVjb2RlZFBhZ2VVUkwuZmluZChz
dHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSd2
ZSBmb3VuZCB0aGUgc21va2luZyBndW4uCisgICAgfQorICAgIAorICAgIEZvcm1EYXRhKiBmb3Jt
RGF0YU9iaiA9IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJl
cXVlc3QoKS5odHRwQm9keSgpOworICAgIGlmIChmb3JtRGF0YU9iaiAmJiAhZm9ybURhdGFPYmot
PmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgZm9ybURhdGEgPSBmb3JtRGF0YU9iai0+Zmxh
dHRlblRvU3RyaW5nKCk7CisgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPCBmb3JtRGF0YS5s
ZW5ndGgoKSkgeworICAgICAgICAgICAgLy8gTm90aWNlIGl0IGlzIHN1ZmZpY2llbnQgdG8gY29t
cGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdG8KKyAgICAgICAgICAgIC8vIHRoZSB1cmwt
ZW5jb2RlZCBQT1NUIGRhdGEgYmVjYXVzZSB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZGVjb2RlZAor
ICAgICAgICAgICAgLy8gY29kZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBv
ZiB0aGUgdXJsLWVuY29kZWQKKyAgICAgICAgICAgIC8vIHN0cmluZy4KKyAgICAgICAgICAgIFN0
cmluZyBkZWNvZGVkRm9ybURhdGEgPSBkZWNvZGVVUkwoZm9ybURhdGEsIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgICAgICBpZiAoZGVjb2RlZEZv
cm1EYXRhLmZpbmQoc3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7ICAvLyBXZSBmb3VuZCB0aGUgc3RyaW5nIGluIHRoZSBQT1NUIGRhdGEuCisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIGIvV2ViQ29yZS9w
YWdlL1hTU0F1ZGl0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjJj
YWNmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaApAQCAtMCww
ICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5pZWwgQmF0ZXMg
KGRiYXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgWFNT
QXVkaXRvcl9oCisjZGVmaW5lIFhTU0F1ZGl0b3JfaAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgU2NyaXB0
U291cmNlQ29kZTsKKworICAgIC8vIFRoZSBYU1NBdWRpdG9yIGNsYXNzIGlzIHVzZWQgdG8gcHJl
dmVudCB0eXBlIDEgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcKKyAgICAvLyB2dWxuZXJhYmlsaXRlcyAo
YWxzbyBrbm93biBhcyByZWZsZWN0ZWQgdnVsbmVyYWJpbGl0aWVzKS4KKyAgICAvLworICAgIC8v
IE1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgWFNTQXVkaXRvciBjbGFzcyBkZWNpZGVzIHdoZXRoZXIg
dGhlIGV4ZWN1dGlvbiBvZgorICAgIC8vIGEgc2NyaXB0IGlzIHRvIGJlIGFsbG93ZWQgb3IgZGVu
aWVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIGFueQorICAgIC8vIHVzZXItc3VibWl0dGVkIGRh
dGEsIGluY2x1ZGluZzoKKyAgICAvLworICAgIC8vICogdGhlIHF1ZXJ5IHN0cmluZyBvZiB0aGUg
VVJMLgorICAgIC8vICogdGhlIEhUVFAtUE9TVCBkYXRhLgorICAgIC8vCisgICAgLy8gSWYgdGhl
IHNvdXJjZSBjb2RlIG9mIGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0
YSB0aGVuIGl0CisgICAgLy8gaXMgZGVuaWVkIGV4ZWN1dGlvbi4KKyAgICAvLworICAgIC8vIFdo
ZW4geW91IGluc3RhbnRpYXRlIHRoZSBYU1NBdWRpdG9yIHlvdSBtdXN0IHNwZWNpZnkgdGhlIHtA
bGluayBGcmFtZX0KKyAgICAvLyBvZiB0aGUgcGFnZSB0aGF0IHlvdSB3aXNoIHRvIGF1ZGl0Lgor
ICAgIC8vCisgICAgLy8gQmluZGluZ3MKKyAgICAvLworICAgIC8vIEFuIFhTU0F1ZGl0b3IgaXMg
aW5zdGFudGlhdGVkIHdpdGhpbiB0aGUgY29udHJ1Y3RvciBvZiBhCisgICAgLy8gU2NyaXB0Q29u
dHJvbGxlciBvYmplY3QgYW5kIHBhc3NlZCB0aGUgRnJhbWUgdGhlIHNjcmlwdCBvcmlnaW5hdGVk
LiBUaGUKKyAgICAvLyBTY3JpcHRDb250cm9sbGVyIGNhbGxzIGJhY2sgdG8gdGhlIFhTU0F1ZGl0
b3IgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQorICAgIC8vIEphdmFTY3JpcHQgc2NyaXB0IGlzIHNh
ZmUgdG8gZXhlY3V0ZSBiZWZvcmUgZXhlY3V0aW5nIGl0LiBUaGUgZm9sbG93aW5nCisgICAgLy8g
bWV0aG9kcyBjYWxsIGludG8gWFNTQXVkaXRvcjoKKyAgICAvLworICAgIC8vICogU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUgLSB1c2VkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgc2NyaXB0cy4K
KyAgICAvLyAqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIgLSB1
c2VkIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXJzLgorICAgIC8vICogSFRNTFRv
a2VuaXplciNzY3JpcHRIYW5kbGVyIC0gdXNlZCB0byBsb2FkIGV4dGVybmFsIEphdmFTY3JpcHQg
c2NyaXB0cy4KKyAgICAvLyAKKyAgICBjbGFzcyBYU1NBdWRpdG9yIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgWFNTQXVkaXRvciBvYmplY3QgdGhhdCBpcyBhc3NvY2lh
dGVkIHdpdGggdGhlIHNwZWNpZmllZCBmcmFtZS4KKyAgICAgICAgLy8gQHBhcmFtIGZyYW1lIHRo
ZSBmcmFtZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGF1ZGl0b3IuCisgICAgICAgIFhTU0F1ZGl0
b3IoRnJhbWUqKTsKKyAgICAgICAgflhTU0F1ZGl0b3IoKTsKKworICAgICAgICBib29sIGlzRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkOyB9CisgICAgICAgIHZvaWQgc2V0WFNT
QXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNFbmFibGVkID0gZW5hYmxlZDsgfQor
CisgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc2NyaXB0IHNob3VsZCBiZSBhbGxv
d2VkIG9yIGRlbmllZCBleGVjdXRpb24KKyAgICAgICAgLy8gYmFzZWQgb24gdGhlIGNvbnRlbnQg
b2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAgIGJvb2wgY2FuRXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgY29uc3Q7CisKKyAgICAgICAgLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkIGV4
ZWN1dGlvbgorICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29udGVudCBvZiBhbnkgdXNlci1zdWJt
aXR0ZWQgZGF0YS4KKyAgICAgICAgYm9vbCBjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUpIGNvbnN0OworCisgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgZXZlbnQg
bGlzdGVuZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYmFzZWQgb24gdGhlCisgICAgICAgIC8vIGNvbnRl
bnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAgIGJvb2wgY2FuQ3JlYXRlSW5s
aW5lRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBjb2RlKSBjb25zdDsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4dGVy
bmFsIHNjcmlwdCBzaG91bGQgYmUgbG9hZGVkIGJhc2VkIG9uIHRoZQorICAgICAgICAvLyBjb250
ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorICAgICAgICBib29sIGNhbkxvYWRFeHRl
cm5hbFNjcmlwdEZyb21TcmMoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OworCisgICAgICAgIC8v
IERldGVybWluZXMgd2hldGhlciBvYmplY3Qgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBvbiB0aGUg
Y29udGVudCBvZiAKKyAgICAgICAgLy8gYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAg
IC8vCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBGcmFtZUxvYWRlcjo6cmVx
dWVzdE9iamVjdC4KKyAgICAgICAgYm9vbCBjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2RlVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nID0gVVRGOEVu
Y29kaW5nKCksIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycyA9IGZhbHNlKTsKKworICAgICAgICBi
b29sIGZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICAgICAgLy8gV2hl
dGhlciB0byBhdWRpdCBzY3JpcHRzLgorICAgICAgICBib29sIG1faXNFbmFibGVkOworCisgICAg
ICAgIC8vIFRoZSBmcmFtZSB0byBhdWRpdC4KKyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAg
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gWFNTQXVkaXRvcl9oCi0t
IAoxLjYuMC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31154</attachid>
            <date>2009-06-11 02:21:06 -0700</date>
            <delta_ts>2009-06-14 13:50:07 -0700</delta_ts>
            <desc>Patch (disabled by default, with a test)</desc>
            <filename>0001-XSSAuditor (3).patch</filename>
            <type>text/plain</type>
            <size>51593</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBlYTM1OGMwY2E5MjY1ZDIwOTIzZWIwZjc3NTRkZThhZDk5MTM0MjU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVHVlLCA5IEp1biAyMDA5IDE2OjI1OjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gWFNTQXVk
aXRvcgoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTIgKysKIC4uLi94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBo
cCAgICAgICAgIHwgICAxMSArKwogLi4uL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1l
eHBlY3RlZC50eHQgICAgfCAgICAzICsKIC4uLi9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3Ivc2NyaXB0LXRhZy5odG1sIHwgICAxNSArKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUxICsrKysrKwogV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvV2ViQ29y
ZS5iYXNlLmV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL1dl
YkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgICAgICAgICAgfCAgICA4ICsKIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgICAgIHwgICAgOCAr
CiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwICAgICAgICAgICB8ICAg
IDcgKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggICAgICAgICAgICAg
fCAgICA3ICsKIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgICAg
ICAgIHwgICAxMSArKwogV2ViQ29yZS9kb20vVG9rZW5pemVyLmggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEyICsrCiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTQgKy0KIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCAg
ICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIFdlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2MSArKysrKysrKysrKysrKysrKysr
KwogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTEzICsrKysrKysrKysrKysrCiBXZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTcgKysKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaCAgICAgIHwgICAgMSArCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW0gICAgICAgICAgICAgICB8ICAgMTEgKysKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc1ByaXZhdGUuaCAgICAgICAgIHwgICAgMyArCiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKwogV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsICAgfCAgICAzICsKIFdlYktp
dC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggICAgICAgICAgICAgIHwgICAgMiArCiBX
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUg
KysKIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaCAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgNiArCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDUgKwogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDI2ICsrKwogLi4uL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcCAgICAgICAgfCAgIDEzICsrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oICB8ICAgIDEgKwogLi4uL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgICA1ICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbSAgIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tICB8ICAgIDUgKwogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCAgfCAgICAxICsKIC4uLi9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIHwgICAxNyArKy0KIC4uLi9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCAgIHwgICAgNSArCiA0MCBm
aWxlcyBjaGFuZ2VkLCA2MDUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2VjaG8taW50ZXJ0YWcucGhwCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3NjcmlwdC10YWcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGFnZS9YU1NB
dWRpdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZjFhZWRjNC4uMzhhODcyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA2
LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI2MTk5CisKKyAgICAgICAgQWRkZWQgYSBiYXNpYyB0ZXN0IGZvciB0aGUg
WFNTQXVkaXRvci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9y
ZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWcuaHRtbDogQWRk
ZWQuCisKIDIwMDktMDYtMDkgIFBpZXJyZSBkJ0hlcmJlbW9udCAgPHBkaGVyYmVtb250QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1p
bnRlcnRhZy5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYyNDA3YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGhwCkBAIC0wLDAg
KzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzw/cGhwCitlY2hvICRf
R0VUWydxJ107Cis/PgorPHNjcmlwdD4KK3RvcC5wb3N0TWVzc2FnZSgnRE9ORScsICcqJyk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNlMmY4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Nj
cmlwdC10YWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29k
ZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWcuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5ZWY1MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQt
dGFnLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRY
U1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2VjaG8taW50ZXJ0YWcucGhwP3E9PHNjcmlwdD5hbGVydCgvWFNTLyk8L3NjcmlwdD4i
PgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNmNTQ1N2YuLjIyNGM3YjAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTQgQEAKKzIwMDktMDYtMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTkKKworICAgICAgICBBZGRlZCBhbiBleHBl
cmltZW50YWwgcmVmbGVjdGl2ZSBYU1MgZmlsdGVyLiAgVGhlIGZpbHRlciBpcyBkaXNhYmxlZCBi
eQorICAgICAgICBkZWZhdWx0LgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9zY3JpcHQtdGFnLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YWN0aXZlWFNTQXVkaXRvcik6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vVG9rZW5pemVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpUb2tlbml6ZXI6OmFjdGl2ZVhTU0F1ZGl0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5pemVyOjpzZXRYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuaXplcjo6VG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2NyaXB0SGFuZGxlcik6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVj
dCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFhTU0F1ZGl0
b3JFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6eHNzQXVkaXRvckVuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDb250cm9sQ2hhcmFjdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OlhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6flhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6Y2FuRXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Y2FuQ3JlYXRl
SW5saW5lRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5M
b2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmNhbkxvYWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QpOgorICAgICAg
ICAqIHBhZ2UvWFNTQXVkaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpzZXRYU1NBdWRp
dG9yRW5hYmxlZCk6CisKIDIwMDktMDYtMDkgIFBpZXJyZSBkJ0hlcmJlbW9udCAgPHBkaGVyYmVt
b250QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDE1MWMwMWEuLjkxNWYyMTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTI2Nyw2ICsxMjY3LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvV2ViS2l0UG9pbnQuaCBcCiAJV2ViQ29yZS9w
YWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBcCiAJV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgg
XAorCVdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcCBcCisJV2ViQ29yZS9wYWdlL1hTU0F1ZGl0
b3IuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggXAogCVdlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDFjZTQ3N2UuLjY4
ZmNlZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3Jl
L1dlYkNvcmUuYmFzZS5leHAKQEAgLTYyMyw2ICs2MjMsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxOXNldERhdGFiYXNlc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJz
aXZlRm9udEZhbWlseUVSS05TXzEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdz
MjBzZXRGYW50YXN5Rm9udEZhbWlseUVSS05TXzEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjBzZXRKYXZhU2NyaXB0RW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3My
MHNldFhTU0F1ZGl0b3JFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0U3RhbmRh
cmRGb250RmFtaWx5RVJLTlNfMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
MXNldFdlYlNlY3VyaXR5RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldExvY2Fs
U3RvcmFnZUVuYWJsZWRFYgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggZjk4ZjE4Ni4uOGRhNTE5MyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC04OTEsNiArODkxLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9TY3JlZW4uY3BwIFwKICAgICBwYWdlL1NldHRpbmdz
LmNwcCBcCiAgICAgcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAgXAorICAgIHBhZ2UvWFNTQXVkaXRv
ci5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luRGF0YS5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2lu
QXJyYXkuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdpbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggNjA1MmNlNC4uYzQxZjlhOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMjkxLDYgKzIyOTEsMTQgQEAKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcV29ya2VyTmF2aWdhdG9yLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFhTU0F1ZGl0b3IuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxYU1NB
dWRpdG9yLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJ3
aW4iDQogCQkJCT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM3YjI3ZWUuLjI4ZjVlZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yMTM4LDYgKzIxMzgsOCBAQAogCQk5M0Y5QjdBMDBCQTYwMzI2MDA4NTQw
NjQgLyogSlNDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9u
LmNwcCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5
RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLzsgfTsKIAkJOTNGREFGQ0Ew
QjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8q
IEVkaXRvckluc2VydEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0
MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKKwkJOTdERDREODcwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9y
LmggKi87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rv
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3
QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJ
CUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJQTcwOTRBRkEwRjI3QUU2
MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOTRBRjkwRjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZh
c1BpeGVsQXJyYXkuY3BwICovOyB9OwpAQCAtNzAxMiw2ICs3MDE0LDggQEAKIAkJOTNGOUI3OUUw
QkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkRBRkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0
b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRv
ckluc2VydEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0RENEQ4NDBG
REY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYU1NBdWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9y
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MDk0QUY5MEYyN0FFNjAwMDU5NkNFQyAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc1BpeGVsQXJyYXkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAyMzIsNiArMTAyMzYsOCBAQAogCQk2NUJGMDIx
ODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
Y3BwICovLAorCQkJCTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi8s
CiAJCQkJMzE2RkUxMDYwRTZFMUQ4NDAwQkY2MDg4IC8qIGFuaW1hdGlvbiAqLywKIAkJCQk5M0Mw
OUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovLAogCQkJCTg1MzhGMDAwMEFENzE3NzAwMDZB
ODFEMSAvKiBBYnN0cmFjdFZpZXcuaWRsICovLApAQCAtMTY3OTIsNiArMTY3OTgsNyBAQAogCQkJ
CTA4MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxOEY4MzFCODBGRDQ4Qzc4MDBEOEM1NkIgLyogV29ya2VyTG9hZGVyUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4OUNDQzUzMEY0NEU5ODEwMEI1REExMCAvKiBSZXBsYWNl
Tm9kZVdpdGhTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdERDREODcwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg3ODUsNiArMTg3
OTIsNyBAQAogCQkJCTg0NUU3MkZCMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDgxRUJGM0EwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1
aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5Q0NDNTIwRjQ0RTk4MTAwQjVEQTEwIC8q
IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3REQ0
RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZTU3MDI5My4uOTJlNTcy
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAj
aW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNp
bmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5oPgpAQCAtNTUsNiArNTYsNyBAQCBTY3JpcHRDb250
cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICNpZiBQTEFURk9STShNQUMp
CiAgICAgLCBtX3dpbmRvd1NjcmlwdE9iamVjdCgwKQogI2VuZGlmCisgICAgLCBtX1hTU0F1ZGl0
b3IobmV3IFhTU0F1ZGl0b3IoZnJhbWUpKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KE1BQ19KQVZBX0JSSURHRSkKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZEphdmFKU0JpbmRp
bmdzOwpAQCAtNzksNiArODEsMTEgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xs
ZXIoKQogCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSAKIHsKKyAgICBpZiAoIW1fWFNTQXVkaXRvci0+Y2Fu
RXZhbHVhdGUoc291cmNlQ29kZSkpIHsKKyAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNh
ZmUgdG8gYmUgZXZhbHVhdGVkLgorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIH0KKyAg
ICAKICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1cm5zIHRoZSBKUyByZXR1cm4gdmFsdWUgb3Ig
MAogICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLCBhbiBlcnJvciBvY2N1cmVkIG9yIHRoZSB0eXBl
IGNvdWxkbid0IGJlIGNvbnZlcnRlZC4KICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggZjcwMGNkOS4uNzc2NGMyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgU2NyaXB0U291cmNlQ29kZTsK
IGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgV2lkZ2V0OworY2xhc3Mg
WFNTQXVkaXRvcjsKIAogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8SlNDOjpCaW5kaW5n
czo6Um9vdE9iamVjdD4gPiBSb290T2JqZWN0TWFwOwogCkBAIC0xMzIsNiArMTMzLDkgQEAgcHVi
bGljOgogICAgIE5QT2JqZWN0KiBjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhU
TUxQbHVnSW5FbGVtZW50Kik7CiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7
CiAjZW5kaWYKKyAgICAKKyAgICAvLyBSZXR1cm5zIHRoZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQg
d2l0aCB0aGlzIFNjcmlwdENvbnRyb2xsZXIuCisgICAgWFNTQXVkaXRvciogYWN0aXZlWFNTQXVk
aXRvcigpIHsgcmV0dXJuIG1fWFNTQXVkaXRvci5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKQEAgLTE2NCw2ICsxNjgsOSBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0T2JqZWN0PiBtX3dpbmRvd1Nj
cmlwdE9iamVjdDsKICNlbmRpZgorICAgIAorICAgIC8vIFRoZSBYU1NBdWRpdG9yIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIFNjcmlwdENvbnRyb2xsZXIuCisgICAgT3duUHRyPFhTU0F1ZGl0b3I+IG1f
WFNTQXVkaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDBjZTdiY2EuLmE1MjJlNTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAKICNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgogCkBAIC02MSw2ICs2MiwxMSBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50
TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9kZSwgQXR0cmli
dQogICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
biAwOwogCisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5hY3RpdmVYU1NBdWRpdG9yKCktPmNh
bkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0
dHItPnZhbHVlKCkpKSB7CisgICAgICAgIC8vIFRoaXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4
ZWN1dGUuCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKICAgICBKU0RPTVdpbmRvdyog
Z2xvYmFsT2JqZWN0ID0gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAv
LyBFbnN1cmUgdGhhdCAnbm9kZScgaGFzIGEgSmF2YVNjcmlwdCB3cmFwcGVyIHRvIG1hcmsgdGhl
IGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNyZWF0aW5nLgpAQCAtODAsNiArODYsMTEgQEAgUGFzc1Jl
ZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZy
YW1lKiBmcmFtZSwgQXR0cmkKICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVy
ID0gZnJhbWUtPnNjcmlwdCgpOwogICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+
YWN0aXZlWFNTQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxv
Y2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgeworICAgICAgICAvLyBUaGlzIHNj
cmlwdCBpcyBub3Qgc2FmZSB0byBleGVjdXRlLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAK
ICAgICAvLyAnZ2xvYmFsT2JqZWN0JyBpcyB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHRoYXQgd2ls
bCBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KICAgICBKU0RPTVdpbmRv
dyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsT2JqZWN0KCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaCBiL1dlYkNvcmUvZG9tL1Rva2VuaXplci5o
CmluZGV4IGY5YzZkYzQuLjA2N2RlNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Rva2VuaXpl
ci5oCisrKyBiL1dlYkNvcmUvZG9tL1Rva2VuaXplci5oCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CisgICAgY2xhc3Mg
WFNTQXVkaXRvcjsKIAogICAgIGNsYXNzIFRva2VuaXplciB7CiAgICAgcHVibGljOgpAQCAtNTgs
MTEgKzU5LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkge30KIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNIVE1MVG9rZW5pemVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
CisgICAgICAgIC8vIFJldHVybnMgdGhlIFhTU0F1ZGl0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
dG9rZW5pemVyLgorICAgICAgICBYU1NBdWRpdG9yKiBhY3RpdmVYU1NBdWRpdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9YU1NBdWRpdG9yOyB9CisgICAgICAgIAorICAgICAgICAvLyBBc3NvY2lhdGVz
IHRoZSBzcGVjaWZpZWQgWFNTQXVkaXRvciB3aXRoIHRoaXMgdG9rZW5pemVyLgorICAgICAgICAv
LyBAcGFyYW0gYXVkaXRvciB0aGUgWFNTQXVkaXRvciB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHRv
a2VuaXplci4KKyAgICAgICAgdm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3Ip
IHsgbV9YU1NBdWRpdG9yID0gYXVkaXRvcjsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBU
b2tlbml6ZXIoYm9vbCB2aWV3U291cmNlTW9kZSA9IGZhbHNlKSAKICAgICAgICAgICAgIDogbV9w
YXJzZXJTdG9wcGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmll
d1NvdXJjZU1vZGUpCisgICAgICAgICAgICAsIG1fWFNTQXVkaXRvcigwKQogICAgICAgICB7CiAg
ICAgICAgIH0KIApAQCAtNzEsNiArODAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIGV2ZW4gd2hlbiBpdCBoYXMgYnVmZmVyZWQgZGF0YS4KICAgICAgICAgYm9vbCBtX3BhcnNl
clN0b3BwZWQ7CiAgICAgICAgIGJvb2wgbV9pblZpZXdTb3VyY2VNb2RlOworICAgICAgICAKKyAg
ICAgICAgLy8gVGhlIFhTU0F1ZGl0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdG9rZW5pemVyLgor
ICAgICAgICBYU1NBdWRpdG9yKiBtX1hTU0F1ZGl0b3I7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IDM0MWVlY2MuLjg2MzNmMTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFRva2VuaXplci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTQzNiwxMSArNDM3
LDE0IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNjcmlwdEhhbmRsZXIo
U3RhdGUgc3RhdGUpCiAgICAgICAgICAgICAgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkp
CiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVxdWVzdGluZyBzY3JpcHQgYXQgdGltZSAl
ZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgLy8g
VGhlIHBhcnNlciBtaWdodCBoYXZlIGJlZW4gc3RvcHBlZCBieSBmb3IgZXhhbXBsZSBhIHdpbmRv
dy5jbG9zZSBjYWxsIGluIGFuIGVhcmxpZXIgc2NyaXB0LgotICAgICAgICAgICAgICAgIC8vIElm
IHNvLCB3ZSBkb24ndCB3YW50IHRvIGxvYWQgc2NyaXB0cy4KLSAgICAgICAgICAgICAgICBpZiAo
IW1fcGFyc2VyU3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3Jp
cHQobV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUsIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSkp
KQotICAgICAgICAgICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHRzLmFwcGVuZChjcyk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0b3IgJiYgbV9Y
U1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKG1fc2NyaXB0VGFnU3JjQXR0
clZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGFyc2VyIG1pZ2h0IGhhdmUg
YmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEgd2luZG93LmNsb3NlIGNhbGwgaW4gYW4gZWFy
bGllciBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHNvLCB3ZSBkb24ndCB3YW50
IHRvIGxvYWQgc2NyaXB0cy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhcnNlclN0b3Bw
ZWQgJiYgKGNzID0gbV9kb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VGFn
U3JjQXR0clZhbHVlLCBtX3NjcmlwdFRhZ0NoYXJzZXRBdHRyVmFsdWUpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2RlID0gMDsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2RlID0g
MDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1fc2NyaXB0Tm9kZSA9IDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggN2E5ZWYzMi4uODNiZGJhOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtOTAsNiArOTAsNyBAQAogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJYTUxUb2tlbml6ZXIuaCIK
KyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC05OTMsNiArOTk0LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsLCBib29sIGRpc3BhdGNoLCBTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQogICAgIHJlc3RvcmVEb2N1bWVudFN0YXRlKCk7CiAKICAgICBkb2N1
bWVudC0+aW1wbGljaXRPcGVuKCk7CisgICAgCisgICAgLy8gQXNzb2NpYXRlIHRoZSBhY3RpdmUg
WFNTQXVkaXRvciB3aXRoIHRoZSB0b2tlbml6ZXIuCisgICAgZG9jdW1lbnQtPnRva2VuaXplcigp
LT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT5hY3RpdmVYU1NBdWRpdG9yKCkpOwog
CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zZXRD
b250ZW50c1NpemUoSW50U2l6ZSgpKTsKQEAgLTE2NDUsNiArMTY0OSwxMSBAQCBib29sIEZyYW1l
TG9hZGVyOjpyZXF1ZXN0T2JqZWN0KFJlbmRlclBhcnQqIHJlbmRlcmVyLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV9mcmFtZS0+c2Ny
aXB0KCktPmFjdGl2ZVhTU0F1ZGl0b3IoKS0+Y2FuTG9hZE9iamVjdCh1cmwpKSB7CisgICAgICAg
IC8vIEl0IGlzIHVuc2FmZSB0byBob25vciB0aGUgcmVxdWVzdCBmb3IgdGhpcyBvYmplY3QuCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBLVVJMIGNvbXBsZXRlZFVSTDsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCA5MWVjMGIzLi4wNjAwYzJjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSog
cGFnZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGRpc2FibGVkIGJ5IGRl
ZmF1bHQgYXMgaXQgbWFrZXMgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgZmVhdHVy
ZSBkb3dubG9hZCBmaWxlcwogICAgIC8vIHRoZXkgY2FuJ3QgdXNlIGJ5LiBMZWF2aW5nIGVuYWJs
ZWQgZm9yIG5vdyB0byBub3QgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yLgogICAgICwgbV9kb3du
bG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1feHNzQXVkaXRvckVuYWJs
ZWQoZmFsc2UpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHll
dCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3Jl
IHRyeWluZyB0byB1c2UgaXQuCkBAIC00NTgsNCArNDU5LDkgQEAgdm9pZCBTZXR0aW5nczo6c2V0
RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKGJvb2wgZG93bmxvYWRhYmxlQmluYXJ5Rm9u
dHNFbmEKICAgICBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA9IGRvd25sb2FkYWJs
ZUJpbmFyeUZvbnRzRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVu
YWJsZWQoYm9vbCB4c3NBdWRpdG9yRW5hYmxlZCkKK3sKKyAgICBtX3hzc0F1ZGl0b3JFbmFibGVk
ID0geHNzQXVkaXRvckVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
aW5kZXggNjJjZjdmNi4uOWQ0ZTQyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkKGJvb2wpOwogICAgICAgICBib29sIGRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOyB9CiAK
KyAgICAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCB4
c3NBdWRpdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1feHNzQXVkaXRvckVuYWJsZWQ7IH0K
KwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgCkBAIC0yOTcs
NiArMzAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fYWxsb3dTY3Jp
cHRzVG9DbG9zZVdpbmRvd3MgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlv
ciA6IDE7CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQgOiAx
OworICAgICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQgOiAxOwogCiAjaWYgVVNFKFNBRkFS
SV9USEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
WFNTQXVkaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM3ZGUw
OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcApAQCAtMCww
ICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5pZWwgQmF0ZXMg
KGRiYXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCisKKyNpbmNsdWRlICJDb25zb2xlLmgi
CisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgIAorLy8gVGhpcyBtZXRob2QgYWxzbyBh
cHBlYXJzIGluIGZpbGUgUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwLgorc3RhdGljIGJvb2wgaXND
b250cm9sQ2hhcmFjdGVyKFVDaGFyIGMpCit7CisgICByZXR1cm4gYyA8ICcgJyB8fCBjID09IDEy
NzsKK30KKyAgCitYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1f
aXNFbmFibGVkKGZhbHNlKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKKyAgICBpZiAoU2V0dGlu
Z3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCkpCisgICAgICAgIG1faXNFbmFibGVkID0g
c2V0dGluZ3MtPnhzc0F1ZGl0b3JFbmFibGVkKCk7Cit9CisKK1hTU0F1ZGl0b3I6On5YU1NBdWRp
dG9yKCkKK3sKK30KKyAgCitib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGNhbkV2YWx1YXRlKFN0cmlu
Zyhzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLmRhdGEoKSwgc291cmNlQ29kZS5qc1NvdXJjZUNv
ZGUoKS5sZW5ndGgoKSkpOworfQorICAKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdAoreworICAgIGlmICghbV9pc0VuYWJsZWQpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGlmIChmaW5kSW5SZXF1ZXN0KHNvdXJjZUNv
ZGUpKSB7CisgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LlxuIjsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVz
c2FnZSwgMSwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFhTU0F1ZGl0b3I6OmNhbkNyZWF0ZUlubGluZUV2ZW50TGlz
dGVuZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb2RlKSBjb25zdAoreworICAgIGlm
ICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIHJldHVybiBj
YW5FdmFsdWF0ZShjb2RlKTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2FkRXh0ZXJuYWxT
Y3JpcHRGcm9tU3JjKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAoreworICAgIGlmICghbV9pc0Vu
YWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAKKyAgICBpZiAoZmluZEluUmVxdWVzdCh1
cmwpKSB7CisgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LlxuIjsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVz
c2FnZSwgMSwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoZmluZEluUmVxdWVzdCh1cmwpKSB7CisgICAgICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4g
U291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0IjsKKyAgICAgICAgbV9m
cmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3Vy
Y2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOyAgICAK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8g
c3RhdGljCitTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgc3RyLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMpCit7
CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBTdHJpbmcgdXJsID0gc3RyOworICAgIAorICAgIHVy
bC5yZXBsYWNlKCcrJywgJyAnKTsKKyAgICByZXN1bHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXModXJsLCBlbmNvZGluZyk7CisgICAgcmV0dXJuIChhbGxvd051bGxDaGFyYWN0ZXJzKT8gcmVz
dWx0IDogcmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7Cit9CisK
K2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgU3RyaW5nIHBhZ2VV
UkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICAKKyAgICBpZiAo
cHJvdG9jb2xJcyhwYWdlVVJMLCAiZGF0YSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHN0cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsKKyAgICAgICAgLy8gVGhlIHN0
cmluZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVSTC4KKyAgICAgICAgU3RyaW5n
IGRlY29kZWRQYWdlVVJMID0gZGVjb2RlVVJMKHBhZ2VVUkwsIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgIGlmIChkZWNvZGVkUGFnZVVSTC5maW5k
KHN0cmluZywgMCwgZmFsc2UpICE9IC0xKQorICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdl
J3ZlIGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KKyAgICB9CisgICAgCisgICAgRm9ybURhdGEqIGZv
cm1EYXRhT2JqID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFs
UmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAgaWYgKGZvcm1EYXRhT2JqICYmICFmb3JtRGF0YU9i
ai0+aXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBmb3JtRGF0YSA9IGZvcm1EYXRhT2JqLT5m
bGF0dGVuVG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IGZvcm1EYXRh
Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBOb3RpY2UgaXQgaXMgc3VmZmljaWVudCB0byBj
b21wYXJlIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0bworICAgICAgICAgICAgLy8gdGhlIHVy
bC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5ndGggb2YgdGhlIHVybC1kZWNvZGVk
CisgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3Ro
IG9mIHRoZSB1cmwtZW5jb2RlZAorICAgICAgICAgICAgLy8gc3RyaW5nLgorICAgICAgICAgICAg
U3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVSTChmb3JtRGF0YSwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICAgICAgICAgIGlmIChkZWNvZGVk
Rm9ybURhdGEuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsgIC8vIFdlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0YS4KKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIGIvV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
YjJjYWNmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaApAQCAt
MCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5pZWwgQmF0
ZXMgKGRiYXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
WFNTQXVkaXRvcl9oCisjZGVmaW5lIFhTU0F1ZGl0b3JfaAorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgU2Ny
aXB0U291cmNlQ29kZTsKKworICAgIC8vIFRoZSBYU1NBdWRpdG9yIGNsYXNzIGlzIHVzZWQgdG8g
cHJldmVudCB0eXBlIDEgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcKKyAgICAvLyB2dWxuZXJhYmlsaXRl
cyAoYWxzbyBrbm93biBhcyByZWZsZWN0ZWQgdnVsbmVyYWJpbGl0aWVzKS4KKyAgICAvLworICAg
IC8vIE1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgWFNTQXVkaXRvciBjbGFzcyBkZWNpZGVzIHdoZXRo
ZXIgdGhlIGV4ZWN1dGlvbiBvZgorICAgIC8vIGEgc2NyaXB0IGlzIHRvIGJlIGFsbG93ZWQgb3Ig
ZGVuaWVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIGFueQorICAgIC8vIHVzZXItc3VibWl0dGVk
IGRhdGEsIGluY2x1ZGluZzoKKyAgICAvLworICAgIC8vICogdGhlIHF1ZXJ5IHN0cmluZyBvZiB0
aGUgVVJMLgorICAgIC8vICogdGhlIEhUVFAtUE9TVCBkYXRhLgorICAgIC8vCisgICAgLy8gSWYg
dGhlIHNvdXJjZSBjb2RlIG9mIGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNlci1zdWJtaXR0ZWQg
ZGF0YSB0aGVuIGl0CisgICAgLy8gaXMgZGVuaWVkIGV4ZWN1dGlvbi4KKyAgICAvLworICAgIC8v
IFdoZW4geW91IGluc3RhbnRpYXRlIHRoZSBYU1NBdWRpdG9yIHlvdSBtdXN0IHNwZWNpZnkgdGhl
IHtAbGluayBGcmFtZX0KKyAgICAvLyBvZiB0aGUgcGFnZSB0aGF0IHlvdSB3aXNoIHRvIGF1ZGl0
LgorICAgIC8vCisgICAgLy8gQmluZGluZ3MKKyAgICAvLworICAgIC8vIEFuIFhTU0F1ZGl0b3Ig
aXMgaW5zdGFudGlhdGVkIHdpdGhpbiB0aGUgY29udHJ1Y3RvciBvZiBhCisgICAgLy8gU2NyaXB0
Q29udHJvbGxlciBvYmplY3QgYW5kIHBhc3NlZCB0aGUgRnJhbWUgdGhlIHNjcmlwdCBvcmlnaW5h
dGVkLiBUaGUKKyAgICAvLyBTY3JpcHRDb250cm9sbGVyIGNhbGxzIGJhY2sgdG8gdGhlIFhTU0F1
ZGl0b3IgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQorICAgIC8vIEphdmFTY3JpcHQgc2NyaXB0IGlz
IHNhZmUgdG8gZXhlY3V0ZSBiZWZvcmUgZXhlY3V0aW5nIGl0LiBUaGUgZm9sbG93aW5nCisgICAg
Ly8gbWV0aG9kcyBjYWxsIGludG8gWFNTQXVkaXRvcjoKKyAgICAvLworICAgIC8vICogU2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGUgLSB1c2VkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgc2NyaXB0
cy4KKyAgICAvLyAqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIg
LSB1c2VkIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXJzLgorICAgIC8vICogSFRN
TFRva2VuaXplciNzY3JpcHRIYW5kbGVyIC0gdXNlZCB0byBsb2FkIGV4dGVybmFsIEphdmFTY3Jp
cHQgc2NyaXB0cy4KKyAgICAvLyAKKyAgICBjbGFzcyBYU1NBdWRpdG9yIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgWFNTQXVkaXRvciBvYmplY3QgdGhhdCBpcyBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBmcmFtZS4KKyAgICAgICAgLy8gQHBhcmFtIGZyYW1l
IHRoZSBmcmFtZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGF1ZGl0b3IuCisgICAgICAgIFhTU0F1
ZGl0b3IoRnJhbWUqKTsKKyAgICAgICAgflhTU0F1ZGl0b3IoKTsKKworICAgICAgICBib29sIGlz
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkOyB9CisgICAgICAgIHZvaWQgc2V0
WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNFbmFibGVkID0gZW5hYmxlZDsg
fQorCisgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc2NyaXB0IHNob3VsZCBiZSBh
bGxvd2VkIG9yIGRlbmllZCBleGVjdXRpb24KKyAgICAgICAgLy8gYmFzZWQgb24gdGhlIGNvbnRl
bnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAgIGJvb2wgY2FuRXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgY29uc3Q7CisKKyAgICAgICAgLy8g
RGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVk
IGV4ZWN1dGlvbgorICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29udGVudCBvZiBhbnkgdXNlci1z
dWJtaXR0ZWQgZGF0YS4KKyAgICAgICAgYm9vbCBjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcmIHNv
dXJjZUNvZGUpIGNvbnN0OworCisgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgZXZl
bnQgbGlzdGVuZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYmFzZWQgb24gdGhlCisgICAgICAgIC8vIGNv
bnRlbnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAgIGJvb2wgY2FuQ3JlYXRl
SW5saW5lRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3Ry
aW5nJiBjb2RlKSBjb25zdDsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4
dGVybmFsIHNjcmlwdCBzaG91bGQgYmUgbG9hZGVkIGJhc2VkIG9uIHRoZQorICAgICAgICAvLyBj
b250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorICAgICAgICBib29sIGNhbkxvYWRF
eHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OworCisgICAgICAg
IC8vIERldGVybWluZXMgd2hldGhlciBvYmplY3Qgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBvbiB0
aGUgY29udGVudCBvZiAKKyAgICAgICAgLy8gYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBGcmFtZUxvYWRlcjo6
cmVxdWVzdE9iamVjdC4KKyAgICAgICAgYm9vbCBjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2Rl
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nID0gVVRG
OEVuY29kaW5nKCksIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycyA9IGZhbHNlKTsKKworICAgICAg
ICBib29sIGZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICAgICAgLy8g
V2hldGhlciB0byBhdWRpdCBzY3JpcHRzLgorICAgICAgICBib29sIG1faXNFbmFibGVkOworCisg
ICAgICAgIC8vIFRoZSBmcmFtZSB0byBhdWRpdC4KKyAgICAgICAgRnJhbWUqIG1fZnJhbWU7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gWFNTQXVkaXRvcl9o
CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDE2YTE2NzIuLmRkOTNkZGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDYtMTEg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjYxOTkKKworICAgICAgICBBZGRlZCBwcmVmZXJlbmNlIHRvIGVuYWJsZSB0aGUg
WFNTQXVkaXRvci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2Vi
UHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBpc1hT
U0F1ZGl0b3JFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFhTU0F1ZGl0
b3JFbmFibGVkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVm
ZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246XSk6CisKIDIwMDktMDYtMDggIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBNYXJrIFJv
d2UuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5k
ZXggYjJhNzlhYS4uNTU1YTc2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlS2V5c1ByaXZhdGUuaApAQCAtODEsNiArODEsNyBAQAogI2RlZmluZSBXZWJLaXRFbmFibGVG
dWxsRG9jdW1lbnRUZWFyZG93blByZWZlcmVuY2VLZXkgQCJXZWJLaXRFbmFibGVGdWxsRG9jdW1l
bnRUZWFyZG93biIKICNkZWZpbmUgV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCIKICNkZWZpbmUgV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkgQCJXZWJLaXRab29t
c1RleHRPbmx5IgorI2RlZmluZSBXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkg
QCJXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZCIKIAogLy8gVGhlc2UgYXJlIHByaXZhdGUgYm90aCBi
ZWNhdXNlIGNhbGxlcnMgc2hvdWxkIGJlIHVzaW5nIHRoZSBjb3ZlciBtZXRob2RzIGFuZCBiZWNh
dXNlIHRoZQogLy8gY292ZXIgbWV0aG9kcyB0aGVtc2VsdmVzIGFyZSBwcml2YXRlLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGUxZWNmYTMuLjcxNGQ2MjYgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTM0Nyw2ICszNDcsNyBAQCBzdGF0aWMgV2Vi
Q2FjaGVNb2RlbCBjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVk
UHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBX
ZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdFpvb21zVGV4dE9ubHlQ
cmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdl
YktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgbmlsXTsKIAogICAg
IC8vIFRoaXMgdmFsdWUgc2hvdWxkbid0IGV2ZXIgY2hhbmdlLCB3aGljaCBpcyBhc3N1bWVkIGlu
IHRoZSBpbml0aWFsaXphdGlvbiBvZiBXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkg
YWJvdmUKQEAgLTgxMCw2ICs4MTEsMTYgQEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2Rl
bEZvck1haW5CdW5kbGUodm9pZCkKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5
OldlYktpdFpvb21zVGV4dE9ubHlQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTClpc1hTU0F1
ZGl0b3JFbmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0
WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRYU1NBdWRp
dG9yRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZv
cktleTpXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAtIChCT09M
KXJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHMKIHsKICAgICByZXR1cm4gW3NlbGYg
X2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRSZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRz
UHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgKaW5kZXggNTBjOTdkZS4uMWU3NmI2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaApAQCAtMTAxLDYgKzEwMSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2Vi
UHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOwogLSAoQk9PTCl6b29tc1RleHRPbmx5Owog
LSAodm9pZClzZXRab29tc1RleHRPbmx5OihCT09MKXpvb21zVGV4dE9ubHk7CiAKKy0gKEJPT0wp
aXNYU1NBdWRpdG9yRW5hYmxlZDsKKy0gKHZvaWQpc2V0WFNTQXVkaXRvckVuYWJsZWQ6KEJPT0wp
ZmxhZzsKKwogLy8gemVybyBtZWFucyBkbyBBdXRvU2NhbGUKIC0gKGZsb2F0KVBERlNjYWxlRmFj
dG9yOwogLSAodm9pZClzZXRQREZTY2FsZUZhY3RvcjooZmxvYXQpc2NhbGU7CmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IDIyMTllOTcuLmQxYWY5ZjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0x
MzAxLDYgKzEzMDEsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQo
KQogICAgIHNldHRpbmdzLT5zZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZChbcHJlZmVyZW5j
ZXMgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKFtwcmVmZXJlbmNlcyBvZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0Wm9vbXNUZXh0T25seShbcHJl
ZmVyZW5jZXMgem9vbXNUZXh0T25seV0pOworICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5h
YmxlZChbcHJlZmVyZW5jZXMgaXNYU1NBdWRpdG9yRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5z
ZXRFbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUoIVdLQXBwVmVyc2lvbkNoZWNrTGVzc1Ro
YW4oQCJjb20uYXBwbGUuaVdlYiIsIC0xLCAyLjEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA1M2MyNDFkLi44ZTgx
NGJhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTA2LTExICBBZGFtIEJhcnRoICA8YWJhcnRo
QGFyY3RpY2EubG9jYWw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTk5CisK
KyAgICAgICAgQWRkZWQgcHJlZmVyZW5jZSB0byBlbmFibGUgdGhlIFhTU0F1ZGl0b3IuCisKKyAg
ICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsOgorICAgICAgICAq
IFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNw
cDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToK
KyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjppc1hTU0F1ZGl0b3JFbmFibGVkKToKKyAgICAgICAg
KFdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJl
ZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMDktMDYtMDMgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgV2luZG93cyBDYWly
by4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmlkbCBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlk
bAppbmRleCBiOWUwNWVjLi41NjJhNzViIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCkBAIC03NSw0ICs3NSw3IEBAIGludGVyZmFjZSBJ
V2ViUHJlZmVyZW5jZXNQcml2YXRlIDogSVVua25vd24KIAogICAgIEhSRVNVTFQgYWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoW291dCwgcmV0dmFsXSBCT09MICphbGxvd0FjY2Vzcyk7
CiAgICAgSFJFU1VMVCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhbaW5dIEJP
T0wgYWxsb3dBY2Nlc3MpOworCisgICAgSFJFU1VMVCBpc1hTU0F1ZGl0b3JFbmFibGVkKFtvdXQs
IHJldHZhbF0gQk9PTCAqZW5hYmxlZCk7CisgICAgSFJFU1VMVCBzZXRYU1NBdWRpdG9yRW5hYmxl
ZChbaW5dIEJPT0wgZW5hYmxlZCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aAppbmRleCA4NDI2MjcxLi5kOWJiNWMzIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKQEAgLTEyMywzICsxMjMsNSBAQAogCiAjZGVmaW5lIFdlYktpdFpvb21zVGV4dE9ubHlQ
cmVmZXJlbmNlS2V5ICJXZWJLaXRab29tc1RleHRPbmx5IgogCisjZGVmaW5lIFdlYktpdFhTU0F1
ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0WFNTQXVkaXRvckVuYWJsZWQiCisKZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggOTk3NjE1Zi4uYjkxYmQ0ZSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKQEAgLTIwNSw2ICsyMDUsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVm
YXVsdFNldHRpbmdzKCkKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwog
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1cml0
eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwpAQCAtNzgx
LDYgKzc4MiwyMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpz
ZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygKICAgICByZXR1cm4gU19PSzsKIH0K
IAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aXNYU1NBdWRpdG9y
RW5hYmxlZCgKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCit7CisgICAg
KmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFhTU0F1ZGl0b3JFbmFibGVkKAorICAgIC8qIFtp
bl0gKi8gQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRYU1NB
dWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICByZXR1cm4gU19PSzsK
K30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6amF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiBlbmFibGVkKQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5o
IGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGI2YmNmNmQuLjJmOTQzODIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9XZWJLaXQvd2luL1dl
YlByZWZlcmVuY2VzLmgKQEAgLTM1Niw2ICszNTYsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxl
VVJMcygKICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOwogCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzWFNTQXVkaXRvckVuYWJsZWQoCisgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRYU1NBdWRpdG9yRW5hYmxlZCgKKyAgICAvKiBbaW5dICovIEJPT0wg
ZW5hYmxlZCk7CisKICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCiAgICAgLy8gVGhpcyBtZXRob2Qg
YWNjZXNzZXMgYSBkaWZmZXJlbnQgcHJlZmVyZW5jZSBrZXkgdGhhbiBkZXZlbG9wZXJFeHRyYXNF
bmFibGVkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKaW5kZXggMDI5NmQ0NS4uZWMwZDc4NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00MjI3LDYgKzQy
MjcsMTEgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm4gaHI7CiAgICAgc2V0dGlu
Z3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKCEhZW5hYmxlZCk7CiAKKyAg
ICBociA9IHByZWZzUHJpdmF0ZS0+aXNYU1NBdWRpdG9yRW5hYmxlZCgmZW5hYmxlZCk7CisgICAg
aWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsKKyAgICBzZXR0aW5ncy0+c2V0WFNT
QXVkaXRvckVuYWJsZWQoISFlbmFibGVkKTsKKwogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAg
aHIgPSBwcmVmc1ByaXZhdGUtPnNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoJmVuYWJsZWQpOwog
ICAgIGlmIChGQUlMRUQoaHIpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2MDQ0YzEuLjhhYTIwNDEgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAwOS0wNi0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE5OQorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciB0ZXN0aW5nIHRoZSBYU1NBdWRpdG9yLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0WFNTQXVkaXRvckVuYWJs
ZWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAg
KHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRXZWJW
aWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOgorCiAyMDA5LTA2LTA5ICBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGRhZGYyNGYuLmE4MjYwZDYgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAg
LTU4NSw2ICs1ODUsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFhT
U0F1ZGl0b3JFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICBjb250cm9sbGVyLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxl
bWVudHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFz
IG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTg4MSw2ICs4OTMsNyBAQCBKU1N0YXRp
Y0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAg
ICAgeyAic2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRQZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBv
cHVwQmxvY2tpbmdFbmFibGVkIiwgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgc2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFhTU0F1ZGl0b3JF
bmFibGVkIiwgc2V0WFNTQXVkaXRvckVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIiwgc2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCIsIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMiLCBzZXRTdG9w
UHJvdmlzaW9uYWxGcmFtZUxvYWRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDg4NjdjY2QuLmNh
OWZiZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQZXJzaXN0
ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNl
dFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGJvb2wgZmxhZyk7CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChi
b29sIGZsYWcpOwogICAgIHZvaWQgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChi
b29sIGZsYWcpOwogICAgIHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZmxh
Zyk7CiAgICAgdm9pZCBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBjeWNsZXMp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMmY5MjIyYS4uNTRlMTM2OCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCkBAIC0yNDMsNiArMjQzLDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIGdfb2JqZWN0X3NldChH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIsIGZsYWcsIE5VTEwp
OwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChi
b29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiB7
CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDdmZDNhYTEuLmY4MzVhYmMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEw
NDMsNiArMTA0Myw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZygpCiAgICAgW3ByZWZlcmVuY2VzIHNldEphdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHk6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0T2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQ6Tk9dOworICAgIFtwcmVmZXJlbmNlcyBzZXRYU1NBdWRpdG9yRW5hYmxl
ZDpOT107CiAKICAgICBpZiAocGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pIHsKICAg
ICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb246W05TVVJMIFVSTFdp
dGhTdHJpbmc6KE5TU3RyaW5nICopKHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uLmdl
dCgpKV1dOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDUxNTBlNWQuLjRlOTk3OGMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTI0NCw2ICsyNDQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQK
ICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQ6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldFhTU0F1ZGl0b3JFbmFibGVkOmVuYWJs
ZWRdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5h
YmxlZChib29sIHBvcHVwQmxvY2tpbmdFbmFibGVkKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJW
aWV3XSBwcmVmZXJlbmNlc10gc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxs
eTohcG9wdXBCbG9ja2luZ0VuYWJsZWRdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggZjMyODk1ZC4uNWYzN2Q5NSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBA
IC02NTcsNiArNjU3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3Rh
dGVCZWZvcmVUZXN0aW5nKCkKICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnByZWZlcmVuY2Vz
KCZwcmVmZXJlbmNlcykpKSB7CiAgICAgICAgIHByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKEZBTFNFKTsKICAgICAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkoVFJVRSk7CisgICAgICAgIHByZWZlcmVuY2VzLT5zZXRY
U1NBdWRpdG9yRW5hYmxlZChGQUxTRSk7CiAKICAgICAgICAgaWYgKHBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKSB7CiAgICAgICAgICAgICBWZWN0b3I8d2NoYXJfdD4gdXJsQ2hhcmFj
dGVycyhDRlN0cmluZ0dldExlbmd0aChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbi5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggNjRkMjIyMS4uYWYwY2UyMyAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQKICAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBC
bG9ja2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAg
IENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3
KCZ3ZWJWaWV3KSkpCkBAIC0zMTgsNyArMzE4LDIwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkK
ICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseSghcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgcHJlZmVyZW5j
ZXMtPnNldFhTU0F1ZGl0b3JFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
Q09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXco
JndlYlZpZXcpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNl
cz4gcHJlZmVyZW5jZXM7CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJl
ZmVyZW5jZXMpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZmVyZW5jZXMtPnNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoIWVuYWJsZWQpOwogfQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBz
aG91bGRDeWNsZSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xh
eW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggNzA5ODc3Mi4uYTIyM2ZlOSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAKQEAgLTE2MCw2ICsxNjAsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJT
dHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0tIAox
LjYuMC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31269</attachid>
            <date>2009-06-14 13:50:07 -0700</date>
            <delta_ts>2009-06-14 15:22:41 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-XSSAuditor (4).patch</filename>
            <type>text/plain</type>
            <size>51045</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBkYmQ4Y2QzOWYxODhmZmZiMzVjNmE3OGJmNmYzYTk3NDY3MWM0MzlkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVHVlLCA5IEp1biAyMDA5IDE2OjI1OjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gWFNTQXVk
aXRvcgoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTIgKysKIC4uLi94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBo
cCAgICAgICAgIHwgICAgOCArCiAuLi4vc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4
cGVjdGVkLnR4dCAgICB8ICAgIDMgKwogLi4uL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLmh0bWwgfCAgIDE1ICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTEgKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9XZWJDb3Jl
LmJhc2UuZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvV2Vi
Q29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgICAgICAgICB8ICAgIDggKwogV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgICAgfCAgICA4ICsK
IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgICAgICAgICAgIHwgICAg
NyArCiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCAgICAgICAgICAgICB8
ICAgIDYgKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCAgICAg
ICAgfCAgIDExICsrCiBXZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDggKwogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE0ICstCiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRv
ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNjAgKysrKysrKysrKysrKysrKysrKysK
IFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEx
MSArKysrKysrKysrKysrKwogV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE3ICsrCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmggICAgICB8ICAgIDEgKwogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tICAgICAgICAgICAgICAgfCAgIDExICsrCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmggICAgICAgICB8ICAgIDMgKwogV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC93aW4vQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysKIFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbCAgIHwgICAgMyArCiBXZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oICAgICAgICAgICAgICB8ICAgIDIgKwogV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsr
CiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDYgKwogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICA1ICsKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAyNiArKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgICAgICAgIHwgICAxMyArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCAgfCAgICAxICsKIC4uLi9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwIHwgICAgNSArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0gICB8ICAgIDEgKwogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSAgfCAgICA1ICsKIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCB8ICAgMTcgKystCiAuLi4vRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgICB8ICAgIDUgKwogNDAgZmls
ZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy9lY2hvLWludGVydGFnLnBocAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BhZ2UvWFNTQXVk
aXRvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGYxYWVkYzQuLjM4YTg3MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNi0x
MSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjE5OQorCisgICAgICAgIEFkZGVkIGEgYmFzaWMgdGVzdCBmb3IgdGhlIFhT
U0F1ZGl0b3IuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2VjaG8taW50ZXJ0YWcucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTA2LTA5ICBQaWVycmUgZCdIZXJiZW1vbnQgIDxwZGhlcmJlbW9udEBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jl
c291cmNlcy9lY2hvLWludGVydGFnLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40YmIwMjhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBocApAQCAtMCwwICsx
LDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzw/cGhwCitlY2hvICRfR0VU
WydxJ107Cis/PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxM2UyZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBj
b2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODllZjUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWcuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9y
ZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5waHA/cT08c2NyaXB0PmFsZXJ0KC9YU1MvKTwvc2NyaXB0
PiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y1NDU3Zi4uZjg0MzQ3YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAwOS0wNi0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE5OQorCisgICAgICAgIEFkZGVkIGFuIGV4
cGVyaW1lbnRhbCByZWZsZWN0aXZlIFhTUyBmaWx0ZXIuICBUaGUgZmlsdGVyIGlzIGRpc2FibGVk
IGJ5CisgICAgICAgIGRlZmF1bHQuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWcuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3Jp
cHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp4c3NBdWRpdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ub2tlbml6ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRva2VuaXplcjo6eHNzQXVkaXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbml6ZXI6OnNldFhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5pemVy
OjpUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmJlZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVuYWJsZWQp
OgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
Ojp4c3NBdWRpdG9yRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0NvbnRyb2xDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjp+WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5FdmFs
dWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5DcmVhdGVJbmxpbmVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRFeHRlcm5h
bFNjcmlwdEZyb21TcmMpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Y2FuTG9hZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9Y
U1NBdWRpdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OnNldFhTU0F1ZGl0b3JFbmFibGVk
KToKKwogMjAwOS0wNi0wOSAgUGllcnJlIGQnSGVyYmVtb250ICA8cGRoZXJiZW1vbnRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTUxYzAx
YS4uOTE1ZjIxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjY3LDYgKzEyNjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGFnZS9XZWJLaXRQb2ludC5oIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCisJV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKIAlX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMWNlNDc3ZS4uNjhmY2VmMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cApAQCAtNjIzLDYgKzYyMyw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE5c2V0RGF0
YWJhc2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFt
aWx5RVJLTlNfMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRh
c3lGb250RmFtaWx5RVJLTlNfMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
MHNldEphdmFTY3JpcHRFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0WFNTQXVk
aXRvckVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRGYW1p
bHlFUktOU18xMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0V2ViU2Vj
dXJpdHlFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0TG9jYWxTdG9yYWdlRW5h
YmxlZEViCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCBmOThmMTg2Li44ZGE1MTkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTg5MSw2ICs4OTEsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAogICAgIHBhZ2UvU2V0dGluZ3MuY3BwIFwKICAg
ICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBcCisgICAgcGFnZS9YU1NBdWRpdG9yLmNwcCBcCiAg
ICAgcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5BcnJheS5jcHAg
XAogICAgIHBsdWdpbnMvUGx1Z2luLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCA2MDUyY2U0Li5jNDFmOWE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTIyOTEsNiArMjI5MSwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFn
ZVxXb3JrZXJOYXZpZ2F0b3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5jcHAiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFhTU0F1ZGl0b3IuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9IndpbiINCiAJCQkJ
Pg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdiMjdl
ZS4uMjhmNWVmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIxMzgsNiArMjEzOCw4IEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovOyB9
OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlGMEJBNjAzMjYw
MDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBCMTEzMDc0MDBF
Mjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5z
ZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OworCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsK
IAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMDBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJQTE3QzgxMjMw
RjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8q
IEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQlBNzA5NEFGQTBGMjdBRTYwMDA1OTZDRUMg
LyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzA5NEFGOTBGMjdBRTYwMDA1OTZDRUMgLyogQ2FudmFzUGl4ZWxBcnJh
eS5jcHAgKi87IH07CkBAIC03MDEyLDYgKzcwMTQsOCBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4
NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3REQ0RDg0MEZERjRENkQwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0RENEQ4
NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
N0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhU
TUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
RWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwOTRBRjkw
RjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDIzMiw2ICsxMDIzNiw4IEBACiAJCTY1QkYwMjE4MDk3NDgwNjMw
MEM0MzE5NiAvKiBwYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi8sCisJ
CQkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLywKIAkJCQkzMTZG
RTEwNjBFNkUxRDg0MDBCRjYwODggLyogYW5pbWF0aW9uICovLAogCQkJCTkzQzA5QTgyMEIwNjRG
MDUwMDVBQkQ0RCAvKiBtYWMgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFi
c3RyYWN0Vmlldy5pZGwgKi8sCkBAIC0xNjc5Miw2ICsxNjc5OCw3IEBACiAJCQkJMDgxRUJGM0Iw
RkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE4RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNw
YW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODc4NSw2ICsxODc5Miw3IEBACiAJ
CQkJODQ1RTcyRkIwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODlDQ0M1MjBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTdERDREODYwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBlNTcwMjkzLi45MmU1NzJkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlICJu
cHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyLmg+CkBAIC01NSw2ICs1Niw3IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNj
cmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
d2luZG93U2NyaXB0T2JqZWN0KDApCiAjZW5kaWYKKyAgICAsIG1fWFNTQXVkaXRvcihuZXcgWFNT
QXVkaXRvcihmcmFtZSkpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTUFDX0pBVkFf
QlJJREdFKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkSmF2YUpTQmluZGluZ3M7CkBAIC03
OSw2ICs4MSwxMSBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcigpCiAKIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUpIAogeworICAgIGlmICghbV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZShz
b3VyY2VDb2RlKSkgeworICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBiZSBl
dmFsdWF0ZWQuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfQorICAgIAogICAgIC8v
IGV2YWx1YXRlIGNvZGUuIFJldHVybnMgdGhlIEpTIHJldHVybiB2YWx1ZSBvciAwCiAgICAgLy8g
aWYgdGhlcmUgd2FzIG5vbmUsIGFuIGVycm9yIG9jY3VyZWQgb3IgdGhlIHR5cGUgY291bGRuJ3Qg
YmUgY29udmVydGVkLgogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBmNzAwY2Q5Li40NTI4NDk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBTdHJpbmc7CiBjbGFzcyBXaWRnZXQ7CitjbGFzcyBYU1NBdWRpdG9y
OwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0PiA+IFJvb3RPYmplY3RNYXA7CiAKQEAgLTEzMiw2ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAg
TlBPYmplY3QqIGNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVs
ZW1lbnQqKTsKICAgICBOUE9iamVjdCogd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICNlbmRpZgor
ICAgIAorICAgIFhTU0F1ZGl0b3IqIHhzc0F1ZGl0b3IoKSB7IHJldHVybiBtX1hTU0F1ZGl0b3Iu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCkBAIC0x
NjQsNiArMTY3LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRy
PFdlYlNjcmlwdE9iamVjdD4gbV93aW5kb3dTY3JpcHRPYmplY3Q7CiAjZW5kaWYKKyAgICAKKyAg
ICAvLyBUaGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBTY3JpcHRDb250cm9sbGVy
LgorICAgIE93blB0cjxYU1NBdWRpdG9yPiBtX1hTU0F1ZGl0b3I7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAppbmRleCAwY2U3YmNhLi5lNWJlMWQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiWFNT
QXVkaXRvci5oIgogCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApAQCAtNjEsNiArNjIs
MTEgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIt
PmlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmICghc2NyaXB0Q29udHJv
bGxlci0+eHNzQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxv
Y2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgeworICAgICAgICAvLyBUaGlzIHNj
cmlwdCBpcyBub3Qgc2FmZSB0byBleGVjdXRlLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXItPmds
b2JhbE9iamVjdCgpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3Jp
cHQgd3JhcHBlciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KQEAg
LTgwLDYgKzg2LDExIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAgICAgU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKICAgICBpZiAoIXNjcmlw
dENvbnRyb2xsZXItPmlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBp
ZiAoIXNjcmlwdENvbnRyb2xsZXItPnhzc0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRM
aXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKKyAg
ICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQogCiAgICAgLy8gJ2dsb2JhbE9iamVjdCcgaXMgdGhlIEphdmFTY3JpcHQg
d3JhcHBlciB0aGF0IHdpbGwgbWFyayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcu
CiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXItPmdsb2Jh
bE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVG9rZW5pemVyLmggYi9XZWJDb3Jl
L2RvbS9Ub2tlbml6ZXIuaAppbmRleCBmOWM2ZGM0Li5lYTMwM2Y5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Ub2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaApAQCAtMjgs
NiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2VnbWVudGVkU3Ry
aW5nOworICAgIGNsYXNzIFhTU0F1ZGl0b3I7CiAKICAgICBjbGFzcyBUb2tlbml6ZXIgewogICAg
IHB1YmxpYzoKQEAgLTU4LDExICs1OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHt9CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzSFRNTFRva2VuaXplcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIAorICAgICAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9YU1NBdWRpdG9yOyB9CisgICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvcihYU1NB
dWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRvciA9IGF1ZGl0b3I7IH0KIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgVG9rZW5pemVyKGJvb2wgdmlld1NvdXJjZU1vZGUgPSBmYWxzZSkgCiAg
ICAgICAgICAgICA6IG1fcGFyc2VyU3RvcHBlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9pblZp
ZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKQorICAgICAgICAgICAgLCBtX1hTU0F1ZGl0b3Io
MCkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTcxLDYgKzc2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBldmVuIHdoZW4gaXQgaGFzIGJ1ZmZlcmVkIGRhdGEuCiAgICAg
ICAgIGJvb2wgbV9wYXJzZXJTdG9wcGVkOwogICAgICAgICBib29sIG1faW5WaWV3U291cmNlTW9k
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIFRoZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIHRva2VuaXplci4KKyAgICAgICAgWFNTQXVkaXRvciogbV9YU1NBdWRpdG9yOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
VG9rZW5pemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAzNDFl
ZWNjLi44NjMzZjEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CkBAIC00MzYsMTEgKzQzNywxNCBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVy
OjpzY3JpcHRIYW5kbGVyKFN0YXRlIHN0YXRlKQogICAgICAgICAgICAgICAgIGlmICghbV9kb2Mt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3Rpbmcg
c2NyaXB0IGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgotICAg
ICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9y
IGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KLSAgICAg
ICAgICAgICAgICAvLyBJZiBzbywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCi0gICAg
ICAgICAgICAgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQgJiYgKGNzID0gbV9kb2MtPmRvY0xvYWRl
cigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlLCBtX3NjcmlwdFRhZ0No
YXJzZXRBdHRyVmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0cy5h
cHBlbmQoY3MpOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAobV9Y
U1NBdWRpdG9yICYmIG1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyht
X3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBh
cnNlciBtaWdodCBoYXZlIGJlZW4gc3RvcHBlZCBieSBmb3IgZXhhbXBsZSBhIHdpbmRvdy5jbG9z
ZSBjYWxsIGluIGFuIGVhcmxpZXIgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAvLyBJZiBz
bywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCisgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNj
cmlwdChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZhbHVl
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHRzLmFwcGVuZChjcyk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Ny
aXB0Tm9kZSA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IG1fc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBt
X3NjcmlwdE5vZGUgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDdhOWVmMzIuLmFkODk3
MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlICJX
aW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
WE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTkzLDYg
Kzk5NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBk
aXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICByZXN0b3JlRG9jdW1lbnRTdGF0
ZSgpOwogCiAgICAgZG9jdW1lbnQtPmltcGxpY2l0T3BlbigpOworICAgIAorICAgIC8vIEFzc29j
aWF0ZSB0aGUgWFNTQXVkaXRvciB3aXRoIHRoZSB0b2tlbml6ZXIuCisgICAgZG9jdW1lbnQtPnRv
a2VuaXplcigpLT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkp
OwogCiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5z
ZXRDb250ZW50c1NpemUoSW50U2l6ZSgpKTsKQEAgLTE2NDUsNiArMTY0OSwxMSBAQCBib29sIEZy
YW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KFJlbmRlclBhcnQqIHJlbmRlcmVyLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgQQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1pbWVUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV9mcmFtZS0+
c2NyaXB0KCktPnhzc0F1ZGl0b3IoKS0+Y2FuTG9hZE9iamVjdCh1cmwpKSB7CisgICAgICAgIC8v
IEl0IGlzIHVuc2FmZSB0byBob25vciB0aGUgcmVxdWVzdCBmb3IgdGhpcyBvYmplY3QuCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBLVVJMIGNvbXBsZXRlZFVSTDsKICAgICBp
ZiAoIXVybC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
IGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCA5MWVjMGIzLi4wNjAwYzJjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFn
ZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGRpc2FibGVkIGJ5IGRlZmF1
bHQgYXMgaXQgbWFrZXMgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgZmVhdHVyZSBk
b3dubG9hZCBmaWxlcwogICAgIC8vIHRoZXkgY2FuJ3QgdXNlIGJ5LiBMZWF2aW5nIGVuYWJsZWQg
Zm9yIG5vdyB0byBub3QgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yLgogICAgICwgbV9kb3dubG9h
ZGFibGVCaW5hcnlGb250c0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1feHNzQXVkaXRvckVuYWJsZWQo
ZmFsc2UpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwg
c28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRy
eWluZyB0byB1c2UgaXQuCkBAIC00NTgsNCArNDU5LDkgQEAgdm9pZCBTZXR0aW5nczo6c2V0RG93
bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKGJvb2wgZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmEKICAgICBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA9IGRvd25sb2FkYWJsZUJp
bmFyeUZvbnRzRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVuYWJs
ZWQoYm9vbCB4c3NBdWRpdG9yRW5hYmxlZCkKK3sKKyAgICBtX3hzc0F1ZGl0b3JFbmFibGVkID0g
eHNzQXVkaXRvckVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggNjJjZjdmNi4uOWQ0ZTQyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFi
bGVkKGJvb2wpOwogICAgICAgICBib29sIGRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOyB9CiAKKyAg
ICAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCB4c3NB
dWRpdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1feHNzQXVkaXRvckVuYWJsZWQ7IH0KKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgCkBAIC0yOTcsNiAr
MzAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fYWxsb3dTY3JpcHRz
VG9DbG9zZVdpbmRvd3MgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvciA6
IDE7CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQgOiAxOwor
ICAgICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQgOiAxOwogCiAjaWYgVVNFKFNBRkFSSV9U
SEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAgYi9XZWJDb3JlL3BhZ2UvWFNT
QXVkaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQwMWZlZgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcApAQCAtMCwwICsx
LDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5pZWwgQmF0ZXMgKGRi
YXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCisKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgIAorLy8gVGhpcyBtZXRob2QgYWxzbyBhcHBl
YXJzIGluIGZpbGUgUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwLgorc3RhdGljIGJvb2wgaXNDb250
cm9sQ2hhcmFjdGVyKFVDaGFyIGMpCit7CisgICByZXR1cm4gYyA8ICcgJyB8fCBjID09IDEyNzsK
K30KKyAgCitYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1faXNF
bmFibGVkKGZhbHNlKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKKyAgICBpZiAoU2V0dGluZ3Mq
IHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCkpCisgICAgICAgIG1faXNFbmFibGVkID0gc2V0
dGluZ3MtPnhzc0F1ZGl0b3JFbmFibGVkKCk7Cit9CisKK1hTU0F1ZGl0b3I6On5YU1NBdWRpdG9y
KCkKK3sKK30KKyAgCitib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGNhbkV2YWx1YXRlKFN0cmluZyhz
b3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLmRhdGEoKSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUo
KS5sZW5ndGgoKSkpOworfQorICAKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdAoreworICAgIGlmICghbV9pc0VuYWJsZWQpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGlmIChmaW5kSW5SZXF1ZXN0KHNvdXJjZUNvZGUp
KSB7CisgICAgICAgIHN0YXRpYyBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSAiUmVmdXNlZCB0byBl
eGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3
aXRoaW4gcmVxdWVzdC5cbiI7CisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xl
KCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29s
ZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpjYW5DcmVhdGVJbmxpbmVFdmVu
dExpc3RlbmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29kZSkgY29uc3QKK3sKKyAg
ICBpZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1
cm4gY2FuRXZhbHVhdGUoY29kZSk7Cit9CisKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuTG9hZEV4dGVy
bmFsU2NyaXB0RnJvbVNyYyhjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
aXNFbmFibGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgCisgICAgaWYgKGZpbmRJblJlcXVl
c3QodXJsKSkgeworICAgICAgICBzdGF0aWMgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gIlJlZnVz
ZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQg
Zm91bmQgd2l0aGluIHJlcXVlc3QuXG4iOworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuTG9hZE9iamVj
dChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChmaW5kSW5SZXF1ZXN0KHVybCkpIHsKKyAgICAg
ICAgc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBK
YXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1
ZXN0IjsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwg
MSwgU3RyaW5nKCkpOyAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcm
IHN0ciwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBhbGxvd051bGxDaGFyYWN0
ZXJzKQoreworICAgIFN0cmluZyByZXN1bHQ7CisgICAgU3RyaW5nIHVybCA9IHN0cjsKKyAgICAK
KyAgICB1cmwucmVwbGFjZSgnKycsICcgJyk7CisgICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKHVybCwgZW5jb2RpbmcpOworICAgIHJldHVybiBhbGxvd051bGxDaGFyYWN0ZXJz
ID8gcmVzdWx0IDogcmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7
Cit9CisKK2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QKK3sKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgU3RyaW5n
IHBhZ2VVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICAKKyAg
ICBpZiAocHJvdG9jb2xJcyhwYWdlVVJMLCAiZGF0YSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsKKyAgICAgICAgLy8g
VGhlIHN0cmluZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVSTC4KKyAgICAgICAg
U3RyaW5nIGRlY29kZWRQYWdlVVJMID0gZGVjb2RlVVJMKHBhZ2VVUkwsIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgIGlmIChkZWNvZGVkUGFnZVVS
TC5maW5kKHN0cmluZywgMCwgZmFsc2UpICE9IC0xKQorICAgICAgICAgICByZXR1cm4gdHJ1ZTsg
IC8vIFdlJ3ZlIGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KKyAgICB9CisgICAgCisgICAgRm9ybURh
dGEqIGZvcm1EYXRhT2JqID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAgaWYgKGZvcm1EYXRhT2JqICYmICFmb3Jt
RGF0YU9iai0+aXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBmb3JtRGF0YSA9IGZvcm1EYXRh
T2JqLT5mbGF0dGVuVG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IGZv
cm1EYXRhLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBOb3RpY2UgaXQgaXMgc3VmZmljaWVu
dCB0byBjb21wYXJlIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0bworICAgICAgICAgICAgLy8g
dGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5ndGggb2YgdGhlIHVybC1k
ZWNvZGVkCisgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUg
bGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAorICAgICAgICAgICAgLy8gc3RyaW5nLgorICAgICAg
ICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVSTChmb3JtRGF0YSwgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICAgICAgICAgIGlmIChk
ZWNvZGVkRm9ybURhdGEuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0
YS4KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIGIv
V2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hMDZiNTE5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3Iu
aApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5p
ZWwgQmF0ZXMgKGRiYXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgWFNTQXVkaXRvcl9oCisjZGVmaW5lIFhTU0F1ZGl0b3JfaAorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xh
c3MgU2NyaXB0U291cmNlQ29kZTsKKworICAgIC8vIFRoZSBYU1NBdWRpdG9yIGNsYXNzIGlzIHVz
ZWQgdG8gcHJldmVudCB0eXBlIDEgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcKKyAgICAvLyB2dWxuZXJh
YmlsaXRlcyAoYWxzbyBrbm93biBhcyByZWZsZWN0ZWQgdnVsbmVyYWJpbGl0aWVzKS4KKyAgICAv
LworICAgIC8vIE1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgWFNTQXVkaXRvciBjbGFzcyBkZWNpZGVz
IHdoZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZgorICAgIC8vIGEgc2NyaXB0IGlzIHRvIGJlIGFsbG93
ZWQgb3IgZGVuaWVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIGFueQorICAgIC8vIHVzZXItc3Vi
bWl0dGVkIGRhdGEsIGluY2x1ZGluZzoKKyAgICAvLworICAgIC8vICogdGhlIHF1ZXJ5IHN0cmlu
ZyBvZiB0aGUgVVJMLgorICAgIC8vICogdGhlIEhUVFAtUE9TVCBkYXRhLgorICAgIC8vCisgICAg
Ly8gSWYgdGhlIHNvdXJjZSBjb2RlIG9mIGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNlci1zdWJt
aXR0ZWQgZGF0YSB0aGVuIGl0CisgICAgLy8gaXMgZGVuaWVkIGV4ZWN1dGlvbi4KKyAgICAvLwor
ICAgIC8vIFdoZW4geW91IGluc3RhbnRpYXRlIHRoZSBYU1NBdWRpdG9yIHlvdSBtdXN0IHNwZWNp
ZnkgdGhlIHtAbGluayBGcmFtZX0KKyAgICAvLyBvZiB0aGUgcGFnZSB0aGF0IHlvdSB3aXNoIHRv
IGF1ZGl0LgorICAgIC8vCisgICAgLy8gQmluZGluZ3MKKyAgICAvLworICAgIC8vIEFuIFhTU0F1
ZGl0b3IgaXMgaW5zdGFudGlhdGVkIHdpdGhpbiB0aGUgY29udHJ1Y3RvciBvZiBhCisgICAgLy8g
U2NyaXB0Q29udHJvbGxlciBvYmplY3QgYW5kIHBhc3NlZCB0aGUgRnJhbWUgdGhlIHNjcmlwdCBv
cmlnaW5hdGVkLiBUaGUKKyAgICAvLyBTY3JpcHRDb250cm9sbGVyIGNhbGxzIGJhY2sgdG8gdGhl
IFhTU0F1ZGl0b3IgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQorICAgIC8vIEphdmFTY3JpcHQgc2Ny
aXB0IGlzIHNhZmUgdG8gZXhlY3V0ZSBiZWZvcmUgZXhlY3V0aW5nIGl0LiBUaGUgZm9sbG93aW5n
CisgICAgLy8gbWV0aG9kcyBjYWxsIGludG8gWFNTQXVkaXRvcjoKKyAgICAvLworICAgIC8vICog
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUgLSB1c2VkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQg
c2NyaXB0cy4KKyAgICAvLyAqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZUlubGluZUV2ZW50TGlz
dGVuZXIgLSB1c2VkIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXJzLgorICAgIC8v
ICogSFRNTFRva2VuaXplcjo6c2NyaXB0SGFuZGxlciAtIHVzZWQgdG8gbG9hZCBleHRlcm5hbCBK
YXZhU2NyaXB0IHNjcmlwdHMuCisgICAgLy8gCisgICAgY2xhc3MgWFNTQXVkaXRvciB7CisgICAg
cHVibGljOgorICAgICAgICBYU1NBdWRpdG9yKEZyYW1lKik7CisgICAgICAgIH5YU1NBdWRpdG9y
KCk7CisKKyAgICAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxl
ZDsgfQorICAgICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2lzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIg
dGhlIHNjcmlwdCBzaG91bGQgYmUgYWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uCisgICAgICAg
IC8vIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorICAg
ICAgICBib29sIGNhbkV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUp
IGNvbnN0OworCisgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc2NyaXB0IHNob3Vs
ZCBiZSBhbGxvd2VkIG9yIGRlbmllZCBleGVjdXRpb24KKyAgICAgICAgLy8gYmFzZWQgb24gdGhl
IGNvbnRlbnQgb2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAgIGJvb2wgY2FuRXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdDsKKworICAgICAgICAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVkIGJhc2Vk
IG9uIHRoZQorICAgICAgICAvLyBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgor
ICAgICAgICBib29sIGNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSkgY29uc3Q7CisKKyAgICAgICAgLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBleHRlcm5hbCBzY3JpcHQgc2hvdWxkIGJlIGxvYWRlZCBiYXNl
ZCBvbiB0aGUKKyAgICAgICAgLy8gY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4K
KyAgICAgICAgYm9vbCBjYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdDsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgb2JqZWN0IHNob3Vs
ZCBiZSBsb2FkZWQgYmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgCisgICAgICAgIC8vIGFueSB1c2Vy
LXN1Ym1pdHRlZCBkYXRhLgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBj
YWxsZWQgYnkgRnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QuCisgICAgICAgIGJvb2wgY2FuTG9h
ZE9iamVjdChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGFsbG93TnVsbENoYXJhY3Rl
cnMgPSBmYWxzZSk7CisKKyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYp
IGNvbnN0OworCisgICAgICAgIC8vIFdoZXRoZXIgdG8gYXVkaXQgc2NyaXB0cy4KKyAgICAgICAg
Ym9vbCBtX2lzRW5hYmxlZDsKKworICAgICAgICAvLyBUaGUgZnJhbWUgdG8gYXVkaXQuCisgICAg
ICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFhTU0F1ZGl0b3JfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxNmExNjcyLi5kZDkzZGRjIDEwMDY0NAotLS0g
YS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDA5LTA2LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTk5CisKKyAgICAgICAgQWRkZWQgcHJl
ZmVyZW5jZSB0byBlbmFibGUgdGhlIFhTU0F1ZGl0b3IuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAg
KC1bV2ViUHJlZmVyZW5jZXMgaXNYU1NBdWRpdG9yRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJQ
cmVmZXJlbmNlcyBzZXRYU1NBdWRpdG9yRW5hYmxlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOl0pOgorCiAy
MDA5LTA2LTA4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUnVi
YmVyLXN0YW1wZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IGIyYTc5YWEuLjU1NWE3NjcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTgxLDYgKzgxLDcgQEAK
ICNkZWZpbmUgV2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5IEAi
V2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd24iCiAjZGVmaW5lIFdlYktpdE9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFpvb21zVGV4dE9ubHlQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0Wm9vbXNUZXh0T25seSIKKyNkZWZpbmUgV2ViS2l0WFNTQXVkaXRv
ckVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0WFNTQXVkaXRvckVuYWJsZWQiCiAKIC8vIFRo
ZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUg
Y292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVyIG1ldGhvZHMgdGhlbXNlbHZl
cyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCBlMWVj
ZmEzLi43MTRkNjI2IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0zNDcs
NiArMzQ3LDcgQEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUo
dm9pZCkKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRXZWJB
cmNoaXZlRGVidWdNb2RlRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
ICBXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSwKKyAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXks
CiAgICAgICAgIG5pbF07CiAKICAgICAvLyBUaGlzIHZhbHVlIHNob3VsZG4ndCBldmVyIGNoYW5n
ZSwgd2hpY2ggaXMgYXNzdW1lZCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgV2ViS2l0UERGRGlz
cGxheU1vZGVQcmVmZXJlbmNlS2V5IGFib3ZlCkBAIC04MTAsNiArODExLDE2IEBAIHN0YXRpYyBX
ZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKHZvaWQpCiAgICAgW3NlbGYgX3Nl
dEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleV07
CiB9CiAKKy0gKEJPT0wpaXNYU1NBdWRpdG9yRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBf
Ym9vbFZhbHVlRm9yS2V5OldlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9
CisKKy0gKHZvaWQpc2V0WFNTQXVkaXRvckVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtzZWxm
IF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJl
bmNlS2V5XTsKK30KKwogLSAoQk9PTClyZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRz
CiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0UmVzcGVjdFN0YW5k
YXJkU3R5bGVLZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDUwYzk3ZGUuLjFlNzZiNjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTEwMSw2ICsxMDEsOSBA
QCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbjsKIC0g
KEJPT0wpem9vbXNUZXh0T25seTsKIC0gKHZvaWQpc2V0Wm9vbXNUZXh0T25seTooQk9PTCl6b29t
c1RleHRPbmx5OwogCistIChCT09MKWlzWFNTQXVkaXRvckVuYWJsZWQ7CistICh2b2lkKXNldFhT
U0F1ZGl0b3JFbmFibGVkOihCT09MKWZsYWc7CisKIC8vIHplcm8gbWVhbnMgZG8gQXV0b1NjYWxl
CiAtIChmbG9hdClQREZTY2FsZUZhY3RvcjsKIC0gKHZvaWQpc2V0UERGU2NhbGVGYWN0b3I6KGZs
b2F0KXNjYWxlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyMjE5ZTk3Li5kMWFmOWYwIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQpAQCAtMTMwMSw2ICsxMzAxLDcgQEAgc3RhdGljIGJvb2wgZmFzdERv
Y3VtZW50VGVhcmRvd25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2ZURlYnVn
TW9kZUVuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkXSk7CiAg
ICAgc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChbcHJlZmVy
ZW5jZXMgb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Mt
PnNldFpvb21zVGV4dE9ubHkoW3ByZWZlcmVuY2VzIHpvb21zVGV4dE9ubHldKTsKKyAgICBzZXR0
aW5ncy0+c2V0WFNTQXVkaXRvckVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzWFNTQXVkaXRvckVuYWJs
ZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKCFX
S0FwcFZlcnNpb25DaGVja0xlc3NUaGFuKEAiY29tLmFwcGxlLmlXZWIiLCAtMSwgMi4xKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggNTNjMjQxZC4uOGU4MTRiYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNi0x
MSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEBhcmN0aWNhLmxvY2FsPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNjE5OQorCisgICAgICAgIEFkZGVkIHByZWZlcmVuY2UgdG8gZW5hYmxl
IHRoZSBYU1NBdWRpdG9yLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmlkbDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlh
bGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aXNYU1NBdWRp
dG9yRW5hYmxlZCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6c2V0WFNTQXVkaXRvckVuYWJs
ZWQpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorCiAyMDA5LTA2
LTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWls
ZCBmaXggZm9yIFdpbmRvd3MgQ2Fpcm8uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKaW5kZXggYjllMDVlYy4uNTYyYTc1YiAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCisrKyBi
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbApAQCAtNzUs
NCArNzUsNyBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzUHJpdmF0ZSA6IElVbmtub3duCiAK
ICAgICBIUkVTVUxUIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFtvdXQsIHJldHZh
bF0gQk9PTCAqYWxsb3dBY2Nlc3MpOwogICAgIEhSRVNVTFQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMoW2luXSBCT09MIGFsbG93QWNjZXNzKTsKKworICAgIEhSRVNVTFQgaXNY
U1NBdWRpdG9yRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wgKmVuYWJsZWQpOworICAgIEhSRVNV
TFQgc2V0WFNTQXVkaXRvckVuYWJsZWQoW2luXSBCT09MIGVuYWJsZWQpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggODQyNjI3MS4uZDliYjVjMyAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xMjMsMyArMTIzLDUgQEAKIAogI2RlZmlu
ZSBXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSAiV2ViS2l0Wm9vbXNUZXh0T25seSIK
IAorI2RlZmluZSBXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFhT
U0F1ZGl0b3JFbmFibGVkIgorCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcCBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDk5NzYxNWYuLmI5MWJk
NGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1dlYktp
dC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0yMDUsNiArMjA1LDcgQEAgdm9pZCBXZWJQcmVm
ZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRYU1NB
dWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKQEAgLTc4MSw2ICs3ODIsMjAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMo
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXM6OmlzWFNTQXVkaXRvckVuYWJsZWQoCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiBlbmFibGVkKQoreworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdl
YktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOwor
fQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRp
dG9yRW5hYmxlZCgKKyAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29s
VmFsdWUoQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxl
ZCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoIAogICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vV2ViUHJlZmVyZW5jZXMuaCBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAppbmRl
eCBiNmJjZjZkLi4yZjk0MzgyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCkBAIC0zNTYsNiArMzU2LDEyIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNj
ZXNzKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1hTU0F1ZGl0
b3JFbmFibGVkKAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7CisKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0WFNTQXVkaXRvckVuYWJsZWQo
CisgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOworCiAgICAgLy8gV2ViUHJlZmVyZW5jZXMK
IAogICAgIC8vIFRoaXMgbWV0aG9kIGFjY2Vzc2VzIGEgZGlmZmVyZW50IHByZWZlcmVuY2Uga2V5
IHRoYW4gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDAyOTZkNDUuLmVjMGQ3ODcg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcApAQCAtNDIyNyw2ICs0MjI3LDExIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAgICAg
cmV0dXJuIGhyOwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxl
VVJMcyghIWVuYWJsZWQpOwogCisgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmlzWFNTQXVkaXRvckVu
YWJsZWQoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7
CisgICAgc2V0dGluZ3MtPnNldFhTU0F1ZGl0b3JFbmFibGVkKCEhZW5hYmxlZCk7CisKICNpZiBV
U0UoU0FGQVJJX1RIRU1FKQogICAgIGhyID0gcHJlZnNQcml2YXRlLT5zaG91bGRQYWludE5hdGl2
ZUNvbnRyb2xzKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA5NjA0NGMx
Li44YWEyMDQxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDktMDYtMTEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYx
OTkKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGVzdGluZyB0aGUgWFNTQXVkaXRvci4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKHNldFhTU0F1ZGl0b3JFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFhTU0F1ZGl0b3JFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3RpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9y
RW5hYmxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKToK
KwogMjAwOS0wNi0wOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkYWRmMjRm
Li5hODI2MGQ2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01ODUsNiArNTg1LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRYU1NBdWRpdG9yRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRh
dGlvbgorICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0WFNTQXVkaXRvckVuYWJsZWQo
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC04
ODEsNiArODkzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0
YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uIiwgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCIsIHNldFBvcHVwQmxvY2tp
bmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCIsIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJzZXRYU1NBdWRpdG9yRW5hYmxlZCIsIHNldFhTU0F1ZGl0b3JFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCIsIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJvdmlzaW9u
YWxGcmFtZUxvYWRzIiwgc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAppbmRleCA4ODY3Y2NkLi5jYTlmYmViIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdS
ZWYgcGF0aCk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwog
ICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGZsYWcpOworICAgIHZvaWQg
c2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzKGJvb2wgY3ljbGVzKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDJmOTIyMmEu
LjU0ZTEzNjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtMjQzLDYgKzI0MywxMSBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZmxh
ZykKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXByaXZhdGUt
YnJvd3NpbmciLCBmbGFnLCBOVUxMKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxl
c0VuYWJsZWQoYm9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA3ZmQz
YWExLi5mODM1YWJjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIFtwcmVmZXJlbmNlcyBz
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OllFU107CiAgICAgW3ByZWZl
cmVuY2VzIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDpZRVNdOwogICAgIFtw
cmVmZXJlbmNlcyBzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkOk5PXTsKKyAgICBbcHJlZmVyZW5j
ZXMgc2V0WFNTQXVkaXRvckVuYWJsZWQ6Tk9dOwogCiAgICAgaWYgKHBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKSB7CiAgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKShwZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXRMb2NhdGlvbi5nZXQoKSldXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA1MTUw
ZTVkLi40ZTk5NzhjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0yNDQsNiArMjQ0LDExIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVu
Y2VzXSBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOnByaXZhdGVCcm93c2luZ0VuYWJsZWRdOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRY
U1NBdWRpdG9yRW5hYmxlZDplbmFibGVkXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5hYmxlZCkKIHsK
ICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHk6IXBvcHVwQmxvY2tpbmdFbmFibGVkXTsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGYz
Mjg5NWQuLjVmMzdkOTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNjU3LDYgKzY1Nyw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAgICAgaWYgKFNVQ0NFRURF
RCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkgewogICAgICAgICBwcmVmZXJl
bmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChGQUxTRSk7CiAgICAgICAgIHByZWZlcmVu
Y2VzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KFRSVUUpOworICAg
ICAgICBwcmVmZXJlbmNlcy0+c2V0WFNTQXVkaXRvckVuYWJsZWQoRkFMU0UpOwogCiAgICAgICAg
IGlmIChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbikgewogICAgICAgICAgICAgVmVj
dG9yPHdjaGFyX3Q+IHVybENoYXJhY3RlcnMoQ0ZTdHJpbmdHZXRMZW5ndGgocGVyc2lzdGVudFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24uZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDY0
ZDIyMjEuLmFmMGNlMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkCiAgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CiAKLXZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CiAgICAgaWYg
KEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQpAQCAtMzE4LDcgKzMxOCwyMCBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNl
cygmcHJlZmVyZW5jZXMpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlZmVyZW5jZXMtPnNl
dEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoIXByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpOworICAgIHByZWZlcmVuY2VzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChlbmFibGVkKTsK
K30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAo
RkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAg
IENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlMRUQod2Vi
Vmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCFl
bmFibGVkKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGFiS2V5Q3ljbGVz
VGhyb3VnaEVsZW1lbnRzKGJvb2wgc2hvdWxkQ3ljbGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IDcw
OTg3NzIuLmEyMjNmZTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0xNjAsNiArMTYwLDExIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgLy8g
RklYTUU6IGltcGxlbWVudAotLSAKMS42LjAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31270</attachid>
            <date>2009-06-14 15:22:41 -0700</date>
            <delta_ts>2009-06-18 11:47:20 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-XSSAuditor (5).patch</filename>
            <type>text/plain</type>
            <size>51093</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBiMjI3ZDNmNGIyMGQ4NjZjNGY5NmMwOWFmNWFhYWJhNDdkYWNiMzE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVHVlLCA5IEp1biAyMDA5IDE2OjI1OjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gWFNTQXVk
aXRvcgoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTIgKysKIC4uLi94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBo
cCAgICAgICAgIHwgICAgOCArCiAuLi4vc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4
cGVjdGVkLnR4dCAgICB8ICAgIDMgKwogLi4uL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLmh0bWwgfCAgIDE1ICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTEgKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9XZWJDb3Jl
LmJhc2UuZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvV2Vi
Q29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgICAgICAgICB8ICAgIDggKwogV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgICAgfCAgICA4ICsK
IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgICAgICAgICAgIHwgICAg
NyArCiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCAgICAgICAgICAgICB8
ICAgIDYgKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCAgICAg
ICAgfCAgIDExICsrCiBXZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDggKwogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE0ICstCiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRv
ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNjAgKysrKysrKysrKysrKysrKysrKysK
IFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEx
MSArKysrKysrKysrKysrKwogV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE3ICsrCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmggICAgICB8ICAgIDEgKwogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tICAgICAgICAgICAgICAgfCAgIDExICsrCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmggICAgICAgICB8ICAgIDMgKwogV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC93aW4vQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysKIFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbCAgIHwgICAgMyArCiBXZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oICAgICAgICAgICAgICB8ICAgIDIgKwogV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsr
CiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDYgKwogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICA1ICsKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAyNiArKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgICAgICAgIHwgICAxMyArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCAgfCAgICAxICsKIC4uLi9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwIHwgICAgNSArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0gICB8ICAgIDEgKwogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSAgfCAgICA1ICsKIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCB8ICAgMTcgKystCiAuLi4vRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgICB8ICAgIDUgKwogNDAgZmls
ZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy9lY2hvLWludGVydGFnLnBocAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BhZ2UvWFNTQXVk
aXRvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGYxYWVkYzQuLjM4YTg3MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNi0x
MSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjE5OQorCisgICAgICAgIEFkZGVkIGEgYmFzaWMgdGVzdCBmb3IgdGhlIFhT
U0F1ZGl0b3IuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2VjaG8taW50ZXJ0YWcucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTA2LTA5ICBQaWVycmUgZCdIZXJiZW1vbnQgIDxwZGhlcmJlbW9udEBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jl
c291cmNlcy9lY2hvLWludGVydGFnLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40YmIwMjhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBocApAQCAtMCwwICsx
LDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzw/cGhwCitlY2hvICRfR0VU
WydxJ107Cis/PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxM2UyZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBj
b2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODllZjUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWcuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9y
ZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5waHA/cT08c2NyaXB0PmFsZXJ0KC9YU1MvKTwvc2NyaXB0
PiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y1NDU3Zi4uZjg0MzQ3YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NCBAQAorMjAwOS0wNi0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjE5OQorCisgICAgICAgIEFkZGVkIGFuIGV4
cGVyaW1lbnRhbCByZWZsZWN0aXZlIFhTUyBmaWx0ZXIuICBUaGUgZmlsdGVyIGlzIGRpc2FibGVk
IGJ5CisgICAgICAgIGRlZmF1bHQuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWcuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3Jp
cHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp4c3NBdWRpdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ub2tlbml6ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRva2VuaXplcjo6eHNzQXVkaXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUb2tlbml6ZXI6OnNldFhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5pemVy
OjpUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmJlZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVuYWJsZWQp
OgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
Ojp4c3NBdWRpdG9yRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0NvbnRyb2xDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjp+WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5FdmFs
dWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpjYW5DcmVhdGVJbmxpbmVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRFeHRlcm5h
bFNjcmlwdEZyb21TcmMpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Y2FuTG9hZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9Y
U1NBdWRpdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OnNldFhTU0F1ZGl0b3JFbmFibGVk
KToKKwogMjAwOS0wNi0wOSAgUGllcnJlIGQnSGVyYmVtb250ICA8cGRoZXJiZW1vbnRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTUxYzAx
YS4uOTE1ZjIxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjY3LDYgKzEyNjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGFnZS9XZWJLaXRQb2ludC5oIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCisJV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKIAlX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMWNlNDc3ZS4uNjhmY2VmMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cApAQCAtNjIzLDYgKzYyMyw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE5c2V0RGF0
YWJhc2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFt
aWx5RVJLTlNfMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRh
c3lGb250RmFtaWx5RVJLTlNfMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
MHNldEphdmFTY3JpcHRFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0WFNTQXVk
aXRvckVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRGYW1p
bHlFUktOU18xMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0V2ViU2Vj
dXJpdHlFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0TG9jYWxTdG9yYWdlRW5h
YmxlZEViCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCBmOThmMTg2Li44ZGE1MTkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTg5MSw2ICs4OTEsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAogICAgIHBhZ2UvU2V0dGluZ3MuY3BwIFwKICAg
ICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBcCisgICAgcGFnZS9YU1NBdWRpdG9yLmNwcCBcCiAg
ICAgcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5BcnJheS5jcHAg
XAogICAgIHBsdWdpbnMvUGx1Z2luLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCA2MDUyY2U0Li5jNDFmOWE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTIyOTEsNiArMjI5MSwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFn
ZVxXb3JrZXJOYXZpZ2F0b3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5jcHAiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFhTU0F1ZGl0b3IuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9IndpbiINCiAJCQkJ
Pg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdiMjdl
ZS4uMjhmNWVmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIxMzgsNiArMjEzOCw4IEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovOyB9
OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlGMEJBNjAzMjYw
MDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBCMTEzMDc0MDBF
Mjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5z
ZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OworCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsK
IAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMDBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJQTE3QzgxMjMw
RjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8q
IEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQlBNzA5NEFGQTBGMjdBRTYwMDA1OTZDRUMg
LyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzA5NEFGOTBGMjdBRTYwMDA1OTZDRUMgLyogQ2FudmFzUGl4ZWxBcnJh
eS5jcHAgKi87IH07CkBAIC03MDEyLDYgKzcwMTQsOCBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4
NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3REQ0RDg0MEZERjRENkQwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0RENEQ4
NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
N0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhU
TUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
RWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwOTRBRjkw
RjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDIzMiw2ICsxMDIzNiw4IEBACiAJCTY1QkYwMjE4MDk3NDgwNjMw
MEM0MzE5NiAvKiBwYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi8sCisJ
CQkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLywKIAkJCQkzMTZG
RTEwNjBFNkUxRDg0MDBCRjYwODggLyogYW5pbWF0aW9uICovLAogCQkJCTkzQzA5QTgyMEIwNjRG
MDUwMDVBQkQ0RCAvKiBtYWMgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFi
c3RyYWN0Vmlldy5pZGwgKi8sCkBAIC0xNjc5Miw2ICsxNjc5OCw3IEBACiAJCQkJMDgxRUJGM0Iw
RkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE4RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg5Q0NDNTMwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNw
YW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODc4NSw2ICsxODc5Miw3IEBACiAJ
CQkJODQ1RTcyRkIwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODlDQ0M1MjBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTdERDREODYwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBlNTcwMjkzLi45MmU1NzJkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlICJu
cHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyLmg+CkBAIC01NSw2ICs1Niw3IEBAIFNjcmlwdENvbnRyb2xsZXI6OlNj
cmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
d2luZG93U2NyaXB0T2JqZWN0KDApCiAjZW5kaWYKKyAgICAsIG1fWFNTQXVkaXRvcihuZXcgWFNT
QXVkaXRvcihmcmFtZSkpCiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTUFDX0pBVkFf
QlJJREdFKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkSmF2YUpTQmluZGluZ3M7CkBAIC03
OSw2ICs4MSwxMSBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcigpCiAKIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUpIAogeworICAgIGlmICghbV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZShz
b3VyY2VDb2RlKSkgeworICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBiZSBl
dmFsdWF0ZWQuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfQorICAgIAogICAgIC8v
IGV2YWx1YXRlIGNvZGUuIFJldHVybnMgdGhlIEpTIHJldHVybiB2YWx1ZSBvciAwCiAgICAgLy8g
aWYgdGhlcmUgd2FzIG5vbmUsIGFuIGVycm9yIG9jY3VyZWQgb3IgdGhlIHR5cGUgY291bGRuJ3Qg
YmUgY29udmVydGVkLgogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBmNzAwY2Q5Li40NTI4NDk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBTdHJpbmc7CiBjbGFzcyBXaWRnZXQ7CitjbGFzcyBYU1NBdWRpdG9y
OwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0PiA+IFJvb3RPYmplY3RNYXA7CiAKQEAgLTEzMiw2ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAg
TlBPYmplY3QqIGNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVs
ZW1lbnQqKTsKICAgICBOUE9iamVjdCogd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICNlbmRpZgor
ICAgIAorICAgIFhTU0F1ZGl0b3IqIHhzc0F1ZGl0b3IoKSB7IHJldHVybiBtX1hTU0F1ZGl0b3Iu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCkBAIC0x
NjQsNiArMTY3LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRy
PFdlYlNjcmlwdE9iamVjdD4gbV93aW5kb3dTY3JpcHRPYmplY3Q7CiAjZW5kaWYKKyAgICAKKyAg
ICAvLyBUaGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBTY3JpcHRDb250cm9sbGVy
LgorICAgIE93blB0cjxYU1NBdWRpdG9yPiBtX1hTU0F1ZGl0b3I7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAppbmRleCAwY2U3YmNhLi5lNWJlMWQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiWFNT
QXVkaXRvci5oIgogCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApAQCAtNjEsNiArNjIs
MTEgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIt
PmlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmICghc2NyaXB0Q29udHJv
bGxlci0+eHNzQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxv
Y2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgeworICAgICAgICAvLyBUaGlzIHNj
cmlwdCBpcyBub3Qgc2FmZSB0byBleGVjdXRlLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXItPmds
b2JhbE9iamVjdCgpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3Jp
cHQgd3JhcHBlciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KQEAg
LTgwLDYgKzg2LDExIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAgICAgU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKICAgICBpZiAoIXNjcmlw
dENvbnRyb2xsZXItPmlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBp
ZiAoIXNjcmlwdENvbnRyb2xsZXItPnhzc0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRM
aXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKKyAg
ICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQogCiAgICAgLy8gJ2dsb2JhbE9iamVjdCcgaXMgdGhlIEphdmFTY3JpcHQg
d3JhcHBlciB0aGF0IHdpbGwgbWFyayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcu
CiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXItPmdsb2Jh
bE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVG9rZW5pemVyLmggYi9XZWJDb3Jl
L2RvbS9Ub2tlbml6ZXIuaAppbmRleCBmOWM2ZGM0Li5lYTMwM2Y5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Ub2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2RvbS9Ub2tlbml6ZXIuaApAQCAtMjgs
NiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2VnbWVudGVkU3Ry
aW5nOworICAgIGNsYXNzIFhTU0F1ZGl0b3I7CiAKICAgICBjbGFzcyBUb2tlbml6ZXIgewogICAg
IHB1YmxpYzoKQEAgLTU4LDExICs1OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHt9CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzSFRNTFRva2VuaXplcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIAorICAgICAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9YU1NBdWRpdG9yOyB9CisgICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvcihYU1NB
dWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRvciA9IGF1ZGl0b3I7IH0KIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgVG9rZW5pemVyKGJvb2wgdmlld1NvdXJjZU1vZGUgPSBmYWxzZSkgCiAg
ICAgICAgICAgICA6IG1fcGFyc2VyU3RvcHBlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9pblZp
ZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKQorICAgICAgICAgICAgLCBtX1hTU0F1ZGl0b3Io
MCkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTcxLDYgKzc2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBldmVuIHdoZW4gaXQgaGFzIGJ1ZmZlcmVkIGRhdGEuCiAgICAg
ICAgIGJvb2wgbV9wYXJzZXJTdG9wcGVkOwogICAgICAgICBib29sIG1faW5WaWV3U291cmNlTW9k
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIFRoZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIHRva2VuaXplci4KKyAgICAgICAgWFNTQXVkaXRvciogbV9YU1NBdWRpdG9yOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
VG9rZW5pemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAzNDFl
ZWNjLi44NjMzZjEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CkBAIC00MzYsMTEgKzQzNywxNCBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVy
OjpzY3JpcHRIYW5kbGVyKFN0YXRlIHN0YXRlKQogICAgICAgICAgICAgICAgIGlmICghbV9kb2Mt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3Rpbmcg
c2NyaXB0IGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgotICAg
ICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9y
IGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KLSAgICAg
ICAgICAgICAgICAvLyBJZiBzbywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCi0gICAg
ICAgICAgICAgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQgJiYgKGNzID0gbV9kb2MtPmRvY0xvYWRl
cigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlLCBtX3NjcmlwdFRhZ0No
YXJzZXRBdHRyVmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0cy5h
cHBlbmQoY3MpOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAobV9Y
U1NBdWRpdG9yICYmIG1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyht
X3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBh
cnNlciBtaWdodCBoYXZlIGJlZW4gc3RvcHBlZCBieSBmb3IgZXhhbXBsZSBhIHdpbmRvdy5jbG9z
ZSBjYWxsIGluIGFuIGVhcmxpZXIgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAvLyBJZiBz
bywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCisgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNj
cmlwdChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZhbHVl
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHRzLmFwcGVuZChjcyk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Ny
aXB0Tm9kZSA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IG1fc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBt
X3NjcmlwdE5vZGUgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDdhOWVmMzIuLmFkODk3
MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlICJX
aW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
WE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtOTkzLDYg
Kzk5NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBk
aXNwYXRjaCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICByZXN0b3JlRG9jdW1lbnRTdGF0
ZSgpOwogCiAgICAgZG9jdW1lbnQtPmltcGxpY2l0T3BlbigpOworICAgIAorICAgIC8vIEFzc29j
aWF0ZSB0aGUgWFNTQXVkaXRvciB3aXRoIHRoZSB0b2tlbml6ZXIuCisgICAgZG9jdW1lbnQtPnRv
a2VuaXplcigpLT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkp
OwogCiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5z
ZXRDb250ZW50c1NpemUoSW50U2l6ZSgpKTsKQEAgLTE2NDUsNiArMTY0OSwxMSBAQCBib29sIEZy
YW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KFJlbmRlclBhcnQqIHJlbmRlcmVyLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgQQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1pbWVUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV9mcmFtZS0+
c2NyaXB0KCktPnhzc0F1ZGl0b3IoKS0+Y2FuTG9hZE9iamVjdCh1cmwpKSB7CisgICAgICAgIC8v
IEl0IGlzIHVuc2FmZSB0byBob25vciB0aGUgcmVxdWVzdCBmb3IgdGhpcyBvYmplY3QuCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBLVVJMIGNvbXBsZXRlZFVSTDsKICAgICBp
ZiAoIXVybC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
IGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCA5MWVjMGIzLi4wNjAwYzJjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFn
ZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGRpc2FibGVkIGJ5IGRlZmF1
bHQgYXMgaXQgbWFrZXMgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgZmVhdHVyZSBk
b3dubG9hZCBmaWxlcwogICAgIC8vIHRoZXkgY2FuJ3QgdXNlIGJ5LiBMZWF2aW5nIGVuYWJsZWQg
Zm9yIG5vdyB0byBub3QgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yLgogICAgICwgbV9kb3dubG9h
ZGFibGVCaW5hcnlGb250c0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1feHNzQXVkaXRvckVuYWJsZWQo
ZmFsc2UpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwg
c28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRy
eWluZyB0byB1c2UgaXQuCkBAIC00NTgsNCArNDU5LDkgQEAgdm9pZCBTZXR0aW5nczo6c2V0RG93
bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKGJvb2wgZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmEKICAgICBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA9IGRvd25sb2FkYWJsZUJp
bmFyeUZvbnRzRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0WFNTQXVkaXRvckVuYWJs
ZWQoYm9vbCB4c3NBdWRpdG9yRW5hYmxlZCkKK3sKKyAgICBtX3hzc0F1ZGl0b3JFbmFibGVkID0g
eHNzQXVkaXRvckVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggNjJjZjdmNi4uOWQ0ZTQyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFi
bGVkKGJvb2wpOwogICAgICAgICBib29sIGRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOyB9CiAKKyAg
ICAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCB4c3NB
dWRpdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1feHNzQXVkaXRvckVuYWJsZWQ7IH0KKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgCkBAIC0yOTcsNiAr
MzAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fYWxsb3dTY3JpcHRz
VG9DbG9zZVdpbmRvd3MgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvciA6
IDE7CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQgOiAxOwor
ICAgICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQgOiAxOwogCiAjaWYgVVNFKFNBRkFSSV9U
SEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAgYi9XZWJDb3JlL3BhZ2UvWFNT
QXVkaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyNTIxZgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcApAQCAtMCwwICsx
LDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5pZWwgQmF0ZXMgKGRi
YXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCisKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgIAorLy8gVGhpcyBtZXRob2QgYWxzbyBhcHBl
YXJzIGluIGZpbGUgUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwLgorc3RhdGljIGJvb2wgaXNDb250
cm9sQ2hhcmFjdGVyKFVDaGFyIGMpCit7CisgICByZXR1cm4gYyA8ICcgJyB8fCBjID09IDEyNzsK
K30KKyAgCitYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1faXNF
bmFibGVkKGZhbHNlKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKKyAgICBpZiAoU2V0dGluZ3Mq
IHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCkpCisgICAgICAgIG1faXNFbmFibGVkID0gc2V0
dGluZ3MtPnhzc0F1ZGl0b3JFbmFibGVkKCk7Cit9CisKK1hTU0F1ZGl0b3I6On5YU1NBdWRpdG9y
KCkKK3sKK30KKyAgCitib29sIFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGNhbkV2YWx1YXRlKFN0cmluZyhz
b3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLmRhdGEoKSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUo
KS5sZW5ndGgoKSkpOworfQorICAKK2Jvb2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdAoreworICAgIGlmICghbV9pc0VuYWJsZWQpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGlmIChmaW5kSW5SZXF1ZXN0KHNvdXJjZUNvZGUp
KSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwg
KCJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Yg
c2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIikpOworICAgICAgICBtX2ZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgWFNTQXVkaXRvcjo6Y2Fu
Q3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
ZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgCisgICAgcmV0dXJuIGNhbkV2YWx1YXRlKGNvZGUpOworfQorCitib29sIFhTU0F1ZGl0
b3I6OmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgIAorICAg
IGlmIChmaW5kSW5SZXF1ZXN0KHVybCkpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQg
c2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4iKSk7
CisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBYU1NBdWRpdG9yOjpjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dAoreworICAgIGlmICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKGZpbmRJblJlcXVlc3QodXJsKSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdCIpKTsKKyAg
ICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1l
c3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5n
KCkpOyAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0ciwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBhbGxvd051bGxDaGFyYWN0ZXJzKQorewor
ICAgIFN0cmluZyByZXN1bHQ7CisgICAgU3RyaW5nIHVybCA9IHN0cjsKKyAgICAKKyAgICB1cmwu
cmVwbGFjZSgnKycsICcgJyk7CisgICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KHVybCwgZW5jb2RpbmcpOworICAgIHJldHVybiBhbGxvd051bGxDaGFyYWN0ZXJzID8gcmVzdWx0
IDogcmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7Cit9CisKK2Jv
b2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgU3RyaW5nIHBhZ2VVUkwg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICAKKyAgICBpZiAocHJv
dG9jb2xJcyhwYWdlVVJMLCAiZGF0YSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHN0
cmluZy5sZW5ndGgoKSA8IHBhZ2VVUkwubGVuZ3RoKCkpIHsKKyAgICAgICAgLy8gVGhlIHN0cmlu
ZyBjYW4gYWN0dWFsbHkgZml0IGluc2lkZSB0aGUgcGFnZVVSTC4KKyAgICAgICAgU3RyaW5nIGRl
Y29kZWRQYWdlVVJMID0gZGVjb2RlVVJMKHBhZ2VVUkwsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRl
Y29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgIGlmIChkZWNvZGVkUGFnZVVSTC5maW5kKHN0
cmluZywgMCwgZmFsc2UpICE9IC0xKQorICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdlJ3Zl
IGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KKyAgICB9CisgICAgCisgICAgRm9ybURhdGEqIGZvcm1E
YXRhT2JqID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVx
dWVzdCgpLmh0dHBCb2R5KCk7CisgICAgaWYgKGZvcm1EYXRhT2JqICYmICFmb3JtRGF0YU9iai0+
aXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBmb3JtRGF0YSA9IGZvcm1EYXRhT2JqLT5mbGF0
dGVuVG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IGZvcm1EYXRhLmxl
bmd0aCgpKSB7CisgICAgICAgICAgICAvLyBOb3RpY2UgaXQgaXMgc3VmZmljaWVudCB0byBjb21w
YXJlIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0bworICAgICAgICAgICAgLy8gdGhlIHVybC1l
bmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5ndGggb2YgdGhlIHVybC1kZWNvZGVkCisg
ICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9m
IHRoZSB1cmwtZW5jb2RlZAorICAgICAgICAgICAgLy8gc3RyaW5nLgorICAgICAgICAgICAgU3Ry
aW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVSTChmb3JtRGF0YSwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICAgICAgICAgIGlmIChkZWNvZGVkRm9y
bURhdGEuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsgIC8vIFdlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0YS4KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIGIvV2ViQ29yZS9w
YWdlL1hTU0F1ZGl0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDZi
NTE5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaApAQCAtMCww
ICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEYW5pZWwgQmF0ZXMg
KGRiYXRlc0BpbnR1ZGF0YS5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgWFNT
QXVkaXRvcl9oCisjZGVmaW5lIFhTU0F1ZGl0b3JfaAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgU2NyaXB0
U291cmNlQ29kZTsKKworICAgIC8vIFRoZSBYU1NBdWRpdG9yIGNsYXNzIGlzIHVzZWQgdG8gcHJl
dmVudCB0eXBlIDEgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcKKyAgICAvLyB2dWxuZXJhYmlsaXRlcyAo
YWxzbyBrbm93biBhcyByZWZsZWN0ZWQgdnVsbmVyYWJpbGl0aWVzKS4KKyAgICAvLworICAgIC8v
IE1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgWFNTQXVkaXRvciBjbGFzcyBkZWNpZGVzIHdoZXRoZXIg
dGhlIGV4ZWN1dGlvbiBvZgorICAgIC8vIGEgc2NyaXB0IGlzIHRvIGJlIGFsbG93ZWQgb3IgZGVu
aWVkIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIGFueQorICAgIC8vIHVzZXItc3VibWl0dGVkIGRh
dGEsIGluY2x1ZGluZzoKKyAgICAvLworICAgIC8vICogdGhlIHF1ZXJ5IHN0cmluZyBvZiB0aGUg
VVJMLgorICAgIC8vICogdGhlIEhUVFAtUE9TVCBkYXRhLgorICAgIC8vCisgICAgLy8gSWYgdGhl
IHNvdXJjZSBjb2RlIG9mIGEgc2NyaXB0IHJlc2VtYmxlcyBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0
YSB0aGVuIGl0CisgICAgLy8gaXMgZGVuaWVkIGV4ZWN1dGlvbi4KKyAgICAvLworICAgIC8vIFdo
ZW4geW91IGluc3RhbnRpYXRlIHRoZSBYU1NBdWRpdG9yIHlvdSBtdXN0IHNwZWNpZnkgdGhlIHtA
bGluayBGcmFtZX0KKyAgICAvLyBvZiB0aGUgcGFnZSB0aGF0IHlvdSB3aXNoIHRvIGF1ZGl0Lgor
ICAgIC8vCisgICAgLy8gQmluZGluZ3MKKyAgICAvLworICAgIC8vIEFuIFhTU0F1ZGl0b3IgaXMg
aW5zdGFudGlhdGVkIHdpdGhpbiB0aGUgY29udHJ1Y3RvciBvZiBhCisgICAgLy8gU2NyaXB0Q29u
dHJvbGxlciBvYmplY3QgYW5kIHBhc3NlZCB0aGUgRnJhbWUgdGhlIHNjcmlwdCBvcmlnaW5hdGVk
LiBUaGUKKyAgICAvLyBTY3JpcHRDb250cm9sbGVyIGNhbGxzIGJhY2sgdG8gdGhlIFhTU0F1ZGl0
b3IgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQorICAgIC8vIEphdmFTY3JpcHQgc2NyaXB0IGlzIHNh
ZmUgdG8gZXhlY3V0ZSBiZWZvcmUgZXhlY3V0aW5nIGl0LiBUaGUgZm9sbG93aW5nCisgICAgLy8g
bWV0aG9kcyBjYWxsIGludG8gWFNTQXVkaXRvcjoKKyAgICAvLworICAgIC8vICogU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUgLSB1c2VkIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgc2NyaXB0cy4K
KyAgICAvLyAqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIgLSB1
c2VkIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXJzLgorICAgIC8vICogSFRNTFRv
a2VuaXplcjo6c2NyaXB0SGFuZGxlciAtIHVzZWQgdG8gbG9hZCBleHRlcm5hbCBKYXZhU2NyaXB0
IHNjcmlwdHMuCisgICAgLy8gCisgICAgY2xhc3MgWFNTQXVkaXRvciB7CisgICAgcHVibGljOgor
ICAgICAgICBYU1NBdWRpdG9yKEZyYW1lKik7CisgICAgICAgIH5YU1NBdWRpdG9yKCk7CisKKyAg
ICAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsgfQorICAg
ICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNjcmlw
dCBzaG91bGQgYmUgYWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uCisgICAgICAgIC8vIGJhc2Vk
IG9uIHRoZSBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorICAgICAgICBib29s
IGNhbkV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIGNvbnN0Owor
CisgICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc2NyaXB0IHNob3VsZCBiZSBhbGxv
d2VkIG9yIGRlbmllZCBleGVjdXRpb24KKyAgICAgICAgLy8gYmFzZWQgb24gdGhlIGNvbnRlbnQg
b2YgYW55IHVzZXItc3VibWl0dGVkIGRhdGEuCisgICAgICAgIGJvb2wgY2FuRXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdDsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdGhlIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjcmVhdGVkIGJhc2VkIG9uIHRoZQor
ICAgICAgICAvLyBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgorICAgICAgICBi
b29sIGNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgY29kZSkgY29uc3Q7CisKKyAgICAgICAgLy8gRGV0ZXJtaW5lcyB3
aGV0aGVyIHRoZSBleHRlcm5hbCBzY3JpcHQgc2hvdWxkIGJlIGxvYWRlZCBiYXNlZCBvbiB0aGUK
KyAgICAgICAgLy8gY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KKyAgICAgICAg
Ym9vbCBjYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dDsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgb2JqZWN0IHNob3VsZCBiZSBsb2Fk
ZWQgYmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgCisgICAgICAgIC8vIGFueSB1c2VyLXN1Ym1pdHRl
ZCBkYXRhLgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkg
RnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QuCisgICAgICAgIGJvb2wgY2FuTG9hZE9iamVjdChj
b25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMg
U3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMgPSBmYWxz
ZSk7CisKKyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpIGNvbnN0Owor
CisgICAgICAgIC8vIFdoZXRoZXIgdG8gYXVkaXQgc2NyaXB0cy4KKyAgICAgICAgYm9vbCBtX2lz
RW5hYmxlZDsKKworICAgICAgICAvLyBUaGUgZnJhbWUgdG8gYXVkaXQuCisgICAgICAgIEZyYW1l
KiBtX2ZyYW1lOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFhTU0F1ZGl0b3JfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCAxNmExNjcyLi5kZDkzZGRjIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDA5LTA2LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTk5CisKKyAgICAgICAgQWRkZWQgcHJlZmVyZW5jZSB0
byBlbmFibGUgdGhlIFhTU0F1ZGl0b3IuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06Cisg
ICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgaXNYU1NBdWRpdG9yRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBzZXRYU1NBdWRpdG9yRW5hYmxlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOl0pOgorCiAyMDA5LTA2LTA4
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1w
ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCmluZGV4IGIyYTc5YWEuLjU1NWE3NjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTgxLDYgKzgxLDcgQEAKICNkZWZpbmUg
V2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5IEAiV2ViS2l0RW5h
YmxlRnVsbERvY3VtZW50VGVhcmRvd24iCiAjZGVmaW5lIFdlYktpdE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFpvb21zVGV4dE9ubHlQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0Wm9vbXNUZXh0T25seSIKKyNkZWZpbmUgV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0WFNTQXVkaXRvckVuYWJsZWQiCiAKIC8vIFRoZXNlIGFyZSBw
cml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0
aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVyIG1ldGhvZHMgdGhlbXNlbHZlcyBhcmUgcHJp
dmF0ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBi
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCBlMWVjZmEzLi43MTRk
NjI2IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysr
IGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0zNDcsNiArMzQ3LDcg
QEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUodm9pZCkKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRXZWJBcmNoaXZlRGVi
dWdNb2RlRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpOT10sICAgV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkUHJlZmVy
ZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRa
b29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOk5PXSwgICBXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAg
IG5pbF07CiAKICAgICAvLyBUaGlzIHZhbHVlIHNob3VsZG4ndCBldmVyIGNoYW5nZSwgd2hpY2gg
aXMgYXNzdW1lZCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgV2ViS2l0UERGRGlzcGxheU1vZGVQ
cmVmZXJlbmNlS2V5IGFib3ZlCkBAIC04MTAsNiArODExLDE2IEBAIHN0YXRpYyBXZWJDYWNoZU1v
ZGVsIGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKHZvaWQpCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1
ZTpmbGFnIGZvcktleTpXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleV07CiB9CiAKKy0g
KEJPT0wpaXNYU1NBdWRpdG9yRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVl
Rm9yS2V5OldlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZv
aWQpc2V0WFNTQXVkaXRvckVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29s
VmFsdWU6ZmxhZyBmb3JLZXk6V2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5XTsK
K30KKwogLSAoQk9PTClyZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzCiB7CiAgICAg
cmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVL
ZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCmluZGV4IDUwYzk3ZGUuLjFlNzZiNjMgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBleHRlcm4g
TlNTdHJpbmcgKldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbjsKIC0gKEJPT0wpem9v
bXNUZXh0T25seTsKIC0gKHZvaWQpc2V0Wm9vbXNUZXh0T25seTooQk9PTCl6b29tc1RleHRPbmx5
OwogCistIChCT09MKWlzWFNTQXVkaXRvckVuYWJsZWQ7CistICh2b2lkKXNldFhTU0F1ZGl0b3JF
bmFibGVkOihCT09MKWZsYWc7CisKIC8vIHplcm8gbWVhbnMgZG8gQXV0b1NjYWxlCiAtIChmbG9h
dClQREZTY2FsZUZhY3RvcjsKIC0gKHZvaWQpc2V0UERGU2NhbGVGYWN0b3I6KGZsb2F0KXNjYWxl
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyMjE5ZTk3Li5kMWFmOWYwIDEwMDY0NAotLS0gYS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTMwMSw2ICsxMzAxLDcgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50VGVh
cmRvd25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJs
ZWQoW3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkXSk7CiAgICAgc2V0dGlu
Z3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChbcHJlZmVyZW5jZXMgb2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldFpvb21z
VGV4dE9ubHkoW3ByZWZlcmVuY2VzIHpvb21zVGV4dE9ubHldKTsKKyAgICBzZXR0aW5ncy0+c2V0
WFNTQXVkaXRvckVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzWFNTQXVkaXRvckVuYWJsZWRdKTsKICAg
ICBzZXR0aW5ncy0+c2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKCFXS0FwcFZlcnNp
b25DaGVja0xlc3NUaGFuKEAiY29tLmFwcGxlLmlXZWIiLCAtMSwgMi4xKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
NTNjMjQxZC4uOGU4MTRiYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNi0xMSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEBhcmN0aWNhLmxvY2FsPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNjE5OQorCisgICAgICAgIEFkZGVkIHByZWZlcmVuY2UgdG8gZW5hYmxlIHRoZSBYU1NB
dWRpdG9yLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlk
bDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQ
cmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1
bHRTZXR0aW5ncyk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aXNYU1NBdWRpdG9yRW5hYmxl
ZCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorCiAyMDA5LTA2LTAzICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggZm9y
IFdpbmRvd3MgQ2Fpcm8uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5pZGwKaW5kZXggYjllMDVlYy4uNTYyYTc1YiAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCisrKyBiL1dlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbApAQCAtNzUsNCArNzUsNyBA
QCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzUHJpdmF0ZSA6IElVbmtub3duCiAKICAgICBIUkVT
VUxUIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFtvdXQsIHJldHZhbF0gQk9PTCAq
YWxsb3dBY2Nlc3MpOwogICAgIEhSRVNVTFQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHMoW2luXSBCT09MIGFsbG93QWNjZXNzKTsKKworICAgIEhSRVNVTFQgaXNYU1NBdWRpdG9y
RW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wgKmVuYWJsZWQpOworICAgIEhSRVNVTFQgc2V0WFNT
QXVkaXRvckVuYWJsZWQoW2luXSBCT09MIGVuYWJsZWQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKaW5kZXggODQyNjI3MS4uZDliYjVjMyAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xMjMsMyArMTIzLDUgQEAKIAogI2RlZmluZSBXZWJLaXRa
b29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSAiV2ViS2l0Wm9vbXNUZXh0T25seSIKIAorI2RlZmlu
ZSBXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFhTU0F1ZGl0b3JF
bmFibGVkIgorCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDk5NzYxNWYuLmI5MWJkNGUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCkBAIC0yMDUsNiArMjA1LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6
aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKQEAgLTc4MSw2ICs3ODIsMjAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OmlzWFNTQXVkaXRvckVuYWJsZWQoCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFi
bGVkKQoreworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFhTU0F1
ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRpdG9yRW5hYmxl
ZCgKKyAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUoQ0ZT
VFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5j
ZXM6OmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoIAogICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZXMuaCBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAppbmRleCBiNmJjZjZk
Li4yZjk0MzgyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKKysrIGIv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCkBAIC0zNTYsNiArMzU2LDEyIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKTsKIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1hTU0F1ZGl0b3JFbmFibGVk
KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7CisKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0WFNTQXVkaXRvckVuYWJsZWQoCisgICAgLyog
W2luXSAqLyBCT09MIGVuYWJsZWQpOworCiAgICAgLy8gV2ViUHJlZmVyZW5jZXMKIAogICAgIC8v
IFRoaXMgbWV0aG9kIGFjY2Vzc2VzIGEgZGlmZmVyZW50IHByZWZlcmVuY2Uga2V5IHRoYW4gZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAg
Yi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDAyOTZkNDUuLmVjMGQ3ODcgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApA
QCAtNDIyNyw2ICs0MjI3LDExIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXND
aGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuIGhy
OwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyghIWVu
YWJsZWQpOwogCisgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmlzWFNTQXVkaXRvckVuYWJsZWQoJmVu
YWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0
dGluZ3MtPnNldFhTU0F1ZGl0b3JFbmFibGVkKCEhZW5hYmxlZCk7CisKICNpZiBVU0UoU0FGQVJJ
X1RIRU1FKQogICAgIGhyID0gcHJlZnNQcml2YXRlLT5zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
KCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA5NjA0NGMxLi44YWEyMDQx
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDktMDYtMTEgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTkKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgdGVzdGluZyB0aGUgWFNTQXVkaXRvci4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFhT
U0F1ZGl0b3JFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0
b3JFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW06CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmcp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKToKKwogMjAwOS0w
Ni0wOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkYWRmMjRmLi5hODI2MGQ2
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC01ODUsNiArNTg1LDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRYU1NBdWRpdG9yRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAg
IGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0WFNTQXVkaXRvckVuYWJsZWQoSlNWYWx1ZVRv
Qm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3lj
bGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC04ODEsNiArODkz
LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucygpCiAgICAgICAgIHsgInNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwg
c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCIsIHNldFBvcHVwQmxvY2tpbmdFbmFibGVk
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIs
IHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRYU1NBdWRpdG9yRW5hYmxlZCIsIHNldFhTU0F1ZGl0b3JFbmFibGVkQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCIsIHNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxv
YWRzIiwgc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRl
eCA4ODY3Y2NkLi5jYTlmYmViIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7
CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQg
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGZsYWcpOworICAgIHZvaWQgc2V0WFNTQXVk
aXRvckVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRz
KGJvb2wgY3ljbGVzKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDJmOTIyMmEuLjU0ZTEzNjgg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtMjQzLDYgKzI0MywxMSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZmxhZykKICAgICBn
X29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXByaXZhdGUtYnJvd3Npbmci
LCBmbGFnLCBOVUxMKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0WFNTQXVk
aXRvckVuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQo
Ym9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA3ZmQzYWExLi5mODM1
YWJjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIFtwcmVmZXJlbmNlcyBzZXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNl
dE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNl
cyBzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkOk5PXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0WFNT
QXVkaXRvckVuYWJsZWQ6Tk9dOwogCiAgICAgaWYgKHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKSB7CiAgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
OltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKShwZXJzaXN0ZW50VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbi5nZXQoKSldXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA1MTUwZTVkLi40ZTk5
NzhjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0yNDQsNiArMjQ0LDExIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkOnByaXZhdGVCcm93c2luZ0VuYWJsZWRdOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRYU1NBdWRpdG9y
RW5hYmxlZDplbmFibGVkXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9w
dXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5hYmxlZCkKIHsKICAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHk6IXBvcHVwQmxvY2tpbmdFbmFibGVkXTsKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGYzMjg5NWQuLjVm
MzdkOTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcApAQCAtNjU3LDYgKzY1Nyw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1Rv
Q29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3
LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkgewogICAgICAgICBwcmVmZXJlbmNlcy0+c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChGQUxTRSk7CiAgICAgICAgIHByZWZlcmVuY2VzLT5zZXRK
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KFRSVUUpOworICAgICAgICBwcmVm
ZXJlbmNlcy0+c2V0WFNTQXVkaXRvckVuYWJsZWQoRkFMU0UpOwogCiAgICAgICAgIGlmIChwZXJz
aXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbikgewogICAgICAgICAgICAgVmVjdG9yPHdjaGFy
X3Q+IHVybENoYXJhY3RlcnMoQ0ZTdHJpbmdHZXRMZW5ndGgocGVyc2lzdGVudFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24uZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDY0ZDIyMjEuLmFm
MGNlMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkCiAgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CiAgICAgaWYgKEZBSUxFRChm
cmFtZS0+d2ViVmlldygmd2ViVmlldykpKQpAQCAtMzE4LDcgKzMxOCwyMCBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpCiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVy
ZW5jZXMpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoIXByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwor
ICAgIHByZWZlcmVuY2VzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZy
YW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJ
V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJl
ZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHByZWZlcmVu
Y2VzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCFlbmFibGVkKTsK
IH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVs
ZW1lbnRzKGJvb2wgc2hvdWxkQ3ljbGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IDcwOTg3NzIuLmEy
MjNmZTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xh
eW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0xNjAsNiArMTYwLDExIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
dXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGlt
cGxlbWVudAotLSAKMS42LjAuMQoK
</data>
<flag name="review"
          id="15968"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31274</attachid>
            <date>2009-06-14 19:29:18 -0700</date>
            <delta_ts>2009-06-14 19:29:18 -0700</delta_ts>
            <desc>Sunspider (before patch)</desc>
            <filename>none.txt</filename>
            <type>text/plain</type>
            <size>2830</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">aHR0cDovL3d3dzIud2Via2l0Lm9yZy9wZXJmL3N1bnNwaWRlci0wLjkvc3Vuc3BpZGVyLXJlc3Vs
dHMuaHRtbD8lN0IlMjIzZC1jdWJlJTIyOiU1QjYyLDU5LDU5LDYwLDU5JTVELCUyMjNkLW1vcnBo
JTIyOiU1QjU5LDYwLDYwLDU5LDU5JTVELCUyMjNkLXJheXRyYWNlJTIyOiU1QjM3LDM4LDM5LDM4
LDM4JTVELCUyMmFjY2Vzcy1iaW5hcnktdHJlZXMlMjI6JTVCNyw2LDcsNyw3JTVELCUyMmFjY2Vz
cy1mYW5ua3VjaCUyMjolNUIxOSwyMCwxOSwyMCwyMCU1RCwlMjJhY2Nlc3MtbmJvZHklMjI6JTVC
NDEsNDMsNDMsNDMsNDIlNUQsJTIyYWNjZXNzLW5zaWV2ZSUyMjolNUIxMSw5LDksMTAsMTAlNUQs
JTIyYml0b3BzLTNiaXQtYml0cy1pbi1ieXRlJTIyOiU1QjQsNSw1LDUsNSU1RCwlMjJiaXRvcHMt
Yml0cy1pbi1ieXRlJTIyOiU1QjksOSwxMCwxMCwxMCU1RCwlMjJiaXRvcHMtYml0d2lzZS1hbmQl
MjI6JTVCNCw0LDQsNCw0JTVELCUyMmJpdG9wcy1uc2lldmUtYml0cyUyMjolNUIyMywyMywyMywy
MywyNCU1RCwlMjJjb250cm9sZmxvdy1yZWN1cnNpdmUlMjI6JTVCNCw1LDUsNCw0JTVELCUyMmNy
eXB0by1hZXMlMjI6JTVCMTcsMTcsMTYsMTYsMTclNUQsJTIyY3J5cHRvLW1kNSUyMjolNUIyMCwy
MCwyMSwyMCwyMCU1RCwlMjJjcnlwdG8tc2hhMSUyMjolNUIyMCwyMCwyMCwyMCwyMCU1RCwlMjJk
YXRlLWZvcm1hdC10b2Z0ZSUyMjolNUIzOCwzNywzNywzOCwzOCU1RCwlMjJkYXRlLWZvcm1hdC14
cGFyYiUyMjolNUI0OSw0Nyw0OCw0Nyw0OCU1RCwlMjJtYXRoLWNvcmRpYyUyMjolNUIzOCwzOCwz
OCwzOCwzOSU1RCwlMjJtYXRoLXBhcnRpYWwtc3VtcyUyMjolNUI0NSw0Niw0NSw0NSw0NSU1RCwl
MjJtYXRoLXNwZWN0cmFsLW5vcm0lMjI6JTVCMTksMTgsMTgsMTksMTklNUQsJTIycmVnZXhwLWRu
YSUyMjolNUIzNSwzMywzMiwzMiwzMyU1RCwlMjJzdHJpbmctYmFzZTY0JTIyOiU1QjI1LDI1LDI1
LDI1LDI1JTVELCUyMnN0cmluZy1mYXN0YSUyMjolNUI0NSw0NCw0NSw0NSw0NCU1RCwlMjJzdHJp
bmctdGFnY2xvdWQlMjI6JTVCNTEsNTEsNTEsNTEsNTElNUQsJTIyc3RyaW5nLXVucGFjay1jb2Rl
JTIyOiU1QjczLDcyLDczLDczLDczJTVELCUyMnN0cmluZy12YWxpZGF0ZS1pbnB1dCUyMjolNUI0
OCw1Miw1MSw0OSw0OSU1RCU3RAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkVTVUxUUyAobWVhbnMgYW5kIDk1JSBjb25maWRlbmNlIGludGVydmFscykKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVG90YWw6ICAgICAgICAg
ICAgICAgICAgODAyLjJtcyArLy0gMC4yJQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQoKICAzZDogICAgICAgICAgICAgICAgICAgMTU3LjJtcyArLy0gMC43JQog
ICAgY3ViZTogICAgICAgICAgICAgICAgNTkuOG1zICsvLSAyLjclCiAgICBtb3JwaDogICAgICAg
ICAgICAgICA1OS40bXMgKy8tIDEuMSUKICAgIHJheXRyYWNlOiAgICAgICAgICAgIDM4LjBtcyAr
Ly0gMi4zJQoKICBhY2Nlc3M6ICAgICAgICAgICAgICAgIDc4LjZtcyArLy0gMS40JQogICAgYmlu
YXJ5LXRyZWVzOiAgICAgICAgIDYuOG1zICsvLSA4LjIlCiAgICBmYW5ua3VjaDogICAgICAgICAg
ICAxOS42bXMgKy8tIDMuNSUKICAgIG5ib2R5OiAgICAgICAgICAgICAgIDQyLjRtcyArLy0gMi42
JQogICAgbnNpZXZlOiAgICAgICAgICAgICAgIDkuOG1zICsvLSAxMC42JQoKICBiaXRvcHM6ICAg
ICAgICAgICAgICAgIDQxLjZtcyArLy0gMy40JQogICAgM2JpdC1iaXRzLWluLWJ5dGU6ICAgIDQu
OG1zICsvLSAxMS42JQogICAgYml0cy1pbi1ieXRlOiAgICAgICAgIDkuNm1zICsvLSA3LjElCiAg
ICBiaXR3aXNlLWFuZDogICAgICAgICAgNC4wbXMgKy8tIDAuMCUKICAgIG5zaWV2ZS1iaXRzOiAg
ICAgICAgIDIzLjJtcyArLy0gMi40JQoKICBjb250cm9sZmxvdzogICAgICAgICAgICA0LjRtcyAr
Ly0gMTUuNSUKICAgIHJlY3Vyc2l2ZTogICAgICAgICAgICA0LjRtcyArLy0gMTUuNSUKCiAgY3J5
cHRvOiAgICAgICAgICAgICAgICA1Ni44bXMgKy8tIDEuMCUKICAgIGFlczogICAgICAgICAgICAg
ICAgIDE2LjZtcyArLy0gNC4xJQogICAgbWQ1OiAgICAgICAgICAgICAgICAgMjAuMm1zICsvLSAy
LjglCiAgICBzaGExOiAgICAgICAgICAgICAgICAyMC4wbXMgKy8tIDAuMCUKCiAgZGF0ZTogICAg
ICAgICAgICAgICAgICA4NS40bXMgKy8tIDEuNyUKICAgIGZvcm1hdC10b2Z0ZTogICAgICAgIDM3
LjZtcyArLy0gMS44JQogICAgZm9ybWF0LXhwYXJiOiAgICAgICAgNDcuOG1zICsvLSAyLjIlCgog
IG1hdGg6ICAgICAgICAgICAgICAgICAxMDIuMG1zICsvLSAwLjklCiAgICBjb3JkaWM6ICAgICAg
ICAgICAgICAzOC4ybXMgKy8tIDEuNSUKICAgIHBhcnRpYWwtc3VtczogICAgICAgIDQ1LjJtcyAr
Ly0gMS4yJQogICAgc3BlY3RyYWwtbm9ybTogICAgICAgMTguNm1zICsvLSAzLjclCgogIHJlZ2V4
cDogICAgICAgICAgICAgICAgMzMuMG1zICsvLSA0LjYlCiAgICBkbmE6ICAgICAgICAgICAgICAg
ICAzMy4wbXMgKy8tIDQuNiUKCiAgc3RyaW5nOiAgICAgICAgICAgICAgIDI0My4ybXMgKy8tIDAu
NyUKICAgIGJhc2U2NDogICAgICAgICAgICAgIDI1LjBtcyArLy0gMC4wJQogICAgZmFzdGE6ICAg
ICAgICAgICAgICAgNDQuNm1zICsvLSAxLjUlCiAgICB0YWdjbG91ZDogICAgICAgICAgICA1MS4w
bXMgKy8tIDAuMCUKICAgIHVucGFjay1jb2RlOiAgICAgICAgIDcyLjhtcyArLy0gMC44JQogICAg
dmFsaWRhdGUtaW5wdXQ6ICAgICAgNDkuOG1zICsvLSA0LjElCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31275</attachid>
            <date>2009-06-14 19:29:55 -0700</date>
            <delta_ts>2009-06-14 19:29:55 -0700</delta_ts>
            <desc>Sunspider (after patch, XSSAuditor disabled)</desc>
            <filename>disabled.txt</filename>
            <type>text/plain</type>
            <size>2832</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">aHR0cDovL3d3dzIud2Via2l0Lm9yZy9wZXJmL3N1bnNwaWRlci0wLjkvc3Vuc3BpZGVyLXJlc3Vs
dHMuaHRtbD8lN0IlMjIzZC1jdWJlJTIyOiU1QjYyLDYwLDYwLDYxLDYwJTVELCUyMjNkLW1vcnBo
JTIyOiU1QjYwLDYwLDYwLDYwLDYwJTVELCUyMjNkLXJheXRyYWNlJTIyOiU1QjM4LDM4LDM5LDM5
LDM5JTVELCUyMmFjY2Vzcy1iaW5hcnktdHJlZXMlMjI6JTVCNyw2LDcsNyw3JTVELCUyMmFjY2Vz
cy1mYW5ua3VjaCUyMjolNUIxOSwyMCwyMCwyMCwxOSU1RCwlMjJhY2Nlc3MtbmJvZHklMjI6JTVC
NDEsNDIsNDcsNDIsNDMlNUQsJTIyYWNjZXNzLW5zaWV2ZSUyMjolNUIxMSwxMCwxMSwxMSwxMCU1
RCwlMjJiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUlMjI6JTVCNSw1LDQsNCw1JTVELCUyMmJpdG9w
cy1iaXRzLWluLWJ5dGUlMjI6JTVCMTAsMTAsMTAsMTAsOSU1RCwlMjJiaXRvcHMtYml0d2lzZS1h
bmQlMjI6JTVCNCw0LDQsNCw0JTVELCUyMmJpdG9wcy1uc2lldmUtYml0cyUyMjolNUIyMiwyNCwy
NCwyNCwyMyU1RCwlMjJjb250cm9sZmxvdy1yZWN1cnNpdmUlMjI6JTVCNSw1LDQsNCw1JTVELCUy
MmNyeXB0by1hZXMlMjI6JTVCMTcsMTcsMTYsMTcsMTclNUQsJTIyY3J5cHRvLW1kNSUyMjolNUIy
MSwyMSwyMSwyMCwyMSU1RCwlMjJjcnlwdG8tc2hhMSUyMjolNUIyMCwyMCwyMSwyMCwyMCU1RCwl
MjJkYXRlLWZvcm1hdC10b2Z0ZSUyMjolNUIzNywzOCwzOCwzOCwzNyU1RCwlMjJkYXRlLWZvcm1h
dC14cGFyYiUyMjolNUI0OCw0Nyw0OSw0Nyw0NyU1RCwlMjJtYXRoLWNvcmRpYyUyMjolNUIzOSwz
OCw0MiwzOCwzOCU1RCwlMjJtYXRoLXBhcnRpYWwtc3VtcyUyMjolNUI0NSw0NSw1MCw0NSw0NSU1
RCwlMjJtYXRoLXNwZWN0cmFsLW5vcm0lMjI6JTVCMTgsMTgsMjAsMTgsMTglNUQsJTIycmVnZXhw
LWRuYSUyMjolNUIzNCwzNCwzMywzNSwzMyU1RCwlMjJzdHJpbmctYmFzZTY0JTIyOiU1QjI1LDI1
LDI1LDI2LDI1JTVELCUyMnN0cmluZy1mYXN0YSUyMjolNUI0NSw0NSw0NSw0NSw0NSU1RCwlMjJz
dHJpbmctdGFnY2xvdWQlMjI6JTVCNTEsNTEsNTEsNTAsNTIlNUQsJTIyc3RyaW5nLXVucGFjay1j
b2RlJTIyOiU1QjczLDc1LDcxLDcyLDc0JTVELCUyMnN0cmluZy12YWxpZGF0ZS1pbnB1dCUyMjol
NUI0OCw0OSw1MSw0OSw0OSU1RCU3RAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkVTVUxUUyAobWVhbnMgYW5kIDk1JSBjb25maWRlbmNlIGludGVydmFscykK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVG90YWw6ICAgICAg
ICAgICAgICAgICAgODA5LjJtcyArLy0gMS4yJQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKICAzZDogICAgICAgICAgICAgICAgICAgMTU5LjJtcyArLy0gMC43
JQogICAgY3ViZTogICAgICAgICAgICAgICAgNjAuNm1zICsvLSAxLjglCiAgICBtb3JwaDogICAg
ICAgICAgICAgICA2MC4wbXMgKy8tIDAuMCUKICAgIHJheXRyYWNlOiAgICAgICAgICAgIDM4LjZt
cyArLy0gMS44JQoKICBhY2Nlc3M6ICAgICAgICAgICAgICAgIDgwLjBtcyArLy0gNC41JQogICAg
YmluYXJ5LXRyZWVzOiAgICAgICAgIDYuOG1zICsvLSA4LjIlCiAgICBmYW5ua3VjaDogICAgICAg
ICAgICAxOS42bXMgKy8tIDMuNSUKICAgIG5ib2R5OiAgICAgICAgICAgICAgIDQzLjBtcyArLy0g
Ni44JQogICAgbnNpZXZlOiAgICAgICAgICAgICAgMTAuNm1zICsvLSA2LjQlCgogIGJpdG9wczog
ICAgICAgICAgICAgICAgNDEuOG1zICsvLSAyLjUlCiAgICAzYml0LWJpdHMtaW4tYnl0ZTogICAg
NC42bXMgKy8tIDE0LjglCiAgICBiaXRzLWluLWJ5dGU6ICAgICAgICAgOS44bXMgKy8tIDUuNyUK
ICAgIGJpdHdpc2UtYW5kOiAgICAgICAgICA0LjBtcyArLy0gMC4wJQogICAgbnNpZXZlLWJpdHM6
ICAgICAgICAgMjMuNG1zICsvLSA0LjglCgogIGNvbnRyb2xmbG93OiAgICAgICAgICAgIDQuNm1z
ICsvLSAxNC44JQogICAgcmVjdXJzaXZlOiAgICAgICAgICAgIDQuNm1zICsvLSAxNC44JQoKICBj
cnlwdG86ICAgICAgICAgICAgICAgIDU3LjhtcyArLy0gMS4wJQogICAgYWVzOiAgICAgICAgICAg
ICAgICAgMTYuOG1zICsvLSAzLjMlCiAgICBtZDU6ICAgICAgICAgICAgICAgICAyMC44bXMgKy8t
IDIuNyUKICAgIHNoYTE6ICAgICAgICAgICAgICAgIDIwLjJtcyArLy0gMi44JQoKICBkYXRlOiAg
ICAgICAgICAgICAgICAgIDg1LjJtcyArLy0gMS42JQogICAgZm9ybWF0LXRvZnRlOiAgICAgICAg
MzcuNm1zICsvLSAxLjglCiAgICBmb3JtYXQteHBhcmI6ICAgICAgICA0Ny42bXMgKy8tIDIuMyUK
CiAgbWF0aDogICAgICAgICAgICAgICAgIDEwMy40bXMgKy8tIDUuOCUKICAgIGNvcmRpYzogICAg
ICAgICAgICAgIDM5LjBtcyArLy0gNS41JQogICAgcGFydGlhbC1zdW1zOiAgICAgICAgNDYuMG1z
ICsvLSA2LjAlCiAgICBzcGVjdHJhbC1ub3JtOiAgICAgICAxOC40bXMgKy8tIDYuMCUKCiAgcmVn
ZXhwOiAgICAgICAgICAgICAgICAzMy44bXMgKy8tIDMuMSUKICAgIGRuYTogICAgICAgICAgICAg
ICAgIDMzLjhtcyArLy0gMy4xJQoKICBzdHJpbmc6ICAgICAgICAgICAgICAgMjQzLjRtcyArLy0g
MC44JQogICAgYmFzZTY0OiAgICAgICAgICAgICAgMjUuMm1zICsvLSAyLjIlCiAgICBmYXN0YTog
ICAgICAgICAgICAgICA0NS4wbXMgKy8tIDAuMCUKICAgIHRhZ2Nsb3VkOiAgICAgICAgICAgIDUx
LjBtcyArLy0gMS43JQogICAgdW5wYWNrLWNvZGU6ICAgICAgICAgNzMuMG1zICsvLSAyLjclCiAg
ICB2YWxpZGF0ZS1pbnB1dDogICAgICA0OS4ybXMgKy8tIDIuOCUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31276</attachid>
            <date>2009-06-14 19:30:35 -0700</date>
            <delta_ts>2009-06-14 19:30:35 -0700</delta_ts>
            <desc>Sunspider (after patch, XSSAuditor enabled)</desc>
            <filename>enabled.txt</filename>
            <type>text/plain</type>
            <size>2831</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">aHR0cDovL3d3dzIud2Via2l0Lm9yZy9wZXJmL3N1bnNwaWRlci0wLjkvc3Vuc3BpZGVyLXJlc3Vs
dHMuaHRtbD8lN0IlMjIzZC1jdWJlJTIyOiU1QjYzLDYwLDU5LDU5LDU5JTVELCUyMjNkLW1vcnBo
JTIyOiU1QjYxLDYwLDYxLDU5LDU5JTVELCUyMjNkLXJheXRyYWNlJTIyOiU1QjM3LDM5LDM4LDM4
LDM5JTVELCUyMmFjY2Vzcy1iaW5hcnktdHJlZXMlMjI6JTVCNyw3LDYsNiw3JTVELCUyMmFjY2Vz
cy1mYW5ua3VjaCUyMjolNUIyMCwyMCwyMCwyMCwyMCU1RCwlMjJhY2Nlc3MtbmJvZHklMjI6JTVC
NDEsNDMsNDMsNDMsNDIlNUQsJTIyYWNjZXNzLW5zaWV2ZSUyMjolNUIxMSwxMCwxMCwxMCwxMCU1
RCwlMjJiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUlMjI6JTVCNSw0LDQsNCw1JTVELCUyMmJpdG9w
cy1iaXRzLWluLWJ5dGUlMjI6JTVCMTAsOSw5LDksMTAlNUQsJTIyYml0b3BzLWJpdHdpc2UtYW5k
JTIyOiU1QjQsNCw0LDQsNCU1RCwlMjJiaXRvcHMtbnNpZXZlLWJpdHMlMjI6JTVCMjMsMjMsMjMs
MjMsMjQlNUQsJTIyY29udHJvbGZsb3ctcmVjdXJzaXZlJTIyOiU1QjQsNCw1LDUsNSU1RCwlMjJj
cnlwdG8tYWVzJTIyOiU1QjE3LDE3LDE2LDE3LDE2JTVELCUyMmNyeXB0by1tZDUlMjI6JTVCMjEs
MjEsMjEsMjEsMjAlNUQsJTIyY3J5cHRvLXNoYTElMjI6JTVCMjEsMjAsMjEsMjAsMjAlNUQsJTIy
ZGF0ZS1mb3JtYXQtdG9mdGUlMjI6JTVCMzcsMzgsMzgsMzgsMzglNUQsJTIyZGF0ZS1mb3JtYXQt
eHBhcmIlMjI6JTVCNDgsNDgsNDcsNDgsNDklNUQsJTIybWF0aC1jb3JkaWMlMjI6JTVCMzksMzgs
MzgsMzgsMzglNUQsJTIybWF0aC1wYXJ0aWFsLXN1bXMlMjI6JTVCNDUsNDUsNDUsNDUsNDUlNUQs
JTIybWF0aC1zcGVjdHJhbC1ub3JtJTIyOiU1QjE4LDE4LDE5LDE4LDE4JTVELCUyMnJlZ2V4cC1k
bmElMjI6JTVCMzQsMzIsMzMsMzMsMzMlNUQsJTIyc3RyaW5nLWJhc2U2NCUyMjolNUIyNiwyNSwy
NSwyNSwyNSU1RCwlMjJzdHJpbmctZmFzdGElMjI6JTVCNDUsNDUsNDUsNDUsNDUlNUQsJTIyc3Ry
aW5nLXRhZ2Nsb3VkJTIyOiU1QjUyLDQ4LDUwLDUxLDUwJTVELCUyMnN0cmluZy11bnBhY2stY29k
ZSUyMjolNUI3MCw3Miw3Miw3Myw3MyU1RCwlMjJzdHJpbmctdmFsaWRhdGUtaW5wdXQlMjI6JTVC
NTMsNTEsNTMsNTEsNTElNUQlN0QKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJFU1VMVFMgKG1lYW5zIGFuZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMpCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRvdGFsOiAgICAgICAg
ICAgICAgICAgIDgwNS4ybXMgKy8tIDAuNiUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KCiAgM2Q6ICAgICAgICAgICAgICAgICAgIDE1OC4ybXMgKy8tIDEuNSUK
ICAgIGN1YmU6ICAgICAgICAgICAgICAgIDYwLjBtcyArLy0gMy42JQogICAgbW9ycGg6ICAgICAg
ICAgICAgICAgNjAuMG1zICsvLSAyLjElCiAgICByYXl0cmFjZTogICAgICAgICAgICAzOC4ybXMg
Ky8tIDIuNyUKCiAgYWNjZXNzOiAgICAgICAgICAgICAgICA3OS4ybXMgKy8tIDAuNyUKICAgIGJp
bmFyeS10cmVlczogICAgICAgICA2LjZtcyArLy0gMTAuMyUKICAgIGZhbm5rdWNoOiAgICAgICAg
ICAgIDIwLjBtcyArLy0gMC4wJQogICAgbmJvZHk6ICAgICAgICAgICAgICAgNDIuNG1zICsvLSAy
LjYlCiAgICBuc2lldmU6ICAgICAgICAgICAgICAxMC4ybXMgKy8tIDUuNSUKCiAgYml0b3BzOiAg
ICAgICAgICAgICAgICA0MS4wbXMgKy8tIDQuMyUKICAgIDNiaXQtYml0cy1pbi1ieXRlOiAgICA0
LjRtcyArLy0gMTUuNSUKICAgIGJpdHMtaW4tYnl0ZTogICAgICAgICA5LjRtcyArLy0gNy4yJQog
ICAgYml0d2lzZS1hbmQ6ICAgICAgICAgIDQuMG1zICsvLSAwLjAlCiAgICBuc2lldmUtYml0czog
ICAgICAgICAyMy4ybXMgKy8tIDIuNCUKCiAgY29udHJvbGZsb3c6ICAgICAgICAgICAgNC42bXMg
Ky8tIDE0LjglCiAgICByZWN1cnNpdmU6ICAgICAgICAgICAgNC42bXMgKy8tIDE0LjglCgogIGNy
eXB0bzogICAgICAgICAgICAgICAgNTcuOG1zICsvLSAyLjQlCiAgICBhZXM6ICAgICAgICAgICAg
ICAgICAxNi42bXMgKy8tIDQuMSUKICAgIG1kNTogICAgICAgICAgICAgICAgIDIwLjhtcyArLy0g
Mi43JQogICAgc2hhMTogICAgICAgICAgICAgICAgMjAuNG1zICsvLSAzLjMlCgogIGRhdGU6ICAg
ICAgICAgICAgICAgICAgODUuOG1zICsvLSAxLjIlCiAgICBmb3JtYXQtdG9mdGU6ICAgICAgICAz
Ny44bXMgKy8tIDEuNSUKICAgIGZvcm1hdC14cGFyYjogICAgICAgIDQ4LjBtcyArLy0gMS44JQoK
ICBtYXRoOiAgICAgICAgICAgICAgICAgMTAxLjRtcyArLy0gMC43JQogICAgY29yZGljOiAgICAg
ICAgICAgICAgMzguMm1zICsvLSAxLjUlCiAgICBwYXJ0aWFsLXN1bXM6ICAgICAgICA0NS4wbXMg
Ky8tIDAuMCUKICAgIHNwZWN0cmFsLW5vcm06ICAgICAgIDE4LjJtcyArLy0gMy4xJQoKICByZWdl
eHA6ICAgICAgICAgICAgICAgIDMzLjBtcyArLy0gMi43JQogICAgZG5hOiAgICAgICAgICAgICAg
ICAgMzMuMG1zICsvLSAyLjclCgogIHN0cmluZzogICAgICAgICAgICAgICAyNDQuMm1zICsvLSAx
LjAlCiAgICBiYXNlNjQ6ICAgICAgICAgICAgICAyNS4ybXMgKy8tIDIuMiUKICAgIGZhc3RhOiAg
ICAgICAgICAgICAgIDQ1LjBtcyArLy0gMC4wJQogICAgdGFnY2xvdWQ6ICAgICAgICAgICAgNTAu
Mm1zICsvLSAzLjclCiAgICB1bnBhY2stY29kZTogICAgICAgICA3Mi4wbXMgKy8tIDIuMSUKICAg
IHZhbGlkYXRlLWlucHV0OiAgICAgIDUxLjhtcyArLy0gMi42JQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>