<?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>208533</bug_id>
          
          <creation_ts>2020-03-03 13:19:02 -0800</creation_ts>
          <short_desc>[WebAuthn] Implement -[_WKWebAuthenticationPanelDelegate panel:decidePolicyForLocalAuthenticatorWithCompletionHandler:] SPI</short_desc>
          <delta_ts>2020-03-04 17:03:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625204</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-03 13:19:02 -0800</bug_when>
    <thetext>Implement -[_WKWebAuthenticationPanelDelegate panel:decidePolicyForLocalAuthenticatorWithCompletionHandler:] SPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625205</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-03 13:19:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/60010184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625218</commentid>
    <comment_count>2</comment_count>
      <attachid>392320</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-03 13:40:22 -0800</bug_when>
    <thetext>Created attachment 392320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625223</commentid>
    <comment_count>3</comment_count>
      <attachid>392320</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-03 13:43:02 -0800</bug_when>
    <thetext>Comment on attachment 392320
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:93
&gt; +@property (nonatomic, readonly, copy) NSSet *transports;

Should mention this change in the change log as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625228</commentid>
    <comment_count>4</comment_count>
      <attachid>392325</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-03 13:54:29 -0800</bug_when>
    <thetext>Created attachment 392325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625259</commentid>
    <comment_count>5</comment_count>
      <attachid>392333</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-03 14:38:39 -0800</bug_when>
    <thetext>Created attachment 392333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625550</commentid>
    <comment_count>6</comment_count>
      <attachid>392333</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 09:22:34 -0800</bug_when>
    <thetext>Comment on attachment 392333
Patch

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

&gt; Source/WebCore/platform/LocalizedStrings.cpp:1213
&gt; +    return WEB_UI_STRING(&quot;Touch ID to sign into this website.&quot;, &quot;Use Touch ID to sign into this website&quot;);

What about Face ID?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.h:53
&gt; +    enum class UserVerification {

: bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625650</commentid>
    <comment_count>7</comment_count>
      <attachid>392333</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 11:31:47 -0800</bug_when>
    <thetext>Comment on attachment 392333
Patch

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

Thanks Alex for the review.

&gt;&gt; Source/WebCore/platform/LocalizedStrings.cpp:1213
&gt;&gt; +    return WEB_UI_STRING(&quot;Touch ID to sign into this website.&quot;, &quot;Use Touch ID to sign into this website&quot;);
&gt; 
&gt; What about Face ID?

FaceID prompt doesn&apos;t show any title/message strings.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.h:53
&gt;&gt; +    enum class UserVerification {
&gt; 
&gt; : bool

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625652</commentid>
    <comment_count>8</comment_count>
      <attachid>392446</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 11:34:08 -0800</bug_when>
    <thetext>Created attachment 392446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625670</commentid>
    <comment_count>9</comment_count>
      <attachid>392333</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 11:44:20 -0800</bug_when>
    <thetext>Comment on attachment 392333
Patch

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

&gt; Source/WebKit/UIProcess/API/APIWebAuthenticationPanelClient.h:54
&gt; +    // FIXME: Ideally, LocalAuthenticatorPolicy::Disallow should be used. This is a quirk to bypass C API for WebKitTestRunner.

Let&apos;s not commit this.  Make the C API.  The default should be safe.
You don&apos;t have to make it fully asynchronous with a listener object and new object type, but please add a new C API client type with this callback that returns a bool, then WebKitTestRunner&apos;s implementation will return true and the default will be false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625686</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 12:10:21 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 392333 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392333&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIWebAuthenticationPanelClient.h:54
&gt; &gt; +    // FIXME: Ideally, LocalAuthenticatorPolicy::Disallow should be used. This is a quirk to bypass C API for WebKitTestRunner.
&gt; 
&gt; Let&apos;s not commit this.  Make the C API.  The default should be safe.
&gt; You don&apos;t have to make it fully asynchronous with a listener object and new
&gt; object type, but please add a new C API client type with this callback that
&gt; returns a bool, then WebKitTestRunner&apos;s implementation will return true and
&gt; the default will be false.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625689</commentid>
    <comment_count>11</comment_count>
      <attachid>392455</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 12:15:13 -0800</bug_when>
    <thetext>Created attachment 392455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625696</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 12:36:48 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #11)
&gt; Created attachment 392455 [details]
&gt; Patch

Thanks, Alex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625717</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 13:16:20 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 392455:

editing/spelling/spellcheck-paste-continuous-disabled.html bug 208016 (authors: g.czajkowski@samsung.com and mark.lam@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625722</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 13:17:03 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 392455:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
svg/custom/object-sizing-explicit-height.xhtml bug 208592 (author: zimmermann@kde.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625745</commentid>
    <comment_count>15</comment_count>
      <attachid>392455</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 13:35:18 -0800</bug_when>
    <thetext>Comment on attachment 392455
Patch

Rejecting attachment 392455 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 392455, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
coa/LocalAuthenticator.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalService.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h
	M	Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm
	M	Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationFlags.h
	M	Tools/ChangeLog
	M	Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
	M	Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm

ERROR from SVN:
Merge conflict during commit: Conflict at &apos;/trunk/Source/WebKit/ChangeLog&apos;
W: 937f80b4205f4987cb9a9d2ec8958d431ccbf351 and refs/remotes/origin/master differ, using rebase:
:040000 040000 a84a575ecae8477dd96f98fad91114e27723d018 6109000d1db81b6f0d5dc73d51b1fdea817f4f32 M	LayoutTests
:040000 040000 81cb632c531721fd1a234479ec9a2a896999554c 531e3b2f1c1c5c8c6b674937f3171e70ba8c7fa6 M	Source
:040000 040000 5443204dbe643da13513ba0c30cbe2ebd8a36bd2 1cbfe2da399663568c33343d7e846427f6383142 M	Tools
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-la.html
	M	LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-local.https.html
	M	LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-local.https.html
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/en.lproj/Localizable.strings
	M	Source/WebCore/platform/LocalizedStrings.cpp
	M	Source/WebCore/platform/LocalizedStrings.h
	M	Source/WebKit/ChangeLog
	M	Source/WebKit/Platform/spi/Cocoa/LocalAuthenticationSPI.h
	M	Source/WebKit/UIProcess/API/APIWebAuthenticationPanelClient.h
	M	Source/WebKit/UIProcess/API/C/WKPage.cpp
	M	Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h
	M	Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Authenticator.h
	M	Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp
	M	Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalService.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h
	M	Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm
	M	Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h
	M	Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm
	M	Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationFlags.h
	M	Tools/ChangeLog
	M	Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
	M	Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm

ERROR from SVN:
Merge conflict during commit: Conflict at &apos;/trunk/Source/WebKit/ChangeLog&apos;
W: 937f80b4205f4987cb9a9d2ec8958d431ccbf351 and refs/remotes/origin/master differ, using rebase:
:040000 040000 a84a575ecae8477dd96f98fad91114e27723d018 6109000d1db81b6f0d5dc73d51b1fdea817f4f32 M	LayoutTests
:040000 040000 81cb632c531721fd1a234479ec9a2a896999554c 531e3b2f1c1c5c8c6b674937f3171e70ba8c7fa6 M	Source
:040000 040000 5443204dbe643da13513ba0c30cbe2ebd8a36bd2 1cbfe2da399663568c33343d7e846427f6383142 M	Tools
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
From https://git.webkit.org/git/WebKit
   0a6a1caeff1..19142dbcd32  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 257873 = 0a6a1caeff1415c65c45148a6b570c2e464b64c3
r257874 = 26e4328157b5c42de5d895971532024d34f9c9a9
r257875 = 19142dbcd32c2c760f38ad4fc7c0023f88f72d7a
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: https://webkit-queues.webkit.org/results/13333637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625752</commentid>
    <comment_count>16</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 13:42:44 -0800</bug_when>
    <thetext>Committed r257877: &lt;https://trac.webkit.org/changeset/257877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625859</commentid>
    <comment_count>17</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-04 17:03:21 -0800</bug_when>
    <thetext>A build fix:
Committed r257891: &lt;https://trac.webkit.org/changeset/257891&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392320</attachid>
            <date>2020-03-03 13:40:22 -0800</date>
            <delta_ts>2020-03-03 13:54:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208533-20200303134021.patch</filename>
            <type>text/plain</type>
            <size>55178</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwNmZmMTliMDEyY2Uy
Yjg1MGYyMzZiYmM5NDk4ZmMyNzIyZjkxNC4uZWYyMTgyYTZiNjQ0YmU4ZjExZGM1MTc3MDAwNDk1
MjJmZDA1YzJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTAzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOl0gU1BJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1MzMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3RzIHdpdGhpbiBleGlzdGlu
ZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpiaW9tZXRyaWNGYWxs
YmFja1Byb21wdFRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6
CisgICAgICAgIEFkZHMgbG9jYWxpemVkIHN0cmluZ3MgdG8gc3VwcG9ydCB0aGUgY3VzdG9taXpl
ZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZy4KKwogMjAyMC0wMy0wMiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYXBwaW5nIGZyb20g
TUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDZhZjZhMWYwZDZlOTZjYjFmYjQ2YTYzMTVkOWE4NGYzZWE5Yjg0MTUuLjUwYWZi
ZTk5NmFhOWIyMGQ0MTBkYmVhZjc2Yzk2NWRkNmQ4OWU3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjAgQEAKKzIwMjAtMDMtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMTAxODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIHRoZSBhYm92ZSBTUEkgdG8gcmVwbGFjZSAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6XS4KKyAgICAgICAgVGhlIG9yaWdpbmFsIFNQSSBpcyBkZXNpZ25lZCBvbiB0aGUg
cHJlbWlzZSB0aGF0IFNhZmFyaSBpcyBnb2luZyB0byBoaWdobHkgY3VzdG9taXplIHRoZSBMb2Nh
bEF1dGhlbnRpY2F0aW9uIFVJLCBhbmQgdGhhdCBpcyBub3QgaGFwcGVuaW5nCisgICAgICAgIGFu
eW1vcmUuIFRoZXJlZm9yZSwgV2ViS2l0IHRha2VzIGJhY2sgdGhlIGludm9jYXRpb24gb2YgTG9j
YWxBdXRoZW50aWNhdGlvbiBhbmQgb2ZmZXIgYSBuZXcgU1BJIHRvIHRlbGwgY2xpZW50cyB3aGVu
IFdlYktpdCBpcyBhYm91dCB0bworICAgICAgICBzaG93IExvY2FsQXV0aGVudGljYXRpb24gVUku
IENsaWVudHMgdGhlbiBoYXZlIHRoZSB0cmlnZ2VyIHRvIHB1bGwgYXQgdGhlaXIgcGxlYXN1cmUu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFsbCBwbHVtYmluZ3MgdG8gcmVwbGFj
ZSB0aGUgU1BJLiBUaGVuIGl0IGVuaGFuY2VzIHRoZSBMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVz
ZXIgd2l0aCBhIHNsaWdodGx5IGN1c3RvbWl6ZWQKKyAgICAgICAgTG9jYWxBdXRoZW50aWNhdGlv
biBkaWFsb2cuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IgY29uc3QpOgorICAgICAgICAoQVBJ
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgdHJhbnNwb3J0
c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OmRlY2lk
ZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3Jl
ZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0
QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6Okxv
Y2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0
aW9uOjp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9u
Ojppc1VubG9ja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2Nh
bFNlcnZpY2U6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6bG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0xvY2FsQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tM
b2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
TG9jYWxDb25uZWN0aW9uOjppc1VubG9ja2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oOgorCiAy
MDIwLTAzLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIE1hcHBpbmcgZnJvbSBNSU1FIHR5cGUgdG8gVVRJIHR5cGUgc2hvdWxkIGJlIGRv
bmUgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzCmluZGV4IDZkNzljNWMwMmExOWM2NjljMzc3ZTZjMDYwYzMyYTU0NWJjZWVkOWYu
Ljc1NTIyNWU2YmEzZGUzMTM4ZDM2NmYxNDdmZmY1Yjg0YTI4ZmFkOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dl
YkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMzEwLDYgKzMxMCw5IEBACiAv
KiBWaWRlbyBFbnRlciBGdWxsIFNjcmVlbiBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkVudGVyIEZ1
bGwgU2NyZWVuIiA9ICJFbnRlciBGdWxsIFNjcmVlbiI7CiAKKy8qIFVzZSBwYXNzY29kZSBhcyBh
IGZhbGxiYWNrIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUgKi8KKyJFbnRlciBwYXNzY29kZSB0
byBzaWduIGludG8gdGhpcyB3ZWJzaXRlLiIgPSAiRW50ZXIgcGFzc2NvZGUgdG8gc2lnbiBpbnRv
IHRoaXMgd2Vic2l0ZS4iOworCiAvKiBtZW51IGl0ZW0gKi8KICJFbnRlciBQaWN0dXJlIGluIFBp
Y3R1cmUiID0gIkVudGVyIFBpY3R1cmUgaW4gUGljdHVyZSI7CiAKQEAgLTg3Nyw2ICs4ODAsOSBA
QAogLyogcHJvbXB0IHN0cmluZyBpbiBhdXRoZW50aWNhdGlvbiBwYW5lbCAqLwogIlRvIHZpZXcg
dGhpcyBwYWdlLCB5b3UgbXVzdCBsb2cgaW4gdG8gdGhpcyBhcmVhIG9uICVAOiIgPSAiVG8gdmll
dyB0aGlzIHBhZ2UsIHlvdSBtdXN0IGxvZyBpbiB0byB0aGlzIGFyZWEgb24gJUA6IjsKIAorLyog
VXNlIFRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUgKi8KKyJUb3VjaCBJRCB0byBz
aWduIGludG8gdGhpcyB3ZWJzaXRlLiIgPSAiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRoaXMgd2Vi
c2l0ZS4iOworCiAvKiBUcmFuc2Zvcm1hdGlvbnMgY29udGV4dCBzdWItbWVudSBpdGVtICovCiAi
VHJhbnNmb3JtYXRpb25zIiA9ICJUcmFuc2Zvcm1hdGlvbnMiOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IGExMTRmZDc2MWY5MmEwYTVkOTk2
YjBmYWVlMGIwN2E1MzA5MDI1ODguLjlhYzBiZDI5MjBjY2JhNTkzZTliYTA3ZWU2ZjNlNjU4MjVi
YTJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CkBAIC0xMjA3LDQgKzEyMDcsMTYgQEAgU3RyaW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRl
KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKK1N0cmluZyB0b3VjaElEUHJv
bXB0VGl0bGUoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJUb3VjaCBJRCB0byBzaWdu
IGludG8gdGhpcyB3ZWJzaXRlLiIsICJVc2UgVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRoaXMgd2Vi
c2l0ZSIpOworfQorCitTdHJpbmcgYmlvbWV0cmljRmFsbGJhY2tQcm9tcHRUaXRsZSgpCit7Cisg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkVudGVyIHBhc3Njb2RlIHRvIHNpZ24gaW50byB0aGlz
IHdlYnNpdGUuIiwgIlVzZSBwYXNzY29kZSBhcyBhIGZhbGxiYWNrIHRvIHNpZ24gaW50byB0aGlz
IHdlYnNpdGUiKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXggM2UzMzE2NGZiMmQ3ODUz
NjhhNTc3NGVkNGFiMWYzZWFjYWY0NTI3YS4uZDcxODQ3MmM0YWRhM2ViN2M0NGU1YmM3YjllYjQ2
YzYwNzE1YWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
aApAQCAtMzM5LDYgKzMzOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGRhdGVQaWNrZXJZZWFyTGFiZWxUaXRsZSgpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b3VjaElEUHJvbXB0
VGl0bGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYmlvbWV0cmljRmFsbGJhY2tQcm9t
cHRUaXRsZSgpOworI2VuZGlmCisKICNpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BB
Q0tBR0UpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKF8oc3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVko
c3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ18oa2V5
LCBzdHJpbmcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29j
b2EvTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oCmluZGV4IGU2N2YyYmZjYWRkMzBjZjViMmVmMjFh
ODYxMzFlY2NjMDgyOGUyMjYuLmE1MzkxZTg4MDk5N2ZkNzM0ZmEzZjg2NWYwOTY2YjhkMDA3Nzc5
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0
aGVudGljYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9M
b2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTM0LDEyICszNCwxMyBAQAogI2Vsc2UKIAogdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTEFPcHRpb24pIHsKLSAgICBMQU9wdGlvbk5vdEludGVy
YWN0aXZlLAorICAgIExBT3B0aW9uQXV0aGVudGljYXRpb25UaXRsZSwKKyAgICBMQU9wdGlvblBh
c3Njb2RlVGl0bGUsCiB9OwogCiBAaW50ZXJmYWNlIExBQ29udGV4dChQcml2YXRlKSA8TlNTZWN1
cmVDb2Rpbmc+CiAKLS0gKE5TRGljdGlvbmFyeSAqKWV2YWx1YXRlUG9saWN5OihMQVBvbGljeSlw
b2xpY3kgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKill
cnJvcjsKKy0gKHZvaWQpZXZhbHVhdGVQb2xpY3k6KExBUG9saWN5KXBvbGljeSBvcHRpb25zOihO
U0RpY3Rpb25hcnkgKilvcHRpb25zIHJlcGx5Oih2b2lkKF4pKE5TRGljdGlvbmFyeSAqcmVzdWx0
LCBOU0Vycm9yICplcnJvcikpcmVwbHk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgKaW5kZXggOGMzNjg1MzNlYTBiMjE0ZjAxYmE3Y2JkOWRkNWI1OWNhNTJlMTQ4MS4uODQ2MDA4
Y2RkNTc1MDg1ZDFkNWM0OGZkZGI1YzVlMTg0ZjU0OTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5j
bHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTM5LDExICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1l
bnVtIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdDsKLWVudW0gY2xhc3Mg
V2ViQXV0aGVudGljYXRpb25SZXN1bHQgOiBib29sOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAog
Y2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCB7CkBAIC01NSw3ICs1MSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3BvbnNlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBBU1NFUlQoIXJlc3BvbnNlcy5p
c0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7IH0KKyAgICAvLyBGSVhNRTogSWRlYWxseSwgTG9jYWxBdXRoZW50
aWNhdG9yUG9saWN5OjpEaXNhbGxvdyBzaG91bGQgYmUgdXNlZC4gVGhpcyBpcyBhIHF1aXJrIHRv
IGJ5cGFzcyBDIEFQSSBmb3IgV2ViS2l0VGVzdFJ1bm5lci4KKyAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
S2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpB
bGxvdyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmgKaW5kZXggOTc0MWRkNjJjNjFmZThmYmFmMTdlMjg1ZWYxMDFkZmY1YmY4MDhmZS4uODgzZGZm
NDdhMTRmMjhkNmJmZDJlZWY3ZTJlODg0YmVlZTE5NzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5oCkBAIC02OCw2ICs2OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVHZXQs
CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGlj
eSkgeworICAgIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93LAorICAgIF9XS0xvY2Fs
QXV0aGVudGljYXRvclBvbGljeURpc2FsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvdG9jb2wgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KIAogQG9wdGlvbmFsCkBAIC03Niw3ICs4MSw3
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSkg
ewogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21p
c3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25S
ZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKXBh
bmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClwYW5l
bDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxvY2Fs
QXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLTG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkBAIC04NSw3
ICs5MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKQogCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlkIDxfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+IGRlbGVnYXRlOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQ7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXkgKnRyYW5zcG9ydHM7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU2V0ICp0cmFuc3BvcnRzOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUgdHlw
ZTsKIAogLSAodm9pZCljYW5jZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDE5
NzNiMGY1NjRkMjUxYjIwY2YyNmEzNmEzYTY0ZDhhMjUyODIyZjMuLjI1ODYyYmRjYjcwYjA5NDc0
MzhlZjJiNTdkYzk3ODNkOGQ0ODNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBA
IC0zMyw3ICszMyw3IEBACiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBXZWFrUHRyPFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudD4gX2NsaWVudDsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IF90cmFuc3BvcnRzOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IF90cmFuc3BvcnRz
OwogI2VuZGlmCiB9CiAKQEAgLTgxLDEzICs4MSwxMyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydChXZWJDb3JlOjpBdXRo
ZQogICAgIH0KIH0KIAotLSAoTlNBcnJheSAqKXRyYW5zcG9ydHMKKy0gKE5TU2V0ICopdHJhbnNw
b3J0cwogewogICAgIGlmIChfdHJhbnNwb3J0cykKICAgICAgICAgcmV0dXJuIF90cmFuc3BvcnRz
LmdldCgpOwogCiAgICAgYXV0byYgdHJhbnNwb3J0cyA9IF9wYW5lbC0+dHJhbnNwb3J0cygpOwot
ICAgIF90cmFuc3BvcnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTp0cmFuc3BvcnRzLnNpemUoKV07CisgICAgX3RyYW5zcG9ydHMgPSBbW05TTXV0YWJsZVNldCBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0cmFuc3BvcnRzLnNpemUoKV07CiAgICAgZm9yIChhdXRv
JiB0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKQogICAgICAgICBbX3RyYW5zcG9ydHMgYWRkT2JqZWN0
OmFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6d2tXZWJBdXRoZW50aWNhdGlv
blRyYW5zcG9ydCh0cmFuc3BvcnQpXSkuZ2V0KCldOwogICAgIHJldHVybiBfdHJhbnNwb3J0cy5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3IuaAppbmRleCA5MWQ5OWVkNTJiNmRiMWRlZmFiMTU5NjI0MzEw
Njc5ZjNjYWQ2NzRlLi41NjcxYWVjNzY5NzgyNmRkMWVlMTMxYmFiOWZmNzg5NmIyZDQ1NDgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3Rh
dHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNl
dDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSYpPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vz
c0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3Io
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSA9IDA7
CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggZmNjMjdhZDY2ZjMyMzY4NGU5Yzdk
NGY4NmI1YWM3NGZmMGY2MmIwOS4uYzM5MTgwMWIzYzJlMDU5MTk0YTVkYTc2Yjc5ODM0Y2FmNDcx
NzA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjk1LDExICsy
OTUsMTAgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgSGFzaFNldDxSZWY8QXV0aGVudGljYXQKICAgICB9KTsKIH0KIAotdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9y
UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZXRhaW5QdHI8U2VjQWNjZXNz
Q29udHJvbFJlZj4gYWNjZXNzQ29udHJvbCA9IGFjY2Vzc0NvbnRyb2xSZWY7Ci0gICAgZGlzcGF0
Y2hQYW5lbENsaWVudENhbGwoW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3Qg
QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7Ci0gICAgICAgIHBh
bmVsLmNsaWVudCgpLnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbC5nZXQoKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNsaWVudCgp
LmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4
IGU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQuLmJkMGI5NmQ0Yzk4MDEx
OTc4YTBjYTdkZWQ0ZGQwZDIwYzJkYjY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0
YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVx
dWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdU
Rjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
Y29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNj
ZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZp
bmFsOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgZmluYWw7CiAKICAg
ICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwg
VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaAppbmRleCA5YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjLi42OWVk
MzRlMTU4NDE1YzUwNWI5NjY1NGVmN2UwMTdmZGQzMjE4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzgsMTQgKzM4LDE1IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0
b3IgewogcHVibGljOgogICAgIC8vIEhlcmUgaXMgdGhlIEZTTS4KLSAgICAvLyBNYWtlQ3JlZGVu
dGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBBdHRlc3Rl
ZCA9PiBFbmQKLSAgICAvLyBHZXRBc3NlcnRpb246IEluaXQgPT4gUmVxdWVzdFJlY2VpdmVkID0+
IFJlc3BvbnNlU2VsZWN0ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBFbmQKKyAgICAvLyBNYWtlQ3Jl
ZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gUG9saWN5RGVjaWRlZCA9PiBVc2Vy
VmVyaWZpZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCisgICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+
IFJlcXVlc3RSZWNlaXZlZCA9PiBSZXNwb25zZVNlbGVjdGVkID0+IFVzZXJWZXJpZmllZCA9PiBF
bmQKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgSW5pdCwKICAgICAgICAgUmVxdWVz
dFJlY2VpdmVkLAotICAgICAgICBVc2VyQ29uc2VudGVkLAorICAgICAgICBVc2VyVmVyaWZpZWQs
CiAgICAgICAgIEF0dGVzdGVkLAotICAgICAgICBSZXNwb25zZVNlbGVjdGVkCisgICAgICAgIFJl
c3BvbnNlU2VsZWN0ZWQsCisgICAgICAgIFBvbGljeURlY2lkZWQsCiAgICAgfTsKIAogICAgIHN0
YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVhdGUoVW5pcXVlUmVmPExvY2FsQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTcsMTIgKzU4LDEzIEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYpOwog
CiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRl
eHQgKik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3ko
TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KTsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25uZWN0
aW9uOjpVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik7CiAgICAgdm9pZCBjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYsIFZlY3Rvcjx1aW50OF90PiYmIGNy
ZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRpZmlj
YXRlcywgTlNFcnJvciAqKTsKIAogICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7CiAgICAg
dm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKLSAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqLCBSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+JiYsIExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiwg
TEFDb250ZXh0ICopOwogCiAgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRoZW50aWNhdGlvblN0
YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbQppbmRleCBmZmM2MGVhNTkzMDc3YzYzMjFkMjIyOTY4MjdkZWVmNTk3YTVkZTRmLi5m
MWQ5NDQ1NjQ3MDA4OTFiYzBiNjZmZmU3N2RmYTZiNzY0ZjA1MmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNjAsNiArMTYwLDI4IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKICAgICAvLyBTdGVwIDYuCiAgICAg
Ly8gR2V0IHVzZXIgY29uc2VudC4KKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNl
cnZlcigpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSB7CisgICAgICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3kocG9saWN5KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgfQorfQorCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KExvY2FsQXV0aGVudGljYXRvclBvbGlj
eSBwb2xpY3kpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZl
ZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpQb2xpY3lEZWNpZGVkOworCisgICAgaWYgKHBvbGlj
eSA9PSBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93KSB7CisgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJEaXNhbGxvdyBsb2NhbCBh
dXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFp
blB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwogICAgIHsKICAgICAgICAg
Q0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CkBAIC0xNzEsMjkgKzE5MywyNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewotICAgICAgICBT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgp
OwotICAgICAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vz
c0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29u
dGV4dCkgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIFNlY0FjY2Vz
c0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7CisgICAg
YXV0byBjYWxsYmFjayA9IFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJp
ZmljYXRpb24gdmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlclVzZXJDb25zZW50ZWQoYWNjZXNzQ29udHJvbC5nZXQoKSwgY29udGV4dCk7Ci0gICAg
ICAgIH07Ci0gICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIHZlcmlm
aWNhdGlvbiwgY29udGV4dCk7CisgICAgfTsKKyAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVzZXIo
YWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqY29udGV4dCkKK3Zv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVy
aWZpY2F0aW9uKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25u
ZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlvbiwgTEFDb250ZXh0ICpjb250ZXh0
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKIAot
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwotICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
UG9saWN5RGVjaWRlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyVmVyaWZpZWQ7CiAgICAg
YXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAotICAgIGlmICghbV9jb25uZWN0
aW9uLT5pc1VubG9ja2VkKGNvbnRleHQpKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2Vw
dGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJf
cyB9KTsKKyAgICBpZiAodmVyaWZpY2F0aW9uID09IExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlm
aWNhdGlvbjo6Tm8pIHsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzA5LDcgKzMyOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiB7CiAgICAgdXNp
bmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCi0gICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpVc2VyVmVyaWZpZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7CiAgICAg
YXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIApAQCAtMzkyLDcgKzQxMiw3IEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gU3RlcCA2LgorICAgIC8vIFN0ZXAgNi03LiBVc2VyIGNvbnNlbnQg
aXMgaW1wbGljaXRseSBhY3F1aXJlZCBieSBzZWxlY3RpbmcgcmVzcG9uc2VzLgogICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKICAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKQEAgLTQy
MiwyOCArNDQyLDI4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXNw
b25zZVNlbGVjdGVkOwogCi0gICAgLy8gU3RlcCA3LiBHZXQgdXNlciBjb25zZW50LgotICAgIGlm
IChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAgYXV0byBhY2Nl
c3NDb250cm9sUmVmID0gcmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKLSAgICAgICAgYXV0byBj
YWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKV0gKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgYXV0byBhY2Nlc3NDb250cm9sUmVmID0gcmVz
cG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWworICAgICAgICB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwKKyAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKQorICAgIF0gKExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiB2ZXJp
ZmljYXRpb24sIExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlvbkFmdGVy
VXNlckNvbnNlbnRlZChjb250ZXh0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgICAgIH07Ci0g
ICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlvbkFm
dGVyVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKHJlc3BvbnNlKSwgdmVyaWZpY2F0aW9uLCBjb250
ZXh0KTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihhY2Nlc3NDb250cm9s
UmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMQUNvbnRleHQgKmNvbnRleHQs
IFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYgcmVzcG9uc2Up
Cit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJW
ZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4m
JiByZXNwb25zZSwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlv
biwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVzcG9uc2VT
ZWxlY3RlZCk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOworICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6VXNlclZlcmlmaWVkOwogCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlzVW5s
b2NrZWQoY29udGV4dCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOworICAg
IGlmICh2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpO
bykgeworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRu
J3QgdmVyaWZ5IHVzZXIuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTYs
MjMgKzQ3NiwyMCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICpjb250ZQogICAgIC8vIFN0ZXAgMTEuCiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgYXV0byBx
dWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIFtxdWVyeSBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6QHsKKyAgICAgICAgTlNEaWN0aW9u
YXJ5ICpxdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNz
S2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKKyAgICAgICAgICAgIChpZClrU2VjVXNl
QXV0aGVudGljYXRpb25Db250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgKGlkKWtTZWNSZXR1
cm5SZWY6IEBZRVMsCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAgICAg
ICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCiAgICAg
ICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCi0gICAgICAgIH1dOwot
ICAgICAgICAvLyBjb250ZXh0IGlzIG51bGxwdHIgaW4gbW9jayB0ZXN0aW5nLgotICAgICAgICBp
ZiAoY29udGV4dCkKLSAgICAgICAgICAgIFtxdWVyeSBzZXRPYmplY3Q6Y29udGV4dCBmb3JLZXk6
KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHRdOworICAgICAgICB9OwogICAgICAgICBD
RlR5cGVSZWYgcHJpdmF0ZUtleVJlZiA9IG51bGxwdHI7Ci0gICAgICAgIE9TU3RhdHVzIHN0YXR1
cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeS5n
ZXQoKSwgJnByaXZhdGVLZXlSZWYpOworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
Q29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRlS2V5
UmVmKTsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlv
bih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtl
eSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDhhNzY2MmM3ZWI3ZTMzZDk5MjdmNjQ0NGY5
ZGY3MzdkZTBmMjEwMTIuLjBlYzExNThiMDNjM2VmMDM1YTU5MmNhYjRhOGYyMTgxZDgyZWM3ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNiw5ICszNiw3IEBACiBP
QkpDX0NMQVNTIExBQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7Ci0KIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01MiwxMyArNTAsMTkgQEAgY2xhc3MgTG9jYWxDb25uZWN0aW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbENvbm5lY3Rpb24p
OwogcHVibGljOgorICAgIGVudW0gY2xhc3MgVXNlclZlcmlmaWNhdGlvbiB7CisgICAgICAgIE5v
LAorICAgICAgICBZZXMKKyAgICB9OworCiAgICAgdXNpbmcgQXR0ZXN0YXRpb25DYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTlNBcnJheSAqLCBOU0Vycm9yICopPjsKKyAgICB1c2lu
ZyBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJW
ZXJpZmljYXRpb24sIExBQ29udGV4dCAqKT47CiAKICAgICBMb2NhbENvbm5lY3Rpb24oKSA9IGRl
ZmF1bHQ7CiAgICAgdmlydHVhbCB+TG9jYWxDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAg
Ly8gT3ZlcnJpZGVkIGJ5IE1vY2tMb2NhbENvbm5lY3Rpb24uCi0gICAgdmlydHVhbCBib29sIGlz
VW5sb2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2Vy
KFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRl
S2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0
dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0
YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4+JikgY29uc3QgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
Lm1tCmluZGV4IDUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYuLjRiNzcy
MWE2NWUxMWM5ODJkYWEyYzExMzViZTVmOThkZDBiZjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24ubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCkBAIC0zOSwxMyArNDAsMjkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgTG9jYWxDb25uZWN0aW9uOjppc1VubG9j
a2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKK3ZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJp
ZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgVXNlclZlcmlmaWNhdGlv
bkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7Ci0gICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpMQVBv
bGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25zOkB7IEAo
TEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOwotICAgIGlmICgh
cmVzdWx0KQotICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQ6ICVA
IiwgZXJyb3IpOwotICAgIHJldHVybiAhIXJlc3VsdDsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pOworCisgICAgYXV0byBvcHRpb25z
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBpZiAo
W2NvbnRleHQgYmlvbWV0cnlUeXBlXSA9PSBMQUJpb21ldHJ5VHlwZVRvdWNoSUQpCisgICAgICAg
IFtvcHRpb25zIHNldE9iamVjdDpXZWJDb3JlOjp0b3VjaElEUHJvbXB0VGl0bGUoKSBmb3JLZXk6
QChMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUpXTsKKyAgICBbb3B0aW9ucyBzZXRPYmplY3Q6
V2ViQ29yZTo6YmlvbWV0cmljRmFsbGJhY2tQcm9tcHRUaXRsZSgpIGZvcktleTpAKExBT3B0aW9u
UGFzc2NvZGVUaXRsZSldOworCisgICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0cihbY29udGV4
dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGlj
dGlvbmFyeSAqLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworCisgICAgICAgIFVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0aW9u
ID0gVXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAi
LCBlcnJvcik7CisgICAgICAgICAgICB2ZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpO
bzsKKyAgICAgICAgfQorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHZlcmlmaWNhdGlvbiwgY29u
dGV4dCA9IFdURk1vdmUoY29udGV4dCldICgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodmVyaWZpY2F0aW9uLCBjb250ZXh0LmdldCgpKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBbY29udGV4dCBldmFsdWF0ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29udHJv
bCBvcGVyYXRpb246TEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uVXNlS2V5U2lnbiBvcHRpb25zOm9w
dGlvbnMuZ2V0KCkgcmVwbHk6cmVwbHkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8U2VjS2V5UmVm
PiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAq
Y29udGV4dCwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJp
bmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KaW5kZXggNmJjMDgyNTI5NmQ4YWFlMjNhYjY0ZGNm
MDcwZjMxM2YwZjk5NGZlMC4uYWQ3YmUxM2E3MjE5ODE0M2ViMDUxMTMyMzcyOTllMDRkZGVkYzNk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQpAQCAtNTUsNiArNTUsOCBAQCBib29s
IExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogCiAjaWYgZGVmaW5lZChMT0NBTFNFUlZJQ0Vf
QURESVRJT05TKQogTE9DQUxTRVJWSUNFX0FERElUSU9OUworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IGRmM2Q5NWFlMTA5ZTViZDQy
MTI3YTNlNGYwM2M1NDUzYjU4YmMzODkuLmQyZWRmZjZiZjkyMTg3ODZlNTlkMmExNGMwMzg2MTVi
MDY0YzhiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21p
c3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNj
ZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgY29uc3Qg
ZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxl
Z2F0ZTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBwYW5lbERpc21p
c3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA6IDE7CiAgICAgICAgIGJvb2wgcGFu
ZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAg
ICAgICAgIGJvb2wgcGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
IDogMTsKLSAgICAgICAgYm9vbCBwYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENvbXBs
ZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbERlY2lkZVBvbGljeUZvckxvY2Fs
QXV0aGVudGljYXRvckNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICB9IG1fZGVsZWdhdGVNZXRo
b2RzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQubW0KaW5kZXggMGU5NzNmYjk0ZmE2MTA5MmRiNDViZDQwNmM1OTdhYzlhZWIy
MTAwNy4uZGJkZjVhZTU2M2ZkODNhZTA0M2RkYzE2MjU1ODFhYTliOGRmN2Q2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCkBA
IC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1w
b3J0ICJXS05TQXJyYXkuaCIKLSNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKICNp
bXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CkBAIC01MCw3ICs0OSw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRpb25QCiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1
bHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkaXNtaXNz
V2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RQSU5X
aXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRp
b25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5w
YW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6dmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLnBh
bmVsRGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yQ29tcGxldGlvbkhhbmRsZXIgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiB9CiAKIFJldGFp
blB0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQ6OmRlbGVnYXRlKCkKQEAgLTE2NywyNSArMTY2LDM3IEBAIHZvaWQg
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVj
dG9yPFJlZjxXZWJDb3JlOjpBCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3ND
b250cm9sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgY29uc3QKK3N0YXRpYyBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgbG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5KF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSByZXN1bHQpCiB7Ci0g
ICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJv
bENvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMo
W2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSkuZ2V0KCkpOworICAgIHN3aXRjaCAocmVz
dWx0KSB7CisgICAgY2FzZSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lBbGxvdzoKKyAgICAg
ICAgcmV0dXJuIExvY2FsQXV0aGVudGljYXRvclBvbGljeTo6QWxsb3c7CisgICAgY2FzZSBfV0tM
b2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lEaXNhbGxvdzoKKyAgICAgICAgcmV0dXJuIExvY2FsQXV0
aGVudGljYXRvclBvbGljeTo6RGlzYWxsb3c7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkFsbG93OworfQorCit2
b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0
aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGlj
eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0
aG9kcy5wYW5lbERlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25IYW5k
bGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKExvY2FsQXV0aGVudGljYXRvclBvbGlj
eTo6RGlzYWxsb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBkZWxlZ2F0
ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFkZWxlZ2F0ZSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdl
dCgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
OjpEaXNhbGxvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBz
ZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlvbkhhbmRs
ZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3ND
b250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBhdXRvIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3RvcihwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRo
Q29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgZGVjaWRl
UG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlcildKF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xp
Y3kpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNC
ZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KHBv
bGljeSkpOwogICAgIH0pLmdldCgpXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaAppbmRleCBkMGRkOWIxMDQ5YWExN2ZiZWVlM2I4NDkyZTVlYzQxZjc1NTJhOGQw
Li5kZWU3NzNjM2UxMzJlMzdiNzI3MjdmMzUzODcxNDAxN2IxZDk2Y2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBpc1VubG9j
a2VkKExBQ29udGV4dCAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNj
ZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwog
ICAgIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29u
dGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwg
TlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZ2V0
QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEgKmhhc2gsIEF0
dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBmaWx0ZXJSZXNwb25z
ZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4m
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpp
bmRleCA4YjhkODI0NTE0ZTU4Yzg0MjAwYWE3ODE2Njc1OWFhZWY3Y2M1MTU2Li5iMWM5ODc0Nzlm
NGQ3Y2MxYTc0ODc1OTEzMWM4NjI0M2ViNjc2ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxDb25uZWN0aW9uLm1tCkBAIC00NCw5ICs0NCwxNyBAQCBNb2NrTG9jYWxDb25uZWN0aW9u
OjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbgogewogfQogCi1ib29sIE1vY2tMb2NhbENvbm5lY3Rpb246OmlzVW5sb2NrZWQoTEFDb250
ZXh0ICpjb250ZXh0KSBjb25zdAordm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2Vy
KFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KSBjb25zdAogewotICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2VwdEF1dGhl
bnRpY2F0aW9uOworICAgIC8vIE1vY2sgYXN5bmMgb3BlcmF0aW9ucy4KKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24sIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb25maWd1
cmF0aW9uLmxvY2FsKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRB
dXRoZW50aWNhdGlvbikgeworICAgICAgICAgICAgY2FsbGJhY2soVXNlclZlcmlmaWNhdGlvbjo6
Tm8sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJh
Y2soVXNlclZlcmlmaWNhdGlvbjo6WWVzLCBhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNl
KCkgaW5pdF0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4gTW9j
a0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICos
IFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEg
KnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaAppbmRleCA1MDkyZDkzMzg2ZWUzYmNkZWE2MmY0ZWZlMTI5NTJlMGUzNzdhNTVmLi42
NThlZWJjYmQ1NzZlMTJiMjU0N2ZmNTI4YzI1NWJlMWRlODRkNjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvbkZs
YWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRpb25GbGFncy5oCkBAIC01MSw2ICs1MSwxMSBAQCBlbnVtIGNsYXNzIFdlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTEFOb0NyZWRlbnRpYWwsCiB9Owog
CitlbnVtIGNsYXNzIExvY2FsQXV0aGVudGljYXRvclBvbGljeSA6IGJvb2wgeworICAgIEFsbG93
LAorICAgIERpc2FsbG93Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMTY3NzM5YzVlMjQ1NTc2MjY2NDBhYjNjNDYxOGM4ZjJiMjcwZTdlZS4u
MGMxOWQxYTYxYTkzMDc1MWFkNWE3ZTJiMDk1NmE0OWUyOGM1YzJhYiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIw
LTAzLTAzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dl
YkF1dGhuXSBJbXBsZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFu
ZWw6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0gU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg1MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAg
ICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOmRlY2lkZVBvbGlj
eUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25Q
YW5lbERlbGVnYXRlIHBhbmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9u
SGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWw6IFJlbW92ZWQu
CisKIDIwMjAtMDMtMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDb2NvYV0gTWFwcGluZyBmcm9tIE1JTUUgdHlwZSB0byBVVEkgdHlwZSBzaG91bGQg
YmUgZG9uZSBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmOGFi
MDhjNGRkZDUxNzNkYjBhOTljZjhhZjJiMzBhNGMxODc5MjRlLi5iZDliMzcxMTMzOTYwY2IyZmRl
OGI0NWVmMTVlMDFiMmM4OGYzYzVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUwLDcg
KzM1MCw2IEBACiAJCTU3MzI1NUE3MjIxMzlCQzcwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZl
LTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzMyNTVBMzIyMTM5QjkwMDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0bWwg
Ki87IH07CiAJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLzsgfTsKIAkJ
NTc0MjE3OEEyNDAwQUVEODAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4OTI0MDBBRUQwMDAyQjMwM0Qg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVu
dGlhbC5odG1sICovOyB9OwotCQk1NzQyMTc4QzI0MDBDRDQ3MDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLzsgfTsKIAkJNTc0MjE3
OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzQyMTc4RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS5odG1sICovOyB9OwogCQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyog
U2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29y
ayAqLzsgfTsKIAkJNTc1ODU5N0YyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTdFMjNB
MjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5jcHAgKi87IH07CkBAIC0xNTI0LDcgKzE1MjMs
NiBAQAogCQkJCTU3OERBNDRFMjNFQ0QyOEIwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnkuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1NzBEMjZGQzIzQzNGODcwMDBENUNGNjcgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQk1NzQyMTc4QzI0MDBD
RDQ3MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzk4MzM5MjIzNjhGQTM3MDA4RTU1NDcgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTc3NDU0RDIyMzU5QkIwMTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApA
QCAtMTk3NCw3ICsxOTcyLDYgQEAKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2Ut
Y3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRl
bnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVu
dGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZy
YW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTM2MDMsNyArMzYwMCw2IEBACiAJCQkJ
NTc4REE0NEQyM0VDRDI2MTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkZCMjND
M0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGlu
Lmh0bWwgKi8sCiAJCQkJNTc2NjNERUIyMzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sICovLAotCQkJCTU3NDIxNzhCMjQwMENEMkQwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sICovLAogCQkJ
CTU3OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovLAogCQkJCTU3NjYzREU5MjM0RUE2MEIwMEU4
NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCAqLywKIAkJ
CQk1Nzc0NTREMTIzNTlCQUQ1MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KaW5kZXggZjJmYjQ1MjgwMDI0YjBkYjQxZWMyNzYwNTYwMWM3YjEzMmY1MmVl
Ni4uYzA2NzQyMDMwZTc2ZjcwODg1ZTdkMzg1OTMwOGU4MThmZGEyNzRmYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9vbCB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOwogc3RhdGljIGJvb2wg
d2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZCA9
IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9DcmVk
ZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FuY2Vs
SW1tZWRpYXRlbHkgPSBmYWxzZTsKLXN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxW
ZXJpZnlVc2VyID0gZmFsc2U7CitzdGF0aWMgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IGxv
Y2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeURpc2Fs
bG93Owogc3RhdGljIFN0cmluZyB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluOwogc3RhdGljIEJP
T0wgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiBzdGF0aWMgU3Ry
aW5nIHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQgPQpAQCAtMTUxLDExICsxNTEsOSBAQCAtICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2U6KE5TQXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1tpbmRl
eF0pOwogfQogCi0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vz
c0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0
aW9uSGFuZGxlcgorLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IHRydWU7
Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0pOwot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQuZ2V0KCkpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKGxvY2FsQXV0aGVudGljYXRvclBvbGljeSk7CiB9CiAKIEBlbmQKQEAgLTMwMCwyNCArMjk4
LDE4IEBAIHN0YXRpYyB2b2lkIHJlc2V0KCkKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2Fu
Y2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluID0g
ZW1wdHlTdHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUg
PSBOTzsKLSAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOworICAg
IGxvY2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeURp
c2FsbG93OwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgKnBhbmVsLCBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkgKnRyYW5zcG9y
dHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlKQogewogICAgIEVYUEVDVF9XS19TVFJF
UShwYW5lbC5yZWx5aW5nUGFydHlJRCwgcmVseWluZ1BhcnR5SUQpOwogCi0gICAgLy8gQnJ1dGUg
Zm9yY2UgZ2l2ZW4gdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYXJyYXkgaXMgNC4KLSAgICBhdXRv
ICp0aGVUcmFuc3BvcnRzID0gcGFuZWwudHJhbnNwb3J0czsKLSAgICBFWFBFQ1RfRVEodGhlVHJh
bnNwb3J0cy5jb3VudCwgdHJhbnNwb3J0cy5jb3VudCk7CisgICAgRVhQRUNUX0VRKHBhbmVsLnRy
YW5zcG9ydHMuY291bnQsIHRyYW5zcG9ydHMuY291bnQpOwogICAgIHNpemVfdCBjb3VudCA9IDA7
CiAgICAgZm9yIChOU051bWJlciAqdHJhbnNwb3J0IDogdHJhbnNwb3J0cykgewotICAgICAgICBm
b3IgKE5TTnVtYmVyICp0aGVUcmFuc3BvcnQgOiB0aGVUcmFuc3BvcnRzKSB7Ci0gICAgICAgICAg
ICBpZiAodHJhbnNwb3J0ID09IHRoZVRyYW5zcG9ydCkgewotICAgICAgICAgICAgICAgIGNvdW50
Kys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKFtwYW5lbC50cmFuc3BvcnRzIGNvbnRhaW5zT2JqZWN0OnRyYW5zcG9ydF0pCisg
ICAgICAgICAgICBjb3VudCsrOwogICAgIH0KICAgICBFWFBFQ1RfRVEoY291bnQsIHRyYW5zcG9y
dHMuY291bnQpOwogCkBAIC0xMjU5LDExICsxMjUxLDEwIEBAIFRFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbE51bGxEZWxlZ2F0ZSkKICAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwotICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOwotICAgIGNsZWFuVXBLZXljaGFpbigiIik7
CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJEaXNhbGxvdyBsb2NhbCBhdXRoZW50aWNh
dG9yLiJdOwogfQogCi1URVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRp
YWwpCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxEaXNhbGxv
d0xvY2FsQXV0aGVudGljYXRvcikKIHsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VS
TD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTEyNzcsMTUgKzEy
NjgsMTMgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsKQog
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07Ci0gICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7Ci0g
ICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVy
IGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdl
dCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRp
Y2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlw
ZUNyZWF0ZSk7Ci0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJEaXNhbGxvdyBsb2NhbCBhdXRoZW50aWNhdG9y
LiJdOwogfQogCi1URVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9uKQor
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsQWxsb3dMb2NhbEF1
dGhlbnRpY2F0b3IpCiB7CiAgICAgcmVzZXQoKTsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24tbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIAogICAgIGF1dG8gKmNvbmZpZ3Vy
YXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRl
c3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmln
dXJlSlNDRm9yVGVzdGluZzpZRVNdOwogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRpb25F
eHBlcmltZW50YWxGZWF0dXJlKCldOwpAQCAtMTI5NSwxMSArMTI4NCwxMCBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9uKQogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBB
U1NFUlRfVFJVRShhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIi
LCB0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAgIGxvY2FsQXV0aGVudGljYXRvclBvbGljeSA9
IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwotICAgIFV0
aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOwotICAgIGNoZWNrUGFu
ZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRvcHRO
UyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5z
cG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVHZXQpOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworICAgIGNoZWNrUGFuZWwo
W2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdp
dGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRvcHROUyhb
W05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9y
dEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVDcmVhdGUpOwogICAg
IGNsZWFuVXBLZXljaGFpbigiIik7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWZhM2M1YmE0NGIwMmZiMTA1MjlkMDE0ZGY1ZGU2NDI4ZDQ5ODBiZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imlu
cHV0Ij4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBh
Y2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7
Ci0gICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygp
OyB9KTsKLSAgICB9Ci0KLSAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICBwdWJsaWNLZXk6
IHsKLSAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAotICAgICAgICAg
ICAgdGltZW91dDogMTAwCi0gICAgICAgIH0KLSAgICB9OwotCi0gICAgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAvLyBjb25z
b2xlLmxvZygiU3VjY2VlZGVkISIpOwotICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIpOwotICAgIH0sIGVycm9y
ID0+IHsKLSAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7Ci0gICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGVycm9y
Lm1lc3NhZ2UpOwotICAgIH0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9j
YWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDBmNjlkMGI5
MTVhNzgyMmVlYWVlNGZmNWFmY2EyODM4YWRjNWU5M2QuLjFjYWZmZDdjMmVmZjBkNzcxYmM0NDg3
ZDE1NzVkYjA3ZDFlYTY4NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC05OCw3ICs5OCw3IEBACiAgICAg
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiIp
OworICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgdmVyaWZ5
IHVzZXIuIik7CiAgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAog
ICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDNlNGY0OTkwNmMzMmU0ZTg5
NTI1OGY2NjgzYTBmYmVhNDk5Nzc5ZWYuLmYyN2Y3MTE5MjI3ZTgwZTM2MDEwODNjMmMwYjVlNDA5
MDdkOGUyNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS1sb2NhbC5odHRwcy5odG1sCkBAIC01NSw3ICs1NSw3IEBACiAKICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlU
b0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsK
LSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNvdWxkbid0IGdldCB1c2VyIGNv
bnNlbnQuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyks
ICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xl
YW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKICAgICAgICAgICAgIH0p
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392325</attachid>
            <date>2020-03-03 13:54:29 -0800</date>
            <delta_ts>2020-03-03 14:38:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208533-20200303135429.patch</filename>
            <type>text/plain</type>
            <size>55522</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwNmZmMTliMDEyY2Uy
Yjg1MGYyMzZiYmM5NDk4ZmMyNzIyZjkxNC4uZWYyMTgyYTZiNjQ0YmU4ZjExZGM1MTc3MDAwNDk1
MjJmZDA1YzJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTAzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOl0gU1BJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1MzMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3RzIHdpdGhpbiBleGlzdGlu
ZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpiaW9tZXRyaWNGYWxs
YmFja1Byb21wdFRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6
CisgICAgICAgIEFkZHMgbG9jYWxpemVkIHN0cmluZ3MgdG8gc3VwcG9ydCB0aGUgY3VzdG9taXpl
ZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZy4KKwogMjAyMC0wMy0wMiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYXBwaW5nIGZyb20g
TUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDZhZjZhMWYwZDZlOTZjYjFmYjQ2YTYzMTVkOWE4NGYzZWE5Yjg0MTUuLjZhZmUw
ZjFlMjIwNDU5NjI3NmRiZjlhNDNlN2U3MzgwOTljOGVlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMjAtMDMtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMTAxODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIHRoZSBhYm92ZSBTUEkgdG8gcmVwbGFjZSAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6XS4KKyAgICAgICAgVGhlIG9yaWdpbmFsIFNQSSBpcyBkZXNpZ25lZCBvbiB0aGUg
cHJlbWlzZSB0aGF0IFNhZmFyaSBpcyBnb2luZyB0byBoaWdobHkgY3VzdG9taXplIHRoZSBMb2Nh
bEF1dGhlbnRpY2F0aW9uIFVJLCBhbmQgdGhhdCBpcyBub3QgaGFwcGVuaW5nCisgICAgICAgIGFu
eW1vcmUuIFRoZXJlZm9yZSwgV2ViS2l0IHRha2VzIGJhY2sgdGhlIGludm9jYXRpb24gb2YgTG9j
YWxBdXRoZW50aWNhdGlvbiBhbmQgb2ZmZXIgYSBuZXcgU1BJIHRvIHRlbGwgY2xpZW50cyB3aGVu
IFdlYktpdCBpcyBhYm91dCB0bworICAgICAgICBzaG93IExvY2FsQXV0aGVudGljYXRpb24gVUku
IENsaWVudHMgdGhlbiBoYXZlIHRoZSB0cmlnZ2VyIHRvIHB1bGwgYXQgdGhlaXIgcGxlYXN1cmUu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFsbCBwbHVtYmluZ3MgdG8gcmVwbGFj
ZSB0aGUgU1BJLiBCZXNpZGVzIHRoYXQsIHRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgZW5o
YW5jZXMgdGhlIExvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlciB3aXRoIGEgc2xpZ2h0bHkgY3Vz
dG9taXplZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZzsKKyAgICAgICAgMikgYWRkcyB0aGUg
U1BJIHVzZWQgYWJvdmUgaW50byB0aGUgU1BJIGhlYWRlcjsKKyAgICAgICAgMykgbWFrZXMgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlLnRyYW5zcG9ydHMgYXMgYSBOU1NldCBpbnN0
ZWFkIG9mIGEgTlNBcnJheTsKKyAgICAgICAgNCkgbGV0cyBMb2NhbFNlcnZpY2U6OmlzQXZhaWxh
YmxlIHJldHVybiBmYWxzZSBpZiBBcHBsZSBhdHRlc3RhdGlvbiBpcyBub3QgYXZhaWxhYmxlLgor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yIGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgor
ICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRyYW5zcG9ydHNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6dmVyaWZ5VXNlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
ckRlY2lkZVBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJVc2VyQ29uc2VudGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5
VXNlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjpp
c0F2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OmxvY2FsQXV0aGVudGljYXRvclBv
bGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0
aW9uOjp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVj
dGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKwogMjAyMC0wMy0wMiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBN
YXBwaW5nIGZyb20gTUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBV
SSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA2ZDc5YzVjMDJhMTljNjY5YzM3N2U2YzA2MGMzMmE1NDViY2VlZDlmLi43NTUyMjVlNmJh
M2RlMzEzOGQzNjZmMTQ3ZmZmNWI4NGEyOGZhZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTMxMCw2ICszMTAsOSBAQAogLyogVmlkZW8gRW50
ZXIgRnVsbCBTY3JlZW4gY29udGV4dCBtZW51IGl0ZW0gKi8KICJFbnRlciBGdWxsIFNjcmVlbiIg
PSAiRW50ZXIgRnVsbCBTY3JlZW4iOwogCisvKiBVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0
byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiRW50ZXIgcGFzc2NvZGUgdG8gc2lnbiBpbnRv
IHRoaXMgd2Vic2l0ZS4iID0gIkVudGVyIHBhc3Njb2RlIHRvIHNpZ24gaW50byB0aGlzIHdlYnNp
dGUuIjsKKwogLyogbWVudSBpdGVtICovCiAiRW50ZXIgUGljdHVyZSBpbiBQaWN0dXJlIiA9ICJF
bnRlciBQaWN0dXJlIGluIFBpY3R1cmUiOwogCkBAIC04NzcsNiArODgwLDkgQEAKIC8qIHByb21w
dCBzdHJpbmcgaW4gYXV0aGVudGljYXRpb24gcGFuZWwgKi8KICJUbyB2aWV3IHRoaXMgcGFnZSwg
eW91IG11c3QgbG9nIGluIHRvIHRoaXMgYXJlYSBvbiAlQDoiID0gIlRvIHZpZXcgdGhpcyBwYWdl
LCB5b3UgbXVzdCBsb2cgaW4gdG8gdGhpcyBhcmVhIG9uICVAOiI7CiAKKy8qIFVzZSBUb3VjaCBJ
RCB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRo
aXMgd2Vic2l0ZS4iID0gIlRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUuIjsKKwog
LyogVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSAqLwogIlRyYW5zZm9ybWF0
aW9ucyIgPSAiVHJhbnNmb3JtYXRpb25zIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhMTE0ZmQ3NjFmOTJhMGE1ZDk5NmIwZmFlZTBiMDdh
NTMwOTAyNTg4Li45YWMwYmQyOTIwY2NiYTU5M2U5YmEwN2VlNmYzZTY1ODI1YmEyZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMTIwNyw0
ICsxMjA3LDE2IEBAIFN0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCitTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRoaXMg
d2Vic2l0ZS4iLCAiVXNlIFRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUiKTsKK30K
KworU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKQoreworICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJFbnRlciBwYXNzY29kZSB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlLiIs
ICJVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlIik7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IDNlMzMxNjRmYjJkNzg1MzY4YTU3NzRlZDRh
YjFmM2VhY2FmNDUyN2EuLmQ3MTg0NzJjNGFkYTNlYjdjNDRlNWJjN2I5ZWI0NmM2MDcxNWFhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTMzOSw2
ICszMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBkYXRlUGlja2VyWWVhckxhYmVsVGl0bGUoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKTsK
KyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhfKHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0
aGVudGljYXRpb25TUEkuaAppbmRleCBlNjdmMmJmY2FkZDMwY2Y1YjJlZjIxYTg2MTMxZWNjYzA4
MjhlMjI2Li5kOWVhYTc4NGJmNjZmZjIwZTQwNmE0YWIzYTBlNjRiZDg1OTY1NTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9u
U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCkBAIC0zNCwxMiArMzQsMTMgQEAKICNlbHNlCiAKIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIExBT3B0aW9uKSB7Ci0gICAgTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSwKKyAg
ICBMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUsCisgICAgTEFPcHRpb25QYXNzY29kZVRpdGxl
LAogfTsKIAogQGludGVyZmFjZSBMQUNvbnRleHQoUHJpdmF0ZSkgPE5TU2VjdXJlQ29kaW5nPgog
Ci0tIChOU0RpY3Rpb25hcnkgKilldmFsdWF0ZVBvbGljeTooTEFQb2xpY3kpcG9saWN5IG9wdGlv
bnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CistICh2
b2lkKWV2YWx1YXRlQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250
cm9sIG9wZXJhdGlvbjooTEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uKW9wZXJhdGlvbiBvcHRpb25z
OihOU0RpY3Rpb25hcnkgKilvcHRpb25zIHJlcGx5Oih2b2lkKF4pKE5TRGljdGlvbmFyeSAqcmVz
dWx0LCBOU0Vycm9yICplcnJvcikpcmVwbHkKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaAppbmRleCA4YzM2ODUzM2VhMGIyMTRmMDFiYTdjYmQ5ZGQ1YjU5Y2E1MmUxNDgxLi44NDYw
MDhjZGQ1NzUwODVkMWQ1YzQ4ZmRkYjVjNWUxODRmNTQ5M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNp
bmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtMzksMTEgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOwogfQogCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LWVudW0gY2xhc3MgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgOiB1aW50OF90OwotZW51bSBjbGFz
cyBXZWJBdXRoZW50aWNhdGlvblJlc3VsdCA6IGJvb2w7Ci19Ci0KIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50IHsKQEAgLTU1LDcgKzUxLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzUGFuZWwoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblJlc3VsdCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQaW4odWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0cmluZygpKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYgcmVzcG9uc2VzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IEFTU0VSVCghcmVzcG9uc2Vz
LmlzRW1wdHkoKSk7IGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1swXSk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKExBQ29udGV4dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsgfQorICAgIC8vIEZJWE1FOiBJZGVhbGx5LCBMb2NhbEF1dGhl
bnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93IHNob3VsZCBiZSB1c2VkLiBUaGlzIGlzIGEgcXVpcmsg
dG8gYnlwYXNzIEMgQVBJIGZvciBXZWJLaXRUZXN0UnVubmVyLgorICAgIHZpcnR1YWwgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6
OkFsbG93KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaAppbmRleCA5NzQxZGQ2MmM2MWZlOGZiYWYxN2UyODVlZjEwMWRmZjViZjgwOGZlLi44ODNk
ZmY0N2ExNGYyOGQ2YmZkMmVlZjdlMmU4ODRiZWVlMTk3MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmgKQEAgLTY4LDYgKzY4LDExIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9X
S1dlYkF1dGhlbnRpY2F0aW9uVHlwZSkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdl
dCwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5KSB7CisgICAgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5QWxsb3csCisgICAgX1dLTG9j
YWxBdXRoZW50aWNhdG9yUG9saWN5RGlzYWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm90b2NvbCBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGUgPE5TT2JqZWN0PgogCiBAb3B0aW9uYWwKQEAgLTc2LDcgKzgx
LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBl
KSB7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlz
bWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlv
blJlc3VsdClyZXN1bHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0cmllcyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UgKj4gKilyZXNwb25zZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQp
cGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB2ZXJpZnlVc2VyV2l0aEFj
Y2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNjZXNzQ29udHJvbCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXBh
bmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tMb2NhbEF1
dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKQEAgLTg1
LDcgKzkwLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpCiAKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2VhaykgaWQgPF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gZGVsZWdhdGU7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJRDsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheSAqdHJhbnNwb3J0czsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTZXQgKnRyYW5zcG9ydHM7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0
eXBlOwogCiAtICh2b2lkKWNhbmNlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXgg
MTk3M2IwZjU2NGQyNTFiMjBjZjI2YTM2YTNhNjRkOGEyNTI4MjJmMy4uMjU4NjJiZGNiNzBiMDk0
NzQzOGVmMmI1N2RjOTc4M2Q4ZDQ4M2UwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
QEAgLTMzLDcgKzMzLDcgQEAKIEBpbXBsZW1lbnRhdGlvbiBfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50PiBfY2xpZW50OwotICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gX3RyYW5zcG9ydHM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gX3RyYW5zcG9y
dHM7CiAjZW5kaWYKIH0KIApAQCAtODEsMTMgKzgxLDEzIEBAIHN0YXRpYyBfV0tXZWJBdXRoZW50
aWNhdGlvblRyYW5zcG9ydCB3a1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0KFdlYkNvcmU6OkF1
dGhlCiAgICAgfQogfQogCi0tIChOU0FycmF5ICopdHJhbnNwb3J0cworLSAoTlNTZXQgKil0cmFu
c3BvcnRzCiB7CiAgICAgaWYgKF90cmFuc3BvcnRzKQogICAgICAgICByZXR1cm4gX3RyYW5zcG9y
dHMuZ2V0KCk7CiAKICAgICBhdXRvJiB0cmFuc3BvcnRzID0gX3BhbmVsLT50cmFuc3BvcnRzKCk7
Ci0gICAgX3RyYW5zcG9ydHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OnRyYW5zcG9ydHMuc2l6ZSgpXTsKKyAgICBfdHJhbnNwb3J0cyA9IFtbTlNNdXRhYmxlU2V0
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnRyYW5zcG9ydHMuc2l6ZSgpXTsKICAgICBmb3IgKGF1
dG8mIHRyYW5zcG9ydCA6IHRyYW5zcG9ydHMpCiAgICAgICAgIFtfdHJhbnNwb3J0cyBhZGRPYmpl
Y3Q6YWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDp3a1dlYkF1dGhlbnRpY2F0
aW9uVHJhbnNwb3J0KHRyYW5zcG9ydCldKS5nZXQoKV07CiAgICAgcmV0dXJuIF90cmFuc3BvcnRz
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IDkxZDk5ZWQ1MmI2ZGIxZGVmYWIxNTk2MjQz
MTA2NzlmM2NhZDY3NGUuLjU2NzFhZWM3Njk3ODI2ZGQxZWUxMzFiYWI5ZmY3ODk2YjJkNDU0ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25T
dGF0dXMpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QgcmV0
cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShjb25zdCBIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlJik+JiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNj
ZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRv
cihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYpID0g
MDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvcigpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCBmY2MyN2FkNjZmMzIzNjg0ZTlj
N2Q0Zjg2YjVhYzc0ZmYwZjYyYjA5Li5jMzkxODAxYjNjMmUwNTkxOTRhNWRhNzZiNzk4MzRjYWY0
NzE3MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0yOTUsMTEg
KzI5NSwxMCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RBc3NlcnRpb25SZXNw
b25zZShjb25zdCBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdAogICAgIH0pOwogfQogCi12b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNz
Q29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJldGFpblB0cjxTZWNBY2Nl
c3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sID0gYWNjZXNzQ29udHJvbFJlZjsKLSAgICBkaXNw
YXRjaFBhbmVsQ2xpZW50Q2FsbChbYWNjZXNzQ29udHJvbCA9IFdURk1vdmUoYWNjZXNzQ29udHJv
bCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25z
dCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRhYmxlIHsKLSAgICAgICAg
cGFuZWwuY2xpZW50KCkudmVyaWZ5VXNlcihhY2Nlc3NDb250cm9sLmdldCgpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBBUEk6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRhYmxlIHsKKyAgICAgICAgcGFuZWwuY2xpZW50
KCkuZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5k
ZXggZThmMmQyYmZkODBjMTBjYWFjZjgzMDVkNDczZDViZDNmOGFlYWZiNC4uYmQwYjk2ZDRjOTgw
MTE5NzhhMGNhN2RlZDRkZDBkMjBjMmRiNjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFu
YWdlci5oCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdXRoZW50aWNhdG9y
U3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgZmluYWw7CiAgICAgdm9pZCBy
ZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZShjb25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlJik+JiYpIGZpbmFsOwotICAgIHZvaWQgdmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJikg
ZmluYWw7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSBmaW5hbDsKIAog
ICAgIC8vIE92ZXJyaWRlbiBieSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuCiAgICAgdmlydHVh
bCBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IGNyZWF0ZVNlcnZpY2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2U6Ok9ic2VydmVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5oCmluZGV4IDlhNDc1NzBmZTcwYjNiNzI0OGNjZTEwNTMxNGU1MGI4Y2M5MDBkY2MuLjY5
ZWQzNGUxNTg0MTVjNTA1Yjk2NjU0ZWY3ZTAxN2ZkZDMyMTgwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5oCkBAIC0zOCwxNCArMzgsMTUgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBMb2NhbEF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGlj
YXRvciB7CiBwdWJsaWM6CiAgICAgLy8gSGVyZSBpcyB0aGUgRlNNLgotICAgIC8vIE1ha2VDcmVk
ZW50aWFsOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBVc2VyQ29uc2VudGVkID0+IEF0dGVz
dGVkID0+IEVuZAotICAgIC8vIEdldEFzc2VydGlvbjogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQg
PT4gUmVzcG9uc2VTZWxlY3RlZCA9PiBVc2VyQ29uc2VudGVkID0+IEVuZAorICAgIC8vIE1ha2VD
cmVkZW50aWFsOiBJbml0ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBQb2xpY3lEZWNpZGVkID0+IFVz
ZXJWZXJpZmllZCA9PiBBdHRlc3RlZCA9PiBFbmQKKyAgICAvLyBHZXRBc3NlcnRpb246IEluaXQg
PT4gUmVxdWVzdFJlY2VpdmVkID0+IFJlc3BvbnNlU2VsZWN0ZWQgPT4gVXNlclZlcmlmaWVkID0+
IEVuZAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBJbml0LAogICAgICAgICBSZXF1
ZXN0UmVjZWl2ZWQsCi0gICAgICAgIFVzZXJDb25zZW50ZWQsCisgICAgICAgIFVzZXJWZXJpZmll
ZCwKICAgICAgICAgQXR0ZXN0ZWQsCi0gICAgICAgIFJlc3BvbnNlU2VsZWN0ZWQKKyAgICAgICAg
UmVzcG9uc2VTZWxlY3RlZCwKKyAgICAgICAgUG9saWN5RGVjaWRlZCwKICAgICB9OwogCiAgICAg
c3RhdGljIFJlZjxMb2NhbEF1dGhlbnRpY2F0b3I+IGNyZWF0ZShVbmlxdWVSZWY8TG9jYWxDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBAIC01NywxMiArNTgsMTMgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBMb2NhbEF1dGhlbnRpY2F0b3IoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJik7
CiAKICAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkgZmluYWw7Ci0gICAgdm9pZCBjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29u
dGV4dCAqKTsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckRlY2lkZVBvbGlj
eShMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpOworICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5l
Y3Rpb246OlVzZXJWZXJpZmljYXRpb24sIExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYg
Y3JlZGVudGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgTlNBcnJheSAqY2VydGlm
aWNhdGVzLCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKICAg
ICB2b2lkIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOwotICAgIHZvaWQgY29udGlu
dWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICosIFJlZjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYpOworICAgIHZvaWQgY29udGludWVH
ZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4mJiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9u
LCBMQUNvbnRleHQgKik7CiAKICAgICB2b2lkIHJlY2VpdmVFeGNlcHRpb24oV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYmLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA9IFdlYkF1dGhlbnRpY2F0aW9u
U3RhdHVzOjpMQUVycm9yKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLm1tCmluZGV4IGZmYzYwZWE1OTMwNzdjNjMyMWQyMjI5NjgyN2RlZWY1OTdhNWRlNGYu
LmYxZDk0NDU2NDcwMDg5MWJjMGI2NmZmZTc3ZGZhNmI3NjRmMDUyZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTE2MCw2ICsxNjAsMjggQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKIAogICAgIC8vIFN0ZXAgNi4KICAg
ICAvLyBHZXQgdXNlciBjb25zZW50LgorICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9i
c2VydmVyKCkpIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKExvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xpY3kpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRp
bnVlTWFrZUNyZWRlbnRpYWxBZnRlckRlY2lkZVBvbGljeShwb2xpY3kpOworICAgICAgICB9Owor
ICAgICAgICBvYnNlcnZlci0+ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3koTG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5IHBvbGljeSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVxdWVzdFJlY2Vp
dmVkKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlBvbGljeURlY2lkZWQ7CisKKyAgICBpZiAocG9s
aWN5ID09IExvY2FsQXV0aGVudGljYXRvclBvbGljeTo6RGlzYWxsb3cpIHsKKyAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkRpc2FsbG93IGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0
YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CiAgICAgewogICAgICAg
ICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKQEAgLTE3MSwyOSArMTkzLDI3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKSB7Ci0gICAgICAg
IFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0
KCk7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbYWNjZXNzQ29udHJvbCA9IFdURk1vdmUoYWNj
ZXNzQ29udHJvbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTEFDb250ZXh0ICpj
b250ZXh0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgU2VjQWNj
ZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wp
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlclZl
cmlmaWNhdGlvbiB2ZXJpZmljYXRpb24sIExBQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyVXNlckNvbnNlbnRlZChhY2Nlc3NDb250cm9sLmdldCgpLCBjb250ZXh0KTsKLSAg
ICAgICAgfTsKLSAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwg
V1RGTW92ZShjYWxsYmFjaykpOwotICAgIH0KKyAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oYWNjZXNzQ29udHJvbC5nZXQoKSwgdmVy
aWZpY2F0aW9uLCBjb250ZXh0KTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNl
cihhY2Nlc3NDb250cm9sUmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTEFDb250ZXh0ICpjb250ZXh0KQor
dm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJW
ZXJpZmljYXRpb24oU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmLCBMb2NhbENv
bm5lY3Rpb246OlVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKmNvbnRl
eHQpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwog
Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7Ci0gICAgbV9z
dGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpQb2xpY3lEZWNpZGVkKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlVzZXJWZXJpZmllZDsKICAg
ICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCi0gICAgaWYgKCFtX2Nvbm5l
Y3Rpb24tPmlzVW5sb2NrZWQoY29udGV4dCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQu
Il9zIH0pOworICAgIGlmICh2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVy
aWZpY2F0aW9uOjpObykgeworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVy
cm9yLCAiQ291bGRuJ3QgdmVyaWZ5IHVzZXIuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zMDksNyArMzI5LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAKLSAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6VXNlckNvbnNlbnRlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OlVzZXJWZXJpZmllZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBdHRlc3RlZDsKICAg
ICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCkBAIC0zOTIsNyArNDEyLDcg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBTdGVwIDYuCisgICAgLy8gU3RlcCA2LTcuIFVzZXIgY29uc2Vu
dCBpcyBpbXBsaWNpdGx5IGFjcXVpcmVkIGJ5IHNlbGVjdGluZyByZXNwb25zZXMuCiAgICAgZm9y
IChOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZSA6IGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1
dGVzKSB7CiAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hc3NlcnRpb25SZXNwb25zZXMuYWRk
KEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKAogICAgICAgICAgICAgdG9B
cnJheUJ1ZmZlcihhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pLApAQCAt
NDIyLDI4ICs0NDIsMjggQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKFJlZjxXZWJDb3JlOjoKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlJl
c3BvbnNlU2VsZWN0ZWQ7CiAKLSAgICAvLyBTdGVwIDcuIEdldCB1c2VyIGNvbnNlbnQuCi0gICAg
aWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewotICAgICAgICBhdXRvIGFj
Y2Vzc0NvbnRyb2xSZWYgPSByZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOwotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpXSAoTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGFjY2Vzc0NvbnRyb2xSZWYgPSBy
ZXNwb25zZS0+YWNjZXNzQ29udHJvbCgpOworICAgIGF1dG8gY2FsbGJhY2sgPSBbCisgICAgICAg
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLAorICAgICAgICByZXNwb25zZSA9IFdURk1v
dmUocmVzcG9uc2UpCisgICAgXSAoTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZl
cmlmaWNhdGlvbiwgTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0
ZXJVc2VyQ29uc2VudGVkKGNvbnRleHQsIFdURk1vdmUocmVzcG9uc2UpKTsKLSAgICAgICAgfTsK
LSAgICAgICAgb2JzZXJ2ZXItPnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShj
YWxsYmFjaykpOwotICAgIH0KKyAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFdURk1vdmUocmVzcG9uc2UpLCB2ZXJpZmljYXRpb24sIGNv
bnRleHQpOworICAgIH07CisgICAgbV9jb25uZWN0aW9uLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRy
b2xSZWYsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqY29udGV4
dCwgUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiByZXNwb25z
ZSkKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNl
clZlcmlmaWNhdGlvbihSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiYmIHJlc3BvbnNlLCBMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0
aW9uLCBMQUNvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0
aGVudGljYXRvckludGVybmFsOwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXNwb25z
ZVNlbGVjdGVkKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OlVzZXJDb25zZW50ZWQ7CisgICAgbV9z
dGF0ZSA9IFN0YXRlOjpVc2VyVmVyaWZpZWQ7CiAKLSAgICBpZiAoIW1fY29ubmVjdGlvbi0+aXNV
bmxvY2tlZChjb250ZXh0KSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iX3MgfSk7Cisg
ICAgaWYgKHZlcmlmaWNhdGlvbiA9PSBMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJpZmljYXRpb246
Ok5vKSB7CisgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJDb3Vs
ZG4ndCB2ZXJpZnkgdXNlci4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1
NiwyMyArNDc2LDIwIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyVXNlckNvbnNlbnRlZChMQUNvbnRleHQgKmNvbnRlCiAgICAgLy8gU3RlcCAxMS4K
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzaWduYXR1cmU7CiAgICAgewotICAgICAgICBhdXRv
IHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAg
ICAgICAgW3F1ZXJ5IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpAeworICAgICAgICBOU0RpY3Rp
b25hcnkgKnF1ZXJ5ID0gQHsKICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xh
c3NLZXksCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5
Q2xhc3NQcml2YXRlLAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDog
dG9OU0RhdGEocmVzcG9uc2UtPnJhd0lkKCkpLmdldCgpLAorICAgICAgICAgICAgKGlkKWtTZWNV
c2VBdXRoZW50aWNhdGlvbkNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICAoaWQpa1NlY1Jl
dHVyblJlZjogQFlFUywKICNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKICAgICAg
ICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUwogI2Vsc2UKICAg
ICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAjZW5kaWYKLSAgICAgICAgfV07
Ci0gICAgICAgIC8vIGNvbnRleHQgaXMgbnVsbHB0ciBpbiBtb2NrIHRlc3RpbmcuCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICAgICAgW3F1ZXJ5IHNldE9iamVjdDpjb250ZXh0IGZvcktl
eTooaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29udGV4dF07CisgICAgICAgIH07CiAgICAgICAg
IENGVHlwZVJlZiBwcml2YXRlS2V5UmVmID0gbnVsbHB0cjsKLSAgICAgICAgT1NTdGF0dXMgc3Rh
dHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5
LmdldCgpLCAmcHJpdmF0ZUtleVJlZik7CisgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0
ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJnByaXZhdGVL
ZXlSZWYpOwogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICByZWNlaXZlRXhjZXB0
aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBnZXQgdGhlIHByaXZhdGUg
a2V5IHJlZmVyZW5jZTogIiwgc3RhdHVzKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggOGE3NjYyYzdlYjdlMzNkOTkyN2Y2NDQ0
ZjlkZjczN2RlMGYyMTAxMi4uMGVjMTE1OGIwM2MzZWYwMzVhNTkyY2FiNGE4ZjIxODFkODJlYzdm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKQEAgLTM2LDkgKzM2LDcgQEAK
IE9CSkNfQ0xBU1MgTEFDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIGNsYXNzIEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKLQogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTUyLDEzICs1MCwxOSBAQCBjbGFzcyBMb2NhbENvbm5lY3Rpb24gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsQ29ubmVjdGlv
bik7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBVc2VyVmVyaWZpY2F0aW9uIHsKKyAgICAgICAg
Tm8sCisgICAgICAgIFllcworICAgIH07CisKICAgICB1c2luZyBBdHRlc3RhdGlvbkNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOU0FycmF5ICosIE5TRXJyb3IgKik+OworICAgIHVz
aW5nIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNl
clZlcmlmaWNhdGlvbiwgTEFDb250ZXh0ICopPjsKIAogICAgIExvY2FsQ29ubmVjdGlvbigpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5Mb2NhbENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICAvLyBPdmVycmlkZWQgYnkgTW9ja0xvY2FsQ29ubmVjdGlvbi4KLSAgICB2aXJ0dWFsIGJvb2wg
aXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVz
ZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpIGNvbnN0
OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZh
dGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2Vj
QXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNE
YXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBmaWx0ZXJSZXNwb25zZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4mKSBjb25zdCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24ubW0KaW5kZXggNTNlMDEyM2FkN2FkYTU1NzUzYzIyMjk5ZmU4OWU4ODQwMmZjMjFmZi4uNGI3
NzIxYTY1ZTExYzk4MmRhYTJjMTEzNWJlNWY5OGRkMGJmMjMwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIAorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTM5LDEzICs0MCwy
OSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBMb2NhbENvbm5lY3Rpb246OmlzVW5s
b2NrZWQoTEFDb250ZXh0ICpjb250ZXh0KSBjb25zdAordm9pZCBMb2NhbENvbm5lY3Rpb246OnZl
cmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBVc2VyVmVyaWZpY2F0
aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKLSAgICBhdXRvIHJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlUG9saWN5OkxB
UG9saWN5RGV2aWNlT3duZXJBdXRoZW50aWNhdGlvbldpdGhCaW9tZXRyaWNzIG9wdGlvbnM6QHsg
QChMQU9wdGlvbk5vdEludGVyYWN0aXZlKTogQFlFUyB9IGVycm9yOiZlcnJvcl07Ci0gICAgaWYg
KCFyZXN1bHQpCi0gICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudDog
JUAiLCBlcnJvcik7Ci0gICAgcmV0dXJuICEhcmVzdWx0OworICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CisKKyAgICBhdXRvIG9wdGlv
bnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGlm
IChbY29udGV4dCBiaW9tZXRyeVR5cGVdID09IExBQmlvbWV0cnlUeXBlVG91Y2hJRCkKKyAgICAg
ICAgW29wdGlvbnMgc2V0T2JqZWN0OldlYkNvcmU6OnRvdWNoSURQcm9tcHRUaXRsZSgpIGZvcktl
eTpAKExBT3B0aW9uQXV0aGVudGljYXRpb25UaXRsZSldOworICAgIFtvcHRpb25zIHNldE9iamVj
dDpXZWJDb3JlOjpiaW9tZXRyaWNGYWxsYmFja1Byb21wdFRpdGxlKCkgZm9yS2V5OkAoTEFPcHRp
b25QYXNzY29kZVRpdGxlKV07CisKKyAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNE
aWN0aW9uYXJ5ICosIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICAgICAgVXNlclZlcmlmaWNhdGlvbiB2ZXJpZmljYXRp
b24gPSBVc2VyVmVyaWZpY2F0aW9uOjpZZXM7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBhdXRoZW50aWNhdGUgd2l0aCBiaW9tZXRyaWNzOiAl
QCIsIGVycm9yKTsKKyAgICAgICAgICAgIHZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246
Ok5vOworICAgICAgICB9CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdmVyaWZpY2F0aW9uLCBj
b250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih2ZXJpZmljYXRpb24sIGNvbnRleHQuZ2V0KCkpOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIFtjb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29udHJvbDphY2Nlc3NDb250
cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VLZXlTaWduIG9wdGlvbnM6
b3B0aW9ucy5nZXQoKSByZXBseTpyZXBseS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxTZWNLZXlS
ZWY+IExvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0
ICpjb250ZXh0LCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0
cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQppbmRleCA2YmMwODI1Mjk2ZDhhYWUyM2FiNjRk
Y2YwNzBmMzEzZjBmOTk0ZmUwLi5hZDdiZTEzYTcyMTk4MTQzZWIwNTExMzIzNzI5OWUwNGRkZWRj
M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCkBAIC01NSw2ICs1NSw4IEBAIGJv
b2wgTG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpCiAKICNpZiBkZWZpbmVkKExPQ0FMU0VSVklD
RV9BRERJVElPTlMpCiBMT0NBTFNFUlZJQ0VfQURESVRJT05TCisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKaW5kZXggZGYzZDk1YWUxMDllNWJk
NDIxMjdhM2U0ZjAzYzU0NTNiNThiYzM4OS4uZDJlZGZmNmJmOTIxODc4NmU1OWQyYTE0YzAzODYx
NWIwNjRjOGI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlz
bWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHJlcXVlc3RQaW4odWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpT
dHJpbmcmKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlJik+JiYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgdmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJikg
Y29uc3QgZmluYWw7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3Io
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSBjb25z
dCBmaW5hbDsKIAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKm1fcGFuZWw7CiAgICAg
V2Vha09iakNQdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBtX2Rl
bGVnYXRlOwpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHBhbmVsRGlz
bWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0IDogMTsKICAgICAgICAgYm9vbCBw
YW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVyIDogMTsK
ICAgICAgICAgYm9vbCBwYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwotICAgICAgICBib29sIHBhbmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29t
cGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHBhbmVsRGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdG9yQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1l
dGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5tbQppbmRleCAwZTk3M2ZiOTRmYTYxMDkyZGI0NWJkNDA2YzU5N2FjOWFl
YjIxMDA3Li5kYmRmNWFlNTYzZmQ4M2FlMDQzZGRjMTYyNTU4MWFhOWI4ZGY3ZDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0K
QEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIkFQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNp
bXBvcnQgIldLTlNBcnJheS5oIgotI2ltcG9ydCAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgog
I2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgiCiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KQEAgLTUwLDcgKzQ5LDcgQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbERpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJl
c3VsdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOmRpc21p
c3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy5wYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVy
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6cmVxdWVzdFBJ
TldpdGhSZW1haW5pbmdSZXRyaWVzOmNvbXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdh
dGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2Rz
LnBhbmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFj
Y2Vzc0NvbnRyb2w6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
cGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOmRlY2lkZVBvbGlj
eUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtMTY3LDI1ICsxNjYsMzcgQEAgdm9p
ZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShW
ZWN0b3I8UmVmPFdlYkNvcmU6OkEKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vz
c0NvbnRyb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAorc3RhdGljIExvY2FsQXV0aGVudGljYXRvclBvbGljeSBsb2NhbEF1
dGhlbnRpY2F0b3JQb2xpY3koX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHJlc3VsdCkKIHsK
LSAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsVmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250
cm9sQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHRO
UyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKS5nZXQoKSk7CisgICAgc3dpdGNoIChy
ZXN1bHQpIHsKKyAgICBjYXNlIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93OgorICAg
ICAgICByZXR1cm4gTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpBbGxvdzsKKyAgICBjYXNlIF9X
S0xvY2FsQXV0aGVudGljYXRvclBvbGljeURpc2FsbG93OgorICAgICAgICByZXR1cm4gTG9jYWxB
dXRoZW50aWNhdG9yUG9saWN5OjpEaXNhbGxvdzsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIExvY2FsQXV0aGVudGljYXRvclBvbGljeTo6QWxsb3c7Cit9CisK
K3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTG9jYWxB
dXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLnBhbmVsRGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yQ29tcGxldGlvbkhh
bmRsZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5OjpEaXNhbGxvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGRlbGVn
YXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIWRlbGVnYXRlKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSku
Z2V0KCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihMb2NhbEF1dGhlbnRpY2F0b3JQb2xp
Y3k6OkRpc2FsbG93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwg
QHNlbGVjdG9yKHBhbmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFu
ZGxlcjopKTsKLSAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2w6YWNjZXNzQ29udHJvbCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXShMQUNvbnRleHQgKmNvbnRleHQpIG11dGFibGUgeworICAgIGF1dG8g
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5n
ZXQoKSwgQHNlbGVjdG9yKHBhbmVsOmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldp
dGhDb21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBkZWNp
ZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBj
aGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBv
bGljeSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhh
c0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
eHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3ko
cG9saWN5KSk7CiAgICAgfSkuZ2V0KCldOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
Q29ubmVjdGlvbi5oCmluZGV4IGQwZGQ5YjEwNDlhYTE3ZmJlZWUzYjg0OTJlNWVjNDFmNzU1MmE4
ZDAuLmRlZTc3M2MzZTEzMmUzN2I3MjcyN2YzNTM4NzE0MDE3YjFkOTZjZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKIAogcHJpdmF0ZToKLSAgICBib29sIGlzVW5s
b2NrZWQoTEFDb250ZXh0ICopIGNvbnN0IGZpbmFsOworICAgIHZvaWQgdmVyaWZ5VXNlcihTZWNB
Y2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7
CiAgICAgUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFD
b250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVs
LCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBn
ZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwg
QXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGZpbHRlclJlc3Bv
bnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
PiYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
CmluZGV4IDhiOGQ4MjQ1MTRlNThjODQyMDBhYTc4MTY2NzU5YWFlZjdjYzUxNTYuLmIxYzk4NzQ3
OWY0ZDdjYzFhNzQ4NzU5MTMxYzg2MjQzZWI2NzZlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTQ0LDkgKzQ0LDE3IEBAIE1vY2tMb2NhbENvbm5lY3Rp
b246Ok1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uCiB7CiB9CiAKLWJvb2wgTW9ja0xvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tlZChMQUNv
bnRleHQgKmNvbnRleHQpIGNvbnN0Cit2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVz
ZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0
aGVudGljYXRpb247CisgICAgLy8gTW9jayBhc3luYyBvcGVyYXRpb25zLgorICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29uZmlndXJhdGlvbiA9IG1fY29uZmlndXJhdGlvbiwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbmZp
Z3VyYXRpb24ubG9jYWwpOworICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2Vw
dEF1dGhlbnRpY2F0aW9uKSB7CisgICAgICAgICAgICBjYWxsYmFjayhVc2VyVmVyaWZpY2F0aW9u
OjpObywgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxs
YmFjayhVc2VyVmVyaWZpY2F0aW9uOjpZZXMsIGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFu
Y2UoKSBpbml0XSkuZ2V0KCkpOworICAgIH0pOwogfQogCiBSZXRhaW5QdHI8U2VjS2V5UmVmPiBN
b2NrTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQg
KiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0
YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25GbGFncy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRp
b25GbGFncy5oCmluZGV4IDUwOTJkOTMzODZlZTNiY2RlYTYyZjRlZmUxMjk1MmUwZTM3N2E1NWYu
LjY1OGVlYmNiZDU3NmUxMmIyNTQ3ZmY1MjhjMjU1YmUxZGU4NGQ2NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
RmxhZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgKQEAgLTUxLDYgKzUxLDExIEBAIGVudW0gY2xhc3MgV2Vi
QXV0aGVudGljYXRpb25TdGF0dXMgOiB1aW50OF90IHsKICAgICBMQU5vQ3JlZGVudGlhbCwKIH07
CiAKK2VudW0gY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IDogYm9vbCB7CisgICAgQWxs
b3csCisgICAgRGlzYWxsb3cKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxNjc3MzljNWUyNDU1NzYyNjY0MGFiM2M0NjE4YzhmMmIyNzBlN2Vl
Li4wYzE5ZDFhNjFhOTMwNzUxYWQ1YTdlMmIwOTU2YTQ5ZTI4YzVjMmFiIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjAtMDMtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViQXV0aG5dIEltcGxlbWVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBw
YW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMTAxODQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAg
ICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGUgcGFuZWw6dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbDogUmVtb3Zl
ZC4KKwogMjAyMC0wMy0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvY29hXSBNYXBwaW5nIGZyb20gTUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3Vs
ZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY4
YWIwOGM0ZGRkNTE3M2RiMGE5OWNmOGFmMmIzMGE0YzE4NzkyNGUuLmJkOWIzNzExMzM5NjBjYjJm
ZGU4YjQ1ZWYxNWUwMWIyYzg4ZjNjNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTAs
NyArMzUwLDYgQEAKIAkJNTczMjU1QTcyMjEzOUJDNzAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hp
dmUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3MzI1NUEzMjIxMzlCOTAwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNoaXZlLTIuaHRt
bCAqLzsgfTsKIAkJNTc0MjE3ODgyNDAwQUMyNTAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovOyB9Owog
CQk1NzQyMTc4QTI0MDBBRUQ4MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzg5MjQwMEFFRDAwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVk
ZW50aWFsLmh0bWwgKi87IH07Ci0JCTU3NDIxNzhDMjQwMENENDcwMDJCMzAzRCAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sICovOyB9OwogCQk1NzQy
MTc4RTI0MDBEMkRGMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC1sYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLmh0bWwgKi87IH07CiAJCTU3NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAv
KiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3
b3JrICovOyB9OwogCQk1NzU4NTk3RjIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5N0Uy
M0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNwcCAqLzsgfTsKQEAgLTE1MjQsNyArMTUy
Myw2IEBACiAJCQkJNTc4REE0NEUyM0VDRDI4QjAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTU3MEQyNkZDMjNDM0Y4NzAwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTc2NjNERUMyMzRGMUY5MzAwRTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQt
YXNzZXJ0aW9uLWhpZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJCTU3NDIxNzhDMjQw
MENENDcwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3OTgzMzkyMjM2OEZBMzcwMDhFNTU0NyAvKiB3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NjYzREVBMjM0RUE2NkQwMEU4NUUwOSAvKiB3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1Nzc0NTREMjIzNTlCQjAxMDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CkBAIC0xOTc0LDcgKzE5NzIsNiBAQAogCQk1NzM1RjAyNTFGM0E0RUE2MDAwRUU4MDEgLyogVGVz
dFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IHBhdGggPSAiVGVz
dFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzQyMTc4OTI0MDBBRUQwMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NDIxNzhCMjQwMENEMkQwMDJCMzAzRCAv
KiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzQyMTc4RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3NDIxNzhGMjQwMEQ1NEQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlh
bC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0RjU1RDAyMDRENDcxQzAw
Mjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHku
ZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtMzYwMyw3ICszNjAwLDYgQEAKIAkJ
CQk1NzhEQTQ0RDIzRUNEMjYxMDAyNDYwMTAgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3Nl
cnRpb24taGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgKi8sCiAJCQkJNTcwRDI2RkIy
M0MzRjg2NTAwRDVDRjY3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1w
aW4uaHRtbCAqLywKIAkJCQk1NzY2M0RFQjIzNEYxRjgwMDBFODVFMDkgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgKi8sCi0JCQkJNTc0MjE3OEIyNDAwQ0QyRDAw
MkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi8sCiAJ
CQkJNTc5ODMzN0IyMzVFQjY1QzAwOEU1NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0bWwgKi8sCiAJCQkJNTc2NjNERTkyMzRFQTYwQjAw
RTg1RTA5IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sICovLAog
CQkJCTU3NzQ1NEQxMjM1OUJBRDUwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi11MmYtbm8tY3JlZGVudGlhbHMuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQppbmRleCBmMmZiNDUyODAwMjRiMGRiNDFlYzI3NjA1NjAxYzdiMTMyZjUy
ZWU2Li5jMDY3NDIwMzBlNzZmNzA4ODVlN2QzODU5MzA4ZTgxOGZkYTI3NGZiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBib29s
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUVycm9yID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVk
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFOb0Ny
ZWRlbnRpYWwgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYW5j
ZWxJbW1lZGlhdGVseSA9IGZhbHNlOwotc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bFZlcmlmeVVzZXIgPSBmYWxzZTsKK3N0YXRpYyBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kg
bG9jYWxBdXRoZW50aWNhdG9yUG9saWN5ID0gX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5RGlz
YWxsb3c7CiBzdGF0aWMgU3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW47CiBzdGF0aWMg
Qk9PTCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5kbGUgPSBOTzsKIHN0YXRpYyBT
dHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CkBAIC0xNTEsMTEgKzE1MSw5IEBAIC0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZTooTlNBcnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzW2lu
ZGV4XSk7CiB9CiAKLS0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCB2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6KFNlY0FjY2Vzc0NvbnRyb2xSZWYpYWNj
ZXNzQ29udHJvbCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICopKWNvbXBs
ZXRpb25IYW5kbGVyCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICop
cGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gdHJ1
ZTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9jXSBpbml0XSk7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dC5nZXQoKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIobG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KTsKIH0KIAogQGVuZApAQCAtMzAwLDI0ICsy
OTgsMTggQEAgc3RhdGljIHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
YW5jZWxJbW1lZGlhdGVseSA9IGZhbHNlOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW4g
PSBlbXB0eVN0cmluZygpOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRs
ZSA9IE5POwotICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyID0gZmFsc2U7Cisg
ICAgbG9jYWxBdXRoZW50aWNhdG9yUG9saWN5ID0gX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
RGlzYWxsb3c7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrUGFuZWwoX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqcGFuZWwsIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJRCwgTlNBcnJheSAqdHJhbnNw
b3J0cywgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgRVhQRUNUX1dLX1NU
UkVRKHBhbmVsLnJlbHlpbmdQYXJ0eUlELCByZWx5aW5nUGFydHlJRCk7CiAKLSAgICAvLyBCcnV0
ZSBmb3JjZSBnaXZlbiB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBhcnJheSBpcyA0LgotICAgIGF1
dG8gKnRoZVRyYW5zcG9ydHMgPSBwYW5lbC50cmFuc3BvcnRzOwotICAgIEVYUEVDVF9FUSh0aGVU
cmFuc3BvcnRzLmNvdW50LCB0cmFuc3BvcnRzLmNvdW50KTsKKyAgICBFWFBFQ1RfRVEocGFuZWwu
dHJhbnNwb3J0cy5jb3VudCwgdHJhbnNwb3J0cy5jb3VudCk7CiAgICAgc2l6ZV90IGNvdW50ID0g
MDsKICAgICBmb3IgKE5TTnVtYmVyICp0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKSB7Ci0gICAgICAg
IGZvciAoTlNOdW1iZXIgKnRoZVRyYW5zcG9ydCA6IHRoZVRyYW5zcG9ydHMpIHsKLSAgICAgICAg
ICAgIGlmICh0cmFuc3BvcnQgPT0gdGhlVHJhbnNwb3J0KSB7Ci0gICAgICAgICAgICAgICAgY291
bnQrKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQor
ICAgICAgICBpZiAoW3BhbmVsLnRyYW5zcG9ydHMgY29udGFpbnNPYmplY3Q6dHJhbnNwb3J0XSkK
KyAgICAgICAgICAgIGNvdW50Kys7CiAgICAgfQogICAgIEVYUEVDVF9FUShjb3VudCwgdHJhbnNw
b3J0cy5jb3VudCk7CiAKQEAgLTEyNTksMTEgKzEyNTEsMTAgQEAgVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsTnVsbERlbGVnYXRlKQogICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07Ci0gICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07Ci0gICAgY2xlYW5VcEtleWNoYWluKCIi
KTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIkRpc2FsbG93IGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIl07CiB9CiAKLVRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVu
dGlhbCkKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbERpc2Fs
bG93TG9jYWxBdXRoZW50aWNhdG9yKQogewogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMTI3NywxNSAr
MTI2OCwxMyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWwp
CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0
KCldXTsKLSAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsK
LSAgICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1i
ZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSku
Z2V0KCksIGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVu
dGljYXRpb25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25U
eXBlQ3JlYXRlKTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIkRpc2FsbG93IGxvY2FsIGF1dGhlbnRpY2F0
b3IuIl07CiB9CiAKLVRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFHZXRBc3NlcnRpb24p
CitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxBbGxvd0xvY2Fs
QXV0aGVudGljYXRvcikKIHsKICAgICByZXNldCgpOwotICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRo
ZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCiAgICAgYXV0byAqY29uZmln
dXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRo
VGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25m
aWd1cmVKU0NGb3JUZXN0aW5nOllFU107CiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTp3ZWJBdXRoZW50aWNhdGlv
bkV4cGVyaW1lbnRhbEZlYXR1cmUoKV07CkBAIC0xMjk1LDExICsxMjg0LDEwIEBAIFRFU1QoV2Vi
QXV0aGVudGljYXRpb25QYW5lbCwgTEFHZXRBc3NlcnRpb24pCiAgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAg
IEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwg
IiIsIHRlc3RVc2VyaGFuZGxlQmFzZTY0KSk7CisgICAgbG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
ID0gX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5QWxsb3c7CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07Ci0gICAg
VXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7Ci0gICAgY2hlY2tQ
YW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBp
bml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9w
dE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJh
bnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdldCk7CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CisgICAgY2hlY2tQYW5l
bChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0
V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5T
KFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNw
b3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUNyZWF0ZSk7CiAg
ICAgY2xlYW5VcEtleWNoYWluKCIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1s
YS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZmEzYzViYTQ0YjAyZmIxMDUyOWQwMTRkZjVkZTY0MjhkNDk4MGJmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
aW5wdXQiPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7
IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9
KTsKLSAgICAgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3Vz
KCk7IH0pOwotICAgIH0KLQotICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgIHB1YmxpY0tl
eTogewotICAgICAgICAgICAgY2hhbGxlbmdlOiBuZXcgVWludDhBcnJheSgxNiksCi0gICAgICAg
ICAgICB0aW1lb3V0OiAxMDAKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgIC8vIGNv
bnNvbGUubG9nKCJTdWNjZWVkZWQhIik7Ci0gICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJTdWNjZWVkZWQhIik7Ci0gICAgfSwgZXJy
b3IgPT4gewotICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsKLSAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXJy
b3IubWVzc2FnZSk7Ci0gICAgfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1s
b2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggMGY2OWQw
YjkxNWE3ODIyZWVhZWU0ZmY1YWZjYTI4MzhhZGM1ZTkzZC4uMWNhZmZkN2MyZWZmMGQ3NzFiYzQ0
ODdkMTU3NWRiMDdkMWVhNjg1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTk4LDcgKzk4LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQu
Iik7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCB2ZXJp
ZnkgdXNlci4iKTsKICAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwog
CiAgICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggM2U0ZjQ5OTA2YzMyZTRl
ODk1MjU4ZjY2ODNhMGZiZWE0OTk3NzllZi4uZjI3ZjcxMTkyMjdlODBlMzYwMTA4M2MyYzBiNWU0
MDkwN2Q4ZTI2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTU1LDcgKzU1LDcgQEAKIAogICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtl
eVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQp
OwotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ291bGRuJ3QgZ2V0IHVzZXIg
Y29uc2VudC4iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25z
KSwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5j
bGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwogICAgICAgICAgICAg
fSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392333</attachid>
            <date>2020-03-03 14:38:39 -0800</date>
            <delta_ts>2020-03-04 11:34:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208533-20200303143838.patch</filename>
            <type>text/plain</type>
            <size>55523</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwNmZmMTliMDEyY2Uy
Yjg1MGYyMzZiYmM5NDk4ZmMyNzIyZjkxNC4uZWYyMTgyYTZiNjQ0YmU4ZjExZGM1MTc3MDAwNDk1
MjJmZDA1YzJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTAzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOl0gU1BJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1MzMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3RzIHdpdGhpbiBleGlzdGlu
ZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpiaW9tZXRyaWNGYWxs
YmFja1Byb21wdFRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6
CisgICAgICAgIEFkZHMgbG9jYWxpemVkIHN0cmluZ3MgdG8gc3VwcG9ydCB0aGUgY3VzdG9taXpl
ZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZy4KKwogMjAyMC0wMy0wMiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYXBwaW5nIGZyb20g
TUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDZhZjZhMWYwZDZlOTZjYjFmYjQ2YTYzMTVkOWE4NGYzZWE5Yjg0MTUuLjZhZmUw
ZjFlMjIwNDU5NjI3NmRiZjlhNDNlN2U3MzgwOTljOGVlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMjAtMDMtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMTAxODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIHRoZSBhYm92ZSBTUEkgdG8gcmVwbGFjZSAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6XS4KKyAgICAgICAgVGhlIG9yaWdpbmFsIFNQSSBpcyBkZXNpZ25lZCBvbiB0aGUg
cHJlbWlzZSB0aGF0IFNhZmFyaSBpcyBnb2luZyB0byBoaWdobHkgY3VzdG9taXplIHRoZSBMb2Nh
bEF1dGhlbnRpY2F0aW9uIFVJLCBhbmQgdGhhdCBpcyBub3QgaGFwcGVuaW5nCisgICAgICAgIGFu
eW1vcmUuIFRoZXJlZm9yZSwgV2ViS2l0IHRha2VzIGJhY2sgdGhlIGludm9jYXRpb24gb2YgTG9j
YWxBdXRoZW50aWNhdGlvbiBhbmQgb2ZmZXIgYSBuZXcgU1BJIHRvIHRlbGwgY2xpZW50cyB3aGVu
IFdlYktpdCBpcyBhYm91dCB0bworICAgICAgICBzaG93IExvY2FsQXV0aGVudGljYXRpb24gVUku
IENsaWVudHMgdGhlbiBoYXZlIHRoZSB0cmlnZ2VyIHRvIHB1bGwgYXQgdGhlaXIgcGxlYXN1cmUu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFsbCBwbHVtYmluZ3MgdG8gcmVwbGFj
ZSB0aGUgU1BJLiBCZXNpZGVzIHRoYXQsIHRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgZW5o
YW5jZXMgdGhlIExvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlciB3aXRoIGEgc2xpZ2h0bHkgY3Vz
dG9taXplZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZzsKKyAgICAgICAgMikgYWRkcyB0aGUg
U1BJIHVzZWQgYWJvdmUgaW50byB0aGUgU1BJIGhlYWRlcjsKKyAgICAgICAgMykgbWFrZXMgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlLnRyYW5zcG9ydHMgYXMgYSBOU1NldCBpbnN0
ZWFkIG9mIGEgTlNBcnJheTsKKyAgICAgICAgNCkgbGV0cyBMb2NhbFNlcnZpY2U6OmlzQXZhaWxh
YmxlIHJldHVybiBmYWxzZSBpZiBBcHBsZSBhdHRlc3RhdGlvbiBpcyBub3QgYXZhaWxhYmxlLgor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yIGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgor
ICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRyYW5zcG9ydHNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6dmVyaWZ5VXNlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
ckRlY2lkZVBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJVc2VyQ29uc2VudGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5
VXNlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjpp
c0F2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OmxvY2FsQXV0aGVudGljYXRvclBv
bGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0
aW9uOjp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVj
dGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKwogMjAyMC0wMy0wMiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBN
YXBwaW5nIGZyb20gTUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBV
SSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA2ZDc5YzVjMDJhMTljNjY5YzM3N2U2YzA2MGMzMmE1NDViY2VlZDlmLi43NTUyMjVlNmJh
M2RlMzEzOGQzNjZmMTQ3ZmZmNWI4NGEyOGZhZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTMxMCw2ICszMTAsOSBAQAogLyogVmlkZW8gRW50
ZXIgRnVsbCBTY3JlZW4gY29udGV4dCBtZW51IGl0ZW0gKi8KICJFbnRlciBGdWxsIFNjcmVlbiIg
PSAiRW50ZXIgRnVsbCBTY3JlZW4iOwogCisvKiBVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0
byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiRW50ZXIgcGFzc2NvZGUgdG8gc2lnbiBpbnRv
IHRoaXMgd2Vic2l0ZS4iID0gIkVudGVyIHBhc3Njb2RlIHRvIHNpZ24gaW50byB0aGlzIHdlYnNp
dGUuIjsKKwogLyogbWVudSBpdGVtICovCiAiRW50ZXIgUGljdHVyZSBpbiBQaWN0dXJlIiA9ICJF
bnRlciBQaWN0dXJlIGluIFBpY3R1cmUiOwogCkBAIC04NzcsNiArODgwLDkgQEAKIC8qIHByb21w
dCBzdHJpbmcgaW4gYXV0aGVudGljYXRpb24gcGFuZWwgKi8KICJUbyB2aWV3IHRoaXMgcGFnZSwg
eW91IG11c3QgbG9nIGluIHRvIHRoaXMgYXJlYSBvbiAlQDoiID0gIlRvIHZpZXcgdGhpcyBwYWdl
LCB5b3UgbXVzdCBsb2cgaW4gdG8gdGhpcyBhcmVhIG9uICVAOiI7CiAKKy8qIFVzZSBUb3VjaCBJ
RCB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRo
aXMgd2Vic2l0ZS4iID0gIlRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUuIjsKKwog
LyogVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSAqLwogIlRyYW5zZm9ybWF0
aW9ucyIgPSAiVHJhbnNmb3JtYXRpb25zIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhMTE0ZmQ3NjFmOTJhMGE1ZDk5NmIwZmFlZTBiMDdh
NTMwOTAyNTg4Li45YWMwYmQyOTIwY2NiYTU5M2U5YmEwN2VlNmYzZTY1ODI1YmEyZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMTIwNyw0
ICsxMjA3LDE2IEBAIFN0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCitTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRoaXMg
d2Vic2l0ZS4iLCAiVXNlIFRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUiKTsKK30K
KworU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKQoreworICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJFbnRlciBwYXNzY29kZSB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlLiIs
ICJVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlIik7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IDNlMzMxNjRmYjJkNzg1MzY4YTU3NzRlZDRh
YjFmM2VhY2FmNDUyN2EuLmQ3MTg0NzJjNGFkYTNlYjdjNDRlNWJjN2I5ZWI0NmM2MDcxNWFhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTMzOSw2
ICszMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBkYXRlUGlja2VyWWVhckxhYmVsVGl0bGUoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKTsK
KyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhfKHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0
aGVudGljYXRpb25TUEkuaAppbmRleCBlNjdmMmJmY2FkZDMwY2Y1YjJlZjIxYTg2MTMxZWNjYzA4
MjhlMjI2Li44ZTU4NGQ4MmIzNDQ3ZjBhZmFlMjc2ZWE3YjhmNTMxYzFkNDY0NTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9u
U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCkBAIC0zNCwxMiArMzQsMTMgQEAKICNlbHNlCiAKIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIExBT3B0aW9uKSB7Ci0gICAgTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSwKKyAg
ICBMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUsCisgICAgTEFPcHRpb25QYXNzY29kZVRpdGxl
LAogfTsKIAogQGludGVyZmFjZSBMQUNvbnRleHQoUHJpdmF0ZSkgPE5TU2VjdXJlQ29kaW5nPgog
Ci0tIChOU0RpY3Rpb25hcnkgKilldmFsdWF0ZVBvbGljeTooTEFQb2xpY3kpcG9saWN5IG9wdGlv
bnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CistICh2
b2lkKWV2YWx1YXRlQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250
cm9sIG9wZXJhdGlvbjooTEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uKW9wZXJhdGlvbiBvcHRpb25z
OihOU0RpY3Rpb25hcnkgKilvcHRpb25zIHJlcGx5Oih2b2lkKF4pKE5TRGljdGlvbmFyeSAqcmVz
dWx0LCBOU0Vycm9yICplcnJvcikpcmVwbHk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmgKaW5kZXggOGMzNjg1MzNlYTBiMjE0ZjAxYmE3Y2JkOWRkNWI1OWNhNTJlMTQ4MS4uODQ2
MDA4Y2RkNTc1MDg1ZDFkNWM0OGZkZGI1YzVlMTg0ZjU0OTNiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTM5LDExICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci1lbnVtIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdDsKLWVudW0gY2xh
c3MgV2ViQXV0aGVudGljYXRpb25SZXN1bHQgOiBib29sOwotfQotCiBuYW1lc3BhY2UgQVBJIHsK
IAogY2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCB7CkBAIC01NSw3ICs1MSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3BvbnNlcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBBU1NFUlQoIXJlc3BvbnNl
cy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7IH0KKyAgICAvLyBGSVhNRTogSWRlYWxseSwgTG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5OjpEaXNhbGxvdyBzaG91bGQgYmUgdXNlZC4gVGhpcyBpcyBhIHF1aXJr
IHRvIGJ5cGFzcyBDIEFQSSBmb3IgV2ViS2l0VGVzdFJ1bm5lci4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
OjpBbGxvdyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmgKaW5kZXggOTc0MWRkNjJjNjFmZThmYmFmMTdlMjg1ZWYxMDFkZmY1YmY4MDhmZS4uODgz
ZGZmNDdhMTRmMjhkNmJmZDJlZWY3ZTJlODg0YmVlZTE5NzMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5oCkBAIC02OCw2ICs2OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVH
ZXQsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0xvY2FsQXV0aGVudGljYXRvclBv
bGljeSkgeworICAgIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93LAorICAgIF9XS0xv
Y2FsQXV0aGVudGljYXRvclBvbGljeURpc2FsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvdG9jb2wgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KIAogQG9wdGlvbmFsCkBAIC03Niw3ICs4
MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlw
ZSkgewogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRp
c21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRp
b25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICop
cGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAt
ICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNz
ZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClw
YW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxv
Y2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLTG9jYWxB
dXRoZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkBAIC04
NSw3ICs5MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKQogCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlkIDxf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+IGRlbGVnYXRlOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQ7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXkgKnRyYW5zcG9ydHM7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU2V0ICp0cmFuc3BvcnRzOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUg
dHlwZTsKIAogLSAodm9pZCljYW5jZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4
IDE5NzNiMGY1NjRkMjUxYjIwY2YyNmEzNmEzYTY0ZDhhMjUyODIyZjMuLjI1ODYyYmRjYjcwYjA5
NDc0MzhlZjJiNTdkYzk3ODNkOGQ0ODNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CkBAIC0zMyw3ICszMyw3IEBACiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBXZWFrUHRyPFdlYktpdDo6V2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudD4gX2NsaWVudDsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IF90cmFuc3BvcnRzOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IF90cmFuc3Bv
cnRzOwogI2VuZGlmCiB9CiAKQEAgLTgxLDEzICs4MSwxMyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVu
dGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydChXZWJDb3JlOjpB
dXRoZQogICAgIH0KIH0KIAotLSAoTlNBcnJheSAqKXRyYW5zcG9ydHMKKy0gKE5TU2V0ICopdHJh
bnNwb3J0cwogewogICAgIGlmIChfdHJhbnNwb3J0cykKICAgICAgICAgcmV0dXJuIF90cmFuc3Bv
cnRzLmdldCgpOwogCiAgICAgYXV0byYgdHJhbnNwb3J0cyA9IF9wYW5lbC0+dHJhbnNwb3J0cygp
OwotICAgIF90cmFuc3BvcnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTp0cmFuc3BvcnRzLnNpemUoKV07CisgICAgX3RyYW5zcG9ydHMgPSBbW05TTXV0YWJsZVNl
dCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0cmFuc3BvcnRzLnNpemUoKV07CiAgICAgZm9yIChh
dXRvJiB0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKQogICAgICAgICBbX3RyYW5zcG9ydHMgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6d2tXZWJBdXRoZW50aWNh
dGlvblRyYW5zcG9ydCh0cmFuc3BvcnQpXSkuZ2V0KCldOwogICAgIHJldHVybiBfdHJhbnNwb3J0
cy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAppbmRleCA5MWQ5OWVkNTJiNmRiMWRlZmFiMTU5NjI0
MzEwNjc5ZjNjYWQ2NzRlLi41NjcxYWVjNzY5NzgyNmRkMWVlMTMxYmFiOWZmNzg5NmIyZDQ1NDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9u
U3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJl
dHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFz
aFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSYpPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0
b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSA9
IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggZmNjMjdhZDY2ZjMyMzY4NGU5
YzdkNGY4NmI1YWM3NGZmMGY2MmIwOS4uYzM5MTgwMWIzYzJlMDU5MTk0YTVkYTc2Yjc5ODM0Y2Fm
NDcxNzA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjk1LDEx
ICsyOTUsMTAgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UoY29uc3QgSGFzaFNldDxSZWY8QXV0aGVudGljYXQKICAgICB9KTsKIH0KIAotdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vz
c0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGVjaWRlUG9saWN5Rm9y
TG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNh
dG9yUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZXRhaW5QdHI8U2VjQWNj
ZXNzQ29udHJvbFJlZj4gYWNjZXNzQ29udHJvbCA9IGFjY2Vzc0NvbnRyb2xSZWY7Ci0gICAgZGlz
cGF0Y2hQYW5lbENsaWVudENhbGwoW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRy
b2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29u
c3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7Ci0gICAgICAg
IHBhbmVsLmNsaWVudCgpLnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbC5nZXQoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNsaWVu
dCgpLmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmlu
ZGV4IGU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQuLmJkMGI5NmQ0Yzk4
MDExOTc4YTBjYTdkZWQ0ZGQwZDIwYzJkYjY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRv
clN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQg
cmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHZlcmlmeVVzZXIoU2Vj
QWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYp
IGZpbmFsOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgZmluYWw7CiAK
ICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1
YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNl
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaAppbmRleCA5YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjLi42
OWVkMzRlMTU4NDE1YzUwNWI5NjY1NGVmN2UwMTdmZGQzMjE4MGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzgsMTQgKzM4LDE1IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRp
Y2F0b3IgewogcHVibGljOgogICAgIC8vIEhlcmUgaXMgdGhlIEZTTS4KLSAgICAvLyBNYWtlQ3Jl
ZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBBdHRl
c3RlZCA9PiBFbmQKLSAgICAvLyBHZXRBc3NlcnRpb246IEluaXQgPT4gUmVxdWVzdFJlY2VpdmVk
ID0+IFJlc3BvbnNlU2VsZWN0ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBFbmQKKyAgICAvLyBNYWtl
Q3JlZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gUG9saWN5RGVjaWRlZCA9PiBV
c2VyVmVyaWZpZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCisgICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0
ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBSZXNwb25zZVNlbGVjdGVkID0+IFVzZXJWZXJpZmllZCA9
PiBFbmQKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgSW5pdCwKICAgICAgICAgUmVx
dWVzdFJlY2VpdmVkLAotICAgICAgICBVc2VyQ29uc2VudGVkLAorICAgICAgICBVc2VyVmVyaWZp
ZWQsCiAgICAgICAgIEF0dGVzdGVkLAotICAgICAgICBSZXNwb25zZVNlbGVjdGVkCisgICAgICAg
IFJlc3BvbnNlU2VsZWN0ZWQsCisgICAgICAgIFBvbGljeURlY2lkZWQsCiAgICAgfTsKIAogICAg
IHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVhdGUoVW5pcXVlUmVmPExvY2FsQ29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTcsMTIgKzU4LDEzIEBAIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYp
OwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNv
bnRleHQgKik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xp
Y3koTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KTsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25u
ZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik7CiAgICAgdm9pZCBjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYsIFZlY3Rvcjx1aW50OF90PiYm
IGNyZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRp
ZmljYXRlcywgTlNFcnJvciAqKTsKIAogICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7CiAg
ICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKLSAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqLCBSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYsIExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlv
biwgTEFDb250ZXh0ICopOwogCiAgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRoZW50aWNhdGlv
blN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQppbmRleCBmZmM2MGVhNTkzMDc3YzYzMjFkMjIyOTY4MjdkZWVmNTk3YTVkZTRm
Li5mMWQ5NDQ1NjQ3MDA4OTFiYzBiNjZmZmU3N2RmYTZiNzY0ZjA1MmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNjAsNiArMTYwLDI4IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKICAgICAvLyBTdGVwIDYuCiAg
ICAgLy8gR2V0IHVzZXIgY29uc2VudC4KKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5v
YnNlcnZlcigpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldIChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSB7CisgICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3kocG9saWN5KTsKKyAgICAgICAgfTsK
KyAgICAgICAgb2JzZXJ2ZXItPmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgfQorfQorCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KExvY2FsQXV0aGVudGljYXRvclBv
bGljeSBwb2xpY3kpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpQb2xpY3lEZWNpZGVkOworCisgICAgaWYgKHBv
bGljeSA9PSBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93KSB7CisgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJEaXNhbGxvdyBsb2Nh
bCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJl
dGFpblB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwogICAgIHsKICAgICAg
ICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CkBAIC0xNzEsMjkgKzE5MywyNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewotICAgICAg
ICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdl
dCgpOwotICAgICAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFj
Y2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAq
Y29udGV4dCkgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7Cisg
ICAgYXV0byBjYWxsYmFjayA9IFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9s
KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJW
ZXJpZmljYXRpb24gdmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJDb25zZW50ZWQoYWNjZXNzQ29udHJvbC5nZXQoKSwgY29udGV4dCk7Ci0g
ICAgICAgIH07Ci0gICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYs
IFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIHZl
cmlmaWNhdGlvbiwgY29udGV4dCk7CisgICAgfTsKKyAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVz
ZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqY29udGV4dCkK
K3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2Vy
VmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTG9jYWxD
b25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlvbiwgTEFDb250ZXh0ICpjb250
ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsK
IAotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwotICAgIG1f
c3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6UG9saWN5RGVjaWRlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyVmVyaWZpZWQ7CiAg
ICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAotICAgIGlmICghbV9jb25u
ZWN0aW9uLT5pc1VubG9ja2VkKGNvbnRleHQpKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50
LiJfcyB9KTsKKyAgICBpZiAodmVyaWZpY2F0aW9uID09IExvY2FsQ29ubmVjdGlvbjo6VXNlclZl
cmlmaWNhdGlvbjo6Tm8pIHsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRF
cnJvciwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMzA5LDcgKzMyOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCi0gICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpVc2VyVmVyaWZpZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7CiAg
ICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIApAQCAtMzkyLDcgKzQxMiw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gU3RlcCA2LgorICAgIC8vIFN0ZXAgNi03LiBVc2VyIGNvbnNl
bnQgaXMgaW1wbGljaXRseSBhY3F1aXJlZCBieSBzZWxlY3RpbmcgcmVzcG9uc2VzLgogICAgIGZv
ciAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmli
dXRlcykgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFk
ZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKICAgICAgICAgICAgIHRv
QXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKQEAg
LTQyMiwyOCArNDQyLDI4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFz
c2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6CiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpS
ZXNwb25zZVNlbGVjdGVkOwogCi0gICAgLy8gU3RlcCA3LiBHZXQgdXNlciBjb25zZW50LgotICAg
IGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAgYXV0byBh
Y2Nlc3NDb250cm9sUmVmID0gcmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVzcG9uc2UgPSBX
VEZNb3ZlKHJlc3BvbnNlKV0gKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgYXV0byBhY2Nlc3NDb250cm9sUmVmID0g
cmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWworICAgICAg
ICB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwKKyAgICAgICAgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKQorICAgIF0gKExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiB2
ZXJpZmljYXRpb24sIExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlvbkFm
dGVyVXNlckNvbnNlbnRlZChjb250ZXh0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdURk1vdmUo
Y2FsbGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlv
bkFmdGVyVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKHJlc3BvbnNlKSwgdmVyaWZpY2F0aW9uLCBj
b250ZXh0KTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihhY2Nlc3NDb250
cm9sUmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMQUNvbnRleHQgKmNvbnRl
eHQsIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYgcmVzcG9u
c2UpCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVz
ZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4mJiByZXNwb25zZSwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNh
dGlvbiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1
dGhlbnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVzcG9u
c2VTZWxlY3RlZCk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOworICAgIG1f
c3RhdGUgPSBTdGF0ZTo6VXNlclZlcmlmaWVkOwogCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlz
VW5sb2NrZWQoY29udGV4dCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwor
ICAgIGlmICh2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9u
OjpObykgeworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiQ291
bGRuJ3QgdmVyaWZ5IHVzZXIuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
NTYsMjMgKzQ3NiwyMCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3Nl
cnRpb25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICpjb250ZQogICAgIC8vIFN0ZXAgMTEu
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgYXV0
byBxdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0g
ICAgICAgIFtxdWVyeSBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6QHsKKyAgICAgICAgTlNEaWN0
aW9uYXJ5ICpxdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0Ns
YXNzS2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktl
eUNsYXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6
IHRvTlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKKyAgICAgICAgICAgIChpZClrU2Vj
VXNlQXV0aGVudGljYXRpb25Db250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgKGlkKWtTZWNS
ZXR1cm5SZWY6IEBZRVMsCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAg
ICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCiAg
ICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCi0gICAgICAgIH1d
OwotICAgICAgICAvLyBjb250ZXh0IGlzIG51bGxwdHIgaW4gbW9jayB0ZXN0aW5nLgotICAgICAg
ICBpZiAoY29udGV4dCkKLSAgICAgICAgICAgIFtxdWVyeSBzZXRPYmplY3Q6Y29udGV4dCBmb3JL
ZXk6KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHRdOworICAgICAgICB9OwogICAgICAg
ICBDRlR5cGVSZWYgcHJpdmF0ZUtleVJlZiA9IG51bGxwdHI7Ci0gICAgICAgIE9TU3RhdHVzIHN0
YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVy
eS5nZXQoKSwgJnByaXZhdGVLZXlSZWYpOworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJ
dGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRl
S2V5UmVmKTsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRl
IGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDhhNzY2MmM3ZWI3ZTMzZDk5MjdmNjQ0
NGY5ZGY3MzdkZTBmMjEwMTIuLjBlYzExNThiMDNjM2VmMDM1YTU5MmNhYjRhOGYyMTgxZDgyZWM3
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNiw5ICszNiw3IEBA
CiBPQkpDX0NMQVNTIExBQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7Ci0KIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MiwxMyArNTAsMTkgQEAgY2xhc3MgTG9jYWxDb25uZWN0aW9uIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbENvbm5lY3Rp
b24pOwogcHVibGljOgorICAgIGVudW0gY2xhc3MgVXNlclZlcmlmaWNhdGlvbiB7CisgICAgICAg
IE5vLAorICAgICAgICBZZXMKKyAgICB9OworCiAgICAgdXNpbmcgQXR0ZXN0YXRpb25DYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTlNBcnJheSAqLCBOU0Vycm9yICopPjsKKyAgICB1
c2luZyBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJWZXJpZmljYXRpb24sIExBQ29udGV4dCAqKT47CiAKICAgICBMb2NhbENvbm5lY3Rpb24oKSA9
IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+TG9jYWxDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCiAg
ICAgLy8gT3ZlcnJpZGVkIGJ5IE1vY2tMb2NhbENvbm5lY3Rpb24uCi0gICAgdmlydHVhbCBib29s
IGlzVW5sb2NrZWQoTEFDb250ZXh0ICopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlV
c2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmKSBjb25z
dDsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2
YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNl
Y0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5T
RGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+JikgY29uc3QgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0
aW9uLm1tCmluZGV4IDUzZTAxMjNhZDdhZGE1NTc1M2MyMjI5OWZlODllODg0MDJmYzIxZmYuLjRi
NzcyMWE2NWUxMWM5ODJkYWEyYzExMzViZTVmOThkZDBiZjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAKKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8
d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCkBAIC0zOSwxMyArNDAs
MjkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgTG9jYWxDb25uZWN0aW9uOjppc1Vu
bG9ja2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKK3ZvaWQgTG9jYWxDb25uZWN0aW9uOjp2
ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgVXNlclZlcmlmaWNh
dGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgTlNFcnJvciAq
ZXJyb3IgPSBuaWw7Ci0gICAgYXV0byByZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpM
QVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBvcHRpb25zOkB7
IEAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSk6IEBZRVMgfSBlcnJvcjomZXJyb3JdOwotICAgIGlm
ICghcmVzdWx0KQotICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQ6
ICVAIiwgZXJyb3IpOwotICAgIHJldHVybiAhIXJlc3VsdDsKKyAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pOworCisgICAgYXV0byBvcHRp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBp
ZiAoW2NvbnRleHQgYmlvbWV0cnlUeXBlXSA9PSBMQUJpb21ldHJ5VHlwZVRvdWNoSUQpCisgICAg
ICAgIFtvcHRpb25zIHNldE9iamVjdDpXZWJDb3JlOjp0b3VjaElEUHJvbXB0VGl0bGUoKSBmb3JL
ZXk6QChMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUpXTsKKyAgICBbb3B0aW9ucyBzZXRPYmpl
Y3Q6V2ViQ29yZTo6YmlvbWV0cmljRmFsbGJhY2tQcm9tcHRUaXRsZSgpIGZvcktleTpAKExBT3B0
aW9uUGFzc2NvZGVUaXRsZSldOworCisgICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0cihbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5T
RGljdGlvbmFyeSAqLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgICAgIFVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0
aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczog
JUAiLCBlcnJvcik7CisgICAgICAgICAgICB2ZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9u
OjpObzsKKyAgICAgICAgfQorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHZlcmlmaWNhdGlvbiwg
Y29udGV4dCA9IFdURk1vdmUoY29udGV4dCldICgpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodmVyaWZpY2F0aW9uLCBjb250ZXh0LmdldCgpKTsKKyAgICAgICAgfSk7
CisgICAgfSk7CisKKyAgICBbY29udGV4dCBldmFsdWF0ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29u
dHJvbCBvcGVyYXRpb246TEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uVXNlS2V5U2lnbiBvcHRpb25z
Om9wdGlvbnMuZ2V0KCkgcmVwbHk6cmVwbHkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8U2VjS2V5
UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4
dCAqY29udGV4dCwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sUmVmLCBjb25zdCBT
dHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KaW5kZXggNmJjMDgyNTI5NmQ4YWFlMjNhYjY0
ZGNmMDcwZjMxM2YwZjk5NGZlMC4uYWQ3YmUxM2E3MjE5ODE0M2ViMDUxMTMyMzcyOTllMDRkZGVk
YzNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQpAQCAtNTUsNiArNTUsOCBAQCBi
b29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogCiAjaWYgZGVmaW5lZChMT0NBTFNFUlZJ
Q0VfQURESVRJT05TKQogTE9DQUxTRVJWSUNFX0FERElUSU9OUworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IGRmM2Q5NWFlMTA5ZTVi
ZDQyMTI3YTNlNGYwM2M1NDUzYjU4YmMzODkuLmQyZWRmZjZiZjkyMTg3ODZlNTlkMmExNGMwMzg2
MTViMDY0YzhiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
c21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6
U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHZlcmlmeVVzZXIoU2Vj
QWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9y
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgY29u
c3QgZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAg
IFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9k
ZWxlZ2F0ZTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBwYW5lbERp
c21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCA6IDE7CiAgICAgICAgIGJvb2wg
cGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7
CiAgICAgICAgIGJvb2wgcGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyIDogMTsKLSAgICAgICAgYm9vbCBwYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENv
bXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbERlY2lkZVBvbGljeUZvckxv
Y2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICB9IG1fZGVsZWdhdGVN
ZXRob2RzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDbGllbnQubW0KaW5kZXggMGU5NzNmYjk0ZmE2MTA5MmRiNDViZDQwNmM1OTdhYzlh
ZWIyMTAwNy4uZGJkZjVhZTU2M2ZkODNhZTA0M2RkYzE2MjU1ODFhYTliOGRmN2Q2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
CkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAj
aW1wb3J0ICJXS05TQXJyYXkuaCIKLSNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIK
ICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CkBAIC01MCw3ICs0OSw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRpb25QCiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhS
ZXN1bHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkaXNt
aXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxl
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RQ
SU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3Nl
cnRpb25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9k
cy5wYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbENvbXBsZXRpb25IYW5kbGVyID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6dmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOmNvbXBsZXRpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVNZXRob2Rz
LnBhbmVsRGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yQ29tcGxldGlvbkhhbmRsZXIg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkZWNpZGVQb2xp
Y3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiB9CiAKIFJl
dGFpblB0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+IFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlbGVnYXRlKCkKQEAgLTE2NywyNSArMTY2LDM3IEBAIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
VmVjdG9yPFJlZjxXZWJDb3JlOjpBCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nl
c3NDb250cm9sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKK3N0YXRpYyBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgbG9jYWxB
dXRoZW50aWNhdG9yUG9saWN5KF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSByZXN1bHQpCiB7
Ci0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFZlcmlmeVVzZXJXaXRoQWNjZXNzQ29u
dHJvbENvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0
TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSkuZ2V0KCkpOworICAgIHN3aXRjaCAo
cmVzdWx0KSB7CisgICAgY2FzZSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lBbGxvdzoKKyAg
ICAgICAgcmV0dXJuIExvY2FsQXV0aGVudGljYXRvclBvbGljeTo6QWxsb3c7CisgICAgY2FzZSBf
V0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lEaXNhbGxvdzoKKyAgICAgICAgcmV0dXJuIExvY2Fs
QXV0aGVudGljYXRvclBvbGljeTo6RGlzYWxsb3c7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkFsbG93OworfQor
Cit2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlY2lkZVBvbGljeUZvckxvY2Fs
QXV0aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBv
bGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlbGVnYXRl
TWV0aG9kcy5wYW5lbERlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25I
YW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKExvY2FsQXV0aGVudGljYXRvclBv
bGljeTo6RGlzYWxsb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBkZWxl
Z2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFkZWxlZ2F0ZSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0p
LmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5OjpEaXNhbGxvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNoZWNr
ZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCks
IEBzZWxlY3RvcihwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlvbkhh
bmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUu
Z2V0KCksIEBzZWxlY3RvcihwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgZGVj
aWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
Y2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBw
b2xpY3kpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRp
ZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZXh0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
KHBvbGljeSkpOwogICAgIH0pLmdldCgpXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24uaAppbmRleCBkMGRkOWIxMDQ5YWExN2ZiZWVlM2I4NDkyZTVlYzQxZjc1NTJh
OGQwLi5kZWU3NzNjM2UxMzJlMzdiNzI3MjdmMzUzODcxNDAxN2IxZDk2Y2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBpc1Vu
bG9ja2VkKExBQ29udGV4dCAqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2Vj
QWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFs
OwogICAgIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExB
Q29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJl
bCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
Z2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEgKmhhc2gs
IEF0dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBmaWx0ZXJSZXNw
b25zZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4mKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQppbmRleCA4YjhkODI0NTE0ZTU4Yzg0MjAwYWE3ODE2Njc1OWFhZWY3Y2M1MTU2Li5iMWM5ODc0
NzlmNGQ3Y2MxYTc0ODc1OTEzMWM4NjI0M2ViNjc2ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC00NCw5ICs0NCwxNyBAQCBNb2NrTG9jYWxDb25uZWN0
aW9uOjpNb2NrTG9jYWxDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbgogewogfQogCi1ib29sIE1vY2tMb2NhbENvbm5lY3Rpb246OmlzVW5sb2NrZWQoTEFD
b250ZXh0ICpjb250ZXh0KSBjb25zdAordm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlV
c2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2VwdEF1
dGhlbnRpY2F0aW9uOworICAgIC8vIE1vY2sgYXN5bmMgb3BlcmF0aW9ucy4KKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24sIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb25m
aWd1cmF0aW9uLmxvY2FsKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uLmxvY2FsLT5hY2Nl
cHRBdXRoZW50aWNhdGlvbikgeworICAgICAgICAgICAgY2FsbGJhY2soVXNlclZlcmlmaWNhdGlv
bjo6Tm8sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2Fs
bGJhY2soVXNlclZlcmlmaWNhdGlvbjo6WWVzLCBhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3Rh
bmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogUmV0YWluUHRyPFNlY0tleVJlZj4g
TW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0
ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0Rh
dGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
aW9uRmxhZ3MuaAppbmRleCA1MDkyZDkzMzg2ZWUzYmNkZWE2MmY0ZWZlMTI5NTJlMGUzNzdhNTVm
Li42NThlZWJjYmQ1NzZlMTJiMjU0N2ZmNTI4YzI1NWJlMWRlODRkNjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlv
bkZsYWdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRpb25GbGFncy5oCkBAIC01MSw2ICs1MSwxMSBAQCBlbnVtIGNsYXNzIFdl
YkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdCB7CiAgICAgTEFOb0NyZWRlbnRpYWwsCiB9
OwogCitlbnVtIGNsYXNzIExvY2FsQXV0aGVudGljYXRvclBvbGljeSA6IGJvb2wgeworICAgIEFs
bG93LAorICAgIERpc2FsbG93Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMTY3NzM5YzVlMjQ1NTc2MjY2NDBhYjNjNDYxOGM4ZjJiMjcwZTdl
ZS4uMGMxOWQxYTYxYTkzMDc1MWFkNWE3ZTJiMDk1NmE0OWUyOGM1YzJhYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIwLTAzLTAzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dlYkF1dGhuXSBJbXBsZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUg
cGFuZWw6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5k
bGVyOl0gU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg1MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAg
ICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOmRlY2lkZVBv
bGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbERlbGVnYXRlIHBhbmVsOnZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0
aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWw6IFJlbW92
ZWQuCisKIDIwMjAtMDMtMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gTWFwcGluZyBmcm9tIE1JTUUgdHlwZSB0byBVVEkgdHlwZSBzaG91
bGQgYmUgZG9uZSBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
OGFiMDhjNGRkZDUxNzNkYjBhOTljZjhhZjJiMzBhNGMxODc5MjRlLi5iZDliMzcxMTMzOTYwY2Iy
ZmRlOGI0NWVmMTVlMDFiMmM4OGYzYzVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUw
LDcgKzM1MCw2IEBACiAJCTU3MzI1NUE3MjIxMzlCQzcwMDM5NkFFOCAvKiBsb2FkLXdlYi1hcmNo
aXZlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzMyNTVBMzIyMTM5QjkwMDAzOTZBRTggLyogbG9hZC13ZWItYXJjaGl2ZS0yLmh0
bWwgKi87IH07CiAJCTU3NDIxNzg4MjQwMEFDMjUwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3ODcyNDAwQUJGRDAwMkIzMDNEIC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCAqLzsgfTsK
IAkJNTc0MjE3OEEyNDAwQUVEODAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4OTI0MDBBRUQwMDAyQjMw
M0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3Jl
ZGVudGlhbC5odG1sICovOyB9OwotCQk1NzQyMTc4QzI0MDBDRDQ3MDAyQjMwM0QgLyogd2ViLWF1
dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0Qg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLzsgfTsKIAkJNTc0
MjE3OEUyNDAwRDJERjAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzQyMTc4RDI0MDBEMjZDMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1h
a2UtY3JlZGVudGlhbC1sYS5odG1sICovOyB9OwogCQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYg
LyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1l
d29yayAqLzsgfTsKIAkJNTc1ODU5N0YyM0EyNTI3QTAwQzc0NTcyIC8qIEN0YXBQaW5UZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTdF
MjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVzdC5jcHAgKi87IH07CkBAIC0xNTI0LDcgKzE1
MjMsNiBAQAogCQkJCTU3OERBNDRFMjNFQ0QyOEIwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk1NzBEMjZGQzIzQzNGODcwMDBENUNGNjcgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTU3NjYzREVDMjM0RjFGOTMwMEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQk1NzQyMTc4QzI0
MDBDRDQ3MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1Nzk4MzM5MjIzNjhGQTM3MDA4RTU1NDcgLyog
d2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzY2M0RFQTIzNEVBNjZEMDBFODVFMDkgLyogd2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNTc3NDU0RDIyMzU5QkIwMTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LApAQCAtMTk3NCw3ICsxOTcyLDYgQEAKIAkJNTczNUYwMjUxRjNBNEVBNjAwMEVFODAxIC8qIFRl
c3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIlRl
c3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3NDIxNzg3MjQwMEFCRkQwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLW1h
a2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc0MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNy
ZWRlbnRpYWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzQyMTc4QjI0MDBDRDJEMDAyQjMwM0Qg
Lyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3
ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzQyMTc4RjI0MDBENTREMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NEY1NUQwMjA0RDQ3MUMw
MDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5
LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTM2MDMsNyArMzYwMCw2IEBACiAJ
CQkJNTc4REE0NEQyM0VDRDI2MTAwMjQ2MDEwIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWhpZC1waW4taW52YWxpZC1lcnJvci1yZXRyeS5odG1sICovLAogCQkJCTU3MEQyNkZC
MjNDM0Y4NjUwMEQ1Q0Y2NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQt
cGluLmh0bWwgKi8sCiAJCQkJNTc2NjNERUIyMzRGMUY4MDAwRTg1RTA5IC8qIHdlYi1hdXRoZW50
aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC5odG1sICovLAotCQkJCTU3NDIxNzhCMjQwMENEMkQw
MDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sICovLAog
CQkJCTU3OTgzMzdCMjM1RUI2NUMwMDhFNTU0NyAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1uZmMtbXVsdGlwbGUtdGFncy5odG1sICovLAogCQkJCTU3NjYzREU5MjM0RUE2MEIw
MEU4NUUwOSAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMuaHRtbCAqLywK
IAkJCQk1Nzc0NTREMTIzNTlCQUQ1MDA4RTFFRDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1h
c3NlcnRpb24tdTJmLW5vLWNyZWRlbnRpYWxzLmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KaW5kZXggZjJmYjQ1MjgwMDI0YjBkYjQxZWMyNzYwNTYwMWM3YjEzMmY1
MmVlNi4uYzA2NzQyMDMwZTc2ZjcwODg1ZTdkMzg1OTMwOGU4MThmZGEyNzRmYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlTEFFcnJvciA9IGZhbHNlOwogc3RhdGljIGJv
b2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hl
ZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBTm9D
cmVkZW50aWFsID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2Fu
Y2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKLXN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxWZXJpZnlVc2VyID0gZmFsc2U7CitzdGF0aWMgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
IGxvY2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeURp
c2FsbG93Owogc3RhdGljIFN0cmluZyB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGluOwogc3RhdGlj
IEJPT0wgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiBzdGF0aWMg
U3RyaW5nIHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQgPQpAQCAtMTUxLDExICsxNTEsOSBAQCAt
ICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNz
ZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlc1tp
bmRleF0pOwogfQogCi0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICop
cGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFj
Y2Vzc0NvbnRyb2wgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21w
bGV0aW9uSGFuZGxlcgorLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAq
KXBhbmVsIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxl
dGlvbkhhbmRsZXIKIHsKLSAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IHRy
dWU7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0p
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQuZ2V0KCkpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKGxvY2FsQXV0aGVudGljYXRvclBvbGljeSk7CiB9CiAKIEBlbmQKQEAgLTMwMCwyNCAr
Mjk4LDE4IEBAIHN0YXRpYyB2b2lkIHJlc2V0KCkKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2FuY2VsSW1tZWRpYXRlbHkgPSBmYWxzZTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUGlu
ID0gZW1wdHlTdHJpbmcoKTsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJIYW5k
bGUgPSBOTzsKLSAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOwor
ICAgIGxvY2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGlj
eURpc2FsbG93OwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BhbmVsKF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKnBhbmVsLCBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQsIE5TQXJyYXkgKnRyYW5z
cG9ydHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlKQogewogICAgIEVYUEVDVF9XS19T
VFJFUShwYW5lbC5yZWx5aW5nUGFydHlJRCwgcmVseWluZ1BhcnR5SUQpOwogCi0gICAgLy8gQnJ1
dGUgZm9yY2UgZ2l2ZW4gdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYXJyYXkgaXMgNC4KLSAgICBh
dXRvICp0aGVUcmFuc3BvcnRzID0gcGFuZWwudHJhbnNwb3J0czsKLSAgICBFWFBFQ1RfRVEodGhl
VHJhbnNwb3J0cy5jb3VudCwgdHJhbnNwb3J0cy5jb3VudCk7CisgICAgRVhQRUNUX0VRKHBhbmVs
LnRyYW5zcG9ydHMuY291bnQsIHRyYW5zcG9ydHMuY291bnQpOwogICAgIHNpemVfdCBjb3VudCA9
IDA7CiAgICAgZm9yIChOU051bWJlciAqdHJhbnNwb3J0IDogdHJhbnNwb3J0cykgewotICAgICAg
ICBmb3IgKE5TTnVtYmVyICp0aGVUcmFuc3BvcnQgOiB0aGVUcmFuc3BvcnRzKSB7Ci0gICAgICAg
ICAgICBpZiAodHJhbnNwb3J0ID09IHRoZVRyYW5zcG9ydCkgewotICAgICAgICAgICAgICAgIGNv
dW50Kys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKFtwYW5lbC50cmFuc3BvcnRzIGNvbnRhaW5zT2JqZWN0OnRyYW5zcG9ydF0p
CisgICAgICAgICAgICBjb3VudCsrOwogICAgIH0KICAgICBFWFBFQ1RfRVEoY291bnQsIHRyYW5z
cG9ydHMuY291bnQpOwogCkBAIC0xMjU5LDExICsxMjUxLDEwIEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbE51bGxEZWxlZ2F0ZSkKICAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwotICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOwotICAgIGNsZWFuVXBLZXljaGFpbigi
Iik7CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJEaXNhbGxvdyBsb2NhbCBhdXRoZW50
aWNhdG9yLiJdOwogfQogCi1URVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRl
bnRpYWwpCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxEaXNh
bGxvd0xvY2FsQXV0aGVudGljYXRvcikKIHsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTEyNzcsMTUg
KzEyNjgsMTMgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFs
KQogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07Ci0gICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsVmVyaWZ5VXNlcik7
Ci0gICAgY2hlY2tQYW5lbChbZGVsZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0p
LmdldCgpLCBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhl
bnRpY2F0aW9uVHJhbnNwb3J0SW50ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VHlwZUNyZWF0ZSk7Ci0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07
CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJEaXNhbGxvdyBsb2NhbCBhdXRoZW50aWNh
dG9yLiJdOwogfQogCi1URVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9u
KQorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFsQWxsb3dMb2Nh
bEF1dGhlbnRpY2F0b3IpCiB7CiAgICAgcmVzZXQoKTsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IHRl
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFJldGFpblB0cjxOU1VSTD4g
dGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIAogICAgIGF1dG8gKmNvbmZp
Z3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0
aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29u
ZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6d2ViQXV0aGVudGljYXRp
b25FeHBlcmltZW50YWxGZWF0dXJlKCldOwpAQCAtMTI5NSwxMSArMTI4NCwxMCBAQCBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9uKQogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAg
ICBBU1NFUlRfVFJVRShhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQs
ICIiLCB0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAgIGxvY2FsQXV0aGVudGljYXRvclBvbGlj
eSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93OwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwotICAg
IFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIpOwotICAgIGNoZWNr
UGFuZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10g
aW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRv
cHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRy
YW5zcG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVHZXQpOwog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOworICAgIGNoZWNrUGFu
ZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRVU0JdKS5nZXQoKSwgYWRvcHRO
UyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5z
cG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVDcmVhdGUpOwog
ICAgIGNsZWFuVXBLZXljaGFpbigiIik7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
bGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWZhM2M1YmE0NGIwMmZiMTA1MjlkMDE0ZGY1ZGU2NDI4ZDQ5ODBiZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08aW5wdXQgdHlwZT0idGV4dCIgaWQ9
ImlucHV0Ij4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDog
eyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0g
fSk7Ci0gICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1
cygpOyB9KTsKLSAgICB9Ci0KLSAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICBwdWJsaWNL
ZXk6IHsKLSAgICAgICAgICAgIGNoYWxsZW5nZTogbmV3IFVpbnQ4QXJyYXkoMTYpLAotICAgICAg
ICAgICAgdGltZW91dDogMTAwCi0gICAgICAgIH0KLSAgICB9OwotCi0gICAgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAvLyBj
b25zb2xlLmxvZygiU3VjY2VlZGVkISIpOwotICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiU3VjY2VlZGVkISIpOwotICAgIH0sIGVy
cm9yID0+IHsKLSAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IubWVzc2FnZSk7Ci0gICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGVy
cm9yLm1lc3NhZ2UpOwotICAgIH0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
bG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDBmNjlk
MGI5MTVhNzgyMmVlYWVlNGZmNWFmY2EyODM4YWRjNWU5M2QuLjFjYWZmZDdjMmVmZjBkNzcxYmM0
NDg3ZDE1NzVkYjA3ZDFlYTY4NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC05OCw3ICs5OCw3IEBACiAg
ICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5
IiwgYWxnOiAtNyB9XQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50
LiIpOworICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgdmVy
aWZ5IHVzZXIuIik7CiAgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsK
IAogICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDNlNGY0OTkwNmMzMmU0
ZTg5NTI1OGY2NjgzYTBmYmVhNDk5Nzc5ZWYuLmYyN2Y3MTE5MjI3ZTgwZTM2MDEwODNjMmMwYjVl
NDA5MDdkOGUyNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC01NSw3ICs1NSw3IEBACiAKICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RL
ZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0
KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNvdWxkbid0IGdldCB1c2Vy
IGNvbnNlbnQuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cyksICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
Y2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKICAgICAgICAgICAg
IH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392446</attachid>
            <date>2020-03-04 11:34:08 -0800</date>
            <delta_ts>2020-03-04 12:15:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208533-20200304113407.patch</filename>
            <type>text/plain</type>
            <size>55530</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwNmZmMTliMDEyY2Uy
Yjg1MGYyMzZiYmM5NDk4ZmMyNzIyZjkxNC4uZWYyMTgyYTZiNjQ0YmU4ZjExZGM1MTc3MDAwNDk1
MjJmZDA1YzJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTAzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOl0gU1BJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1MzMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3RzIHdpdGhpbiBleGlzdGlu
ZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpiaW9tZXRyaWNGYWxs
YmFja1Byb21wdFRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6
CisgICAgICAgIEFkZHMgbG9jYWxpemVkIHN0cmluZ3MgdG8gc3VwcG9ydCB0aGUgY3VzdG9taXpl
ZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZy4KKwogMjAyMC0wMy0wMiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYXBwaW5nIGZyb20g
TUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDZhZjZhMWYwZDZlOTZjYjFmYjQ2YTYzMTVkOWE4NGYzZWE5Yjg0MTUuLjZhZmUw
ZjFlMjIwNDU5NjI3NmRiZjlhNDNlN2U3MzgwOTljOGVlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMjAtMDMtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMTAxODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIHRoZSBhYm92ZSBTUEkgdG8gcmVwbGFjZSAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6XS4KKyAgICAgICAgVGhlIG9yaWdpbmFsIFNQSSBpcyBkZXNpZ25lZCBvbiB0aGUg
cHJlbWlzZSB0aGF0IFNhZmFyaSBpcyBnb2luZyB0byBoaWdobHkgY3VzdG9taXplIHRoZSBMb2Nh
bEF1dGhlbnRpY2F0aW9uIFVJLCBhbmQgdGhhdCBpcyBub3QgaGFwcGVuaW5nCisgICAgICAgIGFu
eW1vcmUuIFRoZXJlZm9yZSwgV2ViS2l0IHRha2VzIGJhY2sgdGhlIGludm9jYXRpb24gb2YgTG9j
YWxBdXRoZW50aWNhdGlvbiBhbmQgb2ZmZXIgYSBuZXcgU1BJIHRvIHRlbGwgY2xpZW50cyB3aGVu
IFdlYktpdCBpcyBhYm91dCB0bworICAgICAgICBzaG93IExvY2FsQXV0aGVudGljYXRpb24gVUku
IENsaWVudHMgdGhlbiBoYXZlIHRoZSB0cmlnZ2VyIHRvIHB1bGwgYXQgdGhlaXIgcGxlYXN1cmUu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFsbCBwbHVtYmluZ3MgdG8gcmVwbGFj
ZSB0aGUgU1BJLiBCZXNpZGVzIHRoYXQsIHRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgZW5o
YW5jZXMgdGhlIExvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlciB3aXRoIGEgc2xpZ2h0bHkgY3Vz
dG9taXplZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZzsKKyAgICAgICAgMikgYWRkcyB0aGUg
U1BJIHVzZWQgYWJvdmUgaW50byB0aGUgU1BJIGhlYWRlcjsKKyAgICAgICAgMykgbWFrZXMgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlLnRyYW5zcG9ydHMgYXMgYSBOU1NldCBpbnN0
ZWFkIG9mIGEgTlNBcnJheTsKKyAgICAgICAgNCkgbGV0cyBMb2NhbFNlcnZpY2U6OmlzQXZhaWxh
YmxlIHJldHVybiBmYWxzZSBpZiBBcHBsZSBhdHRlc3RhdGlvbiBpcyBub3QgYXZhaWxhYmxlLgor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yIGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgor
ICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRyYW5zcG9ydHNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6dmVyaWZ5VXNlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
ckRlY2lkZVBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJVc2VyQ29uc2VudGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5
VXNlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjpp
c0F2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OmxvY2FsQXV0aGVudGljYXRvclBv
bGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0
aW9uOjp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVj
dGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKwogMjAyMC0wMy0wMiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBN
YXBwaW5nIGZyb20gTUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBV
SSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA2ZDc5YzVjMDJhMTljNjY5YzM3N2U2YzA2MGMzMmE1NDViY2VlZDlmLi43NTUyMjVlNmJh
M2RlMzEzOGQzNjZmMTQ3ZmZmNWI4NGEyOGZhZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTMxMCw2ICszMTAsOSBAQAogLyogVmlkZW8gRW50
ZXIgRnVsbCBTY3JlZW4gY29udGV4dCBtZW51IGl0ZW0gKi8KICJFbnRlciBGdWxsIFNjcmVlbiIg
PSAiRW50ZXIgRnVsbCBTY3JlZW4iOwogCisvKiBVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0
byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiRW50ZXIgcGFzc2NvZGUgdG8gc2lnbiBpbnRv
IHRoaXMgd2Vic2l0ZS4iID0gIkVudGVyIHBhc3Njb2RlIHRvIHNpZ24gaW50byB0aGlzIHdlYnNp
dGUuIjsKKwogLyogbWVudSBpdGVtICovCiAiRW50ZXIgUGljdHVyZSBpbiBQaWN0dXJlIiA9ICJF
bnRlciBQaWN0dXJlIGluIFBpY3R1cmUiOwogCkBAIC04NzcsNiArODgwLDkgQEAKIC8qIHByb21w
dCBzdHJpbmcgaW4gYXV0aGVudGljYXRpb24gcGFuZWwgKi8KICJUbyB2aWV3IHRoaXMgcGFnZSwg
eW91IG11c3QgbG9nIGluIHRvIHRoaXMgYXJlYSBvbiAlQDoiID0gIlRvIHZpZXcgdGhpcyBwYWdl
LCB5b3UgbXVzdCBsb2cgaW4gdG8gdGhpcyBhcmVhIG9uICVAOiI7CiAKKy8qIFVzZSBUb3VjaCBJ
RCB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRo
aXMgd2Vic2l0ZS4iID0gIlRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUuIjsKKwog
LyogVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSAqLwogIlRyYW5zZm9ybWF0
aW9ucyIgPSAiVHJhbnNmb3JtYXRpb25zIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhMTE0ZmQ3NjFmOTJhMGE1ZDk5NmIwZmFlZTBiMDdh
NTMwOTAyNTg4Li45YWMwYmQyOTIwY2NiYTU5M2U5YmEwN2VlNmYzZTY1ODI1YmEyZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMTIwNyw0
ICsxMjA3LDE2IEBAIFN0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCitTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRoaXMg
d2Vic2l0ZS4iLCAiVXNlIFRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUiKTsKK30K
KworU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKQoreworICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJFbnRlciBwYXNzY29kZSB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlLiIs
ICJVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlIik7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IDNlMzMxNjRmYjJkNzg1MzY4YTU3NzRlZDRh
YjFmM2VhY2FmNDUyN2EuLmQ3MTg0NzJjNGFkYTNlYjdjNDRlNWJjN2I5ZWI0NmM2MDcxNWFhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTMzOSw2
ICszMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBkYXRlUGlja2VyWWVhckxhYmVsVGl0bGUoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKTsK
KyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhfKHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0
aGVudGljYXRpb25TUEkuaAppbmRleCBlNjdmMmJmY2FkZDMwY2Y1YjJlZjIxYTg2MTMxZWNjYzA4
MjhlMjI2Li44ZTU4NGQ4MmIzNDQ3ZjBhZmFlMjc2ZWE3YjhmNTMxYzFkNDY0NTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9u
U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCkBAIC0zNCwxMiArMzQsMTMgQEAKICNlbHNlCiAKIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIExBT3B0aW9uKSB7Ci0gICAgTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSwKKyAg
ICBMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUsCisgICAgTEFPcHRpb25QYXNzY29kZVRpdGxl
LAogfTsKIAogQGludGVyZmFjZSBMQUNvbnRleHQoUHJpdmF0ZSkgPE5TU2VjdXJlQ29kaW5nPgog
Ci0tIChOU0RpY3Rpb25hcnkgKilldmFsdWF0ZVBvbGljeTooTEFQb2xpY3kpcG9saWN5IG9wdGlv
bnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CistICh2
b2lkKWV2YWx1YXRlQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250
cm9sIG9wZXJhdGlvbjooTEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uKW9wZXJhdGlvbiBvcHRpb25z
OihOU0RpY3Rpb25hcnkgKilvcHRpb25zIHJlcGx5Oih2b2lkKF4pKE5TRGljdGlvbmFyeSAqcmVz
dWx0LCBOU0Vycm9yICplcnJvcikpcmVwbHk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmgKaW5kZXggOGMzNjg1MzNlYTBiMjE0ZjAxYmE3Y2JkOWRkNWI1OWNhNTJlMTQ4MS4uODQ2
MDA4Y2RkNTc1MDg1ZDFkNWM0OGZkZGI1YzVlMTg0ZjU0OTNiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTM5LDExICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci1lbnVtIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdDsKLWVudW0gY2xh
c3MgV2ViQXV0aGVudGljYXRpb25SZXN1bHQgOiBib29sOwotfQotCiBuYW1lc3BhY2UgQVBJIHsK
IAogY2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCB7CkBAIC01NSw3ICs1MSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3BvbnNlcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBBU1NFUlQoIXJlc3BvbnNl
cy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7IH0KKyAgICAvLyBGSVhNRTogSWRlYWxseSwgTG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5OjpEaXNhbGxvdyBzaG91bGQgYmUgdXNlZC4gVGhpcyBpcyBhIHF1aXJr
IHRvIGJ5cGFzcyBDIEFQSSBmb3IgV2ViS2l0VGVzdFJ1bm5lci4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
OjpBbGxvdyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLmgKaW5kZXggOTc0MWRkNjJjNjFmZThmYmFmMTdlMjg1ZWYxMDFkZmY1YmY4MDhmZS4uODgz
ZGZmNDdhMTRmMjhkNmJmZDJlZWY3ZTJlODg0YmVlZTE5NzMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5oCkBAIC02OCw2ICs2OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVH
ZXQsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0xvY2FsQXV0aGVudGljYXRvclBv
bGljeSkgeworICAgIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93LAorICAgIF9XS0xv
Y2FsQXV0aGVudGljYXRvclBvbGljeURpc2FsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvdG9jb2wgX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KIAogQG9wdGlvbmFsCkBAIC03Niw3ICs4
MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlw
ZSkgewogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRp
c21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRp
b25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICop
cGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAt
ICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNz
ZXJ0aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhB
Y2Nlc3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClw
YW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxv
Y2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLTG9jYWxB
dXRoZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkBAIC04
NSw3ICs5MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKQogCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlkIDxf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+IGRlbGVnYXRlOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQ7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXkgKnRyYW5zcG9ydHM7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU2V0ICp0cmFuc3BvcnRzOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUg
dHlwZTsKIAogLSAodm9pZCljYW5jZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4
IDE5NzNiMGY1NjRkMjUxYjIwY2YyNmEzNmEzYTY0ZDhhMjUyODIyZjMuLjI1ODYyYmRjYjcwYjA5
NDc0MzhlZjJiNTdkYzk3ODNkOGQ0ODNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CkBAIC0zMyw3ICszMyw3IEBACiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBXZWFrUHRyPFdlYktpdDo6V2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudD4gX2NsaWVudDsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IF90cmFuc3BvcnRzOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IF90cmFuc3Bv
cnRzOwogI2VuZGlmCiB9CiAKQEAgLTgxLDEzICs4MSwxMyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVu
dGljYXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydChXZWJDb3JlOjpB
dXRoZQogICAgIH0KIH0KIAotLSAoTlNBcnJheSAqKXRyYW5zcG9ydHMKKy0gKE5TU2V0ICopdHJh
bnNwb3J0cwogewogICAgIGlmIChfdHJhbnNwb3J0cykKICAgICAgICAgcmV0dXJuIF90cmFuc3Bv
cnRzLmdldCgpOwogCiAgICAgYXV0byYgdHJhbnNwb3J0cyA9IF9wYW5lbC0+dHJhbnNwb3J0cygp
OwotICAgIF90cmFuc3BvcnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTp0cmFuc3BvcnRzLnNpemUoKV07CisgICAgX3RyYW5zcG9ydHMgPSBbW05TTXV0YWJsZVNl
dCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0cmFuc3BvcnRzLnNpemUoKV07CiAgICAgZm9yIChh
dXRvJiB0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKQogICAgICAgICBbX3RyYW5zcG9ydHMgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6d2tXZWJBdXRoZW50aWNh
dGlvblRyYW5zcG9ydCh0cmFuc3BvcnQpXSkuZ2V0KCldOwogICAgIHJldHVybiBfdHJhbnNwb3J0
cy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAppbmRleCA5MWQ5OWVkNTJiNmRiMWRlZmFiMTU5NjI0
MzEwNjc5ZjNjYWQ2NzRlLi41NjcxYWVjNzY5NzgyNmRkMWVlMTMxYmFiOWZmNzg5NmIyZDQ1NDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9u
U3RhdHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJl
dHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFz
aFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSYpPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0
b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSA9
IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggZmNjMjdhZDY2ZjMyMzY4NGU5
YzdkNGY4NmI1YWM3NGZmMGY2MmIwOS4uYzM5MTgwMWIzYzJlMDU5MTk0YTVkYTc2Yjc5ODM0Y2Fm
NDcxNzA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjk1LDEx
ICsyOTUsMTAgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UoY29uc3QgSGFzaFNldDxSZWY8QXV0aGVudGljYXQKICAgICB9KTsKIH0KIAotdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vz
c0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGVjaWRlUG9saWN5Rm9y
TG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNh
dG9yUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZXRhaW5QdHI8U2VjQWNj
ZXNzQ29udHJvbFJlZj4gYWNjZXNzQ29udHJvbCA9IGFjY2Vzc0NvbnRyb2xSZWY7Ci0gICAgZGlz
cGF0Y2hQYW5lbENsaWVudENhbGwoW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRy
b2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29u
c3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7Ci0gICAgICAg
IHBhbmVsLmNsaWVudCgpLnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbC5nZXQoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNsaWVu
dCgpLmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmlu
ZGV4IGU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQuLmJkMGI5NmQ0Yzk4
MDExOTc4YTBjYTdkZWQ0ZGQwZDIwYzJkYjY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRv
clN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQg
cmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHZlcmlmeVVzZXIoU2Vj
QWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYp
IGZpbmFsOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgZmluYWw7CiAK
ICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1
YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNl
KFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaAppbmRleCA5YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjLi42
OWVkMzRlMTU4NDE1YzUwNWI5NjY1NGVmN2UwMTdmZGQzMjE4MGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzgsMTQgKzM4LDE1IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRp
Y2F0b3IgewogcHVibGljOgogICAgIC8vIEhlcmUgaXMgdGhlIEZTTS4KLSAgICAvLyBNYWtlQ3Jl
ZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBBdHRl
c3RlZCA9PiBFbmQKLSAgICAvLyBHZXRBc3NlcnRpb246IEluaXQgPT4gUmVxdWVzdFJlY2VpdmVk
ID0+IFJlc3BvbnNlU2VsZWN0ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBFbmQKKyAgICAvLyBNYWtl
Q3JlZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gUG9saWN5RGVjaWRlZCA9PiBV
c2VyVmVyaWZpZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCisgICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0
ID0+IFJlcXVlc3RSZWNlaXZlZCA9PiBSZXNwb25zZVNlbGVjdGVkID0+IFVzZXJWZXJpZmllZCA9
PiBFbmQKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgSW5pdCwKICAgICAgICAgUmVx
dWVzdFJlY2VpdmVkLAotICAgICAgICBVc2VyQ29uc2VudGVkLAorICAgICAgICBVc2VyVmVyaWZp
ZWQsCiAgICAgICAgIEF0dGVzdGVkLAotICAgICAgICBSZXNwb25zZVNlbGVjdGVkCisgICAgICAg
IFJlc3BvbnNlU2VsZWN0ZWQsCisgICAgICAgIFBvbGljeURlY2lkZWQsCiAgICAgfTsKIAogICAg
IHN0YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVhdGUoVW5pcXVlUmVmPExvY2FsQ29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTcsMTIgKzU4LDEzIEBAIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYp
OwogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNv
bnRleHQgKik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xp
Y3koTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KTsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25u
ZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik7CiAgICAgdm9pZCBjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYsIFZlY3Rvcjx1aW50OF90PiYm
IGNyZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRp
ZmljYXRlcywgTlNFcnJvciAqKTsKIAogICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7CiAg
ICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKLSAgICB2b2lkIGNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqLCBSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYsIExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlv
biwgTEFDb250ZXh0ICopOwogCiAgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRoZW50aWNhdGlv
blN0YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQppbmRleCBmZmM2MGVhNTkzMDc3YzYzMjFkMjIyOTY4MjdkZWVmNTk3YTVkZTRm
Li5mMWQ5NDQ1NjQ3MDA4OTFiYzBiNjZmZmU3N2RmYTZiNzY0ZjA1MmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNjAsNiArMTYwLDI4IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKICAgICAvLyBTdGVwIDYuCiAg
ICAgLy8gR2V0IHVzZXIgY29uc2VudC4KKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5v
YnNlcnZlcigpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldIChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSB7CisgICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3kocG9saWN5KTsKKyAgICAgICAgfTsK
KyAgICAgICAgb2JzZXJ2ZXItPmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgfQorfQorCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KExvY2FsQXV0aGVudGljYXRvclBv
bGljeSBwb2xpY3kpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpQb2xpY3lEZWNpZGVkOworCisgICAgaWYgKHBv
bGljeSA9PSBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93KSB7CisgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJEaXNhbGxvdyBsb2Nh
bCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJl
dGFpblB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwogICAgIHsKICAgICAg
ICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CkBAIC0xNzEsMjkgKzE5MywyNyBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewotICAgICAg
ICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdl
dCgpOwotICAgICAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFj
Y2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAq
Y29udGV4dCkgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIFNlY0Fj
Y2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7Cisg
ICAgYXV0byBjYWxsYmFjayA9IFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9s
KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJW
ZXJpZmljYXRpb24gdmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJDb25zZW50ZWQoYWNjZXNzQ29udHJvbC5nZXQoKSwgY29udGV4dCk7Ci0g
ICAgICAgIH07Ci0gICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYs
IFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIHZl
cmlmaWNhdGlvbiwgY29udGV4dCk7CisgICAgfTsKKyAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVz
ZXIoYWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqY29udGV4dCkK
K3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2Vy
VmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTG9jYWxD
b25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlvbiwgTEFDb250ZXh0ICpjb250
ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsK
IAotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwotICAgIG1f
c3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6UG9saWN5RGVjaWRlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyVmVyaWZpZWQ7CiAg
ICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAotICAgIGlmICghbV9jb25u
ZWN0aW9uLT5pc1VubG9ja2VkKGNvbnRleHQpKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50
LiJfcyB9KTsKKyAgICBpZiAodmVyaWZpY2F0aW9uID09IExvY2FsQ29ubmVjdGlvbjo6VXNlclZl
cmlmaWNhdGlvbjo6Tm8pIHsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRF
cnJvciwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMzA5LDcgKzMyOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCi0gICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpVc2VyVmVyaWZpZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7CiAg
ICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIApAQCAtMzkyLDcgKzQxMiw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gU3RlcCA2LgorICAgIC8vIFN0ZXAgNi03LiBVc2VyIGNvbnNl
bnQgaXMgaW1wbGljaXRseSBhY3F1aXJlZCBieSBzZWxlY3RpbmcgcmVzcG9uc2VzLgogICAgIGZv
ciAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmli
dXRlcykgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFk
ZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKICAgICAgICAgICAgIHRv
QXJyYXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKQEAg
LTQyMiwyOCArNDQyLDI4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFz
c2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6CiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpS
ZXNwb25zZVNlbGVjdGVkOwogCi0gICAgLy8gU3RlcCA3LiBHZXQgdXNlciBjb25zZW50LgotICAg
IGlmIChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAgYXV0byBh
Y2Nlc3NDb250cm9sUmVmID0gcmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVzcG9uc2UgPSBX
VEZNb3ZlKHJlc3BvbnNlKV0gKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgYXV0byBhY2Nlc3NDb250cm9sUmVmID0g
cmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWworICAgICAg
ICB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwKKyAgICAgICAgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKQorICAgIF0gKExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiB2
ZXJpZmljYXRpb24sIExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlvbkFm
dGVyVXNlckNvbnNlbnRlZChjb250ZXh0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdURk1vdmUo
Y2FsbGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlv
bkFmdGVyVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKHJlc3BvbnNlKSwgdmVyaWZpY2F0aW9uLCBj
b250ZXh0KTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihhY2Nlc3NDb250
cm9sUmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMQUNvbnRleHQgKmNvbnRl
eHQsIFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYgcmVzcG9u
c2UpCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVz
ZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4mJiByZXNwb25zZSwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNh
dGlvbiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1
dGhlbnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVzcG9u
c2VTZWxlY3RlZCk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOworICAgIG1f
c3RhdGUgPSBTdGF0ZTo6VXNlclZlcmlmaWVkOwogCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlz
VW5sb2NrZWQoY29udGV4dCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwor
ICAgIGlmICh2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9u
OjpObykgeworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiQ291
bGRuJ3QgdmVyaWZ5IHVzZXIuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
NTYsMjMgKzQ3NiwyMCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3Nl
cnRpb25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICpjb250ZQogICAgIC8vIFN0ZXAgMTEu
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgYXV0
byBxdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0g
ICAgICAgIFtxdWVyeSBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6QHsKKyAgICAgICAgTlNEaWN0
aW9uYXJ5ICpxdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0Ns
YXNzS2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktl
eUNsYXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6
IHRvTlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKKyAgICAgICAgICAgIChpZClrU2Vj
VXNlQXV0aGVudGljYXRpb25Db250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgKGlkKWtTZWNS
ZXR1cm5SZWY6IEBZRVMsCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAg
ICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCiAg
ICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCi0gICAgICAgIH1d
OwotICAgICAgICAvLyBjb250ZXh0IGlzIG51bGxwdHIgaW4gbW9jayB0ZXN0aW5nLgotICAgICAg
ICBpZiAoY29udGV4dCkKLSAgICAgICAgICAgIFtxdWVyeSBzZXRPYmplY3Q6Y29udGV4dCBmb3JL
ZXk6KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHRdOworICAgICAgICB9OwogICAgICAg
ICBDRlR5cGVSZWYgcHJpdmF0ZUtleVJlZiA9IG51bGxwdHI7Ci0gICAgICAgIE9TU3RhdHVzIHN0
YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVy
eS5nZXQoKSwgJnByaXZhdGVLZXlSZWYpOworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJ
dGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRl
S2V5UmVmKTsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRl
IGtleSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDhhNzY2MmM3ZWI3ZTMzZDk5MjdmNjQ0
NGY5ZGY3MzdkZTBmMjEwMTIuLmJjNjJmM2QwNWE2Njk0OTBlNzE0ODk4Yzk2YWZlOGYxYzNiYzc5
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNiw5ICszNiw3IEBA
CiBPQkpDX0NMQVNTIExBQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7Ci0KIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MiwxMyArNTAsMTkgQEAgY2xhc3MgTG9jYWxDb25uZWN0aW9uIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbENvbm5lY3Rp
b24pOwogcHVibGljOgorICAgIGVudW0gY2xhc3MgVXNlclZlcmlmaWNhdGlvbiA6IGJvb2wgewor
ICAgICAgICBObywKKyAgICAgICAgWWVzCisgICAgfTsKKwogICAgIHVzaW5nIEF0dGVzdGF0aW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TQXJyYXkgKiwgTlNFcnJvciAqKT47
CisgICAgdXNpbmcgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0
aW9uKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVs
dDsKIAogICAgIC8vIE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1
YWwgYm9vbCBpc1VubG9ja2VkKExBQ29udGV4dCAqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2sm
JikgY29uc3Q7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50
aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3Ry
aW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhE
YXRhLCBOU0RhdGEgKmhhc2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
Q29ubmVjdGlvbi5tbQppbmRleCA1M2UwMTIzYWQ3YWRhNTU3NTNjMjIyOTlmZTg5ZTg4NDAyZmMy
MWZmLi40Yjc3MjFhNjVlMTFjOTgyZGFhMmMxMTM1YmU1Zjk4ZGQwYmYyMzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENv
bm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNp
bXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMzks
MTMgKzQwLDI5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIExvY2FsQ29ubmVjdGlv
bjo6aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0Cit2b2lkIExvY2FsQ29ubmVj
dGlvbjo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJW
ZXJpZmljYXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwotICAgIGF1dG8gcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVQ
b2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3Mgb3B0
aW9uczpAeyBAKExBT3B0aW9uTm90SW50ZXJhY3RpdmUpOiBAWUVTIH0gZXJyb3I6JmVycm9yXTsK
LSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgdXNlciBj
b25zZW50OiAlQCIsIGVycm9yKTsKLSAgICByZXR1cm4gISFyZXN1bHQ7CisgICAgYXV0byBjb250
ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKKworICAgIGF1
dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CisgICAgaWYgKFtjb250ZXh0IGJpb21ldHJ5VHlwZV0gPT0gTEFCaW9tZXRyeVR5cGVUb3VjaElE
KQorICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6V2ViQ29yZTo6dG91Y2hJRFByb21wdFRpdGxl
KCkgZm9yS2V5OkAoTEFPcHRpb25BdXRoZW50aWNhdGlvblRpdGxlKV07CisgICAgW29wdGlvbnMg
c2V0T2JqZWN0OldlYkNvcmU6OmJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKSBmb3JLZXk6
QChMQU9wdGlvblBhc3Njb2RlVGl0bGUpXTsKKworICAgIGF1dG8gcmVwbHkgPSBtYWtlQmxvY2tQ
dHIoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChOU0RpY3Rpb25hcnkgKiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICBVc2VyVmVyaWZpY2F0aW9uIHZl
cmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246OlllczsKKyAgICAgICAgaWYgKGVycm9yKSB7
CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21l
dHJpY3M6ICVAIiwgZXJyb3IpOworICAgICAgICAgICAgdmVyaWZpY2F0aW9uID0gVXNlclZlcmlm
aWNhdGlvbjo6Tm87CisgICAgICAgIH0KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB2ZXJpZmlj
YXRpb24sIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHZlcmlmaWNhdGlvbiwgY29udGV4dC5nZXQoKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworCisgICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9sOmFj
Y2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNpZ24g
b3B0aW9uczpvcHRpb25zLmdldCgpIHJlcGx5OnJlcGx5LmdldCgpXTsKIH0KIAogUmV0YWluUHRy
PFNlY0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShM
QUNvbnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwg
Y29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFn
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCmluZGV4IDZiYzA4MjUyOTZkOGFh
ZTIzYWI2NGRjZjA3MGYzMTNmMGY5OTRmZTAuLmFkN2JlMTNhNzIxOTgxNDNlYjA1MTEzMjM3Mjk5
ZTA0ZGRlZGMzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KQEAgLTU1LDYgKzU1
LDggQEAgYm9vbCBMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkKIAogI2lmIGRlZmluZWQoTE9D
QUxTRVJWSUNFX0FERElUSU9OUykKIExPQ0FMU0VSVklDRV9BRERJVElPTlMKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCBkZjNkOTVh
ZTEwOWU1YmQ0MjEyN2EzZTRmMDNjNTQ1M2I1OGJjMzg5Li5kMmVkZmY2YmY5MjE4Nzg2ZTU5ZDJh
MTRjMDM4NjE1YjA2NGM4YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IGZpbmFsOwog
ICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXVEY6OlN0cmluZyYpPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB2ZXJpZnlV
c2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0
ICopPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVu
dGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+
JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqbV9wYW5l
bDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRl
PiA+IG1fZGVsZWdhdGU7CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
cGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgOiAxOwogICAgICAg
ICBib29sIHBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogICAgICAgICBib29sIHBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0Nv
bnRyb2xDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgcGFuZWxEZWNpZGVQb2xp
Y3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2Rl
bGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCmluZGV4IDBlOTczZmI5NGZhNjEwOTJkYjQ1YmQ0MDZj
NTk3YWM5YWViMjEwMDcuLmRiZGY1YWU1NjNmZDgzYWUwNDNkZGMxNjI1NTgxYWE5YjhkZjdkNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
ci5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCi0jaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvbkZs
YWdzLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCIKICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgpAQCAtNTAsNyArNDksNyBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0aW9u
UAogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxXaXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFu
ZWw6ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OildOwogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlv
bkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpy
ZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0
ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxl
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZlcmlmeVVz
ZXJXaXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRl
TWV0aG9kcy5wYW5lbERlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25I
YW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6ZGVj
aWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOildOwog
fQogCiBSZXRhaW5QdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWxlZ2F0ZSgpCkBAIC0xNjcsMjUgKzE2Niwz
NyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJl
c3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QQogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xS
ZWYgYWNjZXNzQ29udHJvbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CitzdGF0aWMgTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5
IGxvY2FsQXV0aGVudGljYXRvclBvbGljeShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcmVz
dWx0KQogewotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFj
Y2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICBz
d2l0Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5QWxs
b3c6CisgICAgICAgIHJldHVybiBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkFsbG93OworICAg
IGNhc2UgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5RGlzYWxsb3c6CisgICAgICAgIHJldHVy
biBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93OworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpBbGxv
dzsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRp
Y2F0b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JDb21w
bGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihMb2NhbEF1dGhlbnRp
Y2F0b3JQb2xpY3k6OkRpc2FsbG93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1
dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICghZGVsZWdhdGUpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgp
IGluaXRdKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKExvY2FsQXV0aGVudGlj
YXRvclBvbGljeTo6RGlzYWxsb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRl
LmdldCgpLCBAc2VsZWN0b3IocGFuZWw6dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBs
ZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHZlcmlmeVVzZXJX
aXRoQWNjZXNzQ29udHJvbDphY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlcildKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRl
bGVnYXRlLmdldCgpLCBAc2VsZWN0b3IocGFuZWw6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50
aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOikpOworICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3Bh
bmVsIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQ
b2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udGV4dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsQXV0aGVudGljYXRv
clBvbGljeShwb2xpY3kpKTsKICAgICB9KS5nZXQoKV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggZDBkZDliMTA0OWFhMTdmYmVlZTNiODQ5MmU1ZWM0
MWY3NTUyYThkMC4uZGVlNzczYzNlMTMyZTM3YjcyNzI3ZjM1Mzg3MTQwMTdiMWQ5NmNmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgotICAgIGJv
b2wgaXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7CisgICAgdm9pZCB2ZXJpZnlV
c2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmKSBjb25z
dCBmaW5hbDsKICAgICBSZXRhaW5QdHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50aWFsUHJpdmF0
ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNB
dHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRh
ICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZmls
dGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4+JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5l
Y3Rpb24ubW0KaW5kZXggOGI4ZDgyNDUxNGU1OGM4NDIwMGFhNzgxNjY3NTlhYWVmN2NjNTE1Ni4u
YjFjOTg3NDc5ZjRkN2NjMWE3NDg3NTkxMzFjODYyNDNlYjY3NmU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtNDQsOSArNDQsMTcgQEAgTW9ja0xvY2Fs
Q29ubmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db24KIHsKIH0KIAotYm9vbCBNb2NrTG9jYWxDb25uZWN0aW9uOjppc1VubG9j
a2VkKExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6
dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5h
Y2NlcHRBdXRoZW50aWNhdGlvbjsKKyAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9u
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoY29uZmlndXJhdGlvbi5sb2NhbCk7CisgICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2Nh
bC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJWZXJp
ZmljYXRpb246Ok5vLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGNhbGxiYWNrKFVzZXJWZXJpZmljYXRpb246OlllcywgYWRvcHROUyhbYWxsb2NMQUNvbnRl
eHRJbnN0YW5jZSgpIGluaXRdKS5nZXQoKSk7CisgICAgfSk7CiB9CiAKIFJldGFpblB0cjxTZWNL
ZXlSZWY+IE1vY2tMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExB
Q29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJl
bCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvbkZs
YWdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdGlvbkZsYWdzLmgKaW5kZXggNTA5MmQ5MzM4NmVlM2JjZGVhNjJmNGVmZTEyOTUyZTBl
Mzc3YTU1Zi4uNjU4ZWViY2JkNTc2ZTEyYjI1NDdmZjUyOGMyNTViZTFkZTg0ZDY0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRpb25GbGFncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaApAQCAtNTEsNiArNTEsMTEgQEAgZW51bSBj
bGFzcyBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA6IHVpbnQ4X3QgewogICAgIExBTm9DcmVkZW50
aWFsLAogfTsKIAorZW51bSBjbGFzcyBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgOiBib29sIHsK
KyAgICBBbGxvdywKKyAgICBEaXNhbGxvdworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE2NzczOWM1ZTI0NTU3NjI2NjQwYWIzYzQ2MThjOGYy
YjI3MGU3ZWUuLjBjMTlkMWE2MWE5MzA3NTFhZDVhN2UyYjA5NTZhNDllMjhjNWMyYWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wMy0wMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERl
bGVnYXRlIHBhbmVsOmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0
aW9uSGFuZGxlcjpdIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDAxMDE4ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDpk
ZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6
Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1s
OiBSZW1vdmVkLgorCiAyMDIwLTAzLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIE1hcHBpbmcgZnJvbSBNSU1FIHR5cGUgdG8gVVRJIHR5
cGUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZjhhYjA4YzRkZGQ1MTczZGIwYTk5Y2Y4YWYyYjMwYTRjMTg3OTI0ZS4uYmQ5YjM3MTEz
Mzk2MGNiMmZkZThiNDVlZjE1ZTAxYjJjODhmM2M1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM1MCw3ICszNTAsNiBAQAogCQk1NzMyNTVBNzIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13
ZWItYXJjaGl2ZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTczMjU1QTMyMjEzOUI5MDAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hp
dmUtMi5odG1sICovOyB9OwogCQk1NzQyMTc4ODI0MDBBQzI1MDAyQjMwM0QgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzg3MjQwMEFCRkQwMDJC
MzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwg
Ki87IH07CiAJCTU3NDIxNzhBMjQwMEFFRDgwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3ODkyNDAwQUVE
MDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGlj
YXRlLWNyZWRlbnRpYWwuaHRtbCAqLzsgfTsKLQkJNTc0MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3OEIyNDAwQ0QyRDAw
MkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi87IH07
CiAJCTU3NDIxNzhFMjQwMEQyREYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLzsgfTsKIAkJNTc0RjU1RDIyMDRENDdGMDAw
Mjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0
eS5mcmFtZXdvcmsgKi87IH07CiAJCTU3NTg1OTdGMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGlu
VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU4NTk3RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovOyB9OwpAQCAtMTUy
NCw3ICsxNTIzLDYgQEAKIAkJCQk1NzhEQTQ0RTIzRUNEMjhCMDAyNDYwMTAgLyogd2ViLWF1dGhl
bnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAwRDVDRjY3IC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJNTc0
MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc5ODMzOTIyMzY4RkEzNzAwOEU1
NTQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2NjNERUEyMzRFQTY2RDAwRTg1RTA5
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTU3NzQ1NEQyMjM1OUJCMDEwMDhFMUVENyAvKiB3ZWItYXV0aGVudGlj
YXRpb24tZ2V0LWFzc2VydGlvbi11MmYtbm8tY3JlZGVudGlhbHMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTE5NzQsNyArMTk3Miw2IEBACiAJCTU3MzVGMDI1MUYzQTRFQTYwMDBFRTgw
MSAvKiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0
aCA9ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNh
dGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlh
bC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc0MjE3OEIyNDAwQ0QyRDAw
MkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWItYXV0
aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhl
bnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc0MjE3OEYyNDAwRDU0RDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1j
cmVkZW50aWFsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzRGNTVEMDIw
NEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBT
ZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3Vy
aXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0zNjAzLDcgKzM2MDAs
NiBAQAogCQkJCTU3OERBNDREMjNFQ0QyNjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1
NzBEMjZGQjIzQzNGODY1MDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRp
b24taGlkLXBpbi5odG1sICovLAogCQkJCTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWIt
YXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCAqLywKLQkJCQk1NzQyMTc4QjI0
MDBDRDJEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRt
bCAqLywKIAkJCQk1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIz
NEVBNjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0
bWwgKi8sCiAJCQkJNTc3NDU0RDEyMzU5QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1nZXQtYXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5odG1sICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGYyZmI0NTI4MDAyNGIwZGI0MWVjMjc2MDU2MDFj
N2IxMzJmNTJlZTYuLmMwNjc0MjAzMGU3NmY3MDg4NWU3ZDM4NTkzMDhlODE4ZmRhMjc0ZmIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTU1LDcgKzU1LDcgQEAgc3Rh
dGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IgPSBmYWxzZTsKIHN0
YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4Y2x1ZGVDcmVkZW50aWFs
c01hdGNoZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRh
dGVMQU5vQ3JlZGVudGlhbCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25Q
YW5lbENhbmNlbEltbWVkaWF0ZWx5ID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNh
dGlvblBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOworc3RhdGljIF9XS0xvY2FsQXV0aGVudGljYXRv
clBvbGljeSBsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQ
b2xpY3lEaXNhbGxvdzsKIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5lbFBpbjsK
IHN0YXRpYyBCT09MIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwog
c3RhdGljIFN0cmluZyB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KQEAgLTE1MSwxMSArMTUx
LDkgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNl
bGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNw
b25zZXNbaW5kZXhdKTsKIH0KIAotLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqKXBhbmVsIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJv
bFJlZilhY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShMQUNvbnRleHQg
KikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgKilwYW5lbCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xpY3kp
KWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVz
ZXIgPSB0cnVlOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tMQUNvbnRleHQgYWxsb2Nd
IGluaXRdKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0LmdldCgpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpOwogfQogCiBAZW5kCkBAIC0z
MDAsMjQgKzI5OCwxOCBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGljYXRp
b25QYW5lbENhbmNlbEltbWVkaWF0ZWx5ID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFBpbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxV
c2VySGFuZGxlID0gTk87Ci0gICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIgPSBm
YWxzZTsKKyAgICBsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3lEaXNhbGxvdzsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tQYW5lbChfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsICpwYW5lbCwgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlELCBOU0FycmF5
ICp0cmFuc3BvcnRzLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUgdHlwZSkKIHsKICAgICBFWFBF
Q1RfV0tfU1RSRVEocGFuZWwucmVseWluZ1BhcnR5SUQsIHJlbHlpbmdQYXJ0eUlEKTsKIAotICAg
IC8vIEJydXRlIGZvcmNlIGdpdmVuIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGFycmF5IGlzIDQu
Ci0gICAgYXV0byAqdGhlVHJhbnNwb3J0cyA9IHBhbmVsLnRyYW5zcG9ydHM7Ci0gICAgRVhQRUNU
X0VRKHRoZVRyYW5zcG9ydHMuY291bnQsIHRyYW5zcG9ydHMuY291bnQpOworICAgIEVYUEVDVF9F
UShwYW5lbC50cmFuc3BvcnRzLmNvdW50LCB0cmFuc3BvcnRzLmNvdW50KTsKICAgICBzaXplX3Qg
Y291bnQgPSAwOwogICAgIGZvciAoTlNOdW1iZXIgKnRyYW5zcG9ydCA6IHRyYW5zcG9ydHMpIHsK
LSAgICAgICAgZm9yIChOU051bWJlciAqdGhlVHJhbnNwb3J0IDogdGhlVHJhbnNwb3J0cykgewot
ICAgICAgICAgICAgaWYgKHRyYW5zcG9ydCA9PSB0aGVUcmFuc3BvcnQpIHsKLSAgICAgICAgICAg
ICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CisgICAgICAgIGlmIChbcGFuZWwudHJhbnNwb3J0cyBjb250YWluc09iamVjdDp0cmFu
c3BvcnRdKQorICAgICAgICAgICAgY291bnQrKzsKICAgICB9CiAgICAgRVhQRUNUX0VRKGNvdW50
LCB0cmFuc3BvcnRzLmNvdW50KTsKIApAQCAtMTI1OSwxMSArMTI1MSwxMCBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxOdWxsRGVsZWdhdGUpCiAgICAgW3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKLSAg
ICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKLSAgICBjbGVhblVwS2V5
Y2hhaW4oIiIpOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiRGlzYWxsb3cgbG9jYWwg
YXV0aGVudGljYXRvci4iXTsKIH0KIAotVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1h
a2VDcmVkZW50aWFsKQorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50
aWFsRGlzYWxsb3dMb2NhbEF1dGhlbnRpY2F0b3IpCiB7CiAgICAgcmVzZXQoKTsKICAgICBSZXRh
aW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0x
Mjc3LDE1ICsxMjY4LDEzIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3Jl
ZGVudGlhbCkKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVz
dFVSTC5nZXQoKV1dOwotICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlm
eVVzZXIpOwotICAgIGNoZWNrUGFuZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMo
W1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3Bv
cnRVU0JdKS5nZXQoKSwgYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tX
ZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50
aWNhdGlvblR5cGVDcmVhdGUpOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2Vl
ZGVkISJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiRGlzYWxsb3cgbG9jYWwgYXV0
aGVudGljYXRvci4iXTsKIH0KIAotVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFz
c2VydGlvbikKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbEFs
bG93TG9jYWxBdXRoZW50aWNhdG9yKQogewogICAgIHJlc2V0KCk7Ci0gICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBSZXRhaW5QdHI8
TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
d2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKICAgICBhdXRv
ICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJh
dGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5h
bHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKICAgICBbW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhl
bnRpY2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKQEAgLTEyOTUsMTEgKzEyODQsMTAgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlvbikKICAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCi0gICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5
QmFzZTY0LCAiIiwgdGVzdFVzZXJoYW5kbGVCYXNlNjQpKTsKKyAgICBsb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lBbGxvdzsKICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKLSAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsKLSAg
ICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0
KCksIGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBl
R2V0KTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKKyAgICBj
aGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIgYWxs
b2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0KCks
IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlQ3Jl
YXRlKTsKICAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWxhLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVmYTNjNWJhNDRiMDJmYjEwNTI5ZDAxNGRmNWRlNjQyOGQ0OTgwYmYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlv
bi1sYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPGlucHV0IHR5cGU9InRl
eHQiIGlkPSJpbnB1dCI+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0g
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
bG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBm
YWxzZSB9IH0pOwotICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5w
dXQuZm9jdXMoKTsgfSk7Ci0gICAgfQotCi0gICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAg
cHVibGljS2V5OiB7Ci0gICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwK
LSAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAotICAgICAgICB9Ci0gICAgfTsKLQotICAgIG5hdmln
YXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAg
ICAgLy8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKLSAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKLSAg
ICB9LCBlcnJvciA9PiB7Ci0gICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOwot
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZShlcnJvci5tZXNzYWdlKTsKLSAgICB9KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRl
eCAwZjY5ZDBiOTE1YTc4MjJlZWFlZTRmZjVhZmNhMjgzOGFkYzVlOTNkLi4xY2FmZmQ3YzJlZmYw
ZDc3MWJjNDQ4N2QxNTc1ZGIwN2QxZWE2ODVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwu
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAtOTgsNyArOTgs
NyBAQAogICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgZ2V0IHVzZXIg
Y29uc2VudC4iKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxk
bid0IHZlcmlmeSB1c2VyLiIpOwogICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIik7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCAzZTRmNDk5
MDZjMzJlNGU4OTUyNThmNjY4M2EwZmJlYTQ5OTc3OWVmLi5mMjdmNzExOTIyN2U4MGUzNjAxMDgz
YzJjMGI1ZTQwOTA3ZDhlMjYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAtNTUsNyArNTUsNyBAQAogCiAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5h
ZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRs
ZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCBn
ZXQgdXNlciBjb25zZW50LiIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLCAiQ291bGRuJ3QgdmVyaWZ5IHVzZXIuIikudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CiAgICAg
ICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392455</attachid>
            <date>2020-03-04 12:15:13 -0800</date>
            <delta_ts>2020-03-04 13:35:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208533-20200304121512.patch</filename>
            <type>text/plain</type>
            <size>57294</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwNmZmMTliMDEyY2Uy
Yjg1MGYyMzZiYmM5NDk4ZmMyNzIyZjkxNC4uZWYyMTgyYTZiNjQ0YmU4ZjExZGM1MTc3MDAwNDk1
MjJmZDA1YzJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTAzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBJbXBs
ZW1lbnQgLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFuZWw6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOl0gU1BJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1MzMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDEwMTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3RzIHdpdGhpbiBleGlzdGlu
ZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpiaW9tZXRyaWNGYWxs
YmFja1Byb21wdFRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6
CisgICAgICAgIEFkZHMgbG9jYWxpemVkIHN0cmluZ3MgdG8gc3VwcG9ydCB0aGUgY3VzdG9taXpl
ZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZy4KKwogMjAyMC0wMy0wMiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNYXBwaW5nIGZyb20g
TUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDZhZjZhMWYwZDZlOTZjYjFmYjQ2YTYzMTVkOWE4NGYzZWE5Yjg0MTUuLjZhZmUw
ZjFlMjIwNDU5NjI3NmRiZjlhNDNlN2U3MzgwOTljOGVlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMjAtMDMtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCAtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxE
ZWxlZ2F0ZSBwYW5lbDpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMTAxODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIHRoZSBhYm92ZSBTUEkgdG8gcmVwbGFjZSAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29tcGxldGlv
bkhhbmRsZXI6XS4KKyAgICAgICAgVGhlIG9yaWdpbmFsIFNQSSBpcyBkZXNpZ25lZCBvbiB0aGUg
cHJlbWlzZSB0aGF0IFNhZmFyaSBpcyBnb2luZyB0byBoaWdobHkgY3VzdG9taXplIHRoZSBMb2Nh
bEF1dGhlbnRpY2F0aW9uIFVJLCBhbmQgdGhhdCBpcyBub3QgaGFwcGVuaW5nCisgICAgICAgIGFu
eW1vcmUuIFRoZXJlZm9yZSwgV2ViS2l0IHRha2VzIGJhY2sgdGhlIGludm9jYXRpb24gb2YgTG9j
YWxBdXRoZW50aWNhdGlvbiBhbmQgb2ZmZXIgYSBuZXcgU1BJIHRvIHRlbGwgY2xpZW50cyB3aGVu
IFdlYktpdCBpcyBhYm91dCB0bworICAgICAgICBzaG93IExvY2FsQXV0aGVudGljYXRpb24gVUku
IENsaWVudHMgdGhlbiBoYXZlIHRoZSB0cmlnZ2VyIHRvIHB1bGwgYXQgdGhlaXIgcGxlYXN1cmUu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFsbCBwbHVtYmluZ3MgdG8gcmVwbGFj
ZSB0aGUgU1BJLiBCZXNpZGVzIHRoYXQsIHRoaXMgcGF0Y2ggYWxzbzoKKyAgICAgICAgMSkgZW5o
YW5jZXMgdGhlIExvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlciB3aXRoIGEgc2xpZ2h0bHkgY3Vz
dG9taXplZCBMb2NhbEF1dGhlbnRpY2F0aW9uIGRpYWxvZzsKKyAgICAgICAgMikgYWRkcyB0aGUg
U1BJIHVzZWQgYWJvdmUgaW50byB0aGUgU1BJIGhlYWRlcjsKKyAgICAgICAgMykgbWFrZXMgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlLnRyYW5zcG9ydHMgYXMgYSBOU1NldCBpbnN0
ZWFkIG9mIGEgTlNBcnJheTsKKyAgICAgICAgNCkgbGV0cyBMb2NhbFNlcnZpY2U6OmlzQXZhaWxh
YmxlIHJldHVybiBmYWxzZSBpZiBBcHBsZSBhdHRlc3RhdGlvbiBpcyBub3QgYXZhaWxhYmxlLgor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yIGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6dmVyaWZ5VXNlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgor
ICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRyYW5zcG9ydHNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdl
cjo6dmVyaWZ5VXNlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
ckRlY2lkZVBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclJlc3BvbnNlU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJVc2VyQ29uc2VudGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5
VXNlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6aXNVbmxvY2tl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjpp
c0F2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OmxvY2FsQXV0aGVudGljYXRvclBv
bGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnZlcmlmeVVzZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0
aW9uOjp2ZXJpZnlVc2VyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVj
dGlvbjo6aXNVbmxvY2tlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaDoKKwogMjAyMC0wMy0wMiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBN
YXBwaW5nIGZyb20gTUlNRSB0eXBlIHRvIFVUSSB0eXBlIHNob3VsZCBiZSBkb25lIGluIHRoZSBV
SSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA2ZDc5YzVjMDJhMTljNjY5YzM3N2U2YzA2MGMzMmE1NDViY2VlZDlmLi43NTUyMjVlNmJh
M2RlMzEzOGQzNjZmMTQ3ZmZmNWI4NGEyOGZhZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTMxMCw2ICszMTAsOSBAQAogLyogVmlkZW8gRW50
ZXIgRnVsbCBTY3JlZW4gY29udGV4dCBtZW51IGl0ZW0gKi8KICJFbnRlciBGdWxsIFNjcmVlbiIg
PSAiRW50ZXIgRnVsbCBTY3JlZW4iOwogCisvKiBVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0
byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiRW50ZXIgcGFzc2NvZGUgdG8gc2lnbiBpbnRv
IHRoaXMgd2Vic2l0ZS4iID0gIkVudGVyIHBhc3Njb2RlIHRvIHNpZ24gaW50byB0aGlzIHdlYnNp
dGUuIjsKKwogLyogbWVudSBpdGVtICovCiAiRW50ZXIgUGljdHVyZSBpbiBQaWN0dXJlIiA9ICJF
bnRlciBQaWN0dXJlIGluIFBpY3R1cmUiOwogCkBAIC04NzcsNiArODgwLDkgQEAKIC8qIHByb21w
dCBzdHJpbmcgaW4gYXV0aGVudGljYXRpb24gcGFuZWwgKi8KICJUbyB2aWV3IHRoaXMgcGFnZSwg
eW91IG11c3QgbG9nIGluIHRvIHRoaXMgYXJlYSBvbiAlQDoiID0gIlRvIHZpZXcgdGhpcyBwYWdl
LCB5b3UgbXVzdCBsb2cgaW4gdG8gdGhpcyBhcmVhIG9uICVAOiI7CiAKKy8qIFVzZSBUb3VjaCBJ
RCB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlICovCisiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRo
aXMgd2Vic2l0ZS4iID0gIlRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUuIjsKKwog
LyogVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSAqLwogIlRyYW5zZm9ybWF0
aW9ucyIgPSAiVHJhbnNmb3JtYXRpb25zIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhMTE0ZmQ3NjFmOTJhMGE1ZDk5NmIwZmFlZTBiMDdh
NTMwOTAyNTg4Li45YWMwYmQyOTIwY2NiYTU5M2U5YmEwN2VlNmYzZTY1ODI1YmEyZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMTIwNyw0
ICsxMjA3LDE2IEBAIFN0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfQVVUSE4pCitTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiVG91Y2ggSUQgdG8gc2lnbiBpbnRvIHRoaXMg
d2Vic2l0ZS4iLCAiVXNlIFRvdWNoIElEIHRvIHNpZ24gaW50byB0aGlzIHdlYnNpdGUiKTsKK30K
KworU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKQoreworICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJFbnRlciBwYXNzY29kZSB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlLiIs
ICJVc2UgcGFzc2NvZGUgYXMgYSBmYWxsYmFjayB0byBzaWduIGludG8gdGhpcyB3ZWJzaXRlIik7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IDNlMzMxNjRmYjJkNzg1MzY4YTU3NzRlZDRh
YjFmM2VhY2FmNDUyN2EuLmQ3MTg0NzJjNGFkYTNlYjdjNDRlNWJjN2I5ZWI0NmM2MDcxNWFhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTMzOSw2
ICszMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBkYXRlUGlja2VyWWVhckxhYmVsVGl0bGUoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG91Y2hJRFByb21wdFRpdGxlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKTsK
KyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhfKHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0xvY2FsQXV0
aGVudGljYXRpb25TUEkuaAppbmRleCBlNjdmMmJmY2FkZDMwY2Y1YjJlZjIxYTg2MTMxZWNjYzA4
MjhlMjI2Li44ZTU4NGQ4MmIzNDQ3ZjBhZmFlMjc2ZWE3YjhmNTMxYzFkNDY0NTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9u
U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oCkBAIC0zNCwxMiArMzQsMTMgQEAKICNlbHNlCiAKIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIExBT3B0aW9uKSB7Ci0gICAgTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSwKKyAg
ICBMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUsCisgICAgTEFPcHRpb25QYXNzY29kZVRpdGxl
LAogfTsKIAogQGludGVyZmFjZSBMQUNvbnRleHQoUHJpdmF0ZSkgPE5TU2VjdXJlQ29kaW5nPgog
Ci0tIChOU0RpY3Rpb25hcnkgKilldmFsdWF0ZVBvbGljeTooTEFQb2xpY3kpcG9saWN5IG9wdGlv
bnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnMgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3I7CistICh2
b2lkKWV2YWx1YXRlQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJvbFJlZilhY2Nlc3NDb250
cm9sIG9wZXJhdGlvbjooTEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uKW9wZXJhdGlvbiBvcHRpb25z
OihOU0RpY3Rpb25hcnkgKilvcHRpb25zIHJlcGx5Oih2b2lkKF4pKE5TRGljdGlvbmFyeSAqcmVz
dWx0LCBOU0Vycm9yICplcnJvcikpcmVwbHk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmgKaW5kZXggOGMzNjg1MzNlYTBiMjE0ZjAxYmE3Y2JkOWRkNWI1OWNhNTJlMTQ4MS4uY2Qw
ZDZhYjY3MGQ4ZjJmZWM2ODI5MmYxNWI3MzMyOTljMGQyMmQzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisj
aW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTM5LDExICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci1lbnVtIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIDogdWludDhfdDsKLWVudW0gY2xh
c3MgV2ViQXV0aGVudGljYXRpb25SZXN1bHQgOiBib29sOwotfQotCiBuYW1lc3BhY2UgQVBJIHsK
IAogY2xhc3MgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudCB7CkBAIC01NSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1BhbmVsKFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxX
ZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3BvbnNlcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBBU1NFUlQoIXJlc3BvbnNl
cy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpMb2NhbEF1
dGhlbnRpY2F0b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpEaXNhbGxvdyk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggODgxMjY0ZTlkYWU0OTc0NjQzODJiYzg3MDU1MmZkNmJmZjJkODAyYS4u
MDBmNDkwNTJmYjU5ZjljYTgzN2M0ZGJkNDE1OWNjZjk2OTljNWU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAi
QVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVk
ZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgi
CisjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgogI2luY2x1ZGUg
IkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIkFQSVdpbmRvd0ZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgpAQCAtMjA3OSwx
MiArMjA4MSwxOSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKICAgICAgICAgLy8gVGhlIGN1cnJlbnQgbWV0aG9kIGlzIHNwZWNpYWxpemVkIGZvciBX
ZWJLaXRUZXN0UnVubmVyLgotICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
V2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94
eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAg
ICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0Rh
dGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7CisgICAgICAg
ICAgICBjbGFzcyBQYW5lbENsaWVudCA6IHB1YmxpYyBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQgeworICAgICAgICAgICAgcHVibGljOgorICAgICAgICAgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
S2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpB
bGxvdyk7IH0KKyAgICAgICAgICAgIH07CisKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFu
ZWwuc2V0Q2xpZW50KFdURjo6bWFrZVVuaXF1ZVJlZjxQYW5lbENsaWVudD4oKSk7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQ6OlByZXNlbnRlZCk7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
LmgKaW5kZXggOTc0MWRkNjJjNjFmZThmYmFmMTdlMjg1ZWYxMDFkZmY1YmY4MDhmZS4uODgzZGZm
NDdhMTRmMjhkNmJmZDJlZWY3ZTJlODg0YmVlZTE5NzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5oCkBAIC02OCw2ICs2OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tX
ZWJBdXRoZW50aWNhdGlvblR5cGUpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGVHZXQs
CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGlj
eSkgeworICAgIF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeUFsbG93LAorICAgIF9XS0xvY2Fs
QXV0aGVudGljYXRvclBvbGljeURpc2FsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvdG9jb2wgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KIAogQG9wdGlvbmFsCkBAIC03Niw3ICs4MSw3
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSkg
ewogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21p
c3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25S
ZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlICo+ICopcmVzcG9uc2VzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKXBh
bmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdmVyaWZ5VXNlcldpdGhBY2Nl
c3NDb250cm9sOihTZWNBY2Nlc3NDb250cm9sUmVmKWFjY2Vzc0NvbnRyb2wgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClwYW5l
bDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxvY2Fs
QXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLTG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkBAIC04NSw3
ICs5MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKQogCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlkIDxfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+IGRlbGVnYXRlOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SUQ7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXkgKnRyYW5zcG9ydHM7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU2V0ICp0cmFuc3BvcnRzOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUgdHlw
ZTsKIAogLSAodm9pZCljYW5jZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDE5
NzNiMGY1NjRkMjUxYjIwY2YyNmEzNmEzYTY0ZDhhMjUyODIyZjMuLjI1ODYyYmRjYjcwYjA5NDc0
MzhlZjJiNTdkYzk3ODNkOGQ0ODNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBA
IC0zMyw3ICszMyw3IEBACiBAaW1wbGVtZW50YXRpb24gX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBXZWFrUHRyPFdlYktpdDo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudD4gX2NsaWVudDsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IF90cmFuc3BvcnRzOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IF90cmFuc3BvcnRz
OwogI2VuZGlmCiB9CiAKQEAgLTgxLDEzICs4MSwxMyBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnQgd2tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydChXZWJDb3JlOjpBdXRo
ZQogICAgIH0KIH0KIAotLSAoTlNBcnJheSAqKXRyYW5zcG9ydHMKKy0gKE5TU2V0ICopdHJhbnNw
b3J0cwogewogICAgIGlmIChfdHJhbnNwb3J0cykKICAgICAgICAgcmV0dXJuIF90cmFuc3BvcnRz
LmdldCgpOwogCiAgICAgYXV0byYgdHJhbnNwb3J0cyA9IF9wYW5lbC0+dHJhbnNwb3J0cygpOwot
ICAgIF90cmFuc3BvcnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTp0cmFuc3BvcnRzLnNpemUoKV07CisgICAgX3RyYW5zcG9ydHMgPSBbW05TTXV0YWJsZVNldCBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTp0cmFuc3BvcnRzLnNpemUoKV07CiAgICAgZm9yIChhdXRv
JiB0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKQogICAgICAgICBbX3RyYW5zcG9ydHMgYWRkT2JqZWN0
OmFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6d2tXZWJBdXRoZW50aWNhdGlv
blRyYW5zcG9ydCh0cmFuc3BvcnQpXSkuZ2V0KCldOwogICAgIHJldHVybiBfdHJhbnNwb3J0cy5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3IuaAppbmRleCA5MWQ5OWVkNTJiNmRiMWRlZmFiMTU5NjI0MzEw
Njc5ZjNjYWQ2NzRlLi41NjcxYWVjNzY5NzgyNmRkMWVlMTMxYmFiOWZmNzg5NmIyZDQ1NDgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB2b2lkIGF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3Rh
dHVzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNl
dDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSYpPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vz
c0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3Io
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpPiYmKSA9IDA7
CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3IoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggZmNjMjdhZDY2ZjMyMzY4NGU5Yzdk
NGY4NmI1YWM3NGZmMGY2MmIwOS4uYzM5MTgwMWIzYzJlMDU5MTk0YTVkYTc2Yjc5ODM0Y2FmNDcx
NzA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMjk1LDExICsy
OTUsMTAgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2UoY29uc3QgSGFzaFNldDxSZWY8QXV0aGVudGljYXQKICAgICB9KTsKIH0KIAotdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0Nv
bnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9y
UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZXRhaW5QdHI8U2VjQWNjZXNz
Q29udHJvbFJlZj4gYWNjZXNzQ29udHJvbCA9IGFjY2Vzc0NvbnRyb2xSZWY7Ci0gICAgZGlzcGF0
Y2hQYW5lbENsaWVudENhbGwoW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3Qg
QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7Ci0gICAgICAgIHBh
bmVsLmNsaWVudCgpLnZlcmlmeVVzZXIoYWNjZXNzQ29udHJvbC5nZXQoKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNsaWVudCgp
LmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4
IGU4ZjJkMmJmZDgwYzEwY2FhY2Y4MzA1ZDQ3M2Q1YmQzZjhhZWFmYjQuLmJkMGI5NmQ0Yzk4MDEx
OTc4YTBjYTdkZWQ0ZGQwZDIwYzJkYjY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0aGVudGljYXRvclN0
YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgcmVx
dWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdU
Rjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
Y29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZSYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNj
ZXNzQ29udHJvbFJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZp
bmFsOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgZmluYWw7CiAKICAg
ICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwg
VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaAppbmRleCA5YTQ3NTcwZmU3MGIzYjcyNDhjY2UxMDUzMTRlNTBiOGNjOTAwZGNjLi42OWVk
MzRlMTU4NDE1YzUwNWI5NjY1NGVmN2UwMTdmZGQzMjE4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApAQCAtMzgsMTQgKzM4LDE1IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgTG9jYWxBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0
b3IgewogcHVibGljOgogICAgIC8vIEhlcmUgaXMgdGhlIEZTTS4KLSAgICAvLyBNYWtlQ3JlZGVu
dGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBBdHRlc3Rl
ZCA9PiBFbmQKLSAgICAvLyBHZXRBc3NlcnRpb246IEluaXQgPT4gUmVxdWVzdFJlY2VpdmVkID0+
IFJlc3BvbnNlU2VsZWN0ZWQgPT4gVXNlckNvbnNlbnRlZCA9PiBFbmQKKyAgICAvLyBNYWtlQ3Jl
ZGVudGlhbDogSW5pdCA9PiBSZXF1ZXN0UmVjZWl2ZWQgPT4gUG9saWN5RGVjaWRlZCA9PiBVc2Vy
VmVyaWZpZWQgPT4gQXR0ZXN0ZWQgPT4gRW5kCisgICAgLy8gR2V0QXNzZXJ0aW9uOiBJbml0ID0+
IFJlcXVlc3RSZWNlaXZlZCA9PiBSZXNwb25zZVNlbGVjdGVkID0+IFVzZXJWZXJpZmllZCA9PiBF
bmQKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgSW5pdCwKICAgICAgICAgUmVxdWVz
dFJlY2VpdmVkLAotICAgICAgICBVc2VyQ29uc2VudGVkLAorICAgICAgICBVc2VyVmVyaWZpZWQs
CiAgICAgICAgIEF0dGVzdGVkLAotICAgICAgICBSZXNwb25zZVNlbGVjdGVkCisgICAgICAgIFJl
c3BvbnNlU2VsZWN0ZWQsCisgICAgICAgIFBvbGljeURlY2lkZWQsCiAgICAgfTsKIAogICAgIHN0
YXRpYyBSZWY8TG9jYWxBdXRoZW50aWNhdG9yPiBjcmVhdGUoVW5pcXVlUmVmPExvY2FsQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtNTcsMTIgKzU4LDEzIEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgTG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYpOwog
CiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRl
eHQgKik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3ko
TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KTsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25uZWN0
aW9uOjpVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik7CiAgICAgdm9pZCBjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYsIFZlY3Rvcjx1aW50OF90PiYmIGNy
ZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRpZmlj
YXRlcywgTlNFcnJvciAqKTsKIAogICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7CiAgICAg
dm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29y
ZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKLSAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExBQ29udGV4dCAqLCBSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+JiYsIExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiwg
TEFDb250ZXh0ICopOwogCiAgICAgdm9pZCByZWNlaXZlRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmJiwgV2ViQXV0aGVudGljYXRpb25TdGF0dXMgPSBXZWJBdXRoZW50aWNhdGlvblN0
YXR1czo6TEFFcnJvcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5tbQppbmRleCBmZmM2MGVhNTkzMDc3YzYzMjFkMjIyOTY4MjdkZWVmNTk3YTVkZTRmLi5m
MWQ5NDQ1NjQ3MDA4OTFiYzBiNjZmZmU3N2RmYTZiNzY0ZjA1MmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNjAsNiArMTYwLDI4IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKICAgICAvLyBTdGVwIDYuCiAgICAg
Ly8gR2V0IHVzZXIgY29uc2VudC4KKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNl
cnZlcigpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIChMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSB7CisgICAgICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3kocG9saWN5KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgb2JzZXJ2ZXItPmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgfQorfQorCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KExvY2FsQXV0aGVudGljYXRvclBvbGlj
eSBwb2xpY3kpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZl
ZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpQb2xpY3lEZWNpZGVkOworCisgICAgaWYgKHBvbGlj
eSA9PSBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93KSB7CisgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJEaXNhbGxvdyBsb2NhbCBh
dXRoZW50aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFp
blB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwogICAgIHsKICAgICAgICAg
Q0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CkBAIC0xNzEsMjkgKzE5MywyNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewotICAgICAgICBT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBhY2Nlc3NDb250cm9sLmdldCgp
OwotICAgICAgICBhdXRvIGNhbGxiYWNrID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vz
c0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKExBQ29udGV4dCAqY29u
dGV4dCkgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIFNlY0FjY2Vz
c0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7CisgICAg
YXV0byBjYWxsYmFjayA9IFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJp
ZmljYXRpb24gdmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlclVzZXJDb25zZW50ZWQoYWNjZXNzQ29udHJvbC5nZXQoKSwgY29udGV4dCk7Ci0gICAg
ICAgIH07Ci0gICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIHZlcmlm
aWNhdGlvbiwgY29udGV4dCk7CisgICAgfTsKKyAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVzZXIo
YWNjZXNzQ29udHJvbFJlZiwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqY29udGV4dCkKK3Zv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVy
aWZpY2F0aW9uKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25u
ZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlvbiwgTEFDb250ZXh0ICpjb250ZXh0
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKIAot
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwotICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
UG9saWN5RGVjaWRlZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyVmVyaWZpZWQ7CiAgICAg
YXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAotICAgIGlmICghbV9jb25uZWN0
aW9uLT5pc1VubG9ja2VkKGNvbnRleHQpKSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2Vw
dGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJf
cyB9KTsKKyAgICBpZiAodmVyaWZpY2F0aW9uID09IExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlm
aWNhdGlvbjo6Tm8pIHsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJv
ciwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzA5LDcgKzMyOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1h
a2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiB7CiAgICAgdXNp
bmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCi0gICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpVc2VyVmVyaWZpZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7CiAgICAg
YXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIApAQCAtMzkyLDcgKzQxMiw3IEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gU3RlcCA2LgorICAgIC8vIFN0ZXAgNi03LiBVc2VyIGNvbnNlbnQg
aXMgaW1wbGljaXRseSBhY3F1aXJlZCBieSBzZWxlY3RpbmcgcmVzcG9uc2VzLgogICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRl
cykgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZSgKICAgICAgICAgICAgIHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKQEAgLTQy
MiwyOCArNDQyLDI4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyUmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXNw
b25zZVNlbGVjdGVkOwogCi0gICAgLy8gU3RlcCA3LiBHZXQgdXNlciBjb25zZW50LgotICAgIGlm
IChhdXRvKiBvYnNlcnZlciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKLSAgICAgICAgYXV0byBhY2Nl
c3NDb250cm9sUmVmID0gcmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKLSAgICAgICAgYXV0byBj
YWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKV0gKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgYXV0byBhY2Nlc3NDb250cm9sUmVmID0gcmVz
cG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gWworICAgICAgICB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwKKyAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKQorICAgIF0gKExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbiB2ZXJp
ZmljYXRpb24sIExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlvbkFmdGVy
VXNlckNvbnNlbnRlZChjb250ZXh0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgICAgIH07Ci0g
ICAgICAgIG9ic2VydmVyLT52ZXJpZnlVc2VyKGFjY2Vzc0NvbnRyb2xSZWYsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlvbkFm
dGVyVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKHJlc3BvbnNlKSwgdmVyaWZpY2F0aW9uLCBjb250
ZXh0KTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihhY2Nlc3NDb250cm9s
UmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMQUNvbnRleHQgKmNvbnRleHQs
IFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+JiYgcmVzcG9uc2Up
Cit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJW
ZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4m
JiByZXNwb25zZSwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlv
biwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhl
bnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVzcG9uc2VT
ZWxlY3RlZCk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOworICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6VXNlclZlcmlmaWVkOwogCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlzVW5s
b2NrZWQoY29udGV4dCkpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOworICAg
IGlmICh2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpO
bykgeworICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRu
J3QgdmVyaWZ5IHVzZXIuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTYs
MjMgKzQ3NiwyMCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlclVzZXJDb25zZW50ZWQoTEFDb250ZXh0ICpjb250ZQogICAgIC8vIFN0ZXAgMTEuCiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc2lnbmF0dXJlOwogICAgIHsKLSAgICAgICAgYXV0byBx
dWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIFtxdWVyeSBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6QHsKKyAgICAgICAgTlNEaWN0aW9u
YXJ5ICpxdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNz
S2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRv
TlNEYXRhKHJlc3BvbnNlLT5yYXdJZCgpKS5nZXQoKSwKKyAgICAgICAgICAgIChpZClrU2VjVXNl
QXV0aGVudGljYXRpb25Db250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgKGlkKWtTZWNSZXR1
cm5SZWY6IEBZRVMsCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAgICAg
ICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCiAgICAg
ICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCi0gICAgICAgIH1dOwot
ICAgICAgICAvLyBjb250ZXh0IGlzIG51bGxwdHIgaW4gbW9jayB0ZXN0aW5nLgotICAgICAgICBp
ZiAoY29udGV4dCkKLSAgICAgICAgICAgIFtxdWVyeSBzZXRPYmplY3Q6Y29udGV4dCBmb3JLZXk6
KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHRdOworICAgICAgICB9OwogICAgICAgICBD
RlR5cGVSZWYgcHJpdmF0ZUtleVJlZiA9IG51bGxwdHI7Ci0gICAgICAgIE9TU3RhdHVzIHN0YXR1
cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeS5n
ZXQoKSwgJnByaXZhdGVLZXlSZWYpOworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
Q29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZwcml2YXRlS2V5
UmVmKTsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlv
bih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IHRoZSBwcml2YXRlIGtl
eSByZWZlcmVuY2U6ICIsIHN0YXR1cykgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDhhNzY2MmM3ZWI3ZTMzZDk5MjdmNjQ0NGY5
ZGY3MzdkZTBmMjEwMTIuLmJjNjJmM2QwNWE2Njk0OTBlNzE0ODk4Yzk2YWZlOGYxYzNiYzc5YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNiw5ICszNiw3IEBACiBP
QkpDX0NMQVNTIExBQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7Ci0KIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01MiwxMyArNTAsMTkgQEAgY2xhc3MgTG9jYWxDb25uZWN0aW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbENvbm5lY3Rpb24p
OwogcHVibGljOgorICAgIGVudW0gY2xhc3MgVXNlclZlcmlmaWNhdGlvbiA6IGJvb2wgeworICAg
ICAgICBObywKKyAgICAgICAgWWVzCisgICAgfTsKKwogICAgIHVzaW5nIEF0dGVzdGF0aW9uQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TQXJyYXkgKiwgTlNFcnJvciAqKT47Cisg
ICAgdXNpbmcgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik+OwogCiAgICAgTG9jYWxDb25uZWN0aW9u
KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsK
IAogICAgIC8vIE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwg
Ym9vbCBpc1VubG9ja2VkKExBQ29udGV4dCAqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdmVy
aWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2smJikg
Y29uc3Q7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50aWFs
UHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5n
JiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRh
LCBOU0RhdGEgKmhhc2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGZpbHRlclJlc3BvbnNlcyhIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+PiYpIGNvbnN0IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQppbmRleCA1M2UwMTIzYWQ3YWRhNTU3NTNjMjIyOTlmZTg5ZTg4NDAyZmMyMWZm
Li40Yjc3MjFhNjVlMTFjOTgyZGFhMmMxMTM1YmU1Zjk4ZGQwYmYyMzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQogCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMzksMTMg
KzQwLDI5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIExvY2FsQ29ubmVjdGlvbjo6
aXNVbmxvY2tlZChMQUNvbnRleHQgKmNvbnRleHQpIGNvbnN0Cit2b2lkIExvY2FsQ29ubmVjdGlv
bjo6dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wsIFVzZXJWZXJp
ZmljYXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOwotICAgIGF1dG8gcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVQb2xp
Y3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3Mgb3B0aW9u
czpAeyBAKExBT3B0aW9uTm90SW50ZXJhY3RpdmUpOiBAWUVTIH0gZXJyb3I6JmVycm9yXTsKLSAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZXQgdXNlciBjb25z
ZW50OiAlQCIsIGVycm9yKTsKLSAgICByZXR1cm4gISFyZXN1bHQ7CisgICAgYXV0byBjb250ZXh0
ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKKworICAgIGF1dG8g
b3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Cisg
ICAgaWYgKFtjb250ZXh0IGJpb21ldHJ5VHlwZV0gPT0gTEFCaW9tZXRyeVR5cGVUb3VjaElEKQor
ICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6V2ViQ29yZTo6dG91Y2hJRFByb21wdFRpdGxlKCkg
Zm9yS2V5OkAoTEFPcHRpb25BdXRoZW50aWNhdGlvblRpdGxlKV07CisgICAgW29wdGlvbnMgc2V0
T2JqZWN0OldlYkNvcmU6OmJpb21ldHJpY0ZhbGxiYWNrUHJvbXB0VGl0bGUoKSBmb3JLZXk6QChM
QU9wdGlvblBhc3Njb2RlVGl0bGUpXTsKKworICAgIGF1dG8gcmVwbHkgPSBtYWtlQmxvY2tQdHIo
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChOU0RpY3Rpb25hcnkgKiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICBVc2VyVmVyaWZpY2F0aW9uIHZlcmlm
aWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246OlllczsKKyAgICAgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21ldHJp
Y3M6ICVAIiwgZXJyb3IpOworICAgICAgICAgICAgdmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNh
dGlvbjo6Tm87CisgICAgICAgIH0KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB2ZXJpZmljYXRp
b24sIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHZlcmlmaWNhdGlvbiwgY29udGV4dC5nZXQoKSk7CisgICAgICAg
IH0pOworICAgIH0pOworCisgICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3NDb250cm9sOmFjY2Vz
c0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVzZUtleVNpZ24gb3B0
aW9uczpvcHRpb25zLmdldCgpIHJlcGx5OnJlcGx5LmdldCgpXTsKIH0KIAogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNv
bnRleHQgKmNvbnRleHQsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwgY29u
c3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCmluZGV4IDZiYzA4MjUyOTZkOGFhZTIz
YWI2NGRjZjA3MGYzMTNmMGY5OTRmZTAuLmFkN2JlMTNhNzIxOTgxNDNlYjA1MTEzMjM3Mjk5ZTA0
ZGRlZGMzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KQEAgLTU1LDYgKzU1LDgg
QEAgYm9vbCBMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkKIAogI2lmIGRlZmluZWQoTE9DQUxT
RVJWSUNFX0FERElUSU9OUykKIExPQ0FMU0VSVklDRV9BRERJVElPTlMKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCBkZjNkOTVhZTEw
OWU1YmQ0MjEyN2EzZTRmMDNjNTQ1M2I1OGJjMzg5Li5kMmVkZmY2YmY5MjE4Nzg2ZTU5ZDJhMTRj
MDM4NjE1YjA2NGM4YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
VEY6OlN0cmluZyYpPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJl
c3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCB2ZXJpZnlVc2Vy
KFNlY0FjY2Vzc0NvbnRyb2xSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICop
PiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGlj
YXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYp
IGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqbV9wYW5lbDsK
ICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+
IG1fZGVsZWdhdGU7CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgcGFu
ZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQgOiAxOwogICAgICAgICBi
b29sIHBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIg
OiAxOwogICAgICAgICBib29sIHBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgcGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRy
b2xDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgcGFuZWxEZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2RlbGVn
YXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50Lm1tCmluZGV4IDBlOTczZmI5NGZhNjEwOTJkYjQ1YmQ0MDZjNTk3
YWM5YWViMjEwMDcuLmRiZGY1YWU1NjNmZDgzYWUwNDNkZGMxNjI1NTgxYWE5YjhkZjdkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5o
IgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCi0jaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvbkZsYWdz
LmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCIKICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgpAQCAtNTAsNyArNDksNyBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9XS1dlYkF1dGhlbnRpY2F0aW9uUAog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxX
aXRoUmVzdWx0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6
ZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0OildOwogICAgIG1fZGVsZWdh
dGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhh
bmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpyZXF1
ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1l
dGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnZlcmlmeVVzZXJX
aXRoQWNjZXNzQ29udHJvbDpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0
aG9kcy5wYW5lbERlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6ZGVjaWRl
UG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOildOwogfQog
CiBSZXRhaW5QdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWxlZ2F0ZSgpCkBAIC0xNjcsMjUgKzE2NiwzNyBA
QCB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QQogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Ojp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYg
YWNjZXNzQ29udHJvbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0CitzdGF0aWMgTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IGxv
Y2FsQXV0aGVudGljYXRvclBvbGljeShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcmVzdWx0
KQogewotICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxWZXJpZnlVc2VyV2l0aEFjY2Vz
c0NvbnRyb2xDb21wbGV0aW9uSGFuZGxlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihh
ZG9wdE5TKFthbGxvY0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pLmdldCgpKTsKKyAgICBzd2l0
Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5QWxsb3c6
CisgICAgICAgIHJldHVybiBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkFsbG93OworICAgIGNh
c2UgX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5RGlzYWxsb3c6CisgICAgICAgIHJldHVybiBM
b2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93OworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpBbGxvdzsK
K30KKwordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JDb21wbGV0
aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihMb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3k6OkRpc2FsbG93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8g
ZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICghZGVsZWdhdGUpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGlu
aXRdKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKExvY2FsQXV0aGVudGljYXRv
clBvbGljeTo6RGlzYWxsb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdl
dCgpLCBAc2VsZWN0b3IocGFuZWw6dmVyaWZ5VXNlcldpdGhBY2Nlc3NDb250cm9sOmNvbXBsZXRp
b25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHZlcmlmeVVzZXJXaXRo
QWNjZXNzQ29udHJvbDphY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJsZSB7CisgICAg
YXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVn
YXRlLmdldCgpLCBAc2VsZWN0b3IocGFuZWw6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNh
dG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOikpOworICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVs
IGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xp
Y3kgcG9saWN5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGV4dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsQXV0aGVudGljYXRvclBv
bGljeShwb2xpY3kpKTsKICAgICB9KS5nZXQoKV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxDb25uZWN0aW9uLmgKaW5kZXggZDBkZDliMTA0OWFhMTdmYmVlZTNiODQ5MmU1ZWM0MWY3
NTUyYThkMC4uZGVlNzczYzNlMTMyZTM3YjcyNzI3ZjM1Mzg3MTQwMTdiMWQ5NmNmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IE1vY2tMb2NhbENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOwogCiBwcml2YXRlOgotICAgIGJvb2wg
aXNVbmxvY2tlZChMQUNvbnRleHQgKikgY29uc3QgZmluYWw7CisgICAgdm9pZCB2ZXJpZnlVc2Vy
KFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25DYWxsYmFjayYmKSBjb25zdCBm
aW5hbDsKICAgICBSZXRhaW5QdHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtl
eShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRy
TGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpo
YXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZmlsdGVy
UmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4+JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rp
b24ubW0KaW5kZXggOGI4ZDgyNDUxNGU1OGM4NDIwMGFhNzgxNjY3NTlhYWVmN2NjNTE1Ni4uYjFj
OTg3NDc5ZjRkN2NjMWE3NDg3NTkxMzFjODYyNDNlYjY3NmU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtNDQsOSArNDQsMTcgQEAgTW9ja0xvY2FsQ29u
bmVjdGlvbjo6TW9ja0xvY2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db24KIHsKIH0KIAotYm9vbCBNb2NrTG9jYWxDb25uZWN0aW9uOjppc1VubG9ja2Vk
KExBQ29udGV4dCAqY29udGV4dCkgY29uc3QKK3ZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6dmVy
aWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5hY2Nl
cHRBdXRoZW50aWNhdGlvbjsKKyAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQo
Y29uZmlndXJhdGlvbi5sb2NhbCk7CisgICAgICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+
YWNjZXB0QXV0aGVudGljYXRpb24pIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFVzZXJWZXJpZmlj
YXRpb246Ok5vLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGNhbGxiYWNrKFVzZXJWZXJpZmljYXRpb246OlllcywgYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJ
bnN0YW5jZSgpIGluaXRdKS5nZXQoKSk7CisgICAgfSk7CiB9CiAKIFJldGFpblB0cjxTZWNLZXlS
ZWY+IE1vY2tMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29u
dGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwg
TlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvbkZsYWdz
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdGlvbkZsYWdzLmgKaW5kZXggNTA5MmQ5MzM4NmVlM2JjZGVhNjJmNGVmZTEyOTUyZTBlMzc3
YTU1Zi4uNjU4ZWViY2JkNTc2ZTEyYjI1NDdmZjUyOGMyNTViZTFkZTg0ZDY0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRpb25GbGFncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaApAQCAtNTEsNiArNTEsMTEgQEAgZW51bSBjbGFz
cyBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA6IHVpbnQ4X3QgewogICAgIExBTm9DcmVkZW50aWFs
LAogfTsKIAorZW51bSBjbGFzcyBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgOiBib29sIHsKKyAg
ICBBbGxvdywKKyAgICBEaXNhbGxvdworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE2NzczOWM1ZTI0NTU3NjI2NjQwYWIzYzQ2MThjOGYyYjI3
MGU3ZWUuLjBjMTlkMWE2MWE5MzA3NTFhZDVhN2UyYjA5NTZhNDllMjhjNWMyYWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMC0wMy0wMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVn
YXRlIHBhbmVsOmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9u
SGFuZGxlcjpdIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDAxMDE4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToK
KyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDpkZWNp
ZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDp2ZXJpZnlVc2VyV2l0aEFjY2Vzc0NvbnRyb2w6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYS5odG1sOiBS
ZW1vdmVkLgorCiAyMDIwLTAzLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIE1hcHBpbmcgZnJvbSBNSU1FIHR5cGUgdG8gVVRJIHR5cGUg
c2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZjhhYjA4YzRkZGQ1MTczZGIwYTk5Y2Y4YWYyYjMwYTRjMTg3OTI0ZS4uYmQ5YjM3MTEzMzk2
MGNiMmZkZThiNDVlZjE1ZTAxYjJjODhmM2M1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM1MCw3ICszNTAsNiBAQAogCQk1NzMyNTVBNzIyMTM5QkM3MDAzOTZBRTggLyogbG9hZC13ZWIt
YXJjaGl2ZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTczMjU1QTMyMjEzOUI5MDAwMzk2QUU4IC8qIGxvYWQtd2ViLWFyY2hpdmUt
Mi5odG1sICovOyB9OwogCQk1NzQyMTc4ODI0MDBBQzI1MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NDIxNzg3MjQwMEFCRkQwMDJCMzAz
RCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWVycm9yLmh0bWwgKi87
IH07CiAJCTU3NDIxNzhBMjQwMEFFRDgwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3ODkyNDAwQUVEMDAw
MkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEtZHVwbGljYXRl
LWNyZWRlbnRpYWwuaHRtbCAqLzsgfTsKLQkJNTc0MjE3OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdl
Yi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc0MjE3OEIyNDAwQ0QyRDAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi87IH07CiAJ
CTU3NDIxNzhFMjQwMEQyREYwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTc0MjE3OEQyNDAwRDI2QzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEuaHRtbCAqLzsgfTsKIAkJNTc0RjU1RDIyMDRENDdGMDAwMjk0
OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0eS5m
cmFtZXdvcmsgKi87IH07CiAJCTU3NTg1OTdGMjNBMjUyN0EwMEM3NDU3MiAvKiBDdGFwUGluVGVz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4
NTk3RTIzQTI1MjdBMDBDNzQ1NzIgLyogQ3RhcFBpblRlc3QuY3BwICovOyB9OwpAQCAtMTUyNCw3
ICsxNTIzLDYgQEAKIAkJCQk1NzhEQTQ0RTIzRUNEMjhCMDAyNDYwMTAgLyogd2ViLWF1dGhlbnRp
Y2F0aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbi1pbnZhbGlkLWVycm9yLXJldHJ5Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTcwRDI2RkMyM0MzRjg3MDAwRDVDRjY3IC8qIHdlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1waW4uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk1NzY2M0RFQzIzNEYxRjkzMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9u
LWdldC1hc3NlcnRpb24taGlkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJNTc0MjE3
OEMyNDAwQ0Q0NzAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxh
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc5ODMzOTIyMzY4RkEzNzAwOEU1NTQ3
IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy1tdWx0aXBsZS10YWdzLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc2NjNERUEyMzRFQTY2RDAwRTg1RTA5IC8q
IHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLW5mYy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTU3NzQ1NEQyMjM1OUJCMDEwMDhFMUVENyAvKiB3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi11MmYtbm8tY3JlZGVudGlhbHMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTE5NzQsNyArMTk3Miw2IEBACiAJCTU3MzVGMDI1MUYzQTRFQTYwMDBFRTgwMSAv
KiBUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9
ICJUZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NzQyMTc4NzI0MDBBQkZEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1h
a2UtY3JlZGVudGlhbC1sYS1lcnJvci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIndlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtbGEtZXJyb3IuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3NDIxNzg5MjQwMEFFRDAwMDJCMzAzRCAvKiB3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1kdXBsaWNhdGUtY3JlZGVudGlhbC5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTc0MjE3OEIyNDAwQ0QyRDAwMkIz
MDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWItYXV0aGVu
dGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAid2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTc0MjE3OEYyNDAwRDU0RDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtl
LWNyZWRlbnRpYWwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzRGNTVEMDIwNEQ0
NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1
cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0zNjAzLDcgKzM2MDAsNiBA
QAogCQkJCTU3OERBNDREMjNFQ0QyNjEwMDI0NjAxMCAvKiB3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtcGluLWludmFsaWQtZXJyb3ItcmV0cnkuaHRtbCAqLywKIAkJCQk1NzBE
MjZGQjIzQzNGODY1MDBENUNGNjcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24t
aGlkLXBpbi5odG1sICovLAogCQkJCTU3NjYzREVCMjM0RjFGODAwMEU4NUUwOSAvKiB3ZWItYXV0
aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQuaHRtbCAqLywKLQkJCQk1NzQyMTc4QjI0MDBD
RDJEMDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbGEuaHRtbCAq
LywKIAkJCQk1Nzk4MzM3QjIzNUVCNjVDMDA4RTU1NDcgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24tbmZjLW11bHRpcGxlLXRhZ3MuaHRtbCAqLywKIAkJCQk1NzY2M0RFOTIzNEVB
NjBCMDBFODVFMDkgLyogd2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLmh0bWwg
Ki8sCiAJCQkJNTc3NDU0RDEyMzU5QkFENTAwOEUxRUQ3IC8qIHdlYi1hdXRoZW50aWNhdGlvbi1n
ZXQtYXNzZXJ0aW9uLXUyZi1uby1jcmVkZW50aWFscy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGYyZmI0NTI4MDAyNGIwZGI0MWVjMjc2MDU2MDFjN2Ix
MzJmNTJlZTYuLmMwNjc0MjAzMGU3NmY3MDg4NWU3ZDM4NTkzMDhlODE4ZmRhMjc0ZmIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGlj
IGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZUxBRXJyb3IgPSBmYWxzZTsKIHN0YXRp
YyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4Y2x1ZGVDcmVkZW50aWFsc01h
dGNoZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVM
QU5vQ3JlZGVudGlhbCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ViQXV0aGVudGljYXRpb25QYW5l
bENhbmNlbEltbWVkaWF0ZWx5ID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsVmVyaWZ5VXNlciA9IGZhbHNlOworc3RhdGljIF9XS0xvY2FsQXV0aGVudGljYXRvclBv
bGljeSBsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xp
Y3lEaXNhbGxvdzsKIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRpb25QYW5lbFBpbjsKIHN0
YXRpYyBCT09MIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwogc3Rh
dGljIFN0cmluZyB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KQEAgLTE1MSwxMSArMTUxLDkg
QEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlOihOU0FycmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25z
ZXNbaW5kZXhdKTsKIH0KIAotLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCAqKXBhbmVsIHZlcmlmeVVzZXJXaXRoQWNjZXNzQ29udHJvbDooU2VjQWNjZXNzQ29udHJvbFJl
ZilhY2Nlc3NDb250cm9sIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShMQUNvbnRleHQgKikp
Y29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xpY3kpKWNv
bXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIg
PSB0cnVlOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tMQUNvbnRleHQgYWxsb2NdIGlu
aXRdKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0LmdldCgpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpOwogfQogCiBAZW5kCkBAIC0zMDAs
MjQgKzI5OCwxOCBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGljYXRpb25Q
YW5lbENhbmNlbEltbWVkaWF0ZWx5ID0gZmFsc2U7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5l
bFBpbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbE51bGxVc2Vy
SGFuZGxlID0gTk87Ci0gICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVzZXIgPSBmYWxz
ZTsKKyAgICBsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQ
b2xpY3lEaXNhbGxvdzsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tQYW5lbChfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICpwYW5lbCwgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlELCBOU0FycmF5ICp0
cmFuc3BvcnRzLCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUgdHlwZSkKIHsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEocGFuZWwucmVseWluZ1BhcnR5SUQsIHJlbHlpbmdQYXJ0eUlEKTsKIAotICAgIC8v
IEJydXRlIGZvcmNlIGdpdmVuIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGFycmF5IGlzIDQuCi0g
ICAgYXV0byAqdGhlVHJhbnNwb3J0cyA9IHBhbmVsLnRyYW5zcG9ydHM7Ci0gICAgRVhQRUNUX0VR
KHRoZVRyYW5zcG9ydHMuY291bnQsIHRyYW5zcG9ydHMuY291bnQpOworICAgIEVYUEVDVF9FUShw
YW5lbC50cmFuc3BvcnRzLmNvdW50LCB0cmFuc3BvcnRzLmNvdW50KTsKICAgICBzaXplX3QgY291
bnQgPSAwOwogICAgIGZvciAoTlNOdW1iZXIgKnRyYW5zcG9ydCA6IHRyYW5zcG9ydHMpIHsKLSAg
ICAgICAgZm9yIChOU051bWJlciAqdGhlVHJhbnNwb3J0IDogdGhlVHJhbnNwb3J0cykgewotICAg
ICAgICAgICAgaWYgKHRyYW5zcG9ydCA9PSB0aGVUcmFuc3BvcnQpIHsKLSAgICAgICAgICAgICAg
ICBjb3VudCsrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgICAgIGlmIChbcGFuZWwudHJhbnNwb3J0cyBjb250YWluc09iamVjdDp0cmFuc3Bv
cnRdKQorICAgICAgICAgICAgY291bnQrKzsKICAgICB9CiAgICAgRVhQRUNUX0VRKGNvdW50LCB0
cmFuc3BvcnRzLmNvdW50KTsKIApAQCAtMTI1OSwxMSArMTI1MSwxMCBAQCBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxOdWxsRGVsZWdhdGUpCiAgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKLSAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKLSAgICBjbGVhblVwS2V5Y2hh
aW4oIiIpOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiRGlzYWxsb3cgbG9jYWwgYXV0
aGVudGljYXRvci4iXTsKIH0KIAotVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VD
cmVkZW50aWFsKQorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQU1ha2VDcmVkZW50aWFs
RGlzYWxsb3dMb2NhbEF1dGhlbnRpY2F0b3IpCiB7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0xMjc3
LDE1ICsxMjY4LDEzIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVu
dGlhbCkKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVS
TC5nZXQoKV1dOwotICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFZlcmlmeVVz
ZXIpOwotICAgIGNoZWNrUGFuZWwoW2RlbGVnYXRlIHBhbmVsXSwgQCIiLCBAW2Fkb3B0TlMoW1tO
U051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25UcmFuc3BvcnRV
U0JdKS5nZXQoKSwgYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludDpfV0tXZWJB
dXRoZW50aWNhdGlvblRyYW5zcG9ydEludGVybmFsXSkuZ2V0KCldLCBfV0tXZWJBdXRoZW50aWNh
dGlvblR5cGVDcmVhdGUpOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVk
ISJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiRGlzYWxsb3cgbG9jYWwgYXV0aGVu
dGljYXRvci4iXTsKIH0KIAotVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2Vy
dGlvbikKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbEFsbG93
TG9jYWxBdXRoZW50aWNhdG9yKQogewogICAgIHJlc2V0KCk7Ci0gICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKICAgICBhdXRvICpj
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMi
IGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOndlYkF1dGhlbnRp
Y2F0aW9uRXhwZXJpbWVudGFsRmVhdHVyZSgpXTsKQEAgLTEyOTUsMTEgKzEyODQsMTAgQEAgVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlvbikKICAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwog
Ci0gICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFz
ZTY0LCAiIiwgdGVzdFVzZXJoYW5kbGVCYXNlNjQpKTsKKyAgICBsb2NhbEF1dGhlbnRpY2F0b3JQ
b2xpY3kgPSBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3lBbGxvdzsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
LSAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxWZXJpZnlVc2VyKTsKLSAgICBj
aGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIgYWxs
b2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0KCks
IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRp
b25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlR2V0
KTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKKyAgICBjaGVj
a1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0KCksIGFk
b3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGljYXRpb25U
cmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlQ3JlYXRl
KTsKICAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWxhLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3dlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWxhLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVmYTNjNWJhNDRiMDJmYjEwNTI5ZDAxNGRmNWRlNjQyOGQ0OTgwYmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS93ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1s
YS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPGlucHV0IHR5cGU9InRleHQi
IGlkPSJpbnB1dCI+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxz
ZSB9IH0pOwotICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQu
Zm9jdXMoKTsgfSk7Ci0gICAgfQotCi0gICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgcHVi
bGljS2V5OiB7Ci0gICAgICAgICAgICBjaGFsbGVuZ2U6IG5ldyBVaW50OEFycmF5KDE2KSwKLSAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwMAotICAgICAgICB9Ci0gICAgfTsKLQotICAgIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAg
Ly8gY29uc29sZS5sb2coIlN1Y2NlZWRlZCEiKTsKLSAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIlN1Y2NlZWRlZCEiKTsKLSAgICB9
LCBlcnJvciA9PiB7Ci0gICAgICAgIC8vIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpOwotICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZShlcnJvci5tZXNzYWdlKTsKLSAgICB9KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCAw
ZjY5ZDBiOTE1YTc4MjJlZWFlZTRmZjVhZmNhMjgzOGFkYzVlOTNkLi4xY2FmZmQ3YzJlZmYwZDc3
MWJjNDQ4N2QxNTc1ZGIwN2QxZWE2ODVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0
cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAtOTgsNyArOTgsNyBA
QAogICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29u
c2VudC4iKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0
IHZlcmlmeSB1c2VyLiIpOwogICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKICAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxv
Y2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCAzZTRmNDk5MDZj
MzJlNGU4OTUyNThmNjY4M2EwZmJlYTQ5OTc3OWVmLi5mMjdmNzExOTIyN2U4MGUzNjAxMDgzYzJj
MGI1ZTQwOTA3ZDhlMjYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbApAQCAtNTUsNyArNTUsNyBAQAogCiAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRU
ZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJh
c2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCBnZXQg
dXNlciBjb25zZW50LiIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiQ291bGRuJ3QgdmVyaWZ5IHVzZXIuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CiAgICAgICAg
ICAgICB9KTsK
</data>
<flag name="review"
          id="407876"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="407878"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>