<?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>192021</bug_id>
          
          <creation_ts>2018-11-27 11:28:31 -0800</creation_ts>
          <short_desc>Add SPI to publish NSProgress on active downloads</short_desc>
          <delta_ts>2018-11-29 16:38:38 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Quesada">david_quesada</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481987</commentid>
    <comment_count>0</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-27 11:28:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/44405661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482822</commentid>
    <comment_count>1</comment_count>
      <attachid>355968</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-28 19:59:31 -0800</bug_when>
    <thetext>Created attachment 355968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482827</commentid>
    <comment_count>2</comment_count>
      <attachid>355971</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-28 20:12:24 -0800</bug_when>
    <thetext>Created attachment 355971
Patch v2

Try to fix the mac-wk2 build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482845</commentid>
    <comment_count>3</comment_count>
      <attachid>355976</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-28 21:36:31 -0800</bug_when>
    <thetext>Created attachment 355976
Patch v3

Attempted build fixes for ios, ios-sim, and mac-wk2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482852</commentid>
    <comment_count>4</comment_count>
      <attachid>355981</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-28 22:33:08 -0800</bug_when>
    <thetext>Created attachment 355981
Patch v4

Add the _addSubscriber… and _removeSubscriber: methods to NSProgressSPI.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482959</commentid>
    <comment_count>5</comment_count>
      <attachid>355981</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-29 09:00:16 -0800</bug_when>
    <thetext>Comment on attachment 355981
Patch v4

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

&gt; Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp:165
&gt; +    if (Download* download = m_downloads.get(downloadID))

auto*

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.h:44
&gt; +- (instancetype)initWithDownloadTask:(NSURLSessionDownloadTask *)task download:(WebKit::Download *)download URL:(NSURL *)fileURL sandboxExtension:(WTF::RefPtr&lt;WebKit::SandboxExtension&gt;)sandboxExtension;

WTF:: should be unnecessary.

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:57
&gt; +#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300

We&apos;re trying to give platform checks names in WebKit now.

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:62
&gt; +    [self setUserInfoObject:fileURL forKey:NSProgressFileURLKey];

Documentation is a little lacking in https://developer.apple.com/documentation/foundation/nsprogressfileurlkey?language=objc and https://developer.apple.com/documentation/foundation/nsprogress/1416782-publish?language=objc
Could you help me understand what this file URL is used for?

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:66
&gt; +    WeakObjCPtr&lt;WKDownloadProgress&gt; weakSelf { self };

This can be inside the lambda capture.

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:74
&gt; +        WebKit::Download* download = strongSelf.get()-&gt;m_download;
&gt; +        if (download)

if (auto* download = ...)

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:116
&gt; +    [m_task.get() removeObserver:self forKeyPath:@&quot;countOfBytesExpectedToReceive&quot;];
&gt; +    [m_task.get() removeObserver:self forKeyPath:@&quot;countOfBytesReceived&quot;];

These strings should be given a name and instantiated once.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:52
&gt; +- (void)publishProgressAtURL:(NSURL *)URL WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA))

Availability macros only go in the header.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:54
&gt; +    _download-&gt;publishProgress({ URL });

initializer list is probably unnecessary.

&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:110
&gt; +    if (NetworkProcessProxy* networkProcess = m_processPool-&gt;networkProcess()) {

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482990</commentid>
    <comment_count>6</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-29 09:56:33 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 355981 [details]
&gt; Patch v4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355981&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp:165
&gt; &gt; +    if (Download* download = m_downloads.get(downloadID))
&gt; 
&gt; auto*
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.h:44
&gt; &gt; +- (instancetype)initWithDownloadTask:(NSURLSessionDownloadTask *)task download:(WebKit::Download *)download URL:(NSURL *)fileURL sandboxExtension:(WTF::RefPtr&lt;WebKit::SandboxExtension&gt;)sandboxExtension;
&gt; 
&gt; WTF:: should be unnecessary.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:57
&gt; &gt; +#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300
&gt; 
&gt; We&apos;re trying to give platform checks names in WebKit now.

Sure. Would adding

#define HAVE_NSPROGRESS_FILE_PROPERTIES (!PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300)

to the top of the file be ok?

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:62
&gt; &gt; +    [self setUserInfoObject:fileURL forKey:NSProgressFileURLKey];
&gt; 
&gt; Documentation is a little lacking in
&gt; https://developer.apple.com/documentation/foundation/
&gt; nsprogressfileurlkey?language=objc and
&gt; https://developer.apple.com/documentation/foundation/nsprogress/1416782-
&gt; publish?language=objc
&gt; Could you help me understand what this file URL is used for?

In order to make an NSProgress available across processes, it needs to have an associated file URL to look it up. e.g. if process A says &quot;I&apos;m operating on file:///foo and file:///bar right now&quot; and process B says &quot;I want to display the progress of any operations on file:///bar&quot;, then the system will give process B an NSProgress that acts as a proxy to the NSProgress that process A published on file:///bar. (i.e. Updates that process A makes to the process will be sent to process B; and process B can -cancel, -pause, or -resume its NSProgress, and the system will invoke handlers on process A&apos;s NSProgress).

Without the file URLs (or other types of identifiers that would serve a similar purpose), the workflow above would be Process A saying &quot;I&apos;m operating on two things right now, but I&apos;m not going to say what they are.&quot;, Process B saying &quot;Let me know if somebody is working on a thing.&quot;, and the system having no idea what process B wants to be notified of or who process A is trying to share its progresses with.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:66
&gt; &gt; +    WeakObjCPtr&lt;WKDownloadProgress&gt; weakSelf { self };
&gt; 
&gt; This can be inside the lambda capture.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:74
&gt; &gt; +        WebKit::Download* download = strongSelf.get()-&gt;m_download;
&gt; &gt; +        if (download)
&gt; 
&gt; if (auto* download = ...)
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:116
&gt; &gt; +    [m_task.get() removeObserver:self forKeyPath:@&quot;countOfBytesExpectedToReceive&quot;];
&gt; &gt; +    [m_task.get() removeObserver:self forKeyPath:@&quot;countOfBytesReceived&quot;];
&gt; 
&gt; These strings should be given a name and instantiated once.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:52
&gt; &gt; +- (void)publishProgressAtURL:(NSURL *)URL WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA))
&gt; 
&gt; Availability macros only go in the header.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:54
&gt; &gt; +    _download-&gt;publishProgress({ URL });
&gt; 
&gt; initializer list is probably unnecessary.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:110
&gt; &gt; +    if (NetworkProcessProxy* networkProcess = m_processPool-&gt;networkProcess()) {
&gt; 
&gt; auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483016</commentid>
    <comment_count>7</comment_count>
      <attachid>356020</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2018-11-29 10:33:27 -0800</bug_when>
    <thetext>Created attachment 356020
Patch v5

w/ Alex&apos;s suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483287</commentid>
    <comment_count>8</comment_count>
      <attachid>356020</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 16:38:37 -0800</bug_when>
    <thetext>Comment on attachment 356020
Patch v5

Clearing flags on attachment: 356020

Committed r238710: &lt;https://trac.webkit.org/changeset/238710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483288</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 16:38:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355968</attachid>
            <date>2018-11-28 19:59:31 -0800</date>
            <delta_ts>2018-11-28 20:12:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>file_192021.txt</filename>
            <type>text/plain</type>
            <size>67292</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDI1YjVhYWUzZjM1OWJhMWVhNjYwNjM3NzNlZmVkY2IxMDIwN2IwZmMNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFdlZCBOb3Yg
MjggMTk6NTc6NDMgMjAxOCAtMDgwMA0KDQogICAgQWRkIFNQSSB0byBwdWJsaXNoIE5TUHJvZ3Jl
c3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0KICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIwMjENCiAgICByZGFyOi8vcHJvYmxlbS80NDQwNTY2MQ0KICAgIA0KICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNvdXJjZS9XZWJLaXQ6DQog
ICAgDQogICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgY2xpZW50cyB0byBhbGxvdyBvdGhlciBwcm9j
ZXNzZXMgdG8gbW9uaXRvciB0aGUgc3RhdGUgb2YgYWN0aXZlDQogICAgZG93bmxvYWRzLiBPbiBD
b2NvYSBwbGF0Zm9ybXMsIHRoaXMgY2FuIGJlIGRvbmUgYnkgY3JlYXRpbmcgYW4gTlNQcm9ncmVz
cywgcHVibGlzaGluZw0KICAgIGl0IG9uIGFuIGFwcHJvcHJpYXRlIGZpbGUgVVJMIChwb3RlbnRp
YWxseSBhIGRpZmZlcmVudCBmaWxlIFVSTCB0aGFuIHdoZXJlIHRoZSBkb3dubG9hZA0KICAgIGRh
dGEgaXMgYmVpbmcgd3JpdHRlbiksIHVwZGF0aW5nIHByb3BlcnRpZXMgb24gaXQgYXMgdGhlIGRv
d25sb2FkIG1ha2VzIHByb2dyZXNzLCBhbmQNCiAgICB3aXJpbmcgdXAgYSBjYW5jZWxsYXRpb24g
aGFuZGxlciB0aGF0IGFsbG93cyBpdCB0byBiZSByZW1vdGVseSBjYW5jZWxlZC4gSW50ZXJlc3Rl
ZA0KICAgIGNsaWVudHMgY2FuIHRoZW4gc3Vic2NyaWJlIHRvIHByb2dyZXNzIG9uIHRoYXQgVVJM
IGFuZCByZWNlaXZlIGEgcHJveHkgdG8gdGhlIHByb2dyZXNzDQogICAgdGhhdCBXZWJLaXQgcHVi
bGlzaGVzLg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6fkRvd25sb2FkKToNCiAgICAoV2ViS2l0OjpEb3du
bG9hZDo6cGxhdGZvcm1EZXN0cm95RG93bmxvYWQpOg0KICAgICAgICBBZGQgYSBwbGF0Zm9ybS1j
dXN0b21pemFibGUgaG9vayBmb3IgZGVzdHJ1Y3RpbmcgdGhlIERvd25sb2FkLiBEb3dubG9hZENv
Y29hLm1tDQogICAgICAgIHdpbGwgaW50ZXJhY3Qgd2l0aCBpdHMgT2JqZWN0aXZlLUMgTlNQcm9n
cmVzcyBpbnN0YW5jZSBhdCB0aGlzIHBvaW50Lg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNr
QmVjYW1lRG93bmxvYWRUYXNrKToNCiAgICAgICAgU2VlIGNvbW1lbnRzIGZvciBwdWJsaXNoRG93
bmxvYWRQcm9ncmVzcygpLg0KICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cHVibGlzaERv
d25sb2FkUHJvZ3Jlc3MpOg0KICAgICAgICBJZiB0aGUgcHJvdmlkZWQgZG93bmxvYWRJRCBjb3Jy
ZXNwb25kcyB0byBhIG5vbi1QZW5kaW5nIERvd25sb2FkLCBoYW5kIHRoZSBVUkwNCiAgICAgICAg
YW5kIGEgbWF0Y2hpbmcgc2FuZGJveCBleHRlbnNpb24gdG8gdGhlIERvd25sb2FkIHNvIGl0IGNh
biBjcmVhdGUgaXRzIHByb2dyZXNzLg0KICAgICAgICBPdGhlcndpc2UsIHN0b3JlIHRoZSBVUkwg
YW5kIHNhbmRib3ggZXh0ZW5zaW9uIG9uIHRoZSBQZW5kaW5nRG93bmxvYWQgdG8gYmUgdXNlZA0K
ICAgICAgICBsYXRlciB3aGVuIHRoZSBmdWxsIERvd25sb2FkIGlzIGNyZWF0ZWQuIFdoZW4gdGhp
cyBoYXBwZW5zLCBkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzaygpDQogICAgICAgIHdpbGwgdGVs
bCB0aGUgUGVuZGluZ0Rvd25sb2FkIGFib3V0IHRoZSBEb3dubG9hZCBpdCBoYXMgYmVjb21lLiBU
aGUgUGVuZGluZ0Rvd25sb2FkDQogICAgICAgIHdpbGwgdGhlbiByZWxheSB0aGUgcHJvZ3Jlc3Mg
VVJMIGFuZCBzYW5kYm94IGV4dGVuc2lvbiB0byB0aGUgRG93bmxvYWQuDQogICAgDQogICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQogICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoNCiAgICAoV2ViS2l0OjpQZW5k
aW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQogICAgICAgIFN0b3JlIHRoZSBwcm9ncmVz
cyBpbmZvIGZvciBsYXRlciB1c2UsIHdoZW4gdGhlIHByb3BlciBEb3dubG9hZCBpcyBjcmVhdGVk
Lg0KICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6ZGlkQmVjb21lRG93bmxvYWQpOg0KICAg
ICAgICBJZiB0aGVyZSB3YXMgYSBwcm9ncmVzcyBVUkwgcHJvdmlkZWQgZWFybGllciwgdGVsbCB0
aGUgRG93bmxvYWQgY29ycmVzcG9uZGluZyB0byB0aGlzDQogICAgICAgIFBlbmRpbmdEb3dubG9h
ZCB0byBwdWJsaXNoIGl0cyBwcm9ncmVzcyB1c2luZyB0aGF0IFVSTC4NCiAgICANCiAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoNCiAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0KICAgIChXZWJLaXQ6OkRv
d25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCk6DQogICAgICAgIFdoZW4gdGhlIERvd25s
b2FkIGlzIGRlc3Ryb3llZCAoaS5lLiB3aGVuIHRoZSBkb3dubG9hZCBzdWNjZWVkcywgZmFpbHMs
IG9yIGlzIGNhbmNlbGVkKSwNCiAgICAgICAgdW5wdWJsaXNoIHRoZSBwcm9ncmVzcywgc2luY2Ug
dGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBhY3Rpdml0eSB0byByZXBvcnQuDQogICAgKFdlYktpdDo6
RG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQogICAgICAgIFJlc29sdmUgdGhlIHNhbmRib3gg
ZXh0ZW5zaW9uLCBjcmVhdGUgYSBwcm9ncmVzcyBjb25maWd1cmVkIHRvIHJlZmxlY3QgdGhlIHBy
b2dyZXNzIG9mDQogICAgICAgIHRoaXMgRG93bmxvYWQncyBOU1VSTFNlc3Npb25Eb3dubG9hZFRh
c2ssIGFuZCBwdWJsaXNoIGl0IGF0IHRoZSBnaXZlbiBmaWxlIFVSTC4NCiAgICANCiAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguDQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1t
OiBBZGRlZC4NCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgaW5pdFdpdGhEb3dubG9hZFRhc2s6
ZG93bmxvYWQ6VVJMOnNhbmRib3hFeHRlbnNpb246XSk6DQogICAgICAgIENvbmZpZ3VyZSB0aGlz
IHByb2dyZXNzLCBzdGFydCBvYnNlcnZpbmcgcHJvcGVydGllcyBvbiB0aGUgZG93bmxvYWQgdGFz
ayB0aGF0IHRoaXMNCiAgICAgICAgcHJvZ3Jlc3Mgd2lsbCByZWZsZWN0LCBhbmQgY29ubmVjdCB0
aGUgY2FuY2VsbGF0aW9uIGhhbmRsZXIgb2YgdGhlIHByb2dyZXNzIHRvIGNhbmNlbA0KICAgICAg
ICB0aGUgY29ycmVzcG9uZGluZyBEb3dubG9hZC4NCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3Mg
cHVibGlzaF0pOg0KICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyB1bnB1Ymxpc2hdKToNCiAgICAg
ICAgT3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyB0byBjb25zdW1lIGFuZCByZXZva2UgdGhlIHNhbmRi
b3ggZXh0ZW5zaW9uIHRvIG1ha2Ugc3VyZSB0aGUNCiAgICAgICAgcHJvY2VzcyBoYXMgYWNjZXNz
IHRvIHRoZSBwcm9ncmVzcyBmaWxlIHdoaWxlIHRoZSBwcm9ncmVzcyB3aWxsIGJlIHB1Ymxpc2hl
ZC4NCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgZGVhbGxvY10pOg0KICAgICgtW1dLRG93bmxv
YWRQcm9ncmVzcyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0
Ol0pOg0KICAgICAgICBXaGVuIGVpdGhlciBieXRlIGNvdW50IChudW1iZXIgcmVjZWl2ZWQsIG9y
IG51bWJlciBleHBlY3RlZCB0byByZWNlaXZlKSBvZiB0aGUgZG93bmxvYWQNCiAgICAgICAgdGFz
ayBjaGFuZ2VzLCB1cGRhdGUgdGhpcyBwcm9ncmVzcyB0byByZWZsZWN0IHRoYXQuDQogICAgDQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQogICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToNCiAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoNCiAgICANCiAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOg0KICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiOg0KICAgICAgICBBbGxvdyBs
b29raW5nIHVwIHRoZSBzZXJ2aWNlcyB0aGF0IG1hbmFnZXMgcHVibGlzaGVkIE5TUHJvZ3Jlc3Nl
cy4NCiAgICANCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoNCiAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW06DQogICAgKC1bX1dLRG93bmxvYWQg
cHVibGlzaFByb2dyZXNzQXRVUkw6XSk6DQogICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwOg0KICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnB1Ymxpc2hQcm9ncmVz
cyk6DQogICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCiAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KICAgIA0KICAgIFRvb2xzOg0KICAgIA0K
ICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIHByb2dyZXNzLXB1Ymxpc2hpbmcgZnVu
Y3Rpb25hbGl0eSBpbiBhIHZhcmlldHkgb2Ygc2NlbmFyaW9zLg0KICAgIA0KICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQogICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06IEFkZGVk
Lg0KICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgcmVnaXN0ZXJQcm90b2NvbEZv
clRlc3RSdW5uZXI6XSk6DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCB1bnJl
Z2lzdGVyUHJvdG9jb2xdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIGNh
bkluaXRXaXRoUmVxdWVzdDpdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29s
IGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOg0KICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UHJvdG9jb2wgcmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OnRvUmVxdWVzdDpdKToNCiAgICAo
LVtEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHN0YXJ0TG9hZGluZ10pOg0KICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToNCiAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciBpbml0XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RS
dW5uZXIgc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHRlYXJEb3duXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgX2RpZEdldFByb2dyZXNzOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVy
IF9kaWRMb3NlUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBz
dWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0VG9Mb3NlUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciBzdGFydERvd25sb2FkOmV4cGVjdGVkTGVuZ3RoOl0pOg0KICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIHB1Ymxpc2hQcm9ncmVzc10pOg0KICAgICgtW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UnVubmVyIHJlY2VpdmVEYXRhOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIGZpbmlzaERvd25sb2FkVGFza10pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIGZhaWxEb3dubG9hZFRhc2tdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0Rm9yRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbl0pOg0KICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXSk6DQogICAg
KC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkQ2FuY2VsZWRdKToN
CiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGYWlsZWRd
KToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yVXBkYXRlZENvbXBs
ZXRlZFVuaXRDb3VudF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIG9ic2Vy
dmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6DQogICAgKC1bRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhh
bmRsZXI6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlk
U3RhcnQ6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRp
ZENyZWF0ZURlc3RpbmF0aW9uOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVy
IF9kb3dubG9hZERpZEZpbmlzaDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBfZG93bmxvYWREaWRDYW5jZWw6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOg0KICAgIChURVNUKToNCg0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4IDJm
OWUzYWVjODE5Li4xOGYwZTYzNDIxMSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nDQorKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSw4NiBAQA0KKzIw
MTgtMTEtMjggIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisg
ICAgICAgIEFkZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMN
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjEN
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIGNsaWVu
dHMgdG8gYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvIG1vbml0b3IgdGhlIHN0YXRlIG9mIGFjdGl2
ZQ0KKyAgICAgICAgZG93bmxvYWRzLiBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgY2FuIGJlIGRv
bmUgYnkgY3JlYXRpbmcgYW4gTlNQcm9ncmVzcywgcHVibGlzaGluZw0KKyAgICAgICAgaXQgb24g
YW4gYXBwcm9wcmlhdGUgZmlsZSBVUkwgKHBvdGVudGlhbGx5IGEgZGlmZmVyZW50IGZpbGUgVVJM
IHRoYW4gd2hlcmUgdGhlIGRvd25sb2FkDQorICAgICAgICBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4p
LCB1cGRhdGluZyBwcm9wZXJ0aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9ncmVz
cywgYW5kDQorICAgICAgICB3aXJpbmcgdXAgYSBjYW5jZWxsYXRpb24gaGFuZGxlciB0aGF0IGFs
bG93cyBpdCB0byBiZSByZW1vdGVseSBjYW5jZWxlZC4gSW50ZXJlc3RlZA0KKyAgICAgICAgY2xp
ZW50cyBjYW4gdGhlbiBzdWJzY3JpYmUgdG8gcHJvZ3Jlc3Mgb24gdGhhdCBVUkwgYW5kIHJlY2Vp
dmUgYSBwcm94eSB0byB0aGUgcHJvZ3Jlc3MNCisgICAgICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hl
cy4NCisNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoN
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjp+RG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVzdHJveURvd25sb2FkKToNCisgICAgICAgICAgICBBZGQg
YSBwbGF0Zm9ybS1jdXN0b21pemFibGUgaG9vayBmb3IgZGVzdHJ1Y3RpbmcgdGhlIERvd25sb2Fk
LiBEb3dubG9hZENvY29hLm1tDQorICAgICAgICAgICAgd2lsbCBpbnRlcmFjdCB3aXRoIGl0cyBP
YmplY3RpdmUtQyBOU1Byb2dyZXNzIGluc3RhbmNlIGF0IHRoaXMgcG9pbnQuDQorDQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2spOg0KKyAgICAg
ICAgICAgIFNlZSBjb21tZW50cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4NCisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MpOg0K
KyAgICAgICAgICAgIElmIHRoZSBwcm92aWRlZCBkb3dubG9hZElEIGNvcnJlc3BvbmRzIHRvIGEg
bm9uLVBlbmRpbmcgRG93bmxvYWQsIGhhbmQgdGhlIFVSTA0KKyAgICAgICAgICAgIGFuZCBhIG1h
dGNoaW5nIHNhbmRib3ggZXh0ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRl
IGl0cyBwcm9ncmVzcy4NCisgICAgICAgICAgICBPdGhlcndpc2UsIHN0b3JlIHRoZSBVUkwgYW5k
IHNhbmRib3ggZXh0ZW5zaW9uIG9uIHRoZSBQZW5kaW5nRG93bmxvYWQgdG8gYmUgdXNlZA0KKyAg
ICAgICAgICAgIGxhdGVyIHdoZW4gdGhlIGZ1bGwgRG93bmxvYWQgaXMgY3JlYXRlZC4gV2hlbiB0
aGlzIGhhcHBlbnMsIGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKCkNCisgICAgICAgICAgICB3
aWxsIHRlbGwgdGhlIFBlbmRpbmdEb3dubG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJl
Y29tZS4gVGhlIFBlbmRpbmdEb3dubG9hZA0KKyAgICAgICAgICAgIHdpbGwgdGhlbiByZWxheSB0
aGUgcHJvZ3Jlc3MgVVJMIGFuZCBzYW5kYm94IGV4dGVuc2lvbiB0byB0aGUgRG93bmxvYWQuDQor
DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoN
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6
DQorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQor
ICAgICAgICAgICAgU3RvcmUgdGhlIHByb2dyZXNzIGluZm8gZm9yIGxhdGVyIHVzZSwgd2hlbiB0
aGUgcHJvcGVyIERvd25sb2FkIGlzIGNyZWF0ZWQuDQorICAgICAgICAoV2ViS2l0OjpQZW5kaW5n
RG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKToNCisgICAgICAgICAgICBJZiB0aGVyZSB3YXMg
YSBwcm9ncmVzcyBVUkwgcHJvdmlkZWQgZWFybGllciwgdGVsbCB0aGUgRG93bmxvYWQgY29ycmVz
cG9uZGluZyB0byB0aGlzDQorICAgICAgICAgICAgUGVuZGluZ0Rvd25sb2FkIHRvIHB1Ymxpc2gg
aXRzIHByb2dyZXNzIHVzaW5nIHRoYXQgVVJMLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWQ6OnBsYXRmb3JtRGVzdHJveURvd25sb2FkKToNCisgICAgICAgICAgICBXaGVuIHRoZSBE
b3dubG9hZCBpcyBkZXN0cm95ZWQgKGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZh
aWxzLCBvciBpcyBjYW5jZWxlZCksDQorICAgICAgICAgICAgdW5wdWJsaXNoIHRoZSBwcm9ncmVz
cywgc2luY2UgdGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBhY3Rpdml0eSB0byByZXBvcnQuDQorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cHVibGlzaFByb2dyZXNzKToNCisgICAgICAgICAgICBS
ZXNvbHZlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiwgY3JlYXRlIGEgcHJvZ3Jlc3MgY29uZmlndXJl
ZCB0byByZWZsZWN0IHRoZSBwcm9ncmVzcyBvZg0KKyAgICAgICAgICAgIHRoaXMgRG93bmxvYWQn
cyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2ssIGFuZCBwdWJsaXNoIGl0IGF0IHRoZSBnaXZlbiBm
aWxlIFVSTC4NCisNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dL
RG93bmxvYWRQcm9ncmVzcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQuaC4NCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbTogQWRkZWQuDQorICAgICAgICAoLVtXS0Rv
d25sb2FkUHJvZ3Jlc3MgaW5pdFdpdGhEb3dubG9hZFRhc2s6ZG93bmxvYWQ6VVJMOnNhbmRib3hF
eHRlbnNpb246XSk6DQorICAgICAgICAgICAgQ29uZmlndXJlIHRoaXMgcHJvZ3Jlc3MsIHN0YXJ0
IG9ic2VydmluZyBwcm9wZXJ0aWVzIG9uIHRoZSBkb3dubG9hZCB0YXNrIHRoYXQgdGhpcw0KKyAg
ICAgICAgICAgIHByb2dyZXNzIHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxh
dGlvbiBoYW5kbGVyIG9mIHRoZSBwcm9ncmVzcyB0byBjYW5jZWwNCisgICAgICAgICAgICB0aGUg
Y29ycmVzcG9uZGluZyBEb3dubG9hZC4NCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBw
dWJsaXNoXSk6DQorICAgICAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQor
ICAgICAgICAgICAgT3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyB0byBjb25zdW1lIGFuZCByZXZva2Ug
dGhlIHNhbmRib3ggZXh0ZW5zaW9uIHRvIG1ha2Ugc3VyZSB0aGUNCisgICAgICAgICAgICBwcm9j
ZXNzIGhhcyBhY2Nlc3MgdG8gdGhlIHByb2dyZXNzIGZpbGUgd2hpbGUgdGhlIHByb2dyZXNzIHdp
bGwgYmUgcHVibGlzaGVkLg0KKyAgICAgICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIGRlYWxsb2Nd
KToNCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOg0KKyAgICAgICAgICAgIFdoZW4gZWl0aGVyIGJ5
dGUgY291bnQgKG51bWJlciByZWNlaXZlZCwgb3IgbnVtYmVyIGV4cGVjdGVkIHRvIHJlY2VpdmUp
IG9mIHRoZSBkb3dubG9hZA0KKyAgICAgICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRlIHRoaXMg
cHJvZ3Jlc3MgdG8gcmVmbGVjdCB0aGF0Lg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6DQorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHVi
bGlzaERvd25sb2FkUHJvZ3Jlc3MpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoNCisNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46DQorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJv
ZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCisgICAgICAgICAgICBB
bGxvdyBsb29raW5nIHVwIHRoZSBzZXJ2aWNlcyB0aGF0IG1hbmFnZXMgcHVibGlzaGVkIE5TUHJv
Z3Jlc3Nlcy4NCisNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5o
Og0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOg0KKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6DQorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6DQorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3MpOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6DQorDQogMjAxOC0xMS0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ5ODApOiBDcmFzaCBpbiAt
W1dLV2ViVmlldyBfcmVzdG9yZVBhZ2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRlcjpzY2FsZTpdDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwDQppbmRleCA0OTRkOTlmMGViMi4uMTc3ZjliYTQ5YzMgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTc3LDYg
Kzc3LDcgQEAgRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5h
Z2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVINCiANCiBEb3dubG9hZDo6fkRvd25sb2Fk
KCkNCiB7DQorICAgIHBsYXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogICAgIG1fZG93bmxvYWRN
YW5hZ2VyLmRpZERlc3Ryb3lEb3dubG9hZCgpOw0KIH0NCiANCkBAIC0xNzksNiArMTgwLDEwIEBA
IGJvb2wgRG93bmxvYWQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0DQogdm9pZCBE
b3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpDQogew0KIH0NCisNCit2b2lkIERv
d25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCgpDQorew0KK30NCiAjZW5kaWYNCiANCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KaW5kZXggNTkwZjllYjZmODUuLmJkYmM4ZTE1MjYwIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaA0KQEAgLTM3LDYgKzM3LDcgQEANCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KIA0K
ICNpZiBQTEFURk9STShDT0NPQSkNCitPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7DQogT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7DQogI2VuZGlmDQogDQpAQCAtNzMsNiArNzQsOSBA
QCBwdWJsaWM6DQogDQogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik7DQogICAgIHZvaWQgY2FuY2VsKCk7DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lk
IHB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7DQorI2VuZGlmDQogDQogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQ0KICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0NCkBAIC05MSw2ICs5NSw3IEBA
IHByaXZhdGU6DQogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3Zl
cnJpZGU7DQogDQogICAgIHZvaWQgcGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpOw0KKyAgICB2
b2lkIHBsYXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogDQogICAgIGJvb2wgaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkgY29uc3Q7DQogDQpAQCAtMTAzLDYgKzEwOCw3IEBAIHByaXZhdGU6DQog
ICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fZG93bmxvYWQ7DQogI2lmIFBMQVRGT1JNKENP
Q09BKQ0KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2Fk
VGFzazsNCisgICAgUmV0YWluUHRyPE5TUHJvZ3Jlc3M+IG1fcHJvZ3Jlc3M7DQogI2VuZGlmDQog
ICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOw0KICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRO
YW1lOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwDQppbmRleCAxZTI4ZmM5NDI3OC4uNmYwMTA4ZWQxYjYg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwDQpAQCAtNjQsNyArNjQsMTEgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIFANCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9h
ZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYg
ZG93bmxvYWQpDQogew0KICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRv
d25sb2FkSUQpKTsNCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsN
CisgICAgaWYgKGF1dG8gcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLnRha2Uo
ZG93bmxvYWRJRCkpIHsNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgICAgICBwZW5kaW5nRG93
bmxvYWQtPmRpZEJlY29tZURvd25sb2FkKGRvd25sb2FkKTsNCisjZW5kaWYNCisgICAgfQ0KICAg
ICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3du
bG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5yZW1vdmUoZG93bmxvYWRJRCk7DQogICAgIG1f
ZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7DQpAQCAtMTU1LDYg
KzE1OSwxNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJ
RCBkb3dubG9hZElEKQ0KICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jYW5jZWwoKTsNCiB9DQog
DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpwdWJsaXNoRG93
bmxvYWRQcm9ncmVzcyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0K
K3sNCisgICAgaWYgKERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9h
ZElEKSkNCisgICAgICAgIGRvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpKTsNCisgICAgZWxzZSBpZiAoUGVuZGluZ0Rvd25sb2FkKiBw
ZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKQ0KKyAg
ICAgICAgcGVuZGluZ0Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpKTsNCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0K
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9h
ZCkNCiB7DQogICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZC0+ZG93bmxv
YWRJRCgpKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaA0KaW5kZXggNTFkMGVmMTZhNmMuLjgwNzg0MTBkYTMz
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oDQpAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6DQogICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJik7DQogDQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJ
RCk7DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dy
ZXNzKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmKTsNCisjZW5kaWYNCiAgICAgDQogICAgIERvd25sb2FkKiBkb3dubG9hZChEb3dubG9h
ZElEIGRvd25sb2FkSUQpIHsgcmV0dXJuIG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsgfQ0K
IA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuY3BwDQppbmRleCBhMDk5YWIzNWU5NC4uYWVjNGRhMjIzNGMgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuY3BwDQpAQCAtNzUsNiArNzUsMjEgQEAgdm9pZCBQZW5kaW5nRG93
bmxvYWQ6OmNhbmNlbCgpDQogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZENh
bmNlbCh7IH0pKTsNCiB9DQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgUGVuZGluZ0Rv
d25sb2FkOjpwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb24pDQorew0KKyAgICBBU1NFUlQoIW1f
cHJvZ3Jlc3NVUkwuaXNWYWxpZCgpKTsNCisgICAgbV9wcm9ncmVzc1VSTCA9IHVybDsNCisgICAg
bV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOw0K
K30NCisNCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6ZGlkQmVjb21lRG93bmxvYWQoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPERvd25sb2FkPiYgZG93bmxvYWQpDQorew0KKyAgICBpZiAobV9wcm9ncmVz
c1VSTC5pc1ZhbGlkKCkpDQorICAgICAgICBkb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKG1fcHJv
Z3Jlc3NVUkwsIFdURk1vdmUobV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb24pKTsNCit9DQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikNCiB7DQogICAgIHNl
bmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZEZhaWwoZXJyb3IsIHsgfSkpOw0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgNCmluZGV4IGEzODM3NDk4YWJlLi45NDQyZWRiYzQxOCAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oDQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaA0KQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsNCiANCiBuYW1l
c3BhY2UgV2ViS2l0IHsNCiANCitjbGFzcyBEb3dubG9hZDsNCiBjbGFzcyBEb3dubG9hZElEOw0K
IGNsYXNzIE5ldHdvcmtMb2FkOw0KIGNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsNCkBAIC00
OCw2ICs0OSwxMSBAQCBwdWJsaWM6DQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOw0KICAgICB2b2lkIGNhbmNlbCgpOw0KIA0KKyNp
ZiBQTEFURk9STShDT0NPQSkNCisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAgICB2b2lkIGRpZEJlY29t
ZURvd25sb2FkKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mKTsNCisjZW5kaWYNCisN
CiBwcml2YXRlOiAgICANCiAgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuDQogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGUgeyB9DQpAQCAtNjYsNiArNzIsMTEgQEAgcHJp
dmF0ZToNCiBwcml2YXRlOg0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0
d29ya0xvYWQ7DQogICAgIGJvb2wgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsN
CisNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgIFdlYkNvcmU6OlVSTCBtX3Byb2dyZXNzVVJM
Ow0KKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbV9wcm9ncmVzc1NhbmRib3hFeHRlbnNp
b247DQorI2VuZGlmDQogfTsNCiANCiB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCmluZGV4
IGVmZDcxYjIwNDAzLi44NWZiOGI3Y2JjNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0N
CkBAIC0yOSw2ICsyOSw3IEBADQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIg0KICNpbXBvcnQg
Ik5ldHdvcmtTZXNzaW9uQ29jb2EuaCINCiAjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIg0KKyNp
bXBvcnQgIldLRG93bmxvYWRQcm9ncmVzcy5oIg0KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+DQogDQogbmFtZXNwYWNlIFdlYktpdCB7DQpAQCAtODcsNCArODgsMjMgQEAgdm9p
ZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpDQogICAgIH1dOw0KIH0NCiAN
Cit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCgpDQorew0KKyAgICBpZiAo
bV9wcm9ncmVzcykNCisgICAgICAgIFttX3Byb2dyZXNzLmdldCgpIHVucHVibGlzaF07DQorfQ0K
Kw0KK3ZvaWQgRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit7
DQorICAgIEFTU0VSVCghbV9wcm9ncmVzcyk7DQorICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsN
CisNCisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKw0KKyAgICBBU1NFUlQoc2FuZGJv
eEV4dGVuc2lvbik7DQorDQorICAgIG1fcHJvZ3Jlc3MgPSBhZG9wdE5TKFtbV0tEb3dubG9hZFBy
b2dyZXNzIGFsbG9jXSBpbml0V2l0aERvd25sb2FkVGFzazptX2Rvd25sb2FkVGFzay5nZXQoKSBk
b3dubG9hZDp0aGlzIFVSTDooTlNVUkwgKil1cmwgc2FuZGJveEV4dGVuc2lvbjpzYW5kYm94RXh0
ZW5zaW9uXSk7DQorICAgIFttX3Byb2dyZXNzIHB1Ymxpc2hdOw0KK30NCisNCiB9DQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3du
bG9hZFByb2dyZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9j
b2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw
MDAwMDAwMDAwLi4xMjIwMTZlYzc5YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLmgNCkBA
IC0wLDAgKzEsNDQgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisg
KiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNp
bXBvcnQgPEZvdW5kYXRpb24vTlNQcm9ncmVzcy5oPg0KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4N
CisNCituYW1lc3BhY2UgV2ViS2l0IHsNCisNCitjbGFzcyBEb3dubG9hZDsNCitjbGFzcyBTYW5k
Ym94RXh0ZW5zaW9uOw0KKw0KK30NCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0KK0Bp
bnRlcmZhY2UgV0tEb3dubG9hZFByb2dyZXNzIDogTlNQcm9ncmVzcw0KKw0KKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERvd25sb2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopdGFz
ayBkb3dubG9hZDooV2ViS2l0OjpEb3dubG9hZCAqKWRvd25sb2FkIFVSTDooTlNVUkwgKilmaWxl
VVJMIHNhbmRib3hFeHRlbnNpb246KFdURjo6UmVmUHRyPFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bj4pc2FuZGJveEV4dGVuc2lvbjsNCisNCitAZW5kDQorDQorTlNfQVNTVU1FX05PTk5VTExfRU5E
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvV0tEb3dubG9hZFByb2dyZXNzLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1tDQpuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KaW5kZXggMDAwMDAwMDAwMDAuLmZmOWRjMTMxZGJhDQotLS0gL2Rldi9udWxsDQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJv
Z3Jlc3MubW0NCkBAIC0wLDAgKzEsMTE2IEBADQorLyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyAqDQor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
DQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4N
CisgKi8NCisNCisjaW1wb3J0ICJjb25maWcuaCINCisjaW1wb3J0ICJXS0Rvd25sb2FkUHJvZ3Jl
c3MuaCINCisNCisjaW1wb3J0ICJEb3dubG9hZC5oIg0KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
Pg0KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPg0KKw0KK3N0YXRpYyB2b2lkICogV0tEb3du
bG9hZFByb2dyZXNzQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZUNvdW50Q29udGV4dCA9ICZXS0Rvd25s
b2FkUHJvZ3Jlc3NCeXRlc0V4cGVjdGVkVG9SZWNlaXZlQ291bnRDb250ZXh0Ow0KK3N0YXRpYyB2
b2lkICogV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQgPSAmV0tEb3dubG9h
ZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQ7DQorDQorQGltcGxlbWVudGF0aW9uIFdLRG93
bmxvYWRQcm9ncmVzcyB7DQorICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s+
IG1fdGFzazsNCisgICAgV2ViS2l0OjpEb3dubG9hZCogbV9kb3dubG9hZDsNCisgICAgUmVmUHRy
PFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOw0KK30NCisNCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzayAqKXRhc2sgZG93bmxvYWQ6KFdlYktpdDo6RG93bmxvYWQqKWRvd25sb2FkIFVSTDooTlNV
UkwgKilmaWxlVVJMIHNhbmRib3hFeHRlbnNpb246KFJlZlB0cjxXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb24+KXNhbmRib3hFeHRlbnNpb24NCit7DQorICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0
V2l0aFBhcmVudDpuaWwgdXNlckluZm86bmlsXSkpDQorICAgICAgICByZXR1cm4gbmlsOw0KKw0K
KyAgICBtX3Rhc2sgPSB0YXNrOw0KKyAgICBtX2Rvd25sb2FkID0gZG93bmxvYWQ7DQorDQorICAg
IFt0YXNrIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvdW50T2ZCeXRlc0V4cGVjdGVk
VG9SZWNlaXZlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0OldLRG93bmxvYWRQcm9ncmVzc0J5dGVz
RXhwZWN0ZWRUb1JlY2VpdmVDb3VudENvbnRleHRdOw0KKyAgICBbdGFzayBhZGRPYnNlcnZlcjpz
ZWxmIGZvcktleVBhdGg6QCJjb3VudE9mQnl0ZXNSZWNlaXZlZCIgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29u
dGV4dDpXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc1JlY2VpdmVkQ29udGV4dF07DQorDQorICAgIHNl
bGYua2luZCA9IE5TUHJvZ3Jlc3NLaW5kRmlsZTsNCisjaWYgIVBMQVRGT1JNKE1BQykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDANCisgICAgc2VsZi5maWxlT3Bl
cmF0aW9uS2luZCA9IE5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2luZERvd25sb2FkaW5nOw0KKyNl
bmRpZg0KKyAgICBzZWxmLmZpbGVVUkwgPSBmaWxlVVJMOw0KKyAgICBtX3NhbmRib3hFeHRlbnNp
b24gPSBzYW5kYm94RXh0ZW5zaW9uOw0KKw0KKyAgICBXZWFrT2JqQ1B0cjxXS0Rvd25sb2FkUHJv
Z3Jlc3M+IHdlYWtTZWxmIHsgc2VsZiB9Ow0KKyAgICBzZWxmLmNhbmNlbGxhYmxlID0gWUVTOw0K
KyAgICBzZWxmLmNhbmNlbGxhdGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2Fs
bGFibGUoW3dlYWtTZWxmID0gV1RGTW92ZSh3ZWFrU2VsZildIHsNCisgICAgICAgIGF1dG8gc3Ry
b25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOw0KKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQ0KKyAg
ICAgICAgICAgIHJldHVybjsNCisNCisgICAgICAgIFdlYktpdDo6RG93bmxvYWQqIGRvd25sb2Fk
ID0gc3Ryb25nU2VsZi5nZXQoKS0+bV9kb3dubG9hZDsNCisgICAgICAgIGlmIChkb3dubG9hZCkN
CisgICAgICAgICAgICBkb3dubG9hZC0+Y2FuY2VsKCk7DQorICAgIH0pLmdldCgpOw0KKw0KKyAg
ICByZXR1cm4gc2VsZjsNCit9DQorDQorLSAodm9pZClwdWJsaXNoDQorew0KKyAgICBCT09MIGNv
bnN1bWVkRXh0ZW5zaW9uID0gbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7DQorICAgIEFT
U0VSVF9VTlVTRUQoY29uc3VtZWRFeHRlbnNpb24sIGNvbnN1bWVkRXh0ZW5zaW9uKTsNCisNCisg
ICAgW3N1cGVyIHB1Ymxpc2hdOw0KK30NCisNCistICh2b2lkKXVucHVibGlzaA0KK3sNCisgICAg
W3N1cGVyIHVucHVibGlzaF07DQorDQorICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7
DQorICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7DQorfQ0KKw0KKy0gKHZvaWQpZGVh
bGxvYw0KK3sNCisgICAgW21fdGFzay5nZXQoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBh
dGg6QCJjb3VudE9mQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZSJdOw0KKyAgICBbbV90YXNrLmdldCgp
IHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvdW50T2ZCeXRlc1JlY2VpdmVkIl07
DQorDQorICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9uKTsNCisNCisgICAgW3N1cGVyIGRl
YWxsb2NdOw0KK30NCisNCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5
VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dA0KK3sN
CisgICAgaWYgKGNvbnRleHQgPT0gV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNFeHBlY3RlZFRvUmVj
ZWl2ZUNvdW50Q29udGV4dCkgew0KKyAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiB2YWx1ZSA9
IHN0YXRpY19jYXN0PE5TTnVtYmVyICo+KGNoYW5nZVtOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XSk7
DQorICAgICAgICBBU1NFUlQoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
Ow0KKyAgICAgICAgaW50NjRfdCBleHBlY3RlZEJ5dGVDb3VudCA9IHZhbHVlLmdldCgpLmxvbmdM
b25nVmFsdWU7DQorICAgICAgICBzZWxmLnRvdGFsVW5pdENvdW50ID0gKGV4cGVjdGVkQnl0ZUNv
dW50IDw9IDApID8gLTEgOiBleHBlY3RlZEJ5dGVDb3VudDsNCisgICAgfSBlbHNlIGlmIChjb250
ZXh0ID09IFdLRG93bmxvYWRQcm9ncmVzc0J5dGVzUmVjZWl2ZWRDb250ZXh0KSB7DQorICAgICAg
ICBSZXRhaW5QdHI8TlNOdW1iZXI+IHZhbHVlID0gc3RhdGljX2Nhc3Q8TlNOdW1iZXIgKj4oY2hh
bmdlW05TS2V5VmFsdWVDaGFuZ2VOZXdLZXldKTsNCisgICAgICAgIEFTU0VSVChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7DQorICAgICAgICBzZWxmLmNvbXBsZXRlZFVu
aXRDb3VudCA9IHZhbHVlLmdldCgpLmxvbmdMb25nVmFsdWU7DQorICAgIH0gZWxzZQ0KKyAgICAg
ICAgW3N1cGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDpvYmplY3Qg
Y2hhbmdlOmNoYW5nZSBjb250ZXh0OmNvbnRleHRdOw0KK30NCisNCitAZW5kDQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0KaW5kZXggNzQ4OGM5
YjIxMmQuLmY3NDBmNGM2ZWE4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwDQpAQCAtODE5LDYgKzgxOSwxMyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpDQogICAgIGRvd25s
b2FkTWFuYWdlcigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOw0KIH0NCiANCisjaWYgUExB
VEZPUk0oQ09DT0EpDQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHVibGlzaERvd25sb2FkUHJvZ3Jl
c3MoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit7DQorICAgIGRv
d25sb2FkTWFuYWdlcigpLnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKGRvd25sb2FkSUQsIHVybCwg
V1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQorfQ0KKyNlbmRpZg0KKw0KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQgZG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkNCiB7DQogICAgIGRvd25s
b2FkTWFuYWdlcigpLmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGRvd25sb2FkSUQsIFdURk1vdmUo
cmVxdWVzdCkpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaA0KaW5kZXggMTc5ODY2ODk1MzcuLjVkNzk5YjQzMDQ5IDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCkBAIC0yNzQsNiArMjc0LDkgQEAg
cHJpdmF0ZToNCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25s
b2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpOw0KICAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklE
LCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KICAgICB2b2lkIGNh
bmNlbERvd25sb2FkKERvd25sb2FkSUQpOw0KKyNpZiBQTEFURk9STShDT0NPQSkNCisgICAgdm9p
ZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7DQorI2VuZGlmDQogICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
Ow0KICAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93
bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSk7DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCmluZGV4IDk0ZDljMDM0NmJk
Li5mMWUwNDM3ZGZmNiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCkBAIC00OSw2ICs0OSw5IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsNCiAgICAgRG93bmxvYWRSZXF1
ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkRmls
ZW5hbWUpDQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRh
LCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkNCiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQpDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICBQdWJsaXNoRG93bmxvYWRQcm9n
cmVzcyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6VVJMIHVybCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCisj
ZW5kaWYNCiANCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQ0KICAgICBDb250
aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpDQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktp
dC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4NCmluZGV4IGNhYjc5NmRjMWVm
Li4wYzE4MTZmOWI5MSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
bWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4NCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Mu
c2IuaW4NCkBAIC0yOTAsMyArMjkwLDcgQEANCiAgICAgKGxvY2FsIHRjcCkNCiAgICAgKHJlbW90
ZSB0Y3ApKQ0KIA0KKzs7IEZvciByZXBvcnRpbmcgcHJvZ3Jlc3MgZm9yIGFjdGl2ZSBkb3dubG9h
ZHMgPHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxPg0KKyhhbGxvdyBtYWNoLWxvb2t1cA0KKyAgICAo
Z2xvYmFsLW5hbWUgImNvbS5hcHBsZS5Qcm9ncmVzc1JlcG9ydGluZyIpKQ0KKw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5OZXR3b3JraW5nLnNiIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFBy
b2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2INCmluZGV4IGVlMzkxMDU4
ZmM2Li4wYTM5MWRhN2M5MyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1Nh
bmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiDQorKysgYi9T
b3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya2luZy5zYg0KQEAgLTk0LDMgKzk0LDcgQEANCiAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUuV2lyZWxlc3NDb2V4TWFuYWdlciIpDQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLndpZmkubWFuYWdlciIpDQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmlkZW50aXR5
c2VydmljZXNkLmVtYmVkZGVkLmF1dGgiKSkNCisNCis7OyBGb3IgcmVwb3J0aW5nIHByb2dyZXNz
IGZvciBhY3RpdmUgZG93bmxvYWRzIDxyZGFyOi8vcHJvYmxlbS80NDQwNTY2MT4NCisoYWxsb3cg
bWFjaC1sb29rdXANCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuUHJvZ3Jlc3NSZXBvcnRp
bmciKSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5oDQppbmRleCBhY2ZkODM0Mzk1Yy4uNzE4NjkyZDY3MjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaA0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgNCkBAIC0zNiw2ICszNiw4IEBA
IFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSkNCiANCiAtICh2b2lk
KWNhbmNlbDsNCiANCistICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCisN
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsN
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHdlYWspIFdLV2ViVmlldyAqb3JpZ2lu
YXRpbmdXZWJWaWV3Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1VSTCAqPiAqcmVkaXJlY3RDaGFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
My40KSwgaW9zKDExLjMpKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWQubW0NCmluZGV4IDE2YWQ4MTBiN2NhLi4xNjYxNjlmZWE5MCAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQ0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tDQpA
QCAtNDksNiArNDksMTEgQEAgLSAodm9pZCljYW5jZWwNCiAgICAgX2Rvd25sb2FkLT5jYW5jZWwo
KTsNCiB9DQogDQorLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkNCit7DQor
ICAgIF9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKHsgVVJMIH0pOw0KK30NCisNCiAtIChOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0DQogew0KICAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCku
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHANCmluZGV4IGVmYjExNDkzY2ZiLi5hZTkxOGQzYTBjOCAxMDA2NDQNCi0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
DQpAQCAtMTAxLDYgKzEwMSwyMSBAQCB2b2lkIERvd25sb2FkUHJveHk6OnNldE9yaWdpbmF0aW5n
UGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpDQogICAgIG1fb3JpZ2luYXRpbmdQYWdlID0gbWFrZVdl
YWtQdHIocGFnZSk7DQogfQ0KIA0KKyNpZiBQTEFURk9STShDT0NPQSkNCit2b2lkIERvd25sb2Fk
UHJveHk6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmIFVSTCkNCit7DQorICAg
IGlmICghbV9wcm9jZXNzUG9vbCkNCisgICAgICAgIHJldHVybjsNCisNCisgICAgaWYgKE5ldHdv
cmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkgew0KKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsNCisg
ICAgICAgIGJvb2wgY3JlYXRlZFNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoVVJMLmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgaGFuZGxlKTsNCisgICAgICAgIEFTU0VSVF9VTlVTRUQoY3JlYXRlZFNhbmRi
b3hFeHRlbnNpb24sIGNyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uKTsNCisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHVibGlzaERvd25sb2FkUHJv
Z3Jlc3MobV9kb3dubG9hZElELCBVUkwsIGhhbmRsZSksIDApOw0KKyAgICB9DQorfQ0KKyNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkNCisNCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSkNCiB7DQogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7DQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgNCmluZGV4IGUwN2FhYzg5NjAz
Li5mOWI4MjQzNmNlNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgNCkBAIC05NSw2ICs5NSwxMCBAQCBwdWJsaWM6DQogICAgIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHN5c3RlbVByZXZpZXdEb3dubG9hZFJlY3QoKSBjb25zdCB7
IHJldHVybiByZXF1ZXN0KCkuc3lzdGVtUHJldmlld1JlY3QoKTsgfQ0KICNlbmRpZg0KIA0KKyNp
ZiBQTEFURk9STShDT0NPQSkNCisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29y
ZTo6VVJMJik7DQorI2VuZGlmDQorDQogcHJpdmF0ZToNCiAgICAgZXhwbGljaXQgRG93bmxvYWRQ
cm94eShEb3dubG9hZFByb3h5TWFwJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsNCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvag0KaW5kZXggODYxNGY5NzMyODkuLmQxZGUwMGM4M2YxIDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTEw
ODIsNiArMTA4Miw4IEBADQogCQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGlj
YXRpb25NYW5pZmVzdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2MzEwOEY5ODFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmggKi87IH07DQogCQk2MzQ4NDI1MTFGQjI2RTcxMDA5NDZFM0MgLyog
QVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9u
TWFuaWZlc3QuaCAqLzsgfTsNCiAJCTYzNjM1M0E1MUU5ODU4REYwMDA5RjhBRiAvKiBfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2M0ZBQkUxOTFFOTcwRDY1MDAzMDExRDUgLyogX1dLR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07DQorCQk2MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3du
bG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzcyODFBMDIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggKi87
IH07DQorCQk2MzcyODFBMzIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM3MjgxQTEy
MUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5tbSAqLzsgfTsNCiAJCTYzQzMy
QzI2MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNDFFOTgxMEQ5MDA2
OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07DQogCQk2M0MzMkMyODFFOTgxMTkwMDA2OTlCRDAgLyog
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNzFFOTgxMTkwMDA2OTlCRDAgLyogX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggKi87IH07DQogCQk2NUI4NkYxRTEyRjExREUzMDBC
N0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUlu
c3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
DQpAQCAtMzQ5NCw2ICszNDk2LDggQEANCiAJCTYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAvKiBf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07DQogCQk2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGlj
YXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2MzcyODFBMDIxQURDNzQ0MDA5RTBERTYg
LyogV0tEb3dubG9hZFByb2dyZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRQcm9ncmVz
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjM3MjgxQTEyMUFEQzc0NDAwOUUw
REU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRG93
bmxvYWRQcm9ncmVzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzQzMyQzIz
MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAv
KiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CiAJCTYzQzMyQzI3MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Q
b3NpdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQpAQCAtNjgxNSw2
ICs2ODE5LDggQEANCiAJCQlpc2EgPSBQQlhHcm91cDsNCiAJCQljaGlsZHJlbiA9ICgNCiAJCQkJ
NUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gKi8sDQorCQkJCTYz
NzI4MUEwMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLywNCisJCQkJ
NjM3MjgxQTEyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5tbSAqLywNCiAJ
CQkpOw0KIAkJCXBhdGggPSBjb2NvYTsNCiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOw0KQEAg
LTkwOTcsNiArOTEwMyw3IEBADQogCQkJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQwMSAvKiBNb2R1
bGUuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkyRDUwMzY2QjFCQ0RFMTc5MDBFMjBCQjMgLyogTmF0
aXZlV2ViR2VzdHVyZUV2ZW50LmggaW4gSGVhZGVycyAqLywNCiAJCQkJMjYzMTcyQ0YxOEI0Njk0
OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLA0KKwkJCQk2
MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVy
cyAqLywNCiAJCQkJMUFEQ0I4NkIxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25E
YXRhLmggaW4gSGVhZGVycyAqLywNCiAJCQkJMUFCQzNERjYxODk5RTQzNzAwNEYwNjI2IC8qIE5h
dmlnYXRpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTFBNkZCQTJBMTFFNjg2MjcwMERC
MTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIGluIEhlYWRlcnMgKi8sDQpAQCAtMTA3NzUs
NiArMTA3ODIsNyBAQA0KIAkJCQkyRDkyQTc5NDIxMkI2QUQ0MDBGNDkzRkQgLyogTlBWYXJpYW50
RGF0YS5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJQ0RBMjlBMjgxQ0JFQjY3QTAwOTAxQ0NGIC8q
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
DQogCQkJCUNEQTI5QTJBMUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sDQorCQkJCTYzNzI4MUEzMjFB
REM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLywNCiAJ
CQkJMkQ5MTM0NDkyMTJDRjlGMDAwMTI4QUZEIC8qIFBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywN
CiAJCQkJMUE4RUY0Q0MxMjUyNDAzNzAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywNCiAJCQkJMUEyRDkxQTYxMjgxRDczOTAwMUVCOTYyIC8qIFBsdWdp
bkNvbnRyb2xsZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLA0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZw0KaW5kZXggMzcwNjFmNzQ1MjUuLjMzNmE0ODU3
YjBiIDEwMDY0NA0KLS0tIGEvVG9vbHMvQ2hhbmdlTG9nDQorKysgYi9Ub29scy9DaGFuZ2VMb2cN
CkBAIC0xLDMgKzEsNTAgQEANCisyMDE4LTExLTI4ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVl
c2FkYUBhcHBsZS5jb20+DQorDQorICAgICAgICBBZGQgU1BJIHRvIHB1Ymxpc2ggTlNQcm9ncmVz
cyBvbiBhY3RpdmUgZG93bmxvYWRzDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyMDIxDQorICAgICAgICByZGFyOi8vcHJvYmxlbS80NDQwNTY2MQ0K
Kw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBBZGQg
QVBJIHRlc3RzIHRvIGV4ZXJjaXNlIHRoZSBwcm9ncmVzcy1wdWJsaXNoaW5nIGZ1bmN0aW9uYWxp
dHkgaW4gYSB2YXJpZXR5IG9mIHNjZW5hcmlvcy4NCisNCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbTogQWRkZWQu
DQorICAgICAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHJlZ2lzdGVyUHJvdG9j
b2xGb3JUZXN0UnVubmVyOl0pOg0KKyAgICAgICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90
b2NvbCB1bnJlZ2lzdGVyUHJvdG9jb2xdKToNCisgICAgICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOg0KKyAgICAgICAgKCtbRG93bmxvYWRQ
cm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpdKToNCisgICAg
ICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgcmVxdWVzdElzQ2FjaGVFcXVpdmFs
ZW50OnRvUmVxdWVzdDpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9j
b2wgc3RhcnRMb2FkaW5nXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFByb3Rv
Y29sIHN0b3BMb2FkaW5nXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBpbml0XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBzdGFydExv
YWRpbmdXaXRoUHJvdG9jb2w6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciB0ZWFyRG93bl0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIg
X2RpZEdldFByb2dyZXNzOl0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgX2RpZExvc2VQcm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RS
dW5uZXIgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXSk6DQorICAgICAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0VG9Mb3NlUHJvZ3Jlc3NdKToNCisgICAgICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0RG93bmxvYWQ6ZXhwZWN0ZWRMZW5ndGg6XSk6
DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBwdWJsaXNoUHJvZ3Jlc3Nd
KToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHJlY2VpdmVEYXRhOl0p
Og0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgZmluaXNoRG93bmxvYWRU
YXNrXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmYWlsRG93bmxv
YWRUYXNrXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9y
RG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbl0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9n
cmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdKToNCisgICAgICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXSk6DQorICAg
ICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGYWlsZWRd
KToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JVcGRhdGVk
Q29tcGxldGVkVW5pdENvdW50XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOg0KKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIF9kb3dubG9hZERpZFN0YXJ0Ol0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQ
cm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOg0KKyAg
ICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkRmluaXNoOl0p
Og0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkQ2Fu
Y2VsOl0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2Fk
OmRpZEZhaWxXaXRoRXJyb3I6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6DQorICAgICAgICAoVEVTVCk6DQorDQogMjAxOC0xMS0yOCAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+DQogDQogICAgICAgICBbZXdzLWFwcF0g
RmV0Y2ggYnVncyBmcm9tIEJ1Z3ppbGxhIGFuZCBzdWJtaXQgdG8gQnVpbGRib3QNCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qDQppbmRleCBmZjQyOTNmY2IzZi4uMTFkNjQ3ODFmMmQgMTAwNjQ0DQotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvag0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oNCkBAIC0zMTcsNiArMzE3LDcgQEANCiAJCTYzNTRGNEQxMUY3QzNBQjUw
MEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTRGNEQwMUY3QzNBQjUwMEQ4OURGMyAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLzsgfTsNCiAJCTYzNTZGQjIyMUVDNEUw
QkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzU2RkIyMTFFQzRFMEJBMDA0NEJGMTggLyogVmlz
aWJsZUNvbnRlbnRSZWN0Lm1tICovOyB9Ow0KIAkJNjM2MzUzQTcxRTk4NjY1RDAwMDlGOEFGIC8q
IEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM2MzUzQTYxRTk4NjE5NDAw
MDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi87IH07
DQorCQk2MzcyODFBNzIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxvYWRQcm9ncmVzcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNzI4MUE2MjFBRTEz
ODYwMDlFMERFNiAvKiBEb3dubG9hZFByb2dyZXNzLm1tICovOyB9Ow0KIAkJNjNBNjFCOEIxRkFE
MjUxMTAwRjA2ODg1IC8qIGRpc3BsYXktbW9kZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQTYxQjhBMUZBRDIwNEQwMEYwNjg4NSAv
KiBkaXNwbGF5LW1vZGUuaHRtbCAqLzsgfTsNCiAJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFu
aWZlc3QubW0gKi87IH07DQogCQk2QjMwNjEwNjIxOEEzNzI5MDBGNUE4MDIgLyogQ2xvc2luZ1dl
YlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QjMwNjEwNTIxOEEzNzI5MDBGNUE4MDIgLyogQ2xvc2luZ1dlYlZpZXcubW0gKi87IH07DQpAQCAt
MTY1NCw2ICsxNjU1LDcgQEANCiAJCTYzNTRGNEQwMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjM1NkZCMjEx
RUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFZpc2libGVDb250ZW50UmVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CiAJCTYzNjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3Np
dGlvblJlc3VsdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gR2VvbG9jYXRpb25H
ZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CisJCTYzNzI4MUE2MjFBRTEzODYwMDlFMERFNiAvKiBEb3dubG9hZFByb2dyZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWRQcm9ncmVzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsNCiAJCTYzQTYxQjhBMUZBRDIwNEQwMEYwNjg4NSAvKiBkaXNwbGF5LW1vZGUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJkaXNwbGF5LW1vZGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07DQogCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2QjMwNjEwNTIxOEEzNzI5MDBGNUE4MDIgLyogQ2xvc2lu
Z1dlYlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDbG9zaW5nV2ViVmlldy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCkBAIC0yNDEyLDYgKzI0MTQsNyBAQA0KIAkJCQk1MThF
RTUxNjIwQTc4Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9hZGluZy5tbSAqLywNCiAJCQkJ
NTE4RUU1MTcyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xvYWRpbmdQbHVnaW4ubW0g
Ki8sDQogCQkJCUExQTRGRTVEMThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLywNCisJ
CQkJNjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3MubW0gKi8sDQog
CQkJCUY0NjEyOEQ2MjExRTQ4OUMwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFRlc3RzLm1tICovLA0K
IAkJCQlBMTU1MDIyODFFMDUwMjBCMDBBMjRDNTcgLyogRHVwbGljYXRlQ29tcGxldGlvbkhhbmRs
ZXJDYWxscy5tbSAqLywNCiAJCQkJRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5IC8qIEVkaXRvclN0
YXRlVGVzdHMubW0gKi8sDQpAQCAtMzc5Miw2ICszNzk1LDcgQEANCiAJCQkJRjQ1QjYzRkUxRjE5
RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gaW4gU291cmNlcyAqLywNCiAJCQkJ
MzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THMubW0gaW4gU291cmNlcyAqLywNCiAJCQkJNTVBODE3RkMyMTgxMDBFMDAwMDRBMzlBIC8qIEFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8sDQorCQkJCTYzNzI4
MUE3MjFBRTEzODYwMDlFMERFNiAvKiBEb3dubG9hZFByb2dyZXNzLm1tIGluIFNvdXJjZXMgKi8s
DQogCQkJCTdBOTA5QTdEMUQ4Nzc0ODAwMDdFMTBGOCAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwIGlu
IFNvdXJjZXMgKi8sDQogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywNCiAJCQkJMkRFNzFBRkUxRDQ5QzBC
RDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tIGluIFNvdXJjZXMgKi8sDQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dy
ZXNzLm1tDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjI3ZmVjNTMy
NmU0DQotLS0gL2Rldi9udWxsDQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0NCkBAIC0wLDAgKzEsNTcwIEBADQorLyoNCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0K
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW1wb3J0ICJjb25maWcuaCINCisNCisjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiDQorI2ltcG9ydCAiVXRpbGl0aWVzLmgiDQorI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1Byb2dyZXNzLmg+DQorI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
DQorI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPg0KKyNpbXBv
cnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4NCisjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4NCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oPg0KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPg0KKyNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+DQorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
DQorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPg0KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
Pg0KKw0KKyNpZiBXS19BUElfRU5BQkxFRA0KKw0KK0BjbGFzcyBEb3dubG9hZFByb2dyZXNzVGVz
dFByb3RvY29sOw0KKw0KK2VudW0gY2xhc3MgRG93bmxvYWRTdGFydFR5cGUgew0KKyAgICBDb252
ZXJ0TG9hZFRvRG93bmxvYWQsDQorICAgIFN0YXJ0RnJvbU5hdmlnYXRpb25BY3Rpb24sDQorICAg
IFN0YXJ0SW5Qcm9jZXNzUG9vbCwNCit9Ow0KKw0KK0BpbnRlcmZhY2UgRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIF9XS0Rvd25sb2Fk
RGVsZWdhdGU+DQorDQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tEb3dubG9h
ZCAqZG93bmxvYWQ7DQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1Byb2dyZXNz
ICpwcm9ncmVzczsNCisNCistICh2b2lkKXN0YXJ0TG9hZGluZ1dpdGhQcm90b2NvbDooRG93bmxv
YWRQcm9ncmVzc1Rlc3RQcm90b2NvbCAqKXByb3RvY29sOw0KKw0KK0BlbmQNCisNCitAaW50ZXJm
YWNlIERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgOiBOU1VSTFByb3RvY29sDQorQGVuZA0K
Kw0KK0BpbXBsZW1lbnRhdGlvbiBEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sDQorDQorc3Rh
dGljIERvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyICpjdXJyZW50VGVzdFJ1bm5lcjsNCisNCisr
ICh2b2lkKXJlZ2lzdGVyUHJvdG9jb2xGb3JUZXN0UnVubmVyOihEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciAqKXRlc3RSdW5uZXINCit7DQorICAgIGN1cnJlbnRUZXN0UnVubmVyID0gdGVzdFJ1
bm5lcjsNCisgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpzZWxmXTsNCisgICAgW1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
OkAiaHR0cCJdOw0KK30NCisNCisrICh2b2lkKXVucmVnaXN0ZXJQcm90b2NvbA0KK3sNCisgICAg
Y3VycmVudFRlc3RSdW5uZXIgPSBudWxscHRyOw0KKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpAImh0dHAiXTsNCisgICAg
W05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNzOnNlbGZdOw0KK30NCisNCisvLyBNQVJLOiBO
U1VSTFByb3RvY29sIE1ldGhvZHMNCisNCisrIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdA0KK3sNCisgICAgcmV0dXJuIFtyZXF1ZXN0LlVSTC5zY2hlbWUg
Y2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImh0dHAiXSA9PSBOU09yZGVyZWRTYW1lOw0KK30NCisN
CisrIChOU1VSTFJlcXVlc3QgKiljYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdA0KK3sNCisgICAgcmV0dXJuIHJlcXVlc3Q7DQorfQ0KKw0KKysgKEJPT0wp
cmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OihOU1VSTFJlcXVlc3QgKilhIHRvUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopYg0KK3sNCisgICAgcmV0dXJuIE5POw0KK30NCisNCistICh2b2lkKXN0YXJ0
TG9hZGluZw0KK3sNCisgICAgW2N1cnJlbnRUZXN0UnVubmVyIHN0YXJ0TG9hZGluZ1dpdGhQcm90
b2NvbDpzZWxmXTsNCit9DQorDQorLSAodm9pZClzdG9wTG9hZGluZw0KK3sNCit9DQorDQorQGVu
ZA0KKw0KK3N0YXRpYyB2b2lkKiBwcm9ncmVzc09ic2VydmluZ0NvbnRleHQgPSAmcHJvZ3Jlc3NP
YnNlcnZpbmdDb250ZXh0Ow0KKw0KK0BpbXBsZW1lbnRhdGlvbiBEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB7DQorICAgIFJldGFpblB0cjxOU1VSTD4gbV9wcm9ncmVzc1VSTDsNCisgICAgUmV0
YWluUHRyPFRlc3RXS1dlYlZpZXc+IG1fd2ViVmlldzsNCisgICAgUmV0YWluUHRyPGlkPiBtX3By
b2dyZXNzU3Vic2NyaWJlcjsNCisgICAgUmV0YWluUHRyPE5TUHJvZ3Jlc3M+IG1fcHJvZ3Jlc3M7
DQorICAgIFJldGFpblB0cjxfV0tEb3dubG9hZD4gbV9kb3dubG9hZDsNCisgICAgUmV0YWluUHRy
PERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2w+IG1fcHJvdG9jb2w7DQorICAgIEJsb2NrUHRy
PHZvaWQodm9pZCk+IG1fdW5wdWJsaXNoaW5nQmxvY2s7DQorICAgIERvd25sb2FkU3RhcnRUeXBl
IG1fc3RhcnRUeXBlOw0KKyAgICBOU0ludGVnZXIgbV9leHBlY3RlZExlbmd0aDsNCisgICAgYm9v
bCBtX2hhc1Byb2dyZXNzOw0KKyAgICBib29sIG1fbG9zdFByb2dyZXNzOw0KKyAgICBib29sIG1f
ZG93bmxvYWRTdGFydGVkOw0KKyAgICBib29sIG1fZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bjsNCisgICAgYm9vbCBtX2Rvd25sb2FkRmluaXNoZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZENh
bmNlbGVkOw0KKyAgICBib29sIG1fZG93bmxvYWRGYWlsZWQ7DQorICAgIGJvb2wgbV9oYXNVcGRh
dGVkQ29tcGxldGVkVW5pdENvdW50Ow0KK30NCisNCistIChpbnN0YW5jZXR5cGUpaW5pdA0KK3sN
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsNCisNCisgICAgW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UHJvdG9jb2wgcmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6c2VsZl07DQorDQorICAgIE5T
U3RyaW5nICpmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG93bmxvYWQt
cHJvZ3Jlc3MtJUAiLCBbTlNVVUlEIFVVSURdLlVVSURTdHJpbmddOw0KKyAgICBtX3Byb2dyZXNz
VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZU5hbWVdIGlzRGlyZWN0b3J5Ok5PXTsNCisN
CisgICAgY3VycmVudFRlc3RSdW5uZXIgPSBzZWxmOw0KKw0KKyAgICBtX3VucHVibGlzaGluZ0Js
b2NrID0gQmxvY2tQdHI8dm9pZCh2b2lkKT46OmZyb21DYWxsYWJsZShbc2VsZl0gew0KKyAgICAg
ICAgW3NlbGYgX2RpZExvc2VQcm9ncmVzc107DQorICAgIH0pLmdldCgpOw0KKw0KKyAgICByZXR1
cm4gc2VsZjsNCit9DQorDQorLSAoX1dLRG93bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAgcmV0
dXJuIG1fZG93bmxvYWQuZ2V0KCk7DQorfQ0KKw0KKy0gKE5TUHJvZ3Jlc3MgKilwcm9ncmVzcw0K
K3sNCisgICAgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7DQorfQ0KKw0KKy0gKHZvaWQpc3RhcnRM
b2FkaW5nV2l0aFByb3RvY29sOihEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sICopcHJvdG9j
b2wNCit7DQorICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsNCisNCisgICAgYXV0byByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpwcm90b2NvbC5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3gtdGVzdC1maWxlIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6bV9leHBlY3RlZExlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm51bGxwdHJdKTsN
CisgICAgW21fcHJvdG9jb2wuZ2V0KCkuY2xpZW50IFVSTFByb3RvY29sOm1fcHJvdG9jb2wuZ2V0
KCkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpIGNhY2hlU3RvcmFnZVBvbGljeTpO
U1VSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWRdOw0KK30NCisNCistICh2b2lkKXRlYXJEb3duDQor
ew0KKyAgICBpZiAobV93ZWJWaWV3KSB7DQorICAgICAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IG51bGxwdHI7DQorICAgICAg
ICBbbV93ZWJWaWV3LmdldCgpIHJlbW92ZUZyb21TdXBlcnZpZXddOw0KKyAgICAgICAgbV93ZWJW
aWV3ID0gbnVsbHB0cjsNCisgICAgfQ0KKw0KKyAgICBpZiAobV9wcm9ncmVzc1N1YnNjcmliZXIp
IHsNCisgICAgICAgIFtOU1Byb2dyZXNzIHJlbW92ZVN1YnNjcmliZXI6bV9wcm9ncmVzc1N1YnNj
cmliZXIuZ2V0KCldOw0KKyAgICAgICAgbV9wcm9ncmVzc1N1YnNjcmliZXIgPSBudWxscHRyOw0K
KyAgICB9DQorDQorICAgIG1fcHJvZ3Jlc3MgPSBudWxscHRyOw0KKyAgICBtX2Rvd25sb2FkID0g
bnVsbHB0cjsNCisgICAgbV9wcm90b2NvbCA9IG51bGxwdHI7DQorICAgIG1fdW5wdWJsaXNoaW5n
QmxvY2sgPSBudWxscHRyOw0KKw0KKyAgICBbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCB1
bnJlZ2lzdGVyUHJvdG9jb2xdOw0KK30NCisNCistICh2b2lkKV9kaWRHZXRQcm9ncmVzczooTlNQ
cm9ncmVzcyAqKXByb2dyZXNzDQorew0KKyAgICBBU1NFUlQoIW1fcHJvZ3Jlc3MpOw0KKyAgICBt
X3Byb2dyZXNzID0gcHJvZ3Jlc3M7DQorICAgIFtwcm9ncmVzcyBhZGRPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2Vydmlu
Z09wdGlvbk5ldyBjb250ZXh0OnByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dF07DQorICAgIG1faGFz
UHJvZ3Jlc3MgPSB0cnVlOw0KK30NCisNCistICh2b2lkKV9kaWRMb3NlUHJvZ3Jlc3MNCit7DQor
ICAgIEFTU0VSVChtX3Byb2dyZXNzKTsNCisgICAgW21fcHJvZ3Jlc3MuZ2V0KCkgcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50Il07DQorICAgIG1fcHJv
Z3Jlc3MgPSBudWxscHRyOw0KKyAgICBtX2xvc3RQcm9ncmVzcyA9IHRydWU7DQorfQ0KKw0KKy0g
KHZvaWQpc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzDQorew0KKyAgICBpZiAoIW1fcHJvZ3Jl
c3NTdWJzY3JpYmVyKSB7DQorICAgICAgICBhdXRvIHdlYWtTZWxmID0gV2Vha09iakNQdHI8RG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXI+IHsgc2VsZiB9Ow0KKyAgICAgICAgbV9wcm9ncmVzc1N1
YnNjcmliZXIgPSBbTlNQcm9ncmVzcyBhZGRTdWJzY3JpYmVyRm9yRmlsZVVSTDptX3Byb2dyZXNz
VVJMLmdldCgpIHdpdGhQdWJsaXNoaW5nSGFuZGxlcjpCbG9ja1B0cjxOU1Byb2dyZXNzVW5wdWJs
aXNoaW5nSGFuZGxlcihOU1Byb2dyZXNzICopPjo6ZnJvbUNhbGxhYmxlKFt3ZWFrU2VsZl0oTlNQ
cm9ncmVzcyAqcHJvZ3Jlc3MpIHsNCisgICAgICAgICAgICBpZiAoYXV0byBzdHJvbmdTZWxmID0g
d2Vha1NlbGYuZ2V0KCkpIHsNCisgICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYuZ2V0KCkgX2Rp
ZEdldFByb2dyZXNzOnByb2dyZXNzXTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cm9uZ1Nl
bGYtPm1fdW5wdWJsaXNoaW5nQmxvY2suZ2V0KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU1Byb2dyZXNzVW5wdWJsaXNoaW5nSGFuZGxlcj4obmls
KTsNCisgICAgICAgIH0pLmdldCgpXTsNCisgICAgfQ0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJm1faGFzUHJvZ3Jlc3MpOw0KK30NCisNCistICh2b2lkKXdhaXRUb0xvc2VQcm9ncmVz
cw0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2xvc3RQcm9ncmVzcyk7DQor
fQ0KKw0KKy0gKHZvaWQpc3RhcnREb3dubG9hZDooRG93bmxvYWRTdGFydFR5cGUpc3RhcnRUeXBl
IGV4cGVjdGVkTGVuZ3RoOihOU0ludGVnZXIpZXhwZWN0ZWRMZW5ndGgNCit7DQorICAgIG1fc3Rh
cnRUeXBlID0gc3RhcnRUeXBlOw0KKyAgICBtX2V4cGVjdGVkTGVuZ3RoID0gZXhwZWN0ZWRMZW5n
dGg7DQorDQorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7DQorICAgIG1fd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7DQorICAgIG1fd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBzZWxmOw0KKyAgICBtX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNz
UG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IHNlbGY7DQorDQorICAgIGF1dG8gcmVxdWVzdCA9IGFk
b3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL2ZpbGUiXV0pOw0KKw0KKyAgICBzd2l0Y2ggKHN0YXJ0VHlwZSkgew0KKyAg
ICBjYXNlIERvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQ6DQorICAgIGNh
c2UgRG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0RnJvbU5hdmlnYXRpb25BY3Rpb246DQorICAgICAg
ICBbbV93ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOw0KKyAgICAgICAgYnJlYWs7
DQorICAgIGNhc2UgRG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0SW5Qcm9jZXNzUG9vbDoNCisgICAg
ICAgIFttX3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfZG93bmxvYWRV
UkxSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOw0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2Rvd25sb2FkU3RhcnRlZCk7DQorfQ0KKw0K
Ky0gKHZvaWQpcHVibGlzaFByb2dyZXNzDQorew0KKyAgICBBU1NFUlQobV9kb3dubG9hZCk7DQor
DQorICAgIFttX2Rvd25sb2FkLmdldCgpIHB1Ymxpc2hQcm9ncmVzc0F0VVJMOm1fcHJvZ3Jlc3NV
UkwuZ2V0KCldOw0KK30NCisNCistICh2b2lkKXJlY2VpdmVEYXRhOihOU0ludGVnZXIpbGVuZ3Ro
DQorew0KKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOw0KKyAgICB3aGlsZSAobGVuZ3RoLS0gPiAwKSB7DQorICAgICAgICBjb25zdCBjaGFyIGJ5
dGUgPSAnQSc7DQorICAgICAgICBbZGF0YS5nZXQoKSBhcHBlbmRCeXRlczpzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4oJmJ5dGUpIGxlbmd0aDoxXTsNCisgICAgfQ0KKw0KKyAgICBbbV9wcm90b2Nv
bC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2w6bV9wcm90b2NvbC5nZXQoKSBkaWRMb2FkRGF0YTpk
YXRhLmdldCgpXTsNCit9DQorDQorLSAodm9pZClmaW5pc2hEb3dubG9hZFRhc2sNCit7DQorICAg
IFttX3Byb3RvY29sLmdldCgpLmNsaWVudCBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6bV9w
cm90b2NvbC5nZXQoKV07DQorfQ0KKw0KKy0gKHZvaWQpZmFpbERvd25sb2FkVGFzaw0KK3sNCisg
ICAgW21fcHJvdG9jb2wuZ2V0KCkuY2xpZW50IFVSTFByb3RvY29sOm1fcHJvdG9jb2wuZ2V0KCkg
ZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFp
biBjb2RlOk5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgdXNlckluZm86bnVsbHB0cl1d
Ow0KK30NCisNCistICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uDQor
ew0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxvYWREaWRDcmVhdGVEZXN0
aW5hdGlvbik7DQorfQ0KKw0KKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRmluaXNoZWQNCit7DQor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9kb3dubG9hZEZpbmlzaGVkKTsNCit9DQor
DQorLSAodm9pZCl3YWl0Rm9yRG93bmxvYWRDYW5jZWxlZA0KK3sNCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZtX2Rvd25sb2FkQ2FuY2VsZWQpOw0KK30NCisNCistICh2b2lkKXdhaXRG
b3JEb3dubG9hZEZhaWxlZA0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2Rv
d25sb2FkRmFpbGVkKTsNCit9DQorDQorLSAoaW50NjRfdCl3YWl0Rm9yVXBkYXRlZENvbXBsZXRl
ZFVuaXRDb3VudA0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2hhc1VwZGF0
ZWRDb21wbGV0ZWRVbml0Q291bnQpOw0KKyAgICBtX2hhc1VwZGF0ZWRDb21wbGV0ZWRVbml0Q291
bnQgPSBmYWxzZTsNCisNCisgICAgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCkuY29tcGxldGVkVW5p
dENvdW50Ow0KK30NCisNCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5
VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dA0KK3sN
CisgICAgaWYgKGNvbnRleHQgPT0gcHJvZ3Jlc3NPYnNlcnZpbmdDb250ZXh0KSB7DQorICAgICAg
ICBFWFBFQ1RfRVEob2JqZWN0LCBtX3Byb2dyZXNzLmdldCgpKTsNCisgICAgICAgIEVYUEVDVF9T
VFJFUShrZXlQYXRoLlVURjhTdHJpbmcsICJjb21wbGV0ZWRVbml0Q291bnQiKTsNCisgICAgICAg
IG1faGFzVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudCA9IHRydWU7DQorICAgIH0gZWxzZQ0KKyAg
ICAgICAgW3N1cGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDpvYmpl
Y3QgY2hhbmdlOmNoYW5nZSBjb250ZXh0OmNvbnRleHRdOw0KK30NCisNCisvLyBNQVJLOiA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGU+IE1ldGhvZHMNCisNCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRp
b25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXINCit7DQorICAgIGlm
IChtX3N0YXJ0VHlwZSA9PSBEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2Fk
KQ0KKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkKTsNCisgICAgZWxzZQ0KKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOw0KK30NCisNCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZp
Z2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpZGVjaXNpb25IYW5kbGVyDQorew0KKyAgICBpZiAo
bV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0RnJvbU5hdmlnYXRpb25BY3Rp
b24pDQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURv
d25sb2FkKTsNCisgICAgZWxzZQ0KKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93KTsNCit9DQorDQorLy8gTUFSSzogPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IE1ldGhvZHMNCisNCistICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAq
KWRvd25sb2FkDQorew0KKyAgICBBU1NFUlQoIW1fZG93bmxvYWRTdGFydGVkKTsNCisgICAgQVNT
RVJUKCFtX2Rvd25sb2FkKTsNCisNCisgICAgbV9kb3dubG9hZCA9IGRvd25sb2FkOw0KKyAgICBt
X2Rvd25sb2FkU3RhcnRlZCA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3Rp
bmF0aW9uDQorew0KKyAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOw0K
KyAgICBtX2Rvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24gPSB0cnVlOw0KK30NCisNCistICh2
b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAg
RVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdldCgpKTsNCisgICAgbV9kb3dubG9hZEZp
bmlzaGVkID0gdHJ1ZTsNCit9DQorDQorLSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQNCit7DQorICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3dubG9h
ZC5nZXQoKSk7DQorICAgIG1fZG93bmxvYWRDYW5jZWxlZCA9IHRydWU7DQorfQ0KKw0KKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcg0KK3sNCisgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdl
dCgpKTsNCisgICAgbV9kb3dubG9hZEZhaWxlZCA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRp
b25IYW5kbGVyDQorew0KKyAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkp
Ow0KKw0KKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhh
bmRsZTsNCisgICAgUmV0YWluUHRyPE5TU3RyaW5nICo+IHBhdGggPSAoTlNTdHJpbmcgKilXZWJD
b3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVI
YW5kbGUpOw0KKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOw0KKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7DQorDQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywg
cGF0aC5nZXQoKSk7DQorfQ0KKw0KK0BlbmQNCisNCisvLyBFbmQtdG8tZW5kIHRlc3Qgb2Ygc3Vi
c2NyaWJpbmcgdG8gcHJvZ3Jlc3Mgb24gYSBzdWNjZXNzZnVsIGRvd25sb2FkLiBUaGUgY2xpZW50
DQorLy8gc2hvdWxkIGJlIGFibGUgdG8gcmVjZWl2ZSBhbiBOU1Byb2dyZXNzIHRoYXQgaXMgdXBk
YXRlZCBhcyB0aGUgZG93bmxvYWQgbWFrZXMNCisvLyBwcm9ncmVzcywgYW5kIHRoZSBOU1Byb2dy
ZXNzIHNob3VsZCBiZSB1bnB1Ymxpc2hlZCB3aGVuIHRoZSBkb3dubG9hZCBmaW5pc2hlcy4NCitU
RVNUKERvd25sb2FkUHJvZ3Jlc3MsIEJhc2ljU3Vic2NyaXB0aW9uQW5kUHJvZ3Jlc3NVcGRhdGVz
KQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0
RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3Rl
ZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdOw0KKw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorICAgIEVYUEVDVF9FUShb
dGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudF0sIDUwKTsN
CisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jlc3MuZnJhY3Rpb25Db21wbGV0
ZWQsIC41KTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAg
ICBFWFBFQ1RfRVEoW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0
Q291bnRdLCAxMDApOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy5m
cmFjdGlvbkNvbXBsZXRlZCwgMSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERv
d25sb2FkVGFza107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlz
aGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCisvLyBTaW1pbGFyIHRlc3Qg
YXMgYmVmb3JlLCBidXQgaW5pdGlhdGluZyB0aGUgZG93bmxvYWQgYmVmb3JlIHJlY2VpdmluZyBp
dHMgcmVzcG9uc2UuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBTdGFydERvd25sb2FkRnJvbU5h
dmlnYXRpb25BY3Rpb24pDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRGcm9tTmF2aWdh
dGlvbkFjdGlvbiBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBw
dWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0
Rm9yUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YToxMDBdOw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1
bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJE
b3duXTsNCit9DQorDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBTdGFydERvd25sb2FkSW5Qcm9j
ZXNzUG9vbCkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFBy
b2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpTdGFydEluUHJvY2Vzc1Bvb2wgZXhw
ZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNz
XTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6MTAwXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2Fp
dEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3Nl
UHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0K
Ky8vIElmIHRoZSBkb3dubG9hZCBpcyBjYW5jZWxlZCwgdGhlIHByb2dyZXNzIHNob3VsZCBiZSB1
bnB1Ymxpc2hlZC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIExvc2VQcm9ncmVzc1doZW5Eb3du
bG9hZElzQ2FuY2VsZWQpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rv
d25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxp
c2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQ
cm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkuZG93bmxvYWQgY2FuY2VsXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0
KCkgd2FpdEZvckRvd25sb2FkQ2FuY2VsZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0
VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQor
fQ0KKw0KKy8vIElmIHRoZSBkb3dubG9hZCBmYWlscywgdGhlIHByb2dyZXNzIHNob3VsZCBiZSB1
bnB1Ymxpc2hlZC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIExvc2VQcm9ncmVzc1doZW5Eb3du
bG9hZEZhaWxzKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9h
ZCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJv
Z3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jl
c3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIGZhaWxEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3
YWl0Rm9yRG93bmxvYWRGYWlsZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3Nl
UHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0K
Ky8vIENhbmNlbGluZyB0aGUgcHJvZ3Jlc3Mgc2hvdWxkIGNhbmNlbCB0aGUgZG93bmxvYWQuDQor
VEVTVChEb3dubG9hZFByb2dyZXNzLCBDYW5jZWxEb3dubG9hZFdoZW5Qcm9ncmVzc0lzQ2FuY2Vs
ZWQpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Rh
cnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVj
dGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQor
ICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkucHJvZ3Jlc3MgY2FuY2VsXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRv
d25sb2FkQ2FuY2VsZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3NlUHJvZ3Jl
c3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0KKy8vIFB1
Ymxpc2hpbmcgcHJvZ3Jlc3Mgb24gYSBkb3dubG9hZCBhZnRlciBpdCBoYXMgZmluaXNoZWQgc2hv
dWxkIGJlIGEgc2FmZSBuby1vcC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIFB1Ymxpc2hQcm9n
cmVzc0FmdGVyRG93bmxvYWRGaW5pc2hlZCkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFk
b3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252
ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgcmVjZWl2ZURhdGE6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93
bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNo
ZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKw0KKyAgICBb
dGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0KKy8vIFRlc3QgdGhlIGJlaGF2aW9y
IG9mIGEgZG93bmxvYWQgb2YgdW5rbm93biBsZW5ndGguDQorVEVTVChEb3dubG9hZFByb2dyZXNz
LCBJbmRldGVybWluYXRlRG93bmxvYWRTaXplKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0g
YWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQor
ICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNv
bnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDpOU1VSTFJlc3BvbnNlVW5rbm93bkxl
bmd0aF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorICAgIEVYUEVD
VF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLnRvdGFsVW5pdENvdW50LCAtMSk7DQorDQor
ICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsNCisgICAgRVhQRUNUX0VRKFt0
ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50XSwgNTApOw0K
KyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy5mcmFjdGlvbkNvbXBsZXRl
ZCwgMCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLnRvdGFsVW5p
dENvdW50LCAtMSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFz
a107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RS
dW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCisvLyBUZXN0IHRoZSBiZWhhdmlvciB3aGVu
IGEgZG93bmxvYWQgY29udGludWVzIHJldHVybmluZyBkYXRhIGJleW9uZCBpdHMgZXhwZWN0ZWQg
bGVuZ3RoLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgRXh0cmFEYXRhKQ0KK3sNCisgICAgYXV0
byB0ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9j
XSBpbml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxv
YWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDoxMDBdOw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5l
ci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5l
ci5nZXQoKSByZWNlaXZlRGF0YToxNTBdOw0KKyAgICBFWFBFQ1RfRVEoW3Rlc3RSdW5uZXIuZ2V0
KCkgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdLCAxNTApOw0KKyAgICBFWFBFQ1Rf
RVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy5mcmFjdGlvbkNvbXBsZXRlZCwgMS41KTsNCisN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RS
dW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5n
ZXQoKSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFy
RG93bl07DQorfQ0KKw0KKy8vIENsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gcHVibGlzaCBwcm9n
cmVzcyBvbiBhIGRvd25sb2FkIHRoYXQgaGFzIGFscmVhZHkgc3RhcnRlZC4NCitURVNUKERvd25s
b2FkUHJvZ3Jlc3MsIFB1Ymxpc2hQcm9ncmVzc09uUGFydGlhbERvd25sb2FkKQ0KK3sNCisgICAg
YXV0byB0ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFs
bG9jXSBpbml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93
bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDoxMDBd
Ow0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorDQorICAgIC8vIEVu
c3VyZSB0aGF0IHRoZSB0aGUgZGF0YSB0YXNrIGhhcyBiZWNvbWUgYSBkb3dubG9hZCB0YXNrIHNv
IHRoYXQgd2UgdGVzdA0KKyAgICAvLyB0ZWxsaW5nIGEgbGl2ZSBEb3dubG9hZCwgbm90IGEgUGVu
ZGluZ0Rvd25sb2FkLCB0byBwdWJsaXNoIGl0cyBwcm9ncmVzcy4NCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgd2FpdEZvckRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25dOw0KKw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBz
dWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5n
ZXQoKS5wcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291bnQsIDUwKTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAgICBFWFBFQ1RfRVEoW3Rlc3RSdW5uZXIuZ2V0
KCkgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdLCAxMDApOw0KKw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRU
b0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9
DQorDQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355971</attachid>
            <date>2018-11-28 20:12:24 -0800</date>
            <delta_ts>2018-11-28 21:36:31 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>file_192021.txt</filename>
            <type>text/plain</type>
            <size>67477</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGZkNzZmMWQ5ZTk5NzU0Zjc1M2Y0MmM4MDdjZjcyOGQwNDlmNjdiNGINCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFdlZCBOb3Yg
MjggMTk6NTc6NDMgMjAxOCAtMDgwMA0KDQogICAgQWRkIFNQSSB0byBwdWJsaXNoIE5TUHJvZ3Jl
c3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0KICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIwMjENCiAgICByZGFyOi8vcHJvYmxlbS80NDQwNTY2MQ0KICAgIA0KICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNvdXJjZS9XZWJLaXQ6DQog
ICAgDQogICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgY2xpZW50cyB0byBhbGxvdyBvdGhlciBwcm9j
ZXNzZXMgdG8gbW9uaXRvciB0aGUgc3RhdGUgb2YgYWN0aXZlDQogICAgZG93bmxvYWRzLiBPbiBD
b2NvYSBwbGF0Zm9ybXMsIHRoaXMgY2FuIGJlIGRvbmUgYnkgY3JlYXRpbmcgYW4gTlNQcm9ncmVz
cywgcHVibGlzaGluZw0KICAgIGl0IG9uIGFuIGFwcHJvcHJpYXRlIGZpbGUgVVJMIChwb3RlbnRp
YWxseSBhIGRpZmZlcmVudCBmaWxlIFVSTCB0aGFuIHdoZXJlIHRoZSBkb3dubG9hZA0KICAgIGRh
dGEgaXMgYmVpbmcgd3JpdHRlbiksIHVwZGF0aW5nIHByb3BlcnRpZXMgb24gaXQgYXMgdGhlIGRv
d25sb2FkIG1ha2VzIHByb2dyZXNzLCBhbmQNCiAgICB3aXJpbmcgdXAgYSBjYW5jZWxsYXRpb24g
aGFuZGxlciB0aGF0IGFsbG93cyBpdCB0byBiZSByZW1vdGVseSBjYW5jZWxlZC4gSW50ZXJlc3Rl
ZA0KICAgIGNsaWVudHMgY2FuIHRoZW4gc3Vic2NyaWJlIHRvIHByb2dyZXNzIG9uIHRoYXQgVVJM
IGFuZCByZWNlaXZlIGEgcHJveHkgdG8gdGhlIHByb2dyZXNzDQogICAgdGhhdCBXZWJLaXQgcHVi
bGlzaGVzLg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6fkRvd25sb2FkKToNCiAgICAoV2ViS2l0OjpEb3du
bG9hZDo6cGxhdGZvcm1EZXN0cm95RG93bmxvYWQpOg0KICAgICAgICBBZGQgYSBwbGF0Zm9ybS1j
dXN0b21pemFibGUgaG9vayBmb3IgZGVzdHJ1Y3RpbmcgdGhlIERvd25sb2FkLiBEb3dubG9hZENv
Y29hLm1tDQogICAgICAgIHdpbGwgaW50ZXJhY3Qgd2l0aCBpdHMgT2JqZWN0aXZlLUMgTlNQcm9n
cmVzcyBpbnN0YW5jZSBhdCB0aGlzIHBvaW50Lg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcDoNCiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNr
QmVjYW1lRG93bmxvYWRUYXNrKToNCiAgICAgICAgU2VlIGNvbW1lbnRzIGZvciBwdWJsaXNoRG93
bmxvYWRQcm9ncmVzcygpLg0KICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cHVibGlzaERv
d25sb2FkUHJvZ3Jlc3MpOg0KICAgICAgICBJZiB0aGUgcHJvdmlkZWQgZG93bmxvYWRJRCBjb3Jy
ZXNwb25kcyB0byBhIG5vbi1QZW5kaW5nIERvd25sb2FkLCBoYW5kIHRoZSBVUkwNCiAgICAgICAg
YW5kIGEgbWF0Y2hpbmcgc2FuZGJveCBleHRlbnNpb24gdG8gdGhlIERvd25sb2FkIHNvIGl0IGNh
biBjcmVhdGUgaXRzIHByb2dyZXNzLg0KICAgICAgICBPdGhlcndpc2UsIHN0b3JlIHRoZSBVUkwg
YW5kIHNhbmRib3ggZXh0ZW5zaW9uIG9uIHRoZSBQZW5kaW5nRG93bmxvYWQgdG8gYmUgdXNlZA0K
ICAgICAgICBsYXRlciB3aGVuIHRoZSBmdWxsIERvd25sb2FkIGlzIGNyZWF0ZWQuIFdoZW4gdGhp
cyBoYXBwZW5zLCBkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzaygpDQogICAgICAgIHdpbGwgdGVs
bCB0aGUgUGVuZGluZ0Rvd25sb2FkIGFib3V0IHRoZSBEb3dubG9hZCBpdCBoYXMgYmVjb21lLiBU
aGUgUGVuZGluZ0Rvd25sb2FkDQogICAgICAgIHdpbGwgdGhlbiByZWxheSB0aGUgcHJvZ3Jlc3Mg
VVJMIGFuZCBzYW5kYm94IGV4dGVuc2lvbiB0byB0aGUgRG93bmxvYWQuDQogICAgDQogICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6DQogICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoNCiAgICAoV2ViS2l0OjpQZW5k
aW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQogICAgICAgIFN0b3JlIHRoZSBwcm9ncmVz
cyBpbmZvIGZvciBsYXRlciB1c2UsIHdoZW4gdGhlIHByb3BlciBEb3dubG9hZCBpcyBjcmVhdGVk
Lg0KICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6ZGlkQmVjb21lRG93bmxvYWQpOg0KICAg
ICAgICBJZiB0aGVyZSB3YXMgYSBwcm9ncmVzcyBVUkwgcHJvdmlkZWQgZWFybGllciwgdGVsbCB0
aGUgRG93bmxvYWQgY29ycmVzcG9uZGluZyB0byB0aGlzDQogICAgICAgIFBlbmRpbmdEb3dubG9h
ZCB0byBwdWJsaXNoIGl0cyBwcm9ncmVzcyB1c2luZyB0aGF0IFVSTC4NCiAgICANCiAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoNCiAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0KICAgIChXZWJLaXQ6OkRv
d25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCk6DQogICAgICAgIFdoZW4gdGhlIERvd25s
b2FkIGlzIGRlc3Ryb3llZCAoaS5lLiB3aGVuIHRoZSBkb3dubG9hZCBzdWNjZWVkcywgZmFpbHMs
IG9yIGlzIGNhbmNlbGVkKSwNCiAgICAgICAgdW5wdWJsaXNoIHRoZSBwcm9ncmVzcywgc2luY2Ug
dGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBhY3Rpdml0eSB0byByZXBvcnQuDQogICAgKFdlYktpdDo6
RG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQogICAgICAgIFJlc29sdmUgdGhlIHNhbmRib3gg
ZXh0ZW5zaW9uLCBjcmVhdGUgYSBwcm9ncmVzcyBjb25maWd1cmVkIHRvIHJlZmxlY3QgdGhlIHBy
b2dyZXNzIG9mDQogICAgICAgIHRoaXMgRG93bmxvYWQncyBOU1VSTFNlc3Npb25Eb3dubG9hZFRh
c2ssIGFuZCBwdWJsaXNoIGl0IGF0IHRoZSBnaXZlbiBmaWxlIFVSTC4NCiAgICANCiAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguDQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1t
OiBBZGRlZC4NCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgaW5pdFdpdGhEb3dubG9hZFRhc2s6
ZG93bmxvYWQ6VVJMOnNhbmRib3hFeHRlbnNpb246XSk6DQogICAgICAgIENvbmZpZ3VyZSB0aGlz
IHByb2dyZXNzLCBzdGFydCBvYnNlcnZpbmcgcHJvcGVydGllcyBvbiB0aGUgZG93bmxvYWQgdGFz
ayB0aGF0IHRoaXMNCiAgICAgICAgcHJvZ3Jlc3Mgd2lsbCByZWZsZWN0LCBhbmQgY29ubmVjdCB0
aGUgY2FuY2VsbGF0aW9uIGhhbmRsZXIgb2YgdGhlIHByb2dyZXNzIHRvIGNhbmNlbA0KICAgICAg
ICB0aGUgY29ycmVzcG9uZGluZyBEb3dubG9hZC4NCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3Mg
cHVibGlzaF0pOg0KICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyB1bnB1Ymxpc2hdKToNCiAgICAg
ICAgT3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyB0byBjb25zdW1lIGFuZCByZXZva2UgdGhlIHNhbmRi
b3ggZXh0ZW5zaW9uIHRvIG1ha2Ugc3VyZSB0aGUNCiAgICAgICAgcHJvY2VzcyBoYXMgYWNjZXNz
IHRvIHRoZSBwcm9ncmVzcyBmaWxlIHdoaWxlIHRoZSBwcm9ncmVzcyB3aWxsIGJlIHB1Ymxpc2hl
ZC4NCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgZGVhbGxvY10pOg0KICAgICgtW1dLRG93bmxv
YWRQcm9ncmVzcyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0
Ol0pOg0KICAgICAgICBXaGVuIGVpdGhlciBieXRlIGNvdW50IChudW1iZXIgcmVjZWl2ZWQsIG9y
IG51bWJlciBleHBlY3RlZCB0byByZWNlaXZlKSBvZiB0aGUgZG93bmxvYWQNCiAgICAgICAgdGFz
ayBjaGFuZ2VzLCB1cGRhdGUgdGhpcyBwcm9ncmVzcyB0byByZWZsZWN0IHRoYXQuDQogICAgDQog
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6DQogICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToNCiAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoNCiAgICANCiAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOg0KICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiOg0KICAgICAgICBBbGxvdyBs
b29raW5nIHVwIHRoZSBzZXJ2aWNlcyB0aGF0IG1hbmFnZXMgcHVibGlzaGVkIE5TUHJvZ3Jlc3Nl
cy4NCiAgICANCiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoNCiAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW06DQogICAgKC1bX1dLRG93bmxvYWQg
cHVibGlzaFByb2dyZXNzQXRVUkw6XSk6DQogICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwOg0KICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnB1Ymxpc2hQcm9ncmVz
cyk6DQogICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCiAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KICAgIA0KICAgIFRvb2xzOg0KICAgIA0K
ICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIHByb2dyZXNzLXB1Ymxpc2hpbmcgZnVu
Y3Rpb25hbGl0eSBpbiBhIHZhcmlldHkgb2Ygc2NlbmFyaW9zLg0KICAgIA0KICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQogICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06IEFkZGVk
Lg0KICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgcmVnaXN0ZXJQcm90b2NvbEZv
clRlc3RSdW5uZXI6XSk6DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCB1bnJl
Z2lzdGVyUHJvdG9jb2xdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIGNh
bkluaXRXaXRoUmVxdWVzdDpdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29s
IGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOg0KICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UHJvdG9jb2wgcmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OnRvUmVxdWVzdDpdKToNCiAgICAo
LVtEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHN0YXJ0TG9hZGluZ10pOg0KICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToNCiAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciBpbml0XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RS
dW5uZXIgc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHRlYXJEb3duXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgX2RpZEdldFByb2dyZXNzOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVy
IF9kaWRMb3NlUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBz
dWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0VG9Mb3NlUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciBzdGFydERvd25sb2FkOmV4cGVjdGVkTGVuZ3RoOl0pOg0KICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIHB1Ymxpc2hQcm9ncmVzc10pOg0KICAgICgtW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UnVubmVyIHJlY2VpdmVEYXRhOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIGZpbmlzaERvd25sb2FkVGFza10pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIGZhaWxEb3dubG9hZFRhc2tdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0Rm9yRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbl0pOg0KICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXSk6DQogICAg
KC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkQ2FuY2VsZWRdKToN
CiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGYWlsZWRd
KToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yVXBkYXRlZENvbXBs
ZXRlZFVuaXRDb3VudF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIG9ic2Vy
dmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6DQogICAgKC1bRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhh
bmRsZXI6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlk
U3RhcnQ6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRp
ZENyZWF0ZURlc3RpbmF0aW9uOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVy
IF9kb3dubG9hZERpZEZpbmlzaDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBfZG93bmxvYWREaWRDYW5jZWw6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOg0KICAgIChURVNUKToNCg0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4IDJm
OWUzYWVjODE5Li4xOGYwZTYzNDIxMSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nDQorKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSw4NiBAQA0KKzIw
MTgtMTEtMjggIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisg
ICAgICAgIEFkZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMN
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjEN
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIGNsaWVu
dHMgdG8gYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvIG1vbml0b3IgdGhlIHN0YXRlIG9mIGFjdGl2
ZQ0KKyAgICAgICAgZG93bmxvYWRzLiBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgY2FuIGJlIGRv
bmUgYnkgY3JlYXRpbmcgYW4gTlNQcm9ncmVzcywgcHVibGlzaGluZw0KKyAgICAgICAgaXQgb24g
YW4gYXBwcm9wcmlhdGUgZmlsZSBVUkwgKHBvdGVudGlhbGx5IGEgZGlmZmVyZW50IGZpbGUgVVJM
IHRoYW4gd2hlcmUgdGhlIGRvd25sb2FkDQorICAgICAgICBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4p
LCB1cGRhdGluZyBwcm9wZXJ0aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9ncmVz
cywgYW5kDQorICAgICAgICB3aXJpbmcgdXAgYSBjYW5jZWxsYXRpb24gaGFuZGxlciB0aGF0IGFs
bG93cyBpdCB0byBiZSByZW1vdGVseSBjYW5jZWxlZC4gSW50ZXJlc3RlZA0KKyAgICAgICAgY2xp
ZW50cyBjYW4gdGhlbiBzdWJzY3JpYmUgdG8gcHJvZ3Jlc3Mgb24gdGhhdCBVUkwgYW5kIHJlY2Vp
dmUgYSBwcm94eSB0byB0aGUgcHJvZ3Jlc3MNCisgICAgICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hl
cy4NCisNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoN
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjp+RG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVzdHJveURvd25sb2FkKToNCisgICAgICAgICAgICBBZGQg
YSBwbGF0Zm9ybS1jdXN0b21pemFibGUgaG9vayBmb3IgZGVzdHJ1Y3RpbmcgdGhlIERvd25sb2Fk
LiBEb3dubG9hZENvY29hLm1tDQorICAgICAgICAgICAgd2lsbCBpbnRlcmFjdCB3aXRoIGl0cyBP
YmplY3RpdmUtQyBOU1Byb2dyZXNzIGluc3RhbmNlIGF0IHRoaXMgcG9pbnQuDQorDQorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2spOg0KKyAgICAg
ICAgICAgIFNlZSBjb21tZW50cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4NCisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MpOg0K
KyAgICAgICAgICAgIElmIHRoZSBwcm92aWRlZCBkb3dubG9hZElEIGNvcnJlc3BvbmRzIHRvIGEg
bm9uLVBlbmRpbmcgRG93bmxvYWQsIGhhbmQgdGhlIFVSTA0KKyAgICAgICAgICAgIGFuZCBhIG1h
dGNoaW5nIHNhbmRib3ggZXh0ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRl
IGl0cyBwcm9ncmVzcy4NCisgICAgICAgICAgICBPdGhlcndpc2UsIHN0b3JlIHRoZSBVUkwgYW5k
IHNhbmRib3ggZXh0ZW5zaW9uIG9uIHRoZSBQZW5kaW5nRG93bmxvYWQgdG8gYmUgdXNlZA0KKyAg
ICAgICAgICAgIGxhdGVyIHdoZW4gdGhlIGZ1bGwgRG93bmxvYWQgaXMgY3JlYXRlZC4gV2hlbiB0
aGlzIGhhcHBlbnMsIGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKCkNCisgICAgICAgICAgICB3
aWxsIHRlbGwgdGhlIFBlbmRpbmdEb3dubG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJl
Y29tZS4gVGhlIFBlbmRpbmdEb3dubG9hZA0KKyAgICAgICAgICAgIHdpbGwgdGhlbiByZWxheSB0
aGUgcHJvZ3Jlc3MgVVJMIGFuZCBzYW5kYm94IGV4dGVuc2lvbiB0byB0aGUgRG93bmxvYWQuDQor
DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoN
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6
DQorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQor
ICAgICAgICAgICAgU3RvcmUgdGhlIHByb2dyZXNzIGluZm8gZm9yIGxhdGVyIHVzZSwgd2hlbiB0
aGUgcHJvcGVyIERvd25sb2FkIGlzIGNyZWF0ZWQuDQorICAgICAgICAoV2ViS2l0OjpQZW5kaW5n
RG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKToNCisgICAgICAgICAgICBJZiB0aGVyZSB3YXMg
YSBwcm9ncmVzcyBVUkwgcHJvdmlkZWQgZWFybGllciwgdGVsbCB0aGUgRG93bmxvYWQgY29ycmVz
cG9uZGluZyB0byB0aGlzDQorICAgICAgICAgICAgUGVuZGluZ0Rvd25sb2FkIHRvIHB1Ymxpc2gg
aXRzIHByb2dyZXNzIHVzaW5nIHRoYXQgVVJMLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOg0KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWQ6OnBsYXRmb3JtRGVzdHJveURvd25sb2FkKToNCisgICAgICAgICAgICBXaGVuIHRoZSBE
b3dubG9hZCBpcyBkZXN0cm95ZWQgKGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZh
aWxzLCBvciBpcyBjYW5jZWxlZCksDQorICAgICAgICAgICAgdW5wdWJsaXNoIHRoZSBwcm9ncmVz
cywgc2luY2UgdGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBhY3Rpdml0eSB0byByZXBvcnQuDQorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cHVibGlzaFByb2dyZXNzKToNCisgICAgICAgICAgICBS
ZXNvbHZlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiwgY3JlYXRlIGEgcHJvZ3Jlc3MgY29uZmlndXJl
ZCB0byByZWZsZWN0IHRoZSBwcm9ncmVzcyBvZg0KKyAgICAgICAgICAgIHRoaXMgRG93bmxvYWQn
cyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2ssIGFuZCBwdWJsaXNoIGl0IGF0IHRoZSBnaXZlbiBm
aWxlIFVSTC4NCisNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dL
RG93bmxvYWRQcm9ncmVzcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQuaC4NCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbTogQWRkZWQuDQorICAgICAgICAoLVtXS0Rv
d25sb2FkUHJvZ3Jlc3MgaW5pdFdpdGhEb3dubG9hZFRhc2s6ZG93bmxvYWQ6VVJMOnNhbmRib3hF
eHRlbnNpb246XSk6DQorICAgICAgICAgICAgQ29uZmlndXJlIHRoaXMgcHJvZ3Jlc3MsIHN0YXJ0
IG9ic2VydmluZyBwcm9wZXJ0aWVzIG9uIHRoZSBkb3dubG9hZCB0YXNrIHRoYXQgdGhpcw0KKyAg
ICAgICAgICAgIHByb2dyZXNzIHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxh
dGlvbiBoYW5kbGVyIG9mIHRoZSBwcm9ncmVzcyB0byBjYW5jZWwNCisgICAgICAgICAgICB0aGUg
Y29ycmVzcG9uZGluZyBEb3dubG9hZC4NCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBw
dWJsaXNoXSk6DQorICAgICAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQor
ICAgICAgICAgICAgT3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyB0byBjb25zdW1lIGFuZCByZXZva2Ug
dGhlIHNhbmRib3ggZXh0ZW5zaW9uIHRvIG1ha2Ugc3VyZSB0aGUNCisgICAgICAgICAgICBwcm9j
ZXNzIGhhcyBhY2Nlc3MgdG8gdGhlIHByb2dyZXNzIGZpbGUgd2hpbGUgdGhlIHByb2dyZXNzIHdp
bGwgYmUgcHVibGlzaGVkLg0KKyAgICAgICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIGRlYWxsb2Nd
KToNCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOg0KKyAgICAgICAgICAgIFdoZW4gZWl0aGVyIGJ5
dGUgY291bnQgKG51bWJlciByZWNlaXZlZCwgb3IgbnVtYmVyIGV4cGVjdGVkIHRvIHJlY2VpdmUp
IG9mIHRoZSBkb3dubG9hZA0KKyAgICAgICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRlIHRoaXMg
cHJvZ3Jlc3MgdG8gcmVmbGVjdCB0aGF0Lg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6DQorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHVi
bGlzaERvd25sb2FkUHJvZ3Jlc3MpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoNCisNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46DQorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJv
ZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCisgICAgICAgICAgICBB
bGxvdyBsb29raW5nIHVwIHRoZSBzZXJ2aWNlcyB0aGF0IG1hbmFnZXMgcHVibGlzaGVkIE5TUHJv
Z3Jlc3Nlcy4NCisNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5o
Og0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOg0KKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6DQorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6DQorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3MpOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoNCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6DQorDQogMjAxOC0xMS0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ5ODApOiBDcmFzaCBpbiAt
W1dLV2ViVmlldyBfcmVzdG9yZVBhZ2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRlcjpzY2FsZTpdDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwDQppbmRleCA0OTRkOTlmMGViMi4uMTc3ZjliYTQ5YzMgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTc3LDYg
Kzc3LDcgQEAgRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5h
Z2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVINCiANCiBEb3dubG9hZDo6fkRvd25sb2Fk
KCkNCiB7DQorICAgIHBsYXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogICAgIG1fZG93bmxvYWRN
YW5hZ2VyLmRpZERlc3Ryb3lEb3dubG9hZCgpOw0KIH0NCiANCkBAIC0xNzksNiArMTgwLDEwIEBA
IGJvb2wgRG93bmxvYWQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0DQogdm9pZCBE
b3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpDQogew0KIH0NCisNCit2b2lkIERv
d25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCgpDQorew0KK30NCiAjZW5kaWYNCiANCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KaW5kZXggNTkwZjllYjZmODUuLmJkYmM4ZTE1MjYwIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaA0KQEAgLTM3LDYgKzM3LDcgQEANCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KIA0K
ICNpZiBQTEFURk9STShDT0NPQSkNCitPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7DQogT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7DQogI2VuZGlmDQogDQpAQCAtNzMsNiArNzQsOSBA
QCBwdWJsaWM6DQogDQogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik7DQogICAgIHZvaWQgY2FuY2VsKCk7DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lk
IHB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7DQorI2VuZGlmDQogDQogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQ0KICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0NCkBAIC05MSw2ICs5NSw3IEBA
IHByaXZhdGU6DQogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3Zl
cnJpZGU7DQogDQogICAgIHZvaWQgcGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpOw0KKyAgICB2
b2lkIHBsYXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogDQogICAgIGJvb2wgaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkgY29uc3Q7DQogDQpAQCAtMTAzLDYgKzEwOCw3IEBAIHByaXZhdGU6DQog
ICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fZG93bmxvYWQ7DQogI2lmIFBMQVRGT1JNKENP
Q09BKQ0KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2Fk
VGFzazsNCisgICAgUmV0YWluUHRyPE5TUHJvZ3Jlc3M+IG1fcHJvZ3Jlc3M7DQogI2VuZGlmDQog
ICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOw0KICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRO
YW1lOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwDQppbmRleCAxZTI4ZmM5NDI3OC4uNmYwMTA4ZWQxYjYg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwDQpAQCAtNjQsNyArNjQsMTEgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIFANCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9h
ZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYg
ZG93bmxvYWQpDQogew0KICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRv
d25sb2FkSUQpKTsNCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsN
CisgICAgaWYgKGF1dG8gcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLnRha2Uo
ZG93bmxvYWRJRCkpIHsNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgICAgICBwZW5kaW5nRG93
bmxvYWQtPmRpZEJlY29tZURvd25sb2FkKGRvd25sb2FkKTsNCisjZW5kaWYNCisgICAgfQ0KICAg
ICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3du
bG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5yZW1vdmUoZG93bmxvYWRJRCk7DQogICAgIG1f
ZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7DQpAQCAtMTU1LDYg
KzE1OSwxNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJ
RCBkb3dubG9hZElEKQ0KICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jYW5jZWwoKTsNCiB9DQog
DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpwdWJsaXNoRG93
bmxvYWRQcm9ncmVzcyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0K
K3sNCisgICAgaWYgKERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9h
ZElEKSkNCisgICAgICAgIGRvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpKTsNCisgICAgZWxzZSBpZiAoUGVuZGluZ0Rvd25sb2FkKiBw
ZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKQ0KKyAg
ICAgICAgcGVuZGluZ0Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpKTsNCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0K
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9h
ZCkNCiB7DQogICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZC0+ZG93bmxv
YWRJRCgpKSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaA0KaW5kZXggNTFkMGVmMTZhNmMuLjgwNzg0MTBkYTMz
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oDQpAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6DQogICAgIHZv
aWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJik7DQogDQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJ
RCk7DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dy
ZXNzKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmKTsNCisjZW5kaWYNCiAgICAgDQogICAgIERvd25sb2FkKiBkb3dubG9hZChEb3dubG9h
ZElEIGRvd25sb2FkSUQpIHsgcmV0dXJuIG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsgfQ0K
IA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuY3BwDQppbmRleCBhMDk5YWIzNWU5NC4uYWVjNGRhMjIzNGMgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuY3BwDQpAQCAtNzUsNiArNzUsMjEgQEAgdm9pZCBQZW5kaW5nRG93
bmxvYWQ6OmNhbmNlbCgpDQogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZENh
bmNlbCh7IH0pKTsNCiB9DQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgUGVuZGluZ0Rv
d25sb2FkOjpwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb24pDQorew0KKyAgICBBU1NFUlQoIW1f
cHJvZ3Jlc3NVUkwuaXNWYWxpZCgpKTsNCisgICAgbV9wcm9ncmVzc1VSTCA9IHVybDsNCisgICAg
bV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOw0K
K30NCisNCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6ZGlkQmVjb21lRG93bmxvYWQoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPERvd25sb2FkPiYgZG93bmxvYWQpDQorew0KKyAgICBpZiAobV9wcm9ncmVz
c1VSTC5pc1ZhbGlkKCkpDQorICAgICAgICBkb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKG1fcHJv
Z3Jlc3NVUkwsIFdURk1vdmUobV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb24pKTsNCit9DQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikNCiB7DQogICAgIHNl
bmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZEZhaWwoZXJyb3IsIHsgfSkpOw0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgNCmluZGV4IGEzODM3NDk4YWJlLi45NDQyZWRiYzQxOCAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oDQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaA0KQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsNCiANCiBuYW1l
c3BhY2UgV2ViS2l0IHsNCiANCitjbGFzcyBEb3dubG9hZDsNCiBjbGFzcyBEb3dubG9hZElEOw0K
IGNsYXNzIE5ldHdvcmtMb2FkOw0KIGNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsNCkBAIC00
OCw2ICs0OSwxMSBAQCBwdWJsaWM6DQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOw0KICAgICB2b2lkIGNhbmNlbCgpOw0KIA0KKyNp
ZiBQTEFURk9STShDT0NPQSkNCisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAgICB2b2lkIGRpZEJlY29t
ZURvd25sb2FkKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mKTsNCisjZW5kaWYNCisN
CiBwcml2YXRlOiAgICANCiAgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuDQogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGUgeyB9DQpAQCAtNjYsNiArNzIsMTEgQEAgcHJp
dmF0ZToNCiBwcml2YXRlOg0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0
d29ya0xvYWQ7DQogICAgIGJvb2wgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsN
CisNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgIFdlYkNvcmU6OlVSTCBtX3Byb2dyZXNzVVJM
Ow0KKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbV9wcm9ncmVzc1NhbmRib3hFeHRlbnNp
b247DQorI2VuZGlmDQogfTsNCiANCiB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCmluZGV4
IGVmZDcxYjIwNDAzLi44NWZiOGI3Y2JjNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0N
CkBAIC0yOSw2ICsyOSw3IEBADQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIg0KICNpbXBvcnQg
Ik5ldHdvcmtTZXNzaW9uQ29jb2EuaCINCiAjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIg0KKyNp
bXBvcnQgIldLRG93bmxvYWRQcm9ncmVzcy5oIg0KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+DQogDQogbmFtZXNwYWNlIFdlYktpdCB7DQpAQCAtODcsNCArODgsMjMgQEAgdm9p
ZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpDQogICAgIH1dOw0KIH0NCiAN
Cit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCgpDQorew0KKyAgICBpZiAo
bV9wcm9ncmVzcykNCisgICAgICAgIFttX3Byb2dyZXNzLmdldCgpIHVucHVibGlzaF07DQorfQ0K
Kw0KK3ZvaWQgRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit7
DQorICAgIEFTU0VSVCghbV9wcm9ncmVzcyk7DQorICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsN
CisNCisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKw0KKyAgICBBU1NFUlQoc2FuZGJv
eEV4dGVuc2lvbik7DQorDQorICAgIG1fcHJvZ3Jlc3MgPSBhZG9wdE5TKFtbV0tEb3dubG9hZFBy
b2dyZXNzIGFsbG9jXSBpbml0V2l0aERvd25sb2FkVGFzazptX2Rvd25sb2FkVGFzay5nZXQoKSBk
b3dubG9hZDp0aGlzIFVSTDooTlNVUkwgKil1cmwgc2FuZGJveEV4dGVuc2lvbjpzYW5kYm94RXh0
ZW5zaW9uXSk7DQorICAgIFttX3Byb2dyZXNzIHB1Ymxpc2hdOw0KK30NCisNCiB9DQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3du
bG9hZFByb2dyZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9j
b2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw
MDAwMDAwMDAwLi4xMjIwMTZlYzc5YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLmgNCkBA
IC0wLDAgKzEsNDQgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisg
KiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNp
bXBvcnQgPEZvdW5kYXRpb24vTlNQcm9ncmVzcy5oPg0KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4N
CisNCituYW1lc3BhY2UgV2ViS2l0IHsNCisNCitjbGFzcyBEb3dubG9hZDsNCitjbGFzcyBTYW5k
Ym94RXh0ZW5zaW9uOw0KKw0KK30NCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0KK0Bp
bnRlcmZhY2UgV0tEb3dubG9hZFByb2dyZXNzIDogTlNQcm9ncmVzcw0KKw0KKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERvd25sb2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopdGFz
ayBkb3dubG9hZDooV2ViS2l0OjpEb3dubG9hZCAqKWRvd25sb2FkIFVSTDooTlNVUkwgKilmaWxl
VVJMIHNhbmRib3hFeHRlbnNpb246KFdURjo6UmVmUHRyPFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bj4pc2FuZGJveEV4dGVuc2lvbjsNCisNCitAZW5kDQorDQorTlNfQVNTVU1FX05PTk5VTExfRU5E
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvV0tEb3dubG9hZFByb2dyZXNzLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1tDQpuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KaW5kZXggMDAwMDAwMDAwMDAuLjE3NDkyM2RiNGJlDQotLS0gL2Rldi9udWxsDQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJv
Z3Jlc3MubW0NCkBAIC0wLDAgKzEsMTE5IEBADQorLyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyAqDQor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
DQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4N
CisgKi8NCisNCisjaW1wb3J0ICJjb25maWcuaCINCisjaW1wb3J0ICJXS0Rvd25sb2FkUHJvZ3Jl
c3MuaCINCisNCisjaW1wb3J0ICJEb3dubG9hZC5oIg0KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
Pg0KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPg0KKw0KK3N0YXRpYyB2b2lkICogV0tEb3du
bG9hZFByb2dyZXNzQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZUNvdW50Q29udGV4dCA9ICZXS0Rvd25s
b2FkUHJvZ3Jlc3NCeXRlc0V4cGVjdGVkVG9SZWNlaXZlQ291bnRDb250ZXh0Ow0KK3N0YXRpYyB2
b2lkICogV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQgPSAmV0tEb3dubG9h
ZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQ7DQorDQorQGltcGxlbWVudGF0aW9uIFdLRG93
bmxvYWRQcm9ncmVzcyB7DQorICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s+
IG1fdGFzazsNCisgICAgV2ViS2l0OjpEb3dubG9hZCogbV9kb3dubG9hZDsNCisgICAgUmVmUHRy
PFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOw0KK30NCisNCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzayAqKXRhc2sgZG93bmxvYWQ6KFdlYktpdDo6RG93bmxvYWQqKWRvd25sb2FkIFVSTDooTlNV
UkwgKilmaWxlVVJMIHNhbmRib3hFeHRlbnNpb246KFJlZlB0cjxXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb24+KXNhbmRib3hFeHRlbnNpb24NCit7DQorICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0
V2l0aFBhcmVudDpuaWwgdXNlckluZm86bmlsXSkpDQorICAgICAgICByZXR1cm4gbmlsOw0KKw0K
KyAgICBtX3Rhc2sgPSB0YXNrOw0KKyAgICBtX2Rvd25sb2FkID0gZG93bmxvYWQ7DQorDQorICAg
IFt0YXNrIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvdW50T2ZCeXRlc0V4cGVjdGVk
VG9SZWNlaXZlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0OldLRG93bmxvYWRQcm9ncmVzc0J5dGVz
RXhwZWN0ZWRUb1JlY2VpdmVDb3VudENvbnRleHRdOw0KKyAgICBbdGFzayBhZGRPYnNlcnZlcjpz
ZWxmIGZvcktleVBhdGg6QCJjb3VudE9mQnl0ZXNSZWNlaXZlZCIgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29u
dGV4dDpXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc1JlY2VpdmVkQ29udGV4dF07DQorDQorICAgIHNl
bGYua2luZCA9IE5TUHJvZ3Jlc3NLaW5kRmlsZTsNCisjaWYgIVBMQVRGT1JNKE1BQykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDANCisgICAgc2VsZi5maWxlT3Bl
cmF0aW9uS2luZCA9IE5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2luZERvd25sb2FkaW5nOw0KKyAg
ICBzZWxmLmZpbGVVUkwgPSBmaWxlVVJMOw0KKyNlbHNlDQorICAgIFtzZWxmIHNldFVzZXJJbmZv
T2JqZWN0Ok5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2luZERvd25sb2FkaW5nIGZvcktleTpOU1By
b2dyZXNzRmlsZU9wZXJhdGlvbktpbmRLZXldOw0KKyAgICBbc2VsZiBzZXRVc2VySW5mb09iamVj
dDpmaWxlVVJMIGZvcktleTpOU1Byb2dyZXNzRmlsZVVSTEtleV07DQorI2VuZGlmDQorICAgIG1f
c2FuZGJveEV4dGVuc2lvbiA9IHNhbmRib3hFeHRlbnNpb247DQorDQorICAgIFdlYWtPYmpDUHRy
PFdLRG93bmxvYWRQcm9ncmVzcz4gd2Vha1NlbGYgeyBzZWxmIH07DQorICAgIHNlbGYuY2FuY2Vs
bGFibGUgPSBZRVM7DQorICAgIHNlbGYuY2FuY2VsbGF0aW9uSGFuZGxlciA9IEJsb2NrUHRyPHZv
aWQoKT46OmZyb21DYWxsYWJsZShbd2Vha1NlbGYgPSBXVEZNb3ZlKHdlYWtTZWxmKV0gew0KKyAg
ICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7DQorICAgICAgICBpZiAoIXN0
cm9uZ1NlbGYpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAgICAgICAgV2ViS2l0OjpEb3du
bG9hZCogZG93bmxvYWQgPSBzdHJvbmdTZWxmLmdldCgpLT5tX2Rvd25sb2FkOw0KKyAgICAgICAg
aWYgKGRvd25sb2FkKQ0KKyAgICAgICAgICAgIGRvd25sb2FkLT5jYW5jZWwoKTsNCisgICAgfSku
Z2V0KCk7DQorDQorICAgIHJldHVybiBzZWxmOw0KK30NCisNCistICh2b2lkKXB1Ymxpc2gNCit7
DQorICAgIEJPT0wgY29uc3VtZWRFeHRlbnNpb24gPSBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1
bWUoKTsNCisgICAgQVNTRVJUX1VOVVNFRChjb25zdW1lZEV4dGVuc2lvbiwgY29uc3VtZWRFeHRl
bnNpb24pOw0KKw0KKyAgICBbc3VwZXIgcHVibGlzaF07DQorfQ0KKw0KKy0gKHZvaWQpdW5wdWJs
aXNoDQorew0KKyAgICBbc3VwZXIgdW5wdWJsaXNoXTsNCisNCisgICAgbV9zYW5kYm94RXh0ZW5z
aW9uLT5yZXZva2UoKTsNCisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsNCit9DQor
DQorLSAodm9pZClkZWFsbG9jDQorew0KKyAgICBbbV90YXNrLmdldCgpIHJlbW92ZU9ic2VydmVy
OnNlbGYgZm9yS2V5UGF0aDpAImNvdW50T2ZCeXRlc0V4cGVjdGVkVG9SZWNlaXZlIl07DQorICAg
IFttX3Rhc2suZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiY291bnRPZkJ5
dGVzUmVjZWl2ZWQiXTsNCisNCisgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOw0KKw0K
KyAgICBbc3VwZXIgZGVhbGxvY107DQorfQ0KKw0KKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQg
Kiljb250ZXh0DQorew0KKyAgICBpZiAoY29udGV4dCA9PSBXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRl
c0V4cGVjdGVkVG9SZWNlaXZlQ291bnRDb250ZXh0KSB7DQorICAgICAgICBSZXRhaW5QdHI8TlNO
dW1iZXI+IHZhbHVlID0gc3RhdGljX2Nhc3Q8TlNOdW1iZXIgKj4oY2hhbmdlW05TS2V5VmFsdWVD
aGFuZ2VOZXdLZXldKTsNCisgICAgICAgIEFTU0VSVChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSk7DQorICAgICAgICBpbnQ2NF90IGV4cGVjdGVkQnl0ZUNvdW50ID0gdmFs
dWUuZ2V0KCkubG9uZ0xvbmdWYWx1ZTsNCisgICAgICAgIHNlbGYudG90YWxVbml0Q291bnQgPSAo
ZXhwZWN0ZWRCeXRlQ291bnQgPD0gMCkgPyAtMSA6IGV4cGVjdGVkQnl0ZUNvdW50Ow0KKyAgICB9
IGVsc2UgaWYgKGNvbnRleHQgPT0gV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRl
eHQpIHsNCisgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gdmFsdWUgPSBzdGF0aWNfY2FzdDxO
U051bWJlciAqPihjaGFuZ2VbTlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0pOw0KKyAgICAgICAgQVNT
RVJUKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsNCisgICAgICAgIHNl
bGYuY29tcGxldGVkVW5pdENvdW50ID0gdmFsdWUuZ2V0KCkubG9uZ0xvbmdWYWx1ZTsNCisgICAg
fSBlbHNlDQorICAgICAgICBbc3VwZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9m
T2JqZWN0Om9iamVjdCBjaGFuZ2U6Y2hhbmdlIGNvbnRleHQ6Y29udGV4dF07DQorfQ0KKw0KK0Bl
bmQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
DQppbmRleCA3NDg4YzliMjEyZC4uZjc0MGY0YzZlYTggMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHANCkBAIC04MTksNiArODE5LDEzIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJ
RCkNCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7DQog
fQ0KIA0KKyNpZiBQTEFURk9STShDT0NPQSkNCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwdWJsaXNo
RG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KQ0KK3sNCisgICAgZG93bmxvYWRNYW5hZ2VyKCkucHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoZG93
bmxvYWRJRCwgdXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsNCit9DQorI2Vu
ZGlmDQorDQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQ0K
IHsNCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJlcXVlc3QoZG93bmxv
YWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oDQppbmRleCAxNzk4NjY4OTUzNy4uNWQ3OTliNDMwNDkgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaA0KQEAgLTI3
NCw2ICsyNzQsOSBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7DQogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
DQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQorI2lmIFBMQVRGT1JNKENP
Q09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisjZW5kaWYNCiAg
ICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik7DQogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRE
ZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsNCiANCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbg0KaW5k
ZXggOTRkOWMwMzQ2YmQuLmYxZTA0MzdkZmY2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbg0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbg0KQEAgLTQ5LDYg
KzQ5LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgew0KICAg
ICBEb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCiAgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJl
bmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6
OkRvd25sb2FkSUQgZG93bmxvYWRJRCkNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgIFB1Ymxp
c2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKQ0KKyNlbmRpZg0KIA0KICAgICBDb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QpDQogICAgIENvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbg0KaW5k
ZXggY2FiNzk2ZGMxZWYuLjBjMTgxNmY5YjkxIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbg0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5O
ZXR3b3JrUHJvY2Vzcy5zYi5pbg0KQEAgLTI5MCwzICsyOTAsNyBAQA0KICAgICAobG9jYWwgdGNw
KQ0KICAgICAocmVtb3RlIHRjcCkpDQogDQorOzsgRm9yIHJlcG9ydGluZyBwcm9ncmVzcyBmb3Ig
YWN0aXZlIGRvd25sb2FkcyA8cmRhcjovL3Byb2JsZW0vNDQ0MDU2NjE+DQorKGFsbG93IG1hY2gt
bG9va3VwDQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlByb2dyZXNzUmVwb3J0aW5nIikp
DQorDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVz
L2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IgYi9Tb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYg0K
aW5kZXggZWUzOTEwNThmYzYuLjBhMzkxZGE3YzkzIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtp
bmcuc2INCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiDQpAQCAtOTQsMyArOTQsNyBAQA0KICAgICAo
Z2xvYmFsLW5hbWUgImNvbS5hcHBsZS5XaXJlbGVzc0NvZXhNYW5hZ2VyIikNCiAgICAgKGdsb2Jh
bC1uYW1lICJjb20uYXBwbGUud2lmaS5tYW5hZ2VyIikNCiAgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuaWRlbnRpdHlzZXJ2aWNlc2QuZW1iZWRkZWQuYXV0aCIpKQ0KKw0KKzs7IEZvciByZXBv
cnRpbmcgcHJvZ3Jlc3MgZm9yIGFjdGl2ZSBkb3dubG9hZHMgPHJkYXI6Ly9wcm9ibGVtLzQ0NDA1
NjYxPg0KKyhhbGxvdyBtYWNoLWxvb2t1cA0KKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5Q
cm9ncmVzc1JlcG9ydGluZyIpKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLmgNCmluZGV4IGFjZmQ4MzQzOTVjLi43MTg2OTJkNjcyMyAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oDQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaA0KQEAg
LTM2LDYgKzM2LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjAp
KQ0KIA0KIC0gKHZvaWQpY2FuY2VsOw0KIA0KKy0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6
KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOw0KKw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgd2VhaykgV0tX
ZWJWaWV3ICpvcmlnaW5hdGluZ1dlYlZpZXc7DQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0FycmF5PE5TVVJMICo+ICpyZWRpcmVjdENoYWluIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQ0KaW5kZXggMTZhZDgxMGI3Y2EuLjE2NjE2
OWZlYTkwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWQubW0NCkBAIC00OSw2ICs0OSwxMSBAQCAtICh2b2lkKWNhbmNlbA0KICAgICBfZG93
bmxvYWQtPmNhbmNlbCgpOw0KIH0NCiANCistICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihO
U1VSTCAqKVVSTCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKQ0KK3sNCisgICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoeyBVUkwgfSk7DQor
fQ0KKw0KIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QNCiB7DQogICAgIHJldHVybiBfZG93bmxv
YWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6
OkRvTm90VXBkYXRlSFRUUEJvZHkpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0KaW5kZXggZWZiMTE0OTNjZmIuLmFlOTE4ZDNh
MGM4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHANCkBAIC0xMDEsNiArMTAxLDIxIEBAIHZvaWQgRG93bmxvYWRQcm94eTo6
c2V0T3JpZ2luYXRpbmdQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkNCiAgICAgbV9vcmlnaW5hdGlu
Z1BhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKTsNCiB9DQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0K
K3ZvaWQgRG93bmxvYWRQcm94eTo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYg
VVJMKQ0KK3sNCisgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQ0KKyAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQ
b29sLT5uZXR3b3JrUHJvY2VzcygpKSB7DQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgaGFuZGxlOw0KKyAgICAgICAgYm9vbCBjcmVhdGVkU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShVUkwuZmlsZVN5c3RlbVBhdGgoKSwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOw0KKyAgICAgICAgQVNTRVJUX1VOVVNF
RChjcmVhdGVkU2FuZGJveEV4dGVuc2lvbiwgY3JlYXRlZFNhbmRib3hFeHRlbnNpb24pOw0KKyAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQdWJs
aXNoRG93bmxvYWRQcm9ncmVzcyhtX2Rvd25sb2FkSUQsIFVSTCwgaGFuZGxlKSwgMCk7DQorICAg
IH0NCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZvaWQgRG93bmxvYWRQcm94
eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lKQ0KIHsNCiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KaW5k
ZXggZTA3YWFjODk2MDMuLmY5YjgyNDM2Y2U1IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KQEAgLTk1LDYgKzk1LDEwIEBAIHB1
YmxpYzoNCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3lzdGVtUHJldmlld0Rvd25sb2Fk
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKS5zeXN0ZW1QcmV2aWV3UmVjdCgpOyB9DQog
I2VuZGlmDQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hQcm9ncmVz
cyhjb25zdCBXZWJDb3JlOjpVUkwmKTsNCisjZW5kaWYNCisNCiBwcml2YXRlOg0KICAgICBleHBs
aWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9jZXNzUG9vbCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOw0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQppbmRleCA4NjE0Zjk3MzI4OS4uZDFkZTAw
YzgzZjEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qDQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qDQpAQCAtMTA4Miw2ICsxMDgyLDggQEANCiAJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4
NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsNCiAJCTYzNDg0MjUxMUZCMjZF
NzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyog
QVBJQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyB9Ow0KIAkJNjM2MzUzQTUxRTk4NThERjAwMDlG
OEFGIC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5MUU5NzBENjUwMDMwMTFE
NSAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCisJCTYzNzI4MUEyMjFBREM3NDQwMDlF
MERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2Fk
UHJvZ3Jlc3MuaCAqLzsgfTsNCisJCTYzNzI4MUEzMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25s
b2FkUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tICov
OyB9Ow0KIAkJNjNDMzJDMjYxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMy
QzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTYzQzMyQzI4MUU5ODEx
OTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI3MUU5ODExOTAwMDY5
OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCAqLzsgfTsNCiAJCTY1Qjg2
RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhB
IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsNCkBAIC0zNDk0LDYgKzM0OTYsOCBAQA0KIAkJNjMxMDhGOTUxRjk2NzE5
QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
Ow0KIAkJNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzNDg0MjRGMUZCMjZFNzEwMDk0NkUz
QyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUFwcGxpY2F0
aW9uTWFuaWZlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCisJCTYzNzI4MUEwMjFB
REM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tE
b3dubG9hZFByb2dyZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2MzcyODFB
MTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tEb3dubG9hZFByb2dyZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
Ow0KIAkJNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tHZW9sb2NhdGlv
blBvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjQxRTk4
MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjcxRTk4MTE5MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0
aW9uUG9zaXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsNCkBAIC02ODE1LDYgKzY4MTksOCBAQA0KIAkJCWlzYSA9IFBCWEdyb3VwOw0KIAkJCWNoaWxk
cmVuID0gKA0KIAkJCQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5t
bSAqLywNCisJCQkJNjM3MjgxQTAyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVz
cy5oICovLA0KKwkJCQk2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dy
ZXNzLm1tICovLA0KIAkJCSk7DQogCQkJcGF0aCA9IGNvY29hOw0KIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7DQpAQCAtOTA5Nyw2ICs5MTAzLDcgQEANCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAw
QTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTJENTAzNjZCMUJDREUxNzkw
MEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLA0KIAkJCQky
NjMxNzJDRjE4QjQ2OTQ5MDA2NUI5QzMgLyogTmF0aXZlV2ViVG91Y2hFdmVudC5oIGluIEhlYWRl
cnMgKi8sDQorCQkJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jl
c3MuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkxQURDQjg2QjE4OTgzMUIzMDAyMkVFNUEgLyogTmF2
aWdhdGlvbkFjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkxQUJDM0RGNjE4OTlFNDM3
MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywNCiAJCQkJMUE2RkJB
MkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmggaW4gSGVhZGVycyAq
LywNCkBAIC0xMDc3NSw2ICsxMDc4Miw3IEBADQogCQkJCTJEOTJBNzk0MjEyQjZBRDQwMEY0OTNG
RCAvKiBOUFZhcmlhbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQlDREEyOUEyODFDQkVC
NjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywNCiAJCQkJQ0RBMjlBMkExQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywNCisJ
CQkJNjM3MjgxQTMyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5tbSBpbiBT
b3VyY2VzICovLA0KIAkJCQkyRDkxMzQ0OTIxMkNGOUYwMDAxMjhBRkQgLyogUGx1Z2luLmNwcCBp
biBTb3VyY2VzICovLA0KIAkJCQkxQThFRjRDQzEyNTI0MDM3MDBGNzA2N0YgLyogUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQkxQTJEOTFBNjEyODFENzM5MDAx
RUI5NjIgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sDQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nDQppbmRleCAzNzA2MWY3
NDUyNS4uMzM2YTQ4NTdiMGIgMTAwNjQ0DQotLS0gYS9Ub29scy9DaGFuZ2VMb2cNCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MCBAQA0KKzIwMTgtMTEtMjggIERhdmlkIFF1ZXNh
ZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBTUEkgdG8gcHVi
bGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMNCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjENCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisN
CisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIHByb2dyZXNzLXB1Ymxpc2hp
bmcgZnVuY3Rpb25hbGl0eSBpbiBhIHZhcmlldHkgb2Ygc2NlbmFyaW9zLg0KKw0KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoN
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dy
ZXNzLm1tOiBBZGRlZC4NCisgICAgICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wg
cmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6XSk6DQorICAgICAgICAoK1tEb3dubG9hZFBy
b2dyZXNzVGVzdFByb3RvY29sIHVucmVnaXN0ZXJQcm90b2NvbF0pOg0KKyAgICAgICAgKCtbRG93
bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6XSk6DQorICAgICAg
ICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1
ZXN0Ol0pOg0KKyAgICAgICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCByZXF1ZXN0
SXNDYWNoZUVxdWl2YWxlbnQ6dG9SZXF1ZXN0Ol0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9n
cmVzc1Rlc3RQcm90b2NvbCBzdGFydExvYWRpbmddKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UnVubmVyIGluaXRdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHN0YXJ0TG9hZGluZ1dpdGhQcm90b2NvbDpdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIHRlYXJEb3duXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dy
ZXNzVGVzdFJ1bm5lciBfZGlkR2V0UHJvZ3Jlc3M6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFBy
b2dyZXNzVGVzdFJ1bm5lciBfZGlkTG9zZVByb2dyZXNzXSk6DQorICAgICAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdKToNCisgICAg
ICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRUb0xvc2VQcm9ncmVzc10pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3dubG9hZDpleHBl
Y3RlZExlbmd0aDpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHB1
Ymxpc2hQcm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIg
cmVjZWl2ZURhdGE6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBm
aW5pc2hEb3dubG9hZFRhc2tdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVu
bmVyIGZhaWxEb3dubG9hZFRhc2tdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdhaXRGb3JEb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uXSk6DQorICAgICAgICAo
LVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF0pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkQ2Fu
Y2VsZWRdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JE
b3dubG9hZEZhaWxlZF0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIg
d2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdl
OmNvbnRleHQ6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJW
aWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6
DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJWaWV3OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOg0KKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6DQorICAgICAg
ICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGlu
YXRpb246XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxv
YWREaWRGaW5pc2g6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBf
ZG93bmxvYWREaWRDYW5jZWw6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToNCisgICAgICAgIChURVNUKToNCisNCiAy
MDE4LTExLTI4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4NCiANCiAgICAg
ICAgIFtld3MtYXBwXSBGZXRjaCBidWdzIGZyb20gQnVnemlsbGEgYW5kIHN1Ym1pdCB0byBCdWls
ZGJvdA0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCmluZGV4IGZmNDI5M2ZjYjNmLi4xMWQ2NDc4MWYy
ZCAxMDA2NDQNCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qDQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTMxNyw2ICszMTcsNyBAQA0KIAkJNjM1
NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1NEY0RDAxRjdD
M0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovOyB9Ow0KIAkJ
NjM1NkZCMjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTZGQjIxMUVDNEUwQkEw
MDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi87IH07DQogCQk2MzYzNTNBNzFFOTg2
NjVEMDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzYz
NTNBNjFFOTg2MTk0MDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1
bHQuaHRtbCAqLzsgfTsNCisJCTYzNzI4MUE3MjFBRTEzODYwMDlFMERFNiAvKiBEb3dubG9hZFBy
b2dyZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3MubW0gKi87IH07DQog
CQk2M0E2MUI4QjFGQUQyNTExMDBGMDY4ODUgLyogZGlzcGxheS1tb2RlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNBNjFCOEExRkFE
MjA0RDAwRjA2ODg1IC8qIGRpc3BsYXktbW9kZS5odG1sICovOyB9Ow0KIAkJNjNGNjY4MjIxRjk3
RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyog
QXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLzsgfTsNCiAJCTZCMzA2MTA2MjE4QTM3MjkwMEY1QTgw
MiAvKiBDbG9zaW5nV2ViVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCMzA2MTA1MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5t
bSAqLzsgfTsNCkBAIC0xNjU0LDYgKzE2NTUsNyBAQA0KIAkJNjM1NEY0RDAxRjdDM0FCNTAwRDg5
REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQogCQk2MzU2RkIyMTFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJsZUNvbnRlbnRSZWN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KIAkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9u
R2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KKwkJNjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJv
Z3Jlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb2dyZXNzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8qIGRp
c3BsYXktbW9kZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImRpc3BsYXktbW9kZS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVz
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTZCMzA2MTA1MjE4QTM3MjkwMEY1
QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsb3NpbmdX
ZWJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KQEAgLTI0MTIsNiArMjQxNCw3
IEBADQogCQkJCTUxOEVFNTE2MjBBNzhDREYwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5n
Lm1tICovLA0KIAkJCQk1MThFRTUxNzIwQTc4Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9h
ZGluZ1BsdWdpbi5tbSAqLywNCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERvd25s
b2FkLm1tICovLA0KKwkJCQk2MzcyODFBNjIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxvYWRQcm9n
cmVzcy5tbSAqLywNCiAJCQkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9w
VGVzdHMubW0gKi8sDQogCQkJCUExNTUwMjI4MUUwNTAyMEIwMEEyNEM1NyAvKiBEdXBsaWNhdGVD
b21wbGV0aW9uSGFuZGxlckNhbGxzLm1tICovLA0KIAkJCQlGNDREMDY0NjFGMzk1QzREMDAxQTBF
MjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLywNCkBAIC0zNzkyLDYgKzM3OTUsNyBAQA0KIAkJ
CQlGNDVCNjNGRTFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLA0KIAkJCQkzN0U3REQ2NDFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQk1NUE4MTdGQzIxODEwMEUw
MDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gaW4gU291cmNlcyAq
LywNCisJCQkJNjM3MjgxQTcyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3MubW0g
aW4gU291cmNlcyAqLywNCiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4IC8qIEFmZmluZVRy
YW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQw
IC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQky
REU3MUFGRTFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gaW4gU291cmNlcyAq
LywNCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkUHJvZ3Jlc3MubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw
MDAwMC4uMjdmZWM1MzI2ZTQNCi0tLSAvZGV2L251bGwNCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQ0KQEAgLTAsMCArMSw1NzAg
QEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0K
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgImNvbmZp
Zy5oIg0KKw0KKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCINCisjaW1wb3J0ICJVdGlsaXRpZXMu
aCINCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4NCisjaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4NCisjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmg+DQorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPg0K
KyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPg0KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2Fk
Lmg+DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4NCisjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4NCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+DQorI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorQGNsYXNzIERvd25s
b2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2w7DQorDQorZW51bSBjbGFzcyBEb3dubG9hZFN0YXJ0VHlw
ZSB7DQorICAgIENvbnZlcnRMb2FkVG9Eb3dubG9hZCwNCisgICAgU3RhcnRGcm9tTmF2aWdhdGlv
bkFjdGlvbiwNCisgICAgU3RhcnRJblByb2Nlc3NQb29sLA0KK307DQorDQorQGludGVyZmFjZSBE
b3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZSwgX1dLRG93bmxvYWREZWxlZ2F0ZT4NCisNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIF9XS0Rvd25sb2FkICpkb3dubG9hZDsNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TUHJvZ3Jlc3MgKnByb2dyZXNzOw0KKw0KKy0gKHZvaWQpc3RhcnRMb2FkaW5nV2l0aFBy
b3RvY29sOihEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sICopcHJvdG9jb2w7DQorDQorQGVu
ZA0KKw0KK0BpbnRlcmZhY2UgRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCA6IE5TVVJMUHJv
dG9jb2wNCitAZW5kDQorDQorQGltcGxlbWVudGF0aW9uIERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJv
dG9jb2wNCisNCitzdGF0aWMgRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgKmN1cnJlbnRUZXN0
UnVubmVyOw0KKw0KKysgKHZvaWQpcmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6KERvd25s
b2FkUHJvZ3Jlc3NUZXN0UnVubmVyICopdGVzdFJ1bm5lcg0KK3sNCisgICAgY3VycmVudFRlc3RS
dW5uZXIgPSB0ZXN0UnVubmVyOw0KKyAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOnNl
bGZdOw0KKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2w6QCJodHRwIl07DQorfQ0KKw0KKysgKHZvaWQpdW5yZWdpc3RlclByb3Rv
Y29sDQorew0KKyAgICBjdXJyZW50VGVzdFJ1bm5lciA9IG51bGxwdHI7DQorICAgIFtXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOkAi
aHR0cCJdOw0KKyAgICBbTlNVUkxQcm90b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6c2VsZl07DQorfQ0K
Kw0KKy8vIE1BUks6IE5TVVJMUHJvdG9jb2wgTWV0aG9kcw0KKw0KKysgKEJPT0wpY2FuSW5pdFdp
dGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0DQorew0KKyAgICByZXR1cm4gW3JlcXVl
c3QuVVJMLnNjaGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdID09IE5TT3JkZXJl
ZFNhbWU7DQorfQ0KKw0KKysgKE5TVVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0DQorew0KKyAgICByZXR1cm4gcmVxdWVzdDsNCit9
DQorDQorKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEg
dG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliDQorew0KKyAgICByZXR1cm4gTk87DQorfQ0KKw0K
Ky0gKHZvaWQpc3RhcnRMb2FkaW5nDQorew0KKyAgICBbY3VycmVudFRlc3RSdW5uZXIgc3RhcnRM
b2FkaW5nV2l0aFByb3RvY29sOnNlbGZdOw0KK30NCisNCistICh2b2lkKXN0b3BMb2FkaW5nDQor
ew0KK30NCisNCitAZW5kDQorDQorc3RhdGljIHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4
dCA9ICZwcm9ncmVzc09ic2VydmluZ0NvbnRleHQ7DQorDQorQGltcGxlbWVudGF0aW9uIERvd25s
b2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHsNCisgICAgUmV0YWluUHRyPE5TVVJMPiBtX3Byb2dyZXNz
VVJMOw0KKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gbV93ZWJWaWV3Ow0KKyAgICBSZXRh
aW5QdHI8aWQ+IG1fcHJvZ3Jlc3NTdWJzY3JpYmVyOw0KKyAgICBSZXRhaW5QdHI8TlNQcm9ncmVz
cz4gbV9wcm9ncmVzczsNCisgICAgUmV0YWluUHRyPF9XS0Rvd25sb2FkPiBtX2Rvd25sb2FkOw0K
KyAgICBSZXRhaW5QdHI8RG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbD4gbV9wcm90b2NvbDsN
CisgICAgQmxvY2tQdHI8dm9pZCh2b2lkKT4gbV91bnB1Ymxpc2hpbmdCbG9jazsNCisgICAgRG93
bmxvYWRTdGFydFR5cGUgbV9zdGFydFR5cGU7DQorICAgIE5TSW50ZWdlciBtX2V4cGVjdGVkTGVu
Z3RoOw0KKyAgICBib29sIG1faGFzUHJvZ3Jlc3M7DQorICAgIGJvb2wgbV9sb3N0UHJvZ3Jlc3M7
DQorICAgIGJvb2wgbV9kb3dubG9hZFN0YXJ0ZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZERpZENy
ZWF0ZURlc3RpbmF0aW9uOw0KKyAgICBib29sIG1fZG93bmxvYWRGaW5pc2hlZDsNCisgICAgYm9v
bCBtX2Rvd25sb2FkQ2FuY2VsZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZEZhaWxlZDsNCisgICAg
Ym9vbCBtX2hhc1VwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnQ7DQorfQ0KKw0KKy0gKGluc3RhbmNl
dHlwZSlpbml0DQorew0KKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOw0KKw0KKyAgICBbRG93bmxv
YWRQcm9ncmVzc1Rlc3RQcm90b2NvbCByZWdpc3RlclByb3RvY29sRm9yVGVzdFJ1bm5lcjpzZWxm
XTsNCisNCisgICAgTlNTdHJpbmcgKmZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJkb3dubG9hZC1wcm9ncmVzcy0lQCIsIFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ107DQor
ICAgIG1fcHJvZ3Jlc3NVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURp
cmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV0gaXNEaXJl
Y3Rvcnk6Tk9dOw0KKw0KKyAgICBjdXJyZW50VGVzdFJ1bm5lciA9IHNlbGY7DQorDQorICAgIG1f
dW5wdWJsaXNoaW5nQmxvY2sgPSBCbG9ja1B0cjx2b2lkKHZvaWQpPjo6ZnJvbUNhbGxhYmxlKFtz
ZWxmXSB7DQorICAgICAgICBbc2VsZiBfZGlkTG9zZVByb2dyZXNzXTsNCisgICAgfSkuZ2V0KCk7
DQorDQorICAgIHJldHVybiBzZWxmOw0KK30NCisNCistIChfV0tEb3dubG9hZCAqKWRvd25sb2Fk
DQorew0KKyAgICByZXR1cm4gbV9kb3dubG9hZC5nZXQoKTsNCit9DQorDQorLSAoTlNQcm9ncmVz
cyAqKXByb2dyZXNzDQorew0KKyAgICByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsNCit9DQorDQor
LSAodm9pZClzdGFydExvYWRpbmdXaXRoUHJvdG9jb2w6KERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJv
dG9jb2wgKilwcm90b2NvbA0KK3sNCisgICAgbV9wcm90b2NvbCA9IHByb3RvY29sOw0KKw0KKyAg
ICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnByb3RvY29sLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24veC10ZXN0LWZp
bGUiIGV4cGVjdGVkQ29udGVudExlbmd0aDptX2V4cGVjdGVkTGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bnVsbHB0cl0pOw0KKyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2w6
bV9wcm90b2NvbC5nZXQoKSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgY2FjaGVT
dG9yYWdlUG9saWN5Ok5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07DQorfQ0KKw0KKy0gKHZv
aWQpdGVhckRvd24NCit7DQorICAgIGlmIChtX3dlYlZpZXcpIHsNCisgICAgICAgIG1fd2ViVmll
dy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gbnVs
bHB0cjsNCisgICAgICAgIFttX3dlYlZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107DQor
ICAgICAgICBtX3dlYlZpZXcgPSBudWxscHRyOw0KKyAgICB9DQorDQorICAgIGlmIChtX3Byb2dy
ZXNzU3Vic2NyaWJlcikgew0KKyAgICAgICAgW05TUHJvZ3Jlc3MgcmVtb3ZlU3Vic2NyaWJlcjpt
X3Byb2dyZXNzU3Vic2NyaWJlci5nZXQoKV07DQorICAgICAgICBtX3Byb2dyZXNzU3Vic2NyaWJl
ciA9IG51bGxwdHI7DQorICAgIH0NCisNCisgICAgbV9wcm9ncmVzcyA9IG51bGxwdHI7DQorICAg
IG1fZG93bmxvYWQgPSBudWxscHRyOw0KKyAgICBtX3Byb3RvY29sID0gbnVsbHB0cjsNCisgICAg
bV91bnB1Ymxpc2hpbmdCbG9jayA9IG51bGxwdHI7DQorDQorICAgIFtEb3dubG9hZFByb2dyZXNz
VGVzdFByb3RvY29sIHVucmVnaXN0ZXJQcm90b2NvbF07DQorfQ0KKw0KKy0gKHZvaWQpX2RpZEdl
dFByb2dyZXNzOihOU1Byb2dyZXNzICopcHJvZ3Jlc3MNCit7DQorICAgIEFTU0VSVCghbV9wcm9n
cmVzcyk7DQorICAgIG1fcHJvZ3Jlc3MgPSBwcm9ncmVzczsNCisgICAgW3Byb2dyZXNzIGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3VudCIgb3B0aW9uczpOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6cHJvZ3Jlc3NPYnNlcnZpbmdDb250ZXh0
XTsNCisgICAgbV9oYXNQcm9ncmVzcyA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2RpZExvc2VQ
cm9ncmVzcw0KK3sNCisgICAgQVNTRVJUKG1fcHJvZ3Jlc3MpOw0KKyAgICBbbV9wcm9ncmVzcy5n
ZXQoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQi
XTsNCisgICAgbV9wcm9ncmVzcyA9IG51bGxwdHI7DQorICAgIG1fbG9zdFByb2dyZXNzID0gdHJ1
ZTsNCit9DQorDQorLSAodm9pZClzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3MNCit7DQorICAg
IGlmICghbV9wcm9ncmVzc1N1YnNjcmliZXIpIHsNCisgICAgICAgIGF1dG8gd2Vha1NlbGYgPSBX
ZWFrT2JqQ1B0cjxEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lcj4geyBzZWxmIH07DQorICAgICAg
ICBtX3Byb2dyZXNzU3Vic2NyaWJlciA9IFtOU1Byb2dyZXNzIGFkZFN1YnNjcmliZXJGb3JGaWxl
VVJMOm1fcHJvZ3Jlc3NVUkwuZ2V0KCkgd2l0aFB1Ymxpc2hpbmdIYW5kbGVyOkJsb2NrUHRyPE5T
UHJvZ3Jlc3NVbnB1Ymxpc2hpbmdIYW5kbGVyKE5TUHJvZ3Jlc3MgKik+Ojpmcm9tQ2FsbGFibGUo
W3dlYWtTZWxmXShOU1Byb2dyZXNzICpwcm9ncmVzcykgew0KKyAgICAgICAgICAgIGlmIChhdXRv
IHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKSkgew0KKyAgICAgICAgICAgICAgICBbc3Ryb25n
U2VsZi5nZXQoKSBfZGlkR2V0UHJvZ3Jlc3M6cHJvZ3Jlc3NdOw0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3Ryb25nU2VsZi0+bV91bnB1Ymxpc2hpbmdCbG9jay5nZXQoKTsNCisgICAgICAgICAg
ICB9DQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TUHJvZ3Jlc3NVbnB1Ymxpc2hp
bmdIYW5kbGVyPihuaWwpOw0KKyAgICAgICAgfSkuZ2V0KCldOw0KKyAgICB9DQorICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9oYXNQcm9ncmVzcyk7DQorfQ0KKw0KKy0gKHZvaWQpd2Fp
dFRvTG9zZVByb2dyZXNzDQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fbG9z
dFByb2dyZXNzKTsNCit9DQorDQorLSAodm9pZClzdGFydERvd25sb2FkOihEb3dubG9hZFN0YXJ0
VHlwZSlzdGFydFR5cGUgZXhwZWN0ZWRMZW5ndGg6KE5TSW50ZWdlcilleHBlY3RlZExlbmd0aA0K
K3sNCisgICAgbV9zdGFydFR5cGUgPSBzdGFydFR5cGU7DQorICAgIG1fZXhwZWN0ZWRMZW5ndGgg
PSBleHBlY3RlZExlbmd0aDsNCisNCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsNCisgICAgbV93ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsNCisgICAgbV93ZWJWaWV3LmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHNlbGY7DQorICAgIG1fd2ViVmlldy5nZXQoKS5jb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gc2VsZjsNCisNCisgICAgYXV0
byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZmlsZSJdXSk7DQorDQorICAgIHN3aXRjaCAoc3Rh
cnRUeXBlKSB7DQorICAgIGNhc2UgRG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3du
bG9hZDoNCisgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRGcm9tTmF2aWdhdGlvbkFj
dGlvbjoNCisgICAgICAgIFttX3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07DQor
ICAgICAgICBicmVhazsNCisgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRJblByb2Nl
c3NQb29sOg0KKyAgICAgICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQ
b29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07DQorICAgICAgICBicmVhazsN
CisgICAgfQ0KKw0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxvYWRTdGFy
dGVkKTsNCit9DQorDQorLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3MNCit7DQorICAgIEFTU0VSVCht
X2Rvd25sb2FkKTsNCisNCisgICAgW21fZG93bmxvYWQuZ2V0KCkgcHVibGlzaFByb2dyZXNzQXRV
Ukw6bV9wcm9ncmVzc1VSTC5nZXQoKV07DQorfQ0KKw0KKy0gKHZvaWQpcmVjZWl2ZURhdGE6KE5T
SW50ZWdlcilsZW5ndGgNCit7DQorICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7DQorICAgIHdoaWxlIChsZW5ndGgtLSA+IDApIHsNCisgICAgICAg
IGNvbnN0IGNoYXIgYnl0ZSA9ICdBJzsNCisgICAgICAgIFtkYXRhLmdldCgpIGFwcGVuZEJ5dGVz
OnN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPigmYnl0ZSkgbGVuZ3RoOjFdOw0KKyAgICB9DQorDQor
ICAgIFttX3Byb3RvY29sLmdldCgpLmNsaWVudCBVUkxQcm90b2NvbDptX3Byb3RvY29sLmdldCgp
IGRpZExvYWREYXRhOmRhdGEuZ2V0KCldOw0KK30NCisNCistICh2b2lkKWZpbmlzaERvd25sb2Fk
VGFzaw0KK3sNCisgICAgW21fcHJvdG9jb2wuZ2V0KCkuY2xpZW50IFVSTFByb3RvY29sRGlkRmlu
aXNoTG9hZGluZzptX3Byb3RvY29sLmdldCgpXTsNCit9DQorDQorLSAodm9pZClmYWlsRG93bmxv
YWRUYXNrDQorew0KKyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2w6bV9w
cm90b2NvbC5nZXQoKSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpO
U1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCB1c2Vy
SW5mbzpudWxscHRyXV07DQorfQ0KKw0KKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkQ3JlYXRl
RGVzdGluYXRpb24NCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9kb3dubG9h
ZERpZENyZWF0ZURlc3RpbmF0aW9uKTsNCit9DQorDQorLSAodm9pZCl3YWl0Rm9yRG93bmxvYWRG
aW5pc2hlZA0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2Rvd25sb2FkRmlu
aXNoZWQpOw0KK30NCisNCistICh2b2lkKXdhaXRGb3JEb3dubG9hZENhbmNlbGVkDQorew0KKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxvYWRDYW5jZWxlZCk7DQorfQ0KKw0K
Ky0gKHZvaWQpd2FpdEZvckRvd25sb2FkRmFpbGVkDQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJm1fZG93bmxvYWRGYWlsZWQpOw0KK30NCisNCistIChpbnQ2NF90KXdhaXRGb3JV
cGRhdGVkQ29tcGxldGVkVW5pdENvdW50DQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJm1faGFzVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudCk7DQorICAgIG1faGFzVXBkYXRlZENv
bXBsZXRlZFVuaXRDb3VudCA9IGZhbHNlOw0KKw0KKyAgICByZXR1cm4gbV9wcm9ncmVzcy5nZXQo
KS5jb21wbGV0ZWRVbml0Q291bnQ7DQorfQ0KKw0KKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQg
Kiljb250ZXh0DQorew0KKyAgICBpZiAoY29udGV4dCA9PSBwcm9ncmVzc09ic2VydmluZ0NvbnRl
eHQpIHsNCisgICAgICAgIEVYUEVDVF9FUShvYmplY3QsIG1fcHJvZ3Jlc3MuZ2V0KCkpOw0KKyAg
ICAgICAgRVhQRUNUX1NUUkVRKGtleVBhdGguVVRGOFN0cmluZywgImNvbXBsZXRlZFVuaXRDb3Vu
dCIpOw0KKyAgICAgICAgbV9oYXNVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50ID0gdHJ1ZTsNCisg
ICAgfSBlbHNlDQorICAgICAgICBbc3VwZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRo
IG9mT2JqZWN0Om9iamVjdCBjaGFuZ2U6Y2hhbmdlIGNvbnRleHQ6Y29udGV4dF07DQorfQ0KKw0K
Ky8vIE1BUks6IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gTWV0aG9kcw0KKw0KKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxl
cg0KK3sNCisgICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0
TG9hZFRvRG93bmxvYWQpDQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOw0KKyAgICBlbHNlDQorICAgICAgICBkZWNpc2lv
bkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7DQorfQ0KKw0KKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIN
Cit7DQorICAgIGlmIChtX3N0YXJ0VHlwZSA9PSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRGcm9t
TmF2aWdhdGlvbkFjdGlvbikNCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5RG93bmxvYWQpOw0KKyAgICBlbHNlDQorICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOw0KK30NCisNCisvLyBNQVJLOiA8X1dL
RG93bmxvYWREZWxlZ2F0ZT4gTWV0aG9kcw0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQNCit7DQorICAgIEFTU0VSVCghbV9kb3dubG9hZFN0YXJ0
ZWQpOw0KKyAgICBBU1NFUlQoIW1fZG93bmxvYWQpOw0KKw0KKyAgICBtX2Rvd25sb2FkID0gZG93
bmxvYWQ7DQorICAgIG1fZG93bmxvYWRTdGFydGVkID0gdHJ1ZTsNCit9DQorDQorLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRlRGVzdGluYXRpb246KE5T
U3RyaW5nICopZGVzdGluYXRpb24NCit7DQorICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3du
bG9hZC5nZXQoKSk7DQorICAgIG1fZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbiA9IHRydWU7
DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkDQorew0KKyAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOw0KKyAg
ICBtX2Rvd25sb2FkRmluaXNoZWQgPSB0cnVlOw0KK30NCisNCistICh2b2lkKV9kb3dubG9hZERp
ZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAgRVhQRUNUX0VRKGRvd25s
b2FkLCBtX2Rvd25sb2FkLmdldCgpKTsNCisgICAgbV9kb3dubG9hZENhbmNlbGVkID0gdHJ1ZTsN
Cit9DQorDQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFp
bFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yDQorew0KKyAgICBFWFBFQ1RfRVEoZG93bmxvYWQs
IG1fZG93bmxvYWQuZ2V0KCkpOw0KKyAgICBtX2Rvd25sb2FkRmFpbGVkID0gdHJ1ZTsNCit9DQor
DQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5h
dGlvbikpY29tcGxldGlvbkhhbmRsZXINCit7DQorICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9k
b3dubG9hZC5nZXQoKSk7DQorDQorICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlSGFuZGxlOw0KKyAgICBSZXRhaW5QdHI8TlNTdHJpbmcgKj4gcGF0aCA9IChO
U1N0cmluZyAqKVdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2Vi
S2l0QVBJIiwgZmlsZUhhbmRsZSk7DQorICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7DQorICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsNCisNCisgICAgY29tcGxldGlv
bkhhbmRsZXIoWUVTLCBwYXRoLmdldCgpKTsNCit9DQorDQorQGVuZA0KKw0KKy8vIEVuZC10by1l
bmQgdGVzdCBvZiBzdWJzY3JpYmluZyB0byBwcm9ncmVzcyBvbiBhIHN1Y2Nlc3NmdWwgZG93bmxv
YWQuIFRoZSBjbGllbnQNCisvLyBzaG91bGQgYmUgYWJsZSB0byByZWNlaXZlIGFuIE5TUHJvZ3Jl
c3MgdGhhdCBpcyB1cGRhdGVkIGFzIHRoZSBkb3dubG9hZCBtYWtlcw0KKy8vIHByb2dyZXNzLCBh
bmQgdGhlIE5TUHJvZ3Jlc3Mgc2hvdWxkIGJlIHVucHVibGlzaGVkIHdoZW4gdGhlIGRvd25sb2Fk
IGZpbmlzaGVzLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgQmFzaWNTdWJzY3JpcHRpb25BbmRQ
cm9ncmVzc1VwZGF0ZXMpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rv
d25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxp
c2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQ
cm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsNCisg
ICAgRVhQRUNUX0VRKFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5p
dENvdW50XSwgNTApOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy5m
cmFjdGlvbkNvbXBsZXRlZCwgLjUpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZl
RGF0YTo1MF07DQorICAgIEVYUEVDVF9FUShbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRl
ZENvbXBsZXRlZFVuaXRDb3VudF0sIDEwMCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdl
dCgpLnByb2dyZXNzLmZyYWN0aW9uQ29tcGxldGVkLCAxKTsNCisNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZv
ckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3NlUHJv
Z3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0KKy8v
IFNpbWlsYXIgdGVzdCBhcyBiZWZvcmUsIGJ1dCBpbml0aWF0aW5nIHRoZSBkb3dubG9hZCBiZWZv
cmUgcmVjZWl2aW5nIGl0cyByZXNwb25zZS4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIFN0YXJ0
RG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbikNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9
IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpT
dGFydEZyb21OYXZpZ2F0aW9uQWN0aW9uIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1
YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2Vp
dmVEYXRhOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFza107
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIFN0YXJ0
RG93bmxvYWRJblByb2Nlc3NQb29sKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHRO
UyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0SW5Q
cm9jZXNzUG9vbCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBw
dWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0
Rm9yUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YToxMDBdOw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1
bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJE
b3duXTsNCit9DQorDQorLy8gSWYgdGhlIGRvd25sb2FkIGlzIGNhbmNlbGVkLCB0aGUgcHJvZ3Jl
c3Mgc2hvdWxkIGJlIHVucHVibGlzaGVkLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgTG9zZVBy
b2dyZXNzV2hlbkRvd25sb2FkSXNDYW5jZWxlZCkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9
IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpD
b252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2Ny
aWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURh
dGE6NTBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKS5kb3dubG9hZCBjYW5jZWxdOw0KKyAgICBb
dGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRDYW5jZWxlZF07DQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgp
IHRlYXJEb3duXTsNCit9DQorDQorLy8gSWYgdGhlIGRvd25sb2FkIGZhaWxzLCB0aGUgcHJvZ3Jl
c3Mgc2hvdWxkIGJlIHVucHVibGlzaGVkLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgTG9zZVBy
b2dyZXNzV2hlbkRvd25sb2FkRmFpbHMpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9w
dE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVy
dExvYWRUb0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFu
ZFdhaXRGb3JQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUw
XTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmFpbERvd25sb2FkVGFza107DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZhaWxlZF07DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJE
b3duXTsNCit9DQorDQorLy8gQ2FuY2VsaW5nIHRoZSBwcm9ncmVzcyBzaG91bGQgY2FuY2VsIHRo
ZSBkb3dubG9hZC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIENhbmNlbERvd25sb2FkV2hlblBy
b2dyZXNzSXNDYW5jZWxlZCkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tE
b3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1
bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRv
RG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVi
bGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZv
clByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcyBjYW5jZWxdOw0KKyAgICBbdGVzdFJ1bm5lci5n
ZXQoKSB3YWl0Rm9yRG93bmxvYWRDYW5jZWxlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdh
aXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsN
Cit9DQorDQorLy8gUHVibGlzaGluZyBwcm9ncmVzcyBvbiBhIGRvd25sb2FkIGFmdGVyIGl0IGhh
cyBmaW5pc2hlZCBzaG91bGQgYmUgYSBzYWZlIG5vLW9wLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVz
cywgUHVibGlzaFByb2dyZXNzQWZ0ZXJEb3dubG9hZEZpbmlzaGVkKQ0KK3sNCisgICAgYXV0byB0
ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBp
bml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRT
dGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YToxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5n
ZXQoKSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9y
RG93bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVz
c107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gVGVz
dCB0aGUgYmVoYXZpb3Igb2YgYSBkb3dubG9hZCBvZiB1bmtub3duIGxlbmd0aC4NCitURVNUKERv
d25sb2FkUHJvZ3Jlc3MsIEluZGV0ZXJtaW5hdGVEb3dubG9hZFNpemUpDQorew0KKyAgICBhdXRv
IHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2Nd
IGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9h
ZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOk5TVVJMUmVz
cG9uc2VVbmtub3duTGVuZ3RoXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dy
ZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNz
XTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jlc3MudG90YWxVbml0Q291
bnQsIC0xKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAg
ICBFWFBFQ1RfRVEoW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0
Q291bnRdLCA1MCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLmZy
YWN0aW9uQ29tcGxldGVkLCAwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJv
Z3Jlc3MudG90YWxVbml0Q291bnQsIC0xKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmlu
aXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2Fk
RmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0K
Kw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0KKy8vIFRlc3QgdGhl
IGJlaGF2aW9yIHdoZW4gYSBkb3dubG9hZCBjb250aW51ZXMgcmV0dXJuaW5nIGRhdGEgYmV5b25k
IGl0cyBleHBlY3RlZCBsZW5ndGguDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBFeHRyYURhdGEp
DQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rl
c3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnRE
b3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVk
TGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQor
ICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorDQor
ICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjE1MF07DQorICAgIEVYUEVDVF9FUShb
dGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudF0sIDE1MCk7
DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLmZyYWN0aW9uQ29tcGxl
dGVkLCAxLjUpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2td
Ow0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAg
IFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gQ2xpZW50cyBzaG91bGQgYmUgYWJsZSB0
byBwdWJsaXNoIHByb2dyZXNzIG9uIGEgZG93bmxvYWQgdGhhdCBoYXMgYWxyZWFkeSBzdGFydGVk
Lg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgUHVibGlzaFByb2dyZXNzT25QYXJ0aWFsRG93bmxv
YWQpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Rh
cnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVj
dGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsN
CisNCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHRoZSBkYXRhIHRhc2sgaGFzIGJlY29tZSBhIGRv
d25sb2FkIHRhc2sgc28gdGhhdCB3ZSB0ZXN0DQorICAgIC8vIHRlbGxpbmcgYSBsaXZlIERvd25s
b2FkLCBub3QgYSBQZW5kaW5nRG93bmxvYWQsIHRvIHB1Ymxpc2ggaXRzIHByb2dyZXNzLg0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbl07
DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorICAgIEVYUEVDVF9F
USh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLmNvbXBsZXRlZFVuaXRDb3VudCwgNTApOw0KKw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorICAgIEVYUEVDVF9FUShb
dGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudF0sIDEwMCk7
DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFza107DQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkg
dGVhckRvd25dOw0KK30NCisNCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355976</attachid>
            <date>2018-11-28 21:36:31 -0800</date>
            <delta_ts>2018-11-28 22:33:08 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>file_192021.txt</filename>
            <type>text/plain</type>
            <size>75462</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDM0NDQxOWMwMzVmMTMxMTEyZTE1ZjkxNjFhZmYyOTA5YTIwMjk4MjkNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFdlZCBOb3Yg
MjggMjE6Mjg6NTcgMjAxOCAtMDgwMA0KDQogICAgQWRkIFNQSSB0byBwdWJsaXNoIE5TUHJvZ3Jl
c3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0KICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIwMjENCiAgICByZGFyOi8vcHJvYmxlbS80NDQwNTY2MQ0KICAgIA0KICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNvdXJjZS9XZWJDb3JlL1BB
TDoNCiAgICANCiAgICBBZGQgYW4gU1BJIGhlYWRlciBmb3IgTlNQcm9ncmVzcydzIHB1Ymxpc2hp
bmcgYW5kIHVucHVibGlzaGluZyBtZXRob2RzLiBJbiBvbGRlcg0KICAgIFNES3MsIHRoZXNlIG1l
dGhvZHMgYXJlIGV4cGxpY2l0bHkgdW5hdmFpbGFibGUgb24gcGxhdGZvcm1zIG90aGVyIHRoYW4g
bWFjT1MsDQogICAgd2l0aCB1bmRlcnNjb3JlLXByZWZpeGVkIHZlcnNpb25zIGF2YWlsYWJsZSBh
cyBTUEkuIEluIG5ld2VyIFNES3MsIHRoZSB1bnByZWZpeGVkDQogICAgdmVyc2lvbnMgYXJlIFNQ
SSBhbmQgdGhlIHByZWZpeGVkIHZlcnNpb25zIGFyZSBkZXByZWNhdGVkLg0KICAgIA0KICAgICog
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQogICAgKiBwYWwvc3BpL2NvY29hL05TUHJv
Z3Jlc3NTUEkuaDoNCiAgICANCiAgICBTb3VyY2UvV2ViS2l0Og0KICAgIA0KICAgIE1ha2UgaXQg
cG9zc2libGUgZm9yIGNsaWVudHMgdG8gYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvIG1vbml0b3Ig
dGhlIHN0YXRlIG9mIGFjdGl2ZQ0KICAgIGRvd25sb2Fkcy4gT24gQ29jb2EgcGxhdGZvcm1zLCB0
aGlzIGNhbiBiZSBkb25lIGJ5IGNyZWF0aW5nIGFuIE5TUHJvZ3Jlc3MsIHB1Ymxpc2hpbmcNCiAg
ICBpdCBvbiBhbiBhcHByb3ByaWF0ZSBmaWxlIFVSTCAocG90ZW50aWFsbHkgYSBkaWZmZXJlbnQg
ZmlsZSBVUkwgdGhhbiB3aGVyZSB0aGUgZG93bmxvYWQNCiAgICBkYXRhIGlzIGJlaW5nIHdyaXR0
ZW4pLCB1cGRhdGluZyBwcm9wZXJ0aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9n
cmVzcywgYW5kDQogICAgd2lyaW5nIHVwIGEgY2FuY2VsbGF0aW9uIGhhbmRsZXIgdGhhdCBhbGxv
d3MgaXQgdG8gYmUgcmVtb3RlbHkgY2FuY2VsZWQuIEludGVyZXN0ZWQNCiAgICBjbGllbnRzIGNh
biB0aGVuIHN1YnNjcmliZSB0byBwcm9ncmVzcyBvbiB0aGF0IFVSTCBhbmQgcmVjZWl2ZSBhIHBy
b3h5IHRvIHRoZSBwcm9ncmVzcw0KICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hlcy4NCiAgICANCiAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6
RG93bmxvYWQ6On5Eb3dubG9hZCk6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVz
dHJveURvd25sb2FkKToNCiAgICAgICAgQWRkIGEgcGxhdGZvcm0tY3VzdG9taXphYmxlIGhvb2sg
Zm9yIGRlc3RydWN0aW5nIHRoZSBEb3dubG9hZC4gRG93bmxvYWRDb2NvYS5tbQ0KICAgICAgICB3
aWxsIGludGVyYWN0IHdpdGggaXRzIE9iamVjdGl2ZS1DIE5TUHJvZ3Jlc3MgaW5zdGFuY2UgYXQg
dGhpcyBwb2ludC4NCiAgICANCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6
DQogICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFz
ayk6DQogICAgICAgIFNlZSBjb21tZW50cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4N
CiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToN
CiAgICAgICAgSWYgdGhlIHByb3ZpZGVkIGRvd25sb2FkSUQgY29ycmVzcG9uZHMgdG8gYSBub24t
UGVuZGluZyBEb3dubG9hZCwgaGFuZCB0aGUgVVJMDQogICAgICAgIGFuZCBhIG1hdGNoaW5nIHNh
bmRib3ggZXh0ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRlIGl0cyBwcm9n
cmVzcy4NCiAgICAgICAgT3RoZXJ3aXNlLCBzdG9yZSB0aGUgVVJMIGFuZCBzYW5kYm94IGV4dGVu
c2lvbiBvbiB0aGUgUGVuZGluZ0Rvd25sb2FkIHRvIGJlIHVzZWQNCiAgICAgICAgbGF0ZXIgd2hl
biB0aGUgZnVsbCBEb3dubG9hZCBpcyBjcmVhdGVkLiBXaGVuIHRoaXMgaGFwcGVucywgZGF0YVRh
c2tCZWNhbWVEb3dubG9hZFRhc2soKQ0KICAgICAgICB3aWxsIHRlbGwgdGhlIFBlbmRpbmdEb3du
bG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJlY29tZS4gVGhlIFBlbmRpbmdEb3dubG9h
ZA0KICAgICAgICB3aWxsIHRoZW4gcmVsYXkgdGhlIHByb2dyZXNzIFVSTCBhbmQgc2FuZGJveCBl
eHRlbnNpb24gdG8gdGhlIERvd25sb2FkLg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpwdWJs
aXNoUHJvZ3Jlc3MpOg0KICAgICAgICBTdG9yZSB0aGUgcHJvZ3Jlc3MgaW5mbyBmb3IgbGF0ZXIg
dXNlLCB3aGVuIHRoZSBwcm9wZXIgRG93bmxvYWQgaXMgY3JlYXRlZC4NCiAgICAoV2ViS2l0OjpQ
ZW5kaW5nRG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKToNCiAgICAgICAgSWYgdGhlcmUgd2Fz
IGEgcHJvZ3Jlc3MgVVJMIHByb3ZpZGVkIGVhcmxpZXIsIHRlbGwgdGhlIERvd25sb2FkIGNvcnJl
c3BvbmRpbmcgdG8gdGhpcw0KICAgICAgICBQZW5kaW5nRG93bmxvYWQgdG8gcHVibGlzaCBpdHMg
cHJvZ3Jlc3MgdXNpbmcgdGhhdCBVUkwuDQogICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
Y29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1E
ZXN0cm95RG93bmxvYWQpOg0KICAgICAgICBXaGVuIHRoZSBEb3dubG9hZCBpcyBkZXN0cm95ZWQg
KGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZhaWxzLCBvciBpcyBjYW5jZWxlZCks
DQogICAgICAgIHVucHVibGlzaCB0aGUgcHJvZ3Jlc3MsIHNpbmNlIHRoZXJlIGlzIG5vIGxvbmdl
ciBhbnkgYWN0aXZpdHkgdG8gcmVwb3J0Lg0KICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwdWJsaXNo
UHJvZ3Jlc3MpOg0KICAgICAgICBSZXNvbHZlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiwgY3JlYXRl
IGEgcHJvZ3Jlc3MgY29uZmlndXJlZCB0byByZWZsZWN0IHRoZSBwcm9ncmVzcyBvZg0KICAgICAg
ICB0aGlzIERvd25sb2FkJ3MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrLCBhbmQgcHVibGlzaCBp
dCBhdCB0aGUgZ2l2ZW4gZmlsZSBVUkwuDQogICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLg0KICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbTogQWRkZWQuDQogICAgKC1b
V0tEb3dubG9hZFByb2dyZXNzIGluaXRXaXRoRG93bmxvYWRUYXNrOmRvd25sb2FkOlVSTDpzYW5k
Ym94RXh0ZW5zaW9uOl0pOg0KICAgICAgICBDb25maWd1cmUgdGhpcyBwcm9ncmVzcywgc3RhcnQg
b2JzZXJ2aW5nIHByb3BlcnRpZXMgb24gdGhlIGRvd25sb2FkIHRhc2sgdGhhdCB0aGlzDQogICAg
ICAgIHByb2dyZXNzIHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxhdGlvbiBo
YW5kbGVyIG9mIHRoZSBwcm9ncmVzcyB0byBjYW5jZWwNCiAgICAgICAgdGhlIGNvcnJlc3BvbmRp
bmcgRG93bmxvYWQuDQogICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIHB1Ymxpc2hdKToNCiAgICAo
LVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQogICAgICAgIE92ZXJyaWRlIHRoZXNl
IG1ldGhvZHMgdG8gY29uc3VtZSBhbmQgcmV2b2tlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiB0byBt
YWtlIHN1cmUgdGhlDQogICAgICAgIHByb2Nlc3MgaGFzIGFjY2VzcyB0byB0aGUgcHJvZ3Jlc3Mg
ZmlsZSB3aGlsZSB0aGUgcHJvZ3Jlc3Mgd2lsbCBiZSBwdWJsaXNoZWQuDQogICAgKC1bV0tEb3du
bG9hZFByb2dyZXNzIGRlYWxsb2NdKToNCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3Mgb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToNCiAgICAgICAgV2hl
biBlaXRoZXIgYnl0ZSBjb3VudCAobnVtYmVyIHJlY2VpdmVkLCBvciBudW1iZXIgZXhwZWN0ZWQg
dG8gcmVjZWl2ZSkgb2YgdGhlIGRvd25sb2FkDQogICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRl
IHRoaXMgcHJvZ3Jlc3MgdG8gcmVmbGVjdCB0aGF0Lg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOg0KICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwdWJs
aXNoRG93bmxvYWRQcm9ncmVzcyk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46DQog
ICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbjoNCiAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCiAgICAgICAgQWxsb3cgbG9va2luZyB1cCB0aGUgc2Vy
dmljZXMgdGhhdCBtYW5hZ2VzIHB1Ymxpc2hlZCBOU1Byb2dyZXNzZXMuDQogICAgDQogICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6DQogICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tOg0KICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0
VVJMOl0pOg0KICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoNCiAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3MpOg0KICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6DQogICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoNCiAgICANCiAgICBUb29sczoNCiAgICANCiAgICBBZGQgQVBJIHRlc3Rz
IHRvIGV4ZXJjaXNlIHRoZSBwcm9ncmVzcy1wdWJsaXNoaW5nIGZ1bmN0aW9uYWxpdHkgaW4gYSB2
YXJpZXR5IG9mIHNjZW5hcmlvcy4NCiAgICANCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOiBBZGRlZC4NCiAgICAoK1tEb3dubG9h
ZFByb2dyZXNzVGVzdFByb3RvY29sIHJlZ2lzdGVyUHJvdG9jb2xGb3JUZXN0UnVubmVyOl0pOg0K
ICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgdW5yZWdpc3RlclByb3RvY29sXSk6
DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6
XSk6DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0
Rm9yUmVxdWVzdDpdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHJlcXVl
c3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVlc3Q6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RQcm90b2NvbCBzdGFydExvYWRpbmddKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFByb3RvY29sIHN0b3BMb2FkaW5nXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgaW5pdF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0TG9hZGlu
Z1dpdGhQcm90b2NvbDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB0ZWFy
RG93bl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kaWRHZXRQcm9ncmVz
czpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkTG9zZVByb2dyZXNz
XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3Vic2NyaWJlQW5kV2FpdEZv
clByb2dyZXNzXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdFRvTG9z
ZVByb2dyZXNzXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3du
bG9hZDpleHBlY3RlZExlbmd0aDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBwdWJsaXNoUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBy
ZWNlaXZlRGF0YTpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmaW5pc2hE
b3dubG9hZFRhc2tdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmYWlsRG93
bmxvYWRUYXNrXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25dKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXSk6DQogICAgKC1bRG93bmxvYWRQ
cm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkRmFpbGVkXSk6DQogICAgKC1bRG93bmxv
YWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdKToN
CiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9u
SGFuZGxlcjpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOg0KICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZERpZFN0YXJ0Ol0pOg0KICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlv
bjpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWREaWRGaW5p
c2g6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkQ2Fu
Y2VsOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRG
YWlsV2l0aEVycm9yOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3du
bG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToNCiAgICAoVEVTVCk6DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZw0KaW5kZXggMmFlNDEwYzE5
Y2IuLjVhNWY4NzI3ZjE3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zw0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZw0KQEAgLTEsMyArMSwxOSBAQA0K
KzIwMTgtMTEtMjggIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisN
CisgICAgICAgIEFkZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9h
ZHMNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIw
MjENCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEFkZCBhbiBTUEkgaGVhZGVyIGZvciBO
U1Byb2dyZXNzJ3MgcHVibGlzaGluZyBhbmQgdW5wdWJsaXNoaW5nIG1ldGhvZHMuIEluIG9sZGVy
DQorICAgICAgICBTREtzLCB0aGVzZSBtZXRob2RzIGFyZSBleHBsaWNpdGx5IHVuYXZhaWxhYmxl
IG9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIG1hY09TLA0KKyAgICAgICAgd2l0aCB1bmRlcnNjb3Jl
LXByZWZpeGVkIHZlcnNpb25zIGF2YWlsYWJsZSBhcyBTUEkuIEluIG5ld2VyIFNES3MsIHRoZSB1
bnByZWZpeGVkDQorICAgICAgICB2ZXJzaW9ucyBhcmUgU1BJIGFuZCB0aGUgcHJlZml4ZWQgdmVy
c2lvbnMgYXJlIGRlcHJlY2F0ZWQuDQorDQorICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOg0KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaDoNCisN
CiAyMDE4LTExLTI4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4NCiAN
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzg2NTMgYW5kIHIyMzg2NTYuDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQpp
bmRleCA3N2YyNDY3M2U1MS4uM2RhOGJmOWJmZGMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTExNCw2ICsxMTQsNyBAQA0K
IAkJNDQyOTU2Q0QyMThBNzJERjAwODBEQjU0IC8qIFJldmVhbFNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0
IC8qIFJldmVhbFNQSS5oICovOyB9Ow0KIAkJNTcwQUI4RjEyMEFFMkU4RDAwQjhCRTg3IC8qIFNl
Y0tleVByb3h5U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzBBQjhGMDIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLzsgfTsN
CiAJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEY4MjBBRjZF
M0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCAqLzsgfTsNCisJCTYzQzdFREM3MjFB
RkFFMDQwMDZBN0I5OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9n
cmVzc1NQSS5oICovOyB9Ow0KIAkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRB
cmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovOyB9
Ow0KIAkJN0EzQTZBODAyMENBREI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMx
N0FBRSAvKiBOU0ltYWdlU1BJLmggKi87IH07DQogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQg
LyogSElUb29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07
DQpAQCAtMjcxLDYgKzI3Miw3IEBADQogCQk0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2
ZWFsU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJldmVhbFNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8q
IFNlY0tleVByb3h5U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0tleVByb3h5U1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk1NzBBQjhGODIwQUY2RTNEMDBCOEJFODcgLyogTlNY
UENDb25uZWN0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TWFBDQ29ubmVjdGlvblNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8q
IE5TUHJvZ3Jlc3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9Ow0KIAkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5
ZWRBcmNoaXZlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0tleWVk
QXJjaGl2ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTdBM0E2QTdGMjBD
QURCNDYwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TSW1hZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTkzRTU5
MDlDMUY5M0JGMUUwMDY3RjhDRiAvKiBVbmVuY29kYWJsZUhhbmRsaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVuZW5jb2RhYmxlSGFuZGxpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCkBA
IC0zOTcsNiArMzk5LDcgQEANCiAJCQkJMEMyREExMzMxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmls
ZU1hbmFnZXJTUEkuaCAqLywNCiAJCQkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaCAqLywNCiAJCQkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8q
IE5TS2V5ZWRBcmNoaXZlclNQSS5oICovLA0KKwkJCQk2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMg
LyogTlNQcm9ncmVzc1NQSS5oICovLA0KIAkJCQkwQzJEQTEzNDFGM0JFQjQ5MDBEQkMzMTcgLyog
TlNTdHJpbmdTUEkuaCAqLywNCiAJCQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91
Y2hCYXJTUEkuaCAqLywNCiAJCQkJMEMyREExMzYxRjNCRUI0OTAwREJDMzE3IC8qIE5TVVJMQ29u
bmVjdGlvblNQSS5oICovLA0KQEAgLTc0Myw2ICs3NDYsNyBAQA0KIAkJCQkwQzc3ODU5RjFGNDUx
MzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkwQzJEQTE1NzFG
M0JFQjQ5MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCUEx
MDI2NThCMUY1Njc0OEMwMEI0Qzg0NCAvKiBRdWlja0RyYXdTUEkuaCBpbiBIZWFkZXJzICovLA0K
KwkJCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVzc1NQSS5oIGluIEhlYWRl
cnMgKi8sDQogCQkJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEku
aCBpbiBIZWFkZXJzICovLA0KIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tM
b29rU1BJLmggaW4gSGVhZGVycyAqLywNCiAJCQkJNDQyOTU2Q0QyMThBNzJERjAwODBEQjU0IC8q
IFJldmVhbFNQSS5oIGluIEhlYWRlcnMgKi8sDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMDAwMDAuLjYyZTZkZGVkN2U2DQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmgNCkBAIC0wLDAgKzEsNDcgQEAN
CisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0K
KyNkZWZpbmUgVVNFX05TUFJPR1JFU1NfUFVCTElTSElOR19TUEkgKChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEzMDAwMCkgfHwgKFBM
QVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA2MDAw
MCkgfHwgKFBMQVRGT1JNKFRWT1MpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MzAwMDApKQ0KKw0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisNCisjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykNCisNCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jl
c3NfUHJpdmF0ZS5oPg0KKw0KKyNlbHNlDQorDQorQGludGVyZmFjZSBOU1Byb2dyZXNzICgpDQor
DQorLSAodm9pZClfcHVibGlzaDsNCistICh2b2lkKV91bnB1Ymxpc2g7DQorDQorQGVuZA0KKw0K
KyNlbmRpZiAvLyBub3QgVVNFKEFQUExFX0lOVEVSTkFMX1NESykNCisNCisjZW5kaWYgLy8gVVNF
KE5TUFJPR1JFU1NfUFVCTElTSElOR19TUEkpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KaW5kZXggNjQ5NTBiZjBhNTMuLjZm
MzE1ZmQ4NjE5IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDg2IEBADQorMjAxOC0xMS0yOCAgRGF2
aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPg0KKw0KKyAgICAgICAgQWRkIFNQ
SSB0byBwdWJsaXNoIE5TUHJvZ3Jlc3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjAyMQ0KKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vNDQ0MDU2NjENCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLg0KKw0KKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgY2xpZW50cyB0byBhbGxvdyBv
dGhlciBwcm9jZXNzZXMgdG8gbW9uaXRvciB0aGUgc3RhdGUgb2YgYWN0aXZlDQorICAgICAgICBk
b3dubG9hZHMuIE9uIENvY29hIHBsYXRmb3JtcywgdGhpcyBjYW4gYmUgZG9uZSBieSBjcmVhdGlu
ZyBhbiBOU1Byb2dyZXNzLCBwdWJsaXNoaW5nDQorICAgICAgICBpdCBvbiBhbiBhcHByb3ByaWF0
ZSBmaWxlIFVSTCAocG90ZW50aWFsbHkgYSBkaWZmZXJlbnQgZmlsZSBVUkwgdGhhbiB3aGVyZSB0
aGUgZG93bmxvYWQNCisgICAgICAgIGRhdGEgaXMgYmVpbmcgd3JpdHRlbiksIHVwZGF0aW5nIHBy
b3BlcnRpZXMgb24gaXQgYXMgdGhlIGRvd25sb2FkIG1ha2VzIHByb2dyZXNzLCBhbmQNCisgICAg
ICAgIHdpcmluZyB1cCBhIGNhbmNlbGxhdGlvbiBoYW5kbGVyIHRoYXQgYWxsb3dzIGl0IHRvIGJl
IHJlbW90ZWx5IGNhbmNlbGVkLiBJbnRlcmVzdGVkDQorICAgICAgICBjbGllbnRzIGNhbiB0aGVu
IHN1YnNjcmliZSB0byBwcm9ncmVzcyBvbiB0aGF0IFVSTCBhbmQgcmVjZWl2ZSBhIHByb3h5IHRv
IHRoZSBwcm9ncmVzcw0KKyAgICAgICAgdGhhdCBXZWJLaXQgcHVibGlzaGVzLg0KKw0KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOg0KKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWQ6On5Eb3dubG9hZCk6DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
cGxhdGZvcm1EZXN0cm95RG93bmxvYWQpOg0KKyAgICAgICAgICAgIEFkZCBhIHBsYXRmb3JtLWN1
c3RvbWl6YWJsZSBob29rIGZvciBkZXN0cnVjdGluZyB0aGUgRG93bmxvYWQuIERvd25sb2FkQ29j
b2EubW0NCisgICAgICAgICAgICB3aWxsIGludGVyYWN0IHdpdGggaXRzIE9iamVjdGl2ZS1DIE5T
UHJvZ3Jlc3MgaW5zdGFuY2UgYXQgdGhpcyBwb2ludC4NCisNCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayk6DQorICAgICAgICAgICAgU2VlIGNv
bW1lbnRzIGZvciBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcygpLg0KKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyOjpwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyk6DQorICAgICAgICAgICAg
SWYgdGhlIHByb3ZpZGVkIGRvd25sb2FkSUQgY29ycmVzcG9uZHMgdG8gYSBub24tUGVuZGluZyBE
b3dubG9hZCwgaGFuZCB0aGUgVVJMDQorICAgICAgICAgICAgYW5kIGEgbWF0Y2hpbmcgc2FuZGJv
eCBleHRlbnNpb24gdG8gdGhlIERvd25sb2FkIHNvIGl0IGNhbiBjcmVhdGUgaXRzIHByb2dyZXNz
Lg0KKyAgICAgICAgICAgIE90aGVyd2lzZSwgc3RvcmUgdGhlIFVSTCBhbmQgc2FuZGJveCBleHRl
bnNpb24gb24gdGhlIFBlbmRpbmdEb3dubG9hZCB0byBiZSB1c2VkDQorICAgICAgICAgICAgbGF0
ZXIgd2hlbiB0aGUgZnVsbCBEb3dubG9hZCBpcyBjcmVhdGVkLiBXaGVuIHRoaXMgaGFwcGVucywg
ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soKQ0KKyAgICAgICAgICAgIHdpbGwgdGVsbCB0aGUg
UGVuZGluZ0Rvd25sb2FkIGFib3V0IHRoZSBEb3dubG9hZCBpdCBoYXMgYmVjb21lLiBUaGUgUGVu
ZGluZ0Rvd25sb2FkDQorICAgICAgICAgICAgd2lsbCB0aGVuIHJlbGF5IHRoZSBwcm9ncmVzcyBV
UkwgYW5kIHNhbmRib3ggZXh0ZW5zaW9uIHRvIHRoZSBEb3dubG9hZC4NCisNCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOg0KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoNCisgICAgICAgIChX
ZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6cHVibGlzaFByb2dyZXNzKToNCisgICAgICAgICAgICBT
dG9yZSB0aGUgcHJvZ3Jlc3MgaW5mbyBmb3IgbGF0ZXIgdXNlLCB3aGVuIHRoZSBwcm9wZXIgRG93
bmxvYWQgaXMgY3JlYXRlZC4NCisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6ZGlk
QmVjb21lRG93bmxvYWQpOg0KKyAgICAgICAgICAgIElmIHRoZXJlIHdhcyBhIHByb2dyZXNzIFVS
TCBwcm92aWRlZCBlYXJsaWVyLCB0ZWxsIHRoZSBEb3dubG9hZCBjb3JyZXNwb25kaW5nIHRvIHRo
aXMNCisgICAgICAgICAgICBQZW5kaW5nRG93bmxvYWQgdG8gcHVibGlzaCBpdHMgcHJvZ3Jlc3Mg
dXNpbmcgdGhhdCBVUkwuDQorDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaDoNCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2Nv
Y29hL0Rvd25sb2FkQ29jb2EubW06DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZv
cm1EZXN0cm95RG93bmxvYWQpOg0KKyAgICAgICAgICAgIFdoZW4gdGhlIERvd25sb2FkIGlzIGRl
c3Ryb3llZCAoaS5lLiB3aGVuIHRoZSBkb3dubG9hZCBzdWNjZWVkcywgZmFpbHMsIG9yIGlzIGNh
bmNlbGVkKSwNCisgICAgICAgICAgICB1bnB1Ymxpc2ggdGhlIHByb2dyZXNzLCBzaW5jZSB0aGVy
ZSBpcyBubyBsb25nZXIgYW55IGFjdGl2aXR5IHRvIHJlcG9ydC4NCisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkOjpwdWJsaXNoUHJvZ3Jlc3MpOg0KKyAgICAgICAgICAgIFJlc29sdmUgdGhlIHNh
bmRib3ggZXh0ZW5zaW9uLCBjcmVhdGUgYSBwcm9ncmVzcyBjb25maWd1cmVkIHRvIHJlZmxlY3Qg
dGhlIHByb2dyZXNzIG9mDQorICAgICAgICAgICAgdGhpcyBEb3dubG9hZCdzIE5TVVJMU2Vzc2lv
bkRvd25sb2FkVGFzaywgYW5kIHB1Ymxpc2ggaXQgYXQgdGhlIGdpdmVuIGZpbGUgVVJMLg0KKw0K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dy
ZXNzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZC5oLg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tE
b3dubG9hZFByb2dyZXNzLm1tOiBBZGRlZC4NCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVz
cyBpbml0V2l0aERvd25sb2FkVGFzazpkb3dubG9hZDpVUkw6c2FuZGJveEV4dGVuc2lvbjpdKToN
CisgICAgICAgICAgICBDb25maWd1cmUgdGhpcyBwcm9ncmVzcywgc3RhcnQgb2JzZXJ2aW5nIHBy
b3BlcnRpZXMgb24gdGhlIGRvd25sb2FkIHRhc2sgdGhhdCB0aGlzDQorICAgICAgICAgICAgcHJv
Z3Jlc3Mgd2lsbCByZWZsZWN0LCBhbmQgY29ubmVjdCB0aGUgY2FuY2VsbGF0aW9uIGhhbmRsZXIg
b2YgdGhlIHByb2dyZXNzIHRvIGNhbmNlbA0KKyAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5n
IERvd25sb2FkLg0KKyAgICAgICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIHB1Ymxpc2hdKToNCisg
ICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyB1bnB1Ymxpc2hdKToNCisgICAgICAgICAgICBP
dmVycmlkZSB0aGVzZSBtZXRob2RzIHRvIGNvbnN1bWUgYW5kIHJldm9rZSB0aGUgc2FuZGJveCBl
eHRlbnNpb24gdG8gbWFrZSBzdXJlIHRoZQ0KKyAgICAgICAgICAgIHByb2Nlc3MgaGFzIGFjY2Vz
cyB0byB0aGUgcHJvZ3Jlc3MgZmlsZSB3aGlsZSB0aGUgcHJvZ3Jlc3Mgd2lsbCBiZSBwdWJsaXNo
ZWQuDQorICAgICAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgZGVhbGxvY10pOg0KKyAgICAgICAg
KC1bV0tEb3dubG9hZFByb2dyZXNzIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hh
bmdlOmNvbnRleHQ6XSk6DQorICAgICAgICAgICAgV2hlbiBlaXRoZXIgYnl0ZSBjb3VudCAobnVt
YmVyIHJlY2VpdmVkLCBvciBudW1iZXIgZXhwZWN0ZWQgdG8gcmVjZWl2ZSkgb2YgdGhlIGRvd25s
b2FkDQorICAgICAgICAgICAgdGFzayBjaGFuZ2VzLCB1cGRhdGUgdGhpcyBwcm9ncmVzcyB0byBy
ZWZsZWN0IHRoYXQuDQorDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoNCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwdWJsaXNoRG93bmxvYWRQ
cm9ncmVzcyk6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6DQor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOg0KKw0K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbjoNCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29t
LmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiOg0KKyAgICAgICAgICAgIEFsbG93IGxvb2tpbmcg
dXAgdGhlIHNlcnZpY2VzIHRoYXQgbWFuYWdlcyBwdWJsaXNoZWQgTlNQcm9ncmVzc2VzLg0KKw0K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6DQorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW06DQorICAgICAgICAoLVtfV0tEb3du
bG9hZCBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDpdKToNCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OnB1Ymxpc2hQcm9ncmVzcyk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oOg0KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoN
CisNCiAyMDE4LTExLTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+DQog
DQogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKD8pOiBhbGwgIlNob3cgKiIgZGV2
ZWxvcCBtZW51IGl0ZW1zIGNhdXNlIHRoZSBwYWdlIHRvIGNyYXNoDQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwDQppbmRleCA0OTRk
OTlmMGViMi4uMTc3ZjliYTQ5YzMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTc3LDYgKzc3LDcgQEAgRG93bmxv
YWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElE
IGRvd25sb2FkSUQsIE5TVVINCiANCiBEb3dubG9hZDo6fkRvd25sb2FkKCkNCiB7DQorICAgIHBs
YXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZERlc3Ry
b3lEb3dubG9hZCgpOw0KIH0NCiANCkBAIC0xNzksNiArMTgwLDEwIEBAIGJvb2wgRG93bmxvYWQ6
OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0DQogdm9pZCBEb3dubG9hZDo6cGxhdGZv
cm1DYW5jZWxOZXR3b3JrTG9hZCgpDQogew0KIH0NCisNCit2b2lkIERvd25sb2FkOjpwbGF0Zm9y
bURlc3Ryb3lEb3dubG9hZCgpDQorew0KK30NCiAjZW5kaWYNCiANCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaA0KaW5kZXggNTkwZjllYjZmODUuLmJkYmM4ZTE1MjYwIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaA0KQEAgLTM3LDYg
KzM3LDcgQEANCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KIA0KICNpZiBQTEFURk9STShD
T0NPQSkNCitPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7DQogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2s7DQogI2VuZGlmDQogDQpAQCAtNzMsNiArNzQsOSBAQCBwdWJsaWM6DQogDQog
ICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7DQogICAgIHZvaWQg
Y2FuY2VsKCk7DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hQcm9ncmVz
cyhjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7DQorI2Vu
ZGlmDQogDQogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93
bmxvYWRJRDsgfQ0KICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0NCkBAIC05MSw2ICs5NSw3IEBAIHByaXZhdGU6DQogICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7DQogDQogICAg
IHZvaWQgcGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpOw0KKyAgICB2b2lkIHBsYXRmb3JtRGVz
dHJveURvd25sb2FkKCk7DQogDQogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
Y29uc3Q7DQogDQpAQCAtMTAzLDYgKzEwOCw3IEBAIHByaXZhdGU6DQogICAgIFJlZlB0cjxOZXR3
b3JrRGF0YVRhc2s+IG1fZG93bmxvYWQ7DQogI2lmIFBMQVRGT1JNKENPQ09BKQ0KICAgICBSZXRh
aW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2FkVGFzazsNCisgICAgUmV0
YWluUHRyPE5TUHJvZ3Jlc3M+IG1fcHJvZ3Jlc3M7DQogI2VuZGlmDQogICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOw0KICAgICBTdHJpbmcgbV9zdWdnZXN0ZWROYW1lOw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwDQppbmRleCAxZTI4ZmM5NDI3OC4uNmYwMTA4ZWQxYjYgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
DQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwDQpAQCAtNjQsNyArNjQsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0
RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIFANCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJ
RCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpDQogew0K
ICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCi0g
ICAgbV9wZW5kaW5nRG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsNCisgICAgaWYgKGF1dG8g
cGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLnRha2UoZG93bmxvYWRJRCkpIHsN
CisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgICAgICBwZW5kaW5nRG93bmxvYWQtPmRpZEJlY29t
ZURvd25sb2FkKGRvd25sb2FkKTsNCisjZW5kaWYNCisgICAgfQ0KICAgICBBU1NFUlQoIW1fZG93
bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3dubG9hZHNBZnRlckRlc3Rp
bmF0aW9uRGVjaWRlZC5yZW1vdmUoZG93bmxvYWRJRCk7DQogICAgIG1fZG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7DQpAQCAtMTU1LDYgKzE1OSwxNiBAQCB2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQ0K
ICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jYW5jZWwoKTsNCiB9DQogDQorI2lmIFBMQVRGT1JN
KENPQ09BKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhE
b3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3sNCisgICAgaWYgKERv
d25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKSkNCisgICAgICAg
IGRvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKTsNCisgICAgZWxzZSBpZiAoUGVuZGluZ0Rvd25sb2FkKiBwZW5kaW5nRG93bmxvYWQg
PSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKQ0KKyAgICAgICAgcGVuZGluZ0Rv
d25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpKTsNCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkNCiB7DQogICAgIEFT
U0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZC0+ZG93bmxvYWRJRCgpKSk7DQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaA0KaW5kZXggNTFkMGVmMTZhNmMuLjgwNzg0MTBkYTMzIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgN
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oDQpAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6DQogICAgIHZvaWQgcmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik7DQogDQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQorI2lmIFBMQVRG
T1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisjZW5k
aWYNCiAgICAgDQogICAgIERvd25sb2FkKiBkb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQp
IHsgcmV0dXJuIG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsgfQ0KIA0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwDQppbmRleCBhMDk5YWIzNWU5NC4uYWVjNGRhMjIzNGMgMTAwNjQ0DQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwDQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwDQpAQCAtNzUsNiArNzUsMjEgQEAgdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNhbmNlbCgp
DQogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZENhbmNlbCh7IH0pKTsNCiB9
DQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgUGVuZGluZ0Rvd25sb2FkOjpwdWJsaXNo
UHJvZ3Jlc3MoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb24pDQorew0KKyAgICBBU1NFUlQoIW1fcHJvZ3Jlc3NVUkwuaXNW
YWxpZCgpKTsNCisgICAgbV9wcm9ncmVzc1VSTCA9IHVybDsNCisgICAgbV9wcm9ncmVzc1NhbmRi
b3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOw0KK30NCisNCit2b2lkIFBl
bmRpbmdEb3dubG9hZDo6ZGlkQmVjb21lRG93bmxvYWQoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPERv
d25sb2FkPiYgZG93bmxvYWQpDQorew0KKyAgICBpZiAobV9wcm9ncmVzc1VSTC5pc1ZhbGlkKCkp
DQorICAgICAgICBkb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKG1fcHJvZ3Jlc3NVUkwsIFdURk1v
dmUobV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb24pKTsNCit9DQorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQ0KKw0KIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikNCiB7DQogICAgIHNlbmQoTWVzc2FnZXM6OkRv
d25sb2FkUHJveHk6OkRpZEZhaWwoZXJyb3IsIHsgfSkpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgNCmluZGV4
IGEzODM3NDk4YWJlLi45NDQyZWRiYzQxOCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaA0KQEAgLTM0LDYg
KzM0LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsNCiANCiBuYW1lc3BhY2UgV2ViS2l0IHsN
CiANCitjbGFzcyBEb3dubG9hZDsNCiBjbGFzcyBEb3dubG9hZElEOw0KIGNsYXNzIE5ldHdvcmtM
b2FkOw0KIGNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsNCkBAIC00OCw2ICs0OSwxMSBAQCBw
dWJsaWM6DQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpOw0KICAgICB2b2lkIGNhbmNlbCgpOw0KIA0KKyNpZiBQTEFURk9STShDT0NP
QSkNCisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mKTsNCisjZW5kaWYNCisNCiBwcml2YXRlOiAgICAN
CiAgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuDQogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGUgeyB9DQpAQCAtNjYsNiArNzIsMTEgQEAgcHJpdmF0ZToNCiBwcml2YXRl
Og0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7DQogICAg
IGJvb2wgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsNCisNCisjaWYgUExBVEZP
Uk0oQ09DT0EpDQorICAgIFdlYkNvcmU6OlVSTCBtX3Byb2dyZXNzVVJMOw0KKyAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgbV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb247DQorI2VuZGlmDQog
fTsNCiANCiB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCmluZGV4IGVmZDcxYjIwNDAzLi4y
NTE3MTA0MWIyNCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCkBAIC0yOSw3ICsyOSw5
IEBADQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIg0KICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9u
Q29jb2EuaCINCiAjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIg0KKyNpbXBvcnQgIldLRG93bmxv
YWRQcm9ncmVzcy5oIg0KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+DQorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+DQogDQogbmFtZXNwYWNlIFdlYktp
dCB7DQogDQpAQCAtODcsNCArODksMzYgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxO
ZXR3b3JrTG9hZCgpDQogICAgIH1dOw0KIH0NCiANCit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURl
c3Ryb3lEb3dubG9hZCgpDQorew0KKyAgICBpZiAobV9wcm9ncmVzcykNCisjaWYgVVNFKE5TUFJP
R1JFU1NfUFVCTElTSElOR19TUEkpDQorICAgICAgICBbbV9wcm9ncmVzcyBfdW5wdWJsaXNoXTsN
CisjZWxzZQ0KKyAgICAgICAgW21fcHJvZ3Jlc3MgdW5wdWJsaXNoXTsNCisjZW5kaWYNCit9DQor
DQordm9pZCBEb3dubG9hZDo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3sN
CisjaWYgV0tfQVBJX0VOQUJMRUQNCisgICAgQVNTRVJUKCFtX3Byb2dyZXNzKTsNCisgICAgQVNT
RVJUKHVybC5pc1ZhbGlkKCkpOw0KKw0KKyAgICBhdXRvIHNhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQor
DQorICAgIEFTU0VSVChzYW5kYm94RXh0ZW5zaW9uKTsNCisNCisgICAgbV9wcm9ncmVzcyA9IGFk
b3B0TlMoW1tXS0Rvd25sb2FkUHJvZ3Jlc3MgYWxsb2NdIGluaXRXaXRoRG93bmxvYWRUYXNrOm1f
ZG93bmxvYWRUYXNrLmdldCgpIGRvd25sb2FkOnRoaXMgVVJMOihOU1VSTCAqKXVybCBzYW5kYm94
RXh0ZW5zaW9uOnNhbmRib3hFeHRlbnNpb25dKTsNCisjaWYgVVNFKE5TUFJPR1JFU1NfUFVCTElT
SElOR19TUEkpDQorICAgIFttX3Byb2dyZXNzIF9wdWJsaXNoXTsNCisjZWxzZQ0KKyAgICBbbV9w
cm9ncmVzcyBwdWJsaXNoXTsNCisjZW5kaWYNCisjZWxzZQ0KKyAgICBVTlVTRURfUEFSQU0odXJs
KTsNCisgICAgVU5VU0VEX1BBUkFNKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOw0KKyNlbmRpZiAv
LyBub3QgV0tfQVBJX0VOQUJMRUQNCit9DQorDQogfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFBy
b2dyZXNzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMWNjYjMy
ZThmMGMNCi0tLSAvZGV2L251bGwNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5oDQpAQCAtMCwwICsxLDUwIEBADQor
LyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
Lg0KKyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUN
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLA0KKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SDQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTg0KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1Byb2dyZXNzLmg+DQorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPg0KKw0KK25hbWVzcGFj
ZSBXZWJLaXQgew0KKw0KK2NsYXNzIERvd25sb2FkOw0KK2NsYXNzIFNhbmRib3hFeHRlbnNpb247
DQorDQorfQ0KKw0KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lODQorDQorQGludGVyZmFjZSBXS0Rv
d25sb2FkUHJvZ3Jlc3MgOiBOU1Byb2dyZXNzDQorDQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RG93bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKil0YXNrIGRvd25sb2FkOihX
ZWJLaXQ6OkRvd25sb2FkICopZG93bmxvYWQgVVJMOihOU1VSTCAqKWZpbGVVUkwgc2FuZGJveEV4
dGVuc2lvbjooV1RGOjpSZWZQdHI8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uPilzYW5kYm94RXh0
ZW5zaW9uOw0KKw0KK0BlbmQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9FTkQNCisNCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MubW0NCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uODgzZjdkOWUxYzANCi0tLSAv
ZGV2L251bGwNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2Nv
Y29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbQ0KQEAgLTAsMCArMSwxNDAgQEANCisvKg0KKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgImNvbmZpZy5oIg0KKyNpbXBvcnQg
IldLRG93bmxvYWRQcm9ncmVzcy5oIg0KKw0KKyNpZiBXS19BUElfRU5BQkxFRA0KKw0KKyNpbXBv
cnQgIkRvd25sb2FkLmgiDQorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+
DQorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+DQorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
DQorDQorc3RhdGljIHZvaWQgKiBXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc0V4cGVjdGVkVG9SZWNl
aXZlQ291bnRDb250ZXh0ID0gJldLRG93bmxvYWRQcm9ncmVzc0J5dGVzRXhwZWN0ZWRUb1JlY2Vp
dmVDb3VudENvbnRleHQ7DQorc3RhdGljIHZvaWQgKiBXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc1Jl
Y2VpdmVkQ29udGV4dCA9ICZXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc1JlY2VpdmVkQ29udGV4dDsN
CisNCitAaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZFByb2dyZXNzIHsNCisgICAgUmV0YWluUHRy
PE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzaz4gbV90YXNrOw0KKyAgICBXZWJLaXQ6OkRvd25sb2Fk
KiBtX2Rvd25sb2FkOw0KKyAgICBSZWZQdHI8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uPiBtX3Nh
bmRib3hFeHRlbnNpb247DQorfQ0KKw0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvd25sb2Fk
VGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopdGFzayBkb3dubG9hZDooV2ViS2l0OjpE
b3dubG9hZCopZG93bmxvYWQgVVJMOihOU1VSTCAqKWZpbGVVUkwgc2FuZGJveEV4dGVuc2lvbjoo
UmVmUHRyPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbj4pc2FuZGJveEV4dGVuc2lvbg0KK3sNCisg
ICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRXaXRoUGFyZW50Om5pbCB1c2VySW5mbzpuaWxdKSkN
CisgICAgICAgIHJldHVybiBuaWw7DQorDQorICAgIG1fdGFzayA9IHRhc2s7DQorICAgIG1fZG93
bmxvYWQgPSBkb3dubG9hZDsNCisNCisgICAgW3Rhc2sgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQ
YXRoOkAiY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsIGNvbnRl
eHQ6V0tEb3dubG9hZFByb2dyZXNzQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZUNvdW50Q29udGV4dF07
DQorICAgIFt0YXNrIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvdW50T2ZCeXRlc1Jl
Y2VpdmVkIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0OldLRG93bmxvYWRQcm9ncmVzc0J5dGVzUmVj
ZWl2ZWRDb250ZXh0XTsNCisNCisgICAgc2VsZi5raW5kID0gTlNQcm9ncmVzc0tpbmRGaWxlOw0K
KyNpZiAhUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMA0KKyAgICBzZWxmLmZpbGVPcGVyYXRpb25LaW5kID0gTlNQcm9ncmVzc0ZpbGVPcGVy
YXRpb25LaW5kRG93bmxvYWRpbmc7DQorICAgIHNlbGYuZmlsZVVSTCA9IGZpbGVVUkw7DQorI2Vs
c2UNCisgICAgW3NlbGYgc2V0VXNlckluZm9PYmplY3Q6TlNQcm9ncmVzc0ZpbGVPcGVyYXRpb25L
aW5kRG93bmxvYWRpbmcgZm9yS2V5Ok5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2luZEtleV07DQor
ICAgIFtzZWxmIHNldFVzZXJJbmZvT2JqZWN0OmZpbGVVUkwgZm9yS2V5Ok5TUHJvZ3Jlc3NGaWxl
VVJMS2V5XTsNCisjZW5kaWYNCisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gc2FuZGJveEV4dGVu
c2lvbjsNCisNCisgICAgV2Vha09iakNQdHI8V0tEb3dubG9hZFByb2dyZXNzPiB3ZWFrU2VsZiB7
IHNlbGYgfTsNCisgICAgc2VsZi5jYW5jZWxsYWJsZSA9IFlFUzsNCisgICAgc2VsZi5jYW5jZWxs
YXRpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFt3ZWFrU2VsZiA9
IFdURk1vdmUod2Vha1NlbGYpXSB7DQorICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2Vs
Zi5nZXQoKTsNCisgICAgICAgIGlmICghc3Ryb25nU2VsZikNCisgICAgICAgICAgICByZXR1cm47
DQorDQorICAgICAgICBXZWJLaXQ6OkRvd25sb2FkKiBkb3dubG9hZCA9IHN0cm9uZ1NlbGYuZ2V0
KCktPm1fZG93bmxvYWQ7DQorICAgICAgICBpZiAoZG93bmxvYWQpDQorICAgICAgICAgICAgZG93
bmxvYWQtPmNhbmNlbCgpOw0KKyAgICB9KS5nZXQoKTsNCisNCisgICAgcmV0dXJuIHNlbGY7DQor
fQ0KKw0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCistICh2b2lkKV9wdWJs
aXNoDQorI2Vsc2UNCistICh2b2lkKXB1Ymxpc2gNCisjZW5kaWYNCit7DQorICAgIEJPT0wgY29u
c3VtZWRFeHRlbnNpb24gPSBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCisgICAgQVNT
RVJUX1VOVVNFRChjb25zdW1lZEV4dGVuc2lvbiwgY29uc3VtZWRFeHRlbnNpb24pOw0KKw0KKyNp
ZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisgICAgW3N1cGVyIF9wdWJsaXNoXTsN
CisjZWxzZQ0KKyAgICBbc3VwZXIgcHVibGlzaF07DQorI2VuZGlmDQorfQ0KKw0KKyNpZiBVU0Uo
TlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCistICh2b2lkKV91bnB1Ymxpc2gNCisjZWxzZQ0K
Ky0gKHZvaWQpdW5wdWJsaXNoDQorI2VuZGlmDQorew0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJM
SVNISU5HX1NQSSkNCisgICAgW3N1cGVyIF91bnB1Ymxpc2hdOw0KKyNlbHNlDQorICAgIFtzdXBl
ciB1bnB1Ymxpc2hdOw0KKyNlbmRpZg0KKw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24tPnJldm9r
ZSgpOw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOw0KK30NCisNCistICh2b2lk
KWRlYWxsb2MNCit7DQorICAgIFttX3Rhc2suZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JL
ZXlQYXRoOkAiY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmUiXTsNCisgICAgW21fdGFzay5n
ZXQoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJjb3VudE9mQnl0ZXNSZWNlaXZl
ZCJdOw0KKw0KKyAgICBBU1NFUlQoIW1fc2FuZGJveEV4dGVuc2lvbik7DQorDQorICAgIFtzdXBl
ciBkZWFsbG9jXTsNCit9DQorDQorLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0
cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeTxO
U0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQN
Cit7DQorICAgIGlmIChjb250ZXh0ID09IFdLRG93bmxvYWRQcm9ncmVzc0J5dGVzRXhwZWN0ZWRU
b1JlY2VpdmVDb3VudENvbnRleHQpIHsNCisgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gdmFs
dWUgPSBzdGF0aWNfY2FzdDxOU051bWJlciAqPihjaGFuZ2VbTlNLZXlWYWx1ZUNoYW5nZU5ld0tl
eV0pOw0KKyAgICAgICAgQVNTRVJUKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFz
c11dKTsNCisgICAgICAgIGludDY0X3QgZXhwZWN0ZWRCeXRlQ291bnQgPSB2YWx1ZS5nZXQoKS5s
b25nTG9uZ1ZhbHVlOw0KKyAgICAgICAgc2VsZi50b3RhbFVuaXRDb3VudCA9IChleHBlY3RlZEJ5
dGVDb3VudCA8PSAwKSA/IC0xIDogZXhwZWN0ZWRCeXRlQ291bnQ7DQorICAgIH0gZWxzZSBpZiAo
Y29udGV4dCA9PSBXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc1JlY2VpdmVkQ29udGV4dCkgew0KKyAg
ICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiB2YWx1ZSA9IHN0YXRpY19jYXN0PE5TTnVtYmVyICo+
KGNoYW5nZVtOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XSk7DQorICAgICAgICBBU1NFUlQoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOw0KKyAgICAgICAgc2VsZi5jb21wbGV0
ZWRVbml0Q291bnQgPSB2YWx1ZS5nZXQoKS5sb25nTG9uZ1ZhbHVlOw0KKyAgICB9IGVsc2UNCisg
ICAgICAgIFtzdXBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6b2Jq
ZWN0IGNoYW5nZTpjaGFuZ2UgY29udGV4dDpjb250ZXh0XTsNCit9DQorDQorQGVuZA0KKw0KKyNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHANCmluZGV4IDc0ODhjOWIyMTJkLi5mNzQwZjRjNmVhOCAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
DQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0K
QEAgLTgxOSw2ICs4MTksMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQo
RG93bmxvYWRJRCBkb3dubG9hZElEKQ0KICAgICBkb3dubG9hZE1hbmFnZXIoKS5jYW5jZWxEb3du
bG9hZChkb3dubG9hZElEKTsNCiB9DQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpDQorew0KKyAgICBkb3dubG9hZE1hbmFnZXIoKS5wdWJsaXNo
RG93bmxvYWRQcm9ncmVzcyhkb3dubG9hZElELCB1cmwsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkpOw0KK30NCisjZW5kaWYNCisNCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpDQogew0KICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdp
bGxTZW5kUmVxdWVzdChkb3dubG9hZElELCBXVEZNb3ZlKHJlcXVlc3QpKTsNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgNCmluZGV4IDE3OTg2Njg5NTM3
Li41ZDc5OWI0MzA0OSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oDQpAQCAtMjc0LDYgKzI3NCw5IEBAIHByaXZhdGU6DQogICAgIHZvaWQgZG93
bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsNCiAgICAg
dm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmKTsNCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElE
KTsNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jl
c3MoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYpOw0KKyNlbmRpZg0KICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsNCiAgICAgdm9pZCBjb250aW51ZURl
Y2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5h
dGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOw0K
IA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluDQppbmRleCA5NGQ5YzAzNDZiZC4uZjFlMDQzN2RmZjYgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluDQpAQCAtNDksNiArNDksOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7DQogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KICAgICBSZXN1bWVEb3du
bG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpDQogICAgIENh
bmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQ0KKyNpZiBQTEFURk9S
TShDT0NPQSkNCisgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpDQorI2VuZGlmDQogDQogICAgIENvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkNCiAgICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93bmxv
YWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3Rp
bmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluDQppbmRleCBjYWI3OTZkYzFlZi4uMGMxODE2ZjliOTEgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5l
dHdvcmtQcm9jZXNzLnNiLmluDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluDQpAQCAtMjkwLDMgKzI5MCw3
IEBADQogICAgIChsb2NhbCB0Y3ApDQogICAgIChyZW1vdGUgdGNwKSkNCiANCis7OyBGb3IgcmVw
b3J0aW5nIHByb2dyZXNzIGZvciBhY3RpdmUgZG93bmxvYWRzIDxyZGFyOi8vcHJvYmxlbS80NDQw
NTY2MT4NCisoYWxsb3cgbWFjaC1sb29rdXANCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
UHJvZ3Jlc3NSZXBvcnRpbmciKSkNCisNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBi
L1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5OZXR3b3JraW5nLnNiDQppbmRleCBlZTM5MTA1OGZjNi4uMGEzOTFkYTdjOTMgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYg0KKysrIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2INCkBAIC05
NCwzICs5NCw3IEBADQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLldpcmVsZXNzQ29leE1h
bmFnZXIiKQ0KICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS53aWZpLm1hbmFnZXIiKQ0KICAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5pZGVudGl0eXNlcnZpY2VzZC5lbWJlZGRlZC5hdXRo
IikpDQorDQorOzsgRm9yIHJlcG9ydGluZyBwcm9ncmVzcyBmb3IgYWN0aXZlIGRvd25sb2FkcyA8
cmRhcjovL3Byb2JsZW0vNDQ0MDU2NjE+DQorKGFsbG93IG1hY2gtbG9va3VwDQorICAgIChnbG9i
YWwtbmFtZSAiY29tLmFwcGxlLlByb2dyZXNzUmVwb3J0aW5nIikpDQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaA0KaW5kZXggYWNmZDgzNDM5NWMu
LjcxODY5MmQ2NzIzIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZC5oDQpAQCAtMzYsNiArMzYsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KDEwLjEwKSwgaW9zKDguMCkpDQogDQogLSAodm9pZCljYW5jZWw7DQogDQorLSAodm9pZClw
dWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7DQorDQogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7DQogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCB3ZWFrKSBXS1dlYlZpZXcgKm9yaWdpbmF0aW5nV2ViVmlldzsNCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNVUkwgKj4gKnJlZGlyZWN0
Q2hhaW4gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7DQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tDQppbmRl
eCAxNmFkODEwYjdjYS4uMTY2MTY5ZmVhOTAgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQ0KQEAgLTQ5LDYgKzQ5LDExIEBAIC0gKHZv
aWQpY2FuY2VsDQogICAgIF9kb3dubG9hZC0+Y2FuY2VsKCk7DQogfQ0KIA0KKy0gKHZvaWQpcHVi
bGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpDQorew0KKyAgICBfZG93bmxvYWQtPnB1Ymxpc2hQ
cm9ncmVzcyh7IFVSTCB9KTsNCit9DQorDQogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdA0KIHsN
CiAgICAgcmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7DQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwDQppbmRleCBl
ZmIxMTQ5M2NmYi4uYWU5MThkM2EwYzggMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0KQEAgLTEwMSw2ICsxMDEsMjEgQEAg
dm9pZCBEb3dubG9hZFByb3h5OjpzZXRPcmlnaW5hdGluZ1BhZ2UoV2ViUGFnZVByb3h5KiBwYWdl
KQ0KICAgICBtX29yaWdpbmF0aW5nUGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpOw0KIH0NCiANCisj
aWYgUExBVEZPUk0oQ09DT0EpDQordm9pZCBEb3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3Mo
Y29uc3QgV2ViQ29yZTo6VVJMJiBVUkwpDQorew0KKyAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpDQor
ICAgICAgICByZXR1cm47DQorDQorICAgIGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3Jr
UHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsNCisgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7DQorICAgICAgICBib29sIGNyZWF0ZWRTYW5k
Ym94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKFVSTC5maWxlU3lz
dGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGhhbmRsZSk7DQor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uLCBjcmVhdGVkU2Fu
ZGJveEV4dGVuc2lvbik7DQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKG1fZG93bmxvYWRJRCwgVVJM
LCBoYW5kbGUpLCAwKTsNCisgICAgfQ0KK30NCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpDQor
DQogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpDQogew0KICAgICBtX3JlcXVl
c3QgPSByZXF1ZXN0Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oDQppbmRleCBlMDdhYWM4OTYwMy4uZjliODI0MzZjZTUgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oDQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oDQpA
QCAtOTUsNiArOTUsMTAgQEAgcHVibGljOg0KICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
eXN0ZW1QcmV2aWV3RG93bmxvYWRSZWN0KCkgY29uc3QgeyByZXR1cm4gcmVxdWVzdCgpLnN5c3Rl
bVByZXZpZXdSZWN0KCk7IH0NCiAjZW5kaWYNCiANCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAg
IHZvaWQgcHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOw0KKyNlbmRpZg0KKw0K
IHByaXZhdGU6DQogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYs
IFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7DQogDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCmluZGV4
IDg2MTRmOTczMjg5Li5kMWRlMDBjODNmMSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCkBAIC0xMDgyLDYgKzEwODIsOCBAQA0KIAkJNjMx
MDhGOTkxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTgx
Rjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovOyB9
Ow0KIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07DQogCQk2
MzYzNTNBNTFFOTg1OERGMDAwOUY4QUYgLyogX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNG
QUJFMTkxRTk3MEQ2NTAwMzAxMUQ1IC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KKwkJ
NjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM3MjgxQTAyMUFEQzc0NDAw
OUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5oICovOyB9Ow0KKwkJNjM3MjgxQTMyMUFEQzc0
NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNzI4MUExMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rv
d25sb2FkUHJvZ3Jlc3MubW0gKi87IH07DQogCQk2M0MzMkMyNjFFOTgxMEQ5MDA2OTlCRDAgLyog
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjNDMzJDMjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9u
UG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
Ow0KIAkJNjNDMzJDMjgxRTk4MTE5MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjNDMzJDMjcxRTk4MTE5MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5h
bC5oICovOyB9Ow0KIAkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4
NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KQEAgLTM0OTQsNiArMzQ5Niw4IEBA
DQogCQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2MzEwOEY5ODFGOTY3MUY3MDBBMERCODQgLyogX1dL
QXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjM0
ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9Ow0KKwkJNjM3MjgxQTAyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkUHJvZ3Jlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsNCisJCTYzNzI4MUExMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jl
c3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Rvd25sb2FkUHJvZ3Jlc3MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2M0MzMkMyMzFFOTgxMEQ5MDA2OTlCRDAgLyogX1dL
R2VvbG9jYXRpb25Qb3NpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07DQogCQk2M0MzMkMyNDFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2M0MzMkMyNzFFOTgxMTkwMDA2
OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9Ow0KQEAgLTY4MTUsNiArNjgxOSw4IEBADQogCQkJaXNhID0g
UEJYR3JvdXA7DQogCQkJY2hpbGRyZW4gPSAoDQogCQkJCTVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4
MyAvKiBEb3dubG9hZENvY29hLm1tICovLA0KKwkJCQk2MzcyODFBMDIxQURDNzQ0MDA5RTBERTYg
LyogV0tEb3dubG9hZFByb2dyZXNzLmggKi8sDQorCQkJCTYzNzI4MUExMjFBREM3NDQwMDlFMERF
NiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MubW0gKi8sDQogCQkJKTsNCiAJCQlwYXRoID0gY29jb2E7
DQogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsNCkBAIC05MDk3LDYgKzkxMDMsNyBAQA0KIAkJ
CQlDMEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmggaW4gSGVhZGVycyAqLywNCiAJ
CQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGlu
IEhlYWRlcnMgKi8sDQogCQkJCTI2MzE3MkNGMThCNDY5NDkwMDY1QjlDMyAvKiBOYXRpdmVXZWJU
b3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywNCisJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2
IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTFBRENCODZCMTg5
ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sDQog
CQkJCTFBQkMzREY2MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCBpbiBIZWFk
ZXJzICovLA0KIAkJCQkxQTZGQkEyQTExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2Vy
RnVuY3MuaCBpbiBIZWFkZXJzICovLA0KQEAgLTEwNzc1LDYgKzEwNzgyLDcgQEANCiAJCQkJMkQ5
MkE3OTQyMTJCNkFENDAwRjQ5M0ZEIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
DQogCQkJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQlDREEyOUEyQTFDQkVCNjdB
MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLA0KKwkJCQk2MzcyODFBMzIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3du
bG9hZFByb2dyZXNzLm1tIGluIFNvdXJjZXMgKi8sDQogCQkJCTJEOTEzNDQ5MjEyQ0Y5RjAwMDEy
OEFGRCAvKiBQbHVnaW4uY3BwIGluIFNvdXJjZXMgKi8sDQogCQkJCTFBOEVGNENDMTI1MjQwMzcw
MEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sDQogCQkJ
CTFBMkQ5MUE2MTI4MUQ3MzkwMDFFQjk2MiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0g
aW4gU291cmNlcyAqLywNCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cNCmluZGV4IDY3NDg5ZjI2OTA4Li5mYzQ0YjBlM2FmNyAxMDA2NDQNCi0tLSBhL1Rvb2xz
L0NoYW5nZUxvZw0KKysrIGIvVG9vbHMvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDUwIEBADQorMjAx
OC0xMS0yOCAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPg0KKw0KKyAg
ICAgICAgQWRkIFNQSSB0byBwdWJsaXNoIE5TUHJvZ3Jlc3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjAyMQ0K
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDQ0MDU2NjENCisNCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgQWRkIEFQSSB0ZXN0cyB0byBleGVyY2lzZSB0
aGUgcHJvZ3Jlc3MtcHVibGlzaGluZyBmdW5jdGlvbmFsaXR5IGluIGEgdmFyaWV0eSBvZiBzY2Vu
YXJpb3MuDQorDQorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOg0KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06IEFkZGVkLg0KKyAgICAgICAgKCtbRG93bmxvYWRQ
cm9ncmVzc1Rlc3RQcm90b2NvbCByZWdpc3RlclByb3RvY29sRm9yVGVzdFJ1bm5lcjpdKToNCisg
ICAgICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgdW5yZWdpc3RlclByb3RvY29s
XSk6DQorICAgICAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIGNhbkluaXRXaXRo
UmVxdWVzdDpdKToNCisgICAgICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgY2Fu
b25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6XSk6DQorICAgICAgICAoK1tEb3dubG9hZFByb2dyZXNz
VGVzdFByb3RvY29sIHJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVlc3Q6XSk6DQorICAg
ICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHN0YXJ0TG9hZGluZ10pOg0KKyAg
ICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBzdG9wTG9hZGluZ10pOg0KKyAg
ICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgaW5pdF0pOg0KKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOl0pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgdGVhckRvd25dKToNCisgICAg
ICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kaWRHZXRQcm9ncmVzczpdKToNCisg
ICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kaWRMb3NlUHJvZ3Jlc3NdKToN
CisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN1YnNjcmliZUFuZFdhaXRG
b3JQcm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2Fp
dFRvTG9zZVByb2dyZXNzXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBzdGFydERvd25sb2FkOmV4cGVjdGVkTGVuZ3RoOl0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQ
cm9ncmVzc1Rlc3RSdW5uZXIgcHVibGlzaFByb2dyZXNzXSk6DQorICAgICAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciByZWNlaXZlRGF0YTpdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIGZpbmlzaERvd25sb2FkVGFza10pOg0KKyAgICAgICAgKC1bRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgZmFpbERvd25sb2FkVGFza10pOg0KKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkRGlkQ3JlYXRlRGVzdGlu
YXRpb25dKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JE
b3dubG9hZEZpbmlzaGVkXSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciB3YWl0Rm9yRG93bmxvYWRDYW5jZWxlZF0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkRmFpbGVkXSk6DQorICAgICAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudF0pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OmRlY2lzaW9uSGFuZGxlcjpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVu
bmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRs
ZXI6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWRE
aWRTdGFydDpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3du
bG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIF9kb3dubG9hZERpZEZpbmlzaDpdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZERpZENhbmNlbDpdKToNCisgICAgICAgICgtW0Rv
d25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOg0KKyAg
ICAgICAgKFRFU1QpOg0KKw0KIDIwMTgtMTEtMjggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+DQogDQogICAgICAgICBbaU9TTWFjXSBEcm9wcGluZyB0ZXh0IHNlbGVjdGlv
bnMgZnJvbSB3ZWIgY29udGVudCBpbnRvIGVkaXRhYmxlIGVsZW1lbnRzIGNyYXNoZXMgdGhlIHdl
YiBwcm9jZXNzDQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KaW5kZXggZmY0MjkzZmNiM2YuLjExZDY0
NzgxZjJkIDEwMDY0NA0KLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oNCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQpAQCAtMzE3LDYgKzMxNyw3IEBADQog
CQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzU0RjRE
MDFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgKi87IH07
DQogCQk2MzU2RkIyMjFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1NkZCMjExRUM0
RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSAqLzsgfTsNCiAJCTYzNjM1M0E3
MUU5ODY2NUQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDYzNjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlv
blJlc3VsdC5odG1sICovOyB9Ow0KKwkJNjM3MjgxQTcyMUFFMTM4NjAwOUUwREU2IC8qIERvd25s
b2FkUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzcyODFBNjIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxvYWRQcm9ncmVzcy5tbSAqLzsg
fTsNCiAJCTYzQTYxQjhCMUZBRDI1MTEwMEYwNjg4NSAvKiBkaXNwbGF5LW1vZGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0E2MUI4
QTFGQUQyMDREMDBGMDY4ODUgLyogZGlzcGxheS1tb2RlLmh0bWwgKi87IH07DQogCQk2M0Y2Njgy
MjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1
MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovOyB9Ow0KIAkJNkIzMDYxMDYyMThBMzcyOTAw
RjVBODAyIC8qIENsb3NpbmdXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkIzMDYxMDUyMThBMzcyOTAwRjVBODAyIC8qIENsb3NpbmdXZWJW
aWV3Lm1tICovOyB9Ow0KQEAgLTE2NTQsNiArMTY1NSw3IEBADQogCQk2MzU0RjREMDFGN0MzQUI1
MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsNCiAJCTYzNTZGQjIxMUVDNEUwQkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpYmxlQ29udGVudFJlY3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2MzYzNTNBNjFFOTg2MTk0MDAwOUY4QUYgLyogR2VvbG9j
YXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07DQorCQk2MzcyODFBNjIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxv
YWRQcm9ncmVzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERvd25sb2FkUHJvZ3Jlc3MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk2M0E2MUI4QTFGQUQyMDREMDBGMDY4ODUg
LyogZGlzcGxheS1tb2RlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZGlzcGxheS1tb2RlLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFw
cGxpY2F0aW9uTWFuaWZlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNkIzMDYxMDUyMThBMzcy
OTAwRjVBODAyIC8qIENsb3NpbmdXZWJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2xv
c2luZ1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQpAQCAtMjQxMiw2ICsy
NDE0LDcgQEANCiAJCQkJNTE4RUU1MTYyMEE3OENERjAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xv
YWRpbmcubW0gKi8sDQogCQkJCTUxOEVFNTE3MjBBNzhDREYwMEUwMjRGMyAvKiBEb3VibGVEZWZl
cnNMb2FkaW5nUGx1Z2luLm1tICovLA0KIAkJCQlBMUE0RkU1RDE4REQzREI3MDBCNUVBOEEgLyog
RG93bmxvYWQubW0gKi8sDQorCQkJCTYzNzI4MUE2MjFBRTEzODYwMDlFMERFNiAvKiBEb3dubG9h
ZFByb2dyZXNzLm1tICovLA0KIAkJCQlGNDYxMjhENjIxMUU0ODlDMDBEOUZBREIgLyogRHJhZ0Fu
ZERyb3BUZXN0cy5tbSAqLywNCiAJCQkJQTE1NTAyMjgxRTA1MDIwQjAwQTI0QzU3IC8qIER1cGxp
Y2F0ZUNvbXBsZXRpb25IYW5kbGVyQ2FsbHMubW0gKi8sDQogCQkJCUY0NEQwNjQ2MUYzOTVDNEQw
MDFBMEUyOSAvKiBFZGl0b3JTdGF0ZVRlc3RzLm1tICovLA0KQEAgLTM3OTIsNiArMzc5NSw3IEBA
DQogCQkJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8sDQogCQkJCTM3RTdERDY0MUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFs
UmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tIGluIFNvdXJjZXMgKi8sDQogCQkJCTU1QTgxN0ZDMjE4
MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSBpbiBTb3Vy
Y2VzICovLA0KKwkJCQk2MzcyODFBNzIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxvYWRQcm9ncmVz
cy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZm
aW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQlBMURGNzQzMjFDNDFCNjU4MDBB
MkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJjZXMgKi8sDQog
CQkJCTJERTcxQUZFMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSBpbiBTb3Vy
Y2VzICovLA0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw
MDAwMDAwMDAwLi4yN2ZlYzUzMjZlNA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tDQpAQCAtMCwwICsx
LDU3MCBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBt
ZXQ6DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycNCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywNCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTDQor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YN
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2ltcG9ydCAi
Y29uZmlnLmgiDQorDQorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIg0KKyNpbXBvcnQgIlV0aWxp
dGllcy5oIg0KKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNQcm9ncmVzcy5oPg0KKyNpbXBvcnQgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPg0KKyNpbXBvcnQgPFdlYktpdC9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIuaD4NCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Lmg+DQorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+DQorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4NCisjaW1wb3J0IDxXZWJLaXQvX1dLRG93
bmxvYWQuaD4NCisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPg0KKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPg0KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4NCisjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4NCisNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisNCitAY2xhc3Mg
RG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbDsNCisNCitlbnVtIGNsYXNzIERvd25sb2FkU3Rh
cnRUeXBlIHsNCisgICAgQ29udmVydExvYWRUb0Rvd25sb2FkLA0KKyAgICBTdGFydEZyb21OYXZp
Z2F0aW9uQWN0aW9uLA0KKyAgICBTdGFydEluUHJvY2Vzc1Bvb2wsDQorfTsNCisNCitAaW50ZXJm
YWNlIERvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlLCBfV0tEb3dubG9hZERlbGVnYXRlPg0KKw0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgX1dLRG93bmxvYWQgKmRvd25sb2FkOw0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNQcm9ncmVzcyAqcHJvZ3Jlc3M7DQorDQorLSAodm9pZClzdGFydExvYWRpbmdX
aXRoUHJvdG9jb2w6KERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgKilwcm90b2NvbDsNCisN
CitAZW5kDQorDQorQGludGVyZmFjZSBEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIDogTlNV
UkxQcm90b2NvbA0KK0BlbmQNCisNCitAaW1wbGVtZW50YXRpb24gRG93bmxvYWRQcm9ncmVzc1Rl
c3RQcm90b2NvbA0KKw0KK3N0YXRpYyBEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciAqY3VycmVu
dFRlc3RSdW5uZXI7DQorDQorKyAodm9pZClyZWdpc3RlclByb3RvY29sRm9yVGVzdFJ1bm5lcjoo
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgKil0ZXN0UnVubmVyDQorew0KKyAgICBjdXJyZW50
VGVzdFJ1bm5lciA9IHRlc3RSdW5uZXI7DQorICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xh
c3M6c2VsZl07DQorICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbDpAImh0dHAiXTsNCit9DQorDQorKyAodm9pZCl1bnJlZ2lzdGVy
UHJvdG9jb2wNCit7DQorICAgIGN1cnJlbnRUZXN0UnVubmVyID0gbnVsbHB0cjsNCisgICAgW1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2w6QCJodHRwIl07DQorICAgIFtOU1VSTFByb3RvY29sIHVucmVnaXN0ZXJDbGFzczpzZWxmXTsN
Cit9DQorDQorLy8gTUFSSzogTlNVUkxQcm90b2NvbCBNZXRob2RzDQorDQorKyAoQk9PTCljYW5J
bml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QNCit7DQorICAgIHJldHVybiBb
cmVxdWVzdC5VUkwuc2NoZW1lIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwIl0gPT0gTlNP
cmRlcmVkU2FtZTsNCit9DQorDQorKyAoTlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZv
clJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QNCit7DQorICAgIHJldHVybiByZXF1ZXN0
Ow0KK30NCisNCisrIChCT09MKXJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDooTlNVUkxSZXF1ZXN0
ICopYSB0b1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKWINCit7DQorICAgIHJldHVybiBOTzsNCit9
DQorDQorLSAodm9pZClzdGFydExvYWRpbmcNCit7DQorICAgIFtjdXJyZW50VGVzdFJ1bm5lciBz
dGFydExvYWRpbmdXaXRoUHJvdG9jb2w6c2VsZl07DQorfQ0KKw0KKy0gKHZvaWQpc3RvcExvYWRp
bmcNCit7DQorfQ0KKw0KK0BlbmQNCisNCitzdGF0aWMgdm9pZCogcHJvZ3Jlc3NPYnNlcnZpbmdD
b250ZXh0ID0gJnByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dDsNCisNCitAaW1wbGVtZW50YXRpb24g
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgew0KKyAgICBSZXRhaW5QdHI8TlNVUkw+IG1fcHJv
Z3Jlc3NVUkw7DQorICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBtX3dlYlZpZXc7DQorICAg
IFJldGFpblB0cjxpZD4gbV9wcm9ncmVzc1N1YnNjcmliZXI7DQorICAgIFJldGFpblB0cjxOU1By
b2dyZXNzPiBtX3Byb2dyZXNzOw0KKyAgICBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+IG1fZG93bmxv
YWQ7DQorICAgIFJldGFpblB0cjxEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sPiBtX3Byb3Rv
Y29sOw0KKyAgICBCbG9ja1B0cjx2b2lkKHZvaWQpPiBtX3VucHVibGlzaGluZ0Jsb2NrOw0KKyAg
ICBEb3dubG9hZFN0YXJ0VHlwZSBtX3N0YXJ0VHlwZTsNCisgICAgTlNJbnRlZ2VyIG1fZXhwZWN0
ZWRMZW5ndGg7DQorICAgIGJvb2wgbV9oYXNQcm9ncmVzczsNCisgICAgYm9vbCBtX2xvc3RQcm9n
cmVzczsNCisgICAgYm9vbCBtX2Rvd25sb2FkU3RhcnRlZDsNCisgICAgYm9vbCBtX2Rvd25sb2Fk
RGlkQ3JlYXRlRGVzdGluYXRpb247DQorICAgIGJvb2wgbV9kb3dubG9hZEZpbmlzaGVkOw0KKyAg
ICBib29sIG1fZG93bmxvYWRDYW5jZWxlZDsNCisgICAgYm9vbCBtX2Rvd25sb2FkRmFpbGVkOw0K
KyAgICBib29sIG1faGFzVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudDsNCit9DQorDQorLSAoaW5z
dGFuY2V0eXBlKWluaXQNCit7DQorICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07DQorDQorICAgIFtE
b3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHJlZ2lzdGVyUHJvdG9jb2xGb3JUZXN0UnVubmVy
OnNlbGZdOw0KKw0KKyAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImRvd25sb2FkLXByb2dyZXNzLSVAIiwgW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5n
XTsNCisgICAgbV9wcm9ncmVzc1VSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9y
YXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVOYW1lXSBp
c0RpcmVjdG9yeTpOT107DQorDQorICAgIGN1cnJlbnRUZXN0UnVubmVyID0gc2VsZjsNCisNCisg
ICAgbV91bnB1Ymxpc2hpbmdCbG9jayA9IEJsb2NrUHRyPHZvaWQodm9pZCk+Ojpmcm9tQ2FsbGFi
bGUoW3NlbGZdIHsNCisgICAgICAgIFtzZWxmIF9kaWRMb3NlUHJvZ3Jlc3NdOw0KKyAgICB9KS5n
ZXQoKTsNCisNCisgICAgcmV0dXJuIHNlbGY7DQorfQ0KKw0KKy0gKF9XS0Rvd25sb2FkICopZG93
bmxvYWQNCit7DQorICAgIHJldHVybiBtX2Rvd25sb2FkLmdldCgpOw0KK30NCisNCistIChOU1By
b2dyZXNzICopcHJvZ3Jlc3MNCit7DQorICAgIHJldHVybiBtX3Byb2dyZXNzLmdldCgpOw0KK30N
CisNCistICh2b2lkKXN0YXJ0TG9hZGluZ1dpdGhQcm90b2NvbDooRG93bmxvYWRQcm9ncmVzc1Rl
c3RQcm90b2NvbCAqKXByb3RvY29sDQorew0KKyAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7DQor
DQorICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6cHJvdG9jb2wucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi94LXRl
c3QtZmlsZSIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOm1fZXhwZWN0ZWRMZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpudWxscHRyXSk7DQorICAgIFttX3Byb3RvY29sLmdldCgpLmNsaWVudCBVUkxQcm90
b2NvbDptX3Byb3RvY29sLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKSBj
YWNoZVN0b3JhZ2VQb2xpY3k6TlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkXTsNCit9DQorDQor
LSAodm9pZCl0ZWFyRG93bg0KK3sNCisgICAgaWYgKG1fd2ViVmlldykgew0KKyAgICAgICAgbV93
ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUg
PSBudWxscHRyOw0KKyAgICAgICAgW21fd2ViVmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3
XTsNCisgICAgICAgIG1fd2ViVmlldyA9IG51bGxwdHI7DQorICAgIH0NCisNCisgICAgaWYgKG1f
cHJvZ3Jlc3NTdWJzY3JpYmVyKSB7DQorICAgICAgICBbTlNQcm9ncmVzcyByZW1vdmVTdWJzY3Jp
YmVyOm1fcHJvZ3Jlc3NTdWJzY3JpYmVyLmdldCgpXTsNCisgICAgICAgIG1fcHJvZ3Jlc3NTdWJz
Y3JpYmVyID0gbnVsbHB0cjsNCisgICAgfQ0KKw0KKyAgICBtX3Byb2dyZXNzID0gbnVsbHB0cjsN
CisgICAgbV9kb3dubG9hZCA9IG51bGxwdHI7DQorICAgIG1fcHJvdG9jb2wgPSBudWxscHRyOw0K
KyAgICBtX3VucHVibGlzaGluZ0Jsb2NrID0gbnVsbHB0cjsNCisNCisgICAgW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UHJvdG9jb2wgdW5yZWdpc3RlclByb3RvY29sXTsNCit9DQorDQorLSAodm9pZClf
ZGlkR2V0UHJvZ3Jlc3M6KE5TUHJvZ3Jlc3MgKilwcm9ncmVzcw0KK3sNCisgICAgQVNTRVJUKCFt
X3Byb2dyZXNzKTsNCisgICAgbV9wcm9ncmVzcyA9IHByb2dyZXNzOw0KKyAgICBbcHJvZ3Jlc3Mg
YWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBvcHRpb25z
Ok5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpwcm9ncmVzc09ic2VydmluZ0Nv
bnRleHRdOw0KKyAgICBtX2hhc1Byb2dyZXNzID0gdHJ1ZTsNCit9DQorDQorLSAodm9pZClfZGlk
TG9zZVByb2dyZXNzDQorew0KKyAgICBBU1NFUlQobV9wcm9ncmVzcyk7DQorICAgIFttX3Byb2dy
ZXNzLmdldCgpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRD
b3VudCJdOw0KKyAgICBtX3Byb2dyZXNzID0gbnVsbHB0cjsNCisgICAgbV9sb3N0UHJvZ3Jlc3Mg
PSB0cnVlOw0KK30NCisNCistICh2b2lkKXN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzcw0KK3sN
CisgICAgaWYgKCFtX3Byb2dyZXNzU3Vic2NyaWJlcikgew0KKyAgICAgICAgYXV0byB3ZWFrU2Vs
ZiA9IFdlYWtPYmpDUHRyPERvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyPiB7IHNlbGYgfTsNCisg
ICAgICAgIG1fcHJvZ3Jlc3NTdWJzY3JpYmVyID0gW05TUHJvZ3Jlc3MgYWRkU3Vic2NyaWJlckZv
ckZpbGVVUkw6bV9wcm9ncmVzc1VSTC5nZXQoKSB3aXRoUHVibGlzaGluZ0hhbmRsZXI6QmxvY2tQ
dHI8TlNQcm9ncmVzc1VucHVibGlzaGluZ0hhbmRsZXIoTlNQcm9ncmVzcyAqKT46OmZyb21DYWxs
YWJsZShbd2Vha1NlbGZdKE5TUHJvZ3Jlc3MgKnByb2dyZXNzKSB7DQorICAgICAgICAgICAgaWYg
KGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpKSB7DQorICAgICAgICAgICAgICAgIFtz
dHJvbmdTZWxmLmdldCgpIF9kaWRHZXRQcm9ncmVzczpwcm9ncmVzc107DQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdHJvbmdTZWxmLT5tX3VucHVibGlzaGluZ0Jsb2NrLmdldCgpOw0KKyAgICAg
ICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNQcm9ncmVzc1VucHVi
bGlzaGluZ0hhbmRsZXI+KG5pbCk7DQorICAgICAgICB9KS5nZXQoKV07DQorICAgIH0NCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2hhc1Byb2dyZXNzKTsNCit9DQorDQorLSAodm9p
ZCl3YWl0VG9Mb3NlUHJvZ3Jlc3MNCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
bV9sb3N0UHJvZ3Jlc3MpOw0KK30NCisNCistICh2b2lkKXN0YXJ0RG93bmxvYWQ6KERvd25sb2Fk
U3RhcnRUeXBlKXN0YXJ0VHlwZSBleHBlY3RlZExlbmd0aDooTlNJbnRlZ2VyKWV4cGVjdGVkTGVu
Z3RoDQorew0KKyAgICBtX3N0YXJ0VHlwZSA9IHN0YXJ0VHlwZTsNCisgICAgbV9leHBlY3RlZExl
bmd0aCA9IGV4cGVjdGVkTGVuZ3RoOw0KKw0KKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOw0KKyAgICBtX3dlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3Ra
ZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOw0KKyAgICBtX3dlYlZpZXcu
Z2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gc2VsZjsNCisgICAgbV93ZWJWaWV3LmdldCgpLmNv
bmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOw0KKw0KKyAg
ICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9maWxlIl1dKTsNCisNCisgICAgc3dpdGNo
IChzdGFydFR5cGUpIHsNCisgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRU
b0Rvd25sb2FkOg0KKyAgICBjYXNlIERvd25sb2FkU3RhcnRUeXBlOjpTdGFydEZyb21OYXZpZ2F0
aW9uQWN0aW9uOg0KKyAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgp
XTsNCisgICAgICAgIGJyZWFrOw0KKyAgICBjYXNlIERvd25sb2FkU3RhcnRUeXBlOjpTdGFydElu
UHJvY2Vzc1Bvb2w6DQorICAgICAgICBbbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJv
Y2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsNCisgICAgICAgIGJy
ZWFrOw0KKyAgICB9DQorDQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9kb3dubG9h
ZFN0YXJ0ZWQpOw0KK30NCisNCistICh2b2lkKXB1Ymxpc2hQcm9ncmVzcw0KK3sNCisgICAgQVNT
RVJUKG1fZG93bmxvYWQpOw0KKw0KKyAgICBbbV9kb3dubG9hZC5nZXQoKSBwdWJsaXNoUHJvZ3Jl
c3NBdFVSTDptX3Byb2dyZXNzVVJMLmdldCgpXTsNCit9DQorDQorLSAodm9pZClyZWNlaXZlRGF0
YTooTlNJbnRlZ2VyKWxlbmd0aA0KK3sNCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRdKTsNCisgICAgd2hpbGUgKGxlbmd0aC0tID4gMCkgew0KKyAg
ICAgICAgY29uc3QgY2hhciBieXRlID0gJ0EnOw0KKyAgICAgICAgW2RhdGEuZ2V0KCkgYXBwZW5k
Qnl0ZXM6c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZieXRlKSBsZW5ndGg6MV07DQorICAgIH0N
CisNCisgICAgW21fcHJvdG9jb2wuZ2V0KCkuY2xpZW50IFVSTFByb3RvY29sOm1fcHJvdG9jb2wu
Z2V0KCkgZGlkTG9hZERhdGE6ZGF0YS5nZXQoKV07DQorfQ0KKw0KKy0gKHZvaWQpZmluaXNoRG93
bmxvYWRUYXNrDQorew0KKyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2xE
aWRGaW5pc2hMb2FkaW5nOm1fcHJvdG9jb2wuZ2V0KCldOw0KK30NCisNCistICh2b2lkKWZhaWxE
b3dubG9hZFRhc2sNCit7DQorICAgIFttX3Byb3RvY29sLmdldCgpLmNsaWVudCBVUkxQcm90b2Nv
bDptX3Byb3RvY29sLmdldCgpIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0
IHVzZXJJbmZvOm51bGxwdHJdXTsNCit9DQorDQorLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRD
cmVhdGVEZXN0aW5hdGlvbg0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2Rv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pOw0KK30NCisNCistICh2b2lkKXdhaXRGb3JEb3du
bG9hZEZpbmlzaGVkDQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxv
YWRGaW5pc2hlZCk7DQorfQ0KKw0KKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkQ2FuY2VsZWQNCit7
DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9kb3dubG9hZENhbmNlbGVkKTsNCit9
DQorDQorLSAodm9pZCl3YWl0Rm9yRG93bmxvYWRGYWlsZWQNCit7DQorICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmbV9kb3dubG9hZEZhaWxlZCk7DQorfQ0KKw0KKy0gKGludDY0X3Qpd2Fp
dEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnQNCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmbV9oYXNVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50KTsNCisgICAgbV9oYXNVcGRh
dGVkQ29tcGxldGVkVW5pdENvdW50ID0gZmFsc2U7DQorDQorICAgIHJldHVybiBtX3Byb2dyZXNz
LmdldCgpLmNvbXBsZXRlZFVuaXRDb3VudDsNCit9DQorDQorLSAodm9pZClvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6
KE5TRGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29udGV4dDoo
dm9pZCAqKWNvbnRleHQNCit7DQorICAgIGlmIChjb250ZXh0ID09IHByb2dyZXNzT2JzZXJ2aW5n
Q29udGV4dCkgew0KKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdCwgbV9wcm9ncmVzcy5nZXQoKSk7
DQorICAgICAgICBFWFBFQ1RfU1RSRVEoa2V5UGF0aC5VVEY4U3RyaW5nLCAiY29tcGxldGVkVW5p
dENvdW50Iik7DQorICAgICAgICBtX2hhc1VwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnQgPSB0cnVl
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIFtzdXBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtl
eVBhdGggb2ZPYmplY3Q6b2JqZWN0IGNoYW5nZTpjaGFuZ2UgY29udGV4dDpjb250ZXh0XTsNCit9
DQorDQorLy8gTUFSSzogPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBNZXRob2RzDQorDQorLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25I
YW5kbGVyDQorew0KKyAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNv
bnZlcnRMb2FkVG9Eb3dubG9hZCkNCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7DQorICAgIGVsc2UNCisgICAgICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsNCit9DQorDQor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFu
ZGxlcg0KK3sNCisgICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpTdGFy
dEZyb21OYXZpZ2F0aW9uQWN0aW9uKQ0KKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCk7DQorICAgIGVsc2UNCisgICAgICAgIGRlY2lzaW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7DQorfQ0KKw0KKy8vIE1BUks6
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBNZXRob2RzDQorDQorLSAodm9pZClfZG93bmxvYWREaWRT
dGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAgQVNTRVJUKCFtX2Rvd25sb2Fk
U3RhcnRlZCk7DQorICAgIEFTU0VSVCghbV9kb3dubG9hZCk7DQorDQorICAgIG1fZG93bmxvYWQg
PSBkb3dubG9hZDsNCisgICAgbV9kb3dubG9hZFN0YXJ0ZWQgPSB0cnVlOw0KK30NCisNCistICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbg0KK3sNCisgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBt
X2Rvd25sb2FkLmdldCgpKTsNCisgICAgbV9kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uID0g
dHJ1ZTsNCit9DQorDQorLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQNCit7DQorICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7
DQorICAgIG1fZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25s
b2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkDQorew0KKyAgICBFWFBFQ1RfRVEo
ZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOw0KKyAgICBtX2Rvd25sb2FkQ2FuY2VsZWQgPSB0
cnVlOw0KK30NCisNCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3INCit7DQorICAgIEVYUEVDVF9FUShkb3du
bG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7DQorICAgIG1fZG93bmxvYWRGYWlsZWQgPSB0cnVlOw0K
K30NCisNCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcg0KK3sNCisgICAgRVhQRUNUX0VRKGRvd25sb2Fk
LCBtX2Rvd25sb2FkLmdldCgpKTsNCisNCisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7DQorICAgIFJldGFpblB0cjxOU1N0cmluZyAqPiBwYXRo
ID0gKE5TU3RyaW5nICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRl
c3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsNCisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAh
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsNCisgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOw0KKw0KKyAgICBjb21w
bGV0aW9uSGFuZGxlcihZRVMsIHBhdGguZ2V0KCkpOw0KK30NCisNCitAZW5kDQorDQorLy8gRW5k
LXRvLWVuZCB0ZXN0IG9mIHN1YnNjcmliaW5nIHRvIHByb2dyZXNzIG9uIGEgc3VjY2Vzc2Z1bCBk
b3dubG9hZC4gVGhlIGNsaWVudA0KKy8vIHNob3VsZCBiZSBhYmxlIHRvIHJlY2VpdmUgYW4gTlNQ
cm9ncmVzcyB0aGF0IGlzIHVwZGF0ZWQgYXMgdGhlIGRvd25sb2FkIG1ha2VzDQorLy8gcHJvZ3Jl
c3MsIGFuZCB0aGUgTlNQcm9ncmVzcyBzaG91bGQgYmUgdW5wdWJsaXNoZWQgd2hlbiB0aGUgZG93
bmxvYWQgZmluaXNoZXMuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBCYXNpY1N1YnNjcmlwdGlv
bkFuZFByb2dyZXNzVXBkYXRlcykNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMo
W1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9h
ZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkg
cHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2Fp
dEZvclByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBd
Ow0KKyAgICBFWFBFQ1RfRVEoW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvclVwZGF0ZWRDb21wbGV0
ZWRVbml0Q291bnRdLCA1MCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dy
ZXNzLmZyYWN0aW9uQ29tcGxldGVkLCAuNSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJl
Y2VpdmVEYXRhOjUwXTsNCisgICAgRVhQRUNUX0VRKFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JV
cGRhdGVkQ29tcGxldGVkVW5pdENvdW50XSwgMTAwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5u
ZXIuZ2V0KCkucHJvZ3Jlc3MuZnJhY3Rpb25Db21wbGV0ZWQsIDEpOw0KKw0KKyAgICBbdGVzdFJ1
bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3
YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xv
c2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQor
DQorLy8gU2ltaWxhciB0ZXN0IGFzIGJlZm9yZSwgYnV0IGluaXRpYXRpbmcgdGhlIGRvd25sb2Fk
IGJlZm9yZSByZWNlaXZpbmcgaXRzIHJlc3BvbnNlLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywg
U3RhcnREb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVu
bmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7
DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5
cGU6OlN0YXJ0RnJvbU5hdmlnYXRpb25BY3Rpb24gZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0
KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkg
cmVjZWl2ZURhdGE6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRU
YXNrXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywg
U3RhcnREb3dubG9hZEluUHJvY2Vzc1Bvb2wpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBh
ZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6U3Rh
cnRJblByb2Nlc3NQb29sIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFu
ZFdhaXRGb3JQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjEw
MF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFza107DQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkg
dGVhckRvd25dOw0KK30NCisNCisvLyBJZiB0aGUgZG93bmxvYWQgaXMgY2FuY2VsZWQsIHRoZSBw
cm9ncmVzcyBzaG91bGQgYmUgdW5wdWJsaXNoZWQuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBM
b3NlUHJvZ3Jlc3NXaGVuRG93bmxvYWRJc0NhbmNlbGVkKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVu
bmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7
DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5
cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBz
dWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNl
aXZlRGF0YTo1MF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpLmRvd25sb2FkIGNhbmNlbF07DQor
ICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXTsNCisgICAgW3Rl
c3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgdGVhckRvd25dOw0KK30NCisNCisvLyBJZiB0aGUgZG93bmxvYWQgZmFpbHMsIHRoZSBw
cm9ncmVzcyBzaG91bGQgYmUgdW5wdWJsaXNoZWQuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBM
b3NlUHJvZ3Jlc3NXaGVuRG93bmxvYWRGYWlscykNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9
IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpD
b252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2Ny
aWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURh
dGE6NTBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmYWlsRG93bmxvYWRUYXNrXTsNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmFpbGVkXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkg
dGVhckRvd25dOw0KK30NCisNCisvLyBDYW5jZWxpbmcgdGhlIHByb2dyZXNzIHNob3VsZCBjYW5j
ZWwgdGhlIGRvd25sb2FkLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgQ2FuY2VsRG93bmxvYWRX
aGVuUHJvZ3Jlc3NJc0NhbmNlbGVkKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHRO
UyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRM
b2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRX
YWl0Rm9yUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzIGNhbmNlbF07DQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0
KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRv
d25dOw0KK30NCisNCisvLyBQdWJsaXNoaW5nIHByb2dyZXNzIG9uIGEgZG93bmxvYWQgYWZ0ZXIg
aXQgaGFzIGZpbmlzaGVkIHNob3VsZCBiZSBhIHNhZmUgbm8tb3AuDQorVEVTVChEb3dubG9hZFBy
b2dyZXNzLCBQdWJsaXNoUHJvZ3Jlc3NBZnRlckRvd25sb2FkRmluaXNoZWQpDQorew0KKyAgICBh
dXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxs
b2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3du
bG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjEwMF07DQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFza107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdh
aXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFBy
b2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCisv
LyBUZXN0IHRoZSBiZWhhdmlvciBvZiBhIGRvd25sb2FkIG9mIHVua25vd24gbGVuZ3RoLg0KK1RF
U1QoRG93bmxvYWRQcm9ncmVzcywgSW5kZXRlcm1pbmF0ZURvd25sb2FkU2l6ZSkNCit7DQorICAg
IGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBh
bGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRv
d25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6TlNV
UkxSZXNwb25zZVVua25vd25MZW5ndGhdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNo
UHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJv
Z3Jlc3NdOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy50b3RhbFVu
aXRDb3VudCwgLTEpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07
DQorICAgIEVYUEVDVF9FUShbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRl
ZFVuaXRDb3VudF0sIDUwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jl
c3MuZnJhY3Rpb25Db21wbGV0ZWQsIDApOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQo
KS5wcm9ncmVzcy50b3RhbFVuaXRDb3VudCwgLTEpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93
bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVz
c107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gVGVz
dCB0aGUgYmVoYXZpb3Igd2hlbiBhIGRvd25sb2FkIGNvbnRpbnVlcyByZXR1cm5pbmcgZGF0YSBi
ZXlvbmQgaXRzIGV4cGVjdGVkIGxlbmd0aC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIEV4dHJh
RGF0YSkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dy
ZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBz
dGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhw
ZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNz
XTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsN
CisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6MTUwXTsNCisgICAgRVhQRUNU
X0VRKFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50XSwg
MTUwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jlc3MuZnJhY3Rpb25D
b21wbGV0ZWQsIDEuNSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2Fk
VGFza107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rl
c3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCisvLyBDbGllbnRzIHNob3VsZCBiZSBh
YmxlIHRvIHB1Ymxpc2ggcHJvZ3Jlc3Mgb24gYSBkb3dubG9hZCB0aGF0IGhhcyBhbHJlYWR5IHN0
YXJ0ZWQuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBQdWJsaXNoUHJvZ3Jlc3NPblBhcnRpYWxE
b3dubG9hZCkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFBy
b2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQg
ZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6
NTBdOw0KKw0KKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdGhlIGRhdGEgdGFzayBoYXMgYmVjb21l
IGEgZG93bmxvYWQgdGFzayBzbyB0aGF0IHdlIHRlc3QNCisgICAgLy8gdGVsbGluZyBhIGxpdmUg
RG93bmxvYWQsIG5vdCBhIFBlbmRpbmdEb3dubG9hZCwgdG8gcHVibGlzaCBpdHMgcHJvZ3Jlc3Mu
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgRVhQ
RUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50LCA1MCk7
DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsNCisgICAgRVhQRUNU
X0VRKFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50XSwg
MTAwKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5n
ZXQoKSB0ZWFyRG93bl07DQorfQ0KKw0KKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRA0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355981</attachid>
            <date>2018-11-28 22:33:08 -0800</date>
            <delta_ts>2018-11-29 10:33:27 -0800</delta_ts>
            <desc>Patch v4</desc>
            <filename>file_192021.txt</filename>
            <type>text/plain</type>
            <size>76042</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGJlMGU3ZmEzYzZiMmYxOWEwMWQzZWMwYmMwMmU5ZTBjMDU2YjBkODUNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFdlZCBOb3Yg
MjggMjE6Mjg6NTcgMjAxOCAtMDgwMA0KDQogICAgQWRkIFNQSSB0byBwdWJsaXNoIE5TUHJvZ3Jl
c3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0KICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIwMjENCiAgICByZGFyOi8vcHJvYmxlbS80NDQwNTY2MQ0KICAgIA0KICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNvdXJjZS9XZWJDb3JlL1BB
TDoNCiAgICANCiAgICBBZGQgYW4gU1BJIGhlYWRlciBmb3IgTlNQcm9ncmVzcydzIHB1Ymxpc2hp
bmcgYW5kIHVucHVibGlzaGluZyBtZXRob2RzLiBJbiBvbGRlcg0KICAgIFNES3MsIHRoZXNlIG1l
dGhvZHMgYXJlIGV4cGxpY2l0bHkgdW5hdmFpbGFibGUgb24gcGxhdGZvcm1zIG90aGVyIHRoYW4g
bWFjT1MsDQogICAgd2l0aCB1bmRlcnNjb3JlLXByZWZpeGVkIHZlcnNpb25zIGF2YWlsYWJsZSBh
cyBTUEkuIEluIG5ld2VyIFNES3MsIHRoZSB1bnByZWZpeGVkDQogICAgdmVyc2lvbnMgYXJlIFNQ
SSBhbmQgdGhlIHByZWZpeGVkIHZlcnNpb25zIGFyZSBkZXByZWNhdGVkLg0KICAgIA0KICAgICog
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQogICAgKiBwYWwvc3BpL2NvY29hL05TUHJv
Z3Jlc3NTUEkuaDoNCiAgICANCiAgICBTb3VyY2UvV2ViS2l0Og0KICAgIA0KICAgIE1ha2UgaXQg
cG9zc2libGUgZm9yIGNsaWVudHMgdG8gYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvIG1vbml0b3Ig
dGhlIHN0YXRlIG9mIGFjdGl2ZQ0KICAgIGRvd25sb2Fkcy4gT24gQ29jb2EgcGxhdGZvcm1zLCB0
aGlzIGNhbiBiZSBkb25lIGJ5IGNyZWF0aW5nIGFuIE5TUHJvZ3Jlc3MsIHB1Ymxpc2hpbmcNCiAg
ICBpdCBvbiBhbiBhcHByb3ByaWF0ZSBmaWxlIFVSTCAocG90ZW50aWFsbHkgYSBkaWZmZXJlbnQg
ZmlsZSBVUkwgdGhhbiB3aGVyZSB0aGUgZG93bmxvYWQNCiAgICBkYXRhIGlzIGJlaW5nIHdyaXR0
ZW4pLCB1cGRhdGluZyBwcm9wZXJ0aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9n
cmVzcywgYW5kDQogICAgd2lyaW5nIHVwIGEgY2FuY2VsbGF0aW9uIGhhbmRsZXIgdGhhdCBhbGxv
d3MgaXQgdG8gYmUgcmVtb3RlbHkgY2FuY2VsZWQuIEludGVyZXN0ZWQNCiAgICBjbGllbnRzIGNh
biB0aGVuIHN1YnNjcmliZSB0byBwcm9ncmVzcyBvbiB0aGF0IFVSTCBhbmQgcmVjZWl2ZSBhIHBy
b3h5IHRvIHRoZSBwcm9ncmVzcw0KICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hlcy4NCiAgICANCiAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6
RG93bmxvYWQ6On5Eb3dubG9hZCk6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVz
dHJveURvd25sb2FkKToNCiAgICAgICAgQWRkIGEgcGxhdGZvcm0tY3VzdG9taXphYmxlIGhvb2sg
Zm9yIGRlc3RydWN0aW5nIHRoZSBEb3dubG9hZC4gRG93bmxvYWRDb2NvYS5tbQ0KICAgICAgICB3
aWxsIGludGVyYWN0IHdpdGggaXRzIE9iamVjdGl2ZS1DIE5TUHJvZ3Jlc3MgaW5zdGFuY2UgYXQg
dGhpcyBwb2ludC4NCiAgICANCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6
DQogICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFz
ayk6DQogICAgICAgIFNlZSBjb21tZW50cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4N
CiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToN
CiAgICAgICAgSWYgdGhlIHByb3ZpZGVkIGRvd25sb2FkSUQgY29ycmVzcG9uZHMgdG8gYSBub24t
UGVuZGluZyBEb3dubG9hZCwgaGFuZCB0aGUgVVJMDQogICAgICAgIGFuZCBhIG1hdGNoaW5nIHNh
bmRib3ggZXh0ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRlIGl0cyBwcm9n
cmVzcy4NCiAgICAgICAgT3RoZXJ3aXNlLCBzdG9yZSB0aGUgVVJMIGFuZCBzYW5kYm94IGV4dGVu
c2lvbiBvbiB0aGUgUGVuZGluZ0Rvd25sb2FkIHRvIGJlIHVzZWQNCiAgICAgICAgbGF0ZXIgd2hl
biB0aGUgZnVsbCBEb3dubG9hZCBpcyBjcmVhdGVkLiBXaGVuIHRoaXMgaGFwcGVucywgZGF0YVRh
c2tCZWNhbWVEb3dubG9hZFRhc2soKQ0KICAgICAgICB3aWxsIHRlbGwgdGhlIFBlbmRpbmdEb3du
bG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJlY29tZS4gVGhlIFBlbmRpbmdEb3dubG9h
ZA0KICAgICAgICB3aWxsIHRoZW4gcmVsYXkgdGhlIHByb2dyZXNzIFVSTCBhbmQgc2FuZGJveCBl
eHRlbnNpb24gdG8gdGhlIERvd25sb2FkLg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpwdWJs
aXNoUHJvZ3Jlc3MpOg0KICAgICAgICBTdG9yZSB0aGUgcHJvZ3Jlc3MgaW5mbyBmb3IgbGF0ZXIg
dXNlLCB3aGVuIHRoZSBwcm9wZXIgRG93bmxvYWQgaXMgY3JlYXRlZC4NCiAgICAoV2ViS2l0OjpQ
ZW5kaW5nRG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKToNCiAgICAgICAgSWYgdGhlcmUgd2Fz
IGEgcHJvZ3Jlc3MgVVJMIHByb3ZpZGVkIGVhcmxpZXIsIHRlbGwgdGhlIERvd25sb2FkIGNvcnJl
c3BvbmRpbmcgdG8gdGhpcw0KICAgICAgICBQZW5kaW5nRG93bmxvYWQgdG8gcHVibGlzaCBpdHMg
cHJvZ3Jlc3MgdXNpbmcgdGhhdCBVUkwuDQogICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
Y29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1E
ZXN0cm95RG93bmxvYWQpOg0KICAgICAgICBXaGVuIHRoZSBEb3dubG9hZCBpcyBkZXN0cm95ZWQg
KGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZhaWxzLCBvciBpcyBjYW5jZWxlZCks
DQogICAgICAgIHVucHVibGlzaCB0aGUgcHJvZ3Jlc3MsIHNpbmNlIHRoZXJlIGlzIG5vIGxvbmdl
ciBhbnkgYWN0aXZpdHkgdG8gcmVwb3J0Lg0KICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwdWJsaXNo
UHJvZ3Jlc3MpOg0KICAgICAgICBSZXNvbHZlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiwgY3JlYXRl
IGEgcHJvZ3Jlc3MgY29uZmlndXJlZCB0byByZWZsZWN0IHRoZSBwcm9ncmVzcyBvZg0KICAgICAg
ICB0aGlzIERvd25sb2FkJ3MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrLCBhbmQgcHVibGlzaCBp
dCBhdCB0aGUgZ2l2ZW4gZmlsZSBVUkwuDQogICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLg0KICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbTogQWRkZWQuDQogICAgKC1b
V0tEb3dubG9hZFByb2dyZXNzIGluaXRXaXRoRG93bmxvYWRUYXNrOmRvd25sb2FkOlVSTDpzYW5k
Ym94RXh0ZW5zaW9uOl0pOg0KICAgICAgICBDb25maWd1cmUgdGhpcyBwcm9ncmVzcywgc3RhcnQg
b2JzZXJ2aW5nIHByb3BlcnRpZXMgb24gdGhlIGRvd25sb2FkIHRhc2sgdGhhdCB0aGlzDQogICAg
ICAgIHByb2dyZXNzIHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxhdGlvbiBo
YW5kbGVyIG9mIHRoZSBwcm9ncmVzcyB0byBjYW5jZWwNCiAgICAgICAgdGhlIGNvcnJlc3BvbmRp
bmcgRG93bmxvYWQuDQogICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIHB1Ymxpc2hdKToNCiAgICAo
LVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQogICAgICAgIE92ZXJyaWRlIHRoZXNl
IG1ldGhvZHMgdG8gY29uc3VtZSBhbmQgcmV2b2tlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiB0byBt
YWtlIHN1cmUgdGhlDQogICAgICAgIHByb2Nlc3MgaGFzIGFjY2VzcyB0byB0aGUgcHJvZ3Jlc3Mg
ZmlsZSB3aGlsZSB0aGUgcHJvZ3Jlc3Mgd2lsbCBiZSBwdWJsaXNoZWQuDQogICAgKC1bV0tEb3du
bG9hZFByb2dyZXNzIGRlYWxsb2NdKToNCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3Mgb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToNCiAgICAgICAgV2hl
biBlaXRoZXIgYnl0ZSBjb3VudCAobnVtYmVyIHJlY2VpdmVkLCBvciBudW1iZXIgZXhwZWN0ZWQg
dG8gcmVjZWl2ZSkgb2YgdGhlIGRvd25sb2FkDQogICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRl
IHRoaXMgcHJvZ3Jlc3MgdG8gcmVmbGVjdCB0aGF0Lg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOg0KICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwdWJs
aXNoRG93bmxvYWRQcm9ncmVzcyk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46DQog
ICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbjoNCiAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCiAgICAgICAgQWxsb3cgbG9va2luZyB1cCB0aGUgc2Vy
dmljZXMgdGhhdCBtYW5hZ2VzIHB1Ymxpc2hlZCBOU1Byb2dyZXNzZXMuDQogICAgDQogICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6DQogICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tOg0KICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0
VVJMOl0pOg0KICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoNCiAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3MpOg0KICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6DQogICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoNCiAgICANCiAgICBUb29sczoNCiAgICANCiAgICBBZGQgQVBJIHRlc3Rz
IHRvIGV4ZXJjaXNlIHRoZSBwcm9ncmVzcy1wdWJsaXNoaW5nIGZ1bmN0aW9uYWxpdHkgaW4gYSB2
YXJpZXR5IG9mIHNjZW5hcmlvcy4NCiAgICANCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOiBBZGRlZC4NCiAgICAoK1tEb3dubG9h
ZFByb2dyZXNzVGVzdFByb3RvY29sIHJlZ2lzdGVyUHJvdG9jb2xGb3JUZXN0UnVubmVyOl0pOg0K
ICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgdW5yZWdpc3RlclByb3RvY29sXSk6
DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6
XSk6DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0
Rm9yUmVxdWVzdDpdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHJlcXVl
c3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVlc3Q6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RQcm90b2NvbCBzdGFydExvYWRpbmddKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFByb3RvY29sIHN0b3BMb2FkaW5nXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgaW5pdF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0TG9hZGlu
Z1dpdGhQcm90b2NvbDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB0ZWFy
RG93bl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kaWRHZXRQcm9ncmVz
czpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkTG9zZVByb2dyZXNz
XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3Vic2NyaWJlQW5kV2FpdEZv
clByb2dyZXNzXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdFRvTG9z
ZVByb2dyZXNzXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3du
bG9hZDpleHBlY3RlZExlbmd0aDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBwdWJsaXNoUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBy
ZWNlaXZlRGF0YTpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmaW5pc2hE
b3dubG9hZFRhc2tdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmYWlsRG93
bmxvYWRUYXNrXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25dKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXSk6DQogICAgKC1bRG93bmxvYWRQ
cm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkRmFpbGVkXSk6DQogICAgKC1bRG93bmxv
YWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdKToN
CiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9u
SGFuZGxlcjpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOg0KICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZERpZFN0YXJ0Ol0pOg0KICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlv
bjpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWREaWRGaW5p
c2g6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkQ2Fu
Y2VsOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRG
YWlsV2l0aEVycm9yOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3du
bG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToNCiAgICAoVEVTVCk6DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZw0KaW5kZXggMmFlNDEwYzE5
Y2IuLjVhNWY4NzI3ZjE3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zw0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZw0KQEAgLTEsMyArMSwxOSBAQA0K
KzIwMTgtMTEtMjggIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisN
CisgICAgICAgIEFkZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9h
ZHMNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIw
MjENCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEFkZCBhbiBTUEkgaGVhZGVyIGZvciBO
U1Byb2dyZXNzJ3MgcHVibGlzaGluZyBhbmQgdW5wdWJsaXNoaW5nIG1ldGhvZHMuIEluIG9sZGVy
DQorICAgICAgICBTREtzLCB0aGVzZSBtZXRob2RzIGFyZSBleHBsaWNpdGx5IHVuYXZhaWxhYmxl
IG9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIG1hY09TLA0KKyAgICAgICAgd2l0aCB1bmRlcnNjb3Jl
LXByZWZpeGVkIHZlcnNpb25zIGF2YWlsYWJsZSBhcyBTUEkuIEluIG5ld2VyIFNES3MsIHRoZSB1
bnByZWZpeGVkDQorICAgICAgICB2ZXJzaW9ucyBhcmUgU1BJIGFuZCB0aGUgcHJlZml4ZWQgdmVy
c2lvbnMgYXJlIGRlcHJlY2F0ZWQuDQorDQorICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOg0KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaDoNCisN
CiAyMDE4LTExLTI4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4NCiAN
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzg2NTMgYW5kIHIyMzg2NTYuDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQpp
bmRleCA3N2YyNDY3M2U1MS4uM2RhOGJmOWJmZGMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTExNCw2ICsxMTQsNyBAQA0K
IAkJNDQyOTU2Q0QyMThBNzJERjAwODBEQjU0IC8qIFJldmVhbFNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0
IC8qIFJldmVhbFNQSS5oICovOyB9Ow0KIAkJNTcwQUI4RjEyMEFFMkU4RDAwQjhCRTg3IC8qIFNl
Y0tleVByb3h5U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzBBQjhGMDIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLzsgfTsN
CiAJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEY4MjBBRjZF
M0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCAqLzsgfTsNCisJCTYzQzdFREM3MjFB
RkFFMDQwMDZBN0I5OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9n
cmVzc1NQSS5oICovOyB9Ow0KIAkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRB
cmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovOyB9
Ow0KIAkJN0EzQTZBODAyMENBREI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMx
N0FBRSAvKiBOU0ltYWdlU1BJLmggKi87IH07DQogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQg
LyogSElUb29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07
DQpAQCAtMjcxLDYgKzI3Miw3IEBADQogCQk0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2
ZWFsU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJldmVhbFNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8q
IFNlY0tleVByb3h5U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0tleVByb3h5U1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk1NzBBQjhGODIwQUY2RTNEMDBCOEJFODcgLyogTlNY
UENDb25uZWN0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TWFBDQ29ubmVjdGlvblNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8q
IE5TUHJvZ3Jlc3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9Ow0KIAkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5
ZWRBcmNoaXZlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0tleWVk
QXJjaGl2ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTdBM0E2QTdGMjBD
QURCNDYwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TSW1hZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTkzRTU5
MDlDMUY5M0JGMUUwMDY3RjhDRiAvKiBVbmVuY29kYWJsZUhhbmRsaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVuZW5jb2RhYmxlSGFuZGxpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCkBA
IC0zOTcsNiArMzk5LDcgQEANCiAJCQkJMEMyREExMzMxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmls
ZU1hbmFnZXJTUEkuaCAqLywNCiAJCQkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaCAqLywNCiAJCQkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8q
IE5TS2V5ZWRBcmNoaXZlclNQSS5oICovLA0KKwkJCQk2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMg
LyogTlNQcm9ncmVzc1NQSS5oICovLA0KIAkJCQkwQzJEQTEzNDFGM0JFQjQ5MDBEQkMzMTcgLyog
TlNTdHJpbmdTUEkuaCAqLywNCiAJCQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91
Y2hCYXJTUEkuaCAqLywNCiAJCQkJMEMyREExMzYxRjNCRUI0OTAwREJDMzE3IC8qIE5TVVJMQ29u
bmVjdGlvblNQSS5oICovLA0KQEAgLTc0Myw2ICs3NDYsNyBAQA0KIAkJCQkwQzc3ODU5RjFGNDUx
MzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkwQzJEQTE1NzFG
M0JFQjQ5MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCUEx
MDI2NThCMUY1Njc0OEMwMEI0Qzg0NCAvKiBRdWlja0RyYXdTUEkuaCBpbiBIZWFkZXJzICovLA0K
KwkJCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVzc1NQSS5oIGluIEhlYWRl
cnMgKi8sDQogCQkJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEku
aCBpbiBIZWFkZXJzICovLA0KIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tM
b29rU1BJLmggaW4gSGVhZGVycyAqLywNCiAJCQkJNDQyOTU2Q0QyMThBNzJERjAwODBEQjU0IC8q
IFJldmVhbFNQSS5oIGluIEhlYWRlcnMgKi8sDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMDAwMDAuLjc5MzcwYTE2NTFiDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmgNCkBAIC0wLDAgKzEsNDkgQEAN
CisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0K
KyNkZWZpbmUgVVNFX05TUFJPR1JFU1NfUFVCTElTSElOR19TUEkgKChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEzMDAwMCkgfHwgKFBM
QVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA2MDAw
MCkgfHwgKFBMQVRGT1JNKFRWT1MpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MzAwMDApKQ0KKw0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisNCisjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykNCisNCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jl
c3NfUHJpdmF0ZS5oPg0KKw0KKyNlbHNlDQorDQorQGludGVyZmFjZSBOU1Byb2dyZXNzICgpDQor
DQorLSAodm9pZClfcHVibGlzaDsNCistICh2b2lkKV91bnB1Ymxpc2g7DQorKyAoaWQpX2FkZFN1
YnNjcmliZXJGb3JGaWxlVVJMOihOU1VSTCAqKWluVVJMIHdpdGhQdWJsaXNoaW5nSGFuZGxlcjoo
TlNQcm9ncmVzc1B1Ymxpc2hpbmdIYW5kbGVyKWluUHVibGlzaGluZ0hhbmRsZXI7DQorKyAodm9p
ZClfcmVtb3ZlU3Vic2NyaWJlcjooaWQpaW5TdWJzY3JpYmVyOw0KKw0KK0BlbmQNCisNCisjZW5k
aWYgLy8gbm90IFVTRShBUFBMRV9JTlRFUk5BTF9TREspDQorDQorI2VuZGlmIC8vIFVTRShOU1BS
T0dSRVNTX1BVQkxJU0hJTkdfU1BJKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4IDY0OTUwYmYwYTUzLi42ZjMxNWZk
ODYxOSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSw4NiBAQA0KKzIwMTgtMTEtMjggIERhdmlkIFF1
ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBTUEkgdG8g
cHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMNCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjENCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4N
CisNCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIGNsaWVudHMgdG8gYWxsb3cgb3RoZXIg
cHJvY2Vzc2VzIHRvIG1vbml0b3IgdGhlIHN0YXRlIG9mIGFjdGl2ZQ0KKyAgICAgICAgZG93bmxv
YWRzLiBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgY2FuIGJlIGRvbmUgYnkgY3JlYXRpbmcgYW4g
TlNQcm9ncmVzcywgcHVibGlzaGluZw0KKyAgICAgICAgaXQgb24gYW4gYXBwcm9wcmlhdGUgZmls
ZSBVUkwgKHBvdGVudGlhbGx5IGEgZGlmZmVyZW50IGZpbGUgVVJMIHRoYW4gd2hlcmUgdGhlIGRv
d25sb2FkDQorICAgICAgICBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4pLCB1cGRhdGluZyBwcm9wZXJ0
aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9ncmVzcywgYW5kDQorICAgICAgICB3
aXJpbmcgdXAgYSBjYW5jZWxsYXRpb24gaGFuZGxlciB0aGF0IGFsbG93cyBpdCB0byBiZSByZW1v
dGVseSBjYW5jZWxlZC4gSW50ZXJlc3RlZA0KKyAgICAgICAgY2xpZW50cyBjYW4gdGhlbiBzdWJz
Y3JpYmUgdG8gcHJvZ3Jlc3Mgb24gdGhhdCBVUkwgYW5kIHJlY2VpdmUgYSBwcm94eSB0byB0aGUg
cHJvZ3Jlc3MNCisgICAgICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hlcy4NCisNCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoNCisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkOjp+RG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRm
b3JtRGVzdHJveURvd25sb2FkKToNCisgICAgICAgICAgICBBZGQgYSBwbGF0Zm9ybS1jdXN0b21p
emFibGUgaG9vayBmb3IgZGVzdHJ1Y3RpbmcgdGhlIERvd25sb2FkLiBEb3dubG9hZENvY29hLm1t
DQorICAgICAgICAgICAgd2lsbCBpbnRlcmFjdCB3aXRoIGl0cyBPYmplY3RpdmUtQyBOU1Byb2dy
ZXNzIGluc3RhbmNlIGF0IHRoaXMgcG9pbnQuDQorDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2spOg0KKyAgICAgICAgICAgIFNlZSBjb21tZW50
cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4NCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MpOg0KKyAgICAgICAgICAgIElmIHRo
ZSBwcm92aWRlZCBkb3dubG9hZElEIGNvcnJlc3BvbmRzIHRvIGEgbm9uLVBlbmRpbmcgRG93bmxv
YWQsIGhhbmQgdGhlIFVSTA0KKyAgICAgICAgICAgIGFuZCBhIG1hdGNoaW5nIHNhbmRib3ggZXh0
ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRlIGl0cyBwcm9ncmVzcy4NCisg
ICAgICAgICAgICBPdGhlcndpc2UsIHN0b3JlIHRoZSBVUkwgYW5kIHNhbmRib3ggZXh0ZW5zaW9u
IG9uIHRoZSBQZW5kaW5nRG93bmxvYWQgdG8gYmUgdXNlZA0KKyAgICAgICAgICAgIGxhdGVyIHdo
ZW4gdGhlIGZ1bGwgRG93bmxvYWQgaXMgY3JlYXRlZC4gV2hlbiB0aGlzIGhhcHBlbnMsIGRhdGFU
YXNrQmVjYW1lRG93bmxvYWRUYXNrKCkNCisgICAgICAgICAgICB3aWxsIHRlbGwgdGhlIFBlbmRp
bmdEb3dubG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJlY29tZS4gVGhlIFBlbmRpbmdE
b3dubG9hZA0KKyAgICAgICAgICAgIHdpbGwgdGhlbiByZWxheSB0aGUgcHJvZ3Jlc3MgVVJMIGFu
ZCBzYW5kYm94IGV4dGVuc2lvbiB0byB0aGUgRG93bmxvYWQuDQorDQorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoNCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6DQorICAgICAgICAoV2ViS2l0
OjpQZW5kaW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQorICAgICAgICAgICAgU3RvcmUg
dGhlIHByb2dyZXNzIGluZm8gZm9yIGxhdGVyIHVzZSwgd2hlbiB0aGUgcHJvcGVyIERvd25sb2Fk
IGlzIGNyZWF0ZWQuDQorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OmRpZEJlY29t
ZURvd25sb2FkKToNCisgICAgICAgICAgICBJZiB0aGVyZSB3YXMgYSBwcm9ncmVzcyBVUkwgcHJv
dmlkZWQgZWFybGllciwgdGVsbCB0aGUgRG93bmxvYWQgY29ycmVzcG9uZGluZyB0byB0aGlzDQor
ICAgICAgICAgICAgUGVuZGluZ0Rvd25sb2FkIHRvIHB1Ymxpc2ggaXRzIHByb2dyZXNzIHVzaW5n
IHRoYXQgVVJMLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmg6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVz
dHJveURvd25sb2FkKToNCisgICAgICAgICAgICBXaGVuIHRoZSBEb3dubG9hZCBpcyBkZXN0cm95
ZWQgKGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZhaWxzLCBvciBpcyBjYW5jZWxl
ZCksDQorICAgICAgICAgICAgdW5wdWJsaXNoIHRoZSBwcm9ncmVzcywgc2luY2UgdGhlcmUgaXMg
bm8gbG9uZ2VyIGFueSBhY3Rpdml0eSB0byByZXBvcnQuDQorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZDo6cHVibGlzaFByb2dyZXNzKToNCisgICAgICAgICAgICBSZXNvbHZlIHRoZSBzYW5kYm94
IGV4dGVuc2lvbiwgY3JlYXRlIGEgcHJvZ3Jlc3MgY29uZmlndXJlZCB0byByZWZsZWN0IHRoZSBw
cm9ncmVzcyBvZg0KKyAgICAgICAgICAgIHRoaXMgRG93bmxvYWQncyBOU1VSTFNlc3Npb25Eb3du
bG9hZFRhc2ssIGFuZCBwdWJsaXNoIGl0IGF0IHRoZSBnaXZlbiBmaWxlIFVSTC4NCisNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWQuaC4NCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxv
YWRQcm9ncmVzcy5tbTogQWRkZWQuDQorICAgICAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgaW5p
dFdpdGhEb3dubG9hZFRhc2s6ZG93bmxvYWQ6VVJMOnNhbmRib3hFeHRlbnNpb246XSk6DQorICAg
ICAgICAgICAgQ29uZmlndXJlIHRoaXMgcHJvZ3Jlc3MsIHN0YXJ0IG9ic2VydmluZyBwcm9wZXJ0
aWVzIG9uIHRoZSBkb3dubG9hZCB0YXNrIHRoYXQgdGhpcw0KKyAgICAgICAgICAgIHByb2dyZXNz
IHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxhdGlvbiBoYW5kbGVyIG9mIHRo
ZSBwcm9ncmVzcyB0byBjYW5jZWwNCisgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBEb3du
bG9hZC4NCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBwdWJsaXNoXSk6DQorICAgICAg
ICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQorICAgICAgICAgICAgT3ZlcnJp
ZGUgdGhlc2UgbWV0aG9kcyB0byBjb25zdW1lIGFuZCByZXZva2UgdGhlIHNhbmRib3ggZXh0ZW5z
aW9uIHRvIG1ha2Ugc3VyZSB0aGUNCisgICAgICAgICAgICBwcm9jZXNzIGhhcyBhY2Nlc3MgdG8g
dGhlIHByb2dyZXNzIGZpbGUgd2hpbGUgdGhlIHByb2dyZXNzIHdpbGwgYmUgcHVibGlzaGVkLg0K
KyAgICAgICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIGRlYWxsb2NdKToNCisgICAgICAgICgtW1dL
RG93bmxvYWRQcm9ncmVzcyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpj
b250ZXh0Ol0pOg0KKyAgICAgICAgICAgIFdoZW4gZWl0aGVyIGJ5dGUgY291bnQgKG51bWJlciBy
ZWNlaXZlZCwgb3IgbnVtYmVyIGV4cGVjdGVkIHRvIHJlY2VpdmUpIG9mIHRoZSBkb3dubG9hZA0K
KyAgICAgICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRlIHRoaXMgcHJvZ3Jlc3MgdG8gcmVmbGVj
dCB0aGF0Lg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
DQorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHVibGlzaERvd25sb2FkUHJvZ3Jl
c3MpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOg0KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoNCisNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Mu
c2IuaW46DQorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCisgICAgICAgICAgICBBbGxvdyBsb29raW5nIHVwIHRo
ZSBzZXJ2aWNlcyB0aGF0IG1hbmFnZXMgcHVibGlzaGVkIE5TUHJvZ3Jlc3Nlcy4NCisNCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oOg0KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOg0KKyAgICAgICAgKC1bX1dLRG93bmxvYWQg
cHVibGlzaFByb2dyZXNzQXRVUkw6XSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHA6DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpwdWJs
aXNoUHJvZ3Jlc3MpOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuaDoNCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQorDQog
MjAxOC0xMS0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPg0KIA0KICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTig/KTogYWxsICJTaG93ICoiIGRldmVsb3Ag
bWVudSBpdGVtcyBjYXVzZSB0aGUgcGFnZSB0byBjcmFzaA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KaW5kZXggNDk0ZDk5ZjBl
YjIuLjE3N2Y5YmE0OWMzIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCkBAIC03Nyw2ICs3Nyw3IEBAIERvd25sb2FkOjpE
b3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3du
bG9hZElELCBOU1VSDQogDQogRG93bmxvYWQ6On5Eb3dubG9hZCgpDQogew0KKyAgICBwbGF0Zm9y
bURlc3Ryb3lEb3dubG9hZCgpOw0KICAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWREZXN0cm95RG93
bmxvYWQoKTsNCiB9DQogDQpAQCAtMTc5LDYgKzE4MCwxMCBAQCBib29sIERvd25sb2FkOjppc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdA0KIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2Fu
Y2VsTmV0d29ya0xvYWQoKQ0KIHsNCiB9DQorDQordm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EZXN0
cm95RG93bmxvYWQoKQ0KK3sNCit9DQogI2VuZGlmDQogDQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmgNCmluZGV4IDU5MGY5ZWI2Zjg1Li5iZGJjOGUxNTI2MCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgNCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgNCkBAIC0zNyw2ICszNyw3
IEBADQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4NCiANCiAjaWYgUExBVEZPUk0oQ09DT0Ep
DQorT0JKQ19DTEFTUyBOU1Byb2dyZXNzOw0KIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxv
YWRUYXNrOw0KICNlbmRpZg0KIA0KQEAgLTczLDYgKzc0LDkgQEAgcHVibGljOg0KIA0KICAgICB2
b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KICAgICB2b2lkIGNhbmNl
bCgpOw0KKyNpZiBQTEFURk9STShDT0NPQSkNCisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29u
c3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyNlbmRpZg0K
IA0KICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2Fk
SUQ7IH0NCiAgICAgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9zdWdnZXN0ZWROYW1lOyB9DQpAQCAtOTEsNiArOTUsNyBAQCBwcml2YXRlOg0KICAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlOw0KIA0KICAgICB2b2lk
IHBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKTsNCisgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3lE
b3dubG9hZCgpOw0KIA0KICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
Ow0KIA0KQEAgLTEwMyw2ICsxMDgsNyBAQCBwcml2YXRlOg0KICAgICBSZWZQdHI8TmV0d29ya0Rh
dGFUYXNrPiBtX2Rvd25sb2FkOw0KICNpZiBQTEFURk9STShDT0NPQSkNCiAgICAgUmV0YWluUHRy
PE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7DQorICAgIFJldGFpblB0
cjxOU1Byb2dyZXNzPiBtX3Byb2dyZXNzOw0KICNlbmRpZg0KICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsNCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KaW5kZXggMWUyOGZjOTQyNzguLjZmMDEwOGVkMWI2IDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcA0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcA0KQEAgLTY0LDcgKzY0LDExIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25s
b2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBQDQogdm9pZCBE
b3dubG9hZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93
bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQ0KIHsNCiAgICAg
QVNTRVJUKG1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7DQotICAgIG1f
cGVuZGluZ0Rvd25sb2Fkcy5yZW1vdmUoZG93bmxvYWRJRCk7DQorICAgIGlmIChhdXRvIHBlbmRp
bmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy50YWtlKGRvd25sb2FkSUQpKSB7DQorI2lm
IFBMQVRGT1JNKENPQ09BKQ0KKyAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5kaWRCZWNvbWVEb3du
bG9hZChkb3dubG9hZCk7DQorI2VuZGlmDQorICAgIH0NCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fk
cy5jb250YWlucyhkb3dubG9hZElEKSk7DQogICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlv
bkRlY2lkZWQucmVtb3ZlKGRvd25sb2FkSUQpOw0KICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOw0KQEAgLTE1NSw2ICsxNTksMTYgQEAgdm9pZCBEb3du
bG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCkNCiAgICAg
ICAgIHBlbmRpbmdEb3dubG9hZC0+Y2FuY2VsKCk7DQogfQ0KIA0KKyNpZiBQTEFURk9STShDT0NP
QSkNCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit7DQorICAgIGlmIChEb3dubG9h
ZCogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpDQorICAgICAgICBkb3du
bG9hZC0+cHVibGlzaFByb2dyZXNzKHVybCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KSk7DQorICAgIGVsc2UgaWYgKFBlbmRpbmdEb3dubG9hZCogcGVuZGluZ0Rvd25sb2FkID0gbV9w
ZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKSkNCisgICAgICAgIHBlbmRpbmdEb3dubG9h
ZC0+cHVibGlzaFByb2dyZXNzKHVybCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7
DQorfQ0KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkNCisNCiB2b2lkIERvd25sb2FkTWFuYWdl
cjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCogZG93bmxvYWQpDQogew0KICAgICBBU1NFUlQo
bV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWQtPmRvd25sb2FkSUQoKSkpOw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgNCmluZGV4IDUxZDBlZjE2YTZjLi44MDc4NDEwZGEzMyAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oDQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aA0KQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOg0KICAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0K
IA0KICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQpOw0KKyNpZiBQTEFURk9STShD
T0NPQSkNCisgICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7DQorI2VuZGlmDQog
ICAgIA0KICAgICBEb3dubG9hZCogZG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKSB7IHJl
dHVybiBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7IH0NCiANCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cA0KaW5kZXggYTA5OWFiMzVlOTQuLmFlYzRkYTIyMzRjIDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcA0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cA0KQEAgLTc1LDYgKzc1LDIxIEBAIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpjYW5jZWwoKQ0KICAg
ICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRDYW5jZWwoeyB9KSk7DQogfQ0KIA0K
KyNpZiBQTEFURk9STShDT0NPQSkNCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6cHVibGlzaFByb2dy
ZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBz
YW5kYm94RXh0ZW5zaW9uKQ0KK3sNCisgICAgQVNTRVJUKCFtX3Byb2dyZXNzVVJMLmlzVmFsaWQo
KSk7DQorICAgIG1fcHJvZ3Jlc3NVUkwgPSB1cmw7DQorICAgIG1fcHJvZ3Jlc3NTYW5kYm94RXh0
ZW5zaW9uID0gV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKTsNCit9DQorDQordm9pZCBQZW5kaW5n
RG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9h
ZD4mIGRvd25sb2FkKQ0KK3sNCisgICAgaWYgKG1fcHJvZ3Jlc3NVUkwuaXNWYWxpZCgpKQ0KKyAg
ICAgICAgZG93bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyhtX3Byb2dyZXNzVVJMLCBXVEZNb3ZlKG1f
cHJvZ3Jlc3NTYW5kYm94RXh0ZW5zaW9uKSk7DQorfQ0KKyNlbmRpZiAvLyBQTEFURk9STShDT0NP
QSkNCisNCiB2b2lkIFBlbmRpbmdEb3dubG9hZDo6ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpDQogew0KICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpEaWRGYWlsKGVycm9yLCB7IH0pKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oDQppbmRleCBhMzgz
NzQ5OGFiZS4uOTQ0MmVkYmM0MTggMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaA0KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgNCkBAIC0zNCw2ICszNCw3
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7DQogDQogbmFtZXNwYWNlIFdlYktpdCB7DQogDQor
Y2xhc3MgRG93bmxvYWQ7DQogY2xhc3MgRG93bmxvYWRJRDsNCiBjbGFzcyBOZXR3b3JrTG9hZDsN
CiBjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnM7DQpAQCAtNDgsNiArNDksMTEgQEAgcHVibGlj
Og0KICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKTsNCiAgICAgdm9pZCBjYW5jZWwoKTsNCiANCisjaWYgUExBVEZPUk0oQ09DT0EpDQor
ICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmKTsNCisgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZChjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8RG93bmxvYWQ+Jik7DQorI2VuZGlmDQorDQogcHJpdmF0ZTogICAgDQogICAg
IC8vIE5ldHdvcmtMb2FkQ2xpZW50Lg0KICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlIHsgfQ0KQEAgLTY2LDYgKzcyLDExIEBAIHByaXZhdGU6DQogcHJpdmF0ZToNCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOw0KICAgICBib29s
IG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7DQorDQorI2lmIFBMQVRGT1JNKENP
Q09BKQ0KKyAgICBXZWJDb3JlOjpVUkwgbV9wcm9ncmVzc1VSTDsNCisgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIG1fcHJvZ3Jlc3NTYW5kYm94RXh0ZW5zaW9uOw0KKyNlbmRpZg0KIH07DQog
DQogfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQppbmRleCBlZmQ3MWIyMDQwMy4uMjUxNzEw
NDFiMjQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tDQpAQCAtMjksNyArMjksOSBAQA0K
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCINCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29h
LmgiDQogI2ltcG9ydCAiU2Vzc2lvblRyYWNrZXIuaCINCisjaW1wb3J0ICJXS0Rvd25sb2FkUHJv
Z3Jlc3MuaCINCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPg0KKyNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJLaXQgew0K
IA0KQEAgLTg3LDQgKzg5LDM2IEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29y
a0xvYWQoKQ0KICAgICB9XTsNCiB9DQogDQordm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EZXN0cm95
RG93bmxvYWQoKQ0KK3sNCisgICAgaWYgKG1fcHJvZ3Jlc3MpDQorI2lmIFVTRShOU1BST0dSRVNT
X1BVQkxJU0hJTkdfU1BJKQ0KKyAgICAgICAgW21fcHJvZ3Jlc3MgX3VucHVibGlzaF07DQorI2Vs
c2UNCisgICAgICAgIFttX3Byb2dyZXNzIHVucHVibGlzaF07DQorI2VuZGlmDQorfQ0KKw0KK3Zv
aWQgRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit7DQorI2lm
IFdLX0FQSV9FTkFCTEVEDQorICAgIEFTU0VSVCghbV9wcm9ncmVzcyk7DQorICAgIEFTU0VSVCh1
cmwuaXNWYWxpZCgpKTsNCisNCisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOw0KKw0KKyAg
ICBBU1NFUlQoc2FuZGJveEV4dGVuc2lvbik7DQorDQorICAgIG1fcHJvZ3Jlc3MgPSBhZG9wdE5T
KFtbV0tEb3dubG9hZFByb2dyZXNzIGFsbG9jXSBpbml0V2l0aERvd25sb2FkVGFzazptX2Rvd25s
b2FkVGFzay5nZXQoKSBkb3dubG9hZDp0aGlzIFVSTDooTlNVUkwgKil1cmwgc2FuZGJveEV4dGVu
c2lvbjpzYW5kYm94RXh0ZW5zaW9uXSk7DQorI2lmIFVTRShOU1BST0dSRVNTX1BVQkxJU0hJTkdf
U1BJKQ0KKyAgICBbbV9wcm9ncmVzcyBfcHVibGlzaF07DQorI2Vsc2UNCisgICAgW21fcHJvZ3Jl
c3MgcHVibGlzaF07DQorI2VuZGlmDQorI2Vsc2UNCisgICAgVU5VU0VEX1BBUkFNKHVybCk7DQor
ICAgIFVOVVNFRF9QQVJBTShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsNCisjZW5kaWYgLy8gbm90
IFdLX0FQSV9FTkFCTEVEDQorfQ0KKw0KIH0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVz
cy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjFjY2IzMmU4ZjBj
DQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MuaA0KQEAgLTAsMCArMSw1MCBAQA0KKy8qDQor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisg
Kg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycNCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywN
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSDQorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTDQorICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
Ug0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQorICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YNCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRh
dGlvbi5oPg0KKw0KKyNpZiBXS19BUElfRU5BQkxFRA0KKw0KKyNpbXBvcnQgPEZvdW5kYXRpb24v
TlNQcm9ncmVzcy5oPg0KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4NCisNCituYW1lc3BhY2UgV2Vi
S2l0IHsNCisNCitjbGFzcyBEb3dubG9hZDsNCitjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOw0KKw0K
K30NCisNCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0KK0BpbnRlcmZhY2UgV0tEb3dubG9h
ZFByb2dyZXNzIDogTlNQcm9ncmVzcw0KKw0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvd25s
b2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopdGFzayBkb3dubG9hZDooV2ViS2l0
OjpEb3dubG9hZCAqKWRvd25sb2FkIFVSTDooTlNVUkwgKilmaWxlVVJMIHNhbmRib3hFeHRlbnNp
b246KFdURjo6UmVmUHRyPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbj4pc2FuZGJveEV4dGVuc2lv
bjsNCisNCitAZW5kDQorDQorTlNfQVNTVU1FX05PTk5VTExfRU5EDQorDQorI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVEDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLm1tDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjg4M2Y3ZDllMWMwDQotLS0gL2Rldi9u
dWxsDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9X
S0Rvd25sb2FkUHJvZ3Jlc3MubW0NCkBAIC0wLDAgKzEsMTQwIEBADQorLyoNCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4NCisgKi8NCisNCisjaW1wb3J0ICJjb25maWcuaCINCisjaW1wb3J0ICJXS0Rv
d25sb2FkUHJvZ3Jlc3MuaCINCisNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisNCisjaW1wb3J0ICJE
b3dubG9hZC5oIg0KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oPg0KKyNp
bXBvcnQgPHd0Zi9CbG9ja1B0ci5oPg0KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPg0KKw0K
K3N0YXRpYyB2b2lkICogV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZUNv
dW50Q29udGV4dCA9ICZXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc0V4cGVjdGVkVG9SZWNlaXZlQ291
bnRDb250ZXh0Ow0KK3N0YXRpYyB2b2lkICogV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZl
ZENvbnRleHQgPSAmV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQ7DQorDQor
QGltcGxlbWVudGF0aW9uIFdLRG93bmxvYWRQcm9ncmVzcyB7DQorICAgIFJldGFpblB0cjxOU1VS
TFNlc3Npb25Eb3dubG9hZFRhc2s+IG1fdGFzazsNCisgICAgV2ViS2l0OjpEb3dubG9hZCogbV9k
b3dubG9hZDsNCisgICAgUmVmUHRyPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94
RXh0ZW5zaW9uOw0KK30NCisNCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZFRhc2s6
KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKXRhc2sgZG93bmxvYWQ6KFdlYktpdDo6RG93bmxv
YWQqKWRvd25sb2FkIFVSTDooTlNVUkwgKilmaWxlVVJMIHNhbmRib3hFeHRlbnNpb246KFJlZlB0
cjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb24+KXNhbmRib3hFeHRlbnNpb24NCit7DQorICAgIGlm
ICghKHNlbGYgPSBbc2VsZiBpbml0V2l0aFBhcmVudDpuaWwgdXNlckluZm86bmlsXSkpDQorICAg
ICAgICByZXR1cm4gbmlsOw0KKw0KKyAgICBtX3Rhc2sgPSB0YXNrOw0KKyAgICBtX2Rvd25sb2Fk
ID0gZG93bmxvYWQ7DQorDQorICAgIFt0YXNrIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpA
ImNvdW50T2ZCeXRlc0V4cGVjdGVkVG9SZWNlaXZlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0OldL
RG93bmxvYWRQcm9ncmVzc0J5dGVzRXhwZWN0ZWRUb1JlY2VpdmVDb3VudENvbnRleHRdOw0KKyAg
ICBbdGFzayBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJjb3VudE9mQnl0ZXNSZWNlaXZl
ZCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc1JlY2VpdmVk
Q29udGV4dF07DQorDQorICAgIHNlbGYua2luZCA9IE5TUHJvZ3Jlc3NLaW5kRmlsZTsNCisjaWYg
IVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDANCisgICAgc2VsZi5maWxlT3BlcmF0aW9uS2luZCA9IE5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9u
S2luZERvd25sb2FkaW5nOw0KKyAgICBzZWxmLmZpbGVVUkwgPSBmaWxlVVJMOw0KKyNlbHNlDQor
ICAgIFtzZWxmIHNldFVzZXJJbmZvT2JqZWN0Ok5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2luZERv
d25sb2FkaW5nIGZvcktleTpOU1Byb2dyZXNzRmlsZU9wZXJhdGlvbktpbmRLZXldOw0KKyAgICBb
c2VsZiBzZXRVc2VySW5mb09iamVjdDpmaWxlVVJMIGZvcktleTpOU1Byb2dyZXNzRmlsZVVSTEtl
eV07DQorI2VuZGlmDQorICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IHNhbmRib3hFeHRlbnNpb247
DQorDQorICAgIFdlYWtPYmpDUHRyPFdLRG93bmxvYWRQcm9ncmVzcz4gd2Vha1NlbGYgeyBzZWxm
IH07DQorICAgIHNlbGYuY2FuY2VsbGFibGUgPSBZRVM7DQorICAgIHNlbGYuY2FuY2VsbGF0aW9u
SGFuZGxlciA9IEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbd2Vha1NlbGYgPSBXVEZN
b3ZlKHdlYWtTZWxmKV0gew0KKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0
KCk7DQorICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICAgICAgV2ViS2l0OjpEb3dubG9hZCogZG93bmxvYWQgPSBzdHJvbmdTZWxmLmdldCgpLT5t
X2Rvd25sb2FkOw0KKyAgICAgICAgaWYgKGRvd25sb2FkKQ0KKyAgICAgICAgICAgIGRvd25sb2Fk
LT5jYW5jZWwoKTsNCisgICAgfSkuZ2V0KCk7DQorDQorICAgIHJldHVybiBzZWxmOw0KK30NCisN
CisjaWYgVVNFKE5TUFJPR1JFU1NfUFVCTElTSElOR19TUEkpDQorLSAodm9pZClfcHVibGlzaA0K
KyNlbHNlDQorLSAodm9pZClwdWJsaXNoDQorI2VuZGlmDQorew0KKyAgICBCT09MIGNvbnN1bWVk
RXh0ZW5zaW9uID0gbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7DQorICAgIEFTU0VSVF9V
TlVTRUQoY29uc3VtZWRFeHRlbnNpb24sIGNvbnN1bWVkRXh0ZW5zaW9uKTsNCisNCisjaWYgVVNF
KE5TUFJPR1JFU1NfUFVCTElTSElOR19TUEkpDQorICAgIFtzdXBlciBfcHVibGlzaF07DQorI2Vs
c2UNCisgICAgW3N1cGVyIHB1Ymxpc2hdOw0KKyNlbmRpZg0KK30NCisNCisjaWYgVVNFKE5TUFJP
R1JFU1NfUFVCTElTSElOR19TUEkpDQorLSAodm9pZClfdW5wdWJsaXNoDQorI2Vsc2UNCistICh2
b2lkKXVucHVibGlzaA0KKyNlbmRpZg0KK3sNCisjaWYgVVNFKE5TUFJPR1JFU1NfUFVCTElTSElO
R19TUEkpDQorICAgIFtzdXBlciBfdW5wdWJsaXNoXTsNCisjZWxzZQ0KKyAgICBbc3VwZXIgdW5w
dWJsaXNoXTsNCisjZW5kaWYNCisNCisgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsN
CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsNCit9DQorDQorLSAodm9pZClkZWFs
bG9jDQorew0KKyAgICBbbV90YXNrLmdldCgpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0
aDpAImNvdW50T2ZCeXRlc0V4cGVjdGVkVG9SZWNlaXZlIl07DQorICAgIFttX3Rhc2suZ2V0KCkg
cmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiY291bnRPZkJ5dGVzUmVjZWl2ZWQiXTsN
CisNCisgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOw0KKw0KKyAgICBbc3VwZXIgZGVh
bGxvY107DQorfQ0KKw0KKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcg
KilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlW
YWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0DQorew0K
KyAgICBpZiAoY29udGV4dCA9PSBXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc0V4cGVjdGVkVG9SZWNl
aXZlQ291bnRDb250ZXh0KSB7DQorICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHZhbHVlID0g
c3RhdGljX2Nhc3Q8TlNOdW1iZXIgKj4oY2hhbmdlW05TS2V5VmFsdWVDaGFuZ2VOZXdLZXldKTsN
CisgICAgICAgIEFTU0VSVChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7
DQorICAgICAgICBpbnQ2NF90IGV4cGVjdGVkQnl0ZUNvdW50ID0gdmFsdWUuZ2V0KCkubG9uZ0xv
bmdWYWx1ZTsNCisgICAgICAgIHNlbGYudG90YWxVbml0Q291bnQgPSAoZXhwZWN0ZWRCeXRlQ291
bnQgPD0gMCkgPyAtMSA6IGV4cGVjdGVkQnl0ZUNvdW50Ow0KKyAgICB9IGVsc2UgaWYgKGNvbnRl
eHQgPT0gV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQpIHsNCisgICAgICAg
IFJldGFpblB0cjxOU051bWJlcj4gdmFsdWUgPSBzdGF0aWNfY2FzdDxOU051bWJlciAqPihjaGFu
Z2VbTlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0pOw0KKyAgICAgICAgQVNTRVJUKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsNCisgICAgICAgIHNlbGYuY29tcGxldGVkVW5p
dENvdW50ID0gdmFsdWUuZ2V0KCkubG9uZ0xvbmdWYWx1ZTsNCisgICAgfSBlbHNlDQorICAgICAg
ICBbc3VwZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Om9iamVjdCBj
aGFuZ2U6Y2hhbmdlIGNvbnRleHQ6Y29udGV4dF07DQorfQ0KKw0KK0BlbmQNCisNCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwDQppbmRleCA3NDg4YzliMjEyZC4uZjc0MGY0YzZlYTggMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHANCkBAIC04
MTksNiArODE5LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25s
b2FkSUQgZG93bmxvYWRJRCkNCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxvYWQo
ZG93bmxvYWRJRCk7DQogfQ0KIA0KKyNpZiBQTEFURk9STShDT0NPQSkNCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQ0KK3sNCisgICAgZG93bmxvYWRNYW5hZ2VyKCkucHVibGlzaERvd25s
b2FkUHJvZ3Jlc3MoZG93bmxvYWRJRCwgdXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpKTsNCit9DQorI2VuZGlmDQorDQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQ0KIHsNCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7DQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oDQppbmRleCAxNzk4NjY4OTUzNy4uNWQ3
OTliNDMwNDkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaA0KQEAgLTI3NCw2ICsyNzQsOSBAQCBwcml2YXRlOg0KICAgICB2b2lkIGRvd25sb2Fk
UmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7DQogICAgIHZvaWQg
cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJik7DQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQor
I2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsNCisjZW5kaWYNCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7DQogICAgIHZvaWQgY29udGludWVEZWNpZGVQ
ZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24s
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsNCiANCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbg0KaW5kZXggOTRkOWMwMzQ2YmQuLmYxZTA0MzdkZmY2IDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbg0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbg0KQEAgLTQ5LDYgKzQ5LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgew0KICAgICBEb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkNCiAgICAgUmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KICAgICBDYW5jZWxE
b3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkNCisjaWYgUExBVEZPUk0oQ09D
T0EpDQorICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KKyNlbmRpZg0KIA0KICAgICBDb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpDQogICAgIENvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbg0KaW5kZXggY2FiNzk2ZGMxZWYuLjBjMTgxNmY5YjkxIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
UHJvY2Vzcy5zYi5pbg0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbg0KQEAgLTI5MCwzICsyOTAsNyBAQA0K
ICAgICAobG9jYWwgdGNwKQ0KICAgICAocmVtb3RlIHRjcCkpDQogDQorOzsgRm9yIHJlcG9ydGlu
ZyBwcm9ncmVzcyBmb3IgYWN0aXZlIGRvd25sb2FkcyA8cmRhcjovL3Byb2JsZW0vNDQ0MDU2NjE+
DQorKGFsbG93IG1hY2gtbG9va3VwDQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlByb2dy
ZXNzUmVwb3J0aW5nIikpDQorDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IgYi9Tb3Vy
Y2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQu
TmV0d29ya2luZy5zYg0KaW5kZXggZWUzOTEwNThmYzYuLjBhMzkxZGE3YzkzIDEwMDY0NA0KLS0t
IGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtpbmcuc2INCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRi
b3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiDQpAQCAtOTQsMyAr
OTQsNyBAQA0KICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5XaXJlbGVzc0NvZXhNYW5hZ2Vy
IikNCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2lmaS5tYW5hZ2VyIikNCiAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuaWRlbnRpdHlzZXJ2aWNlc2QuZW1iZWRkZWQuYXV0aCIpKQ0K
Kw0KKzs7IEZvciByZXBvcnRpbmcgcHJvZ3Jlc3MgZm9yIGFjdGl2ZSBkb3dubG9hZHMgPHJkYXI6
Ly9wcm9ibGVtLzQ0NDA1NjYxPg0KKyhhbGxvdyBtYWNoLWxvb2t1cA0KKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5Qcm9ncmVzc1JlcG9ydGluZyIpKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgNCmluZGV4IGFjZmQ4MzQzOTVjLi43MTg2
OTJkNjcyMyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWQuaA0KQEAgLTM2LDYgKzM2LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMCksIGlvcyg4LjApKQ0KIA0KIC0gKHZvaWQpY2FuY2VsOw0KIA0KKy0gKHZvaWQpcHVibGlz
aFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOw0KKw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgd2VhaykgV0tXZWJWaWV3ICpvcmlnaW5hdGluZ1dlYlZpZXc7DQogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TVVJMICo+ICpyZWRpcmVjdENoYWlu
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQ0KaW5kZXggMTZh
ZDgxMGI3Y2EuLjE2NjE2OWZlYTkwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0NCkBAIC00OSw2ICs0OSwxMSBAQCAtICh2b2lkKWNh
bmNlbA0KICAgICBfZG93bmxvYWQtPmNhbmNlbCgpOw0KIH0NCiANCistICh2b2lkKXB1Ymxpc2hQ
cm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKQ0KK3sNCisgICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jl
c3MoeyBVUkwgfSk7DQorfQ0KKw0KIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QNCiB7DQogICAg
IHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOw0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0KaW5kZXggZWZiMTE0
OTNjZmIuLmFlOTE4ZDNhMGM4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCkBAIC0xMDEsNiArMTAxLDIxIEBAIHZvaWQg
RG93bmxvYWRQcm94eTo6c2V0T3JpZ2luYXRpbmdQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkNCiAg
ICAgbV9vcmlnaW5hdGluZ1BhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKTsNCiB9DQogDQorI2lmIFBM
QVRGT1JNKENPQ09BKQ0KK3ZvaWQgRG93bmxvYWRQcm94eTo6cHVibGlzaFByb2dyZXNzKGNvbnN0
IFdlYkNvcmU6OlVSTCYgVVJMKQ0KK3sNCisgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQ0KKyAgICAg
ICAgcmV0dXJuOw0KKw0KKyAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nl
c3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7DQorICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOw0KKyAgICAgICAgYm9vbCBjcmVhdGVkU2FuZGJveEV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShVUkwuZmlsZVN5c3RlbVBh
dGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOw0KKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChjcmVhdGVkU2FuZGJveEV4dGVuc2lvbiwgY3JlYXRlZFNhbmRib3hF
eHRlbnNpb24pOw0KKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhtX2Rvd25sb2FkSUQsIFVSTCwgaGFu
ZGxlKSwgMCk7DQorICAgIH0NCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KIHsNCiAgICAgbV9yZXF1ZXN0ID0g
cmVxdWVzdDsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaA0KaW5kZXggZTA3YWFjODk2MDMuLmY5YjgyNDM2Y2U1IDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KQEAgLTk1
LDYgKzk1LDEwIEBAIHB1YmxpYzoNCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3lzdGVt
UHJldmlld0Rvd25sb2FkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKS5zeXN0ZW1QcmV2
aWV3UmVjdCgpOyB9DQogI2VuZGlmDQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lk
IHB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmKTsNCisjZW5kaWYNCisNCiBwcml2
YXRlOg0KICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQ
cm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOw0KIA0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQppbmRleCA4NjE0
Zjk3MzI4OS4uZDFkZTAwYzgzZjEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qDQpAQCAtMTA4Miw2ICsxMDgyLDggQEANCiAJCTYzMTA4Rjk5
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5Njcx
RjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsNCiAJ
CTYzNDg0MjUxMUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzQ4NDI0RjFGQjI2
RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyB9Ow0KIAkJNjM2MzUz
QTUxRTk4NThERjAwMDlGOEFGIC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5
MUU5NzBENjUwMDMwMTFENSAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCisJCTYzNzI4
MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNzI4MUEwMjFBREM3NDQwMDlFMERF
NiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLzsgfTsNCisJCTYzNzI4MUEzMjFBREM3NDQwMDlF
MERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9h
ZFByb2dyZXNzLm1tICovOyB9Ow0KIAkJNjNDMzJDMjYxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dl
b2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJ
CTYzQzMyQzI4MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMy
QzI3MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCAq
LzsgfTsNCiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgx
MkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCkBAIC0zNDk0LDYgKzM0OTYsOCBAQA0KIAkJ
NjMxMDhGOTUxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9Ow0KIAkJNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CisJCTYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tEb3dubG9hZFByb2dyZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07DQorCQk2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tEb3dubG9hZFByb2dyZXNzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0K
IAkJNjNDMzJDMjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjcxRTk4MTE5MDAwNjk5QkQw
IC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsNCkBAIC02ODE1LDYgKzY4MTksOCBAQA0KIAkJCWlzYSA9IFBCWEdy
b3VwOw0KIAkJCWNoaWxkcmVuID0gKA0KIAkJCQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyog
RG93bmxvYWRDb2NvYS5tbSAqLywNCisJCQkJNjM3MjgxQTAyMUFEQzc0NDAwOUUwREU2IC8qIFdL
RG93bmxvYWRQcm9ncmVzcy5oICovLA0KKwkJCQk2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyog
V0tEb3dubG9hZFByb2dyZXNzLm1tICovLA0KIAkJCSk7DQogCQkJcGF0aCA9IGNvY29hOw0KIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7DQpAQCAtOTA5Nyw2ICs5MTAzLDcgQEANCiAJCQkJQzBF
M0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTJE
NTAzNjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLA0KIAkJCQkyNjMxNzJDRjE4QjQ2OTQ5MDA2NUI5QzMgLyogTmF0aXZlV2ViVG91Y2hF
dmVudC5oIGluIEhlYWRlcnMgKi8sDQorCQkJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBX
S0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkxQURDQjg2QjE4OTgzMUIz
MDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkx
QUJDM0RGNjE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAq
LywNCiAJCQkJMUE2RkJBMkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNz
LmggaW4gSGVhZGVycyAqLywNCkBAIC0xMDc3NSw2ICsxMDc4Miw3IEBADQogCQkJCTJEOTJBNzk0
MjEyQjZBRDQwMEY0OTNGRCAvKiBOUFZhcmlhbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJ
CQlDREEyOUEyODFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJQ0RBMjlBMkExQ0JFQjY3QTAwOTAx
Q0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywNCisJCQkJNjM3MjgxQTMyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQ
cm9ncmVzcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQkyRDkxMzQ0OTIxMkNGOUYwMDAxMjhBRkQg
LyogUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQkxQThFRjRDQzEyNTI0MDM3MDBGNzA2
N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQkxQTJE
OTFBNjEyODFENzM5MDAxRUI5NjIgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tIGluIFNv
dXJjZXMgKi8sDQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
DQppbmRleCA2NzQ4OWYyNjkwOC4uZmM0NGIwZTNhZjcgMTAwNjQ0DQotLS0gYS9Ub29scy9DaGFu
Z2VMb2cNCisrKyBiL1Rvb2xzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MCBAQA0KKzIwMTgtMTEt
MjggIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisgICAgICAg
IEFkZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMNCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjENCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4NCisNCisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIHBy
b2dyZXNzLXB1Ymxpc2hpbmcgZnVuY3Rpb25hbGl0eSBpbiBhIHZhcmlldHkgb2Ygc2NlbmFyaW9z
Lg0KKw0KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoNCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZFByb2dyZXNzLm1tOiBBZGRlZC4NCisgICAgICAgICgrW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UHJvdG9jb2wgcmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6XSk6DQorICAgICAg
ICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHVucmVnaXN0ZXJQcm90b2NvbF0pOg0K
KyAgICAgICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVl
c3Q6XSk6DQorICAgICAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIGNhbm9uaWNh
bFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOg0KKyAgICAgICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQ
cm90b2NvbCByZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6dG9SZXF1ZXN0Ol0pOg0KKyAgICAgICAg
KC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBzdGFydExvYWRpbmddKToNCisgICAgICAg
ICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToNCisgICAgICAg
ICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGluaXRdKToNCisgICAgICAgICgtW0Rvd25s
b2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0TG9hZGluZ1dpdGhQcm90b2NvbDpdKToNCisgICAg
ICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHRlYXJEb3duXSk6DQorICAgICAgICAo
LVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkR2V0UHJvZ3Jlc3M6XSk6DQorICAgICAg
ICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkTG9zZVByb2dyZXNzXSk6DQorICAg
ICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJv
Z3Jlc3NdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRUb0xv
c2VQcm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3Rh
cnREb3dubG9hZDpleHBlY3RlZExlbmd0aDpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHB1Ymxpc2hQcm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9n
cmVzc1Rlc3RSdW5uZXIgcmVjZWl2ZURhdGE6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dy
ZXNzVGVzdFJ1bm5lciBmaW5pc2hEb3dubG9hZFRhc2tdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIGZhaWxEb3dubG9hZFRhc2tdKToNCisgICAgICAgICgtW0Rvd25s
b2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9u
XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yRG93bmxv
YWRGaW5pc2hlZF0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2Fp
dEZvckRvd25sb2FkQ2FuY2VsZWRdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdhaXRGb3JEb3dubG9hZEZhaWxlZF0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9n
cmVzc1Rlc3RSdW5uZXIgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdKToNCisgICAg
ICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6
b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNz
VGVzdFJ1bm5lciB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNp
c2lvbkhhbmRsZXI6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3
ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0p
Og0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkU3Rh
cnQ6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWQ6
ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciBfZG93bmxvYWREaWRGaW5pc2g6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dy
ZXNzVGVzdFJ1bm5lciBfZG93bmxvYWREaWRDYW5jZWw6XSk6DQorICAgICAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToNCisgICAg
ICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToNCisgICAgICAg
IChURVNUKToNCisNCiAyMDE4LTExLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPg0KIA0KICAgICAgICAgW2lPU01hY10gRHJvcHBpbmcgdGV4dCBzZWxlY3Rpb25zIGZy
b20gd2ViIGNvbnRlbnQgaW50byBlZGl0YWJsZSBlbGVtZW50cyBjcmFzaGVzIHRoZSB3ZWIgcHJv
Y2Vzcw0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCmluZGV4IGZmNDI5M2ZjYjNmLi4xMWQ2NDc4MWYy
ZCAxMDA2NDQNCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qDQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTMxNyw2ICszMTcsNyBAQA0KIAkJNjM1
NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1NEY0RDAxRjdD
M0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovOyB9Ow0KIAkJ
NjM1NkZCMjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTZGQjIxMUVDNEUwQkEw
MDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi87IH07DQogCQk2MzYzNTNBNzFFOTg2
NjVEMDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzYz
NTNBNjFFOTg2MTk0MDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1
bHQuaHRtbCAqLzsgfTsNCisJCTYzNzI4MUE3MjFBRTEzODYwMDlFMERFNiAvKiBEb3dubG9hZFBy
b2dyZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3MubW0gKi87IH07DQog
CQk2M0E2MUI4QjFGQUQyNTExMDBGMDY4ODUgLyogZGlzcGxheS1tb2RlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNBNjFCOEExRkFE
MjA0RDAwRjA2ODg1IC8qIGRpc3BsYXktbW9kZS5odG1sICovOyB9Ow0KIAkJNjNGNjY4MjIxRjk3
RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyog
QXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLzsgfTsNCiAJCTZCMzA2MTA2MjE4QTM3MjkwMEY1QTgw
MiAvKiBDbG9zaW5nV2ViVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCMzA2MTA1MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5t
bSAqLzsgfTsNCkBAIC0xNjU0LDYgKzE2NTUsNyBAQA0KIAkJNjM1NEY0RDAxRjdDM0FCNTAwRDg5
REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQogCQk2MzU2RkIyMTFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJsZUNvbnRlbnRSZWN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KIAkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9u
R2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KKwkJNjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJv
Z3Jlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb2dyZXNzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8qIGRp
c3BsYXktbW9kZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImRpc3BsYXktbW9kZS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVz
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTZCMzA2MTA1MjE4QTM3MjkwMEY1
QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsb3NpbmdX
ZWJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KQEAgLTI0MTIsNiArMjQxNCw3
IEBADQogCQkJCTUxOEVFNTE2MjBBNzhDREYwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5n
Lm1tICovLA0KIAkJCQk1MThFRTUxNzIwQTc4Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9h
ZGluZ1BsdWdpbi5tbSAqLywNCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERvd25s
b2FkLm1tICovLA0KKwkJCQk2MzcyODFBNjIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxvYWRQcm9n
cmVzcy5tbSAqLywNCiAJCQkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmREcm9w
VGVzdHMubW0gKi8sDQogCQkJCUExNTUwMjI4MUUwNTAyMEIwMEEyNEM1NyAvKiBEdXBsaWNhdGVD
b21wbGV0aW9uSGFuZGxlckNhbGxzLm1tICovLA0KIAkJCQlGNDREMDY0NjFGMzk1QzREMDAxQTBF
MjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLywNCkBAIC0zNzkyLDYgKzM3OTUsNyBAQA0KIAkJ
CQlGNDVCNjNGRTFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLA0KIAkJCQkzN0U3REQ2NDFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQk1NUE4MTdGQzIxODEwMEUw
MDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gaW4gU291cmNlcyAq
LywNCisJCQkJNjM3MjgxQTcyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3MubW0g
aW4gU291cmNlcyAqLywNCiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4IC8qIEFmZmluZVRy
YW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQw
IC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQky
REU3MUFGRTFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gaW4gU291cmNlcyAq
LywNCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkUHJvZ3Jlc3MubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw
MDAwMC4uYmE0NzkyYWU5ZmINCi0tLSAvZGV2L251bGwNCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQ0KQEAgLTAsMCArMSw1ODEg
QEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0K
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgImNvbmZp
Zy5oIg0KKw0KKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCINCisjaW1wb3J0ICJVdGlsaXRpZXMu
aCINCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4NCisjaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4NCisjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmg+DQorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPg0K
KyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPg0KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2Fk
Lmg+DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4NCisjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaD4NCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4N
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+DQorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorQGNsYXNzIERvd25sb2FkUHJvZ3Jlc3NUZXN0
UHJvdG9jb2w7DQorDQorZW51bSBjbGFzcyBEb3dubG9hZFN0YXJ0VHlwZSB7DQorICAgIENvbnZl
cnRMb2FkVG9Eb3dubG9hZCwNCisgICAgU3RhcnRGcm9tTmF2aWdhdGlvbkFjdGlvbiwNCisgICAg
U3RhcnRJblByb2Nlc3NQb29sLA0KK307DQorDQorQGludGVyZmFjZSBEb3dubG9hZFByb2dyZXNz
VGVzdFJ1bm5lciA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgX1dLRG93bmxvYWRE
ZWxlZ2F0ZT4NCisNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0Rvd25sb2Fk
ICpkb3dubG9hZDsNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TUHJvZ3Jlc3Mg
KnByb2dyZXNzOw0KKw0KKy0gKHZvaWQpc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOihEb3dubG9h
ZFByb2dyZXNzVGVzdFByb3RvY29sICopcHJvdG9jb2w7DQorDQorQGVuZA0KKw0KK0BpbnRlcmZh
Y2UgRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wNCitAZW5kDQor
DQorQGltcGxlbWVudGF0aW9uIERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wNCisNCitzdGF0
aWMgRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgKmN1cnJlbnRUZXN0UnVubmVyOw0KKw0KKysg
KHZvaWQpcmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6KERvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyICopdGVzdFJ1bm5lcg0KK3sNCisgICAgY3VycmVudFRlc3RSdW5uZXIgPSB0ZXN0UnVu
bmVyOw0KKyAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOnNlbGZdOw0KKyAgICBbV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6
QCJodHRwIl07DQorfQ0KKw0KKysgKHZvaWQpdW5yZWdpc3RlclByb3RvY29sDQorew0KKyAgICBj
dXJyZW50VGVzdFJ1bm5lciA9IG51bGxwdHI7DQorICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOkAiaHR0cCJdOw0KKyAgICBb
TlNVUkxQcm90b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6c2VsZl07DQorfQ0KKw0KKy8vIE1BUks6IE5T
VVJMUHJvdG9jb2wgTWV0aG9kcw0KKw0KKysgKEJPT0wpY2FuSW5pdFdpdGhSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0DQorew0KKyAgICByZXR1cm4gW3JlcXVlc3QuVVJMLnNjaGVtZSBj
YXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdID09IE5TT3JkZXJlZFNhbWU7DQorfQ0KKw0K
KysgKE5TVVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0DQorew0KKyAgICByZXR1cm4gcmVxdWVzdDsNCit9DQorDQorKyAoQk9PTCly
ZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKiliDQorew0KKyAgICByZXR1cm4gTk87DQorfQ0KKw0KKy0gKHZvaWQpc3RhcnRM
b2FkaW5nDQorew0KKyAgICBbY3VycmVudFRlc3RSdW5uZXIgc3RhcnRMb2FkaW5nV2l0aFByb3Rv
Y29sOnNlbGZdOw0KK30NCisNCistICh2b2lkKXN0b3BMb2FkaW5nDQorew0KK30NCisNCitAZW5k
DQorDQorc3RhdGljIHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09i
c2VydmluZ0NvbnRleHQ7DQorDQorQGltcGxlbWVudGF0aW9uIERvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHsNCisgICAgUmV0YWluUHRyPE5TVVJMPiBtX3Byb2dyZXNzVVJMOw0KKyAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gbV93ZWJWaWV3Ow0KKyAgICBSZXRhaW5QdHI8aWQ+IG1fcHJv
Z3Jlc3NTdWJzY3JpYmVyOw0KKyAgICBSZXRhaW5QdHI8TlNQcm9ncmVzcz4gbV9wcm9ncmVzczsN
CisgICAgUmV0YWluUHRyPF9XS0Rvd25sb2FkPiBtX2Rvd25sb2FkOw0KKyAgICBSZXRhaW5QdHI8
RG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbD4gbV9wcm90b2NvbDsNCisgICAgQmxvY2tQdHI8
dm9pZCh2b2lkKT4gbV91bnB1Ymxpc2hpbmdCbG9jazsNCisgICAgRG93bmxvYWRTdGFydFR5cGUg
bV9zdGFydFR5cGU7DQorICAgIE5TSW50ZWdlciBtX2V4cGVjdGVkTGVuZ3RoOw0KKyAgICBib29s
IG1faGFzUHJvZ3Jlc3M7DQorICAgIGJvb2wgbV9sb3N0UHJvZ3Jlc3M7DQorICAgIGJvb2wgbV9k
b3dubG9hZFN0YXJ0ZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9u
Ow0KKyAgICBib29sIG1fZG93bmxvYWRGaW5pc2hlZDsNCisgICAgYm9vbCBtX2Rvd25sb2FkQ2Fu
Y2VsZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZEZhaWxlZDsNCisgICAgYm9vbCBtX2hhc1VwZGF0
ZWRDb21wbGV0ZWRVbml0Q291bnQ7DQorfQ0KKw0KKy0gKGluc3RhbmNldHlwZSlpbml0DQorew0K
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOw0KKw0KKyAgICBbRG93bmxvYWRQcm9ncmVzc1Rlc3RQ
cm90b2NvbCByZWdpc3RlclByb3RvY29sRm9yVGVzdFJ1bm5lcjpzZWxmXTsNCisNCisgICAgTlNT
dHJpbmcgKmZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb3dubG9hZC1w
cm9ncmVzcy0lQCIsIFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ107DQorICAgIG1fcHJvZ3Jlc3NV
UkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV0gaXNEaXJlY3Rvcnk6Tk9dOw0KKw0K
KyAgICBjdXJyZW50VGVzdFJ1bm5lciA9IHNlbGY7DQorDQorICAgIG1fdW5wdWJsaXNoaW5nQmxv
Y2sgPSBCbG9ja1B0cjx2b2lkKHZvaWQpPjo6ZnJvbUNhbGxhYmxlKFtzZWxmXSB7DQorICAgICAg
ICBbc2VsZiBfZGlkTG9zZVByb2dyZXNzXTsNCisgICAgfSkuZ2V0KCk7DQorDQorICAgIHJldHVy
biBzZWxmOw0KK30NCisNCistIChfV0tEb3dubG9hZCAqKWRvd25sb2FkDQorew0KKyAgICByZXR1
cm4gbV9kb3dubG9hZC5nZXQoKTsNCit9DQorDQorLSAoTlNQcm9ncmVzcyAqKXByb2dyZXNzDQor
ew0KKyAgICByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsNCit9DQorDQorLSAodm9pZClzdGFydExv
YWRpbmdXaXRoUHJvdG9jb2w6KERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgKilwcm90b2Nv
bA0KK3sNCisgICAgbV9wcm90b2NvbCA9IHByb3RvY29sOw0KKw0KKyAgICBhdXRvIHJlc3BvbnNl
ID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnByb3RvY29sLnJl
cXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24veC10ZXN0LWZpbGUiIGV4cGVjdGVkQ29u
dGVudExlbmd0aDptX2V4cGVjdGVkTGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bnVsbHB0cl0pOw0K
KyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2w6bV9wcm90b2NvbC5nZXQo
KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgY2FjaGVTdG9yYWdlUG9saWN5Ok5T
VVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07DQorfQ0KKw0KKy0gKHZvaWQpdGVhckRvd24NCit7
DQorICAgIGlmIChtX3dlYlZpZXcpIHsNCisgICAgICAgIG1fd2ViVmlldy5nZXQoKS5jb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gbnVsbHB0cjsNCisgICAgICAg
IFttX3dlYlZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107DQorICAgICAgICBtX3dlYlZp
ZXcgPSBudWxscHRyOw0KKyAgICB9DQorDQorICAgIGlmIChtX3Byb2dyZXNzU3Vic2NyaWJlcikg
ew0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisgICAgICAgIFtOU1Byb2dy
ZXNzIF9yZW1vdmVTdWJzY3JpYmVyOm1fcHJvZ3Jlc3NTdWJzY3JpYmVyLmdldCgpXTsNCisjZWxz
ZQ0KKyAgICAgICAgW05TUHJvZ3Jlc3MgcmVtb3ZlU3Vic2NyaWJlcjptX3Byb2dyZXNzU3Vic2Ny
aWJlci5nZXQoKV07DQorI2VuZGlmDQorICAgICAgICBtX3Byb2dyZXNzU3Vic2NyaWJlciA9IG51
bGxwdHI7DQorICAgIH0NCisNCisgICAgbV9wcm9ncmVzcyA9IG51bGxwdHI7DQorICAgIG1fZG93
bmxvYWQgPSBudWxscHRyOw0KKyAgICBtX3Byb3RvY29sID0gbnVsbHB0cjsNCisgICAgbV91bnB1
Ymxpc2hpbmdCbG9jayA9IG51bGxwdHI7DQorDQorICAgIFtEb3dubG9hZFByb2dyZXNzVGVzdFBy
b3RvY29sIHVucmVnaXN0ZXJQcm90b2NvbF07DQorfQ0KKw0KKy0gKHZvaWQpX2RpZEdldFByb2dy
ZXNzOihOU1Byb2dyZXNzICopcHJvZ3Jlc3MNCit7DQorICAgIEFTU0VSVCghbV9wcm9ncmVzcyk7
DQorICAgIG1fcHJvZ3Jlc3MgPSBwcm9ncmVzczsNCisgICAgW3Byb2dyZXNzIGFkZE9ic2VydmVy
OnNlbGYgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3VudCIgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6cHJvZ3Jlc3NPYnNlcnZpbmdDb250ZXh0XTsNCisg
ICAgbV9oYXNQcm9ncmVzcyA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2RpZExvc2VQcm9ncmVz
cw0KK3sNCisgICAgQVNTRVJUKG1fcHJvZ3Jlc3MpOw0KKyAgICBbbV9wcm9ncmVzcy5nZXQoKSBy
ZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiXTsNCisg
ICAgbV9wcm9ncmVzcyA9IG51bGxwdHI7DQorICAgIG1fbG9zdFByb2dyZXNzID0gdHJ1ZTsNCit9
DQorDQorLSAodm9pZClzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3MNCit7DQorICAgIGlmICgh
bV9wcm9ncmVzc1N1YnNjcmliZXIpIHsNCisgICAgICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2Jq
Q1B0cjxEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lcj4geyBzZWxmIH07DQorICAgICAgICBhdXRv
IHB1Ymxpc2hpbmdIYW5kbGVyID0gQmxvY2tQdHI8TlNQcm9ncmVzc1VucHVibGlzaGluZ0hhbmRs
ZXIoTlNQcm9ncmVzcyAqKT46OmZyb21DYWxsYWJsZShbd2Vha1NlbGZdKE5TUHJvZ3Jlc3MgKnBy
b2dyZXNzKSB7DQorICAgICAgICAgICAgaWYgKGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdl
dCgpKSB7DQorICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmLmdldCgpIF9kaWRHZXRQcm9ncmVz
czpwcm9ncmVzc107DQorICAgICAgICAgICAgICAgIHJldHVybiBzdHJvbmdTZWxmLT5tX3VucHVi
bGlzaGluZ0Jsb2NrLmdldCgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TlNQcm9ncmVzc1VucHVibGlzaGluZ0hhbmRsZXI+KG5pbCk7DQorICAgICAg
ICB9KTsNCisNCisjaWYgVVNFKE5TUFJPR1JFU1NfUFVCTElTSElOR19TUEkpDQorICAgICAgICBt
X3Byb2dyZXNzU3Vic2NyaWJlciA9IFtOU1Byb2dyZXNzIF9hZGRTdWJzY3JpYmVyRm9yRmlsZVVS
TDptX3Byb2dyZXNzVVJMLmdldCgpIHdpdGhQdWJsaXNoaW5nSGFuZGxlcjpwdWJsaXNoaW5nSGFu
ZGxlci5nZXQoKV07DQorI2Vsc2UNCisgICAgICAgIG1fcHJvZ3Jlc3NTdWJzY3JpYmVyID0gW05T
UHJvZ3Jlc3MgYWRkU3Vic2NyaWJlckZvckZpbGVVUkw6bV9wcm9ncmVzc1VSTC5nZXQoKSB3aXRo
UHVibGlzaGluZ0hhbmRsZXI6cHVibGlzaGluZ0hhbmRsZXIuZ2V0KCldOw0KKyNlbmRpZg0KKyAg
ICB9DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9oYXNQcm9ncmVzcyk7DQorfQ0K
Kw0KKy0gKHZvaWQpd2FpdFRvTG9zZVByb2dyZXNzDQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJm1fbG9zdFByb2dyZXNzKTsNCit9DQorDQorLSAodm9pZClzdGFydERvd25sb2Fk
OihEb3dubG9hZFN0YXJ0VHlwZSlzdGFydFR5cGUgZXhwZWN0ZWRMZW5ndGg6KE5TSW50ZWdlcill
eHBlY3RlZExlbmd0aA0KK3sNCisgICAgbV9zdGFydFR5cGUgPSBzdGFydFR5cGU7DQorICAgIG1f
ZXhwZWN0ZWRMZW5ndGggPSBleHBlY3RlZExlbmd0aDsNCisNCisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsNCisg
ICAgbV93ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsNCisgICAg
bV93ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHNlbGY7DQorICAgIG1fd2ViVmll
dy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gc2Vs
ZjsNCisNCisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10g
aW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZmlsZSJdXSk7DQorDQor
ICAgIHN3aXRjaCAoc3RhcnRUeXBlKSB7DQorICAgIGNhc2UgRG93bmxvYWRTdGFydFR5cGU6OkNv
bnZlcnRMb2FkVG9Eb3dubG9hZDoNCisgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRG
cm9tTmF2aWdhdGlvbkFjdGlvbjoNCisgICAgICAgIFttX3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdC5nZXQoKV07DQorICAgICAgICBicmVhazsNCisgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlw
ZTo6U3RhcnRJblByb2Nlc3NQb29sOg0KKyAgICAgICAgW21fd2ViVmlldy5nZXQoKS5jb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07DQor
ICAgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
Jm1fZG93bmxvYWRTdGFydGVkKTsNCit9DQorDQorLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3MNCit7
DQorICAgIEFTU0VSVChtX2Rvd25sb2FkKTsNCisNCisgICAgW21fZG93bmxvYWQuZ2V0KCkgcHVi
bGlzaFByb2dyZXNzQXRVUkw6bV9wcm9ncmVzc1VSTC5nZXQoKV07DQorfQ0KKw0KKy0gKHZvaWQp
cmVjZWl2ZURhdGE6KE5TSW50ZWdlcilsZW5ndGgNCit7DQorICAgIGF1dG8gZGF0YSA9IGFkb3B0
TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7DQorICAgIHdoaWxlIChsZW5ndGgtLSA+
IDApIHsNCisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9ICdBJzsNCisgICAgICAgIFtkYXRhLmdl
dCgpIGFwcGVuZEJ5dGVzOnN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPigmYnl0ZSkgbGVuZ3RoOjFd
Ow0KKyAgICB9DQorDQorICAgIFttX3Byb3RvY29sLmdldCgpLmNsaWVudCBVUkxQcm90b2NvbDpt
X3Byb3RvY29sLmdldCgpIGRpZExvYWREYXRhOmRhdGEuZ2V0KCldOw0KK30NCisNCistICh2b2lk
KWZpbmlzaERvd25sb2FkVGFzaw0KK3sNCisgICAgW21fcHJvdG9jb2wuZ2V0KCkuY2xpZW50IFVS
TFByb3RvY29sRGlkRmluaXNoTG9hZGluZzptX3Byb3RvY29sLmdldCgpXTsNCit9DQorDQorLSAo
dm9pZClmYWlsRG93bmxvYWRUYXNrDQorew0KKyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQg
VVJMUHJvdG9jb2w6bV9wcm90b2NvbC5nZXQoKSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25u
ZWN0aW9uTG9zdCB1c2VySW5mbzpudWxscHRyXV07DQorfQ0KKw0KKy0gKHZvaWQpd2FpdEZvckRv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24NCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmbV9kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKTsNCit9DQorDQorLSAodm9pZCl3
YWl0Rm9yRG93bmxvYWRGaW5pc2hlZA0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZtX2Rvd25sb2FkRmluaXNoZWQpOw0KK30NCisNCistICh2b2lkKXdhaXRGb3JEb3dubG9hZENh
bmNlbGVkDQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxvYWRDYW5j
ZWxlZCk7DQorfQ0KKw0KKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRmFpbGVkDQorew0KKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxvYWRGYWlsZWQpOw0KK30NCisNCistIChp
bnQ2NF90KXdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50DQorew0KKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJm1faGFzVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudCk7DQorICAg
IG1faGFzVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudCA9IGZhbHNlOw0KKw0KKyAgICByZXR1cm4g
bV9wcm9ncmVzcy5nZXQoKS5jb21wbGV0ZWRVbml0Q291bnQ7DQorfQ0KKw0KKy0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmpl
Y3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdl
IGNvbnRleHQ6KHZvaWQgKiljb250ZXh0DQorew0KKyAgICBpZiAoY29udGV4dCA9PSBwcm9ncmVz
c09ic2VydmluZ0NvbnRleHQpIHsNCisgICAgICAgIEVYUEVDVF9FUShvYmplY3QsIG1fcHJvZ3Jl
c3MuZ2V0KCkpOw0KKyAgICAgICAgRVhQRUNUX1NUUkVRKGtleVBhdGguVVRGOFN0cmluZywgImNv
bXBsZXRlZFVuaXRDb3VudCIpOw0KKyAgICAgICAgbV9oYXNVcGRhdGVkQ29tcGxldGVkVW5pdENv
dW50ID0gdHJ1ZTsNCisgICAgfSBlbHNlDQorICAgICAgICBbc3VwZXIgb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Om9iamVjdCBjaGFuZ2U6Y2hhbmdlIGNvbnRleHQ6Y29u
dGV4dF07DQorfQ0KKw0KKy8vIE1BUks6IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gTWV0aG9kcw0K
Kw0KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3Bv
bnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kp
KWRlY2lzaW9uSGFuZGxlcg0KK3sNCisgICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3Rh
cnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQpDQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIo
X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOw0KKyAgICBlbHNlDQor
ICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7
DQorfQ0KKw0KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0
aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlk
ZWNpc2lvbkhhbmRsZXINCit7DQorICAgIGlmIChtX3N0YXJ0VHlwZSA9PSBEb3dubG9hZFN0YXJ0
VHlwZTo6U3RhcnRGcm9tTmF2aWdhdGlvbkFjdGlvbikNCisgICAgICAgIGRlY2lzaW9uSGFuZGxl
cihfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQpOw0KKyAgICBlbHNlDQorICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOw0KK30NCisN
CisvLyBNQVJLOiA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gTWV0aG9kcw0KKw0KKy0gKHZvaWQpX2Rv
d25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQNCit7DQorICAgIEFTU0VSVCgh
bV9kb3dubG9hZFN0YXJ0ZWQpOw0KKyAgICBBU1NFUlQoIW1fZG93bmxvYWQpOw0KKw0KKyAgICBt
X2Rvd25sb2FkID0gZG93bmxvYWQ7DQorICAgIG1fZG93bmxvYWRTdGFydGVkID0gdHJ1ZTsNCit9
DQorDQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRl
RGVzdGluYXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24NCit7DQorICAgIEVYUEVDVF9FUShk
b3dubG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7DQorICAgIG1fZG93bmxvYWREaWRDcmVhdGVEZXN0
aW5hdGlvbiA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkDQorew0KKyAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxv
YWQuZ2V0KCkpOw0KKyAgICBtX2Rvd25sb2FkRmluaXNoZWQgPSB0cnVlOw0KK30NCisNCistICh2
b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAg
RVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdldCgpKTsNCisgICAgbV9kb3dubG9hZENh
bmNlbGVkID0gdHJ1ZTsNCit9DQorDQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yDQorew0KKyAgICBFWFBF
Q1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOw0KKyAgICBtX2Rvd25sb2FkRmFpbGVk
ID0gdHJ1ZTsNCit9DQorDQorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmls
ZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5T
U3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXINCit7DQorICAgIEVYUEVDVF9F
UShkb3dubG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7DQorDQorICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOw0KKyAgICBSZXRhaW5QdHI8TlNTdHJp
bmcgKj4gcGF0aCA9IChOU1N0cmluZyAqKVdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7DQorICAgIEVYUEVDVF9UUlVFKGZp
bGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSk7DQorICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsNCisN
CisgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBwYXRoLmdldCgpKTsNCit9DQorDQorQGVuZA0K
Kw0KKy8vIEVuZC10by1lbmQgdGVzdCBvZiBzdWJzY3JpYmluZyB0byBwcm9ncmVzcyBvbiBhIHN1
Y2Nlc3NmdWwgZG93bmxvYWQuIFRoZSBjbGllbnQNCisvLyBzaG91bGQgYmUgYWJsZSB0byByZWNl
aXZlIGFuIE5TUHJvZ3Jlc3MgdGhhdCBpcyB1cGRhdGVkIGFzIHRoZSBkb3dubG9hZCBtYWtlcw0K
Ky8vIHByb2dyZXNzLCBhbmQgdGhlIE5TUHJvZ3Jlc3Mgc2hvdWxkIGJlIHVucHVibGlzaGVkIHdo
ZW4gdGhlIGRvd25sb2FkIGZpbmlzaGVzLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgQmFzaWNT
dWJzY3JpcHRpb25BbmRQcm9ncmVzc1VwZGF0ZXMpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIg
PSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6
Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNj
cmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2Vp
dmVEYXRhOjUwXTsNCisgICAgRVhQRUNUX0VRKFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JVcGRh
dGVkQ29tcGxldGVkVW5pdENvdW50XSwgNTApOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5n
ZXQoKS5wcm9ncmVzcy5mcmFjdGlvbkNvbXBsZXRlZCwgLjUpOw0KKw0KKyAgICBbdGVzdFJ1bm5l
ci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorICAgIEVYUEVDVF9FUShbdGVzdFJ1bm5lci5nZXQo
KSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudF0sIDEwMCk7DQorICAgIEVYUEVDVF9F
USh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLmZyYWN0aW9uQ29tcGxldGVkLCAxKTsNCisNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93
bl07DQorfQ0KKw0KKy8vIFNpbWlsYXIgdGVzdCBhcyBiZWZvcmUsIGJ1dCBpbml0aWF0aW5nIHRo
ZSBkb3dubG9hZCBiZWZvcmUgcmVjZWl2aW5nIGl0cyByZXNwb25zZS4NCitURVNUKERvd25sb2Fk
UHJvZ3Jlc3MsIFN0YXJ0RG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbikNCit7DQorICAgIGF1
dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxv
Y10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25s
b2FkU3RhcnRUeXBlOjpTdGFydEZyb21OYXZpZ2F0aW9uQWN0aW9uIGV4cGVjdGVkTGVuZ3RoOjEw
MF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHJlY2VpdmVEYXRhOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlz
aERvd25sb2FkVGFza107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZp
bmlzaGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCitURVNUKERvd25sb2Fk
UHJvZ3Jlc3MsIFN0YXJ0RG93bmxvYWRJblByb2Nlc3NQb29sKQ0KK3sNCisgICAgYXV0byB0ZXN0
UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0
XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFy
dFR5cGU6OlN0YXJ0SW5Qcm9jZXNzUG9vbCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVz
dFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBz
dWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNl
aXZlRGF0YToxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2td
Ow0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAg
IFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gSWYgdGhlIGRvd25sb2FkIGlzIGNhbmNl
bGVkLCB0aGUgcHJvZ3Jlc3Mgc2hvdWxkIGJlIHVucHVibGlzaGVkLg0KK1RFU1QoRG93bmxvYWRQ
cm9ncmVzcywgTG9zZVByb2dyZXNzV2hlbkRvd25sb2FkSXNDYW5jZWxlZCkNCit7DQorICAgIGF1
dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxv
Y10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25s
b2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKS5kb3dubG9hZCBj
YW5jZWxdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRDYW5jZWxlZF07
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gSWYgdGhlIGRvd25sb2FkIGZh
aWxzLCB0aGUgcHJvZ3Jlc3Mgc2hvdWxkIGJlIHVucHVibGlzaGVkLg0KK1RFU1QoRG93bmxvYWRQ
cm9ncmVzcywgTG9zZVByb2dyZXNzV2hlbkRvd25sb2FkRmFpbHMpDQorew0KKyAgICBhdXRvIHRl
c3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGlu
aXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0
YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAg
IFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgp
IHJlY2VpdmVEYXRhOjUwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmFpbERvd25sb2FkVGFz
a107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZhaWxlZF07DQorICAg
IFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gQ2FuY2VsaW5nIHRoZSBwcm9ncmVzcyBz
aG91bGQgY2FuY2VsIHRoZSBkb3dubG9hZC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIENhbmNl
bERvd25sb2FkV2hlblByb2dyZXNzSXNDYW5jZWxlZCkNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5l
ciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0K
Kw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBl
OjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RS
dW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vi
c2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2
ZURhdGE6NTBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcyBjYW5jZWxdOw0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRDYW5jZWxlZF07DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gUHVibGlzaGluZyBwcm9ncmVzcyBvbiBhIGRvd25s
b2FkIGFmdGVyIGl0IGhhcyBmaW5pc2hlZCBzaG91bGQgYmUgYSBzYWZlIG5vLW9wLg0KK1RFU1Qo
RG93bmxvYWRQcm9ncmVzcywgUHVibGlzaFByb2dyZXNzQWZ0ZXJEb3dubG9hZEZpbmlzaGVkKQ0K
K3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93
bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCBleHBlY3RlZExl
bmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YToxMDBdOw0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5l
ci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgp
IHB1Ymxpc2hQcm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsN
Cit9DQorDQorLy8gVGVzdCB0aGUgYmVoYXZpb3Igb2YgYSBkb3dubG9hZCBvZiB1bmtub3duIGxl
bmd0aC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIEluZGV0ZXJtaW5hdGVEb3dubG9hZFNpemUp
DQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rl
c3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnRE
b3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVk
TGVuZ3RoOk5TVVJMUmVzcG9uc2VVbmtub3duTGVuZ3RoXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0
KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5k
V2FpdEZvclByb2dyZXNzXTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jl
c3MudG90YWxVbml0Q291bnQsIC0xKTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2
ZURhdGE6NTBdOw0KKyAgICBFWFBFQ1RfRVEoW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvclVwZGF0
ZWRDb21wbGV0ZWRVbml0Q291bnRdLCA1MCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdl
dCgpLnByb2dyZXNzLmZyYWN0aW9uQ29tcGxldGVkLCAwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RS
dW5uZXIuZ2V0KCkucHJvZ3Jlc3MudG90YWxVbml0Q291bnQsIC0xKTsNCisNCisgICAgW3Rlc3RS
dW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkg
d2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0VG9M
b3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93bl07DQorfQ0K
Kw0KKy8vIFRlc3QgdGhlIGJlaGF2aW9yIHdoZW4gYSBkb3dubG9hZCBjb250aW51ZXMgcmV0dXJu
aW5nIGRhdGEgYmV5b25kIGl0cyBleHBlY3RlZCBsZW5ndGguDQorVEVTVChEb3dubG9hZFByb2dy
ZXNzLCBFeHRyYURhdGEpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rv
d25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxp
c2hQcm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQ
cm9ncmVzc107DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjE1MF07DQor
ICAgIEVYUEVDVF9FUShbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVu
aXRDb3VudF0sIDE1MCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNz
LmZyYWN0aW9uQ29tcGxldGVkLCAxLjUpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5p
c2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRG
aW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQor
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gQ2xpZW50cyBz
aG91bGQgYmUgYWJsZSB0byBwdWJsaXNoIHByb2dyZXNzIG9uIGEgZG93bmxvYWQgdGhhdCBoYXMg
YWxyZWFkeSBzdGFydGVkLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgUHVibGlzaFByb2dyZXNz
T25QYXJ0aWFsRG93bmxvYWQpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtb
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RS
dW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRU
b0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJl
Y2VpdmVEYXRhOjUwXTsNCisNCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHRoZSBkYXRhIHRhc2sg
aGFzIGJlY29tZSBhIGRvd25sb2FkIHRhc2sgc28gdGhhdCB3ZSB0ZXN0DQorICAgIC8vIHRlbGxp
bmcgYSBsaXZlIERvd25sb2FkLCBub3QgYSBQZW5kaW5nRG93bmxvYWQsIHRvIHB1Ymxpc2ggaXRz
IHByb2dyZXNzLg0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWREaWRDcmVh
dGVEZXN0aW5hdGlvbl07DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQcm9ncmVz
c107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9ncmVzc107
DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLmNvbXBsZXRlZFVuaXRD
b3VudCwgNTApOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQor
ICAgIEVYUEVDVF9FUShbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVu
aXRDb3VudF0sIDEwMCk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2Fk
VGFza107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rl
c3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQNCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356020</attachid>
            <date>2018-11-29 10:33:27 -0800</date>
            <delta_ts>2018-11-29 16:38:37 -0800</delta_ts>
            <desc>Patch v5</desc>
            <filename>file_192021.txt</filename>
            <type>text/plain</type>
            <size>75963</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGUxNzJlOTY3MzQxMWQ2YTA4OTI5MGI3ODRjNzIyM2Q0ZWY4YWU5ZDkNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFdlZCBOb3Yg
MjggMjE6Mjg6NTcgMjAxOCAtMDgwMA0KDQogICAgQWRkIFNQSSB0byBwdWJsaXNoIE5TUHJvZ3Jl
c3Mgb24gYWN0aXZlIGRvd25sb2Fkcw0KICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIwMjENCiAgICByZGFyOi8vcHJvYmxlbS80NDQwNTY2MQ0KICAgIA0KICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KICAgIA0KICAgIFNvdXJjZS9XZWJDb3JlL1BB
TDoNCiAgICANCiAgICBBZGQgYW4gU1BJIGhlYWRlciBmb3IgTlNQcm9ncmVzcydzIHB1Ymxpc2hp
bmcgYW5kIHVucHVibGlzaGluZyBtZXRob2RzLiBJbiBvbGRlcg0KICAgIFNES3MsIHRoZXNlIG1l
dGhvZHMgYXJlIGV4cGxpY2l0bHkgdW5hdmFpbGFibGUgb24gcGxhdGZvcm1zIG90aGVyIHRoYW4g
bWFjT1MsDQogICAgd2l0aCB1bmRlcnNjb3JlLXByZWZpeGVkIHZlcnNpb25zIGF2YWlsYWJsZSBh
cyBTUEkuIEluIG5ld2VyIFNES3MsIHRoZSB1bnByZWZpeGVkDQogICAgdmVyc2lvbnMgYXJlIFNQ
SSBhbmQgdGhlIHByZWZpeGVkIHZlcnNpb25zIGFyZSBkZXByZWNhdGVkLg0KICAgIA0KICAgICog
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQogICAgKiBwYWwvc3BpL2NvY29hL05TUHJv
Z3Jlc3NTUEkuaDoNCiAgICANCiAgICBTb3VyY2UvV2ViS2l0Og0KICAgIA0KICAgIE1ha2UgaXQg
cG9zc2libGUgZm9yIGNsaWVudHMgdG8gYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvIG1vbml0b3Ig
dGhlIHN0YXRlIG9mIGFjdGl2ZQ0KICAgIGRvd25sb2Fkcy4gT24gQ29jb2EgcGxhdGZvcm1zLCB0
aGlzIGNhbiBiZSBkb25lIGJ5IGNyZWF0aW5nIGFuIE5TUHJvZ3Jlc3MsIHB1Ymxpc2hpbmcNCiAg
ICBpdCBvbiBhbiBhcHByb3ByaWF0ZSBmaWxlIFVSTCAocG90ZW50aWFsbHkgYSBkaWZmZXJlbnQg
ZmlsZSBVUkwgdGhhbiB3aGVyZSB0aGUgZG93bmxvYWQNCiAgICBkYXRhIGlzIGJlaW5nIHdyaXR0
ZW4pLCB1cGRhdGluZyBwcm9wZXJ0aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9n
cmVzcywgYW5kDQogICAgd2lyaW5nIHVwIGEgY2FuY2VsbGF0aW9uIGhhbmRsZXIgdGhhdCBhbGxv
d3MgaXQgdG8gYmUgcmVtb3RlbHkgY2FuY2VsZWQuIEludGVyZXN0ZWQNCiAgICBjbGllbnRzIGNh
biB0aGVuIHN1YnNjcmliZSB0byBwcm9ncmVzcyBvbiB0aGF0IFVSTCBhbmQgcmVjZWl2ZSBhIHBy
b3h5IHRvIHRoZSBwcm9ncmVzcw0KICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hlcy4NCiAgICANCiAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6
RG93bmxvYWQ6On5Eb3dubG9hZCk6DQogICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVz
dHJveURvd25sb2FkKToNCiAgICAgICAgQWRkIGEgcGxhdGZvcm0tY3VzdG9taXphYmxlIGhvb2sg
Zm9yIGRlc3RydWN0aW5nIHRoZSBEb3dubG9hZC4gRG93bmxvYWRDb2NvYS5tbQ0KICAgICAgICB3
aWxsIGludGVyYWN0IHdpdGggaXRzIE9iamVjdGl2ZS1DIE5TUHJvZ3Jlc3MgaW5zdGFuY2UgYXQg
dGhpcyBwb2ludC4NCiAgICANCiAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6
DQogICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFz
ayk6DQogICAgICAgIFNlZSBjb21tZW50cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4N
CiAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToN
CiAgICAgICAgSWYgdGhlIHByb3ZpZGVkIGRvd25sb2FkSUQgY29ycmVzcG9uZHMgdG8gYSBub24t
UGVuZGluZyBEb3dubG9hZCwgaGFuZCB0aGUgVVJMDQogICAgICAgIGFuZCBhIG1hdGNoaW5nIHNh
bmRib3ggZXh0ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRlIGl0cyBwcm9n
cmVzcy4NCiAgICAgICAgT3RoZXJ3aXNlLCBzdG9yZSB0aGUgVVJMIGFuZCBzYW5kYm94IGV4dGVu
c2lvbiBvbiB0aGUgUGVuZGluZ0Rvd25sb2FkIHRvIGJlIHVzZWQNCiAgICAgICAgbGF0ZXIgd2hl
biB0aGUgZnVsbCBEb3dubG9hZCBpcyBjcmVhdGVkLiBXaGVuIHRoaXMgaGFwcGVucywgZGF0YVRh
c2tCZWNhbWVEb3dubG9hZFRhc2soKQ0KICAgICAgICB3aWxsIHRlbGwgdGhlIFBlbmRpbmdEb3du
bG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJlY29tZS4gVGhlIFBlbmRpbmdEb3dubG9h
ZA0KICAgICAgICB3aWxsIHRoZW4gcmVsYXkgdGhlIHByb2dyZXNzIFVSTCBhbmQgc2FuZGJveCBl
eHRlbnNpb24gdG8gdGhlIERvd25sb2FkLg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHA6DQogICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpwdWJs
aXNoUHJvZ3Jlc3MpOg0KICAgICAgICBTdG9yZSB0aGUgcHJvZ3Jlc3MgaW5mbyBmb3IgbGF0ZXIg
dXNlLCB3aGVuIHRoZSBwcm9wZXIgRG93bmxvYWQgaXMgY3JlYXRlZC4NCiAgICAoV2ViS2l0OjpQ
ZW5kaW5nRG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKToNCiAgICAgICAgSWYgdGhlcmUgd2Fz
IGEgcHJvZ3Jlc3MgVVJMIHByb3ZpZGVkIGVhcmxpZXIsIHRlbGwgdGhlIERvd25sb2FkIGNvcnJl
c3BvbmRpbmcgdG8gdGhpcw0KICAgICAgICBQZW5kaW5nRG93bmxvYWQgdG8gcHVibGlzaCBpdHMg
cHJvZ3Jlc3MgdXNpbmcgdGhhdCBVUkwuDQogICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
Y29jb2EvRG93bmxvYWRDb2NvYS5tbToNCiAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1E
ZXN0cm95RG93bmxvYWQpOg0KICAgICAgICBXaGVuIHRoZSBEb3dubG9hZCBpcyBkZXN0cm95ZWQg
KGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZhaWxzLCBvciBpcyBjYW5jZWxlZCks
DQogICAgICAgIHVucHVibGlzaCB0aGUgcHJvZ3Jlc3MsIHNpbmNlIHRoZXJlIGlzIG5vIGxvbmdl
ciBhbnkgYWN0aXZpdHkgdG8gcmVwb3J0Lg0KICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwdWJsaXNo
UHJvZ3Jlc3MpOg0KICAgICAgICBSZXNvbHZlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiwgY3JlYXRl
IGEgcHJvZ3Jlc3MgY29uZmlndXJlZCB0byByZWZsZWN0IHRoZSBwcm9ncmVzcyBvZg0KICAgICAg
ICB0aGlzIERvd25sb2FkJ3MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrLCBhbmQgcHVibGlzaCBp
dCBhdCB0aGUgZ2l2ZW4gZmlsZSBVUkwuDQogICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dyZXNzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLg0KICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5tbTogQWRkZWQuDQogICAgKC1b
V0tEb3dubG9hZFByb2dyZXNzIGluaXRXaXRoRG93bmxvYWRUYXNrOmRvd25sb2FkOlVSTDpzYW5k
Ym94RXh0ZW5zaW9uOl0pOg0KICAgICAgICBDb25maWd1cmUgdGhpcyBwcm9ncmVzcywgc3RhcnQg
b2JzZXJ2aW5nIHByb3BlcnRpZXMgb24gdGhlIGRvd25sb2FkIHRhc2sgdGhhdCB0aGlzDQogICAg
ICAgIHByb2dyZXNzIHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxhdGlvbiBo
YW5kbGVyIG9mIHRoZSBwcm9ncmVzcyB0byBjYW5jZWwNCiAgICAgICAgdGhlIGNvcnJlc3BvbmRp
bmcgRG93bmxvYWQuDQogICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIHB1Ymxpc2hdKToNCiAgICAo
LVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQogICAgICAgIE92ZXJyaWRlIHRoZXNl
IG1ldGhvZHMgdG8gY29uc3VtZSBhbmQgcmV2b2tlIHRoZSBzYW5kYm94IGV4dGVuc2lvbiB0byBt
YWtlIHN1cmUgdGhlDQogICAgICAgIHByb2Nlc3MgaGFzIGFjY2VzcyB0byB0aGUgcHJvZ3Jlc3Mg
ZmlsZSB3aGlsZSB0aGUgcHJvZ3Jlc3Mgd2lsbCBiZSBwdWJsaXNoZWQuDQogICAgKC1bV0tEb3du
bG9hZFByb2dyZXNzIGRlYWxsb2NdKToNCiAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3Mgb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToNCiAgICAgICAgV2hl
biBlaXRoZXIgYnl0ZSBjb3VudCAobnVtYmVyIHJlY2VpdmVkLCBvciBudW1iZXIgZXhwZWN0ZWQg
dG8gcmVjZWl2ZSkgb2YgdGhlIGRvd25sb2FkDQogICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRl
IHRoaXMgcHJvZ3Jlc3MgdG8gcmVmbGVjdCB0aGF0Lg0KICAgIA0KICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOg0KICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwdWJs
aXNoRG93bmxvYWRQcm9ncmVzcyk6DQogICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOg0KICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46DQog
ICAgDQogICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbjoNCiAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCiAgICAgICAgQWxsb3cgbG9va2luZyB1cCB0aGUgc2Vy
dmljZXMgdGhhdCBtYW5hZ2VzIHB1Ymxpc2hlZCBOU1Byb2dyZXNzZXMuDQogICAgDQogICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6DQogICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tOg0KICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0
VVJMOl0pOg0KICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoNCiAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3MpOg0KICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6DQogICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoNCiAgICANCiAgICBUb29sczoNCiAgICANCiAgICBBZGQgQVBJIHRlc3Rz
IHRvIGV4ZXJjaXNlIHRoZSBwcm9ncmVzcy1wdWJsaXNoaW5nIGZ1bmN0aW9uYWxpdHkgaW4gYSB2
YXJpZXR5IG9mIHNjZW5hcmlvcy4NCiAgICANCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOg0KICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOiBBZGRlZC4NCiAgICAoK1tEb3dubG9h
ZFByb2dyZXNzVGVzdFByb3RvY29sIHJlZ2lzdGVyUHJvdG9jb2xGb3JUZXN0UnVubmVyOl0pOg0K
ICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgdW5yZWdpc3RlclByb3RvY29sXSk6
DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6
XSk6DQogICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0
Rm9yUmVxdWVzdDpdKToNCiAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHJlcXVl
c3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVlc3Q6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RQcm90b2NvbCBzdGFydExvYWRpbmddKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFByb3RvY29sIHN0b3BMb2FkaW5nXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgaW5pdF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0TG9hZGlu
Z1dpdGhQcm90b2NvbDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB0ZWFy
RG93bl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kaWRHZXRQcm9ncmVz
czpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkTG9zZVByb2dyZXNz
XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3Vic2NyaWJlQW5kV2FpdEZv
clByb2dyZXNzXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdFRvTG9z
ZVByb2dyZXNzXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnREb3du
bG9hZDpleHBlY3RlZExlbmd0aDpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBwdWJsaXNoUHJvZ3Jlc3NdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBy
ZWNlaXZlRGF0YTpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmaW5pc2hE
b3dubG9hZFRhc2tdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBmYWlsRG93
bmxvYWRUYXNrXSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25dKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRGaW5pc2hlZF0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXSk6DQogICAgKC1bRG93bmxvYWRQ
cm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvckRvd25sb2FkRmFpbGVkXSk6DQogICAgKC1bRG93bmxv
YWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdKToN
CiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0
UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9u
SGFuZGxlcjpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOg0KICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZERpZFN0YXJ0Ol0pOg0KICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlv
bjpdKToNCiAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWREaWRGaW5p
c2g6XSk6DQogICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkQ2Fu
Y2VsOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkaWRG
YWlsV2l0aEVycm9yOl0pOg0KICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3du
bG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToNCiAgICAoVEVTVCk6DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZw0KaW5kZXggMmFlNDEwYzE5
Y2IuLjVhNWY4NzI3ZjE3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zw0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZw0KQEAgLTEsMyArMSwxOSBAQA0K
KzIwMTgtMTEtMjggIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisN
CisgICAgICAgIEFkZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9h
ZHMNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIw
MjENCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEFkZCBhbiBTUEkgaGVhZGVyIGZvciBO
U1Byb2dyZXNzJ3MgcHVibGlzaGluZyBhbmQgdW5wdWJsaXNoaW5nIG1ldGhvZHMuIEluIG9sZGVy
DQorICAgICAgICBTREtzLCB0aGVzZSBtZXRob2RzIGFyZSBleHBsaWNpdGx5IHVuYXZhaWxhYmxl
IG9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIG1hY09TLA0KKyAgICAgICAgd2l0aCB1bmRlcnNjb3Jl
LXByZWZpeGVkIHZlcnNpb25zIGF2YWlsYWJsZSBhcyBTUEkuIEluIG5ld2VyIFNES3MsIHRoZSB1
bnByZWZpeGVkDQorICAgICAgICB2ZXJzaW9ucyBhcmUgU1BJIGFuZCB0aGUgcHJlZml4ZWQgdmVy
c2lvbnMgYXJlIGRlcHJlY2F0ZWQuDQorDQorICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOg0KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaDoNCisN
CiAyMDE4LTExLTI4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4NCiAN
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzg2NTMgYW5kIHIyMzg2NTYuDQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQpp
bmRleCA3N2YyNDY3M2U1MS4uM2RhOGJmOWJmZGMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTExNCw2ICsxMTQsNyBAQA0K
IAkJNDQyOTU2Q0QyMThBNzJERjAwODBEQjU0IC8qIFJldmVhbFNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0
IC8qIFJldmVhbFNQSS5oICovOyB9Ow0KIAkJNTcwQUI4RjEyMEFFMkU4RDAwQjhCRTg3IC8qIFNl
Y0tleVByb3h5U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzBBQjhGMDIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLzsgfTsN
CiAJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEY4MjBBRjZF
M0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCAqLzsgfTsNCisJCTYzQzdFREM3MjFB
RkFFMDQwMDZBN0I5OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9n
cmVzc1NQSS5oICovOyB9Ow0KIAkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRB
cmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovOyB9
Ow0KIAkJN0EzQTZBODAyMENBREI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMx
N0FBRSAvKiBOU0ltYWdlU1BJLmggKi87IH07DQogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQg
LyogSElUb29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07
DQpAQCAtMjcxLDYgKzI3Miw3IEBADQogCQk0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2
ZWFsU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJldmVhbFNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8q
IFNlY0tleVByb3h5U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0tleVByb3h5U1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07DQogCQk1NzBBQjhGODIwQUY2RTNEMDBCOEJFODcgLyogTlNY
UENDb25uZWN0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TWFBDQ29ubmVjdGlvblNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8q
IE5TUHJvZ3Jlc3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9Ow0KIAkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5
ZWRBcmNoaXZlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0tleWVk
QXJjaGl2ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTdBM0E2QTdGMjBD
QURCNDYwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TSW1hZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTkzRTU5
MDlDMUY5M0JGMUUwMDY3RjhDRiAvKiBVbmVuY29kYWJsZUhhbmRsaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVuZW5jb2RhYmxlSGFuZGxpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCkBA
IC0zOTcsNiArMzk5LDcgQEANCiAJCQkJMEMyREExMzMxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmls
ZU1hbmFnZXJTUEkuaCAqLywNCiAJCQkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaCAqLywNCiAJCQkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8q
IE5TS2V5ZWRBcmNoaXZlclNQSS5oICovLA0KKwkJCQk2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMg
LyogTlNQcm9ncmVzc1NQSS5oICovLA0KIAkJCQkwQzJEQTEzNDFGM0JFQjQ5MDBEQkMzMTcgLyog
TlNTdHJpbmdTUEkuaCAqLywNCiAJCQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91
Y2hCYXJTUEkuaCAqLywNCiAJCQkJMEMyREExMzYxRjNCRUI0OTAwREJDMzE3IC8qIE5TVVJMQ29u
bmVjdGlvblNQSS5oICovLA0KQEAgLTc0Myw2ICs3NDYsNyBAQA0KIAkJCQkwQzc3ODU5RjFGNDUx
MzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkwQzJEQTE1NzFG
M0JFQjQ5MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCUEx
MDI2NThCMUY1Njc0OEMwMEI0Qzg0NCAvKiBRdWlja0RyYXdTUEkuaCBpbiBIZWFkZXJzICovLA0K
KwkJCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVzc1NQSS5oIGluIEhlYWRl
cnMgKi8sDQogCQkJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEku
aCBpbiBIZWFkZXJzICovLA0KIAkJCQkwQzVBRjkyMDFGNDNBNEM3MDAyRUFDMDIgLyogUXVpY2tM
b29rU1BJLmggaW4gSGVhZGVycyAqLywNCiAJCQkJNDQyOTU2Q0QyMThBNzJERjAwODBEQjU0IC8q
IFJldmVhbFNQSS5oIGluIEhlYWRlcnMgKi8sDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMDAwMDAuLjc5MzcwYTE2NTFiDQotLS0gL2Rldi9udWxsDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmgNCkBAIC0wLDAgKzEsNDkgQEAN
CisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNwcmFnbWEgb25jZQ0KKw0K
KyNkZWZpbmUgVVNFX05TUFJPR1JFU1NfUFVCTElTSElOR19TUEkgKChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEzMDAwMCkgfHwgKFBM
QVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA2MDAw
MCkgfHwgKFBMQVRGT1JNKFRWT1MpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MzAwMDApKQ0KKw0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisNCisjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykNCisNCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jl
c3NfUHJpdmF0ZS5oPg0KKw0KKyNlbHNlDQorDQorQGludGVyZmFjZSBOU1Byb2dyZXNzICgpDQor
DQorLSAodm9pZClfcHVibGlzaDsNCistICh2b2lkKV91bnB1Ymxpc2g7DQorKyAoaWQpX2FkZFN1
YnNjcmliZXJGb3JGaWxlVVJMOihOU1VSTCAqKWluVVJMIHdpdGhQdWJsaXNoaW5nSGFuZGxlcjoo
TlNQcm9ncmVzc1B1Ymxpc2hpbmdIYW5kbGVyKWluUHVibGlzaGluZ0hhbmRsZXI7DQorKyAodm9p
ZClfcmVtb3ZlU3Vic2NyaWJlcjooaWQpaW5TdWJzY3JpYmVyOw0KKw0KK0BlbmQNCisNCisjZW5k
aWYgLy8gbm90IFVTRShBUFBMRV9JTlRFUk5BTF9TREspDQorDQorI2VuZGlmIC8vIFVTRShOU1BS
T0dSRVNTX1BVQkxJU0hJTkdfU1BJKQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4IDhiNmNjNzA5ZjM3Li43M2JjNmY5
YmUwMyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSw4NiBAQA0KKzIwMTgtMTEtMjggIERhdmlkIFF1
ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBTUEkgdG8g
cHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMNCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjENCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4N
CisNCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIGNsaWVudHMgdG8gYWxsb3cgb3RoZXIg
cHJvY2Vzc2VzIHRvIG1vbml0b3IgdGhlIHN0YXRlIG9mIGFjdGl2ZQ0KKyAgICAgICAgZG93bmxv
YWRzLiBPbiBDb2NvYSBwbGF0Zm9ybXMsIHRoaXMgY2FuIGJlIGRvbmUgYnkgY3JlYXRpbmcgYW4g
TlNQcm9ncmVzcywgcHVibGlzaGluZw0KKyAgICAgICAgaXQgb24gYW4gYXBwcm9wcmlhdGUgZmls
ZSBVUkwgKHBvdGVudGlhbGx5IGEgZGlmZmVyZW50IGZpbGUgVVJMIHRoYW4gd2hlcmUgdGhlIGRv
d25sb2FkDQorICAgICAgICBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4pLCB1cGRhdGluZyBwcm9wZXJ0
aWVzIG9uIGl0IGFzIHRoZSBkb3dubG9hZCBtYWtlcyBwcm9ncmVzcywgYW5kDQorICAgICAgICB3
aXJpbmcgdXAgYSBjYW5jZWxsYXRpb24gaGFuZGxlciB0aGF0IGFsbG93cyBpdCB0byBiZSByZW1v
dGVseSBjYW5jZWxlZC4gSW50ZXJlc3RlZA0KKyAgICAgICAgY2xpZW50cyBjYW4gdGhlbiBzdWJz
Y3JpYmUgdG8gcHJvZ3Jlc3Mgb24gdGhhdCBVUkwgYW5kIHJlY2VpdmUgYSBwcm94eSB0byB0aGUg
cHJvZ3Jlc3MNCisgICAgICAgIHRoYXQgV2ViS2l0IHB1Ymxpc2hlcy4NCisNCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoNCisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkOjp+RG93bmxvYWQpOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRm
b3JtRGVzdHJveURvd25sb2FkKToNCisgICAgICAgICAgICBBZGQgYSBwbGF0Zm9ybS1jdXN0b21p
emFibGUgaG9vayBmb3IgZGVzdHJ1Y3RpbmcgdGhlIERvd25sb2FkLiBEb3dubG9hZENvY29hLm1t
DQorICAgICAgICAgICAgd2lsbCBpbnRlcmFjdCB3aXRoIGl0cyBPYmplY3RpdmUtQyBOU1Byb2dy
ZXNzIGluc3RhbmNlIGF0IHRoaXMgcG9pbnQuDQorDQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoNCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2spOg0KKyAgICAgICAgICAgIFNlZSBjb21tZW50
cyBmb3IgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoKS4NCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MpOg0KKyAgICAgICAgICAgIElmIHRo
ZSBwcm92aWRlZCBkb3dubG9hZElEIGNvcnJlc3BvbmRzIHRvIGEgbm9uLVBlbmRpbmcgRG93bmxv
YWQsIGhhbmQgdGhlIFVSTA0KKyAgICAgICAgICAgIGFuZCBhIG1hdGNoaW5nIHNhbmRib3ggZXh0
ZW5zaW9uIHRvIHRoZSBEb3dubG9hZCBzbyBpdCBjYW4gY3JlYXRlIGl0cyBwcm9ncmVzcy4NCisg
ICAgICAgICAgICBPdGhlcndpc2UsIHN0b3JlIHRoZSBVUkwgYW5kIHNhbmRib3ggZXh0ZW5zaW9u
IG9uIHRoZSBQZW5kaW5nRG93bmxvYWQgdG8gYmUgdXNlZA0KKyAgICAgICAgICAgIGxhdGVyIHdo
ZW4gdGhlIGZ1bGwgRG93bmxvYWQgaXMgY3JlYXRlZC4gV2hlbiB0aGlzIGhhcHBlbnMsIGRhdGFU
YXNrQmVjYW1lRG93bmxvYWRUYXNrKCkNCisgICAgICAgICAgICB3aWxsIHRlbGwgdGhlIFBlbmRp
bmdEb3dubG9hZCBhYm91dCB0aGUgRG93bmxvYWQgaXQgaGFzIGJlY29tZS4gVGhlIFBlbmRpbmdE
b3dubG9hZA0KKyAgICAgICAgICAgIHdpbGwgdGhlbiByZWxheSB0aGUgcHJvZ3Jlc3MgVVJMIGFu
ZCBzYW5kYm94IGV4dGVuc2lvbiB0byB0aGUgRG93bmxvYWQuDQorDQorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoNCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6DQorICAgICAgICAoV2ViS2l0
OjpQZW5kaW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyk6DQorICAgICAgICAgICAgU3RvcmUg
dGhlIHByb2dyZXNzIGluZm8gZm9yIGxhdGVyIHVzZSwgd2hlbiB0aGUgcHJvcGVyIERvd25sb2Fk
IGlzIGNyZWF0ZWQuDQorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OmRpZEJlY29t
ZURvd25sb2FkKToNCisgICAgICAgICAgICBJZiB0aGVyZSB3YXMgYSBwcm9ncmVzcyBVUkwgcHJv
dmlkZWQgZWFybGllciwgdGVsbCB0aGUgRG93bmxvYWQgY29ycmVzcG9uZGluZyB0byB0aGlzDQor
ICAgICAgICAgICAgUGVuZGluZ0Rvd25sb2FkIHRvIHB1Ymxpc2ggaXRzIHByb2dyZXNzIHVzaW5n
IHRoYXQgVVJMLg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmg6DQorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOg0KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtRGVz
dHJveURvd25sb2FkKToNCisgICAgICAgICAgICBXaGVuIHRoZSBEb3dubG9hZCBpcyBkZXN0cm95
ZWQgKGkuZS4gd2hlbiB0aGUgZG93bmxvYWQgc3VjY2VlZHMsIGZhaWxzLCBvciBpcyBjYW5jZWxl
ZCksDQorICAgICAgICAgICAgdW5wdWJsaXNoIHRoZSBwcm9ncmVzcywgc2luY2UgdGhlcmUgaXMg
bm8gbG9uZ2VyIGFueSBhY3Rpdml0eSB0byByZXBvcnQuDQorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZDo6cHVibGlzaFByb2dyZXNzKToNCisgICAgICAgICAgICBSZXNvbHZlIHRoZSBzYW5kYm94
IGV4dGVuc2lvbiwgY3JlYXRlIGEgcHJvZ3Jlc3MgY29uZmlndXJlZCB0byByZWZsZWN0IHRoZSBw
cm9ncmVzcyBvZg0KKyAgICAgICAgICAgIHRoaXMgRG93bmxvYWQncyBOU1VSTFNlc3Npb25Eb3du
bG9hZFRhc2ssIGFuZCBwdWJsaXNoIGl0IGF0IHRoZSBnaXZlbiBmaWxlIFVSTC4NCisNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWQuaC4NCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxv
YWRQcm9ncmVzcy5tbTogQWRkZWQuDQorICAgICAgICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgaW5p
dFdpdGhEb3dubG9hZFRhc2s6ZG93bmxvYWQ6VVJMOnNhbmRib3hFeHRlbnNpb246XSk6DQorICAg
ICAgICAgICAgQ29uZmlndXJlIHRoaXMgcHJvZ3Jlc3MsIHN0YXJ0IG9ic2VydmluZyBwcm9wZXJ0
aWVzIG9uIHRoZSBkb3dubG9hZCB0YXNrIHRoYXQgdGhpcw0KKyAgICAgICAgICAgIHByb2dyZXNz
IHdpbGwgcmVmbGVjdCwgYW5kIGNvbm5lY3QgdGhlIGNhbmNlbGxhdGlvbiBoYW5kbGVyIG9mIHRo
ZSBwcm9ncmVzcyB0byBjYW5jZWwNCisgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBEb3du
bG9hZC4NCisgICAgICAgICgtW1dLRG93bmxvYWRQcm9ncmVzcyBwdWJsaXNoXSk6DQorICAgICAg
ICAoLVtXS0Rvd25sb2FkUHJvZ3Jlc3MgdW5wdWJsaXNoXSk6DQorICAgICAgICAgICAgT3ZlcnJp
ZGUgdGhlc2UgbWV0aG9kcyB0byBjb25zdW1lIGFuZCByZXZva2UgdGhlIHNhbmRib3ggZXh0ZW5z
aW9uIHRvIG1ha2Ugc3VyZSB0aGUNCisgICAgICAgICAgICBwcm9jZXNzIGhhcyBhY2Nlc3MgdG8g
dGhlIHByb2dyZXNzIGZpbGUgd2hpbGUgdGhlIHByb2dyZXNzIHdpbGwgYmUgcHVibGlzaGVkLg0K
KyAgICAgICAgKC1bV0tEb3dubG9hZFByb2dyZXNzIGRlYWxsb2NdKToNCisgICAgICAgICgtW1dL
RG93bmxvYWRQcm9ncmVzcyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpj
b250ZXh0Ol0pOg0KKyAgICAgICAgICAgIFdoZW4gZWl0aGVyIGJ5dGUgY291bnQgKG51bWJlciBy
ZWNlaXZlZCwgb3IgbnVtYmVyIGV4cGVjdGVkIHRvIHJlY2VpdmUpIG9mIHRoZSBkb3dubG9hZA0K
KyAgICAgICAgICAgIHRhc2sgY2hhbmdlcywgdXBkYXRlIHRoaXMgcHJvZ3Jlc3MgdG8gcmVmbGVj
dCB0aGF0Lg0KKw0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
DQorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHVibGlzaERvd25sb2FkUHJvZ3Jl
c3MpOg0KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOg0KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoNCisNCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Mu
c2IuaW46DQorICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5zYjoNCisgICAgICAgICAgICBBbGxvdyBsb29raW5nIHVwIHRo
ZSBzZXJ2aWNlcyB0aGF0IG1hbmFnZXMgcHVibGlzaGVkIE5TUHJvZ3Jlc3Nlcy4NCisNCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oOg0KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOg0KKyAgICAgICAgKC1bX1dLRG93bmxvYWQg
cHVibGlzaFByb2dyZXNzQXRVUkw6XSk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHA6DQorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpwdWJs
aXNoUHJvZ3Jlc3MpOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuaDoNCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6DQorDQog
MjAxOC0xMS0yOSAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPg0KIA0KICAgICAg
ICAgW0dUS11bV1BFXSBGaXggQnViYmxld3JhcExhdW5jaGVyIGNsYW5nIHdhcm5pbmdzDQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
DQppbmRleCA0OTRkOTlmMGViMi4uMTc3ZjliYTQ5YzMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHANCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcA0KQEAgLTc3LDYgKzc3
LDcgQEAgRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2Vy
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5TVVINCiANCiBEb3dubG9hZDo6fkRvd25sb2FkKCkN
CiB7DQorICAgIHBsYXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogICAgIG1fZG93bmxvYWRNYW5h
Z2VyLmRpZERlc3Ryb3lEb3dubG9hZCgpOw0KIH0NCiANCkBAIC0xNzksNiArMTgwLDEwIEBAIGJv
b2wgRG93bmxvYWQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0DQogdm9pZCBEb3du
bG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpDQogew0KIH0NCisNCit2b2lkIERvd25s
b2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCgpDQorew0KK30NCiAjZW5kaWYNCiANCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaA0KaW5kZXggNTkwZjllYjZmODUuLmJkYmM4ZTE1MjYwIDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aA0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aA0KQEAgLTM3LDYgKzM3LDcgQEANCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KIA0KICNp
ZiBQTEFURk9STShDT0NPQSkNCitPQkpDX0NMQVNTIE5TUHJvZ3Jlc3M7DQogT0JKQ19DTEFTUyBO
U1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7DQogI2VuZGlmDQogDQpAQCAtNzMsNiArNzQsOSBAQCBw
dWJsaWM6DQogDQogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
DQogICAgIHZvaWQgY2FuY2VsKCk7DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1
Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik7DQorI2VuZGlmDQogDQogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG93bmxvYWRJRDsgfQ0KICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUo
KSBjb25zdCB7IHJldHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0NCkBAIC05MSw2ICs5NSw3IEBAIHBy
aXZhdGU6DQogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJp
ZGU7DQogDQogICAgIHZvaWQgcGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpOw0KKyAgICB2b2lk
IHBsYXRmb3JtRGVzdHJveURvd25sb2FkKCk7DQogDQogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkgY29uc3Q7DQogDQpAQCAtMTAzLDYgKzEwOCw3IEBAIHByaXZhdGU6DQogICAg
IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fZG93bmxvYWQ7DQogI2lmIFBMQVRGT1JNKENPQ09B
KQ0KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2FkVGFz
azsNCisgICAgUmV0YWluUHRyPE5TUHJvZ3Jlc3M+IG1fcHJvZ3Jlc3M7DQogI2VuZGlmDQogICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOw0KICAgICBTdHJpbmcgbV9zdWdnZXN0ZWROYW1l
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwDQppbmRleCAxZTI4ZmM5NDI3OC4uN2QzYTFkNzlmNmYgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwDQpAQCAtNjQsNyArNjQsMTEgQEAgdm9pZCBEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24sIFANCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRh
c2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93
bmxvYWQpDQogew0KICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsNCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsNCisg
ICAgaWYgKGF1dG8gcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLnRha2UoZG93
bmxvYWRJRCkpIHsNCisjaWYgUExBVEZPUk0oQ09DT0EpDQorICAgICAgICBwZW5kaW5nRG93bmxv
YWQtPmRpZEJlY29tZURvd25sb2FkKGRvd25sb2FkKTsNCisjZW5kaWYNCisgICAgfQ0KICAgICBB
U1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsNCiAgICAgbV9kb3dubG9h
ZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5yZW1vdmUoZG93bmxvYWRJRCk7DQogICAgIG1fZG93
bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7DQpAQCAtMTU1LDYgKzE1
OSwxNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBk
b3dubG9hZElEKQ0KICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jYW5jZWwoKTsNCiB9DQogDQor
I2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpwdWJsaXNoRG93bmxv
YWRQcm9ncmVzcyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3sN
CisgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKQ0K
KyAgICAgICAgZG93bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyh1cmwsIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOw0KKyAgICBlbHNlIGlmIChhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBt
X3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKQ0KKyAgICAgICAgcGVuZGluZ0Rvd25s
b2FkLT5wdWJsaXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
KTsNCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkNCiB7DQogICAgIEFTU0VS
VChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZC0+ZG93bmxvYWRJRCgpKSk7DQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaA0KaW5kZXggNTFkMGVmMTZhNmMuLjgwNzg0MTBkYTMzIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgNCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oDQpAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6DQogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
DQogDQogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7DQorI2lmIFBMQVRGT1JN
KENPQ09BKQ0KKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsNCisjZW5kaWYN
CiAgICAgDQogICAgIERvd25sb2FkKiBkb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpIHsg
cmV0dXJuIG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsgfQ0KIA0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwDQppbmRleCBhMDk5YWIzNWU5NC4uYWVjNGRhMjIzNGMgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwDQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwDQpAQCAtNzUsNiArNzUsMjEgQEAgdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNhbmNlbCgpDQog
ICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZENhbmNlbCh7IH0pKTsNCiB9DQog
DQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgUGVuZGluZ0Rvd25sb2FkOjpwdWJsaXNoUHJv
Z3Jlc3MoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb24pDQorew0KKyAgICBBU1NFUlQoIW1fcHJvZ3Jlc3NVUkwuaXNWYWxp
ZCgpKTsNCisgICAgbV9wcm9ncmVzc1VSTCA9IHVybDsNCisgICAgbV9wcm9ncmVzc1NhbmRib3hF
eHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOw0KK30NCisNCit2b2lkIFBlbmRp
bmdEb3dubG9hZDo6ZGlkQmVjb21lRG93bmxvYWQoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPERvd25s
b2FkPiYgZG93bmxvYWQpDQorew0KKyAgICBpZiAobV9wcm9ncmVzc1VSTC5pc1ZhbGlkKCkpDQor
ICAgICAgICBkb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKG1fcHJvZ3Jlc3NVUkwsIFdURk1vdmUo
bV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb24pKTsNCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENP
Q09BKQ0KKw0KIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikNCiB7DQogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25s
b2FkUHJveHk6OkRpZEZhaWwoZXJyb3IsIHsgfSkpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgNCmluZGV4IGEz
ODM3NDk4YWJlLi45NDQyZWRiYzQxOCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oDQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaA0KQEAgLTM0LDYgKzM0
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsNCiANCiBuYW1lc3BhY2UgV2ViS2l0IHsNCiAN
CitjbGFzcyBEb3dubG9hZDsNCiBjbGFzcyBEb3dubG9hZElEOw0KIGNsYXNzIE5ldHdvcmtMb2Fk
Ow0KIGNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsNCkBAIC00OCw2ICs0OSwxMSBAQCBwdWJs
aWM6DQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpOw0KICAgICB2b2lkIGNhbmNlbCgpOw0KIA0KKyNpZiBQTEFURk9STShDT0NPQSkN
CisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYpOw0KKyAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mKTsNCisjZW5kaWYNCisNCiBwcml2YXRlOiAgICANCiAg
ICAgLy8gTmV0d29ya0xvYWRDbGllbnQuDQogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgb3ZlcnJpZGUgeyB9DQpAQCAtNjYsNiArNzIsMTEgQEAgcHJpdmF0ZToNCiBwcml2YXRlOg0K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7DQogICAgIGJv
b2wgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsNCisNCisjaWYgUExBVEZPUk0o
Q09DT0EpDQorICAgIFdlYkNvcmU6OlVSTCBtX3Byb2dyZXNzVVJMOw0KKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgbV9wcm9ncmVzc1NhbmRib3hFeHRlbnNpb247DQorI2VuZGlmDQogfTsN
CiANCiB9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCmluZGV4IGVmZDcxYjIwNDAzLi4yNTE3
MTA0MWIyNCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0NCkBAIC0yOSw3ICsyOSw5IEBA
DQogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIg0KICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29j
b2EuaCINCiAjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIg0KKyNpbXBvcnQgIldLRG93bmxvYWRQ
cm9ncmVzcy5oIg0KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+DQorI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+DQogDQogbmFtZXNwYWNlIFdlYktpdCB7
DQogDQpAQCAtODcsNCArODksMzYgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3
b3JrTG9hZCgpDQogICAgIH1dOw0KIH0NCiANCit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURlc3Ry
b3lEb3dubG9hZCgpDQorew0KKyAgICBpZiAobV9wcm9ncmVzcykNCisjaWYgVVNFKE5TUFJPR1JF
U1NfUFVCTElTSElOR19TUEkpDQorICAgICAgICBbbV9wcm9ncmVzcyBfdW5wdWJsaXNoXTsNCisj
ZWxzZQ0KKyAgICAgICAgW21fcHJvZ3Jlc3MgdW5wdWJsaXNoXTsNCisjZW5kaWYNCit9DQorDQor
dm9pZCBEb3dubG9hZDo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQ0KK3sNCisj
aWYgV0tfQVBJX0VOQUJMRUQNCisgICAgQVNTRVJUKCFtX3Byb2dyZXNzKTsNCisgICAgQVNTRVJU
KHVybC5pc1ZhbGlkKCkpOw0KKw0KKyAgICBhdXRvIHNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7DQorDQor
ICAgIEFTU0VSVChzYW5kYm94RXh0ZW5zaW9uKTsNCisNCisgICAgbV9wcm9ncmVzcyA9IGFkb3B0
TlMoW1tXS0Rvd25sb2FkUHJvZ3Jlc3MgYWxsb2NdIGluaXRXaXRoRG93bmxvYWRUYXNrOm1fZG93
bmxvYWRUYXNrLmdldCgpIGRvd25sb2FkOnRoaXMgVVJMOihOU1VSTCAqKXVybCBzYW5kYm94RXh0
ZW5zaW9uOnNhbmRib3hFeHRlbnNpb25dKTsNCisjaWYgVVNFKE5TUFJPR1JFU1NfUFVCTElTSElO
R19TUEkpDQorICAgIFttX3Byb2dyZXNzIF9wdWJsaXNoXTsNCisjZWxzZQ0KKyAgICBbbV9wcm9n
cmVzcyBwdWJsaXNoXTsNCisjZW5kaWYNCisjZWxzZQ0KKyAgICBVTlVTRURfUEFSQU0odXJsKTsN
CisgICAgVU5VU0VEX1BBUkFNKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOw0KKyNlbmRpZiAvLyBu
b3QgV0tfQVBJX0VOQUJMRUQNCit9DQorDQogfQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvV0tEb3dubG9hZFByb2dy
ZXNzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMmI3NjNhZjA5
NzANCi0tLSAvZGV2L251bGwNCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL1dLRG93bmxvYWRQcm9ncmVzcy5oDQpAQCAtMCwwICsxLDUwIEBADQorLyoN
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
KyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LA0KKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMNCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SDQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTg0KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW1wb3J0IDxXZWJLaXQvV0tGb3Vu
ZGF0aW9uLmg+DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1Byb2dyZXNzLmg+DQorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPg0KKw0KK25hbWVzcGFjZSBX
ZWJLaXQgew0KKw0KK2NsYXNzIERvd25sb2FkOw0KK2NsYXNzIFNhbmRib3hFeHRlbnNpb247DQor
DQorfQ0KKw0KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lODQorDQorQGludGVyZmFjZSBXS0Rvd25s
b2FkUHJvZ3Jlc3MgOiBOU1Byb2dyZXNzDQorDQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93
bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKil0YXNrIGRvd25sb2FkOihXZWJL
aXQ6OkRvd25sb2FkKilkb3dubG9hZCBVUkw6KE5TVVJMICopZmlsZVVSTCBzYW5kYm94RXh0ZW5z
aW9uOihSZWZQdHI8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uPilzYW5kYm94RXh0ZW5zaW9uOw0K
Kw0KK0BlbmQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9FTkQNCisNCisjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9XS0Rvd25sb2FkUHJvZ3Jlc3MubW0NCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uZmViYTBjOTZiYTANCi0tLSAvZGV2L251bGwN
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL1dLRG93
bmxvYWRQcm9ncmVzcy5tbQ0KQEAgLTAsMCArMSwxNDEgQEANCisvKg0KKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
DQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgImNvbmZpZy5oIg0KKyNpbXBvcnQgIldLRG93bmxv
YWRQcm9ncmVzcy5oIg0KKw0KKyNpZiBXS19BUElfRU5BQkxFRA0KKw0KKyNpbXBvcnQgIkRvd25s
b2FkLmgiDQorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmg+DQorI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+DQorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+DQorDQorc3Rh
dGljIHZvaWQqIFdLRG93bmxvYWRQcm9ncmVzc0J5dGVzRXhwZWN0ZWRUb1JlY2VpdmVDb3VudENv
bnRleHQgPSAmV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZUNvdW50Q29u
dGV4dDsNCitzdGF0aWMgdm9pZCogV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRl
eHQgPSAmV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNSZWNlaXZlZENvbnRleHQ7DQorDQorc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgY291bnRPZkJ5dGVzRXhwZWN0ZWRUb1JlY2VpdmVLZXlQYXRoID0g
QCJjb3VudE9mQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZSI7DQorc3RhdGljIE5TU3RyaW5nICogY29u
c3QgY291bnRPZkJ5dGVzUmVjZWl2ZWRLZXlQYXRoID0gQCJjb3VudE9mQnl0ZXNSZWNlaXZlZCI7
DQorDQorQGltcGxlbWVudGF0aW9uIFdLRG93bmxvYWRQcm9ncmVzcyB7DQorICAgIFJldGFpblB0
cjxOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s+IG1fdGFzazsNCisgICAgV2ViS2l0OjpEb3dubG9h
ZCogbV9kb3dubG9hZDsNCisgICAgUmVmUHRyPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbj4gbV9z
YW5kYm94RXh0ZW5zaW9uOw0KK30NCisNCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9h
ZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKXRhc2sgZG93bmxvYWQ6KFdlYktpdDo6
RG93bmxvYWQqKWRvd25sb2FkIFVSTDooTlNVUkwgKilmaWxlVVJMIHNhbmRib3hFeHRlbnNpb246
KFJlZlB0cjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb24+KXNhbmRib3hFeHRlbnNpb24NCit7DQor
ICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0V2l0aFBhcmVudDpuaWwgdXNlckluZm86bmlsXSkp
DQorICAgICAgICByZXR1cm4gbmlsOw0KKw0KKyAgICBtX3Rhc2sgPSB0YXNrOw0KKyAgICBtX2Rv
d25sb2FkID0gZG93bmxvYWQ7DQorDQorICAgIFt0YXNrIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5
UGF0aDpjb3VudE9mQnl0ZXNFeHBlY3RlZFRvUmVjZWl2ZUtleVBhdGggb3B0aW9uczpOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwg
Y29udGV4dDpXS0Rvd25sb2FkUHJvZ3Jlc3NCeXRlc0V4cGVjdGVkVG9SZWNlaXZlQ291bnRDb250
ZXh0XTsNCisgICAgW3Rhc2sgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOmNvdW50T2ZCeXRl
c1JlY2VpdmVkS2V5UGF0aCBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0OldLRG93bmxvYWRQcm9ncmVz
c0J5dGVzUmVjZWl2ZWRDb250ZXh0XTsNCisNCisgICAgc2VsZi5raW5kID0gTlNQcm9ncmVzc0tp
bmRGaWxlOw0KKyNpZiAhUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMA0KKyAgICBzZWxmLmZpbGVPcGVyYXRpb25LaW5kID0gTlNQcm9ncmVz
c0ZpbGVPcGVyYXRpb25LaW5kRG93bmxvYWRpbmc7DQorICAgIHNlbGYuZmlsZVVSTCA9IGZpbGVV
Ukw7DQorI2Vsc2UNCisgICAgW3NlbGYgc2V0VXNlckluZm9PYmplY3Q6TlNQcm9ncmVzc0ZpbGVP
cGVyYXRpb25LaW5kRG93bmxvYWRpbmcgZm9yS2V5Ok5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2lu
ZEtleV07DQorICAgIFtzZWxmIHNldFVzZXJJbmZvT2JqZWN0OmZpbGVVUkwgZm9yS2V5Ok5TUHJv
Z3Jlc3NGaWxlVVJMS2V5XTsNCisjZW5kaWYNCisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gc2Fu
ZGJveEV4dGVuc2lvbjsNCisNCisgICAgc2VsZi5jYW5jZWxsYWJsZSA9IFlFUzsNCisgICAgc2Vs
Zi5jYW5jZWxsYXRpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFt3
ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLRG93bmxvYWRQcm9ncmVzcz4geyBzZWxmIH1dIHsNCisg
ICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOw0KKyAgICAgICAgaWYgKCFz
dHJvbmdTZWxmKQ0KKyAgICAgICAgICAgIHJldHVybjsNCisNCisgICAgICAgIGlmIChhdXRvKiBk
b3dubG9hZCA9IHN0cm9uZ1NlbGYuZ2V0KCktPm1fZG93bmxvYWQpDQorICAgICAgICAgICAgZG93
bmxvYWQtPmNhbmNlbCgpOw0KKyAgICB9KS5nZXQoKTsNCisNCisgICAgcmV0dXJuIHNlbGY7DQor
fQ0KKw0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCistICh2b2lkKV9wdWJs
aXNoDQorI2Vsc2UNCistICh2b2lkKXB1Ymxpc2gNCisjZW5kaWYNCit7DQorICAgIEJPT0wgY29u
c3VtZWRFeHRlbnNpb24gPSBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsNCisgICAgQVNT
RVJUX1VOVVNFRChjb25zdW1lZEV4dGVuc2lvbiwgY29uc3VtZWRFeHRlbnNpb24pOw0KKw0KKyNp
ZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisgICAgW3N1cGVyIF9wdWJsaXNoXTsN
CisjZWxzZQ0KKyAgICBbc3VwZXIgcHVibGlzaF07DQorI2VuZGlmDQorfQ0KKw0KKyNpZiBVU0Uo
TlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCistICh2b2lkKV91bnB1Ymxpc2gNCisjZWxzZQ0K
Ky0gKHZvaWQpdW5wdWJsaXNoDQorI2VuZGlmDQorew0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJM
SVNISU5HX1NQSSkNCisgICAgW3N1cGVyIF91bnB1Ymxpc2hdOw0KKyNlbHNlDQorICAgIFtzdXBl
ciB1bnB1Ymxpc2hdOw0KKyNlbmRpZg0KKw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24tPnJldm9r
ZSgpOw0KKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOw0KK30NCisNCistICh2b2lk
KWRlYWxsb2MNCit7DQorICAgIFttX3Rhc2suZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JL
ZXlQYXRoOmNvdW50T2ZCeXRlc0V4cGVjdGVkVG9SZWNlaXZlS2V5UGF0aF07DQorICAgIFttX3Rh
c2suZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOmNvdW50T2ZCeXRlc1JlY2Vp
dmVkS2V5UGF0aF07DQorDQorICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9uKTsNCisNCisg
ICAgW3N1cGVyIGRlYWxsb2NdOw0KK30NCisNCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0
aW9uYXJ5PE5TS2V5VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICop
Y29udGV4dA0KK3sNCisgICAgaWYgKGNvbnRleHQgPT0gV0tEb3dubG9hZFByb2dyZXNzQnl0ZXNF
eHBlY3RlZFRvUmVjZWl2ZUNvdW50Q29udGV4dCkgew0KKyAgICAgICAgUmV0YWluUHRyPE5TTnVt
YmVyPiB2YWx1ZSA9IHN0YXRpY19jYXN0PE5TTnVtYmVyICo+KGNoYW5nZVtOU0tleVZhbHVlQ2hh
bmdlTmV3S2V5XSk7DQorICAgICAgICBBU1NFUlQoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pOw0KKyAgICAgICAgaW50NjRfdCBleHBlY3RlZEJ5dGVDb3VudCA9IHZhbHVl
LmdldCgpLmxvbmdMb25nVmFsdWU7DQorICAgICAgICBzZWxmLnRvdGFsVW5pdENvdW50ID0gKGV4
cGVjdGVkQnl0ZUNvdW50IDw9IDApID8gLTEgOiBleHBlY3RlZEJ5dGVDb3VudDsNCisgICAgfSBl
bHNlIGlmIChjb250ZXh0ID09IFdLRG93bmxvYWRQcm9ncmVzc0J5dGVzUmVjZWl2ZWRDb250ZXh0
KSB7DQorICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHZhbHVlID0gc3RhdGljX2Nhc3Q8TlNO
dW1iZXIgKj4oY2hhbmdlW05TS2V5VmFsdWVDaGFuZ2VOZXdLZXldKTsNCisgICAgICAgIEFTU0VS
VChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7DQorICAgICAgICBzZWxm
LmNvbXBsZXRlZFVuaXRDb3VudCA9IHZhbHVlLmdldCgpLmxvbmdMb25nVmFsdWU7DQorICAgIH0g
ZWxzZQ0KKyAgICAgICAgW3N1cGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9i
amVjdDpvYmplY3QgY2hhbmdlOmNoYW5nZSBjb250ZXh0OmNvbnRleHRdOw0KK30NCisNCitAZW5k
DQorDQorI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcA0KaW5kZXggNzQ4OGM5YjIxMmQuLmY3NDBmNGM2
ZWE4IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHANCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwDQpAQCAtODE5LDYgKzgxOSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxE
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpDQogICAgIGRvd25sb2FkTWFuYWdlcigpLmNh
bmNlbERvd25sb2FkKGRvd25sb2FkSUQpOw0KIH0NCiANCisjaWYgUExBVEZPUk0oQ09DT0EpDQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCBk
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCit7DQorICAgIGRvd25sb2FkTWFuYWdlcigp
LnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKGRvd25sb2FkSUQsIHVybCwgV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7DQorfQ0KKyNlbmRpZg0KKw0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkNCiB7DQogICAgIGRvd25sb2FkTWFuYWdlcigpLmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGRvd25sb2FkSUQsIFdURk1vdmUocmVxdWVzdCkpOw0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaA0KaW5kZXggMTc5
ODY2ODk1MzcuLjVkNzk5YjQzMDQ5IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgNCkBAIC0yNzQsNiArMjc0LDkgQEAgcHJpdmF0ZToNCiAgICAg
dm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
Ow0KICAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOw0KICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERv
d25sb2FkSUQpOw0KKyNpZiBQTEFURk9STShDT0NPQSkNCisgICAgdm9pZCBwdWJsaXNoRG93bmxv
YWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJik7DQorI2VuZGlmDQogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVl
c3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOw0KICAgICB2b2lkIGNv
bnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5n
IGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3
cml0ZSk7DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4NCmluZGV4IDk0ZDljMDM0NmJkLi5mMWUwNDM3ZGZmNiAx
MDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4NCkBAIC00OSw2ICs0OSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsNCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpDQogICAgIFJl
c3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkN
CiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpDQorI2lm
IFBMQVRGT1JNKENPQ09BKQ0KKyAgICBQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkNCisjZW5kaWYNCiANCiAgICAg
Q29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQ0KICAgICBDb250aW51ZURlY2lkZVBlbmRp
bmdEb3dubG9hZERlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJp
bmcgZGVzdGluYXRpb24sIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpDQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vz
cy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4NCmluZGV4IGNhYjc5NmRjMWVmLi4wYzE4MTZmOWI5MSAx
MDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4NCkBAIC0yOTAs
MyArMjkwLDcgQEANCiAgICAgKGxvY2FsIHRjcCkNCiAgICAgKHJlbW90ZSB0Y3ApKQ0KIA0KKzs7
IEZvciByZXBvcnRpbmcgcHJvZ3Jlc3MgZm9yIGFjdGl2ZSBkb3dubG9hZHMgPHJkYXI6Ly9wcm9i
bGVtLzQ0NDA1NjYxPg0KKyhhbGxvdyBtYWNoLWxvb2t1cA0KKyAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5Qcm9ncmVzc1JlcG9ydGluZyIpKQ0KKw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
aW5nLnNiIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20u
YXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2INCmluZGV4IGVlMzkxMDU4ZmM2Li4wYTM5MWRhN2M5
MyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiDQorKysgYi9Tb3VyY2UvV2ViS2l0L1Jl
c291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5z
Yg0KQEAgLTk0LDMgKzk0LDcgQEANCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuV2lyZWxl
c3NDb2V4TWFuYWdlciIpDQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndpZmkubWFuYWdl
ciIpDQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmlkZW50aXR5c2VydmljZXNkLmVtYmVk
ZGVkLmF1dGgiKSkNCisNCis7OyBGb3IgcmVwb3J0aW5nIHByb2dyZXNzIGZvciBhY3RpdmUgZG93
bmxvYWRzIDxyZGFyOi8vcHJvYmxlbS80NDQwNTY2MT4NCisoYWxsb3cgbWFjaC1sb29rdXANCisg
ICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuUHJvZ3Jlc3NSZXBvcnRpbmciKSkNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oDQppbmRleCBhY2Zk
ODM0Mzk1Yy4uNzE4NjkyZDY3MjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkLmgNCkBAIC0zNiw2ICszNiw4IEBAIFdLX0NMQVNTX0FWQUlM
QUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSkNCiANCiAtICh2b2lkKWNhbmNlbDsNCiANCist
ICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCisNCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsNCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIHdlYWspIFdLV2ViVmlldyAqb3JpZ2luYXRpbmdXZWJWaWV3Ow0K
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1VSTCAqPiAq
cmVkaXJlY3RDaGFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMy40KSwgaW9zKDExLjMp
KTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQu
bW0NCmluZGV4IDE2YWQ4MTBiN2NhLi44NzcyMWRjZjJkMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQ0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tDQpAQCAtNDksNiArNDksMTEg
QEAgLSAodm9pZCljYW5jZWwNCiAgICAgX2Rvd25sb2FkLT5jYW5jZWwoKTsNCiB9DQogDQorLSAo
dm9pZClwdWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwNCit7DQorICAgIF9kb3dubG9h
ZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7DQorfQ0KKw0KIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QNCiB7DQogICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOw0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcA0K
aW5kZXggZWZiMTE0OTNjZmIuLmIyMmU0ZjM0N2NkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHANCkBAIC0xMDEsNiArMTAx
LDIxIEBAIHZvaWQgRG93bmxvYWRQcm94eTo6c2V0T3JpZ2luYXRpbmdQYWdlKFdlYlBhZ2VQcm94
eSogcGFnZSkNCiAgICAgbV9vcmlnaW5hdGluZ1BhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKTsNCiB9
DQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KK3ZvaWQgRG93bmxvYWRQcm94eTo6cHVibGlzaFBy
b2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYgVVJMKQ0KK3sNCisgICAgaWYgKCFtX3Byb2Nlc3NQ
b29sKQ0KKyAgICAgICAgcmV0dXJuOw0KKw0KKyAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3Mg
PSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7DQorICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOw0KKyAgICAgICAgYm9vbCBjcmVhdGVkU2FuZGJveEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShVUkwuZmlsZVN5c3RlbVBhdGgo
KSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOw0KKyAgICAgICAg
QVNTRVJUX1VOVVNFRChjcmVhdGVkU2FuZGJveEV4dGVuc2lvbiwgY3JlYXRlZFNhbmRib3hFeHRl
bnNpb24pOw0KKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhtX2Rvd25sb2FkSUQsIFVSTCwgaGFuZGxl
KSwgMCk7DQorICAgIH0NCit9DQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQ0KKw0KIHZvaWQg
RG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQ0KIHsNCiAgICAgbV9yZXF1ZXN0ID0gcmVx
dWVzdDsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaA0KaW5kZXggZTA3YWFjODk2MDMuLmY5YjgyNDM2Y2U1IDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaA0KQEAgLTk1LDYg
Kzk1LDEwIEBAIHB1YmxpYzoNCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3lzdGVtUHJl
dmlld0Rvd25sb2FkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKS5zeXN0ZW1QcmV2aWV3
UmVjdCgpOyB9DQogI2VuZGlmDQogDQorI2lmIFBMQVRGT1JNKENPQ09BKQ0KKyAgICB2b2lkIHB1
Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmKTsNCisjZW5kaWYNCisNCiBwcml2YXRl
Og0KICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOw0KIA0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQppbmRleCA4NjE0Zjk3
MzI4OS4uZDFkZTAwYzgzZjEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qDQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qDQpAQCAtMTA4Miw2ICsxMDgyLDggQEANCiAJCTYzMTA4Rjk5MUY5
NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcw
MEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsNCiAJCTYz
NDg0MjUxMUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzQ4NDI0RjFGQjI2RTcx
MDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyB9Ow0KIAkJNjM2MzUzQTUx
RTk4NThERjAwMDlGOEFGIC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5MUU5
NzBENjUwMDMwMTFENSAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCisJCTYzNzI4MUEy
MjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAv
KiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLzsgfTsNCisJCTYzNzI4MUEzMjFBREM3NDQwMDlFMERF
NiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFBy
b2dyZXNzLm1tICovOyB9Ow0KIAkJNjNDMzJDMjYxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCiAJCTYz
QzMyQzI4MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI3
MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCAqLzsg
fTsNCiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYx
MUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsNCkBAIC0zNDk0LDYgKzM0OTYsOCBAQA0KIAkJNjMx
MDhGOTUxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KIAkJNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzNDg0MjRGMUZC
MjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCisJ
CTYzNzI4MUEwMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tEb3dubG9hZFByb2dyZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQorCQk2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tEb3dubG9hZFByb2dyZXNzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0
aW9uUG9zaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJ
NjNDMzJDMjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNDMzJDMjcxRTk4MTE5MDAwNjk5QkQwIC8q
IF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsNCkBAIC02ODE1LDYgKzY4MTksOCBAQA0KIAkJCWlzYSA9IFBCWEdyb3Vw
Ow0KIAkJCWNoaWxkcmVuID0gKA0KIAkJCQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93
bmxvYWRDb2NvYS5tbSAqLywNCisJCQkJNjM3MjgxQTAyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93
bmxvYWRQcm9ncmVzcy5oICovLA0KKwkJCQk2MzcyODFBMTIxQURDNzQ0MDA5RTBERTYgLyogV0tE
b3dubG9hZFByb2dyZXNzLm1tICovLA0KIAkJCSk7DQogCQkJcGF0aCA9IGNvY29hOw0KIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7DQpAQCAtOTA5Nyw2ICs5MTAzLDcgQEANCiAJCQkJQzBFM0FB
N0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTJENTAz
NjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJz
ICovLA0KIAkJCQkyNjMxNzJDRjE4QjQ2OTQ5MDA2NUI5QzMgLyogTmF0aXZlV2ViVG91Y2hFdmVu
dC5oIGluIEhlYWRlcnMgKi8sDQorCQkJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rv
d25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkxQURDQjg2QjE4OTgzMUIzMDAy
MkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkxQUJD
M0RGNjE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywN
CiAJCQkJMUE2RkJBMkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmgg
aW4gSGVhZGVycyAqLywNCkBAIC0xMDc3NSw2ICsxMDc4Miw3IEBADQogCQkJCTJEOTJBNzk0MjEy
QjZBRDQwMEY0OTNGRCAvKiBOUFZhcmlhbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQlD
REEyOUEyODFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJQ0RBMjlBMkExQ0JFQjY3QTAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywNCisJCQkJNjM3MjgxQTMyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9n
cmVzcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQkyRDkxMzQ0OTIxMkNGOUYwMDAxMjhBRkQgLyog
UGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQkxQThFRjRDQzEyNTI0MDM3MDBGNzA2N0Yg
LyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQkxQTJEOTFB
NjEyODFENzM5MDAxRUI5NjIgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tIGluIFNvdXJj
ZXMgKi8sDQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nDQpp
bmRleCA3YTdhOWQwMWRlNi4uMDlmMDUwY2E5ZDggMTAwNjQ0DQotLS0gYS9Ub29scy9DaGFuZ2VM
b2cNCisrKyBiL1Rvb2xzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw1MCBAQA0KKzIwMTgtMTEtMjgg
IERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFk
ZCBTUEkgdG8gcHVibGlzaCBOU1Byb2dyZXNzIG9uIGFjdGl2ZSBkb3dubG9hZHMNCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwMjENCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzQ0NDA1NjYxDQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4NCisNCisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIHByb2dy
ZXNzLXB1Ymxpc2hpbmcgZnVuY3Rpb25hbGl0eSBpbiBhIHZhcmlldHkgb2Ygc2NlbmFyaW9zLg0K
Kw0KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoNCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZFByb2dyZXNzLm1tOiBBZGRlZC4NCisgICAgICAgICgrW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UHJvdG9jb2wgcmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6XSk6DQorICAgICAgICAo
K1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIHVucmVnaXN0ZXJQcm90b2NvbF0pOg0KKyAg
ICAgICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6
XSk6DQorICAgICAgICAoK1tEb3dubG9hZFByb2dyZXNzVGVzdFByb3RvY29sIGNhbm9uaWNhbFJl
cXVlc3RGb3JSZXF1ZXN0Ol0pOg0KKyAgICAgICAgKCtbRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90
b2NvbCByZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6dG9SZXF1ZXN0Ol0pOg0KKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCBzdGFydExvYWRpbmddKToNCisgICAgICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToNCisgICAgICAgICgt
W0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGluaXRdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIHN0YXJ0TG9hZGluZ1dpdGhQcm90b2NvbDpdKToNCisgICAgICAg
ICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHRlYXJEb3duXSk6DQorICAgICAgICAoLVtE
b3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkR2V0UHJvZ3Jlc3M6XSk6DQorICAgICAgICAo
LVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZGlkTG9zZVByb2dyZXNzXSk6DQorICAgICAg
ICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jl
c3NdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRUb0xvc2VQ
cm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgc3RhcnRE
b3dubG9hZDpleHBlY3RlZExlbmd0aDpdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIHB1Ymxpc2hQcm9ncmVzc10pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgcmVjZWl2ZURhdGE6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNz
VGVzdFJ1bm5lciBmaW5pc2hEb3dubG9hZFRhc2tdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJv
Z3Jlc3NUZXN0UnVubmVyIGZhaWxEb3dubG9hZFRhc2tdKToNCisgICAgICAgICgtW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIHdhaXRGb3JEb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uXSk6
DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3YWl0Rm9yRG93bmxvYWRG
aW5pc2hlZF0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2FpdEZv
ckRvd25sb2FkQ2FuY2VsZWRdKToNCisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVu
bmVyIHdhaXRGb3JEb3dubG9hZEZhaWxlZF0pOg0KKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVz
c1Rlc3RSdW5uZXIgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRdKToNCisgICAgICAg
ICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZP
YmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lv
bkhhbmRsZXI6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJW
aWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOg0K
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkRGlkU3RhcnQ6
XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWQ6ZGlk
Q3JlYXRlRGVzdGluYXRpb246XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciBfZG93bmxvYWREaWRGaW5pc2g6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNz
VGVzdFJ1bm5lciBfZG93bmxvYWREaWRDYW5jZWw6XSk6DQorICAgICAgICAoLVtEb3dubG9hZFBy
b2dyZXNzVGVzdFJ1bm5lciBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToNCisgICAgICAg
ICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToNCisgICAgICAgIChU
RVNUKToNCisNCiAyMDE4LTExLTI5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4NCiANCiAgICAgICAgIHdlYmtpdHB5OiBVbmlmeSBpb3NfdmVyc2lvbi93YXRjaG9zX3ZlcnNp
b24gY29kZQ0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oNCmluZGV4IGZmNDI5M2ZjYjNmLi4xMWQ2NDc4
MWYyZCAxMDA2NDQNCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qDQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvag0KQEAgLTMxNyw2ICszMTcsNyBAQA0KIAkJ
NjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1NEY0RDAx
RjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovOyB9Ow0K
IAkJNjM1NkZCMjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTZGQjIxMUVDNEUw
QkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi87IH07DQogCQk2MzYzNTNBNzFF
OTg2NjVEMDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
MzYzNTNBNjFFOTg2MTk0MDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25S
ZXN1bHQuaHRtbCAqLzsgfTsNCisJCTYzNzI4MUE3MjFBRTEzODYwMDlFMERFNiAvKiBEb3dubG9h
ZFByb2dyZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3MubW0gKi87IH07
DQogCQk2M0E2MUI4QjFGQUQyNTExMDBGMDY4ODUgLyogZGlzcGxheS1tb2RlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNBNjFCOEEx
RkFEMjA0RDAwRjA2ODg1IC8qIGRpc3BsYXktbW9kZS5odG1sICovOyB9Ow0KIAkJNjNGNjY4MjIx
Rjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEg
LyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLzsgfTsNCiAJCTZCMzA2MTA2MjE4QTM3MjkwMEY1
QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZCMzA2MTA1MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmll
dy5tbSAqLzsgfTsNCkBAIC0xNjU0LDYgKzE2NTUsNyBAQA0KIAkJNjM1NEY0RDAxRjdDM0FCNTAw
RDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07DQogCQk2MzU2RkIyMTFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJsZUNvbnRlbnRSZWN0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9Ow0KIAkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFGIC8qIEdlb2xvY2F0
aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9Ow0KKwkJNjM3MjgxQTYyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2Fk
UHJvZ3Jlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb2dyZXNzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8q
IGRpc3BsYXktbW9kZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImRpc3BsYXktbW9kZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBs
aWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGljYXRpb25NYW5p
ZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTZCMzA2MTA1MjE4QTM3Mjkw
MEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsb3Np
bmdXZWJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KQEAgLTI0MTIsNiArMjQx
NCw3IEBADQogCQkJCTUxOEVFNTE2MjBBNzhDREYwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2Fk
aW5nLm1tICovLA0KIAkJCQk1MThFRTUxNzIwQTc4Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJz
TG9hZGluZ1BsdWdpbi5tbSAqLywNCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERv
d25sb2FkLm1tICovLA0KKwkJCQk2MzcyODFBNjIxQUUxMzg2MDA5RTBERTYgLyogRG93bmxvYWRQ
cm9ncmVzcy5tbSAqLywNCiAJCQkJRjQ2MTI4RDYyMTFFNDg5QzAwRDlGQURCIC8qIERyYWdBbmRE
cm9wVGVzdHMubW0gKi8sDQogCQkJCUExNTUwMjI4MUUwNTAyMEIwMEEyNEM1NyAvKiBEdXBsaWNh
dGVDb21wbGV0aW9uSGFuZGxlckNhbGxzLm1tICovLA0KIAkJCQlGNDREMDY0NjFGMzk1QzREMDAx
QTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLywNCkBAIC0zNzkyLDYgKzM3OTUsNyBAQA0K
IAkJCQlGNDVCNjNGRTFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSBpbiBT
b3VyY2VzICovLA0KIAkJCQkzN0U3REQ2NDFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJl
YWRBY2Nlc3NBbGxvd2VkVVJMcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJCQk1NUE4MTdGQzIxODEw
MEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gaW4gU291cmNl
cyAqLywNCisJCQkJNjM3MjgxQTcyMUFFMTM4NjAwOUUwREU2IC8qIERvd25sb2FkUHJvZ3Jlc3Mu
bW0gaW4gU291cmNlcyAqLywNCiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4IC8qIEFmZmlu
ZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJG
NEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLA0KIAkJ
CQkyREU3MUFGRTFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gaW4gU291cmNl
cyAqLywNCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw
MDAwMDAwMC4uZGExNWUzNzk1ZTcNCi0tLSAvZGV2L251bGwNCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQ0KQEAgLTAsMCArMSw1
ODAgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0
Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnDQorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sDQorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUw0KKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GDQor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpbXBvcnQgImNv
bmZpZy5oIg0KKw0KKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCINCisjaW1wb3J0ICJVdGlsaXRp
ZXMuaCINCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3MuaD4NCisjaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4NCisjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmg+DQorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
Pg0KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPg0KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25s
b2FkLmg+DQorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4NCisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaD4NCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4NCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+DQorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+DQorDQorI2lmIFdLX0FQSV9FTkFCTEVEDQorDQorQGNsYXNzIERvd25sb2FkUHJvZ3Jlc3NU
ZXN0UHJvdG9jb2w7DQorDQorZW51bSBjbGFzcyBEb3dubG9hZFN0YXJ0VHlwZSB7DQorICAgIENv
bnZlcnRMb2FkVG9Eb3dubG9hZCwNCisgICAgU3RhcnRGcm9tTmF2aWdhdGlvbkFjdGlvbiwNCisg
ICAgU3RhcnRJblByb2Nlc3NQb29sLA0KK307DQorDQorQGludGVyZmFjZSBEb3dubG9hZFByb2dy
ZXNzVGVzdFJ1bm5lciA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgX1dLRG93bmxv
YWREZWxlZ2F0ZT4NCisNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0Rvd25s
b2FkICpkb3dubG9hZDsNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TUHJvZ3Jl
c3MgKnByb2dyZXNzOw0KKw0KKy0gKHZvaWQpc3RhcnRMb2FkaW5nV2l0aFByb3RvY29sOihEb3du
bG9hZFByb2dyZXNzVGVzdFByb3RvY29sICopcHJvdG9jb2w7DQorDQorQGVuZA0KKw0KK0BpbnRl
cmZhY2UgRG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wNCitAZW5k
DQorDQorQGltcGxlbWVudGF0aW9uIERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wNCisNCitz
dGF0aWMgRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgKmN1cnJlbnRUZXN0UnVubmVyOw0KKw0K
KysgKHZvaWQpcmVnaXN0ZXJQcm90b2NvbEZvclRlc3RSdW5uZXI6KERvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyICopdGVzdFJ1bm5lcg0KK3sNCisgICAgY3VycmVudFRlc3RSdW5uZXIgPSB0ZXN0
UnVubmVyOw0KKyAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOnNlbGZdOw0KKyAgICBb
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2w6QCJodHRwIl07DQorfQ0KKw0KKysgKHZvaWQpdW5yZWdpc3RlclByb3RvY29sDQorew0KKyAg
ICBjdXJyZW50VGVzdFJ1bm5lciA9IG51bGxwdHI7DQorICAgIFtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOkAiaHR0cCJdOw0KKyAg
ICBbTlNVUkxQcm90b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6c2VsZl07DQorfQ0KKw0KKy8vIE1BUks6
IE5TVVJMUHJvdG9jb2wgTWV0aG9kcw0KKw0KKysgKEJPT0wpY2FuSW5pdFdpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0DQorew0KKyAgICByZXR1cm4gW3JlcXVlc3QuVVJMLnNjaGVt
ZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdID09IE5TT3JkZXJlZFNhbWU7DQorfQ0K
Kw0KKysgKE5TVVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0DQorew0KKyAgICByZXR1cm4gcmVxdWVzdDsNCit9DQorDQorKyAoQk9P
TClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKiliDQorew0KKyAgICByZXR1cm4gTk87DQorfQ0KKw0KKy0gKHZvaWQpc3Rh
cnRMb2FkaW5nDQorew0KKyAgICBbY3VycmVudFRlc3RSdW5uZXIgc3RhcnRMb2FkaW5nV2l0aFBy
b3RvY29sOnNlbGZdOw0KK30NCisNCistICh2b2lkKXN0b3BMb2FkaW5nDQorew0KK30NCisNCitA
ZW5kDQorDQorc3RhdGljIHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVz
c09ic2VydmluZ0NvbnRleHQ7DQorDQorQGltcGxlbWVudGF0aW9uIERvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyIHsNCisgICAgUmV0YWluUHRyPE5TVVJMPiBtX3Byb2dyZXNzVVJMOw0KKyAgICBS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gbV93ZWJWaWV3Ow0KKyAgICBSZXRhaW5QdHI8aWQ+IG1f
cHJvZ3Jlc3NTdWJzY3JpYmVyOw0KKyAgICBSZXRhaW5QdHI8TlNQcm9ncmVzcz4gbV9wcm9ncmVz
czsNCisgICAgUmV0YWluUHRyPF9XS0Rvd25sb2FkPiBtX2Rvd25sb2FkOw0KKyAgICBSZXRhaW5Q
dHI8RG93bmxvYWRQcm9ncmVzc1Rlc3RQcm90b2NvbD4gbV9wcm90b2NvbDsNCisgICAgQmxvY2tQ
dHI8dm9pZCh2b2lkKT4gbV91bnB1Ymxpc2hpbmdCbG9jazsNCisgICAgRG93bmxvYWRTdGFydFR5
cGUgbV9zdGFydFR5cGU7DQorICAgIE5TSW50ZWdlciBtX2V4cGVjdGVkTGVuZ3RoOw0KKyAgICBi
b29sIG1faGFzUHJvZ3Jlc3M7DQorICAgIGJvb2wgbV9sb3N0UHJvZ3Jlc3M7DQorICAgIGJvb2wg
bV9kb3dubG9hZFN0YXJ0ZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uOw0KKyAgICBib29sIG1fZG93bmxvYWRGaW5pc2hlZDsNCisgICAgYm9vbCBtX2Rvd25sb2Fk
Q2FuY2VsZWQ7DQorICAgIGJvb2wgbV9kb3dubG9hZEZhaWxlZDsNCisgICAgYm9vbCBtX2hhc1Vw
ZGF0ZWRDb21wbGV0ZWRVbml0Q291bnQ7DQorfQ0KKw0KKy0gKGluc3RhbmNldHlwZSlpbml0DQor
ew0KKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOw0KKw0KKyAgICBbRG93bmxvYWRQcm9ncmVzc1Rl
c3RQcm90b2NvbCByZWdpc3RlclByb3RvY29sRm9yVGVzdFJ1bm5lcjpzZWxmXTsNCisNCisgICAg
TlNTdHJpbmcgKmZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb3dubG9h
ZC1wcm9ncmVzcy0lQCIsIFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ107DQorICAgIG1fcHJvZ3Jl
c3NVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV0gaXNEaXJlY3Rvcnk6Tk9dOw0K
Kw0KKyAgICBjdXJyZW50VGVzdFJ1bm5lciA9IHNlbGY7DQorDQorICAgIG1fdW5wdWJsaXNoaW5n
QmxvY2sgPSBCbG9ja1B0cjx2b2lkKHZvaWQpPjo6ZnJvbUNhbGxhYmxlKFtzZWxmXSB7DQorICAg
ICAgICBbc2VsZiBfZGlkTG9zZVByb2dyZXNzXTsNCisgICAgfSkuZ2V0KCk7DQorDQorICAgIHJl
dHVybiBzZWxmOw0KK30NCisNCistIChfV0tEb3dubG9hZCAqKWRvd25sb2FkDQorew0KKyAgICBy
ZXR1cm4gbV9kb3dubG9hZC5nZXQoKTsNCit9DQorDQorLSAoTlNQcm9ncmVzcyAqKXByb2dyZXNz
DQorew0KKyAgICByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsNCit9DQorDQorLSAodm9pZClzdGFy
dExvYWRpbmdXaXRoUHJvdG9jb2w6KERvd25sb2FkUHJvZ3Jlc3NUZXN0UHJvdG9jb2wgKilwcm90
b2NvbA0KK3sNCisgICAgbV9wcm90b2NvbCA9IHByb3RvY29sOw0KKw0KKyAgICBhdXRvIHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnByb3RvY29s
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24veC10ZXN0LWZpbGUiIGV4cGVjdGVk
Q29udGVudExlbmd0aDptX2V4cGVjdGVkTGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bnVsbHB0cl0p
Ow0KKyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2w6bV9wcm90b2NvbC5n
ZXQoKSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgY2FjaGVTdG9yYWdlUG9saWN5
Ok5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07DQorfQ0KKw0KKy0gKHZvaWQpdGVhckRvd24N
Cit7DQorICAgIGlmIChtX3dlYlZpZXcpIHsNCisgICAgICAgIG1fd2ViVmlldy5nZXQoKS5jb25m
aWd1cmF0aW9uLnByb2Nlc3NQb29sLl9kb3dubG9hZERlbGVnYXRlID0gbnVsbHB0cjsNCisgICAg
ICAgIFttX3dlYlZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107DQorICAgICAgICBtX3dl
YlZpZXcgPSBudWxscHRyOw0KKyAgICB9DQorDQorICAgIGlmIChtX3Byb2dyZXNzU3Vic2NyaWJl
cikgew0KKyNpZiBVU0UoTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisgICAgICAgIFtOU1By
b2dyZXNzIF9yZW1vdmVTdWJzY3JpYmVyOm1fcHJvZ3Jlc3NTdWJzY3JpYmVyLmdldCgpXTsNCisj
ZWxzZQ0KKyAgICAgICAgW05TUHJvZ3Jlc3MgcmVtb3ZlU3Vic2NyaWJlcjptX3Byb2dyZXNzU3Vi
c2NyaWJlci5nZXQoKV07DQorI2VuZGlmDQorICAgICAgICBtX3Byb2dyZXNzU3Vic2NyaWJlciA9
IG51bGxwdHI7DQorICAgIH0NCisNCisgICAgbV9wcm9ncmVzcyA9IG51bGxwdHI7DQorICAgIG1f
ZG93bmxvYWQgPSBudWxscHRyOw0KKyAgICBtX3Byb3RvY29sID0gbnVsbHB0cjsNCisgICAgbV91
bnB1Ymxpc2hpbmdCbG9jayA9IG51bGxwdHI7DQorDQorICAgIFtEb3dubG9hZFByb2dyZXNzVGVz
dFByb3RvY29sIHVucmVnaXN0ZXJQcm90b2NvbF07DQorfQ0KKw0KKy0gKHZvaWQpX2RpZEdldFBy
b2dyZXNzOihOU1Byb2dyZXNzICopcHJvZ3Jlc3MNCit7DQorICAgIEFTU0VSVCghbV9wcm9ncmVz
cyk7DQorICAgIG1fcHJvZ3Jlc3MgPSBwcm9ncmVzczsNCisgICAgW3Byb2dyZXNzIGFkZE9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3VudCIgb3B0aW9uczpOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6cHJvZ3Jlc3NPYnNlcnZpbmdDb250ZXh0XTsN
CisgICAgbV9oYXNQcm9ncmVzcyA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2RpZExvc2VQcm9n
cmVzcw0KK3sNCisgICAgQVNTRVJUKG1fcHJvZ3Jlc3MpOw0KKyAgICBbbV9wcm9ncmVzcy5nZXQo
KSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiXTsN
CisgICAgbV9wcm9ncmVzcyA9IG51bGxwdHI7DQorICAgIG1fbG9zdFByb2dyZXNzID0gdHJ1ZTsN
Cit9DQorDQorLSAodm9pZClzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3MNCit7DQorICAgIGlm
ICghbV9wcm9ncmVzc1N1YnNjcmliZXIpIHsNCisgICAgICAgIGF1dG8gcHVibGlzaGluZ0hhbmRs
ZXIgPSBCbG9ja1B0cjxOU1Byb2dyZXNzVW5wdWJsaXNoaW5nSGFuZGxlcihOU1Byb2dyZXNzICop
Pjo6ZnJvbUNhbGxhYmxlKFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPERvd25sb2FkUHJvZ3Jlc3NU
ZXN0UnVubmVyPiB7IHNlbGYgfV0oTlNQcm9ncmVzcyAqcHJvZ3Jlc3MpIHsNCisgICAgICAgICAg
ICBpZiAoYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCkpIHsNCisgICAgICAgICAgICAg
ICAgW3N0cm9uZ1NlbGYuZ2V0KCkgX2RpZEdldFByb2dyZXNzOnByb2dyZXNzXTsNCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0cm9uZ1NlbGYtPm1fdW5wdWJsaXNoaW5nQmxvY2suZ2V0KCk7DQor
ICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU1Byb2dyZXNz
VW5wdWJsaXNoaW5nSGFuZGxlcj4obmlsKTsNCisgICAgICAgIH0pOw0KKw0KKyNpZiBVU0UoTlNQ
Uk9HUkVTU19QVUJMSVNISU5HX1NQSSkNCisgICAgICAgIG1fcHJvZ3Jlc3NTdWJzY3JpYmVyID0g
W05TUHJvZ3Jlc3MgX2FkZFN1YnNjcmliZXJGb3JGaWxlVVJMOm1fcHJvZ3Jlc3NVUkwuZ2V0KCkg
d2l0aFB1Ymxpc2hpbmdIYW5kbGVyOnB1Ymxpc2hpbmdIYW5kbGVyLmdldCgpXTsNCisjZWxzZQ0K
KyAgICAgICAgbV9wcm9ncmVzc1N1YnNjcmliZXIgPSBbTlNQcm9ncmVzcyBhZGRTdWJzY3JpYmVy
Rm9yRmlsZVVSTDptX3Byb2dyZXNzVVJMLmdldCgpIHdpdGhQdWJsaXNoaW5nSGFuZGxlcjpwdWJs
aXNoaW5nSGFuZGxlci5nZXQoKV07DQorI2VuZGlmDQorICAgIH0NCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZtX2hhc1Byb2dyZXNzKTsNCit9DQorDQorLSAodm9pZCl3YWl0VG9Mb3Nl
UHJvZ3Jlc3MNCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9sb3N0UHJvZ3Jl
c3MpOw0KK30NCisNCistICh2b2lkKXN0YXJ0RG93bmxvYWQ6KERvd25sb2FkU3RhcnRUeXBlKXN0
YXJ0VHlwZSBleHBlY3RlZExlbmd0aDooTlNJbnRlZ2VyKWV4cGVjdGVkTGVuZ3RoDQorew0KKyAg
ICBtX3N0YXJ0VHlwZSA9IHN0YXJ0VHlwZTsNCisgICAgbV9leHBlY3RlZExlbmd0aCA9IGV4cGVj
dGVkTGVuZ3RoOw0KKw0KKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOw0KKyAgICBtX3dlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOw0KKyAgICBtX3dlYlZpZXcuZ2V0KCkubmF2aWdh
dGlvbkRlbGVnYXRlID0gc2VsZjsNCisgICAgbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24u
cHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBzZWxmOw0KKw0KKyAgICBhdXRvIHJlcXVl
c3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly9maWxlIl1dKTsNCisNCisgICAgc3dpdGNoIChzdGFydFR5cGUp
IHsNCisgICAgY2FzZSBEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2FkOg0K
KyAgICBjYXNlIERvd25sb2FkU3RhcnRUeXBlOjpTdGFydEZyb21OYXZpZ2F0aW9uQWN0aW9uOg0K
KyAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsNCisgICAgICAg
IGJyZWFrOw0KKyAgICBjYXNlIERvd25sb2FkU3RhcnRUeXBlOjpTdGFydEluUHJvY2Vzc1Bvb2w6
DQorICAgICAgICBbbV93ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX2Rv
d25sb2FkVVJMUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsNCisgICAgICAgIGJyZWFrOw0KKyAgICB9
DQorDQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9kb3dubG9hZFN0YXJ0ZWQpOw0K
K30NCisNCistICh2b2lkKXB1Ymxpc2hQcm9ncmVzcw0KK3sNCisgICAgQVNTRVJUKG1fZG93bmxv
YWQpOw0KKw0KKyAgICBbbV9kb3dubG9hZC5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDptX3By
b2dyZXNzVVJMLmdldCgpXTsNCit9DQorDQorLSAodm9pZClyZWNlaXZlRGF0YTooTlNJbnRlZ2Vy
KWxlbmd0aA0KK3sNCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxs
b2NdIGluaXRdKTsNCisgICAgd2hpbGUgKGxlbmd0aC0tID4gMCkgew0KKyAgICAgICAgY29uc3Qg
Y2hhciBieXRlID0gJ0EnOw0KKyAgICAgICAgW2RhdGEuZ2V0KCkgYXBwZW5kQnl0ZXM6c3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZieXRlKSBsZW5ndGg6MV07DQorICAgIH0NCisNCisgICAgW21f
cHJvdG9jb2wuZ2V0KCkuY2xpZW50IFVSTFByb3RvY29sOm1fcHJvdG9jb2wuZ2V0KCkgZGlkTG9h
ZERhdGE6ZGF0YS5nZXQoKV07DQorfQ0KKw0KKy0gKHZvaWQpZmluaXNoRG93bmxvYWRUYXNrDQor
ew0KKyAgICBbbV9wcm90b2NvbC5nZXQoKS5jbGllbnQgVVJMUHJvdG9jb2xEaWRGaW5pc2hMb2Fk
aW5nOm1fcHJvdG9jb2wuZ2V0KCldOw0KK30NCisNCistICh2b2lkKWZhaWxEb3dubG9hZFRhc2sN
Cit7DQorICAgIFttX3Byb3RvY29sLmdldCgpLmNsaWVudCBVUkxQcm90b2NvbDptX3Byb3RvY29s
LmdldCgpIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJy
b3JEb21haW4gY29kZTpOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0IHVzZXJJbmZvOm51
bGxwdHJdXTsNCit9DQorDQorLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRDcmVhdGVEZXN0aW5h
dGlvbg0KK3sNCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZtX2Rvd25sb2FkRGlkQ3Jl
YXRlRGVzdGluYXRpb24pOw0KK30NCisNCistICh2b2lkKXdhaXRGb3JEb3dubG9hZEZpbmlzaGVk
DQorew0KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm1fZG93bmxvYWRGaW5pc2hlZCk7
DQorfQ0KKw0KKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkQ2FuY2VsZWQNCit7DQorICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9kb3dubG9hZENhbmNlbGVkKTsNCit9DQorDQorLSAodm9p
ZCl3YWl0Rm9yRG93bmxvYWRGYWlsZWQNCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmbV9kb3dubG9hZEZhaWxlZCk7DQorfQ0KKw0KKy0gKGludDY0X3Qpd2FpdEZvclVwZGF0ZWRD
b21wbGV0ZWRVbml0Q291bnQNCit7DQorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbV9o
YXNVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50KTsNCisgICAgbV9oYXNVcGRhdGVkQ29tcGxldGVk
VW5pdENvdW50ID0gZmFsc2U7DQorDQorICAgIHJldHVybiBtX3Byb2dyZXNzLmdldCgpLmNvbXBs
ZXRlZFVuaXRDb3VudDsNCit9DQorDQorLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihO
U1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFy
eTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRl
eHQNCit7DQorICAgIGlmIChjb250ZXh0ID09IHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCkgew0K
KyAgICAgICAgRVhQRUNUX0VRKG9iamVjdCwgbV9wcm9ncmVzcy5nZXQoKSk7DQorICAgICAgICBF
WFBFQ1RfU1RSRVEoa2V5UGF0aC5VVEY4U3RyaW5nLCAiY29tcGxldGVkVW5pdENvdW50Iik7DQor
ICAgICAgICBtX2hhc1VwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnQgPSB0cnVlOw0KKyAgICB9IGVs
c2UNCisgICAgICAgIFtzdXBlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmpl
Y3Q6b2JqZWN0IGNoYW5nZTpjaGFuZ2UgY29udGV4dDpjb250ZXh0XTsNCit9DQorDQorLy8gTUFS
SzogPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBNZXRob2RzDQorDQorLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyDQorew0K
KyAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9E
b3dubG9hZCkNCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCk7DQorICAgIGVsc2UNCisgICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsNCit9DQorDQorLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcg0KK3sNCisg
ICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpTdGFydEZyb21OYXZpZ2F0
aW9uQWN0aW9uKQ0KKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lEb3dubG9hZCk7DQorICAgIGVsc2UNCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7DQorfQ0KKw0KKy8vIE1BUks6IDxfV0tEb3dubG9h
ZERlbGVnYXRlPiBNZXRob2RzDQorDQorLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93
bmxvYWQgKilkb3dubG9hZA0KK3sNCisgICAgQVNTRVJUKCFtX2Rvd25sb2FkU3RhcnRlZCk7DQor
ICAgIEFTU0VSVCghbV9kb3dubG9hZCk7DQorDQorICAgIG1fZG93bmxvYWQgPSBkb3dubG9hZDsN
CisgICAgbV9kb3dubG9hZFN0YXJ0ZWQgPSB0cnVlOw0KK30NCisNCistICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcg
KilkZXN0aW5hdGlvbg0KK3sNCisgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2FkLmdl
dCgpKTsNCisgICAgbV9kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uID0gdHJ1ZTsNCit9DQor
DQorLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQNCit7
DQorICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7DQorICAgIG1fZG93
bmxvYWRGaW5pc2hlZCA9IHRydWU7DQorfQ0KKw0KKy0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2Vs
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkDQorew0KKyAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1f
ZG93bmxvYWQuZ2V0KCkpOw0KKyAgICBtX2Rvd25sb2FkQ2FuY2VsZWQgPSB0cnVlOw0KK30NCisN
CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3INCit7DQorICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3du
bG9hZC5nZXQoKSk7DQorICAgIG1fZG93bmxvYWRGYWlsZWQgPSB0cnVlOw0KK30NCisNCistICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSlj
b21wbGV0aW9uSGFuZGxlcg0KK3sNCisgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rvd25sb2Fk
LmdldCgpKTsNCisNCisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGVIYW5kbGU7DQorICAgIFJldGFpblB0cjxOU1N0cmluZyAqPiBwYXRoID0gKE5TU3RyaW5n
ICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsNCisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsNCisgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOw0KKw0KKyAgICBjb21wbGV0aW9uSGFuZGxl
cihZRVMsIHBhdGguZ2V0KCkpOw0KK30NCisNCitAZW5kDQorDQorLy8gRW5kLXRvLWVuZCB0ZXN0
IG9mIHN1YnNjcmliaW5nIHRvIHByb2dyZXNzIG9uIGEgc3VjY2Vzc2Z1bCBkb3dubG9hZC4gVGhl
IGNsaWVudA0KKy8vIHNob3VsZCBiZSBhYmxlIHRvIHJlY2VpdmUgYW4gTlNQcm9ncmVzcyB0aGF0
IGlzIHVwZGF0ZWQgYXMgdGhlIGRvd25sb2FkIG1ha2VzDQorLy8gcHJvZ3Jlc3MsIGFuZCB0aGUg
TlNQcm9ncmVzcyBzaG91bGQgYmUgdW5wdWJsaXNoZWQgd2hlbiB0aGUgZG93bmxvYWQgZmluaXNo
ZXMuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBCYXNpY1N1YnNjcmlwdGlvbkFuZFByb2dyZXNz
VXBkYXRlcykNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFBy
b2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQg
ZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dy
ZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNz
XTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAgICBFWFBF
Q1RfRVEoW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvclVwZGF0ZWRDb21wbGV0ZWRVbml0Q291bnRd
LCA1MCk7DQorICAgIEVYUEVDVF9FUSh0ZXN0UnVubmVyLmdldCgpLnByb2dyZXNzLmZyYWN0aW9u
Q29tcGxldGVkLCAuNSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUw
XTsNCisgICAgRVhQRUNUX0VRKFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxl
dGVkVW5pdENvdW50XSwgMTAwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJv
Z3Jlc3MuZnJhY3Rpb25Db21wbGV0ZWQsIDEpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBm
aW5pc2hEb3dubG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxv
YWRGaW5pc2hlZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107
DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gU2ltaWxh
ciB0ZXN0IGFzIGJlZm9yZSwgYnV0IGluaXRpYXRpbmcgdGhlIGRvd25sb2FkIGJlZm9yZSByZWNl
aXZpbmcgaXRzIHJlc3BvbnNlLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgU3RhcnREb3dubG9h
ZEZyb21OYXZpZ2F0aW9uQWN0aW9uKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHRO
UyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OlN0YXJ0RnJv
bU5hdmlnYXRpb25BY3Rpb24gZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJl
QW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6
MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAg
W3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1
bm5lci5nZXQoKSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSB0ZWFyRG93bl07DQorfQ0KKw0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgU3RhcnREb3dubG9h
ZEluUHJvY2Vzc1Bvb2wpDQorew0KKyAgICBhdXRvIHRlc3RSdW5uZXIgPSBhZG9wdE5TKFtbRG93
bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsNCisNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlwZTo6U3RhcnRJblByb2Nlc3NQ
b29sIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHB1Ymxpc2hQ
cm9ncmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHN1YnNjcmliZUFuZFdhaXRGb3JQcm9n
cmVzc107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjEwMF07DQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFza107DQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2Fp
dFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0K
K30NCisNCisvLyBJZiB0aGUgZG93bmxvYWQgaXMgY2FuY2VsZWQsIHRoZSBwcm9ncmVzcyBzaG91
bGQgYmUgdW5wdWJsaXNoZWQuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBMb3NlUHJvZ3Jlc3NX
aGVuRG93bmxvYWRJc0NhbmNlbGVkKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHRO
UyhbW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRM
b2FkVG9Eb3dubG9hZCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSBwdWJsaXNoUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRX
YWl0Rm9yUHJvZ3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07
DQorICAgIFt0ZXN0UnVubmVyLmdldCgpLmRvd25sb2FkIGNhbmNlbF07DQorICAgIFt0ZXN0UnVu
bmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZENhbmNlbGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0
KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRv
d25dOw0KK30NCisNCisvLyBJZiB0aGUgZG93bmxvYWQgZmFpbHMsIHRoZSBwcm9ncmVzcyBzaG91
bGQgYmUgdW5wdWJsaXNoZWQuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBMb3NlUHJvZ3Jlc3NX
aGVuRG93bmxvYWRGYWlscykNCit7DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tE
b3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1
bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRv
RG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVi
bGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZv
clByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKyAg
ICBbdGVzdFJ1bm5lci5nZXQoKSBmYWlsRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgd2FpdEZvckRvd25sb2FkRmFpbGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2Fp
dFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0K
K30NCisNCisvLyBDYW5jZWxpbmcgdGhlIHByb2dyZXNzIHNob3VsZCBjYW5jZWwgdGhlIGRvd25s
b2FkLg0KK1RFU1QoRG93bmxvYWRQcm9ncmVzcywgQ2FuY2VsRG93bmxvYWRXaGVuUHJvZ3Jlc3NJ
c0NhbmNlbGVkKQ0KK3sNCisgICAgYXV0byB0ZXN0UnVubmVyID0gYWRvcHROUyhbW0Rvd25sb2Fk
UHJvZ3Jlc3NUZXN0UnVubmVyIGFsbG9jXSBpbml0XSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdl
dCgpIHN0YXJ0RG93bmxvYWQ6RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9h
ZCBleHBlY3RlZExlbmd0aDoxMDBdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJv
Z3Jlc3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jl
c3NdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpLnByb2dyZXNzIGNhbmNlbF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdh
aXRGb3JEb3dubG9hZENhbmNlbGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgd2FpdFRvTG9z
ZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisN
CisvLyBQdWJsaXNoaW5nIHByb2dyZXNzIG9uIGEgZG93bmxvYWQgYWZ0ZXIgaXQgaGFzIGZpbmlz
aGVkIHNob3VsZCBiZSBhIHNhZmUgbm8tb3AuDQorVEVTVChEb3dubG9hZFByb2dyZXNzLCBQdWJs
aXNoUHJvZ3Jlc3NBZnRlckRvd25sb2FkRmluaXNoZWQpDQorew0KKyAgICBhdXRvIHRlc3RSdW5u
ZXIgPSBhZG9wdE5TKFtbRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgYWxsb2NdIGluaXRdKTsN
CisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgc3RhcnREb3dubG9hZDpEb3dubG9hZFN0YXJ0VHlw
ZTo6Q29udmVydExvYWRUb0Rvd25sb2FkIGV4cGVjdGVkTGVuZ3RoOjEwMF07DQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjEwMF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZp
bmlzaERvd25sb2FkVGFza107DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9h
ZEZpbmlzaGVkXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisN
CisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgdGVhckRvd25dOw0KK30NCisNCisvLyBUZXN0IHRoZSBi
ZWhhdmlvciBvZiBhIGRvd25sb2FkIG9mIHVua25vd24gbGVuZ3RoLg0KK1RFU1QoRG93bmxvYWRQ
cm9ncmVzcywgSW5kZXRlcm1pbmF0ZURvd25sb2FkU2l6ZSkNCit7DQorICAgIGF1dG8gdGVzdFJ1
bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciBhbGxvY10gaW5pdF0p
Ow0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2FkOkRvd25sb2FkU3RhcnRU
eXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6TlNVUkxSZXNwb25zZVVu
a25vd25MZW5ndGhdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBwdWJsaXNoUHJvZ3Jlc3NdOw0K
KyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdWJzY3JpYmVBbmRXYWl0Rm9yUHJvZ3Jlc3NdOw0KKyAg
ICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy50b3RhbFVuaXRDb3VudCwgLTEp
Ow0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSByZWNlaXZlRGF0YTo1MF07DQorICAgIEVYUEVD
VF9FUShbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yVXBkYXRlZENvbXBsZXRlZFVuaXRDb3VudF0s
IDUwKTsNCisgICAgRVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jlc3MuZnJhY3Rpb25D
b21wbGV0ZWQsIDApOw0KKyAgICBFWFBFQ1RfRVEodGVzdFJ1bm5lci5nZXQoKS5wcm9ncmVzcy50
b3RhbFVuaXRDb3VudCwgLTEpOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBmaW5pc2hEb3du
bG9hZFRhc2tdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB3YWl0Rm9yRG93bmxvYWRGaW5pc2hl
ZF07DQorICAgIFt0ZXN0UnVubmVyLmdldCgpIHdhaXRUb0xvc2VQcm9ncmVzc107DQorDQorICAg
IFt0ZXN0UnVubmVyLmdldCgpIHRlYXJEb3duXTsNCit9DQorDQorLy8gVGVzdCB0aGUgYmVoYXZp
b3Igd2hlbiBhIGRvd25sb2FkIGNvbnRpbnVlcyByZXR1cm5pbmcgZGF0YSBiZXlvbmQgaXRzIGV4
cGVjdGVkIGxlbmd0aC4NCitURVNUKERvd25sb2FkUHJvZ3Jlc3MsIEV4dHJhRGF0YSkNCit7DQor
ICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5l
ciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25sb2Fk
OkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5ndGg6
MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rl
c3RSdW5uZXIuZ2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisNCisgICAgW3Rl
c3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6MTUwXTsNCisgICAgRVhQRUNUX0VRKFt0ZXN0UnVu
bmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50XSwgMTUwKTsNCisgICAg
RVhQRUNUX0VRKHRlc3RSdW5uZXIuZ2V0KCkucHJvZ3Jlc3MuZnJhY3Rpb25Db21wbGV0ZWQsIDEu
NSk7DQorDQorICAgIFt0ZXN0UnVubmVyLmdldCgpIGZpbmlzaERvd25sb2FkVGFza107DQorICAg
IFt0ZXN0UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZEZpbmlzaGVkXTsNCisgICAgW3Rlc3RS
dW5uZXIuZ2V0KCkgd2FpdFRvTG9zZVByb2dyZXNzXTsNCisNCisgICAgW3Rlc3RSdW5uZXIuZ2V0
KCkgdGVhckRvd25dOw0KK30NCisNCisvLyBDbGllbnRzIHNob3VsZCBiZSBhYmxlIHRvIHB1Ymxp
c2ggcHJvZ3Jlc3Mgb24gYSBkb3dubG9hZCB0aGF0IGhhcyBhbHJlYWR5IHN0YXJ0ZWQuDQorVEVT
VChEb3dubG9hZFByb2dyZXNzLCBQdWJsaXNoUHJvZ3Jlc3NPblBhcnRpYWxEb3dubG9hZCkNCit7
DQorICAgIGF1dG8gdGVzdFJ1bm5lciA9IGFkb3B0TlMoW1tEb3dubG9hZFByb2dyZXNzVGVzdFJ1
bm5lciBhbGxvY10gaW5pdF0pOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSBzdGFydERvd25s
b2FkOkRvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQgZXhwZWN0ZWRMZW5n
dGg6MTAwXTsNCisgICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcmVjZWl2ZURhdGE6NTBdOw0KKw0KKyAg
ICAvLyBFbnN1cmUgdGhhdCB0aGUgdGhlIGRhdGEgdGFzayBoYXMgYmVjb21lIGEgZG93bmxvYWQg
dGFzayBzbyB0aGF0IHdlIHRlc3QNCisgICAgLy8gdGVsbGluZyBhIGxpdmUgRG93bmxvYWQsIG5v
dCBhIFBlbmRpbmdEb3dubG9hZCwgdG8gcHVibGlzaCBpdHMgcHJvZ3Jlc3MuDQorICAgIFt0ZXN0
UnVubmVyLmdldCgpIHdhaXRGb3JEb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uXTsNCisNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgcHVibGlzaFByb2dyZXNzXTsNCisgICAgW3Rlc3RSdW5uZXIu
Z2V0KCkgc3Vic2NyaWJlQW5kV2FpdEZvclByb2dyZXNzXTsNCisgICAgRVhQRUNUX0VRKHRlc3RS
dW5uZXIuZ2V0KCkucHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50LCA1MCk7DQorDQorICAgIFt0
ZXN0UnVubmVyLmdldCgpIHJlY2VpdmVEYXRhOjUwXTsNCisgICAgRVhQRUNUX0VRKFt0ZXN0UnVu
bmVyLmdldCgpIHdhaXRGb3JVcGRhdGVkQ29tcGxldGVkVW5pdENvdW50XSwgMTAwKTsNCisNCisg
ICAgW3Rlc3RSdW5uZXIuZ2V0KCkgZmluaXNoRG93bmxvYWRUYXNrXTsNCisgICAgW3Rlc3RSdW5u
ZXIuZ2V0KCkgd2FpdEZvckRvd25sb2FkRmluaXNoZWRdOw0KKyAgICBbdGVzdFJ1bm5lci5nZXQo
KSB3YWl0VG9Mb3NlUHJvZ3Jlc3NdOw0KKw0KKyAgICBbdGVzdFJ1bm5lci5nZXQoKSB0ZWFyRG93
bl07DQorfQ0KKw0KKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRA0K
</data>

          </attachment>
      

    </bug>

</bugzilla>