<?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>150019</bug_id>
          
          <creation_ts>2015-10-11 15:40:30 -0700</creation_ts>
          <short_desc>We should be able to clear search field recent searches based on time given</short_desc>
          <delta_ts>2015-11-05 11:41:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zach Li">a.tion.surf</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>a.tion.surf</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132267</commentid>
    <comment_count>0</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-11 15:40:30 -0700</bug_when>
    <thetext>To fix rdar://problem/16876762, add WebKit API to support removing search field recent searches based on time given.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132276</commentid>
    <comment_count>1</comment_count>
      <attachid>262876</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-11 21:20:03 -0700</bug_when>
    <thetext>Created attachment 262876
Patch

This patch is dependent on the change for https://bugs.webkit.org/show_bug.cgi?id=148388, so unless the patch for https://bugs.webkit.org/show_bug.cgi?id=148388 is checked in, this patch will not build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132375</commentid>
    <comment_count>2</comment_count>
      <attachid>262876</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-12 11:13:47 -0700</bug_when>
    <thetext>Comment on attachment 262876
Patch

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

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:35
&gt; +WEBCORE_EXPORT void removeSearchFieldRecentSearchesModifiedSince(std::chrono::system_clock::time_point modifiedSince);

This can probably just be a static function in SearchPopupMenu, and then it can have a shorter name.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:148
&gt; +        NSMutableDictionary *emptyRecentSearchesDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableDictionary dictionary], itemsKey, nil];
&gt; +        [emptyRecentSearchesDictionary writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];

Can we just delete this file instead of writing an empty file? Does the presence of a file signify something? Does it need to include this key-value pair? Why is everything here mutable?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:149
&gt; +    }

Did you mean to return early after this?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:153
&gt; +    if (![[itemsDictionary classForCoder] isSubclassOfClass:[NSMutableDictionary class]])

What is the significance of checking this way vs. the -isKindOfClass: checks below?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:158
&gt; +        if (![key isKindOfClass:[NSString class]])

I mean this…

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:162
&gt; +        if (![[nameDictionary classForCoder] isSubclassOfClass:[NSMutableDictionary class]])

…versus this.

&gt; Source/WebKit2/Shared/WebsiteData/WebsiteDataTypes.h:48
&gt; +    WebsiteDataTypeSearchFieldRecentSearches = 1 &lt;&lt; 10,
&gt;  #if ENABLE(NETSCAPE_PLUGIN_API)
&gt; -    WebsiteDataTypePlugInData = 1 &lt;&lt; 10,
&gt; +    WebsiteDataTypePlugInData = 1 &lt;&lt; 11,
&gt;  #endif
&gt;  #if ENABLE(MEDIA_STREAM)
&gt; -    WebsiteDataTypeMediaDeviceIdentifier = 1 &lt;&lt; 11,
&gt; +    WebsiteDataTypeMediaDeviceIdentifier = 1 &lt;&lt; 12,
&gt;  #endif

Why insert this in the middle?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:32
&gt; +WK_EXTERN NSString * const _WKWebsiteDataTypeSearchFieldRecentSearches WK_AVAILABLE(10_11, 9_0);

This is not present in 10.11 and 9.0. You should use WK_MAC_TBA and WK_IOS_TBA instead.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:40
&gt; +#if PLATFORM(COCOA)
&gt; +#include &lt;WebCore/SearchPopupMenuCocoa.h&gt;
&gt; +#endif

Conditional imports go in a separate paragraph after the main block of imports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132598</commentid>
    <comment_count>3</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-12 17:30:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 262876 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262876&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:35
&gt; &gt; +WEBCORE_EXPORT void removeSearchFieldRecentSearchesModifiedSince(std::chrono::system_clock::time_point modifiedSince);
&gt; 
&gt; This can probably just be a static function in SearchPopupMenu, and then it
&gt; can have a shorter name.

SearchPopupMenu is only a header file. And this function will only work on cocoa platform and I want to be consistent with the functions I already declared which are saveRecentSearches and loadRecentSearches.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:148
&gt; &gt; +        NSMutableDictionary *emptyRecentSearchesDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableDictionary dictionary], itemsKey, nil];
&gt; &gt; +        [emptyRecentSearchesDictionary writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; 
&gt; Can we just delete this file instead of writing an empty file? Does the
&gt; presence of a file signify something? Does it need to include this key-value
&gt; pair? Why is everything here mutable?

The presence of the file does not signify anything if it is empty. But this is following the behavior in saveRecentSearches that we will overwrite the plist to be an empty file when we detect the plist is corrupted instead of deleting the file.

The key-value pair is there to make saveRecentSearches easier when we construct the plist.

Not sure if it adds any value by making them mutable because the mutability will not be reserved when saving as a plist? But we do expect them to be mutable when reading the plist.
 
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:149
&gt; &gt; +    }
&gt; 
&gt; Did you mean to return early after this?

Yup!

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:153
&gt; &gt; +    if (![[itemsDictionary classForCoder] isSubclassOfClass:[NSMutableDictionary class]])
&gt; 
&gt; What is the significance of checking this way vs. the -isKindOfClass: checks
&gt; below?
&gt; 

Remy explained to me that [itemsDictionary isKindOfClass:[NSMutableDictionary class]] can return true even if itemsDictionary is not mutable because of the presence of __NSCFDictionary inside NSMutableDictionary. We have this check in Safari codebase.

&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:158
&gt; &gt; +        if (![key isKindOfClass:[NSString class]])
&gt; 
&gt; I mean this…
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:162
&gt; &gt; +        if (![[nameDictionary classForCoder] isSubclassOfClass:[NSMutableDictionary class]])
&gt; 
&gt; …versus this.
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebsiteData/WebsiteDataTypes.h:48
&gt; &gt; +    WebsiteDataTypeSearchFieldRecentSearches = 1 &lt;&lt; 10,
&gt; &gt;  #if ENABLE(NETSCAPE_PLUGIN_API)
&gt; &gt; -    WebsiteDataTypePlugInData = 1 &lt;&lt; 10,
&gt; &gt; +    WebsiteDataTypePlugInData = 1 &lt;&lt; 11,
&gt; &gt;  #endif
&gt; &gt;  #if ENABLE(MEDIA_STREAM)
&gt; &gt; -    WebsiteDataTypeMediaDeviceIdentifier = 1 &lt;&lt; 11,
&gt; &gt; +    WebsiteDataTypeMediaDeviceIdentifier = 1 &lt;&lt; 12,
&gt; &gt;  #endif
&gt; 
&gt; Why insert this in the middle?

No particular reason. I guess I want to put it before those conditionals.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:32
&gt; &gt; +WK_EXTERN NSString * const _WKWebsiteDataTypeSearchFieldRecentSearches WK_AVAILABLE(10_11, 9_0);
&gt; 
&gt; This is not present in 10.11 and 9.0. You should use WK_MAC_TBA and
&gt; WK_IOS_TBA instead.

Will fix.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:40
&gt; &gt; +#if PLATFORM(COCOA)
&gt; &gt; +#include &lt;WebCore/SearchPopupMenuCocoa.h&gt;
&gt; &gt; +#endif
&gt; 
&gt; Conditional imports go in a separate paragraph after the main block of
&gt; imports.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132950</commentid>
    <comment_count>4</comment_count>
      <attachid>263034</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-13 16:08:59 -0700</bug_when>
    <thetext>Created attachment 263034
Revised Patch

Added -removeRecentSearches and did refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132960</commentid>
    <comment_count>5</comment_count>
      <attachid>263036</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-13 16:24:02 -0700</bug_when>
    <thetext>Created attachment 263036
Revised Patch

Added -removeRecentSearches and did refactoring.

This patch is dependent on the change for https://bugs.webkit.org/show_bug.cgi?id=148388, so unless the patch for https://bugs.webkit.org/show_bug.cgi?id=148388 is checked in, this patch will not build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133534</commentid>
    <comment_count>6</comment_count>
      <attachid>263173</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-15 11:34:25 -0700</bug_when>
    <thetext>Created attachment 263173
Patch v2

Check if it builds on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133580</commentid>
    <comment_count>7</comment_count>
      <attachid>263184</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-15 13:27:16 -0700</bug_when>
    <thetext>Created attachment 263184
Patch v2

The patch did not build on GTK and Efl. The speculative fix is to include the newly added SearchPopupMenu.cpp file to PlatformGTK.cmake and PlatformEfl.cmake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133899</commentid>
    <comment_count>8</comment_count>
      <attachid>263184</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-16 10:17:59 -0700</bug_when>
    <thetext>Comment on attachment 263184
Patch v2

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

&gt; Source/WebCore/platform/SearchPopupMenu.h:45
&gt; +WEBCORE_EXPORT static void removeRecentSearches(std::chrono::system_clock::time_point modifiedSince);

Indentation.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:135
&gt; +    RetainPtr&lt;NSDictionary&gt; emptyItemsDictionary = adoptNS([[NSDictionary alloc] init]);
&gt; +    RetainPtr&lt;NSDictionary&gt; emptyRecentSearchesDictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:emptyItemsDictionary.get(), itemsKey, nil]);

Can use auto here.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:203
&gt; +    RetainPtr&lt;NSDictionary&gt; recentSearchesPlist = returnUncorruptedRecentSearchesPlist(dateModified);

Can use auto here.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:205
&gt; +        [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];

Should be atomically:YES here.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1085
&gt; +    WebCore::SearchPopupMenu::removeRecentSearches(modifiedSince);

I don&apos;t think you should call into WebCore here. Why can&apos;t you just put the contents of removeRecentSearches here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133909</commentid>
    <comment_count>9</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-16 10:31:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 263184 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263184&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:45
&gt; &gt; +WEBCORE_EXPORT static void removeRecentSearches(std::chrono::system_clock::time_point modifiedSince);
&gt; 
&gt; Indentation.

Will fix.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:135
&gt; &gt; +    RetainPtr&lt;NSDictionary&gt; emptyItemsDictionary = adoptNS([[NSDictionary alloc] init]);
&gt; &gt; +    RetainPtr&lt;NSDictionary&gt; emptyRecentSearchesDictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:emptyItemsDictionary.get(), itemsKey, nil]);
&gt; 
&gt; Can use auto here.

What is the benefit of using auto? Is it more modern?

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:203
&gt; &gt; +    RetainPtr&lt;NSDictionary&gt; recentSearchesPlist = returnUncorruptedRecentSearchesPlist(dateModified);
&gt; 
&gt; Can use auto here.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:205
&gt; &gt; +        [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; 
&gt; Should be atomically:YES here.

Darin suggested I should use atomically:NO because of the performance cost.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1085
&gt; &gt; +    WebCore::SearchPopupMenu::removeRecentSearches(modifiedSince);
&gt; 
&gt; I don&apos;t think you should call into WebCore here. Why can&apos;t you just put the
&gt; contents of removeRecentSearches here?

Originally I had the contents of removeRecentSearches in WebsiteDataStore, but Darin thinks we should not do

#if PLATFORM(COCOA)
#endif

in WebsiteDataStore and it would be better to move this logic to the platform independent SearchPopupMenu file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133923</commentid>
    <comment_count>10</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-16 10:57:21 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 263184 [details]
&gt; &gt; Patch v2
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=263184&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:45
&gt; &gt; &gt; +WEBCORE_EXPORT static void removeRecentSearches(std::chrono::system_clock::time_point modifiedSince);
&gt; &gt; 
&gt; &gt; Indentation.
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:135
&gt; &gt; &gt; +    RetainPtr&lt;NSDictionary&gt; emptyItemsDictionary = adoptNS([[NSDictionary alloc] init]);
&gt; &gt; &gt; +    RetainPtr&lt;NSDictionary&gt; emptyRecentSearchesDictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:emptyItemsDictionary.get(), itemsKey, nil]);
&gt; &gt; 
&gt; &gt; Can use auto here.
&gt; 
&gt; What is the benefit of using auto? Is it more modern?

It avoids having &quot;NSDictionary&quot; twice on one line.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:205
&gt; &gt; &gt; +        [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; &gt; 
&gt; &gt; Should be atomically:YES here.
&gt; 
&gt; Darin suggested I should use atomically:NO because of the performance cost.

I think the performance cost is negligible and not corrupting data is better.


&gt; &gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1085
&gt; &gt; &gt; +    WebCore::SearchPopupMenu::removeRecentSearches(modifiedSince);
&gt; &gt; 
&gt; &gt; I don&apos;t think you should call into WebCore here. Why can&apos;t you just put the
&gt; &gt; contents of removeRecentSearches here?
&gt; 
&gt; Originally I had the contents of removeRecentSearches in WebsiteDataStore,
&gt; but Darin thinks we should not do
&gt; 
&gt; #if PLATFORM(COCOA)
&gt; #endif
&gt; 
&gt; in WebsiteDataStore and it would be better to move this logic to the
&gt; platform independent SearchPopupMenu file.

Just call platformRemoveRecentSearches and implement it in WebsiteDataStoreCocoa.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134016</commentid>
    <comment_count>11</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-16 13:35:29 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Comment on attachment 263184 [details]
&gt; &gt; &gt; Patch v2
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=263184&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/SearchPopupMenu.h:45
&gt; &gt; &gt; &gt; +WEBCORE_EXPORT static void removeRecentSearches(std::chrono::system_clock::time_point modifiedSince);
&gt; &gt; &gt; 
&gt; &gt; &gt; Indentation.
&gt; &gt; 
&gt; &gt; Will fix.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:135
&gt; &gt; &gt; &gt; +    RetainPtr&lt;NSDictionary&gt; emptyItemsDictionary = adoptNS([[NSDictionary alloc] init]);
&gt; &gt; &gt; &gt; +    RetainPtr&lt;NSDictionary&gt; emptyRecentSearchesDictionary = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:emptyItemsDictionary.get(), itemsKey, nil]);
&gt; &gt; &gt; 
&gt; &gt; &gt; Can use auto here.
&gt; &gt; 
&gt; &gt; What is the benefit of using auto? Is it more modern?
&gt; 
&gt; It avoids having &quot;NSDictionary&quot; twice on one line.
&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:205
&gt; &gt; &gt; &gt; +        [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; &gt; &gt; 
&gt; &gt; &gt; Should be atomically:YES here.
&gt; &gt; 
&gt; &gt; Darin suggested I should use atomically:NO because of the performance cost.
&gt; 
&gt; I think the performance cost is negligible and not corrupting data is better.

Jessie, Anders, and I talked, we will go with atomically:NO.

&gt; 
&gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1085
&gt; &gt; &gt; &gt; +    WebCore::SearchPopupMenu::removeRecentSearches(modifiedSince);
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think you should call into WebCore here. Why can&apos;t you just put the
&gt; &gt; &gt; contents of removeRecentSearches here?
&gt; &gt; 
&gt; &gt; Originally I had the contents of removeRecentSearches in WebsiteDataStore,
&gt; &gt; but Darin thinks we should not do
&gt; &gt; 
&gt; &gt; #if PLATFORM(COCOA)
&gt; &gt; #endif
&gt; &gt; 
&gt; &gt; in WebsiteDataStore and it would be better to move this logic to the
&gt; &gt; platform independent SearchPopupMenu file.
&gt; 
&gt; Just call platformRemoveRecentSearches and implement it in
&gt; WebsiteDataStoreCocoa.mm.

Let me try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134745</commentid>
    <comment_count>12</comment_count>
      <attachid>263526</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-19 16:38:44 -0700</bug_when>
    <thetext>Created attachment 263526
Patch

This patch addresses Anders&apos; comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135005</commentid>
    <comment_count>13</comment_count>
      <attachid>263526</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-20 14:04:42 -0700</bug_when>
    <thetext>Comment on attachment 263526
Patch

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

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:35
&gt; +WEBCORE_EXPORT void removeSearchFieldRecentSearches(std::chrono::system_clock::time_point modifiedSince);

This function shouldn’t include the words “search field” in its name since the other two functions above don’t; we’d want that in all three names, or in none of the names.

I don’t think the time point should be named “modified since”. I think this makes better sense:

    removeRecentlyModifiedRecentSearches(std::chrono::system_clock::time_point);

The argument arguably doesn’t even need a name. Or it could be named oldestTimeToRemove.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:69
&gt; +static NSMutableArray *returnUncorruptedRecentSearchesArray(NSDictionary *itemsDictionary, NSString *name)

1) I think “type checked” would be a better term than “uncorrupted” or we could just leave it out of the function name entirely; it’s good that the function checks the types but I don’t think the name needs to state that explicitly.
2) I don’t think a function should have the verb “return” in it. We don’t use verbs in getter functions that return a result in WebKit code.
3) This function assumes the dictionary is part of a graph of objects that are all mutable, which is why it returns an NSMutableArray, so it should take an NSMutableDictionary *.

    static NSMutableArray *recentSearchesArray(NSMutableDictionary *itemsDictionary, NSString *name)

    static NSMutableArray *typeCheckedRecentSearchesArray(NSMutableDictionary *itemsDictionary, NSString *name)

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:82
&gt; +static NSDate *returnUncorruptedDateInRecentSearch(NSDictionary *recentSearch)

Same issues as the (1) and (2) mentioned above.

    static NSDate *dateInRecentSearch(NSDictionary *recentSearch)

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:94
&gt; +static RetainPtr&lt;NSDictionary&gt; returnUncorruptedRecentSearchesPlist(NSDate *dateModified)

Same issues as the (1) and (2) mentioned above, and also I don’t think it’s right to call what this returns a “recent searches plist” and also call the result of “readSearchFieldRecentSearchesPlist” a recent searches plist.

It’s also strange that this function name does not even mention that it removes the most recently added searches. That’s sort of leaving out the main point of the function.

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:97
&gt; +    if ([dateModified isEqualToDate:[NSDate distantPast]])
&gt; +        return nil;

Why do we need this? Is anyone going to call this function with that date? Do we really need to optimize that case?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:105
&gt; +    for (NSString *key in itemsDictionary.allKeys) {

Saying &quot;.allKeys&quot; here just hurts performance. Iteration of a dictionary already iterates its keys efficiently without allocating an array the way allKeys does:

    for (NSString *key in itemsDictionary) {

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:107
&gt; +        if (![key isKindOfClass:[NSString class]])
&gt; +            return nil;

Why not just skip an item by doing a continue? Do we really want to drop all the data if there’s even one thing wrong?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:111
&gt; +        if (!recentSearches)
&gt; +            return nil;

Why not just skip an item by doing a continue? Do we really want to drop all the data if there’s even one thing wrong?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:117
&gt; +            if (!date)
&gt; +                return nil;

Why not just skip an item by doing a continue? Do we really want to drop all the data if there’s even one thing wrong?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:129
&gt; +    [itemsDictionary removeObjectsForKeys:keysToRemove.get()];
&gt; +    return recentSearchesPlist;

No special case here to return nil instead of an empty dictionary. But above you did that for distantPast. Is this an important optimization or not?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:132
&gt; +static void cleanRecentSearchesPlist()

I don’t think “clean” is a good name for writing an empty list to disk.

    static void writeEmptyRecentSearchesPlist()

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:163
&gt; -    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];

I thought you all agreed to use atomically:NO? Who decided on YES? What is the rationale?

&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:205
&gt; +        [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];

Same question about atomically:YES.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135068</commentid>
    <comment_count>14</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-20 17:21:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 263526 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263526&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:35
&gt; &gt; +WEBCORE_EXPORT void removeSearchFieldRecentSearches(std::chrono::system_clock::time_point modifiedSince);
&gt; 
&gt; This function shouldn’t include the words “search field” in its name since
&gt; the other two functions above don’t; we’d want that in all three names, or
&gt; in none of the names.

Then I will use -removeSearchFieldRecentSearches as the function name to be distinct from Recent Web Searches in Safari.

&gt; 
&gt; I don’t think the time point should be named “modified since”. I think this
&gt; makes better sense:
&gt; 
&gt;    
&gt; removeRecentlyModifiedRecentSearches(std::chrono::system_clock::time_point);
&gt; 
&gt; The argument arguably doesn’t even need a name. Or it could be named
&gt; oldestTimeToRemove.

Your suggested name is so much clearer. I will use that.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:69
&gt; &gt; +static NSMutableArray *returnUncorruptedRecentSearchesArray(NSDictionary *itemsDictionary, NSString *name)
&gt; 
&gt; 1) I think “type checked” would be a better term than “uncorrupted” or we
&gt; could just leave it out of the function name entirely; it’s good that the
&gt; function checks the types but I don’t think the name needs to state that
&gt; explicitly.
&gt; 2) I don’t think a function should have the verb “return” in it. We don’t
&gt; use verbs in getter functions that return a result in WebKit code.
&gt; 3) This function assumes the dictionary is part of a graph of objects that
&gt; are all mutable, which is why it returns an NSMutableArray, so it should
&gt; take an NSMutableDictionary *.
&gt; 
&gt;     static NSMutableArray *recentSearchesArray(NSMutableDictionary
&gt; *itemsDictionary, NSString *name)
&gt; 
&gt;     static NSMutableArray
&gt; *typeCheckedRecentSearchesArray(NSMutableDictionary *itemsDictionary,
&gt; NSString *name)
&gt; 

I think I will go with:

      static NSMutableArray *typeCheckedRecentSearchesArray(NSMutableDictionary *itemsDictionary, NSString *name)

&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:82
&gt; &gt; +static NSDate *returnUncorruptedDateInRecentSearch(NSDictionary *recentSearch)
&gt; 
&gt; Same issues as the (1) and (2) mentioned above.
&gt; 
&gt;     static NSDate *dateInRecentSearch(NSDictionary *recentSearch)

To be consistent, I will go with:

      static NSDate *typeCheckedDateInRecentSearch(NSDictionary *recentSearch)
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:94
&gt; &gt; +static RetainPtr&lt;NSDictionary&gt; returnUncorruptedRecentSearchesPlist(NSDate *dateModified)
&gt; 
&gt; Same issues as the (1) and (2) mentioned above, and also I don’t think it’s
&gt; right to call what this returns a “recent searches plist” and also call the
&gt; result of “readSearchFieldRecentSearchesPlist” a recent searches plist.
&gt; 
&gt; It’s also strange that this function name does not even mention that it
&gt; removes the most recently added searches. That’s sort of leaving out the
&gt; main point of the function.

How about

static RetainPtr&lt;NSDictionary&gt; updatedRecentSearchesDictionary(NSDate *dateModified)?

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:97
&gt; &gt; +    if ([dateModified isEqualToDate:[NSDate distantPast]])
&gt; &gt; +        return nil;
&gt; 
&gt; Why do we need this? Is anyone going to call this function with that date?
&gt; Do we really need to optimize that case?

Safari will be passing [NSDate distantPast] to clear all recent searches. I also expect if other applications want to clear all recent searches, they would pass this date.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:105
&gt; &gt; +    for (NSString *key in itemsDictionary.allKeys) {
&gt; 
&gt; Saying &quot;.allKeys&quot; here just hurts performance. Iteration of a dictionary
&gt; already iterates its keys efficiently without allocating an array the way
&gt; allKeys does:
&gt; 
&gt;     for (NSString *key in itemsDictionary) {
&gt; 

Will change.

&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:107
&gt; &gt; +        if (![key isKindOfClass:[NSString class]])
&gt; &gt; +            return nil;
&gt; 
&gt; Why not just skip an item by doing a continue? Do we really want to drop all
&gt; the data if there’s even one thing wrong?

If we encounter an unexpected data type, I want to take the chance to purify the plist instead of leaving the corrupted piece of data there. We can imagine an extreme case where all keys are not NSString and we would skip everything and the corrupted entries would still be in the plist, which I think is not something clients expect when they initiate clearing recent searches.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:111
&gt; &gt; +        if (!recentSearches)
&gt; &gt; +            return nil;
&gt; 
&gt; Why not just skip an item by doing a continue? Do we really want to drop all
&gt; the data if there’s even one thing wrong?

Ditto. But keys -&gt; recentSearches.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:117
&gt; &gt; +            if (!date)
&gt; &gt; +                return nil;
&gt; 
&gt; Why not just skip an item by doing a continue? Do we really want to drop all
&gt; the data if there’s even one thing wrong?

Ditto. But keys -&gt; dates.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:129
&gt; &gt; +    [itemsDictionary removeObjectsForKeys:keysToRemove.get()];
&gt; &gt; +    return recentSearchesPlist;
&gt; 
&gt; No special case here to return nil instead of an empty dictionary. But above
&gt; you did that for distantPast. Is this an important optimization or not?

Since in the case where we return nil, we will construct an empty dictionary and save it to disk, I do not want to construct an empty dictionary again when we already have an empty dictionary. Plus, this means less code.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:132
&gt; &gt; +static void cleanRecentSearchesPlist()
&gt; 
&gt; I don’t think “clean” is a good name for writing an empty list to disk.
&gt; 
&gt;     static void writeEmptyRecentSearchesPlist()

Will change.

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:163
&gt; &gt; -    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:NO];
&gt; &gt; +    [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];
&gt; 
&gt; I thought you all agreed to use atomically:NO? Who decided on YES? What is
&gt; the rationale?

I think Anders has a pretty strong opinion on using atomically:YES and his arguments are:
1. The extra cost is a call to rename() and most likely the data is going to be in the buffer cache anyway.
2. It&apos;s more important that we don&apos;t corrupt the saved searches than be performant in this case
(He also mentioned if it was about writing a cache file he would be less worried about writing atomically, but this is user data)

&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:205
&gt; &gt; +        [recentSearchesPlist writeToFile:searchFieldRecentSearchesPlistPath() atomically:YES];
&gt; 
&gt; Same question about atomically:YES.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135753</commentid>
    <comment_count>15</comment_count>
      <attachid>263526</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2015-10-22 11:30:56 -0700</bug_when>
    <thetext>Comment on attachment 263526
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:35
&gt;&gt;&gt; +WEBCORE_EXPORT void removeSearchFieldRecentSearches(std::chrono::system_clock::time_point modifiedSince);
&gt;&gt; 
&gt;&gt; This function shouldn’t include the words “search field” in its name since the other two functions above don’t; we’d want that in all three names, or in none of the names.
&gt;&gt; 
&gt;&gt; I don’t think the time point should be named “modified since”. I think this makes better sense:
&gt;&gt; 
&gt;&gt;     removeRecentlyModifiedRecentSearches(std::chrono::system_clock::time_point);
&gt;&gt; 
&gt;&gt; The argument arguably doesn’t even need a name. Or it could be named oldestTimeToRemove.
&gt; 
&gt; Then I will use -removeSearchFieldRecentSearches as the function name to be distinct from Recent Web Searches in Safari.

Let&apos;s go with Darin&apos;s suggestion here: removeRecentlyModifiedRecentSearches.

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:94
&gt;&gt;&gt; +static RetainPtr&lt;NSDictionary&gt; returnUncorruptedRecentSearchesPlist(NSDate *dateModified)
&gt;&gt; 
&gt;&gt; Same issues as the (1) and (2) mentioned above, and also I don’t think it’s right to call what this returns a “recent searches plist” and also call the result of “readSearchFieldRecentSearchesPlist” a recent searches plist.
&gt;&gt; 
&gt;&gt; It’s also strange that this function name does not even mention that it removes the most recently added searches. That’s sort of leaving out the main point of the function.
&gt; 
&gt; How about
&gt; 
&gt; static RetainPtr&lt;NSDictionary&gt; updatedRecentSearchesDictionary(NSDate *dateModified)?

Zach and I came up with something slightly better:

static RetainPtr&lt;NSDictionary&gt; typeCheckedRecentSearchesAddedBeforeDate(NSDate *date)

OR

static RetainPtr&lt;NSDictionary&gt; typeCheckedRecentSearchesRemovingRecentSearchesAddedAfterDate(NSDate *date)

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:107
&gt;&gt;&gt; +            return nil;
&gt;&gt; 
&gt;&gt; Why not just skip an item by doing a continue? Do we really want to drop all the data if there’s even one thing wrong?
&gt; 
&gt; If we encounter an unexpected data type, I want to take the chance to purify the plist instead of leaving the corrupted piece of data there. We can imagine an extreme case where all keys are not NSString and we would skip everything and the corrupted entries would still be in the plist, which I think is not something clients expect when they initiate clearing recent searches.

I think what Zach is trying to say here is that the user indicated they wanted data cleared and we don&apos;t want to risk leaving behind incriminating data that was written in either a slightly different format  or corrupted in some other way. This is erring on the side of privacy, for which I think it is acceptable to incur some data loss.

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:129
&gt;&gt;&gt; +    return recentSearchesPlist;
&gt;&gt; 
&gt;&gt; No special case here to return nil instead of an empty dictionary. But above you did that for distantPast. Is this an important optimization or not?
&gt; 
&gt; Since in the case where we return nil, we will construct an empty dictionary and save it to disk, I do not want to construct an empty dictionary again when we already have an empty dictionary. Plus, this means less code.

For consistency, maybe we should just return nil here if the dictionary is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135754</commentid>
    <comment_count>16</comment_count>
      <attachid>263526</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2015-10-22 11:30:58 -0700</bug_when>
    <thetext>Comment on attachment 263526
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.h:35
&gt;&gt;&gt; +WEBCORE_EXPORT void removeSearchFieldRecentSearches(std::chrono::system_clock::time_point modifiedSince);
&gt;&gt; 
&gt;&gt; This function shouldn’t include the words “search field” in its name since the other two functions above don’t; we’d want that in all three names, or in none of the names.
&gt;&gt; 
&gt;&gt; I don’t think the time point should be named “modified since”. I think this makes better sense:
&gt;&gt; 
&gt;&gt;     removeRecentlyModifiedRecentSearches(std::chrono::system_clock::time_point);
&gt;&gt; 
&gt;&gt; The argument arguably doesn’t even need a name. Or it could be named oldestTimeToRemove.
&gt; 
&gt; Then I will use -removeSearchFieldRecentSearches as the function name to be distinct from Recent Web Searches in Safari.

Let&apos;s go with Darin&apos;s suggestion here: removeRecentlyModifiedRecentSearches.

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:94
&gt;&gt;&gt; +static RetainPtr&lt;NSDictionary&gt; returnUncorruptedRecentSearchesPlist(NSDate *dateModified)
&gt;&gt; 
&gt;&gt; Same issues as the (1) and (2) mentioned above, and also I don’t think it’s right to call what this returns a “recent searches plist” and also call the result of “readSearchFieldRecentSearchesPlist” a recent searches plist.
&gt;&gt; 
&gt;&gt; It’s also strange that this function name does not even mention that it removes the most recently added searches. That’s sort of leaving out the main point of the function.
&gt; 
&gt; How about
&gt; 
&gt; static RetainPtr&lt;NSDictionary&gt; updatedRecentSearchesDictionary(NSDate *dateModified)?

Zach and I came up with something slightly better:

static RetainPtr&lt;NSDictionary&gt; typeCheckedRecentSearchesAddedBeforeDate(NSDate *date)

OR

static RetainPtr&lt;NSDictionary&gt; typeCheckedRecentSearchesRemovingRecentSearchesAddedAfterDate(NSDate *date)

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:107
&gt;&gt;&gt; +            return nil;
&gt;&gt; 
&gt;&gt; Why not just skip an item by doing a continue? Do we really want to drop all the data if there’s even one thing wrong?
&gt; 
&gt; If we encounter an unexpected data type, I want to take the chance to purify the plist instead of leaving the corrupted piece of data there. We can imagine an extreme case where all keys are not NSString and we would skip everything and the corrupted entries would still be in the plist, which I think is not something clients expect when they initiate clearing recent searches.

I think what Zach is trying to say here is that the user indicated they wanted data cleared and we don&apos;t want to risk leaving behind incriminating data that was written in either a slightly different format  or corrupted in some other way. This is erring on the side of privacy, for which I think it is acceptable to incur some data loss.

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SearchPopupMenuCocoa.mm:129
&gt;&gt;&gt; +    return recentSearchesPlist;
&gt;&gt; 
&gt;&gt; No special case here to return nil instead of an empty dictionary. But above you did that for distantPast. Is this an important optimization or not?
&gt; 
&gt; Since in the case where we return nil, we will construct an empty dictionary and save it to disk, I do not want to construct an empty dictionary again when we already have an empty dictionary. Plus, this means less code.

For consistency, maybe we should just return nil here if the dictionary is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135944</commentid>
    <comment_count>17</comment_count>
      <attachid>263894</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-22 21:30:32 -0700</bug_when>
    <thetext>Created attachment 263894
Patch

Addresses Darin&apos;s comments and check if it builds on all platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135946</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-22 21:32:31 -0700</bug_when>
    <thetext>Attachment 263894 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136113</commentid>
    <comment_count>19</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-23 12:44:47 -0700</bug_when>
    <thetext>Will fix the style issue after review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136856</commentid>
    <comment_count>20</comment_count>
      <attachid>264142</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-27 11:01:11 -0700</bug_when>
    <thetext>Created attachment 264142
Patch Already Reviewed

Fix the coding style issue and the patch was r+ by Anders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136873</commentid>
    <comment_count>21</comment_count>
      <attachid>264142</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-27 11:50:45 -0700</bug_when>
    <thetext>Comment on attachment 264142
Patch Already Reviewed

Clearing flags on attachment: 264142

Committed r191628: &lt;http://trac.webkit.org/changeset/191628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136874</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-27 11:50:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137064</commentid>
    <comment_count>23</comment_count>
      <attachid>264196</attachid>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-10-27 22:45:41 -0700</bug_when>
    <thetext>Created attachment 264196
Fix variable name issue in patch committed

The variable name and the parameter name are both `date`. Rename the variable name to `dateAdded` so that the comparison between dates works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139662</commentid>
    <comment_count>24</comment_count>
    <who name="Zach Li">a.tion.surf</who>
    <bug_when>2015-11-05 11:07:34 -0800</bug_when>
    <thetext>The &quot;fix variable name issue patch&quot; also needs to be landed, so I am reopening the bug for commit bots to operate on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139690</commentid>
    <comment_count>25</comment_count>
      <attachid>264196</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 11:40:56 -0800</bug_when>
    <thetext>Comment on attachment 264196
Fix variable name issue in patch committed

Clearing flags on attachment: 264196

Committed r192066: &lt;http://trac.webkit.org/changeset/192066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139691</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 11:41:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262876</attachid>
            <date>2015-10-11 21:20:03 -0700</date>
            <delta_ts>2015-10-13 16:08:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>13851</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA2YjAyMjNmYWNlNGMzZTQyM2NjNDBkZjg2NWQxYWY1MDNhNmI4MzVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDExIE9jdCAyMDE1IDIxOjE3OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAxOSArKysrKysrKysKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLmggIHwgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Vh
cmNoUG9wdXBNZW51Q29jb2EubW0gfCA0OCArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysr
KysKIC4uLi9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmggIHwg
IDUgKystCiAuLi4vVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tICAg
ICB8ICAzICsrCiAuLi4vQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oICAg
ICAgICB8ICA0ICsrCiAuLi4vQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgg
ICAgICAgICB8ICAxICsKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgICAgIHwgMjIgKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggICAgICAgfCAgMSArCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0
aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2ZWJhYy4uN2QxNDczNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEwLTExICBaaHVvIExpICA8emFjaGxp
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViS2l0IEFQSSB0byBjbGVhciBkYXRhIHR5cGUg
U2VhcmNoIEZpZWxkIFJlY2VudCBTZWFyY2hlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAxOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNv
Y29hLmg6IEFkZCBhIGZ1bmN0aW9uIHRvIHJlbW92ZSByZWNlbnQgc2VhcmNoZXMgYmFzZWQgb24K
KyAgICAgICAgdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNo
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgV2hlbiB0aGUgdGltZSBwYXNzZWQgaW4gaXMgZXF1
aXZhbGVudCB0byBbTlNEYXRlIGRpc3RhbnRQYXN0XSwgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hl
cyBpbgorICAgICAgICB0aGUgUmVjZW50IFNlYXJjaGVzIHBsaXN0LiBPdGhlcndpc2UsIHdlIG9u
bHkgY2xlYXIgdGhlIHJlY2VudCBzZWFyY2hlcyB0aGF0IHdlcmUgY3JlYXRlZAorICAgICAgICBh
ZnRlciBvciBhdCB0aGUgdGltZSB0aGF0IGlzIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLiBJ
ZiBhbGwgcmVjZW50IHNlYXJjaGVzIGFzc29jaWF0ZWQKKyAgICAgICAgd2l0aCBhbiBhdXRvc2F2
ZSBuYW1lIHdlcmUgY3JlYXRlZCBhZnRlciBvciBhdCB0aGUgdGltZSB0aGF0IGlzIHBhc3NlZCBp
biBhcyB0aGUgcGFyYW1ldGVyLAorICAgICAgICByZW1vdmUgdGhpcyBhdXRvc2F2ZSBuYW1lIGtl
eSBhbmQgYWxsIG9mIGl0cyB2YWx1ZXMgaW4gdGhlIHBsaXN0LiBJZiBhbGwgcmVjZW50IHNlYXJj
aGVzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBldmVyeSBhdXRvc2F2ZSBuYW1lIGluIHRoZSBw
bGlzdCB3ZXJlIGNyZWF0ZWQgYWZ0ZXIgb3IgYXQgdGhlIHRpbWUgdGhhdCBpcworICAgICAgICBw
YXNzZWQgaW4gYXMgdGhlIHBhcmFtZXRlciwgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbiB0
aGUgUmVjZW50IFNlYXJjaGVzIHBsaXN0LgorCiAyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxp
QGFwcGxlLmNvbT4KIAogICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJl
Y2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNv
Y29hLmgKaW5kZXggNjk5NmZkMi4uMzUyZjAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCkBAIC0zMiw2ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzYXZlUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNo
PiYgc2VhcmNoSXRlbXMpOwogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNNb2RpZmllZFNpbmNlKHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVD
b2NvYS5tbQppbmRleCAxMjg0NmI3Li43MjYxZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQpAQCAtMTQwLDQgKzE0
MCw1MiBAQCBWZWN0b3I8UmVjZW50U2VhcmNoPiBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBzZWFyY2hJdGVtczsKIH0KIAordm9pZCByZW1v
dmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgTlNEYXRlICpkYXRl
TW9kaWZpZWQgPSB0b05TRGF0ZUZyb21TeXN0ZW1DbG9jayhtb2RpZmllZFNpbmNlKTsKKyAgICBp
ZiAoW2RhdGVNb2RpZmllZCBpc0VxdWFsVG9EYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXSkgewor
ICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICplbXB0eVJlY2VudFNlYXJjaGVzRGljdGlvbmFy
eSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05T
TXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV0sIGl0ZW1zS2V5LCBuaWxdOworICAgICAgICBb
ZW1wdHlSZWNlbnRTZWFyY2hlc0RpY3Rpb25hcnkgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNl
bnRTZWFyY2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6Tk9dOworICAgIH0KKworICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNlbnRTZWFyY2hlc1BsaXN0ID0gcmVhZFNlYXJj
aEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpOworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKml0
ZW1zRGljdGlvbmFyeSA9IFtyZWNlbnRTZWFyY2hlc1BsaXN0IG9iamVjdEZvcktleTppdGVtc0tl
eV07CisgICAgaWYgKCFbW2l0ZW1zRGljdGlvbmFyeSBjbGFzc0ZvckNvZGVyXSBpc1N1YmNsYXNz
T2ZDbGFzczpbTlNNdXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm47CisK
KyAgICBOU011dGFibGVBcnJheSAqa2V5c1RvUmVtb3ZlID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gaXRlbXNEaWN0aW9uYXJ5LmFsbEtleXMpIHsK
KyAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpuYW1lRGlj
dGlvbmFyeSA9IFtpdGVtc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgICAgIGlm
ICghW1tuYW1lRGljdGlvbmFyeSBjbGFzc0ZvckNvZGVyXSBpc1N1YmNsYXNzT2ZDbGFzczpbTlNN
dXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgTlNNdXRhYmxlQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW25hbWVEaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpzZWFyY2hlc0tleV07CisgICAgICAgIGlmICghW3JlY2VudFNlYXJjaGVzIGlzS2lu
ZE9mQ2xhc3M6W05TTXV0YWJsZUFycmF5IGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBOU011dGFibGVBcnJheSAqZW50cmllc1RvUmVtb3ZlID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5XTsKKyAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKnJlY2VudFNlYXJjaCBpbiBy
ZWNlbnRTZWFyY2hlcykgeworICAgICAgICAgICAgaWYgKCFbcmVjZW50U2VhcmNoIGlzS2luZE9m
Q2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dIHx8IHJlY2VudFNlYXJjaC5jb3VudCAhPSAyKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBOU0RhdGUgKmRhdGUgPSBb
cmVjZW50U2VhcmNoIG9iamVjdEZvcktleTpkYXRlS2V5XTsKKyAgICAgICAgICAgIGlmICghW2Rh
dGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0pCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGlmIChbZGF0ZSBjb21wYXJlOmRhdGVNb2RpZmllZF0gPT0gTlNP
cmRlcmVkRGVzY2VuZGluZykKKyAgICAgICAgICAgICAgICBbZW50cmllc1RvUmVtb3ZlIGFkZE9i
amVjdDpyZWNlbnRTZWFyY2hdOworICAgICAgICB9CisKKyAgICAgICAgW3JlY2VudFNlYXJjaGVz
IHJlbW92ZU9iamVjdHNJbkFycmF5OmVudHJpZXNUb1JlbW92ZV07CisgICAgICAgIGlmICghcmVj
ZW50U2VhcmNoZXMuY291bnQpCisgICAgICAgICAgICBba2V5c1RvUmVtb3ZlIGFkZE9iamVjdDpr
ZXldOworICAgIH0KKworICAgIFtpdGVtc0RpY3Rpb25hcnkgcmVtb3ZlT2JqZWN0c0ZvcktleXM6
a2V5c1RvUmVtb3ZlXTsKKyAgICBbcmVjZW50U2VhcmNoZXNQbGlzdCB3cml0ZVRvRmlsZTpzZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWljYWxseTpOT107Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzZTFjNjhlLi5kZWM0NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTUtMTAtMTEgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRhdGEgdHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJj
aGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
MDE5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaDogQWRkIGRhdGEgdHlwZSBTZWFy
Y2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAgICAgKGRhdGFUeXBlc1RvU3RyaW5nKTogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKTogRGl0dG8uCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOiBIYW5kbGUgdGhl
IGNhc2Ugd2hlbiBkYXRhIHR5cGUgaXMgU2VhcmNoCisgICAgICAgIEZpZWxkIFJlY2VudCBTZWFy
Y2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlU2VhcmNoRmll
bGRSZWNlbnRTZWFyY2hlcyk6IENhbGwgdGhlIHJlbW92aW5nCisgICAgICAgIHJlY2VudCBzZWFy
Y2hlcyBsb2dpYyBpbiBXZWJDb3JlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6IEFkZCBhIHByaXZhdGUgZnVuY3Rpb24gZm9yIHJlbW92aW5nCisg
ICAgICAgIHJlY2VudCBzZWFyY2hlcyBiYXNlZCBvbiB0aW1lLgorCiAyMDE1LTEwLTA4ICBaaHVv
IExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNl
YXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkg
d2FzIGFkZGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhVHlwZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVR5cGVzLmgKaW5kZXggZmNhYjA2Mi4uNGEzMzJjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oCkBAIC0z
OSwxMSArMzksMTIgQEAgZW51bSBXZWJzaXRlRGF0YVR5cGVzIHsKICAgICBXZWJzaXRlRGF0YVR5
cGVJbmRleGVkREJEYXRhYmFzZXMgPSAxIDw8IDcsCiAgICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFL
ZXlzID0gMSA8PCA4LAogICAgIFdlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IDEgPDwgOSwKKyAg
ICBXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzID0gMSA8PCAxMCwKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBXZWJzaXRlRGF0YVR5cGVQbHVnSW5E
YXRhID0gMSA8PCAxMCwKKyAgICBXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gMSA8PCAxMSwK
ICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgV2Vic2l0ZURhdGFUeXBlTWVk
aWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMSwKKyAgICBXZWJzaXRlRGF0YVR5cGVNZWRpYURl
dmljZUlkZW50aWZpZXIgPSAxIDw8IDEyLAogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0K
aW5kZXggM2ViOGI3MS4uNmRhZjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtNDEsNiArNDEs
NyBAQCBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2Vz
ID0gQCJXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZQogCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNp
dGVEYXRhVHlwZU1lZGlhS2V5cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIjsKIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlID0gQCJfV0tXZWJzaXRl
RGF0YVR5cGVIU1RTQ2FjaGUiOworTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVT
ZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3RyaW5nICogY29uc3Qg
X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0lu
RGF0YSI7CkBAIC03OSw2ICs4MCw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJp
bmcoTlNTZXQgKmRhdGFUeXBlcykKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkhTVFMgQ2Fj
aGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5
cGVNZWRpYUtleXNdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiTWVkaWEgS2V5cyJdOwor
ICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJj
aEZpZWxkUmVjZW50U2VhcmNoZXNdKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiU2VhcmNo
IEZpZWxkIFJlY2VudCBTZWFyY2hlcyJdOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoW2Rh
dGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhXSkKICAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlBsdWctaW4gRGF0YSJdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZEludGVybmFsLmgKaW5kZXggMjM0ODYzNC4uYWJlOGI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oCkBAIC02NCw2ICs2NCw4IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGVzIHRvV2Vic2l0ZURhdGFUeXBlcyhOU1NldCAqd2tXZWJzaXRlRGF0YVR5
CiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURh
dGFUeXBlSFNUU0NhY2hlOwogICAgIGlmIChbd2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5zT2Jq
ZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5c10pCiAgICAgICAgIHdlYnNpdGVEYXRhVHlw
ZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzOworICAgIGlm
IChbd2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXNdKQorICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdl
YnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXM7
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKFt3a1dlYnNpdGVEYXRh
VHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YV0pCiAgICAg
ICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBl
UGx1Z0luRGF0YTsKQEAgLTk3LDYgKzk5LDggQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNT
ZXQ+IHRvV0tXZWJzaXRlRGF0YVR5cGVzKGludCB3ZWJzaXRlRGF0YVR5cGVzKQogICAgICAgICBb
d2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGVd
OwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURh
dGFUeXBlTWVkaWFLZXlzKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpf
V0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYg
V2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
cykKKyAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc107CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpXZWJz
aXRlRGF0YVR5cGVQbHVnSW5EYXRhKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFBy
aXZhdGUuaAppbmRleCBjZmM1YmMyLi43MWUyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJp
dmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CiBXS19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgV0tfQVZB
SUxBQkxFKDEwXzExLCA5XzApOworV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyBXS19BVkFJTEFCTEUoMTBfMTEsIDlf
MCk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3Qg
X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSBXS19BVkFJTEFCTEUoMTBfMTEsIE5BKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAppbmRleCA5MmVkNjFlLi4wODRiMjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CkBAIC0zNSw2ICszNSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2Vi
Q29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTYzMiw2ICs2
MzUsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlw
ZXMgZGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGUKICAgICAgICAgfSk7CiAgICAgfQogCisg
ICAgaWYgKGRhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNo
ZXMgJiYgaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQ
ZW5kaW5nQ2FsbGJhY2soKTsKKworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbW9kaWZpZWRT
aW5jZSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICByZW1vdmVTZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzKG1vZGlmaWVkU2luY2UpOworCisgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAgICAgaWYgKGRhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgJiYgaXNQZXJz
aXN0ZW50KCkpIHsKICAgICAgICAgY2xhc3MgU3RhdGUgewpAQCAtMTA2Nyw0ICsxMDgyLDExIEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgV2ViQ29yZTo6cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc01vZGlmaWVkU2luY2Uo
bW9kaWZpZWRTaW5jZSk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMzZiNjBj
Ny4uNGM0MDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG1lZGlh
S2V5T3JpZ2lucyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOwogICAg
IHN0YXRpYyB2b2lkIHJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYg
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVNlYXJjaEZpZWxkUmVj
ZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlKTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBjb25zdCBX
ZWJDb3JlOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0tIAoyLjQuNyAoQXBwbGUgR2l0LTU5KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263034</attachid>
            <date>2015-10-13 16:08:59 -0700</date>
            <delta_ts>2015-10-13 16:24:02 -0700</delta_ts>
            <desc>Revised Patch</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>23737</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSAxZTVjMGY0NjdkZGU0NTM4MjhiOTQ5NDA4ZjQ5OWRhY2U0NzY1YjM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUdWUs
IDEzIE9jdCAyMDE1IDE1OjQxOjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAzNSArKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qICAgfCAgNCArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQ
b3B1cE1lbnUuY3BwICAgICAgICB8IDQxICsrKysrKysrKwogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51LmggICAgICAgICAgfCAgMSArCiAuLi4vV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oICB8ICAxICsKIC4uLi9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tIHwgOTcgKysrKysrKysrKysrKysrKysr
Ky0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAyMiArKysrKwogLi4uL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlw
ZXMuaCAgfCAgNSArLQogLi4uL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZC5tbSAgICAgfCAgMyArCiAuLi4vQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5h
bC5oICAgICAgICB8ICA0ICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZh
dGUuaCAgICAgICAgIHwgIDEgKwogLi4uL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCAgICAgfCAxOCArKysrCiAuLi4vVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaCAgICAgICB8ICAxICsKIDEzIGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNlcnRp
b25zKCspLCAxNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1Y2YzYWEuLmE2
ZGJlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxNS0xMC0xMSAgWmh1byBMaSAg
PHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdlYktpdCBBUEkgdG8gY2xlYXIgZGF0
YSB0eXBlIFNlYXJjaCBGaWVsZCBSZWNlbnQgU2VhcmNoZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwMTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBTZWFyY2hQb3B1cE1lbnUuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oOiBEZWNsYXJlIC1yZW1vdmVSZWNlbnRTZWFyY2hlcyBmdW5jdGlvbi4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwOiBXZSBvbmx5IHBlcmZvcm0g
cmVtb3ZpbmcgcmVjZW50IHNlYXJjaGVzIGFjdGlvbiB3aGVuIHRoZSBwbGF0Zm9ybQorICAgICAg
ICBpcyBjb2NvYSBmb3Igbm93LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVw
TWVudUNvY29hLmg6IEFkZCBhIGZ1bmN0aW9uIHRvIHJlbW92ZSByZWNlbnQgc2VhcmNoZXMgYmFz
ZWQgb24KKyAgICAgICAgdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJldHVyblVuY29ycnVwdGVkUmVjZW50
U2VhcmNoZXNBcnJheSk6IFJldHVybiBuaWwgaWYgdGhlIHJlY2VudCBzZWFyY2hlcyBhcnJheSBp
cworICAgICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIGFycmF5LgorICAgICAg
ICAoV2ViQ29yZTo6cmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2gpOiBSZXR1cm4g
bmlsIGlmIHRoZSBkYXRlIGluIHJlY2VudCBzZWFyY2ggaXMKKyAgICAgICAgY29ycnVwdGVkLCBv
dGhlcndpc2UgcmV0dXJuIHRoZSBkYXRlLgorICAgICAgICAoV2ViQ29yZTo6cmV0dXJuVW5jb3Jy
dXB0ZWRSZWNlbnRTZWFyY2hlc1BsaXN0KTogUmV0dXJuIG5pbCBpZiB0aGUgcmVjZW50IHNlYXJj
aGVzIHBsaXN0IGlzCisgICAgICAgIGNvcnJ1cHRlZCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgcmVj
ZW50IHNlYXJjaGVzIHBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW5SZWNlbnRTZWFyY2hl
c1BsaXN0KTogUmVwbGFjZSB0aGUgZXhpc3RpbmcgcmVjZW50IHNlYXJjaGVzIHBsaXN0IGlmIHRo
ZXJlIGlzCisgICAgICAgIGFueSB3aXRoIGEgY2xlYW4gb25lLgorICAgICAgICAoV2ViQ29yZTo6
bG9hZFJlY2VudFNlYXJjaGVzKTogVXNlIC1yZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVB
cnJheSBhbmQgLXJldHVyblVuY29ycnVwdGVkRGF0ZUluUmVjZW50U2VhcmNoLgorICAgICAgICAo
V2ViQ29yZTo6cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIFdoZW4g
dGhlIHRpbWUgcGFzc2VkIGluIGlzIGVxdWl2YWxlbnQgdG8gW05TRGF0ZSBkaXN0YW50UGFzdF0s
IGNsZWFyIGFsbCByZWNlbnQgc2VhcmNoZXMgaW4KKyAgICAgICAgdGhlIFJlY2VudCBTZWFyY2hl
cyBwbGlzdC4gT3RoZXJ3aXNlLCB3ZSBvbmx5IGNsZWFyIHRoZSByZWNlbnQgc2VhcmNoZXMgdGhh
dCB3ZXJlIGNyZWF0ZWQKKyAgICAgICAgYWZ0ZXIgb3IgYXQgdGhlIHRpbWUgdGhhdCBpcyBwYXNz
ZWQgaW4gYXMgdGhlIHBhcmFtZXRlci4gSWYgYWxsIHJlY2VudCBzZWFyY2hlcyBhc3NvY2lhdGVk
CisgICAgICAgIHdpdGggYW4gYXV0b3NhdmUgbmFtZSB3ZXJlIGNyZWF0ZWQgYWZ0ZXIgb3IgYXQg
dGhlIHRpbWUgdGhhdCBpcyBwYXNzZWQgaW4gYXMgdGhlIHBhcmFtZXRlciwKKyAgICAgICAgcmVt
b3ZlIHRoaXMgYXV0b3NhdmUgbmFtZSBrZXkgYW5kIGFsbCBvZiBpdHMgdmFsdWVzIGluIHRoZSBw
bGlzdC4gSWYgYWxsIHJlY2VudCBzZWFyY2hlcworICAgICAgICBhc3NvY2lhdGVkIHdpdGggZXZl
cnkgYXV0b3NhdmUgbmFtZSBpbiB0aGUgcGxpc3Qgd2VyZSBjcmVhdGVkIGFmdGVyIG9yIGF0IHRo
ZSB0aW1lIHRoYXQgaXMKKyAgICAgICAgcGFzc2VkIGluIGFzIHRoZSBwYXJhbWV0ZXIsIGNsZWFy
IGFsbCByZWNlbnQgc2VhcmNoZXMgaW4gdGhlIFJlY2VudCBTZWFyY2hlcyBwbGlzdC4KKworICAg
ICAgICBBbHNvLCB3ZSBjbGVhciBhbGwgcmVjZW50IHNlYXJjaGVzIGluIHRoZSBSZWNlbnQgU2Vh
cmNoZXMgcGxpc3Qgd2hlbiB3ZSBmaW5kIHRoZSBwbGlzdCBpcworICAgICAgICBjb3JydXB0ZWQu
CisKIDIwMTUtMTAtMDggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIEF1
Z21lbnQgPGlucHV0IHR5cGU9c2VhcmNoPuKAmXMgcmVjZW50IHNlYXJjaCBoaXN0b3J5IHdpdGgg
dGhlIHRpbWUgZWFjaCBlbnRyeSB3YXMgYWRkZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWJhYzBjZi4uMDhmZGY2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDY1LDYgKzQ2NSw3IEBACiAJCTBDM0YxRjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVu
aWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEMzRjFGNTgxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmgg
Ki87IH07CiAJCTBDNDUzNDI3MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
NDUzNDI1MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLzsg
fTsKIAkJMEM0NTM0MjgxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNDUzNDI2
MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi87IH07CisJCTBF
NTFEMUE0MUJDREI4MUEwMDQ3MUQyOCAvKiBTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU1MUQxQTMxQkNEQjgxQTAwNDcx
RDI4IC8qIFNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07CiAJCTBFNzA1OEVFMUJDNUJDMTkwMDQ1
QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQ
b3B1cE1lbnVDb2NvYS5tbSAqLzsgfTsKIAkJMEU3MDU4RjQxQkM1Q0VEQTAwNDVBNTA3IC8qIFNl
YXJjaFBvcHVwTWVudUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29j
b2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzQzA3MzE4ODQ2OTVFMDBBNUY4Q0Eg
LyogU3lzdGVtTWVtb3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTc2OTEsNiArNzY5Miw3IEBACiAJCTBDM0YxRjU5MTBDODg3MTIwMEQ3MkNF
MSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R0xVbmlmb3JtTG9jYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzQ1
MzQyNTEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM0NTM0MjYxMENEQkJGQTAwODY5MTU3
IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRTUxRDFBMzFCQ0RCODFBMDA0NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwM0MwNzMxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1NZW1vcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMzg0LDYgKzIyMzg2LDcgQEAKIAkJCQlCQzI0NDFDMzBF
OEI2NUQwMDA1NTMyMEYgLyogU2Nyb2xsVmlldy5jcHAgKi8sCiAJCQkJQkM2RDZFMjUwOUFGOTQz
NTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLywKIAkJCQlBQjcxNzA4ODBCMzExODA4MDAxNzEy
M0UgLyogU2VhcmNoUG9wdXBNZW51LmggKi8sCisJCQkJMEU1MUQxQTMxQkNEQjgxQTAwNDcxRDI4
IC8qIFNlYXJjaFBvcHVwTWVudS5jcHAgKi8sCiAJCQkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8sCiAJCQkJMUE0QTk1NEIw
QjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8sCiAJCQkJMUE0QTk1NEMwQjRF
RENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovLApAQCAtMjgzMjEsNiArMjgzMjQsNyBA
QAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJOb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBCaXF1YWRQcm9j
ZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8q
IEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBFNTFEMUE0MUJDREI4MUEwMDQ3
MUQyOCAvKiBTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc3QTNBOTAx
NUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyY2VjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxTZWFyY2hQb3B1cE1l
bnUuaD4KKyNpbmNsdWRlIDxTZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgU2VhcmNoUG9wdXBNZW51OjpyZW1vdmVSZWNlbnRTZWFyY2hlcyhzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgcmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhtb2Rp
ZmllZFNpbmNlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOworI2Vu
ZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBv
cHVwTWVudS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKaW5k
ZXggZjgwOTAzNC4uNDc0MGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9w
dXBNZW51LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVj
ZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4m
IHNlYXJjaEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSA9IDA7CitXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgK
aW5kZXggNGU3YzQ5ZS4uMDY4OTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRl
bXMpOwogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSk7Cit2b2lkIHJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2Vh
cmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFy
Y2hQb3B1cE1lbnVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLm1tCmluZGV4IDEyZTg3YzcuLjcxNmIzN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tCkBA
IC02Niw2ICs2Niw3NiBAQCBzdGF0aWMgTlNEYXRlICp0b05TRGF0ZUZyb21TeXN0ZW1DbG9jayhz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKICAgICByZXR1cm4gW05TRGF0ZSBkYXRlV2l0
aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpkdXJhdGlvbl9jYXN0PGR1cmF0aW9uPGRvdWJsZT4+KHRp
bWUudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpXTsKIH0KIAorc3RhdGljIE5TTXV0YWJsZUFy
cmF5ICpyZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzQXJyYXkoTlNEaWN0aW9uYXJ5ICpp
dGVtc0RpY3Rpb25hcnksIE5TU3RyaW5nICpuYW1lKQoreworICAgIE5TRGljdGlvbmFyeSAqbmFt
ZURpY3Rpb25hcnkgPSBbaXRlbXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpuYW1lXTsKKyAgICBp
ZiAoIVtuYW1lRGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TTXV0YWJsZUFycmF5ICpyZWNlbnRTZWFyY2hl
cyA9IFtuYW1lRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6c2VhcmNoZXNLZXldOworICAgIGlmICgh
W3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIHJldHVybiByZWNlbnRTZWFyY2hlczsKK30KKworc3RhdGljIE5T
RGF0ZSAqcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2goTlNEaWN0aW9uYXJ5ICpy
ZWNlbnRTZWFyY2gpCit7CisgICAgaWYgKCFbcmVjZW50U2VhcmNoIGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNEYXRlICpk
YXRlID0gW3JlY2VudFNlYXJjaCBvYmplY3RGb3JLZXk6ZGF0ZUtleV07CisgICAgaWYgKCFbZGF0
ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIHJldHVybiBkYXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmV0
dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc1BsaXN0KE5TRGF0ZSAqZGF0ZU1vZGlmaWVkKQor
eworICAgIGlmIChbZGF0ZU1vZGlmaWVkIGlzRXF1YWxUb0RhdGU6W05TRGF0ZSBkaXN0YW50UGFz
dF1dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
c1BsaXN0KCk7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqaXRlbXNEaWN0aW9uYXJ5ID0gW3Jl
Y2VudFNlYXJjaGVzUGxpc3Qgb2JqZWN0Rm9yS2V5Oml0ZW1zS2V5XTsKKyAgICBpZiAoIVtpdGVt
c0RpY3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGtleXNUb1JlbW92
ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoTlNT
dHJpbmcgKmtleSBpbiBpdGVtc0RpY3Rpb25hcnkuYWxsS2V5cykgeworICAgICAgICBpZiAoIVtr
ZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gcmV0dXJuVW5j
b3JydXB0ZWRSZWNlbnRTZWFyY2hlc0FycmF5KGl0ZW1zRGljdGlvbmFyeSwga2V5KTsKKyAgICAg
ICAgaWYgKCFyZWNlbnRTZWFyY2hlcykKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBlbnRyaWVzVG9SZW1vdmUgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkg
KnJlY2VudFNlYXJjaCBpbiByZWNlbnRTZWFyY2hlcykgeworICAgICAgICAgICAgTlNEYXRlICpk
YXRlID0gcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2gocmVjZW50U2VhcmNoKTsK
KyAgICAgICAgICAgIGlmICghZGF0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgICAgICAgICBpZiAoW2RhdGUgY29tcGFyZTpkYXRlTW9kaWZpZWRdID09IE5TT3JkZXJlZERl
c2NlbmRpbmcpCisgICAgICAgICAgICAgICAgW2VudHJpZXNUb1JlbW92ZSBhZGRPYmplY3Q6cmVj
ZW50U2VhcmNoXTsKKyAgICAgICAgfQorCisgICAgICAgIFtyZWNlbnRTZWFyY2hlcyByZW1vdmVP
YmplY3RzSW5BcnJheTplbnRyaWVzVG9SZW1vdmUuZ2V0KCldOworICAgICAgICBpZiAoIXJlY2Vu
dFNlYXJjaGVzLmNvdW50KQorICAgICAgICAgICAgW2tleXNUb1JlbW92ZSBhZGRPYmplY3Q6a2V5
XTsKKyAgICB9CisKKyAgICBbaXRlbXNEaWN0aW9uYXJ5IHJlbW92ZU9iamVjdHNGb3JLZXlzOmtl
eXNUb1JlbW92ZS5nZXQoKV07CisgICAgcmV0dXJuIHJlY2VudFNlYXJjaGVzUGxpc3Q7Cit9CisK
K3N0YXRpYyB2b2lkIGNsZWFuUmVjZW50U2VhcmNoZXNQbGlzdCgpCit7CisgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gZW1wdHlJdGVtc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZW1wdHlSZWNl
bnRTZWFyY2hlc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aE9iamVjdHNBbmRLZXlzOmVtcHR5SXRlbXNEaWN0aW9uYXJ5LmdldCgpLCBpdGVtc0tleSwg
bmlsXSk7CisgICAgW2VtcHR5UmVjZW50U2VhcmNoZXNEaWN0aW9uYXJ5IHdyaXRlVG9GaWxlOnNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5Ok5PXTsKK30KKwog
dm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8
UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQpA
QCAtMTA4LDMwICsxNzgsMzMgQEAgVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2VudFNlYXJj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAoIVtpdGVtcyBpc0tpbmRPZkNsYXNzOltO
U0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwogCi0gICAg
TlNEaWN0aW9uYXJ5ICpuYW1lSXRlbXMgPSBbaXRlbXMgb2JqZWN0Rm9yS2V5Om5hbWVdOwotICAg
IGlmICghW25hbWVJdGVtcyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwotCi0gICAgTlNBcnJheSAqcmVjZW50U2VhcmNoZXMg
PSBbbmFtZUl0ZW1zIG9iamVjdEZvcktleTpzZWFyY2hlc0tleV07Ci0gICAgaWYgKCFbcmVjZW50
U2VhcmNoZXMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgIE5TQXJyYXkgKnJl
Y2VudFNlYXJjaGVzID0gcmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc0FycmF5KGl0ZW1z
LCBuYW1lKTsKKyAgICBpZiAoIXJlY2VudFNlYXJjaGVzKQogICAgICAgICByZXR1cm4gc2VhcmNo
SXRlbXM7CiAgICAgCiAgICAgZm9yIChOU0RpY3Rpb25hcnkgKml0ZW0gaW4gcmVjZW50U2VhcmNo
ZXMpIHsKLSAgICAgICAgaWYgKCFbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xh
c3NdXSkKKyAgICAgICAgTlNEYXRlICpkYXRlID0gcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNl
bnRTZWFyY2goaXRlbSk7CisgICAgICAgIGlmICghZGF0ZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKKwogICAgICAgICBOU1N0cmluZyAqc2VhcmNoU3RyaW5nID0gW2l0ZW0gb2Jq
ZWN0Rm9yS2V5OnNlYXJjaFN0cmluZ0tleV07CiAgICAgICAgIGlmICghW3NlYXJjaFN0cmluZyBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIAotICAgICAgICBOU0RhdGUgKmRhdGUgPSBbaXRlbSBvYmplY3RGb3JLZXk6ZGF0ZUtl
eV07Ci0gICAgICAgIGlmICghW2RhdGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0pCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCiAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVu
ZCh7IFN0cmluZ3sgc2VhcmNoU3RyaW5nIH0sIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUpIH0pOwog
ICAgIH0KIAogICAgIHJldHVybiBzZWFyY2hJdGVtczsKIH0KIAordm9pZCByZW1vdmVTZWFyY2hG
aWVsZFJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZSkKK3sKKyAgICBOU0RhdGUgKmRhdGVNb2RpZmllZCA9IHRvTlNEYXRlRnJv
bVN5c3RlbUNsb2NrKG1vZGlmaWVkU2luY2UpOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzUGxp
c3QoZGF0ZU1vZGlmaWVkKTsKKyAgICBpZiAocmVjZW50U2VhcmNoZXNQbGlzdCkKKyAgICAgICAg
W3JlY2VudFNlYXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
c1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6Tk9dOworICAgIGVsc2UKKyAgICAgICAgY2xlYW5SZWNl
bnRTZWFyY2hlc1BsaXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZTMxYTVjLi5mYmYwOTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkgIDx6YWNo
bGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRhdGEgdHlw
ZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZXMuaDogQWRkIGRhdGEgdHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAg
ICAgKGRhdGFUeXBlc1RvU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9X
ZWJzaXRlRGF0YVR5cGVzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0
YVR5cGVzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiBkYXRhIHR5cGUgaXMgU2VhcmNo
CisgICAgICAgIEZpZWxkIFJlY2VudCBTZWFyY2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyk6IENhbGwgdGhlIHJl
bW92aW5nCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBsb2dpYyBpbiBXZWJDb3JlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6IEFkZCBhIHByaXZh
dGUgZnVuY3Rpb24gZm9yIHJlbW92aW5nCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBiYXNlZCBv
biB0aW1lLgorCiAyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9y
eSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKaW5kZXggZmNhYjA2
Mi4uNGEzMzJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFUeXBlcy5oCkBAIC0zOSwxMSArMzksMTIgQEAgZW51bSBXZWJzaXRlRGF0
YVR5cGVzIHsKICAgICBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSAxIDw8IDcs
CiAgICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzID0gMSA8PCA4LAogICAgIFdlYnNpdGVEYXRh
VHlwZUhTVFNDYWNoZSA9IDEgPDwgOSwKKyAgICBXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJl
Y2VudFNlYXJjaGVzID0gMSA8PCAxMCwKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICBXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gMSA8PCAxMCwKKyAgICBXZWJzaXRlRGF0
YVR5cGVQbHVnSW5EYXRhID0gMSA8PCAxMSwKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMSwK
KyAgICBXZWJzaXRlRGF0YVR5cGVNZWRpYURldmljZUlkZW50aWZpZXIgPSAxIDw8IDEyLAogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggM2ViOGI3MS4uNmRhZjBiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZC5tbQpAQCAtNDEsNiArNDEsNyBAQCBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0
ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZQog
CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyA9IEAiX1dLV2Vi
c2l0ZURhdGFUeXBlTWVkaWFLZXlzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlSFNUU0NhY2hlID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUiOworTlNTdHJpbmcg
KiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzID0gQCJf
V0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzIjsKIAogI2lmIFBMQVRG
T1JNKE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9
IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7CkBAIC03OSw2ICs4MCw4IEBAIHN0YXRp
YyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQgKmRhdGFUeXBlcykKICAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpAIkhTVFMgQ2FjaGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250
YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQogICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAiTWVkaWEgS2V5cyJdOworICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2Jq
ZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNdKQorICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OkAiU2VhcmNoIEZpZWxkIFJlY2VudCBTZWFyY2hlcyJdOwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJz
aXRlRGF0YVR5cGVQbHVnSW5EYXRhXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlBsdWct
aW4gRGF0YSJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKaW5kZXggMjM0ODYzNC4u
YWJlOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC02NCw2ICs2NCw4
IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGVzIHRvV2Vic2l0ZURhdGFU
eXBlcyhOU1NldCAqd2tXZWJzaXRlRGF0YVR5CiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0g
V2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlOwogICAgIGlmIChbd2tX
ZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5
c10pCiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0
ZURhdGFUeXBlTWVkaWFLZXlzOworICAgIGlmIChbd2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNdKQorICAg
ICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlw
ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXM7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAgICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0
ZURhdGFUeXBlUGx1Z0luRGF0YV0pCiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0
ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YTsKQEAgLTk3LDYgKzk5LDggQEAg
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaXRlRGF0YVR5cGVzKGludCB3
ZWJzaXRlRGF0YVR5cGVzKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpf
V0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGVdOwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYg
V2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzKQogICAgICAgICBbd2tX
ZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdOwor
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFU
eXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcykKKyAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBl
cyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc107
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhKQogICAgICAg
ICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5E
YXRhXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAppbmRleCBjZmM1YmMyLi44NDdjNTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIFdL
X0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSBXS19B
VkFJTEFCTEUoMTBfMTEsIDlfMCk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJz
aXRlRGF0YVR5cGVNZWRpYUtleXMgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOworV0tfRVhURVJO
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlcyBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKICNpZiAhVEFSR0VU
X09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBl
UGx1Z0luRGF0YSBXS19BVkFJTEFCTEUoMTBfMTEsIE5BKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCA5MmVkNjFlLi40NDU1ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2Nr
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNjMy
LDYgKzYzMywxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURh
dGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZQogICAgICAgICB9KTsKICAgICB9
CiAKKyAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlcyAmJiBpc1BlcnNpc3RlbnQoKSkgeworICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PmFkZFBlbmRpbmdDYWxsYmFjaygpOworCisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttb2Rp
ZmllZFNpbmNlLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIHJlbW92ZVNlYXJj
aEZpZWxkUmVjZW50U2VhcmNoZXMobW9kaWZpZWRTaW5jZSk7CisKKyAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSAmJiBp
c1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjbGFzcyBTdGF0ZSB7CkBAIC0xMDY3LDQgKzEwODAs
OSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcm
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIFdlYkNvcmU6OlNlYXJj
aFBvcHVwTWVudTo6cmVtb3ZlUmVjZW50U2VhcmNoZXMobW9kaWZpZWRTaW5jZSk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IDM2YjYwYzcuLjRjNDAzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAt
MTAzLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+PiBtZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaW5nJiBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVNZWRpYUtleXMoY29u
c3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92
ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIGNvbnN0
IEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKKyAgICBzdGF0aWMg
dm9pZCByZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CiAKICAgICBjb25zdCB1aW50NjRfdCBt
X2lkZW50aWZpZXI7CiAgICAgY29uc3QgV2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwot
LSAKMi40LjcgKEFwcGxlIEdpdC01OSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263036</attachid>
            <date>2015-10-13 16:24:02 -0700</date>
            <delta_ts>2015-10-15 11:34:25 -0700</delta_ts>
            <desc>Revised Patch</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>23740</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSAyMzMwZmI2NzBlYTJiNWJkMmUwOGU1OWFhNGJiODdkYTk0ZmE1NWE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUdWUs
IDEzIE9jdCAyMDE1IDE1OjQxOjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAzNSArKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qICAgfCAgNCArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQ
b3B1cE1lbnUuY3BwICAgICAgICB8IDQyICsrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NlYXJjaFBvcHVwTWVudS5oICAgICAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAgfCAgMSArCiAuLi4vV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSB8IDk3ICsrKysrKysrKysrKysrKysr
KystLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMjIgKysrKysKIC4uLi9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGVzLmggIHwgIDUgKy0KIC4uLi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmQubW0gICAgIHwgIDMgKwogLi4uL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaCAgICAgICAgfCAgNCArCiAuLi4vQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmggICAgICAgICB8ICAxICsKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAgICAgIHwgMTggKysrKwogLi4uL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggICAgICAgfCAgMSArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyMjAgaW5zZXJ0
aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NWNmM2FhLi5h
NmRiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkg
IDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRh
dGEgdHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgU2VhcmNoUG9wdXBNZW51LmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9T
ZWFyY2hQb3B1cE1lbnUuaDogRGVjbGFyZSAtcmVtb3ZlUmVjZW50U2VhcmNoZXMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcDogV2Ugb25seSBwZXJmb3Jt
IHJlbW92aW5nIHJlY2VudCBzZWFyY2hlcyBhY3Rpb24gd2hlbiB0aGUgcGxhdGZvcm0KKyAgICAg
ICAgaXMgY29jb2EgZm9yIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5oOiBBZGQgYSBmdW5jdGlvbiB0byByZW1vdmUgcmVjZW50IHNlYXJjaGVzIGJh
c2VkIG9uCisgICAgICAgIHRpbWUuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9w
dXBNZW51Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5VbmNvcnJ1cHRlZFJlY2Vu
dFNlYXJjaGVzQXJyYXkpOiBSZXR1cm4gbmlsIGlmIHRoZSByZWNlbnQgc2VhcmNoZXMgYXJyYXkg
aXMKKyAgICAgICAgY29ycnVwdGVkLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBhcnJheS4KKyAgICAg
ICAgKFdlYkNvcmU6OnJldHVyblVuY29ycnVwdGVkRGF0ZUluUmVjZW50U2VhcmNoKTogUmV0dXJu
IG5pbCBpZiB0aGUgZGF0ZSBpbiByZWNlbnQgc2VhcmNoIGlzCisgICAgICAgIGNvcnJ1cHRlZCwg
b3RoZXJ3aXNlIHJldHVybiB0aGUgZGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OnJldHVyblVuY29y
cnVwdGVkUmVjZW50U2VhcmNoZXNQbGlzdCk6IFJldHVybiBuaWwgaWYgdGhlIHJlY2VudCBzZWFy
Y2hlcyBwbGlzdCBpcworICAgICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIHJl
Y2VudCBzZWFyY2hlcyBwbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFuUmVjZW50U2VhcmNo
ZXNQbGlzdCk6IFJlcGxhY2UgdGhlIGV4aXN0aW5nIHJlY2VudCBzZWFyY2hlcyBwbGlzdCBpZiB0
aGVyZSBpcworICAgICAgICBhbnkgd2l0aCBhIGNsZWFuIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRSZWNlbnRTZWFyY2hlcyk6IFVzZSAtcmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hl
QXJyYXkgYW5kIC1yZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJlY2VudFNlYXJjaC4KKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICBXaGVu
IHRoZSB0aW1lIHBhc3NlZCBpbiBpcyBlcXVpdmFsZW50IHRvIFtOU0RhdGUgZGlzdGFudFBhc3Rd
LCBjbGVhciBhbGwgcmVjZW50IHNlYXJjaGVzIGluCisgICAgICAgIHRoZSBSZWNlbnQgU2VhcmNo
ZXMgcGxpc3QuIE90aGVyd2lzZSwgd2Ugb25seSBjbGVhciB0aGUgcmVjZW50IHNlYXJjaGVzIHRo
YXQgd2VyZSBjcmVhdGVkCisgICAgICAgIGFmdGVyIG9yIGF0IHRoZSB0aW1lIHRoYXQgaXMgcGFz
c2VkIGluIGFzIHRoZSBwYXJhbWV0ZXIuIElmIGFsbCByZWNlbnQgc2VhcmNoZXMgYXNzb2NpYXRl
ZAorICAgICAgICB3aXRoIGFuIGF1dG9zYXZlIG5hbWUgd2VyZSBjcmVhdGVkIGFmdGVyIG9yIGF0
IHRoZSB0aW1lIHRoYXQgaXMgcGFzc2VkIGluIGFzIHRoZSBwYXJhbWV0ZXIsCisgICAgICAgIHJl
bW92ZSB0aGlzIGF1dG9zYXZlIG5hbWUga2V5IGFuZCBhbGwgb2YgaXRzIHZhbHVlcyBpbiB0aGUg
cGxpc3QuIElmIGFsbCByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGV2
ZXJ5IGF1dG9zYXZlIG5hbWUgaW4gdGhlIHBsaXN0IHdlcmUgY3JlYXRlZCBhZnRlciBvciBhdCB0
aGUgdGltZSB0aGF0IGlzCisgICAgICAgIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLCBjbGVh
ciBhbGwgcmVjZW50IHNlYXJjaGVzIGluIHRoZSBSZWNlbnQgU2VhcmNoZXMgcGxpc3QuCisKKyAg
ICAgICAgQWxzbywgd2UgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbiB0aGUgUmVjZW50IFNl
YXJjaGVzIHBsaXN0IHdoZW4gd2UgZmluZCB0aGUgcGxpc3QgaXMKKyAgICAgICAgY29ycnVwdGVk
LgorCiAyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAgICAgICBB
dWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRo
IHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViYWMwY2YuLjA4ZmRmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ2NSw2ICs0NjUsNyBAQAogCQkwQzNGMUY1QjEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xV
bmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBDM0YxRjU4MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5o
ICovOyB9OwogCQkwQzQ1MzQyNzEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QzQ1MzQyNTEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi87
IH07CiAJCTBDNDUzNDI4MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzQ1MzQy
NjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovOyB9OworCQkw
RTUxRDFBNDFCQ0RCODFBMDA0NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFNTFEMUEzMUJDREI4MUEwMDQ3
MUQyOCAvKiBTZWFyY2hQb3B1cE1lbnUuY3BwICovOyB9OwogCQkwRTcwNThFRTFCQzVCQzE5MDA0
NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRTcwNThFRDFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNo
UG9wdXBNZW51Q29jb2EubW0gKi87IH07CiAJCTBFNzA1OEY0MUJDNUNFREEwMDQ1QTUwNyAvKiBT
ZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwM0MwNzQxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwM0MwNzMxODg0Njk1RTAwQTVGOENB
IC8qIFN5c3RlbU1lbW9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC03NjkxLDYgKzc2OTIsNyBAQAogCQkwQzNGMUY1OTEwQzg4NzEyMDBENzJD
RTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM0
NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNDUzNDI2MTBDREJCRkEwMDg2OTE1
NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEU1MUQxQTMxQkNEQjgxQTAwNDcxRDI4IC8qIFNlYXJjaFBvcHVwTWVudS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRTcwNThFRDFCQzVCQzE5MDA0NUE1MDcgLyog
U2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMDNDMDczMTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtTWVtb3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjM4NCw2ICsyMjM4Niw3IEBACiAJCQkJQkMyNDQxQzMw
RThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0
MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcx
MjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICovLAorCQkJCTBFNTFEMUEzMUJDREI4MUEwMDQ3MUQy
OCAvKiBTZWFyY2hQb3B1cE1lbnUuY3BwICovLAogCQkJCTA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2
MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovLAogCQkJCTFBNEE5NTRC
MEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwICovLAogCQkJCTFBNEE5NTRDMEI0
RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLywKQEAgLTI4MzIxLDYgKzI4MzI0LDcg
QEAKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyNjEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkUHJv
Y2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OTk0MzI5MEI0MjMzODgwMEQ3QzgwMiAv
KiBCaXRtYXBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRTUxRDFBNDFCQ0RCODFBMDA0
NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3N0EzQTkw
MTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMjY5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBN
ZW51LmgiCisKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgU2VhcmNoUG9wdXBNZW51OjpyZW1vdmVSZWNlbnRTZWFyY2hlcyhz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyht
b2RpZmllZFNpbmNlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwor
I2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJj
aFBvcHVwTWVudS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgK
aW5kZXggZjgwOTAzNC4uNDc0MGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNo
UG9wdXBNZW51LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8
UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJl
Y2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJj
aD4mIHNlYXJjaEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSA9IDA7CitX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29h
LmgKaW5kZXggNGU3YzQ5ZS4uMDY4OTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCkBAIC0zMiw2ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCBzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNo
SXRlbXMpOwogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSk7Cit2b2lkIHJlbW92ZVNlYXJjaEZpZWxkUmVjZW50
U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nl
YXJjaFBvcHVwTWVudUNvY29hLm1tCmluZGV4IDEyZTg3YzcuLjcxNmIzN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1t
CkBAIC02Niw2ICs2Niw3NiBAQCBzdGF0aWMgTlNEYXRlICp0b05TRGF0ZUZyb21TeXN0ZW1DbG9j
ayhzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKICAgICByZXR1cm4gW05TRGF0ZSBkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpkdXJhdGlvbl9jYXN0PGR1cmF0aW9uPGRvdWJsZT4+
KHRpbWUudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpXTsKIH0KIAorc3RhdGljIE5TTXV0YWJs
ZUFycmF5ICpyZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzQXJyYXkoTlNEaWN0aW9uYXJ5
ICppdGVtc0RpY3Rpb25hcnksIE5TU3RyaW5nICpuYW1lKQoreworICAgIE5TRGljdGlvbmFyeSAq
bmFtZURpY3Rpb25hcnkgPSBbaXRlbXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpuYW1lXTsKKyAg
ICBpZiAoIVtuYW1lRGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3Nd
XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TTXV0YWJsZUFycmF5ICpyZWNlbnRTZWFy
Y2hlcyA9IFtuYW1lRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6c2VhcmNoZXNLZXldOworICAgIGlm
ICghW3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiByZWNlbnRTZWFyY2hlczsKK30KKworc3RhdGlj
IE5TRGF0ZSAqcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2goTlNEaWN0aW9uYXJ5
ICpyZWNlbnRTZWFyY2gpCit7CisgICAgaWYgKCFbcmVjZW50U2VhcmNoIGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNEYXRl
ICpkYXRlID0gW3JlY2VudFNlYXJjaCBvYmplY3RGb3JLZXk6ZGF0ZUtleV07CisgICAgaWYgKCFb
ZGF0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIHJldHVybiBkYXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
cmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc1BsaXN0KE5TRGF0ZSAqZGF0ZU1vZGlmaWVk
KQoreworICAgIGlmIChbZGF0ZU1vZGlmaWVkIGlzRXF1YWxUb0RhdGU6W05TRGF0ZSBkaXN0YW50
UGFzdF1dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZWFkU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlc1BsaXN0KCk7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqaXRlbXNEaWN0aW9uYXJ5ID0g
W3JlY2VudFNlYXJjaGVzUGxpc3Qgb2JqZWN0Rm9yS2V5Oml0ZW1zS2V5XTsKKyAgICBpZiAoIVtp
dGVtc0RpY3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGtleXNUb1Jl
bW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGZvciAo
TlNTdHJpbmcgKmtleSBpbiBpdGVtc0RpY3Rpb25hcnkuYWxsS2V5cykgeworICAgICAgICBpZiAo
IVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gcmV0dXJu
VW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc0FycmF5KGl0ZW1zRGljdGlvbmFyeSwga2V5KTsKKyAg
ICAgICAgaWYgKCFyZWNlbnRTZWFyY2hlcykKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBlbnRyaWVzVG9SZW1vdmUgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChOU0RpY3Rpb25h
cnkgKnJlY2VudFNlYXJjaCBpbiByZWNlbnRTZWFyY2hlcykgeworICAgICAgICAgICAgTlNEYXRl
ICpkYXRlID0gcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2gocmVjZW50U2VhcmNo
KTsKKyAgICAgICAgICAgIGlmICghZGF0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgICAgICAgICBpZiAoW2RhdGUgY29tcGFyZTpkYXRlTW9kaWZpZWRdID09IE5TT3JkZXJl
ZERlc2NlbmRpbmcpCisgICAgICAgICAgICAgICAgW2VudHJpZXNUb1JlbW92ZSBhZGRPYmplY3Q6
cmVjZW50U2VhcmNoXTsKKyAgICAgICAgfQorCisgICAgICAgIFtyZWNlbnRTZWFyY2hlcyByZW1v
dmVPYmplY3RzSW5BcnJheTplbnRyaWVzVG9SZW1vdmUuZ2V0KCldOworICAgICAgICBpZiAoIXJl
Y2VudFNlYXJjaGVzLmNvdW50KQorICAgICAgICAgICAgW2tleXNUb1JlbW92ZSBhZGRPYmplY3Q6
a2V5XTsKKyAgICB9CisKKyAgICBbaXRlbXNEaWN0aW9uYXJ5IHJlbW92ZU9iamVjdHNGb3JLZXlz
OmtleXNUb1JlbW92ZS5nZXQoKV07CisgICAgcmV0dXJuIHJlY2VudFNlYXJjaGVzUGxpc3Q7Cit9
CisKK3N0YXRpYyB2b2lkIGNsZWFuUmVjZW50U2VhcmNoZXNQbGlzdCgpCit7CisgICAgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gZW1wdHlJdGVtc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZW1wdHlS
ZWNlbnRTZWFyY2hlc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOmVtcHR5SXRlbXNEaWN0aW9uYXJ5LmdldCgpLCBpdGVtc0tl
eSwgbmlsXSk7CisgICAgW2VtcHR5UmVjZW50U2VhcmNoZXNEaWN0aW9uYXJ5IHdyaXRlVG9GaWxl
OnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5Ok5PXTsKK30K
Kwogdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQpAQCAtMTA4LDMwICsxNzgsMzMgQEAgVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAoIVtpdGVtcyBpc0tpbmRPZkNsYXNz
OltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwogCi0g
ICAgTlNEaWN0aW9uYXJ5ICpuYW1lSXRlbXMgPSBbaXRlbXMgb2JqZWN0Rm9yS2V5Om5hbWVdOwot
ICAgIGlmICghW25hbWVJdGVtcyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
LSAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwotCi0gICAgTlNBcnJheSAqcmVjZW50U2VhcmNo
ZXMgPSBbbmFtZUl0ZW1zIG9iamVjdEZvcktleTpzZWFyY2hlc0tleV07Ci0gICAgaWYgKCFbcmVj
ZW50U2VhcmNoZXMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgIE5TQXJyYXkg
KnJlY2VudFNlYXJjaGVzID0gcmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc0FycmF5KGl0
ZW1zLCBuYW1lKTsKKyAgICBpZiAoIXJlY2VudFNlYXJjaGVzKQogICAgICAgICByZXR1cm4gc2Vh
cmNoSXRlbXM7CiAgICAgCiAgICAgZm9yIChOU0RpY3Rpb25hcnkgKml0ZW0gaW4gcmVjZW50U2Vh
cmNoZXMpIHsKLSAgICAgICAgaWYgKCFbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdXSkKKyAgICAgICAgTlNEYXRlICpkYXRlID0gcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5S
ZWNlbnRTZWFyY2goaXRlbSk7CisgICAgICAgIGlmICghZGF0ZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAKKwogICAgICAgICBOU1N0cmluZyAqc2VhcmNoU3RyaW5nID0gW2l0ZW0g
b2JqZWN0Rm9yS2V5OnNlYXJjaFN0cmluZ0tleV07CiAgICAgICAgIGlmICghW3NlYXJjaFN0cmlu
ZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIAotICAgICAgICBOU0RhdGUgKmRhdGUgPSBbaXRlbSBvYmplY3RGb3JLZXk6ZGF0
ZUtleV07Ci0gICAgICAgIGlmICghW2RhdGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0p
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCiAgICAgICAgIHNlYXJjaEl0ZW1zLmFw
cGVuZCh7IFN0cmluZ3sgc2VhcmNoU3RyaW5nIH0sIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUpIH0p
OwogICAgIH0KIAogICAgIHJldHVybiBzZWFyY2hJdGVtczsKIH0KIAordm9pZCByZW1vdmVTZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBOU0RhdGUgKmRhdGVNb2RpZmllZCA9IHRvTlNEYXRl
RnJvbVN5c3RlbUNsb2NrKG1vZGlmaWVkU2luY2UpOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25h
cnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVz
UGxpc3QoZGF0ZU1vZGlmaWVkKTsKKyAgICBpZiAocmVjZW50U2VhcmNoZXNQbGlzdCkKKyAgICAg
ICAgW3JlY2VudFNlYXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6Tk9dOworICAgIGVsc2UKKyAgICAgICAgY2xlYW5S
ZWNlbnRTZWFyY2hlc1BsaXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZTMxYTVjLi5mYmYw
OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRhdGEg
dHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZXMuaDogQWRkIGRhdGEgdHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAg
ICAgICAgKGRhdGFUeXBlc1RvU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJzaXRlRGF0YVR5cGVzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRl
RGF0YVR5cGVzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZURhdGEpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiBkYXRhIHR5cGUgaXMgU2Vh
cmNoCisgICAgICAgIEZpZWxkIFJlY2VudCBTZWFyY2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyk6IENhbGwgdGhl
IHJlbW92aW5nCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBsb2dpYyBpbiBXZWJDb3JlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6IEFkZCBhIHBy
aXZhdGUgZnVuY3Rpb24gZm9yIHJlbW92aW5nCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBiYXNl
ZCBvbiB0aW1lLgorCiAyMDE1LTEwLTA4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlz
dG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKaW5kZXggZmNh
YjA2Mi4uNGEzMzJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oCkBAIC0zOSwxMSArMzksMTIgQEAgZW51bSBXZWJzaXRl
RGF0YVR5cGVzIHsKICAgICBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSAxIDw8
IDcsCiAgICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzID0gMSA8PCA4LAogICAgIFdlYnNpdGVE
YXRhVHlwZUhTVFNDYWNoZSA9IDEgPDwgOSwKKyAgICBXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzID0gMSA8PCAxMCwKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICBXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gMSA8PCAxMCwKKyAgICBXZWJzaXRl
RGF0YVR5cGVQbHVnSW5EYXRhID0gMSA8PCAxMSwKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAx
MSwKKyAgICBXZWJzaXRlRGF0YVR5cGVNZWRpYURldmljZUlkZW50aWZpZXIgPSAxIDw8IDEyLAog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggM2ViOGI3MS4uNmRhZjBiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZC5tbQpAQCAtNDEsNiArNDEsNyBAQCBOU1N0cmluZyAqIGNvbnN0IFdLV2Vi
c2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUluZGV4
ZQogCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyA9IEAiX1dL
V2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURh
dGFUeXBlSFNUU0NhY2hlID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUiOworTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzID0g
QCJfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzIjsKIAogI2lmIFBM
QVRGT1JNKE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0
YSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7CkBAIC03OSw2ICs4MCw4IEBAIHN0
YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQgKmRhdGFUeXBlcykKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpAIkhTVFMgQ2FjaGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBj
b250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQogICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OkAiTWVkaWEgS2V5cyJdOworICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNdKQorICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiU2VhcmNoIEZpZWxkIFJlY2VudCBTZWFyY2hlcyJdOwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tX
ZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlBs
dWctaW4gRGF0YSJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKaW5kZXggMjM0ODYz
NC4uYWJlOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC02NCw2ICs2
NCw4IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGVzIHRvV2Vic2l0ZURh
dGFUeXBlcyhOU1NldCAqd2tXZWJzaXRlRGF0YVR5CiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlOwogICAgIGlmIChb
d2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlh
S2V5c10pCiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vi
c2l0ZURhdGFUeXBlTWVkaWFLZXlzOworICAgIGlmIChbd2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRh
aW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNdKQor
ICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRh
VHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXM7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vi
c2l0ZURhdGFUeXBlUGx1Z0luRGF0YV0pCiAgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vi
c2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YTsKQEAgLTk3LDYgKzk5LDgg
QEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaXRlRGF0YVR5cGVzKGlu
dCB3ZWJzaXRlRGF0YVR5cGVzKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVj
dDpfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGVdOwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
ICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzKQogICAgICAgICBb
d2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNd
OworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURh
dGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcykKKyAgICAgICAgW3drV2Vic2l0ZURhdGFU
eXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
c107CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhKQogICAg
ICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVQbHVn
SW5EYXRhXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAppbmRleCBjZmM1YmMyLi44NDdj
NTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
IFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSBX
S19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOworV0tfRVhU
RVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlcyBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlUGx1Z0luRGF0YSBXS19BVkFJTEFCTEUoMTBfMTEsIE5BKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCA5MmVkNjFlLi40NDU1ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5M
b2NrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAt
NjMyLDYgKzYzMywxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0
ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZQogICAgICAgICB9KTsKICAg
ICB9CiAKKyAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNl
bnRTZWFyY2hlcyAmJiBpc1BlcnNpc3RlbnQoKSkgeworICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworCisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtt
b2RpZmllZFNpbmNlLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIHJlbW92ZVNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXMobW9kaWZpZWRTaW5jZSk7CisKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSAm
JiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjbGFzcyBTdGF0ZSB7CkBAIC0xMDY3LDQgKzEw
ODAsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJp
bmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudTo6cmVtb3ZlUmVjZW50U2VhcmNoZXMobW9kaWZpZWRTaW5jZSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IDM2YjYwYzcuLjRjNDAzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMTAzLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+PiBtZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaW5nJiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVNZWRpYUtleXMo
Y29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIGNv
bnN0IEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKKyAgICBzdGF0
aWMgdm9pZCByZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CiAKICAgICBjb25zdCB1aW50NjRf
dCBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwotLSAKMi40LjcgKEFwcGxlIEdpdC01OSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263173</attachid>
            <date>2015-10-15 11:34:25 -0700</date>
            <delta_ts>2015-10-15 13:27:16 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>23639</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBlMTg2MDFhMDViYjFhZTRmMGFmNzcwZDA2NjZlOWYyOGFkOTY5ZWM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUdWUs
IDEzIE9jdCAyMDE1IDE1OjQxOjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAzNSArKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qICAgfCAgNCArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQ
b3B1cE1lbnUuY3BwICAgICAgICB8IDQyICsrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NlYXJjaFBvcHVwTWVudS5oICAgICAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAgfCAgMSArCiAuLi4vV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSB8IDk3ICsrKysrKysrKysrKysrKysr
KystLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMjIgKysrKysKIC4uLi9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGVzLmggIHwgIDUgKy0KIC4uLi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmQubW0gICAgIHwgIDMgKwogLi4uL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaCAgICAgICAgfCAgNCArCiAuLi4vQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmggICAgICAgICB8ICAxICsKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAgICAgIHwgMTggKysrKwogLi4uL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggICAgICAgfCAgMSArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyMjAgaW5zZXJ0
aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTllNDk0Li4y
M2U2ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkg
IDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRh
dGEgdHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgU2VhcmNoUG9wdXBNZW51LmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9T
ZWFyY2hQb3B1cE1lbnUuaDogRGVjbGFyZSAtcmVtb3ZlUmVjZW50U2VhcmNoZXMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcDogV2Ugb25seSBwZXJmb3Jt
IHJlbW92aW5nIHJlY2VudCBzZWFyY2hlcyBhY3Rpb24gd2hlbiB0aGUgcGxhdGZvcm0KKyAgICAg
ICAgaXMgY29jb2EgZm9yIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5oOiBBZGQgYSBmdW5jdGlvbiB0byByZW1vdmUgcmVjZW50IHNlYXJjaGVzIGJh
c2VkIG9uCisgICAgICAgIHRpbWUuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9w
dXBNZW51Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5VbmNvcnJ1cHRlZFJlY2Vu
dFNlYXJjaGVzQXJyYXkpOiBSZXR1cm4gbmlsIGlmIHRoZSByZWNlbnQgc2VhcmNoZXMgYXJyYXkg
aXMKKyAgICAgICAgY29ycnVwdGVkLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBhcnJheS4KKyAgICAg
ICAgKFdlYkNvcmU6OnJldHVyblVuY29ycnVwdGVkRGF0ZUluUmVjZW50U2VhcmNoKTogUmV0dXJu
IG5pbCBpZiB0aGUgZGF0ZSBpbiByZWNlbnQgc2VhcmNoIGlzCisgICAgICAgIGNvcnJ1cHRlZCwg
b3RoZXJ3aXNlIHJldHVybiB0aGUgZGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OnJldHVyblVuY29y
cnVwdGVkUmVjZW50U2VhcmNoZXNQbGlzdCk6IFJldHVybiBuaWwgaWYgdGhlIHJlY2VudCBzZWFy
Y2hlcyBwbGlzdCBpcworICAgICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIHJl
Y2VudCBzZWFyY2hlcyBwbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFuUmVjZW50U2VhcmNo
ZXNQbGlzdCk6IFJlcGxhY2UgdGhlIGV4aXN0aW5nIHJlY2VudCBzZWFyY2hlcyBwbGlzdCBpZiB0
aGVyZSBpcworICAgICAgICBhbnkgd2l0aCBhIGNsZWFuIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRSZWNlbnRTZWFyY2hlcyk6IFVzZSAtcmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hl
QXJyYXkgYW5kIC1yZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJlY2VudFNlYXJjaC4KKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICBXaGVu
IHRoZSB0aW1lIHBhc3NlZCBpbiBpcyBlcXVpdmFsZW50IHRvIFtOU0RhdGUgZGlzdGFudFBhc3Rd
LCBjbGVhciBhbGwgcmVjZW50IHNlYXJjaGVzIGluCisgICAgICAgIHRoZSBSZWNlbnQgU2VhcmNo
ZXMgcGxpc3QuIE90aGVyd2lzZSwgd2Ugb25seSBjbGVhciB0aGUgcmVjZW50IHNlYXJjaGVzIHRo
YXQgd2VyZSBjcmVhdGVkCisgICAgICAgIGFmdGVyIG9yIGF0IHRoZSB0aW1lIHRoYXQgaXMgcGFz
c2VkIGluIGFzIHRoZSBwYXJhbWV0ZXIuIElmIGFsbCByZWNlbnQgc2VhcmNoZXMgYXNzb2NpYXRl
ZAorICAgICAgICB3aXRoIGFuIGF1dG9zYXZlIG5hbWUgd2VyZSBjcmVhdGVkIGFmdGVyIG9yIGF0
IHRoZSB0aW1lIHRoYXQgaXMgcGFzc2VkIGluIGFzIHRoZSBwYXJhbWV0ZXIsCisgICAgICAgIHJl
bW92ZSB0aGlzIGF1dG9zYXZlIG5hbWUga2V5IGFuZCBhbGwgb2YgaXRzIHZhbHVlcyBpbiB0aGUg
cGxpc3QuIElmIGFsbCByZWNlbnQgc2VhcmNoZXMKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGV2
ZXJ5IGF1dG9zYXZlIG5hbWUgaW4gdGhlIHBsaXN0IHdlcmUgY3JlYXRlZCBhZnRlciBvciBhdCB0
aGUgdGltZSB0aGF0IGlzCisgICAgICAgIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLCBjbGVh
ciBhbGwgcmVjZW50IHNlYXJjaGVzIGluIHRoZSBSZWNlbnQgU2VhcmNoZXMgcGxpc3QuCisKKyAg
ICAgICAgQWxzbywgd2UgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbiB0aGUgUmVjZW50IFNl
YXJjaGVzIHBsaXN0IHdoZW4gd2UgZmluZCB0aGUgcGxpc3QgaXMKKyAgICAgICAgY29ycnVwdGVk
LgorCiAyMDE1LTEwLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIFRyeSB0byBmaXggdGhlIGlPUyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMjY4NGM1Li4zMWNjOTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NjUsNiArNDY1LDcgQEAKIAkJMEMzRjFGNUIxMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQzNGMUY1ODEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCAqLzsgfTsKIAkJMEM0NTM0MjcxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3Bw
ICovOyB9OwogCQkwQzQ1MzQyODEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM0
NTM0MjYxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLzsgfTsK
KwkJMEU1MUQxQTQxQkNEQjgxQTAwNDcxRDI4IC8qIFNlYXJjaFBvcHVwTWVudS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRTUxRDFBMzFCQ0RCODFB
MDA0NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNwcCAqLzsgfTsKIAkJMEU3MDU4RUUxQkM1QkMx
OTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNl
YXJjaFBvcHVwTWVudUNvY29hLm1tICovOyB9OwogCQkwRTcwNThGNDFCQzVDRURBMDA0NUE1MDcg
LyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBFNzA1OEYzMUJDNUNDRDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1l
bnVDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMDNDMDc0MTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDNDMDczMTg4NDY5NUUwMEE1
RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzY5Miw2ICs3NjkzLDcgQEAKIAkJMEMzRjFGNTkxMEM4ODcxMjAw
RDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBDNDUzNDI1MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzQ1MzQyNjEwQ0RCQkZBMDA4
NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBFNTFEMUEzMUJDREI4MUEwMDQ3MUQyOCAvKiBTZWFyY2hQb3B1cE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEU3MDU4RUQxQkM1QkMxOTAwNDVBNTA3
IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2VhcmNoUG9wdXBNZW51Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBFNzA1OEYzMUJDNUNDRDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2Nv
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjAzQzA3MzE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbU1lbW9yeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIzODYsNiArMjIzODgsNyBAQAogCQkJCUJDMjQ0
MUMzMEU4QjY1RDAwMDU1MzIwRiAvKiBTY3JvbGxWaWV3LmNwcCAqLywKIAkJCQlCQzZENkUyNTA5
QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICovLAogCQkJCUFCNzE3MDg4MEIzMTE4MDgw
MDE3MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnUuaCAqLywKKwkJCQkwRTUxRDFBMzFCQ0RCODFBMDA0
NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNwcCAqLywKIAkJCQkwNzdBRjEzRTE4RjRBRTQwMDAw
MUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCAqLywKIAkJCQkxQTRB
OTU0QjBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKIAkJCQkxQTRBOTU0
QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi8sCkBAIC0yODMyNCw2ICsyODMy
Nyw3IEBACiAJCQkJRkRDNTRGMDQxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMjYxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVh
ZFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODk5NDMyOTBCNDIzMzg4MDBEN0M4
MDIgLyogQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU1MUQxQTQxQkNEQjgx
QTAwNDcxRDI4IC8qIFNlYXJjaFBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzdB
M0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRURFRjFGMzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTI2OTM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlYXJjaFBv
cHVwTWVudS5oIgorCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51Q29jb2EuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIFNlYXJjaFBvcHVwTWVudTo6cmVtb3ZlUmVjZW50U2VhcmNo
ZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQor
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNo
ZXMobW9kaWZpZWRTaW5jZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNl
KTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
ZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVu
dS5oCmluZGV4IDU1MWE4MWMuLjkxMzUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFJlY2VudFNlYXJjaD4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgPSAwOworV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgcmVtb3ZlUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCmluZGV4IDQzYjc5YzguLjcw
OGVjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBv
cHVwTWVudUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNo
UG9wdXBNZW51Q29jb2EuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mKTsKIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxS
ZWNlbnRTZWFyY2g+IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUpOwordm9p
ZCByZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQppbmRleCAzM2I3
MGZkLi41YzY2ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQpAQCAtNjYsNiArNjYsNzYgQEAgc3RhdGljIE5TRGF0
ZSAqdG9OU0RhdGVGcm9tU3lzdGVtQ2xvY2soc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUp
CiAgICAgcmV0dXJuIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZHVyYXRp
b25fY2FzdDxkdXJhdGlvbjxkb3VibGU+Pih0aW1lLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQo
KV07CiB9CiAKK3N0YXRpYyBOU011dGFibGVBcnJheSAqcmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRT
ZWFyY2hlc0FycmF5KE5TRGljdGlvbmFyeSAqaXRlbXNEaWN0aW9uYXJ5LCBOU1N0cmluZyAqbmFt
ZSkKK3sKKyAgICBOU0RpY3Rpb25hcnkgKm5hbWVEaWN0aW9uYXJ5ID0gW2l0ZW1zRGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6bmFtZV07CisgICAgaWYgKCFbbmFtZURpY3Rpb25hcnkgaXNLaW5kT2ZD
bGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBO
U011dGFibGVBcnJheSAqcmVjZW50U2VhcmNoZXMgPSBbbmFtZURpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5OnNlYXJjaGVzS2V5XTsKKyAgICBpZiAoIVtyZWNlbnRTZWFyY2hlcyBpc0tpbmRPZkNsYXNz
OltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gcmVj
ZW50U2VhcmNoZXM7Cit9CisKK3N0YXRpYyBOU0RhdGUgKnJldHVyblVuY29ycnVwdGVkRGF0ZUlu
UmVjZW50U2VhcmNoKE5TRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoKQoreworICAgIGlmICghW3Jl
Y2VudFNlYXJjaCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIE5TRGF0ZSAqZGF0ZSA9IFtyZWNlbnRTZWFyY2ggb2JqZWN0Rm9y
S2V5OmRhdGVLZXldOworICAgIGlmICghW2RhdGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNz
XV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gZGF0ZTsKK30KKworc3RhdGlj
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJldHVyblVuY29ycnVwdGVkUmVjZW50U2VhcmNoZXNQ
bGlzdChOU0RhdGUgKmRhdGVNb2RpZmllZCkKK3sKKyAgICBpZiAoW2RhdGVNb2RpZmllZCBpc0Vx
dWFsVG9EYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNlbnRTZWFyY2hlc1BsaXN0ID0g
cmVhZFNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpOworICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKml0ZW1zRGljdGlvbmFyeSA9IFtyZWNlbnRTZWFyY2hlc1BsaXN0IG9iamVjdEZvcktl
eTppdGVtc0tleV07CisgICAgaWYgKCFbaXRlbXNEaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBrZXlzVG9SZW1vdmUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gaXRlbXNEaWN0aW9uYXJ5
LmFsbEtleXMpIHsKKyAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pCisgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIE5TTXV0YWJsZUFycmF5
ICpyZWNlbnRTZWFyY2hlcyA9IHJldHVyblVuY29ycnVwdGVkUmVjZW50U2VhcmNoZXNBcnJheShp
dGVtc0RpY3Rpb25hcnksIGtleSk7CisgICAgICAgIGlmICghcmVjZW50U2VhcmNoZXMpCisgICAg
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
ZW50cmllc1RvUmVtb3ZlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CisgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpyZWNlbnRTZWFyY2ggaW4gcmVjZW50U2VhcmNo
ZXMpIHsKKyAgICAgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IHJldHVyblVuY29ycnVwdGVkRGF0ZUlu
UmVjZW50U2VhcmNoKHJlY2VudFNlYXJjaCk7CisgICAgICAgICAgICBpZiAoIWRhdGUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAgICAgaWYgKFtkYXRlIGNvbXBhcmU6
ZGF0ZU1vZGlmaWVkXSA9PSBOU09yZGVyZWREZXNjZW5kaW5nKQorICAgICAgICAgICAgICAgIFtl
bnRyaWVzVG9SZW1vdmUgYWRkT2JqZWN0OnJlY2VudFNlYXJjaF07CisgICAgICAgIH0KKworICAg
ICAgICBbcmVjZW50U2VhcmNoZXMgcmVtb3ZlT2JqZWN0c0luQXJyYXk6ZW50cmllc1RvUmVtb3Zl
LmdldCgpXTsKKyAgICAgICAgaWYgKCFyZWNlbnRTZWFyY2hlcy5jb3VudCkKKyAgICAgICAgICAg
IFtrZXlzVG9SZW1vdmUgYWRkT2JqZWN0OmtleV07CisgICAgfQorCisgICAgW2l0ZW1zRGljdGlv
bmFyeSByZW1vdmVPYmplY3RzRm9yS2V5czprZXlzVG9SZW1vdmUuZ2V0KCldOworICAgIHJldHVy
biByZWNlbnRTZWFyY2hlc1BsaXN0OworfQorCitzdGF0aWMgdm9pZCBjbGVhblJlY2VudFNlYXJj
aGVzUGxpc3QoKQoreworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGVtcHR5SXRlbXNEaWN0
aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+IGVtcHR5UmVjZW50U2VhcmNoZXNEaWN0aW9uYXJ5ID0gYWRvcHRO
UyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czplbXB0eUl0ZW1z
RGljdGlvbmFyeS5nZXQoKSwgaXRlbXNLZXksIG5pbF0pOworICAgIFtlbXB0eVJlY2VudFNlYXJj
aGVzRGljdGlvbmFyeSB3cml0ZVRvRmlsZTpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQ
YXRoKCkgYXRvbWljYWxseTpOT107Cit9CisKIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQog
ewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKQEAgLTEwOCwzMCArMTc4LDMzIEBAIFZlY3RvcjxS
ZWNlbnRTZWFyY2g+IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
aWYgKCFbaXRlbXMgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBzZWFyY2hJdGVtczsKIAotICAgIE5TRGljdGlvbmFyeSAqbmFtZUl0ZW1zID0gW2l0
ZW1zIG9iamVjdEZvcktleTpuYW1lXTsKLSAgICBpZiAoIVtuYW1lSXRlbXMgaXNLaW5kT2ZDbGFz
czpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBzZWFyY2hJdGVtczsKLQot
ICAgIE5TQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW25hbWVJdGVtcyBvYmplY3RGb3JLZXk6c2Vh
cmNoZXNLZXldOwotICAgIGlmICghW3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05TQXJy
YXkgY2xhc3NdXSkKKyAgICBOU0FycmF5ICpyZWNlbnRTZWFyY2hlcyA9IHJldHVyblVuY29ycnVw
dGVkUmVjZW50U2VhcmNoZXNBcnJheShpdGVtcywgbmFtZSk7CisgICAgaWYgKCFyZWNlbnRTZWFy
Y2hlcykKICAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwogICAgIAogICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICppdGVtIGluIHJlY2VudFNlYXJjaGVzKSB7Ci0gICAgICAgIGlmICghW2l0ZW0gaXNL
aW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIE5TRGF0ZSAqZGF0ZSA9
IHJldHVyblVuY29ycnVwdGVkRGF0ZUluUmVjZW50U2VhcmNoKGl0ZW0pOworICAgICAgICBpZiAo
IWRhdGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgTlNTdHJp
bmcgKnNlYXJjaFN0cmluZyA9IFtpdGVtIG9iamVjdEZvcktleTpzZWFyY2hTdHJpbmdLZXldOwog
ICAgICAgICBpZiAoIVtzZWFyY2hTdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgTlNEYXRlICpkYXRl
ID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OmRhdGVLZXldOwotICAgICAgICBpZiAoIVtkYXRlIGlzS2lu
ZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAogICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoeyBTdHJpbmd7IHNlYXJjaFN0cmluZyB9LCB0
b1N5c3RlbUNsb2NrVGltZShkYXRlKSB9KTsKICAgICB9CiAKICAgICByZXR1cm4gc2VhcmNoSXRl
bXM7CiB9CiAKK3ZvaWQgcmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgTlNEYXRl
ICpkYXRlTW9kaWZpZWQgPSB0b05TRGF0ZUZyb21TeXN0ZW1DbG9jayhtb2RpZmllZFNpbmNlKTsK
KyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZWNlbnRTZWFyY2hlc1BsaXN0ID0gcmV0dXJu
VW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc1BsaXN0KGRhdGVNb2RpZmllZCk7CisgICAgaWYgKHJl
Y2VudFNlYXJjaGVzUGxpc3QpCisgICAgICAgIFtyZWNlbnRTZWFyY2hlc1BsaXN0IHdyaXRlVG9G
aWxlOnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5Ok5PXTsK
KyAgICBlbHNlCisgICAgICAgIGNsZWFuUmVjZW50U2VhcmNoZXNQbGlzdCgpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZmE4OTNkMC4uZmUxMzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTEwLTExICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V2ViS2l0IEFQSSB0byBjbGVhciBkYXRhIHR5cGUgU2VhcmNoIEZpZWxkIFJlY2VudCBTZWFyY2hl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAx
OS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmg6IEFkZCBkYXRhIHR5cGUgU2VhcmNo
IEZpZWxkIFJlY2VudCBTZWFyY2hlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVy
bmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSGFuZGxlIHRoZSBj
YXNlIHdoZW4gZGF0YSB0eXBlIGlzIFNlYXJjaAorICAgICAgICBGaWVsZCBSZWNlbnQgU2VhcmNo
ZXMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZVNlYXJjaEZpZWxk
UmVjZW50U2VhcmNoZXMpOiBDYWxsIHRoZSByZW1vdmluZworICAgICAgICByZWNlbnQgc2VhcmNo
ZXMgbG9naWMgaW4gV2ViQ29yZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oOiBBZGQgYSBwcml2YXRlIGZ1bmN0aW9uIGZvciByZW1vdmluZworICAg
ICAgICByZWNlbnQgc2VhcmNoZXMgYmFzZWQgb24gdGltZS4KKwogMjAxNS0xMC0xNSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVGVz
dCBXZWJLaXQyLlJlc3RvcmVTZXNzaW9uU3RhdGVDb250YWluaW5nRm9ybURhdGEgZmFpbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBl
cy5oCmluZGV4IGZjYWIwNjIuLjRhMzMyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaApAQCAtMzksMTEgKzM5LDEyIEBA
IGVudW0gV2Vic2l0ZURhdGFUeXBlcyB7CiAgICAgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzID0gMSA8PCA3LAogICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyA9IDEgPDwgOCwK
ICAgICBXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUgPSAxIDw8IDksCisgICAgV2Vic2l0ZURhdGFU
eXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyA9IDEgPDwgMTAsCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi0gICAgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IDEgPDwgMTAs
CisgICAgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IDEgPDwgMTEsCiAjZW5kaWYKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlhRGV2aWNlSWRlbnRp
ZmllciA9IDEgPDwgMTEsCisgICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFEZXZpY2VJZGVudGlmaWVy
ID0gMSA8PCAxMiwKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCmluZGV4IDNlYjhiNzEu
LjZkYWYwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTQxLDYgKzQxLDcgQEAgTlNTdHJpbmcg
KiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IEAiV0tXZWJzaXRl
RGF0YVR5cGVJbmRleGUKIAogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRp
YUtleXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0
IF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0Nh
Y2hlIjsKK05TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNl
bnRTZWFyY2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
cyI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRh
VHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEiOwpAQCAtNzks
NiArODAsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0ICpkYXRh
VHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJIU1RTIENhY2hlIl07CiAgICAgaWYg
KFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzXSkK
ICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIk1lZGlhIEtleXMiXTsKKyAgICBpZiAoW2RhdGFU
eXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNl
YXJjaGVzXSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlNlYXJjaCBGaWVsZCBSZWNlbnQg
U2VhcmNoZXMiXTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFp
bnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YV0pCiAgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6QCJQbHVnLWluIERhdGEiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5o
CmluZGV4IDIzNDg2MzQuLmFiZThiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aApAQCAtNjQsNiArNjQsOCBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
cyB0b1dlYnNpdGVEYXRhVHlwZXMoTlNTZXQgKndrV2Vic2l0ZURhdGFUeQogICAgICAgICB3ZWJz
aXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZUhTVFNDYWNo
ZTsKICAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRl
RGF0YVR5cGVNZWRpYUtleXNdKQogICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVE
YXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5czsKKyAgICBpZiAoW3drV2Vic2l0ZURh
dGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzXSkKKyAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVz
OjpXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzOwogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChbd2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGFdKQogICAgICAgICB3ZWJzaXRlRGF0
YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGE7CkBA
IC05Nyw2ICs5OSw4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2l0
ZURhdGFUeXBlcyhpbnQgd2Vic2l0ZURhdGFUeXBlcykKICAgICAgICAgW3drV2Vic2l0ZURhdGFU
eXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXTsKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5
cykKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlTWVkaWFLZXlzXTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlw
ZXM6OldlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMpCisgICAgICAgIFt3
a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxk
UmVjZW50U2VhcmNoZXNdOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlUGx1
Z0luRGF0YSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0
ZURhdGFUeXBlUGx1Z0luRGF0YV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKaW5kZXgg
Y2ZjNWJjMi4uODQ3YzU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaApAQCAtMjks
NiArMjksNyBAQAogCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVIU1RTQ2FjaGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogV0tfRVhURVJOIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIFdLX0FWQUlMQUJMRSgxMF8xMSwg
OV8wKTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJj
aEZpZWxkUmVjZW50U2VhcmNoZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEp
OwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgV0tfQVZBSUxBQkxFKDEwXzExLCBOQSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKaW5kZXggNDMyZWY3Ny4uZmI4MTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvT3JpZ2luTG9jay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAKQEAgLTYzMiw2ICs2MzMsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGUKICAg
ICAgICAgfSk7CiAgICAgfQogCisgICAgaWYgKGRhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZVNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXMgJiYgaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKworICAgICAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbbW9kaWZpZWRTaW5jZSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAg
ICAgICByZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKG1vZGlmaWVkU2luY2UpOworCisg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0g
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxi
YWNrKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKGRhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlw
ZVBsdWdJbkRhdGEgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2xhc3MgU3RhdGUgewpA
QCAtMTA2Nyw0ICsxMDgwLDkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtl
eXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIH0KIH0KIAor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAg
ICBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OnJlbW92ZVJlY2VudFNlYXJjaGVzKG1vZGlmaWVk
U2luY2UpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAzNmI2MGM3Li40YzQwMzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gbWVkaWFLZXlPcmlnaW5zKGNvbnN0
IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgc3RhdGljIHZvaWQgcmVt
b3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKICAgICBz
dGF0aWMgdm9pZCByZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5LCBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+
Jik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogCiAgICAg
Y29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFdlYkNvcmU6OlNlc3Npb25J
RCBtX3Nlc3Npb25JRDsKLS0gCjIuNC43IChBcHBsZSBHaXQtNTkpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263184</attachid>
            <date>2015-10-15 13:27:16 -0700</date>
            <delta_ts>2015-10-19 16:38:44 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>24645</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSAwZGE4ZjJjZmRmYmVmMTBlMWI3YTIyYzEyZTRlYzY0OGUxZWQ5MDM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUdWUs
IDEzIE9jdCAyMDE1IDE1OjQxOjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAzNSArKysrKysrKwogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2Ug
ICAgICAgICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZSAgICAgICAgICAgICAgICAgICB8ICAxICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDQgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Vh
cmNoUG9wdXBNZW51LmNwcCAgICAgICAgfCA0NCArKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCAgICAgICAgICB8ICAxICsKIC4uLi9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmggIHwgIDEgKwogLi4uL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gfCA5NyArKysrKysrKysrKysr
KysrKysrLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDIyICsrKysrCiAuLi4vV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFUeXBlcy5oICB8ICA1ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkLm1tICAgICB8ICAzICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmggICAgICAgIHwgIDQgKwogLi4uL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3Jk
UHJpdmF0ZS5oICAgICAgICAgfCAgMSArCiAuLi4vVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwICAgICB8IDE4ICsrKysKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oICAgICAgIHwgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMjI0IGlu
c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU5ZTQ5
NC4uMjNlNmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTEwLTExICBaaHVv
IExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViS2l0IEFQSSB0byBjbGVh
ciBkYXRhIHR5cGUgU2VhcmNoIEZpZWxkIFJlY2VudCBTZWFyY2hlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAxOS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkIFNlYXJjaFBvcHVwTWVudS5jcHAuCisgICAgICAgICogcGxhdGZv
cm0vU2VhcmNoUG9wdXBNZW51Lmg6IERlY2xhcmUgLXJlbW92ZVJlY2VudFNlYXJjaGVzIGZ1bmN0
aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5jcHA6IFdlIG9ubHkgcGVy
Zm9ybSByZW1vdmluZyByZWNlbnQgc2VhcmNoZXMgYWN0aW9uIHdoZW4gdGhlIHBsYXRmb3JtCisg
ICAgICAgIGlzIGNvY29hIGZvciBub3cuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNo
UG9wdXBNZW51Q29jb2EuaDogQWRkIGEgZnVuY3Rpb24gdG8gcmVtb3ZlIHJlY2VudCBzZWFyY2hl
cyBiYXNlZCBvbgorICAgICAgICB0aW1lLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmV0dXJuVW5jb3JydXB0ZWRS
ZWNlbnRTZWFyY2hlc0FycmF5KTogUmV0dXJuIG5pbCBpZiB0aGUgcmVjZW50IHNlYXJjaGVzIGFy
cmF5IGlzCisgICAgICAgIGNvcnJ1cHRlZCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgYXJyYXkuCisg
ICAgICAgIChXZWJDb3JlOjpyZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJlY2VudFNlYXJjaCk6IFJl
dHVybiBuaWwgaWYgdGhlIGRhdGUgaW4gcmVjZW50IHNlYXJjaCBpcworICAgICAgICBjb3JydXB0
ZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIGRhdGUuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5V
bmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzUGxpc3QpOiBSZXR1cm4gbmlsIGlmIHRoZSByZWNlbnQg
c2VhcmNoZXMgcGxpc3QgaXMKKyAgICAgICAgY29ycnVwdGVkLCBvdGhlcndpc2UgcmV0dXJuIHRo
ZSByZWNlbnQgc2VhcmNoZXMgcGxpc3QuCisgICAgICAgIChXZWJDb3JlOjpjbGVhblJlY2VudFNl
YXJjaGVzUGxpc3QpOiBSZXBsYWNlIHRoZSBleGlzdGluZyByZWNlbnQgc2VhcmNoZXMgcGxpc3Qg
aWYgdGhlcmUgaXMKKyAgICAgICAgYW55IHdpdGggYSBjbGVhbiBvbmUuCisgICAgICAgIChXZWJD
b3JlOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBVc2UgLXJldHVyblVuY29ycnVwdGVkUmVjZW50U2Vh
cmNoZUFycmF5IGFuZCAtcmV0dXJuVW5jb3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2guCisgICAg
ICAgIChXZWJDb3JlOjpyZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAg
V2hlbiB0aGUgdGltZSBwYXNzZWQgaW4gaXMgZXF1aXZhbGVudCB0byBbTlNEYXRlIGRpc3RhbnRQ
YXN0XSwgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbgorICAgICAgICB0aGUgUmVjZW50IFNl
YXJjaGVzIHBsaXN0LiBPdGhlcndpc2UsIHdlIG9ubHkgY2xlYXIgdGhlIHJlY2VudCBzZWFyY2hl
cyB0aGF0IHdlcmUgY3JlYXRlZAorICAgICAgICBhZnRlciBvciBhdCB0aGUgdGltZSB0aGF0IGlz
IHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLiBJZiBhbGwgcmVjZW50IHNlYXJjaGVzIGFzc29j
aWF0ZWQKKyAgICAgICAgd2l0aCBhbiBhdXRvc2F2ZSBuYW1lIHdlcmUgY3JlYXRlZCBhZnRlciBv
ciBhdCB0aGUgdGltZSB0aGF0IGlzIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLAorICAgICAg
ICByZW1vdmUgdGhpcyBhdXRvc2F2ZSBuYW1lIGtleSBhbmQgYWxsIG9mIGl0cyB2YWx1ZXMgaW4g
dGhlIHBsaXN0LiBJZiBhbGwgcmVjZW50IHNlYXJjaGVzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0
aCBldmVyeSBhdXRvc2F2ZSBuYW1lIGluIHRoZSBwbGlzdCB3ZXJlIGNyZWF0ZWQgYWZ0ZXIgb3Ig
YXQgdGhlIHRpbWUgdGhhdCBpcworICAgICAgICBwYXNzZWQgaW4gYXMgdGhlIHBhcmFtZXRlciwg
Y2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbiB0aGUgUmVjZW50IFNlYXJjaGVzIHBsaXN0Lgor
CisgICAgICAgIEFsc28sIHdlIGNsZWFyIGFsbCByZWNlbnQgc2VhcmNoZXMgaW4gdGhlIFJlY2Vu
dCBTZWFyY2hlcyBwbGlzdCB3aGVuIHdlIGZpbmQgdGhlIHBsaXN0IGlzCisgICAgICAgIGNvcnJ1
cHRlZC4KKwogMjAxNS0xMC0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDljYzExNTcuLjg2YTdmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC04OSw2ICs4OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxh
dGZvcm0vQ29udGV4dE1lbnVJdGVtTm9uZS5jcHAKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVudU5v
bmUuY3BwCisgICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcAogCiAgICAgcGxhdGZvcm0v
YXVkaW8vZWZsL0F1ZGlvQnVzRWZsLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IGU2NTM1MDUuLjZmNmRmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC03NSw2ICs3
NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9zb3VwL1N1YnJl
c291cmNlTG9hZGVyU291cC5jcHAKIAogICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKyAgICBwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwCiAKICAgICBwbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKICAgICBwbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyNjg0YzUu
LjMxY2M5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQ2NSw2ICs0NjUsNyBAQAogCQkwQzNGMUY1QjEwQzg4NzEyMDBENzJD
RTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBDM0YxRjU4MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZv
cm1Mb2NhdGlvbi5oICovOyB9OwogCQkwQzQ1MzQyNzEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJH
TFVuaWZvcm1Mb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQzQ1MzQyNTEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5jcHAgKi87IH07CiAJCTBDNDUzNDI4MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5p
Zm9ybUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5o
ICovOyB9OworCQkwRTUxRDFBNDFCQ0RCODFBMDA0NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFNTFEMUEz
MUJDREI4MUEwMDQ3MUQyOCAvKiBTZWFyY2hQb3B1cE1lbnUuY3BwICovOyB9OwogCQkwRTcwNThF
RTFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRTcwNThFRDFCQzVCQzE5MDA0NUE1
MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi87IH07CiAJCTBFNzA1OEY0MUJDNUNFREEw
MDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJj
aFBvcHVwTWVudUNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwM0MwNzQxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwM0MwNzMxODg0
Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NjkyLDYgKzc2OTMsNyBAQAogCQkwQzNGMUY1OTEw
Qzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFVuaWZv
cm1Mb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNDUzNDI2MTBD
REJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEU1MUQxQTMxQkNEQjgxQTAwNDcxRDI4IC8qIFNlYXJjaFBvcHVw
TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWFyY2hQb3B1
cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRTcwNThFRDFCQzVCQzE5
MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVw
TWVudUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVudUNvY29hLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDNDMDczMTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0
ZW1NZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtTWVtb3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjM4Niw2ICsyMjM4OCw3IEBACiAJ
CQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJD
NkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgw
QjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICovLAorCQkJCTBFNTFEMUEzMUJD
REI4MUEwMDQ3MUQyOCAvKiBTZWFyY2hQb3B1cE1lbnUuY3BwICovLAogCQkJCTA3N0FGMTNFMThG
NEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovLAog
CQkJCTFBNEE5NTRCMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwICovLAogCQkJ
CTFBNEE5NTRDMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLywKQEAgLTI4MzI0
LDYgKzI4MzI3LDcgQEAKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmls
dGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyNjEyQjAyNjc2MDBDMUEzNTkg
LyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OTk0MzI5MEI0MjMz
ODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRTUxRDFB
NDFCQ0RCODFBMDA0NzFEMjggLyogU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBv
cHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzY2YzY2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2VhcmNoUG9wdXBNZW51LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTZWFy
Y2hQb3B1cE1lbnVDb2NvYS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9p
ZCBTZWFyY2hQb3B1cE1lbnU6OnJlbW92ZVJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICByZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKG1vZGlmaWVkU2luY2UpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CisjZW5kaWYKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAppbmRleCA1NTFhODFjLi45
MTM1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1l
bnUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaApAQCAt
NDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpID0gMDsKK1dFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZVJlY2VudFNl
YXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5j
ZSk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
ZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Vh
cmNoUG9wdXBNZW51Q29jb2EuaAppbmRleCA0M2I3OWM4Li43MDhlYzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgKQEAg
LTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNl
bnRTZWFyY2g+Jik7CiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVjZW50U2VhcmNoPiBsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKK3ZvaWQgcmVtb3ZlU2VhcmNoRmllbGRS
ZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KaW5kZXggMzNiNzBmZC4uNWM2NmU0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29j
b2EubW0KQEAgLTY2LDYgKzY2LDc2IEBAIHN0YXRpYyBOU0RhdGUgKnRvTlNEYXRlRnJvbVN5c3Rl
bUNsb2NrKHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQogICAgIHJldHVybiBbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmR1cmF0aW9uX2Nhc3Q8ZHVyYXRpb248ZG91
YmxlPj4odGltZS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCldOwogfQogCitzdGF0aWMgTlNN
dXRhYmxlQXJyYXkgKnJldHVyblVuY29ycnVwdGVkUmVjZW50U2VhcmNoZXNBcnJheShOU0RpY3Rp
b25hcnkgKml0ZW1zRGljdGlvbmFyeSwgTlNTdHJpbmcgKm5hbWUpCit7CisgICAgTlNEaWN0aW9u
YXJ5ICpuYW1lRGljdGlvbmFyeSA9IFtpdGVtc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Om5hbWVd
OworICAgIGlmICghW25hbWVEaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNNdXRhYmxlQXJyYXkgKnJlY2Vu
dFNlYXJjaGVzID0gW25hbWVEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpzZWFyY2hlc0tleV07Cisg
ICAgaWYgKCFbcmVjZW50U2VhcmNoZXMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHJlY2VudFNlYXJjaGVzOworfQorCitz
dGF0aWMgTlNEYXRlICpyZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJlY2VudFNlYXJjaChOU0RpY3Rp
b25hcnkgKnJlY2VudFNlYXJjaCkKK3sKKyAgICBpZiAoIVtyZWNlbnRTZWFyY2ggaXNLaW5kT2ZD
bGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBO
U0RhdGUgKmRhdGUgPSBbcmVjZW50U2VhcmNoIG9iamVjdEZvcktleTpkYXRlS2V5XTsKKyAgICBp
ZiAoIVtkYXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgcmV0dXJuIGRhdGU7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9u
YXJ5PiByZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzUGxpc3QoTlNEYXRlICpkYXRlTW9k
aWZpZWQpCit7CisgICAgaWYgKFtkYXRlTW9kaWZpZWQgaXNFcXVhbFRvRGF0ZTpbTlNEYXRlIGRp
c3RhbnRQYXN0XV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gcmVjZW50U2VhcmNoZXNQbGlzdCA9IHJlYWRTZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzUGxpc3QoKTsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICppdGVtc0RpY3Rpb25h
cnkgPSBbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6aXRlbXNLZXldOworICAgIGlm
ICghW2l0ZW1zRGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4ga2V5
c1RvUmVtb3ZlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAg
Zm9yIChOU1N0cmluZyAqa2V5IGluIGl0ZW1zRGljdGlvbmFyeS5hbGxLZXlzKSB7CisgICAgICAg
IGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgICAgICBOU011dGFibGVBcnJheSAqcmVjZW50U2VhcmNoZXMgPSBy
ZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzQXJyYXkoaXRlbXNEaWN0aW9uYXJ5LCBrZXkp
OworICAgICAgICBpZiAoIXJlY2VudFNlYXJjaGVzKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGVudHJpZXNUb1JlbW92ZSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3IgKE5TRGlj
dGlvbmFyeSAqcmVjZW50U2VhcmNoIGluIHJlY2VudFNlYXJjaGVzKSB7CisgICAgICAgICAgICBO
U0RhdGUgKmRhdGUgPSByZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJlY2VudFNlYXJjaChyZWNlbnRT
ZWFyY2gpOworICAgICAgICAgICAgaWYgKCFkYXRlKQorICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICAgICAgICAgIGlmIChbZGF0ZSBjb21wYXJlOmRhdGVNb2RpZmllZF0gPT0gTlNP
cmRlcmVkRGVzY2VuZGluZykKKyAgICAgICAgICAgICAgICBbZW50cmllc1RvUmVtb3ZlIGFkZE9i
amVjdDpyZWNlbnRTZWFyY2hdOworICAgICAgICB9CisKKyAgICAgICAgW3JlY2VudFNlYXJjaGVz
IHJlbW92ZU9iamVjdHNJbkFycmF5OmVudHJpZXNUb1JlbW92ZS5nZXQoKV07CisgICAgICAgIGlm
ICghcmVjZW50U2VhcmNoZXMuY291bnQpCisgICAgICAgICAgICBba2V5c1RvUmVtb3ZlIGFkZE9i
amVjdDprZXldOworICAgIH0KKworICAgIFtpdGVtc0RpY3Rpb25hcnkgcmVtb3ZlT2JqZWN0c0Zv
cktleXM6a2V5c1RvUmVtb3ZlLmdldCgpXTsKKyAgICByZXR1cm4gcmVjZW50U2VhcmNoZXNQbGlz
dDsKK30KKworc3RhdGljIHZvaWQgY2xlYW5SZWNlbnRTZWFyY2hlc1BsaXN0KCkKK3sKKyAgICBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBlbXB0eUl0ZW1zRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tO
U0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBl
bXB0eVJlY2VudFNlYXJjaGVzRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6ZW1wdHlJdGVtc0RpY3Rpb25hcnkuZ2V0KCksIGl0
ZW1zS2V5LCBuaWxdKTsKKyAgICBbZW1wdHlSZWNlbnRTZWFyY2hlc0RpY3Rpb25hcnkgd3JpdGVU
b0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6Tk9d
OworfQorCiB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCkBAIC0xMDgsMzAgKzE3OCwzMyBAQCBWZWN0b3I8UmVjZW50U2VhcmNoPiBsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGlmICghW2l0ZW1zIGlzS2luZE9m
Q2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAgICByZXR1cm4gc2VhcmNoSXRlbXM7
CiAKLSAgICBOU0RpY3Rpb25hcnkgKm5hbWVJdGVtcyA9IFtpdGVtcyBvYmplY3RGb3JLZXk6bmFt
ZV07Ci0gICAgaWYgKCFbbmFtZUl0ZW1zIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKQotICAgICAgICByZXR1cm4gc2VhcmNoSXRlbXM7Ci0KLSAgICBOU0FycmF5ICpyZWNlbnRT
ZWFyY2hlcyA9IFtuYW1lSXRlbXMgb2JqZWN0Rm9yS2V5OnNlYXJjaGVzS2V5XTsKLSAgICBpZiAo
IVtyZWNlbnRTZWFyY2hlcyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgTlNB
cnJheSAqcmVjZW50U2VhcmNoZXMgPSByZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzQXJy
YXkoaXRlbXMsIG5hbWUpOworICAgIGlmICghcmVjZW50U2VhcmNoZXMpCiAgICAgICAgIHJldHVy
biBzZWFyY2hJdGVtczsKICAgICAKICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaXRlbSBpbiByZWNl
bnRTZWFyY2hlcykgewotICAgICAgICBpZiAoIVtpdGVtIGlzS2luZE9mQ2xhc3M6W05TRGljdGlv
bmFyeSBjbGFzc11dKQorICAgICAgICBOU0RhdGUgKmRhdGUgPSByZXR1cm5VbmNvcnJ1cHRlZERh
dGVJblJlY2VudFNlYXJjaChpdGVtKTsKKyAgICAgICAgaWYgKCFkYXRlKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIE5TU3RyaW5nICpzZWFyY2hTdHJpbmcgPSBb
aXRlbSBvYmplY3RGb3JLZXk6c2VhcmNoU3RyaW5nS2V5XTsKICAgICAgICAgaWYgKCFbc2VhcmNo
U3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCi0gICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtpdGVtIG9iamVjdEZvcktl
eTpkYXRlS2V5XTsKLSAgICAgICAgaWYgKCFbZGF0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xh
c3NdXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKICAgICAgICAgc2VhcmNoSXRl
bXMuYXBwZW5kKHsgU3RyaW5neyBzZWFyY2hTdHJpbmcgfSwgdG9TeXN0ZW1DbG9ja1RpbWUoZGF0
ZSkgfSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwogfQogCit2b2lkIHJlbW92
ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIE5TRGF0ZSAqZGF0ZU1vZGlmaWVkID0gdG9O
U0RhdGVGcm9tU3lzdGVtQ2xvY2sobW9kaWZpZWRTaW5jZSk7CisgICAgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gcmVjZW50U2VhcmNoZXNQbGlzdCA9IHJldHVyblVuY29ycnVwdGVkUmVjZW50U2Vh
cmNoZXNQbGlzdChkYXRlTW9kaWZpZWQpOworICAgIGlmIChyZWNlbnRTZWFyY2hlc1BsaXN0KQor
ICAgICAgICBbcmVjZW50U2VhcmNoZXNQbGlzdCB3cml0ZVRvRmlsZTpzZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWljYWxseTpOT107CisgICAgZWxzZQorICAgICAgICBj
bGVhblJlY2VudFNlYXJjaGVzUGxpc3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZhODkzZDAu
LmZlMTM4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0xMC0xMSAgWmh1byBM
aSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdlYktpdCBBUEkgdG8gY2xlYXIg
ZGF0YSB0eXBlIFNlYXJjaCBGaWVsZCBSZWNlbnQgU2VhcmNoZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwMTkuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFUeXBlcy5oOiBBZGQgZGF0YSB0eXBlIFNlYXJjaCBGaWVsZCBSZWNlbnQgU2VhcmNo
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1t
OgorICAgICAgICAoZGF0YVR5cGVzVG9TdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2Vi
S2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9XS1dl
YnNpdGVEYXRhVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6IEhhbmRsZSB0aGUgY2FzZSB3aGVuIGRhdGEgdHlwZSBp
cyBTZWFyY2gKKyAgICAgICAgRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKTogQ2Fs
bCB0aGUgcmVtb3ZpbmcKKyAgICAgICAgcmVjZW50IHNlYXJjaGVzIGxvZ2ljIGluIFdlYkNvcmUu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDogQWRk
IGEgcHJpdmF0ZSBmdW5jdGlvbiBmb3IgcmVtb3ZpbmcKKyAgICAgICAgcmVjZW50IHNlYXJjaGVz
IGJhc2VkIG9uIHRpbWUuCisKIDIwMTUtMTAtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFRlc3QgV2ViS2l0Mi5SZXN0b3JlU2Vz
c2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaAppbmRleCBmY2FiMDYyLi40
YTMzMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVR5cGVzLmgKQEAgLTM5LDExICszOSwxMiBAQCBlbnVtIFdlYnNpdGVEYXRhVHlw
ZXMgewogICAgIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IDEgPDwgNywKICAg
ICBXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgPSAxIDw8IDgsCiAgICAgV2Vic2l0ZURhdGFUeXBl
SFNUU0NhY2hlID0gMSA8PCA5LAorICAgIFdlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50
U2VhcmNoZXMgPSAxIDw8IDEwLAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IFdlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSAxIDw8IDEwLAorICAgIFdlYnNpdGVEYXRhVHlw
ZVBsdWdJbkRhdGEgPSAxIDw8IDExLAogI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBXZWJzaXRlRGF0YVR5cGVNZWRpYURldmljZUlkZW50aWZpZXIgPSAxIDw8IDExLAorICAg
IFdlYnNpdGVEYXRhVHlwZU1lZGlhRGV2aWNlSWRlbnRpZmllciA9IDEgPDwgMTIsCiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZC5tbQppbmRleCAzZWI4YjcxLi42ZGFmMGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkLm1tCkBAIC00MSw2ICs0MSw3IEBAIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0
YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlCiAKIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzID0gQCJfV0tXZWJzaXRl
RGF0YVR5cGVNZWRpYUtleXMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVI
U1RTQ2FjaGUgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSI7CitOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMgPSBAIl9XS1dl
YnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMiOwogCiAjaWYgUExBVEZPUk0o
TUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gQCJf
V0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTc5LDYgKzgwLDggQEAgc3RhdGljIE5T
U3RyaW5nICpkYXRhVHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVzKQogICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OkAiSFNUUyBDYWNoZSJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5c10pCiAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6QCJNZWRpYSBLZXlzIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6
X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc10pCisgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6QCJTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzIl07CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZVBsdWdJbkRhdGFdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiUGx1Zy1pbiBE
YXRhIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRleCAyMzQ4NjM0Li5hYmU4
YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTY0LDYgKzY0LDggQEAg
c3RhdGljIGlubGluZSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZXMgdG9XZWJzaXRlRGF0YVR5cGVz
KE5TU2V0ICp3a1dlYnNpdGVEYXRhVHkKICAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJz
aXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGU7CiAgICAgaWYgKFt3a1dlYnNp
dGVEYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzXSkK
ICAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0
YVR5cGVNZWRpYUtleXM7CisgICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlwZXMgY29udGFpbnNPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc10pCisgICAgICAg
IHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlU2Vh
cmNoRmllbGRSZWNlbnRTZWFyY2hlczsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
ICAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVQbHVnSW5EYXRhXSkKICAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0
YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhOwpAQCAtOTcsNiArOTksOCBAQCBzdGF0
aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRhVHlwZXMoaW50IHdlYnNp
dGVEYXRhVHlwZXMpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZV07CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJz
aXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMpCiAgICAgICAgIFt3a1dlYnNp
dGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5c107CisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVT
ZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFk
ZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzXTsKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAm
IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEpCiAgICAgICAgIFt3
a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGFd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCmluZGV4IGNmYzViYzIuLjg0N2M1NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogV0tfRVhU
RVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlIFdLX0FWQUlM
QUJMRSgxMF8xMSwgOV8wKTsKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVE
YXRhVHlwZU1lZGlhS2V5cyBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CitXS19FWFRFUk4gTlNT
dHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVz
IFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAogI2lmICFUQVJHRVRfT1Nf
SVBIT05FCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVn
SW5EYXRhIFdLX0FWQUlMQUJMRSgxMF8xMSwgTkEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDQz
MmVmNzcuLmZiODE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC02MzIsNiAr
NjMzLDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5
cGVzIGRhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlCiAgICAgICAgIH0pOwogICAgIH0KIAor
ICAgIGlmIChkYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJj
aGVzICYmIGlzUGVyc2lzdGVudCgpKSB7CisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRk
UGVuZGluZ0NhbGxiYWNrKCk7CisKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVk
U2luY2UsIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgcmVtb3ZlU2VhcmNoRmll
bGRSZWNlbnRTZWFyY2hlcyhtb2RpZmllZFNpbmNlKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0KKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGlmIChkYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhICYmIGlzUGVy
c2lzdGVudCgpKSB7CiAgICAgICAgIGNsYXNzIFN0YXRlIHsKQEAgLTEwNjcsNCArMTA4MCw5IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgV2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51OjpyZW1vdmVSZWNlbnRTZWFyY2hlcyhtb2RpZmllZFNpbmNlKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggMzZiNjBjNy4uNGM0MDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMDMs
NiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4+IG1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZU1lZGlhS2V5cyhjb25zdCBT
dHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlTWVk
aWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgY29uc3QgSGFz
aFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYpOworICAgIHN0YXRpYyB2b2lk
IHJlbW92ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRl
bnRpZmllcjsKICAgICBjb25zdCBXZWJDb3JlOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0tIAoy
LjQuNyAoQXBwbGUgR2l0LTU5KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263526</attachid>
            <date>2015-10-19 16:38:44 -0700</date>
            <delta_ts>2015-10-22 21:30:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>17310</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA4MDFlMzEyNDY3OTlmNGRmNTEwMDE5MjQ1ZmEzNzY2OTE5ZGYyMTNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDE5IE9jdCAyMDE1IDE2OjI5OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAzMSArKysrKysrCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oICB8ICAxICsKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLm1tIHwgOTkgKysrKysrKysrKysrKysrKysrKy0tLQogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKwogLi4u
L1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaCAgfCAgNSArLQog
Li4uL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbSAgICAgfCAgMyAr
CiAuLi4vQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oICAgICAgICB8ICA0
ICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCAgICAgICAgIHwg
IDEgKwogLi4uL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAgICAg
fCAgNiArKwogLi4uL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCAg
ICAgfCAxMiArKysKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
ICAgICAgIHwgIDEgKwogMTEgZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlvbnMoKyksIDE1IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTllNDk0Li42ZjAwZDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRhdGEgdHlwZSBTZWFyY2ggRmllbGQg
UmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaDogQWRkIGEg
ZnVuY3Rpb24gdG8gcmVtb3ZlIHJlY2VudCBzZWFyY2hlcyBiYXNlZCBvbgorICAgICAgICB0aW1l
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6cmV0dXJuVW5jb3JydXB0ZWRSZWNlbnRTZWFyY2hlc0FycmF5KTogUmV0
dXJuIG5pbCBpZiB0aGUgcmVjZW50IHNlYXJjaGVzIGFycmF5IGlzCisgICAgICAgIGNvcnJ1cHRl
ZCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgYXJyYXkuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5V
bmNvcnJ1cHRlZERhdGVJblJlY2VudFNlYXJjaCk6IFJldHVybiBuaWwgaWYgdGhlIGRhdGUgaW4g
cmVjZW50IHNlYXJjaCBpcworICAgICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSByZXR1cm4gdGhl
IGRhdGUuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVz
UGxpc3QpOiBSZXR1cm4gbmlsIGlmIHRoZSByZWNlbnQgc2VhcmNoZXMgcGxpc3QgaXMKKyAgICAg
ICAgY29ycnVwdGVkLCBvdGhlcndpc2UgcmV0dXJuIHRoZSByZWNlbnQgc2VhcmNoZXMgcGxpc3Qu
CisgICAgICAgIChXZWJDb3JlOjpjbGVhblJlY2VudFNlYXJjaGVzUGxpc3QpOiBSZXBsYWNlIHRo
ZSBleGlzdGluZyByZWNlbnQgc2VhcmNoZXMgcGxpc3QgaWYgdGhlcmUgaXMKKyAgICAgICAgYW55
IHdpdGggYSBjbGVhbiBvbmUuCisgICAgICAgIChXZWJDb3JlOjpsb2FkUmVjZW50U2VhcmNoZXMp
OiBVc2UgLXJldHVyblVuY29ycnVwdGVkUmVjZW50U2VhcmNoZUFycmF5IGFuZCAtcmV0dXJuVW5j
b3JydXB0ZWREYXRlSW5SZWNlbnRTZWFyY2guCisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgV2hlbiB0aGUgdGltZSBwYXNzZWQgaW4g
aXMgZXF1aXZhbGVudCB0byBbTlNEYXRlIGRpc3RhbnRQYXN0XSwgY2xlYXIgYWxsIHJlY2VudCBz
ZWFyY2hlcyBpbgorICAgICAgICB0aGUgUmVjZW50IFNlYXJjaGVzIHBsaXN0LiBPdGhlcndpc2Us
IHdlIG9ubHkgY2xlYXIgdGhlIHJlY2VudCBzZWFyY2hlcyB0aGF0IHdlcmUgY3JlYXRlZAorICAg
ICAgICBhZnRlciBvciBhdCB0aGUgdGltZSB0aGF0IGlzIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1l
dGVyLiBJZiBhbGwgcmVjZW50IHNlYXJjaGVzIGFzc29jaWF0ZWQKKyAgICAgICAgd2l0aCBhbiBh
dXRvc2F2ZSBuYW1lIHdlcmUgY3JlYXRlZCBhZnRlciBvciBhdCB0aGUgdGltZSB0aGF0IGlzIHBh
c3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLAorICAgICAgICByZW1vdmUgdGhpcyBhdXRvc2F2ZSBu
YW1lIGtleSBhbmQgYWxsIG9mIGl0cyB2YWx1ZXMgaW4gdGhlIHBsaXN0LiBJZiBhbGwgcmVjZW50
IHNlYXJjaGVzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBldmVyeSBhdXRvc2F2ZSBuYW1lIGlu
IHRoZSBwbGlzdCB3ZXJlIGNyZWF0ZWQgYWZ0ZXIgb3IgYXQgdGhlIHRpbWUgdGhhdCBpcworICAg
ICAgICBwYXNzZWQgaW4gYXMgdGhlIHBhcmFtZXRlciwgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hl
cyBpbiB0aGUgUmVjZW50IFNlYXJjaGVzIHBsaXN0LgorCisgICAgICAgIEFsc28sIHdlIGNsZWFy
IGFsbCByZWNlbnQgc2VhcmNoZXMgaW4gdGhlIFJlY2VudCBTZWFyY2hlcyBwbGlzdCB3aGVuIHdl
IGZpbmQgdGhlIHBsaXN0IGlzCisgICAgICAgIGNvcnJ1cHRlZC4KKwogMjAxNS0xMC0xNSAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4
IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2VhcmNoUG9wdXBNZW51Q29jb2EuaAppbmRleCA0M2I3OWM4Li5iYTZhODQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgK
QEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxS
ZWNlbnRTZWFyY2g+Jik7CiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVjZW50U2VhcmNoPiBsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KaW5kZXggMzNiNzBm
ZC4uNTU3NDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Vh
cmNoUG9wdXBNZW51Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2VhcmNoUG9wdXBNZW51Q29jb2EubW0KQEAgLTY2LDYgKzY2LDc2IEBAIHN0YXRpYyBOU0RhdGUg
KnRvTlNEYXRlRnJvbVN5c3RlbUNsb2NrKHN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQog
ICAgIHJldHVybiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmR1cmF0aW9u
X2Nhc3Q8ZHVyYXRpb248ZG91YmxlPj4odGltZS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCld
OwogfQogCitzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKnJldHVyblVuY29ycnVwdGVkUmVjZW50U2Vh
cmNoZXNBcnJheShOU0RpY3Rpb25hcnkgKml0ZW1zRGljdGlvbmFyeSwgTlNTdHJpbmcgKm5hbWUp
Cit7CisgICAgTlNEaWN0aW9uYXJ5ICpuYW1lRGljdGlvbmFyeSA9IFtpdGVtc0RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5Om5hbWVdOworICAgIGlmICghW25hbWVEaWN0aW9uYXJ5IGlzS2luZE9mQ2xh
c3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNN
dXRhYmxlQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW25hbWVEaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpzZWFyY2hlc0tleV07CisgICAgaWYgKCFbcmVjZW50U2VhcmNoZXMgaXNLaW5kT2ZDbGFzczpb
TlNBcnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHJlY2Vu
dFNlYXJjaGVzOworfQorCitzdGF0aWMgTlNEYXRlICpyZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJl
Y2VudFNlYXJjaChOU0RpY3Rpb25hcnkgKnJlY2VudFNlYXJjaCkKK3sKKyAgICBpZiAoIVtyZWNl
bnRTZWFyY2ggaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBOU0RhdGUgKmRhdGUgPSBbcmVjZW50U2VhcmNoIG9iamVjdEZvcktl
eTpkYXRlS2V5XTsKKyAgICBpZiAoIVtkYXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11d
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIGRhdGU7Cit9CisKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzUGxp
c3QoTlNEYXRlICpkYXRlTW9kaWZpZWQpCit7CisgICAgaWYgKFtkYXRlTW9kaWZpZWQgaXNFcXVh
bFRvRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVjZW50U2VhcmNoZXNQbGlzdCA9IHJl
YWRTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3QoKTsKKyAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICppdGVtc0RpY3Rpb25hcnkgPSBbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6
aXRlbXNLZXldOworICAgIGlmICghW2l0ZW1zRGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4ga2V5c1RvUmVtb3ZlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIGl0ZW1zRGljdGlvbmFyeS5h
bGxLZXlzKSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBOU011dGFibGVBcnJheSAq
cmVjZW50U2VhcmNoZXMgPSByZXR1cm5VbmNvcnJ1cHRlZFJlY2VudFNlYXJjaGVzQXJyYXkoaXRl
bXNEaWN0aW9uYXJ5LCBrZXkpOworICAgICAgICBpZiAoIXJlY2VudFNlYXJjaGVzKQorICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGVu
dHJpZXNUb1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwor
ICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoIGluIHJlY2VudFNlYXJjaGVz
KSB7CisgICAgICAgICAgICBOU0RhdGUgKmRhdGUgPSByZXR1cm5VbmNvcnJ1cHRlZERhdGVJblJl
Y2VudFNlYXJjaChyZWNlbnRTZWFyY2gpOworICAgICAgICAgICAgaWYgKCFkYXRlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIGlmIChbZGF0ZSBjb21wYXJlOmRh
dGVNb2RpZmllZF0gPT0gTlNPcmRlcmVkRGVzY2VuZGluZykKKyAgICAgICAgICAgICAgICBbZW50
cmllc1RvUmVtb3ZlIGFkZE9iamVjdDpyZWNlbnRTZWFyY2hdOworICAgICAgICB9CisKKyAgICAg
ICAgW3JlY2VudFNlYXJjaGVzIHJlbW92ZU9iamVjdHNJbkFycmF5OmVudHJpZXNUb1JlbW92ZS5n
ZXQoKV07CisgICAgICAgIGlmICghcmVjZW50U2VhcmNoZXMuY291bnQpCisgICAgICAgICAgICBb
a2V5c1RvUmVtb3ZlIGFkZE9iamVjdDprZXldOworICAgIH0KKworICAgIFtpdGVtc0RpY3Rpb25h
cnkgcmVtb3ZlT2JqZWN0c0ZvcktleXM6a2V5c1RvUmVtb3ZlLmdldCgpXTsKKyAgICByZXR1cm4g
cmVjZW50U2VhcmNoZXNQbGlzdDsKK30KKworc3RhdGljIHZvaWQgY2xlYW5SZWNlbnRTZWFyY2hl
c1BsaXN0KCkKK3sKKyAgICBhdXRvIGVtcHR5SXRlbXNEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05T
RGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZW1wdHlSZWNlbnRTZWFyY2hlc0Rp
Y3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNB
bmRLZXlzOmVtcHR5SXRlbXNEaWN0aW9uYXJ5LmdldCgpLCBpdGVtc0tleSwgbmlsXSk7CisgICAg
W2VtcHR5UmVjZW50U2VhcmNoZXNEaWN0aW9uYXJ5IHdyaXRlVG9GaWxlOnNlYXJjaEZpZWxkUmVj
ZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBhdG9taWNhbGx5Ok5PXTsKK30KKwogdm9pZCBzYXZlUmVj
ZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNo
PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQpAQCAtOTAsNyArMTYw
LDcgQEAgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXQKICAgICAgICAgW2l0ZW1zRGljdGlvbmFyeSBz
ZXRPYmplY3Q6YWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5k
S2V5czppdGVtcy5nZXQoKSwgc2VhcmNoZXNLZXksIG5pbF0pLmdldCgpIGZvcktleTpuYW1lXTsK
ICAgICB9CiAKLSAgICBbcmVjZW50U2VhcmNoZXNQbGlzdCB3cml0ZVRvRmlsZTpzZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWljYWxseTpOT107CisgICAgW3JlY2VudFNl
YXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0
aCgpIGF0b21pY2FsbHk6WUVTXTsKIH0KIAogVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTEwOCwzMCArMTc4LDMzIEBAIFZlY3Rv
cjxSZWNlbnRTZWFyY2g+IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgaWYgKCFbaXRlbXMgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCiAgICAg
ICAgIHJldHVybiBzZWFyY2hJdGVtczsKIAotICAgIE5TRGljdGlvbmFyeSAqbmFtZUl0ZW1zID0g
W2l0ZW1zIG9iamVjdEZvcktleTpuYW1lXTsKLSAgICBpZiAoIVtuYW1lSXRlbXMgaXNLaW5kT2ZD
bGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBzZWFyY2hJdGVtczsK
LQotICAgIE5TQXJyYXkgKnJlY2VudFNlYXJjaGVzID0gW25hbWVJdGVtcyBvYmplY3RGb3JLZXk6
c2VhcmNoZXNLZXldOwotICAgIGlmICghW3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05T
QXJyYXkgY2xhc3NdXSkKKyAgICBOU0FycmF5ICpyZWNlbnRTZWFyY2hlcyA9IHJldHVyblVuY29y
cnVwdGVkUmVjZW50U2VhcmNoZXNBcnJheShpdGVtcywgbmFtZSk7CisgICAgaWYgKCFyZWNlbnRT
ZWFyY2hlcykKICAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwogICAgIAogICAgIGZvciAoTlNE
aWN0aW9uYXJ5ICppdGVtIGluIHJlY2VudFNlYXJjaGVzKSB7Ci0gICAgICAgIGlmICghW2l0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIE5TRGF0ZSAqZGF0
ZSA9IHJldHVyblVuY29ycnVwdGVkRGF0ZUluUmVjZW50U2VhcmNoKGl0ZW0pOworICAgICAgICBp
ZiAoIWRhdGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgTlNT
dHJpbmcgKnNlYXJjaFN0cmluZyA9IFtpdGVtIG9iamVjdEZvcktleTpzZWFyY2hTdHJpbmdLZXld
OwogICAgICAgICBpZiAoIVtzZWFyY2hTdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgTlNEYXRlICpk
YXRlID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OmRhdGVLZXldOwotICAgICAgICBpZiAoIVtkYXRlIGlz
S2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIAogICAgICAgICBzZWFyY2hJdGVtcy5hcHBlbmQoeyBTdHJpbmd7IHNlYXJjaFN0cmluZyB9
LCB0b1N5c3RlbUNsb2NrVGltZShkYXRlKSB9KTsKICAgICB9CiAKICAgICByZXR1cm4gc2VhcmNo
SXRlbXM7CiB9CiAKK3ZvaWQgcmVtb3ZlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyhzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgTlNE
YXRlICpkYXRlTW9kaWZpZWQgPSB0b05TRGF0ZUZyb21TeXN0ZW1DbG9jayhtb2RpZmllZFNpbmNl
KTsKKyAgICBhdXRvIHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZXR1cm5VbmNvcnJ1cHRlZFJlY2Vu
dFNlYXJjaGVzUGxpc3QoZGF0ZU1vZGlmaWVkKTsKKyAgICBpZiAocmVjZW50U2VhcmNoZXNQbGlz
dCkKKyAgICAgICAgW3JlY2VudFNlYXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRS
ZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6WUVTXTsKKyAgICBlbHNlCisgICAg
ICAgIGNsZWFuUmVjZW50U2VhcmNoZXNQbGlzdCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmE4
OTNkMC4uMzBlZjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTEwLTExICBa
aHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViS2l0IEFQSSB0byBj
bGVhciBkYXRhIHR5cGUgU2VhcmNoIEZpZWxkIFJlY2VudCBTZWFyY2hlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAxOS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVR5cGVzLmg6IEFkZCBkYXRhIHR5cGUgU2VhcmNoIEZpZWxkIFJlY2VudCBT
ZWFyY2hlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAg
IChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0
b1dLV2Vic2l0ZURhdGFUeXBlcyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSGFuZGxlIHRoZSBjYXNlIHdoZW4gZGF0YSB0
eXBlIGlzIFNlYXJjaAorICAgICAgICBGaWVsZCBSZWNlbnQgU2VhcmNoZXMuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDogQWRkIGEgcHJpdmF0ZSBm
dW5jdGlvbiBmb3IgcmVtb3ZpbmcKKyAgICAgICAgcmVjZW50IHNlYXJjaGVzIGJhc2VkIG9uIHRp
bWUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvY29hOjpwbGF0
Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKTogQ2FsbCB0aGUgcmVtb3ZpbmcKKyAgICAgICAgcmVj
ZW50IHNlYXJjaGVzIGxvZ2ljIGluIFdlYkNvcmUuCisKIDIwMTUtMTAtMTUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFRlc3QgV2Vi
S2l0Mi5SZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhIGZhaWxzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaApp
bmRleCBmY2FiMDYyLi40YTMzMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKQEAgLTM5LDExICszOSwxMiBAQCBlbnVt
IFdlYnNpdGVEYXRhVHlwZXMgewogICAgIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cyA9IDEgPDwgNywKICAgICBXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgPSAxIDw8IDgsCiAgICAg
V2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlID0gMSA8PCA5LAorICAgIFdlYnNpdGVEYXRhVHlwZVNl
YXJjaEZpZWxkUmVjZW50U2VhcmNoZXMgPSAxIDw8IDEwLAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotICAgIFdlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSAxIDw8IDEwLAorICAg
IFdlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSAxIDw8IDExLAogI2VuZGlmCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICBXZWJzaXRlRGF0YVR5cGVNZWRpYURldmljZUlkZW50aWZpZXIg
PSAxIDw8IDExLAorICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlhRGV2aWNlSWRlbnRpZmllciA9IDEg
PDwgMTIsCiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQppbmRleCAzZWI4YjcxLi42ZGFm
MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmQubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCkBAIC00MSw2ICs0MSw3IEBAIE5TU3RyaW5nICogY29u
c3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFU
eXBlSW5kZXhlCiAKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlz
ID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSI7
CitOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2Vh
cmNoZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMiOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQ
bHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTc5LDYgKzgw
LDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhVHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVz
KQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiSFNUUyBDYWNoZSJdOwogICAgIGlmIChbZGF0
YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5c10pCiAgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6QCJNZWRpYSBLZXlzIl07CisgICAgaWYgKFtkYXRhVHlwZXMg
Y29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hl
c10pCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJj
aGVzIl07CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2Jq
ZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGFdKQogICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OkAiUGx1Zy1pbiBEYXRhIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRl
eCAyMzQ4NjM0Li5hYmU4YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAg
LTY0LDYgKzY0LDggQEAgc3RhdGljIGlubGluZSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZXMgdG9X
ZWJzaXRlRGF0YVR5cGVzKE5TU2V0ICp3a1dlYnNpdGVEYXRhVHkKICAgICAgICAgd2Vic2l0ZURh
dGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGU7CiAg
ICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlTWVkaWFLZXlzXSkKICAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5
cGVzOjpXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXM7CisgICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlw
ZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlc10pCisgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vi
c2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlczsKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVj
dDpfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhXSkKICAgICAgICAgd2Vic2l0ZURhdGFUeXBl
cyB8PSBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhOwpAQCAtOTcs
NiArOTksOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRh
VHlwZXMoaW50IHdlYnNpdGVEYXRhVHlwZXMpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMg
YWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZV07CiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMpCiAg
ICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1l
ZGlhS2V5c107CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpX
ZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKQorICAgICAgICBbd2tXZWJz
aXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzXTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVBsdWdJbkRh
dGEpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRh
VHlwZVBsdWdJbkRhdGFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCmluZGV4IGNmYzVi
YzIuLjg0N2M1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlSFNU
U0NhY2hlIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7
CitXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVs
ZFJlY2VudFNlYXJjaGVzIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAog
I2lmICFUQVJHRVRfT1NfSVBIT05FCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJz
aXRlRGF0YVR5cGVQbHVnSW5EYXRhIFdLX0FWQUlMQUJMRSgxMF8xMSwgTkEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYmUzNGUyYi4uM2FhYmI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1w
b3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCisj
aW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTg0LDQgKzg1LDkgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURlc3Ryb3koKQogICAgIH0KIH0KIAordm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBXZWJDb3Jl
OjpyZW1vdmVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzKG1vZGlmaWVkU2luY2UpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNDMyZWY3Ny4uNTMwNWY4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtNjMyLDYgKzYzMiwxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURh
dGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZQogICAgICAg
ICB9KTsKICAgICB9CiAKKyAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlU2VhcmNo
RmllbGRSZWNlbnRTZWFyY2hlcyAmJiBpc1BlcnNpc3RlbnQoKSkgeworICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworCisgICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFttb2RpZmllZFNpbmNlLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAg
IHBsYXRmb3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMobW9kaWZpZWRTaW5jZSk7CisKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlUGx1Z0lu
RGF0YSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjbGFzcyBTdGF0ZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCAzNmI2MGM3Li4wYjYxYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTkzLDYgKzkz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9p
ZCBwbGF0Zm9ybURlc3Ryb3koKTsKKyAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbW92ZVJlY2Vu
dFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRT
aW5jZSk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29s
cygpIGNvbnN0OwogCi0tIAoyLjQuNyAoQXBwbGUgR2l0LTU5KQoK
</data>
<flag name="review"
          id="288670"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263894</attachid>
            <date>2015-10-22 21:30:32 -0700</date>
            <delta_ts>2015-10-27 11:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>19700</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSA4ZWYzN2FjYzdlOWQ5ZDQ4NWI5ZTljZjliYjhmNzg3YWQ1ZTFiYjRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDE5IE9jdCAyMDE1IDE2OjI5OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMzEgKysrKysrCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oICB8ICAgMSArCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFy
Y2hQb3B1cE1lbnVDb2NvYS5tbSB8IDEwNCArKysrKysrKysrKysrKysrKystLS0KIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKysrKwog
Li4uL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaCAgfCAgIDUg
Ky0KIC4uLi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gICAgIHwg
ICAzICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggICAgICAg
IHwgICA0ICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCAgICAg
ICAgIHwgICAxICsKIC4uLi9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0gICAgIHwgICA2ICsrCiAuLi4vVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwICAgICB8ICAxMiArKysKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcCAgIHwgICA2ICsrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHAgICB8ICAgNiArKwogMTMgZmlsZXMgY2hhbmdlZCwgMTkxIGlu
c2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4Yzc4YzUyLi40NDVk
NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRhdGEg
dHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBN
ZW51Q29jb2EuaDogQWRkIGEgZnVuY3Rpb24gdG8gcmVtb3ZlIHJlY2VudCBzZWFyY2hlcyBiYXNl
ZCBvbgorICAgICAgICB0aW1lLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVw
TWVudUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dHlwZUNoZWNrZWRSZWNlbnRTZWFyY2hl
c0FycmF5KTogUmV0dXJuIG5pbCBpZiB0aGUgcmVjZW50IHNlYXJjaGVzIGFycmF5IGlzCisgICAg
ICAgIGNvcnJ1cHRlZCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgYXJyYXkuCisgICAgICAgIChXZWJD
b3JlOjp0eXBlQ2hlY2tlZERhdGVJblJlY2VudFNlYXJjaCk6IFJldHVybiBuaWwgaWYgdGhlIGRh
dGUgaW4gcmVjZW50IHNlYXJjaCBpcworICAgICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSByZXR1
cm4gdGhlIGRhdGUuCisgICAgICAgIChXZWJDb3JlOjp0eXBlQ2hlY2tlZFJlY2VudFNlYXJjaGVz
UmVtb3ZpbmdSZWNlbnRTZWFyY2hlc0FkZGVkQWZ0ZXJEYXRlKTogUmV0dXJuIG5pbCBpZiB0aGUg
cmVjZW50IHNlYXJjaGVzIHBsaXN0IGlzCisgICAgICAgIGNvcnJ1cHRlZCwgb3RoZXJ3aXNlIHJl
dHVybiB0aGUgcmVjZW50IHNlYXJjaGVzIHBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVF
bXB0eVJlY2VudFNlYXJjaGVzUGxpc3QpOiBSZXBsYWNlIHRoZSBleGlzdGluZyByZWNlbnQgc2Vh
cmNoZXMgcGxpc3QgaWYgdGhlcmUgaXMKKyAgICAgICAgYW55IHdpdGggYSBjbGVhbiBvbmUuCisg
ICAgICAgIChXZWJDb3JlOjpsb2FkUmVjZW50U2VhcmNoZXMpOiBVc2UgLXR5cGVDaGVja2VkUmVj
ZW50U2VhcmNoZXNBcnJheSBhbmQgLXR5cGVDaGVja2VkRGF0ZUluUmVjZW50U2VhcmNoLgorICAg
ICAgICAoV2ViQ29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKToKKyAg
ICAgICAgV2hlbiB0aGUgdGltZSBwYXNzZWQgaW4gaXMgZXF1aXZhbGVudCB0byBbTlNEYXRlIGRp
c3RhbnRQYXN0XSwgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbgorICAgICAgICB0aGUgUmVj
ZW50IFNlYXJjaGVzIHBsaXN0LiBPdGhlcndpc2UsIHdlIG9ubHkgY2xlYXIgdGhlIHJlY2VudCBz
ZWFyY2hlcyB0aGF0IHdlcmUgY3JlYXRlZAorICAgICAgICBhZnRlciBvciBhdCB0aGUgdGltZSB0
aGF0IGlzIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLiBJZiBhbGwgcmVjZW50IHNlYXJjaGVz
IGFzc29jaWF0ZWQKKyAgICAgICAgd2l0aCBhbiBhdXRvc2F2ZSBuYW1lIHdlcmUgY3JlYXRlZCBh
ZnRlciBvciBhdCB0aGUgdGltZSB0aGF0IGlzIHBhc3NlZCBpbiBhcyB0aGUgcGFyYW1ldGVyLAor
ICAgICAgICByZW1vdmUgdGhpcyBhdXRvc2F2ZSBuYW1lIGtleSBhbmQgYWxsIG9mIGl0cyB2YWx1
ZXMgaW4gdGhlIHBsaXN0LiBJZiBhbGwgcmVjZW50IHNlYXJjaGVzCisgICAgICAgIGFzc29jaWF0
ZWQgd2l0aCBldmVyeSBhdXRvc2F2ZSBuYW1lIGluIHRoZSBwbGlzdCB3ZXJlIGNyZWF0ZWQgYWZ0
ZXIgb3IgYXQgdGhlIHRpbWUgdGhhdCBpcworICAgICAgICBwYXNzZWQgaW4gYXMgdGhlIHBhcmFt
ZXRlciwgY2xlYXIgYWxsIHJlY2VudCBzZWFyY2hlcyBpbiB0aGUgUmVjZW50IFNlYXJjaGVzIHBs
aXN0LgorCisgICAgICAgIEFsc28sIHdlIGNsZWFyIGFsbCByZWNlbnQgc2VhcmNoZXMgaW4gdGhl
IFJlY2VudCBTZWFyY2hlcyBwbGlzdCB3aGVuIHdlIGZpbmQgdGhlIHBsaXN0IGlzCisgICAgICAg
IGNvcnJ1cHRlZC4KKwogMjAxNS0xMC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247
IGZvciBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oCmluZGV4IDQzYjc5YzguLjY3NzdkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaApAQCAtMzIs
NiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNl
YXJjaD4mKTsKIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZWNlbnRTZWFyY2g+IGxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUpOworV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVS
ZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQppbmRleCAzM2I3MGZkLi4xNDVmYTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVD
b2NvYS5tbQpAQCAtNjYsNiArNjYsNzkgQEAgc3RhdGljIE5TRGF0ZSAqdG9OU0RhdGVGcm9tU3lz
dGVtQ2xvY2soc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiAgICAgcmV0dXJuIFtOU0Rh
dGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZHVyYXRpb25fY2FzdDxkdXJhdGlvbjxk
b3VibGU+Pih0aW1lLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKV07CiB9CiAKK3N0YXRpYyBO
U011dGFibGVBcnJheSAqdHlwZUNoZWNrZWRSZWNlbnRTZWFyY2hlc0FycmF5KE5TTXV0YWJsZURp
Y3Rpb25hcnkgKml0ZW1zRGljdGlvbmFyeSwgTlNTdHJpbmcgKm5hbWUpCit7CisgICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqbmFtZURpY3Rpb25hcnkgPSBbaXRlbXNEaWN0aW9uYXJ5IG9iamVjdEZv
cktleTpuYW1lXTsKKyAgICBpZiAoIVtuYW1lRGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TTXV0YWJsZUFy
cmF5ICpyZWNlbnRTZWFyY2hlcyA9IFtuYW1lRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6c2VhcmNo
ZXNLZXldOworICAgIGlmICghW3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiByZWNlbnRTZWFyY2hl
czsKK30KKworc3RhdGljIE5TRGF0ZSAqdHlwZUNoZWNrZWREYXRlSW5SZWNlbnRTZWFyY2goTlNE
aWN0aW9uYXJ5ICpyZWNlbnRTZWFyY2gpCit7CisgICAgaWYgKCFbcmVjZW50U2VhcmNoIGlzS2lu
ZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgTlNEYXRlICpkYXRlID0gW3JlY2VudFNlYXJjaCBvYmplY3RGb3JLZXk6ZGF0ZUtleV07Cisg
ICAgaWYgKCFbZGF0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xhc3NdXSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIHJldHVybiBkYXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gdHlwZUNoZWNrZWRSZWNlbnRTZWFyY2hlc1JlbW92aW5nUmVjZW50U2VhcmNoZXNB
ZGRlZEFmdGVyRGF0ZShOU0RhdGUgKmRhdGUpCit7CisgICAgaWYgKFtkYXRlIGlzRXF1YWxUb0Rh
dGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlY2VudFNlYXJjaGVzUGxpc3QgPSByZWFkU2Vh
cmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0KCk7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
aXRlbXNEaWN0aW9uYXJ5ID0gW3JlY2VudFNlYXJjaGVzUGxpc3Qgb2JqZWN0Rm9yS2V5Oml0ZW1z
S2V5XTsKKyAgICBpZiAoIVtpdGVtc0RpY3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9u
YXJ5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGtleXNUb1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBpdGVtc0RpY3Rpb25hcnkpIHsKKyAg
ICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZWNlbnRTZWFyY2hl
cyA9IHR5cGVDaGVja2VkUmVjZW50U2VhcmNoZXNBcnJheShpdGVtc0RpY3Rpb25hcnksIGtleSk7
CisgICAgICAgIGlmICghcmVjZW50U2VhcmNoZXMpCisgICAgICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZW50cmllc1RvUmVtb3ZlID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpyZWNlbnRTZWFyY2ggaW4gcmVjZW50U2VhcmNoZXMpIHsKKyAgICAgICAgICAgIE5T
RGF0ZSAqZGF0ZSA9IHR5cGVDaGVja2VkRGF0ZUluUmVjZW50U2VhcmNoKHJlY2VudFNlYXJjaCk7
CisgICAgICAgICAgICBpZiAoIWRhdGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgICAgICAgICAgaWYgKFtkYXRlIGNvbXBhcmU6ZGF0ZV0gPT0gTlNPcmRlcmVkRGVzY2VuZGlu
ZykKKyAgICAgICAgICAgICAgICBbZW50cmllc1RvUmVtb3ZlIGFkZE9iamVjdDpyZWNlbnRTZWFy
Y2hdOworICAgICAgICB9CisKKyAgICAgICAgW3JlY2VudFNlYXJjaGVzIHJlbW92ZU9iamVjdHNJ
bkFycmF5OmVudHJpZXNUb1JlbW92ZS5nZXQoKV07CisgICAgICAgIGlmICghcmVjZW50U2VhcmNo
ZXMuY291bnQpCisgICAgICAgICAgICBba2V5c1RvUmVtb3ZlIGFkZE9iamVjdDprZXldOworICAg
IH0KKworICAgIFtpdGVtc0RpY3Rpb25hcnkgcmVtb3ZlT2JqZWN0c0ZvcktleXM6a2V5c1RvUmVt
b3ZlLmdldCgpXTsKKyAgICBpZiAoIWl0ZW1zRGljdGlvbmFyeS5jb3VudCkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIHJldHVybiByZWNlbnRTZWFyY2hlc1BsaXN0OworfQorCitzdGF0aWMg
dm9pZCB3cml0ZUVtcHR5UmVjZW50U2VhcmNoZXNQbGlzdCgpCit7CisgICAgYXV0byBlbXB0eUl0
ZW1zRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIGVtcHR5UmVjZW50U2VhcmNoZXNEaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czplbXB0eUl0ZW1zRGljdGlvbmFyeS5n
ZXQoKSwgaXRlbXNLZXksIG5pbF0pOworICAgIFtlbXB0eVJlY2VudFNlYXJjaGVzRGljdGlvbmFy
eSB3cml0ZVRvRmlsZTpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWlj
YWxseTpZRVNdOworfQorCiB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCkBAIC05MCw3ICsxNjMsNyBAQCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiBzZWFyY2hJ
dAogICAgICAgICBbaXRlbXNEaWN0aW9uYXJ5IHNldE9iamVjdDphZG9wdE5TKFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOml0ZW1zLmdldCgpLCBzZWFyY2hlc0tl
eSwgbmlsXSkuZ2V0KCkgZm9yS2V5Om5hbWVdOwogICAgIH0KIAotICAgIFtyZWNlbnRTZWFyY2hl
c1BsaXN0IHdyaXRlVG9GaWxlOnNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdFBhdGgoKSBh
dG9taWNhbGx5Ok5PXTsKKyAgICBbcmVjZW50U2VhcmNoZXNQbGlzdCB3cml0ZVRvRmlsZTpzZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWljYWxseTpZRVNdOwogfQogCiBW
ZWN0b3I8UmVjZW50U2VhcmNoPiBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1l
KQpAQCAtMTA0LDM0ICsxNzcsMzcgQEAgVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAoIXJlY2VudFNlYXJjaGVzUGxpc3Qp
CiAgICAgICAgIHJldHVybiBzZWFyY2hJdGVtczsKIAotICAgIE5TRGljdGlvbmFyeSAqaXRlbXMg
PSBbcmVjZW50U2VhcmNoZXNQbGlzdCBvYmplY3RGb3JLZXk6aXRlbXNLZXldOworICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKml0ZW1zID0gW3JlY2VudFNlYXJjaGVzUGxpc3Qgb2JqZWN0Rm9yS2V5
Oml0ZW1zS2V5XTsKICAgICBpZiAoIVtpdGVtcyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIHNlYXJjaEl0ZW1zOwogCi0gICAgTlNEaWN0aW9uYXJ5
ICpuYW1lSXRlbXMgPSBbaXRlbXMgb2JqZWN0Rm9yS2V5Om5hbWVdOwotICAgIGlmICghW25hbWVJ
dGVtcyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IHNlYXJjaEl0ZW1zOwotCi0gICAgTlNBcnJheSAqcmVjZW50U2VhcmNoZXMgPSBbbmFtZUl0ZW1z
IG9iamVjdEZvcktleTpzZWFyY2hlc0tleV07Ci0gICAgaWYgKCFbcmVjZW50U2VhcmNoZXMgaXNL
aW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgIE5TQXJyYXkgKnJlY2VudFNlYXJjaGVz
ID0gdHlwZUNoZWNrZWRSZWNlbnRTZWFyY2hlc0FycmF5KGl0ZW1zLCBuYW1lKTsKKyAgICBpZiAo
IXJlY2VudFNlYXJjaGVzKQogICAgICAgICByZXR1cm4gc2VhcmNoSXRlbXM7CiAgICAgCiAgICAg
Zm9yIChOU0RpY3Rpb25hcnkgKml0ZW0gaW4gcmVjZW50U2VhcmNoZXMpIHsKLSAgICAgICAgaWYg
KCFbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgTlNE
YXRlICpkYXRlID0gdHlwZUNoZWNrZWREYXRlSW5SZWNlbnRTZWFyY2goaXRlbSk7CisgICAgICAg
IGlmICghZGF0ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBO
U1N0cmluZyAqc2VhcmNoU3RyaW5nID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OnNlYXJjaFN0cmluZ0tl
eV07CiAgICAgICAgIGlmICghW3NlYXJjaFN0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBOU0RhdGUg
KmRhdGUgPSBbaXRlbSBvYmplY3RGb3JLZXk6ZGF0ZUtleV07Ci0gICAgICAgIGlmICghW2RhdGUg
aXNLaW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgCiAgICAgICAgIHNlYXJjaEl0ZW1zLmFwcGVuZCh7IFN0cmluZ3sgc2VhcmNoU3RyaW5n
IH0sIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUpIH0pOwogICAgIH0KIAogICAgIHJldHVybiBzZWFy
Y2hJdGVtczsKIH0KIAordm9pZCByZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBvbGRlc3RUaW1lVG9SZW1vdmUp
Cit7CisgICAgTlNEYXRlICpkYXRlID0gdG9OU0RhdGVGcm9tU3lzdGVtQ2xvY2sob2xkZXN0VGlt
ZVRvUmVtb3ZlKTsKKyAgICBhdXRvIHJlY2VudFNlYXJjaGVzUGxpc3QgPSB0eXBlQ2hlY2tlZFJl
Y2VudFNlYXJjaGVzUmVtb3ZpbmdSZWNlbnRTZWFyY2hlc0FkZGVkQWZ0ZXJEYXRlKGRhdGUpOwor
ICAgIGlmIChyZWNlbnRTZWFyY2hlc1BsaXN0KQorICAgICAgICBbcmVjZW50U2VhcmNoZXNQbGlz
dCB3cml0ZVRvRmlsZTpzZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWlj
YWxseTpZRVNdOworICAgIGVsc2UKKyAgICAgICAgd3JpdGVFbXB0eVJlY2VudFNlYXJjaGVzUGxp
c3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE3Mjc4ZDkuLmE1Y2RlNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxNS0xMC0xMSAgWmh1byBMaSAgPHphY2hsaUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdlYktpdCBBUEkgdG8gY2xlYXIgZGF0YSB0eXBlIFNlYXJjaCBGaWVs
ZCBSZWNlbnQgU2VhcmNoZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTAwMTkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oOiBBZGQg
ZGF0YSB0eXBlIFNlYXJjaCBGaWVsZCBSZWNlbnQgU2VhcmNoZXMuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0YVR5cGVz
VG9TdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlw
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0
YSk6IEhhbmRsZSB0aGUgY2FzZSB3aGVuIGRhdGEgdHlwZSBpcyBTZWFyY2gKKyAgICAgICAgRmll
bGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmg6IEFkZCBhIHByaXZhdGUgZnVuY3Rpb24gZm9yIHJlbW92aW5nCisgICAg
ICAgIHJlY2VudCBzZWFyY2hlcyBiYXNlZCBvbiB0aW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb2NvYTo6cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyk6
IENhbGwgdGhlIHJlbW92aW5nCisgICAgICAgIHJlY2VudCBzZWFyY2hlcyBsb2dpYyBpbiBXZWJD
b3JlLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hl
cyk6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVt
b3ZlUmVjZW50U2VhcmNoZXMpOiBOb3QgaW1wbGVtZW50ZWQuCisKIDIwMTUtMTAtMjIgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IEdUSyBidWlsZCBmaXggZm9yIGRpc2FibGVkIHJlZGlyZWN0ZWQgWENvbXBvc2l0ZSB3aW5kb3cg
c3VwcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFUeXBlcy5oCmluZGV4IGZjYWIwNjIuLjRhMzMyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaApAQCAtMzks
MTEgKzM5LDEyIEBAIGVudW0gV2Vic2l0ZURhdGFUeXBlcyB7CiAgICAgV2Vic2l0ZURhdGFUeXBl
SW5kZXhlZERCRGF0YWJhc2VzID0gMSA8PCA3LAogICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlhS2V5
cyA9IDEgPDwgOCwKICAgICBXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUgPSAxIDw8IDksCisgICAg
V2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyA9IDEgPDwgMTAsCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0
YSA9IDEgPDwgMTAsCisgICAgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IDEgPDwgMTEsCiAj
ZW5kaWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlh
RGV2aWNlSWRlbnRpZmllciA9IDEgPDwgMTEsCisgICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFEZXZp
Y2VJZGVudGlmaWVyID0gMSA8PCAxMiwKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCmlu
ZGV4IDNlYjhiNzEuLjZkYWYwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTQxLDYgKzQxLDcg
QEAgTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9
IEAiV0tXZWJzaXRlRGF0YVR5cGVJbmRleGUKIAogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVNZWRpYUtleXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURh
dGFUeXBlSFNUU0NhY2hlIjsKK05TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2Vh
cmNoRmllbGRSZWNlbnRTZWFyY2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRS
ZWNlbnRTZWFyY2hlcyI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRh
dGEiOwpAQCAtNzksNiArODAsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5n
KE5TU2V0ICpkYXRhVHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJIU1RTIENhY2hl
Il07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
TWVkaWFLZXlzXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIk1lZGlhIEtleXMiXTsKKyAg
ICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hG
aWVsZFJlY2VudFNlYXJjaGVzXSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlNlYXJjaCBG
aWVsZCBSZWNlbnQgU2VhcmNoZXMiXTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKFtkYXRh
VHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YV0pCiAgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6QCJQbHVnLWluIERhdGEiXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCmluZGV4IDIzNDg2MzQuLmFiZThiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaApAQCAtNjQsNiArNjQsOCBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlcyB0b1dlYnNpdGVEYXRhVHlwZXMoTlNTZXQgKndrV2Vic2l0ZURhdGFUeQog
ICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRh
VHlwZUhTVFNDYWNoZTsKICAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVj
dDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQogICAgICAgICB3ZWJzaXRlRGF0YVR5cGVz
IHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5czsKKyAgICBpZiAo
W3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFy
Y2hGaWVsZFJlY2VudFNlYXJjaGVzXSkKKyAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJz
aXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzOwog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChbd2tXZWJzaXRlRGF0YVR5
cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGFdKQogICAgICAg
ICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVBs
dWdJbkRhdGE7CkBAIC05Nyw2ICs5OSw4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0
PiB0b1dLV2Vic2l0ZURhdGFUeXBlcyhpbnQgd2Vic2l0ZURhdGFUeXBlcykKICAgICAgICAgW3dr
V2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXTsK
ICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRh
VHlwZU1lZGlhS2V5cykKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dL
V2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzXTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdl
YnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMp
CisgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlw
ZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNdOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0
ZURhdGFUeXBlUGx1Z0luRGF0YSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmgKaW5kZXggY2ZjNWJjMi4uODQ3YzU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZh
dGUuaApAQCAtMjksNiArMjksNyBAQAogCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogV0tfRVhU
RVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIFdLX0FWQUlM
QUJMRSgxMF8xMSwgOV8wKTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVE
YXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEs
IFdLX0lPU19UQkEpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIFdLX0VYVEVSTiBOU1N0cmlu
ZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgV0tfQVZBSUxBQkxFKDEwXzEx
LCBOQSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBiZTM0ZTJi
Li5lMzkzM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3
LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2ltcG9ydCAiU3Rv
cmFnZU1hbmFnZXIuaCIKKyNpbXBvcnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
ODQsNCArODUsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtRGVzdHJveSgpCiAg
ICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjZW50U2Vh
cmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBvbGRlc3RUaW1lVG9S
ZW1vdmUpCit7CisgICAgV2ViQ29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJj
aGVzKG9sZGVzdFRpbWVUb1JlbW92ZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA0
MzJlZjc3Li41MzA1Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC02MzIsNiArNjMyLDE4IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFU
eXBlcywgc3RkOjpjaHJvbm86OnN5c3RlCiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIGlmIChk
YXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzICYmIGlz
UGVyc2lzdGVudCgpKSB7CisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0Nh
bGxiYWNrKCk7CisKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIGNh
bGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgcGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFy
Y2hlcyhtb2RpZmllZFNpbmNlKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0KKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChk
YXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhICYmIGlzUGVyc2lzdGVudCgpKSB7
CiAgICAgICAgIGNsYXNzIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDM2YjYwYzcuLjBjODI5
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtOTMsNiArOTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOworICAg
IHN0YXRpYyB2b2lkIHBsYXRmb3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNz
UG9vbD4+IHByb2Nlc3NQb29scygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggMWU5MmYwNS4uZjY1YTE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYktpdFZlcnNpb24uaCIKICNpbmNsdWRlICJX
ZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCiAjaW5jbHVkZSA8
c3lzL3V0c25hbWUuaD4KQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJj
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0
Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgb2xkZXN0VGltZVRvUmVtb3ZlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUm
IGVkaXRvclN0YXRlKQogewogICAgIG1fZWRpdG9yU3RhdGUgPSBlZGl0b3JTdGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA4
NDVmMzcxLi4yZGJhZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50R3RrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0a3guaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTY3LDYgKzY4LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFdlYkNv
cmU6OlJlY2VudFNlYXJjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgb2xkZXN0VGltZVRvUmVtb3ZlKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29u
c3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewogICAgIG1fZWRpdG9yU3RhdGUgPSBlZGl0
b3JTdGF0ZTsKLS0gCjIuNC45IChBcHBsZSBHaXQtNjApCgo=
</data>
<flag name="review"
          id="289049"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264142</attachid>
            <date>2015-10-27 11:01:11 -0700</date>
            <delta_ts>2015-10-27 11:50:45 -0700</delta_ts>
            <desc>Patch Already Reviewed</desc>
            <filename>0001-We-should-be-able-to-clear-search-field-recent-searc.patch</filename>
            <type>text/plain</type>
            <size>19659</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBlMTEzOGU5ZmRhMjY2NTk2NGI3MTczNmNjNWQ1M2U0YjQxMGY3OTI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBNb24s
IDE5IE9jdCAyMDE1IDE2OjI5OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2xlYXIgc2VhcmNoIGZpZWxkIHJlY2VudCBzZWFyY2hlcyBiYXNlZAogb24gdGlt
ZSBnaXZlbi4KCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMzEgKysrKysrCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oICB8ICAgMSArCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFy
Y2hQb3B1cE1lbnVDb2NvYS5tbSB8IDEwNCArKysrKysrKysrKysrKysrKystLS0KIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKysrKwog
Li4uL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaCAgfCAgIDUg
Ky0KIC4uLi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gICAgIHwg
ICAzICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggICAgICAg
IHwgICA0ICsKIC4uLi9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCAgICAg
ICAgIHwgICAxICsKIC4uLi9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0gICAgIHwgICA2ICsrCiAuLi4vVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwICAgICB8ICAxMiArKysKIC4uLi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcCAgIHwgICA2ICsrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHAgICB8ICAgNiArKwogMTMgZmlsZXMgY2hhbmdlZCwgMTkxIGlu
c2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZDBlN2ZmLi5jYWIz
ZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTUtMTAtMTEgIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNsZWFyIGRhdGEg
dHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVw
TWVudUNvY29hLmg6IEFkZCBhIGZ1bmN0aW9uIHRvIHJlbW92ZSByZWNlbnQgc2VhcmNoZXMgYmFz
ZWQgb24KKyAgICAgICAgdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGVDaGVja2VkUmVjZW50U2VhcmNo
ZXNBcnJheSk6IFJldHVybiBuaWwgaWYgdGhlIHJlY2VudCBzZWFyY2hlcyBhcnJheSBpcworICAg
ICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIGFycmF5LgorICAgICAgICAoV2Vi
Q29yZTo6dHlwZUNoZWNrZWREYXRlSW5SZWNlbnRTZWFyY2gpOiBSZXR1cm4gbmlsIGlmIHRoZSBk
YXRlIGluIHJlY2VudCBzZWFyY2ggaXMKKyAgICAgICAgY29ycnVwdGVkLCBvdGhlcndpc2UgcmV0
dXJuIHRoZSBkYXRlLgorICAgICAgICAoV2ViQ29yZTo6dHlwZUNoZWNrZWRSZWNlbnRTZWFyY2hl
c1JlbW92aW5nUmVjZW50U2VhcmNoZXNBZGRlZEFmdGVyRGF0ZSk6IFJldHVybiBuaWwgaWYgdGhl
IHJlY2VudCBzZWFyY2hlcyBwbGlzdCBpcworICAgICAgICBjb3JydXB0ZWQsIG90aGVyd2lzZSBy
ZXR1cm4gdGhlIHJlY2VudCBzZWFyY2hlcyBwbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRl
RW1wdHlSZWNlbnRTZWFyY2hlc1BsaXN0KTogUmVwbGFjZSB0aGUgZXhpc3RpbmcgcmVjZW50IHNl
YXJjaGVzIHBsaXN0IGlmIHRoZXJlIGlzCisgICAgICAgIGFueSB3aXRoIGEgY2xlYW4gb25lLgor
ICAgICAgICAoV2ViQ29yZTo6bG9hZFJlY2VudFNlYXJjaGVzKTogVXNlIC10eXBlQ2hlY2tlZFJl
Y2VudFNlYXJjaGVzQXJyYXkgYW5kIC10eXBlQ2hlY2tlZERhdGVJblJlY2VudFNlYXJjaC4KKyAg
ICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlY2VudGx5TW9kaWZpZWRSZWNlbnRTZWFyY2hlcyk6Cisg
ICAgICAgIFdoZW4gdGhlIHRpbWUgcGFzc2VkIGluIGlzIGVxdWl2YWxlbnQgdG8gW05TRGF0ZSBk
aXN0YW50UGFzdF0sIGNsZWFyIGFsbCByZWNlbnQgc2VhcmNoZXMgaW4KKyAgICAgICAgdGhlIFJl
Y2VudCBTZWFyY2hlcyBwbGlzdC4gT3RoZXJ3aXNlLCB3ZSBvbmx5IGNsZWFyIHRoZSByZWNlbnQg
c2VhcmNoZXMgdGhhdCB3ZXJlIGNyZWF0ZWQKKyAgICAgICAgYWZ0ZXIgb3IgYXQgdGhlIHRpbWUg
dGhhdCBpcyBwYXNzZWQgaW4gYXMgdGhlIHBhcmFtZXRlci4gSWYgYWxsIHJlY2VudCBzZWFyY2hl
cyBhc3NvY2lhdGVkCisgICAgICAgIHdpdGggYW4gYXV0b3NhdmUgbmFtZSB3ZXJlIGNyZWF0ZWQg
YWZ0ZXIgb3IgYXQgdGhlIHRpbWUgdGhhdCBpcyBwYXNzZWQgaW4gYXMgdGhlIHBhcmFtZXRlciwK
KyAgICAgICAgcmVtb3ZlIHRoaXMgYXV0b3NhdmUgbmFtZSBrZXkgYW5kIGFsbCBvZiBpdHMgdmFs
dWVzIGluIHRoZSBwbGlzdC4gSWYgYWxsIHJlY2VudCBzZWFyY2hlcworICAgICAgICBhc3NvY2lh
dGVkIHdpdGggZXZlcnkgYXV0b3NhdmUgbmFtZSBpbiB0aGUgcGxpc3Qgd2VyZSBjcmVhdGVkIGFm
dGVyIG9yIGF0IHRoZSB0aW1lIHRoYXQgaXMKKyAgICAgICAgcGFzc2VkIGluIGFzIHRoZSBwYXJh
bWV0ZXIsIGNsZWFyIGFsbCByZWNlbnQgc2VhcmNoZXMgaW4gdGhlIFJlY2VudCBTZWFyY2hlcyBw
bGlzdC4KKworICAgICAgICBBbHNvLCB3ZSBjbGVhciBhbGwgcmVjZW50IHNlYXJjaGVzIGluIHRo
ZSBSZWNlbnQgU2VhcmNoZXMgcGxpc3Qgd2hlbiB3ZSBmaW5kIHRoZSBwbGlzdCBpcworICAgICAg
ICBjb3JydXB0ZWQuCisKIDIwMTUtMTAtMjAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBTdWJwaXhlbCBsYXlvdXQ6IENvbnZlcnQgUmVuZGVyVGFibGUqIGFuZCBB
dXRvVGFibGVMYXlvdXQgdG8gdXNlIExheW91dFVuaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EuaAppbmRleCA0M2I3OWM4Li42
Nzc3ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJj
aFBvcHVwTWVudUNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+Jik7CiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
UmVjZW50U2VhcmNoPiBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwogCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KaW5k
ZXggMzNiNzBmZC4uMTQ1ZmEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0KQEAgLTY2LDYgKzY2LDc5IEBAIHN0YXRp
YyBOU0RhdGUgKnRvTlNEYXRlRnJvbVN5c3RlbUNsb2NrKHN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCB0aW1lKQogICAgIHJldHVybiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcw
OmR1cmF0aW9uX2Nhc3Q8ZHVyYXRpb248ZG91YmxlPj4odGltZS50aW1lX3NpbmNlX2Vwb2NoKCkp
LmNvdW50KCldOwogfQogCitzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKnR5cGVDaGVja2VkUmVjZW50
U2VhcmNoZXNBcnJheShOU011dGFibGVEaWN0aW9uYXJ5ICppdGVtc0RpY3Rpb25hcnksIE5TU3Ry
aW5nICpuYW1lKQoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm5hbWVEaWN0aW9uYXJ5ID0g
W2l0ZW1zRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6bmFtZV07CisgICAgaWYgKCFbbmFtZURpY3Rp
b25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBOU011dGFibGVBcnJheSAqcmVjZW50U2VhcmNoZXMgPSBbbmFtZURpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OnNlYXJjaGVzS2V5XTsKKyAgICBpZiAoIVtyZWNlbnRTZWFyY2hl
cyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICByZXR1cm4gcmVjZW50U2VhcmNoZXM7Cit9CisKK3N0YXRpYyBOU0RhdGUgKnR5cGVDaGVj
a2VkRGF0ZUluUmVjZW50U2VhcmNoKE5TRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoKQoreworICAg
IGlmICghW3JlY2VudFNlYXJjaCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TRGF0ZSAqZGF0ZSA9IFtyZWNlbnRTZWFyY2gg
b2JqZWN0Rm9yS2V5OmRhdGVLZXldOworICAgIGlmICghW2RhdGUgaXNLaW5kT2ZDbGFzczpbTlNE
YXRlIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gZGF0ZTsKK30K
Kworc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHR5cGVDaGVja2VkUmVjZW50U2VhcmNo
ZXNSZW1vdmluZ1JlY2VudFNlYXJjaGVzQWRkZWRBZnRlckRhdGUoTlNEYXRlICpkYXRlKQorewor
ICAgIGlmIChbZGF0ZSBpc0VxdWFsVG9EYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZWNl
bnRTZWFyY2hlc1BsaXN0ID0gcmVhZFNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXNQbGlzdCgpOwor
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKml0ZW1zRGljdGlvbmFyeSA9IFtyZWNlbnRTZWFyY2hl
c1BsaXN0IG9iamVjdEZvcktleTppdGVtc0tleV07CisgICAgaWYgKCFbaXRlbXNEaWN0aW9uYXJ5
IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBrZXlzVG9SZW1vdmUgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkg
aW4gaXRlbXNEaWN0aW9uYXJ5KSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBOU011
dGFibGVBcnJheSAqcmVjZW50U2VhcmNoZXMgPSB0eXBlQ2hlY2tlZFJlY2VudFNlYXJjaGVzQXJy
YXkoaXRlbXNEaWN0aW9uYXJ5LCBrZXkpOworICAgICAgICBpZiAoIXJlY2VudFNlYXJjaGVzKQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGVudHJpZXNUb1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOworICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoIGluIHJlY2VudFNl
YXJjaGVzKSB7CisgICAgICAgICAgICBOU0RhdGUgKmRhdGUgPSB0eXBlQ2hlY2tlZERhdGVJblJl
Y2VudFNlYXJjaChyZWNlbnRTZWFyY2gpOworICAgICAgICAgICAgaWYgKCFkYXRlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIGlmIChbZGF0ZSBjb21wYXJlOmRh
dGVdID09IE5TT3JkZXJlZERlc2NlbmRpbmcpCisgICAgICAgICAgICAgICAgW2VudHJpZXNUb1Jl
bW92ZSBhZGRPYmplY3Q6cmVjZW50U2VhcmNoXTsKKyAgICAgICAgfQorCisgICAgICAgIFtyZWNl
bnRTZWFyY2hlcyByZW1vdmVPYmplY3RzSW5BcnJheTplbnRyaWVzVG9SZW1vdmUuZ2V0KCldOwor
ICAgICAgICBpZiAoIXJlY2VudFNlYXJjaGVzLmNvdW50KQorICAgICAgICAgICAgW2tleXNUb1Jl
bW92ZSBhZGRPYmplY3Q6a2V5XTsKKyAgICB9CisKKyAgICBbaXRlbXNEaWN0aW9uYXJ5IHJlbW92
ZU9iamVjdHNGb3JLZXlzOmtleXNUb1JlbW92ZS5nZXQoKV07CisgICAgaWYgKCFpdGVtc0RpY3Rp
b25hcnkuY291bnQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gcmVjZW50U2Vh
cmNoZXNQbGlzdDsKK30KKworc3RhdGljIHZvaWQgd3JpdGVFbXB0eVJlY2VudFNlYXJjaGVzUGxp
c3QoKQoreworICAgIGF1dG8gZW1wdHlJdGVtc0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBlbXB0eVJlY2VudFNlYXJjaGVzRGljdGlv
bmFyeSA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6ZW1wdHlJdGVtc0RpY3Rpb25hcnkuZ2V0KCksIGl0ZW1zS2V5LCBuaWxdKTsKKyAgICBbZW1w
dHlSZWNlbnRTZWFyY2hlc0RpY3Rpb25hcnkgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6WUVTXTsKK30KKwogdm9pZCBzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYg
c2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQpAQCAtOTAsNyArMTYzLDcg
QEAgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXQKICAgICAgICAgW2l0ZW1zRGljdGlvbmFyeSBzZXRP
YmplY3Q6YWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5
czppdGVtcy5nZXQoKSwgc2VhcmNoZXNLZXksIG5pbF0pLmdldCgpIGZvcktleTpuYW1lXTsKICAg
ICB9CiAKLSAgICBbcmVjZW50U2VhcmNoZXNQbGlzdCB3cml0ZVRvRmlsZTpzZWFyY2hGaWVsZFJl
Y2VudFNlYXJjaGVzUGxpc3RQYXRoKCkgYXRvbWljYWxseTpOT107CisgICAgW3JlY2VudFNlYXJj
aGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlc1BsaXN0UGF0aCgp
IGF0b21pY2FsbHk6WUVTXTsKIH0KIAogVmVjdG9yPFJlY2VudFNlYXJjaD4gbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTEwNCwzNCArMTc3LDM3IEBAIFZlY3RvcjxS
ZWNlbnRTZWFyY2g+IGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
aWYgKCFyZWNlbnRTZWFyY2hlc1BsaXN0KQogICAgICAgICByZXR1cm4gc2VhcmNoSXRlbXM7CiAK
LSAgICBOU0RpY3Rpb25hcnkgKml0ZW1zID0gW3JlY2VudFNlYXJjaGVzUGxpc3Qgb2JqZWN0Rm9y
S2V5Oml0ZW1zS2V5XTsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICppdGVtcyA9IFtyZWNlbnRT
ZWFyY2hlc1BsaXN0IG9iamVjdEZvcktleTppdGVtc0tleV07CiAgICAgaWYgKCFbaXRlbXMgaXNL
aW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBzZWFyY2hJ
dGVtczsKIAotICAgIE5TRGljdGlvbmFyeSAqbmFtZUl0ZW1zID0gW2l0ZW1zIG9iamVjdEZvcktl
eTpuYW1lXTsKLSAgICBpZiAoIVtuYW1lSXRlbXMgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5
IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBzZWFyY2hJdGVtczsKLQotICAgIE5TQXJyYXkgKnJl
Y2VudFNlYXJjaGVzID0gW25hbWVJdGVtcyBvYmplY3RGb3JLZXk6c2VhcmNoZXNLZXldOwotICAg
IGlmICghW3JlY2VudFNlYXJjaGVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAg
ICBOU0FycmF5ICpyZWNlbnRTZWFyY2hlcyA9IHR5cGVDaGVja2VkUmVjZW50U2VhcmNoZXNBcnJh
eShpdGVtcywgbmFtZSk7CisgICAgaWYgKCFyZWNlbnRTZWFyY2hlcykKICAgICAgICAgcmV0dXJu
IHNlYXJjaEl0ZW1zOwogICAgIAogICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtIGluIHJlY2Vu
dFNlYXJjaGVzKSB7Ci0gICAgICAgIGlmICghW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9u
YXJ5IGNsYXNzXV0pCisgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IHR5cGVDaGVja2VkRGF0ZUluUmVj
ZW50U2VhcmNoKGl0ZW0pOworICAgICAgICBpZiAoIWRhdGUpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgCisKICAgICAgICAgTlNTdHJpbmcgKnNlYXJjaFN0cmluZyA9IFtpdGVtIG9i
amVjdEZvcktleTpzZWFyY2hTdHJpbmdLZXldOwogICAgICAgICBpZiAoIVtzZWFyY2hTdHJpbmcg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKLSAgICAgICAgTlNEYXRlICpkYXRlID0gW2l0ZW0gb2JqZWN0Rm9yS2V5OmRhdGVL
ZXldOwotICAgICAgICBpZiAoIVtkYXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAogICAgICAgICBzZWFyY2hJdGVtcy5hcHBl
bmQoeyBTdHJpbmd7IHNlYXJjaFN0cmluZyB9LCB0b1N5c3RlbUNsb2NrVGltZShkYXRlKSB9KTsK
ICAgICB9CiAKICAgICByZXR1cm4gc2VhcmNoSXRlbXM7CiB9CiAKK3ZvaWQgcmVtb3ZlUmVjZW50
bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgb2xkZXN0VGltZVRvUmVtb3ZlKQoreworICAgIE5TRGF0ZSAqZGF0ZSA9IHRvTlNEYXRl
RnJvbVN5c3RlbUNsb2NrKG9sZGVzdFRpbWVUb1JlbW92ZSk7CisgICAgYXV0byByZWNlbnRTZWFy
Y2hlc1BsaXN0ID0gdHlwZUNoZWNrZWRSZWNlbnRTZWFyY2hlc1JlbW92aW5nUmVjZW50U2VhcmNo
ZXNBZGRlZEFmdGVyRGF0ZShkYXRlKTsKKyAgICBpZiAocmVjZW50U2VhcmNoZXNQbGlzdCkKKyAg
ICAgICAgW3JlY2VudFNlYXJjaGVzUGxpc3Qgd3JpdGVUb0ZpbGU6c2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlc1BsaXN0UGF0aCgpIGF0b21pY2FsbHk6WUVTXTsKKyAgICBlbHNlCisgICAgICAgIHdy
aXRlRW1wdHlSZWNlbnRTZWFyY2hlc1BsaXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZjI4
OGNlLi5hMDdhNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMTAtMTEgIFpo
dW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgQVBJIHRvIGNs
ZWFyIGRhdGEgdHlwZSBTZWFyY2ggRmllbGQgUmVjZW50IFNlYXJjaGVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDE5LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVR5cGVzLmg6IEFkZCBkYXRhIHR5cGUgU2VhcmNoIEZpZWxkIFJlY2VudCBT
ZWFyY2hlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAg
IChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0
b1dLV2Vic2l0ZURhdGFUeXBlcyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSGFuZGxlIHRoZSBjYXNlIHdoZW4gZGF0YSB0
eXBlIGlzIFNlYXJjaAorICAgICAgICBGaWVsZCBSZWNlbnQgU2VhcmNoZXMuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDogQWRkIGEgcHJpdmF0ZSBm
dW5jdGlvbiBmb3IgcmVtb3ZpbmcKKyAgICAgICAgcmVjZW50IHNlYXJjaGVzIGJhc2VkIG9uIHRp
bWUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvY29hOjpwbGF0
Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKTogQ2FsbCB0aGUgcmVtb3ZpbmcKKyAgICAgICAgcmVj
ZW50IHNlYXJjaGVzIGxvZ2ljIGluIFdlYkNvcmUuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpw
bGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyk6IE5vdCBpbXBsZW1l
bnRlZC4KKwogMjAxNS0xMC0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBJREJLZXlEYXRhIGZyb20gYSBzdHJ1Y3QgdG8gYSBjbGFzcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5o
CmluZGV4IGZjYWIwNjIuLjRhMzMyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaApAQCAtMzksMTEgKzM5LDEyIEBAIGVu
dW0gV2Vic2l0ZURhdGFUeXBlcyB7CiAgICAgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJh
c2VzID0gMSA8PCA3LAogICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyA9IDEgPDwgOCwKICAg
ICBXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUgPSAxIDw8IDksCisgICAgV2Vic2l0ZURhdGFUeXBl
U2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyA9IDEgPDwgMTAsCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi0gICAgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IDEgPDwgMTAsCisg
ICAgV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IDEgPDwgMTEsCiAjZW5kaWYKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIFdlYnNpdGVEYXRhVHlwZU1lZGlhRGV2aWNlSWRlbnRpZmll
ciA9IDEgPDwgMTEsCisgICAgV2Vic2l0ZURhdGFUeXBlTWVkaWFEZXZpY2VJZGVudGlmaWVyID0g
MSA8PCAxMiwKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCmluZGV4IDNlYjhiNzEuLjZk
YWYwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTQxLDYgKzQxLDcgQEAgTlNTdHJpbmcgKiBj
b25zdCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IEAiV0tXZWJzaXRlRGF0
YVR5cGVJbmRleGUKIAogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtl
eXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hl
IjsKK05TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyI7
CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlw
ZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEiOwpAQCAtNzksNiAr
ODAsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0ICpkYXRhVHlw
ZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJIU1RTIENhY2hlIl07CiAgICAgaWYgKFtk
YXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzXSkKICAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpAIk1lZGlhIEtleXMiXTsKKyAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJj
aGVzXSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlNlYXJjaCBGaWVsZCBSZWNlbnQgU2Vh
cmNoZXMiXTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNP
YmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YV0pCiAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6QCJQbHVnLWluIERhdGEiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmlu
ZGV4IDIzNDg2MzQuLmFiZThiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApA
QCAtNjQsNiArNjQsOCBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlcyB0
b1dlYnNpdGVEYXRhVHlwZXMoTlNTZXQgKndrV2Vic2l0ZURhdGFUeQogICAgICAgICB3ZWJzaXRl
RGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZTsK
ICAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVNZWRpYUtleXNdKQogICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRh
VHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5czsKKyAgICBpZiAoW3drV2Vic2l0ZURhdGFU
eXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNl
YXJjaGVzXSkKKyAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVzOjpX
ZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzOwogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChbd2tXZWJzaXRlRGF0YVR5cGVzIGNvbnRhaW5zT2Jq
ZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGFdKQogICAgICAgICB3ZWJzaXRlRGF0YVR5
cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGE7CkBAIC05
Nyw2ICs5OSw4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2l0ZURh
dGFUeXBlcyhpbnQgd2Vic2l0ZURhdGFUeXBlcykKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBl
cyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXTsKICAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cykK
ICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
TWVkaWFLZXlzXTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6
OldlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMpCisgICAgICAgIFt3a1dl
YnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVj
ZW50U2VhcmNoZXNdOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlUGx1Z0lu
RGF0YSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURh
dGFUeXBlUGx1Z0luRGF0YV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKaW5kZXggY2Zj
NWJjMi4uODQ3YzU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaApAQCAtMjksNiAr
MjksNyBAQAogCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVI
U1RTQ2FjaGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogV0tfRVhURVJOIE5TU3RyaW5nICog
Y29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8w
KTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZp
ZWxkUmVjZW50U2VhcmNoZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwog
CiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgV0tfQVZBSUxBQkxFKDEwXzExLCBOQSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBiZTM0ZTJiLi5lMzkzM2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNp
bXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtODQsNCArODUsOSBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgfQogfQogCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBvbGRlc3RUaW1lVG9SZW1vdmUpCit7CisgICAg
V2ViQ29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKG9sZGVzdFRpbWVU
b1JlbW92ZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA0MzJlZjc3Li41MzA1Zjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC02MzIsNiArNjMyLDE4IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6cmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpjaHJv
bm86OnN5c3RlCiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIGlmIChkYXRhVHlwZXMgJiBXZWJz
aXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzICYmIGlzUGVyc2lzdGVudCgpKSB7
CisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CisKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIGNhbGxiYWNrQWdncmVnYXRv
cl0geworICAgICAgICAgICAgcGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhtb2RpZmllZFNp
bmNlKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChkYXRhVHlwZXMgJiBXZWJz
aXRlRGF0YVR5cGVQbHVnSW5EYXRhICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNsYXNz
IFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDM2YjYwYzcuLjBjODI5ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtOTMsNiArOTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOworICAgIHN0YXRpYyB2b2lkIHBs
YXRmb3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQ
b29scygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
Z2VQcm94eUVmbC5jcHAKaW5kZXggMWU5MmYwNS4uYWRjNjQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgogCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxXZWJD
b3JlOjpSZWNlbnRTZWFyYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IG9sZGVzdFRpbWVUb1JlbW92ZSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVDaGFuZ2VkKGNv
bnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKIHsKICAgICBtX2VkaXRvclN0YXRlID0gZWRp
dG9yU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKaW5kZXggODQ1ZjM3MS4uMmRiYWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgogI2luY2x1ZGUg
PGd0ay9ndGt4Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC02Nyw2ICs2
OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmlu
ZyYsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG9sZGVzdFRpbWVUb1JlbW92ZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9y
U3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKIHsKICAgICBtX2Vk
aXRvclN0YXRlID0gZWRpdG9yU3RhdGU7Ci0tIAoyLjQuOSAoQXBwbGUgR2l0LTYwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264196</attachid>
            <date>2015-10-27 22:45:41 -0700</date>
            <delta_ts>2015-11-05 11:40:56 -0800</delta_ts>
            <desc>Fix variable name issue in patch committed</desc>
            <filename>0001-Rename-the-variable-to-avoid-conflict-between-the-va.patch</filename>
            <type>text/plain</type>
            <size>2168</size>
            <attacher name="Zach Li">a.tion.surf</attacher>
            
              <data encoding="base64">RnJvbSBhZDU3YWI2NGJkODczOWNhMjYwN2MyMmM1NWJkM2QyZjY0YWYyYjg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaaHVvIExpIDx6YWNobGlAYXBwbGUuY29tPgpEYXRlOiBUdWUs
IDI3IE9jdCAyMDE1IDIyOjM2OjMyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gUmVuYW1lIHRoZSB2
YXJpYWJsZSB0byBhdm9pZCBjb25mbGljdCBiZXR3ZWVuIHRoZSB2YXJpYWJsZQogYW5kIHRoZSBw
YXJhbWV0ZXIuCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgMTEgKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tIHwgIDYgKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQs
IDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY4ZmUyMjIu
LjhjYTU0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMC0yNyAgWmh1byBM
aSAgPHphY2hsaUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHRoZSB2YXJpYWJsZSB0byBh
dm9pZCBjb25mbGljdCBiZXR3ZWVuIHRoZSB2YXJpYWJsZSBhbmQgdGhlIHBhcmFtZXRlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAxOS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dHlwZUNo
ZWNrZWRSZWNlbnRTZWFyY2hlc1JlbW92aW5nUmVjZW50U2VhcmNoZXNBZGRlZEFmdGVyRGF0ZSk6
IFJlbmFtZSBgZGF0ZWAKKyAgICAgICAgdG8gYGRhdGVBZGRlZGAgc28gdGhhdCBpdCBkb2VzIG5v
dCBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHBhcmFtZXRlciBwYXNzZWQgaW4uCisKIDIwMTUt
MTAtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBpZCBvZiBp
ZnJhbWUgaW5jb3JyZWN0bHkgc2V0cyB3aW5kb3cgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQppbmRleCAxNDVmYTA4
Li5iODM0MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TZWFy
Y2hQb3B1cE1lbnVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
ZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQpAQCAtMTEyLDExICsxMTIsMTEgQEAgc3RhdGljIFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+IHR5cGVDaGVja2VkUmVjZW50U2VhcmNoZXNSZW1vdmluZ1JlY2Vu
dFNlYXJjaGVzQWQKIAogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGVudHJpZXNU
b1JlbW92ZSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAg
ICBmb3IgKE5TRGljdGlvbmFyeSAqcmVjZW50U2VhcmNoIGluIHJlY2VudFNlYXJjaGVzKSB7Ci0g
ICAgICAgICAgICBOU0RhdGUgKmRhdGUgPSB0eXBlQ2hlY2tlZERhdGVJblJlY2VudFNlYXJjaChy
ZWNlbnRTZWFyY2gpOwotICAgICAgICAgICAgaWYgKCFkYXRlKQorICAgICAgICAgICAgTlNEYXRl
ICpkYXRlQWRkZWQgPSB0eXBlQ2hlY2tlZERhdGVJblJlY2VudFNlYXJjaChyZWNlbnRTZWFyY2gp
OworICAgICAgICAgICAgaWYgKCFkYXRlQWRkZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgICAgICAgICAgaWYgKFtkYXRlIGNvbXBhcmU6ZGF0ZV0gPT0gTlNPcmRlcmVkRGVz
Y2VuZGluZykKKyAgICAgICAgICAgIGlmIChbZGF0ZUFkZGVkIGNvbXBhcmU6ZGF0ZV0gPT0gTlNP
cmRlcmVkRGVzY2VuZGluZykKICAgICAgICAgICAgICAgICBbZW50cmllc1RvUmVtb3ZlIGFkZE9i
amVjdDpyZWNlbnRTZWFyY2hdOwogICAgICAgICB9CiAKLS0gCjIuNC45IChBcHBsZSBHaXQtNjAp
Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>