<?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>207351</bug_id>
          
          <creation_ts>2020-02-06 13:55:46 -0800</creation_ts>
          <short_desc>Cleanup and promote WKContentWorld and its clients in WKWebView</short_desc>
          <delta_ts>2020-02-11 09:48:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1615780</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-06 13:55:46 -0800</bug_when>
    <thetext>Cleanup and promote WKContentWorld and its clients in WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615793</commentid>
    <comment_count>1</comment_count>
      <attachid>389993</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-06 14:06:36 -0800</bug_when>
    <thetext>Created attachment 389993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615803</commentid>
    <comment_count>2</comment_count>
      <attachid>389993</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-06 14:16:01 -0800</bug_when>
    <thetext>Comment on attachment 389993
Patch

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

&gt; Source/WebKit/Shared/Cocoa/APIObject.mm:-351
&gt; -        wrapper = [_WKContentWorld alloc];

There were no clients of this old class, right?  Otherwise we would need a wrapper to keep binary compatibility.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:828
&gt; +- (void)callAsyncJavaScript:(NSString *)javaScriptString arguments:(NSDictionary&lt;NSString *, id&gt; *)arguments inContentWorld:(WKContentWorld *)contentWorld completionHandler:(void (^)(id, NSError *error))completionHandler

The JavaScript is not necessarily Async.  Could we remove that?
If not, do we want to write out Asynchronous?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615808</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-06 14:21:44 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 389993 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389993&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/APIObject.mm:-351
&gt; &gt; -        wrapper = [_WKContentWorld alloc];
&gt; 
&gt; There were no clients of this old class, right?  Otherwise we would need a
&gt; wrapper to keep binary compatibility.

No clients, correct.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:828
&gt; &gt; +- (void)callAsyncJavaScript:(NSString *)javaScriptString arguments:(NSDictionary&lt;NSString *, id&gt; *)arguments inContentWorld:(WKContentWorld *)contentWorld completionHandler:(void (^)(id, NSError *error))completionHandler
&gt; 
&gt; The JavaScript is not necessarily Async.  Could we remove that?
&gt; If not, do we want to write out Asynchronous?

This name is what internal discussion settled on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615981</commentid>
    <comment_count>4</comment_count>
      <attachid>389993</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 18:26:41 -0800</bug_when>
    <thetext>Comment on attachment 389993
Patch

Clearing flags on attachment: 389993

Committed r255998: &lt;https://trac.webkit.org/changeset/255998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615982</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 18:26:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615983</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-06 18:27:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/59247330&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616243</commentid>
    <comment_count>7</comment_count>
      <attachid>389993</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-07 10:39:08 -0800</bug_when>
    <thetext>Comment on attachment 389993
Patch

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

&gt; Source/WebKit/ChangeLog:17
&gt; +        * UIProcess/API/Cocoa/WKContentWorld.h: Renamed from Source/WebKit/UIProcess/API/Cocoa/_WKContentWorld.h.

You should add this to WebKit.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616312</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-07 12:55:29 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616313</commentid>
    <comment_count>9</comment_count>
      <attachid>390116</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-07 12:55:30 -0800</bug_when>
    <thetext>Created attachment 390116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616362</commentid>
    <comment_count>10</comment_count>
      <attachid>390116</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-07 14:18:46 -0800</bug_when>
    <thetext>Comment on attachment 390116
Patch

Rejecting attachment 390116 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-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 390116, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebKit/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: https://webkit-queues.webkit.org/results/13318758</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617440</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-11 09:48:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/r256312</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389993</attachid>
            <date>2020-02-06 14:06:36 -0800</date>
            <delta_ts>2020-02-07 12:56:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207351-20200206140636.patch</filename>
            <type>text/plain</type>
            <size>65577</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmNWU3ZWE1NDIxNTMwMWZk
NGM3NGFiZGRiMTVhNGY2ZmI5ZTM1ZTEuLjFiZWNlNGUxNTdkZjg1NGMxNDc0MzE2ZjY2MzE4YWE2
Y2JiMmQ4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjAtMDItMDYgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgYW5kIHByb21vdGUg
V0tDb250ZW50V29ybGQgYW5kIGl0cyBjbGllbnRzIGluIFdLV2ViVmlldy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgYW5kIHVwZGF0ZWQg
Y29tbWVudHMuCisgICAgICAgIAorICAgICAgICBBUEkgdGVzdHMgdXBkYXRlZC4KKworICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3
T2JqZWN0KToKKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkLmguCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQubW0uCisgICAgICAgICgr
W1dLQ29udGVudFdvcmxkIHBhZ2VXb3JsZF0pOgorICAgICAgICAoK1tXS0NvbnRlbnRXb3JsZCBk
ZWZhdWx0Q2xpZW50V29ybGRdKToKKyAgICAgICAgKCtbV0tDb250ZW50V29ybGQgd29ybGRXaXRo
TmFtZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50V29ybGQgZGVhbGxvY10pOgorICAgICAgICAo
LVtXS0NvbnRlbnRXb3JsZCBuYW1lXSk6CisgICAgICAgICgtW1dLQ29udGVudFdvcmxkIF9hcGlP
YmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkSW50
ZXJuYWwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tDb250ZW50V29ybGRJbnRlcm5hbC5oLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDppbkNvbnRl
bnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNhbGxB
c3luY0phdmFTY3JpcHQ6YXJndW1lbnRzOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVu
Y3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOmlu
V29ybGQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91
dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmluV29ybGQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVK
YXZhU2NyaXB0OmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0wNiAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50IG5hdmlnYXRpbmcg
dG9wIGxldmVsIGZyYW1lcyB0byBEYXRhIFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQppbmRleCA0NGJkNDkxNTNlNzJmNmI0YzRmZjBhMzZlMWM2M2Q1NDgxZWM2ZmZm
Li5hMGRlOTY1NjMyMDQ3YzJlZWRjMTA4NzEwMTg2MTcyODE4NjJhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJX
S0Nvbm5lY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50UnVsZUxpc3RJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tDb250ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgiCisjaW1wb3J0
ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVu
dEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgpAQCAtNzEsNyArNzIsNiBAQAogI2ltcG9y
dCAiX1dLQXR0YWNobWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5o
IgotI2ltcG9ydCAiX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0N1c3Rv
bUhlYWRlckZpZWxkc0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tFeHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCIKQEAgLTM0OCw3ICsz
NDgsNyBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6Q29udGVudFdvcmxkOgotICAgICAgICB3
cmFwcGVyID0gW19XS0NvbnRlbnRXb3JsZCBhbGxvY107CisgICAgICAgIHdyYXBwZXIgPSBbV0tD
b250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6VXNl
ckNvbnRlbnRXb3JsZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlYWEwZDg0ZmE1Y2ZhNzQw
ZDI3Yjc4YjkwN2VjOTU2OTkzMWNiMGRjLi5lMWZjNmY3MzcyYjE2MDNlNWRkMjVlYjBhNGE2MDFj
NmM5YmUyM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yOTUsNiArMjk1LDcgQEAgVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxl
TGlzdC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCitV
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9y
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmQxMDQ1ODFkY2E0N2NhNzI5YWM2YjExOThhNzUzYmJkMzRmZWVhOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3Js
ZC5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3Vu
ZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qISBAYWJzdHJhY3QgQSBX
S0NvbnRlbnRXb3JsZCBvYmplY3QgYWxsb3dzIHlvdSB0byBzZXBlcmF0ZSB5b3VyIGFwcGxpY2F0
aW9uJ3MgaW50ZXJhY3Rpb24gd2l0aCBjb250ZW50IGRpc3BsYXllZCBpbiBhIFdLV2ViVmlldyBp
bnRvIGRpZmZlcmVudCByb2xlcyB0aGF0IGNhbm5vdCBpbnRlcmZlcmUgd2l0aCBvbmUgYW5vdGhl
ci4KK0BkaXNjdXNzaW9uIFdLQ29udGVudFdvcmxkIG9iamVjdHMgc2hvdWxkIGJlIHRyZWF0ZWQg
YXMgbmFtZXNwYWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGtlZXBpbmcgeW91ciBhcHBsaWNhdGlv
bidzIHdlYiBjb250ZW50IGVudmlyb25tZW50IHNlcGFyYXRlIGZyb20gdGhlIGVudmlyb25tZW50
IG9mIHRoZSB3ZWIgcGFnZSBjb250ZW50IGl0c2VsZiwKK2FzIHdlbGwgYXMgbWFuYWdpbmcgbXVs
dGlwbGUgZGlmZmVyZW50IGVudmlyb25tZW50cyB3aXRoaW4geW91ciBvd24gYXBwbGljYXRpb24u
CitGb3IgZXhhbXBsZToKKy0gSWYgeW91IGhhdmUgY29tcGxleCBzY3JpcHRpbmcgbG9naWMgdG8g
YnJpZGdlIHlvdXIgd2ViIGNvbnRlbnQgdG8geW91ciBhcHBsaWNhdGlvbiBidXQgeW91ciB3ZWIg
Y29udGVudCBhbHNvIGhhcyBjb21wbGV4IHNjcmlwdGluZyBsaWJyYXJpZXMgb2YgaXRzIG93biwK
KyAgeW91IGF2b2lkIHBvc3NpYmxlIGNvbmZsaWN0cyBieSB1c2luZyBhIGNsaWVudCBXS0NvbnRl
bnRXb3JsZC4KKy0gSWYgeW91IGFyZSB3cml0aW5nIGEgZ2VuZXJhbCBwdXJwb3NlIHdlYiBicm93
c2VyIHRoYXQgc3VwcG9ydHMgSmF2YVNjcmlwdCBleHRlbnNpb25zLCB5b3Ugd291bGQgdXNlIGEg
ZGlmZmVyZW50IGNsaWVudCBXS0NvbnRlbnRXb3JsZCBmb3IgZWFjaCBleHRlbnNpb24uCisKK1Np
bmNlIGEgV0tDb250ZW50V29ybGQgb2JqZWN0IGlzIGEgbmFtZXNwYWNlIGl0IGRvZXMgbm90IGNv
bnRhaW4gYW55IGRhdGEgaXRzZWxmLgorRm9yIGV4YW1wbGU6CistIElmIHlvdSBzdG9yZSBhIHZh
cmlhYmxlIGluIEphdmFTY3JpcHQgaW4gdGhlIHNjb3BlIG9mIGEgcGFydGljdWxhciBXS0NvbnRl
bnRXb3JsZCB3aGlsZSB2aWV3aW5nIGEgcGFydGljdWxhciB3ZWIgcGFnZSBkb2N1bWVudCwgYWZ0
ZXIgbmF2aWdhdGluZyB0byBhIG5ldyBkb2N1bWVudCB0aGF0IHZhcmlhYmxlIHdpbGwgYmUgZ29u
ZS4KKy0gSWYgeW91IHN0b3JlIGEgdmFyaWFibGUgaW4gSmF2YVNjcmlwdCBpbiB0aGUgc2NvcGUg
b2YgYSBwYXJ0aWN1bGFyIFdLQ29udGVudFdvcmxkIGluIG9uZSBXS1dlYlZpZXcsIHRoYXQgdmFy
aWFibGUgd2lsbCBub3QgZXhpc3QgaW4gdGhlIHNhbWUgd29ybGQgaW4gYW5vdGhlciBXS1dlYlZp
ZXcuCisqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpCitAaW50ZXJmYWNlIFdLQ29udGVudFdvcmxkIDogTlNPYmplY3QKKworKyAoaW5zdGFu
Y2V0eXBlKW5ldyBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZB
SUxBQkxFOworCisvKiEgQGFic3RyYWN0IFJldHJpZXZlIHRoZSBtYWluIHdvcmxkIHRoYXQgcGFn
ZSBjb250ZW50IGl0c2VsZiB1c2VzLgorQGRpc2N1c3Npb24gV2hlbiBpbnRlcmFjdGluZyB3aXRo
IHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2luZyB0aGUgcGFnZSBjb250ZW50IHdvcmxk
IHlvdSBjYW4gZGlzcnVwdCB0aGUgb3BlcmF0aW9uIG9mIHBhZ2UgY29udGVudCAoZS5nLiBieSBj
b25mbGljdGluZyB3aXRoIHZhcmlhYmxlIG5hbWVzIGluIEphdmFTY3JpcHQgc2V0IGJ5IHRoZSB3
ZWIgcGFnZSBjb250ZW50IGl0c2VsZikuCisqLworQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWlj
LCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKnBhZ2VXb3JsZDsKKworLyohIEBhYnN0cmFjdCBS
ZXRyaWV2ZSB0aGUgZGVmYXVsdCB3b3JsZCBmb3IgQVBJIGNsaWVudCB1c2UuCitAZGlzY3Vzc2lv
biBXaGVuIHVzaW5nIGEgY29udGVudCB3b3JsZCBkaWZmZXJlbnQgZnJvbSB0aGUgcGFnZSBjb250
ZW50IHdvcmxkIHlvdSBjYW4gc3RpbGwgbWFuaXB1bGF0ZSB0aGUgRE9NIGFuZCBidWlsdC1pbiBE
T00gQVBJcyBidXQgd2l0aG91dCBjb25mbGljdGluZyB3aXRoIG90aGVyIGFzcGVjdHMgb2YgdGhl
IHBhZ2UgY29udGVudCAoZS5nLiBKYXZhU2NyaXB0IGZyb20gdGhlIHdlYiBwYWdlIGNvbnRlbnQg
aXRzZWxmKQorUmVwZWF0ZWQgY2FsbHMgd2lsbCByZXRyaWV2ZSB0aGUgc2FtZSBXS0NvbnRlbnRX
b3JsZCBpbnN0YW5jZS4KKyovCitAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5
KSBXS0NvbnRlbnRXb3JsZCAqZGVmYXVsdENsaWVudFdvcmxkOworCisvKiEgQGFic3RyYWN0IFJl
dHJpZXZlcyBhIG5hbWVkIGNvbnRlbnQgd29ybGQgZm9yIEFQSSBjbGllbnQgdXNlLgorQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIFdLQ29udGVudFdvcmxkIHRvIHJldHJpZXZlLgorQGRpc2N1
c3Npb24gV2hlbiB1c2luZyBhIGNvbnRlbnQgd29ybGQgZGlmZmVyZW50IGZyb20gdGhlIHBhZ2Ug
Y29udGVudCB3b3JsZCB5b3UgY2FuIHN0aWxsIG1hbmlwdWxhdGUgdGhlIERPTSBhbmQgYnVpbHQt
aW4gRE9NIEFQSXMgYnV0IHdpdGhvdXQgY29uZmxpY3Rpbmcgd2l0aCBvdGhlciBhc3BlY3RzIG9m
IHRoZSBwYWdlIGNvbnRlbnQgKGUuZy4gSmF2YVNjcmlwdCBmcm9tIHRoZSB3ZWIgcGFnZSBjb250
ZW50IGl0c2VsZikKK0FzIGxvbmcgYXMgYSBwYXJ0aWN1bGFyIG5hbWVkIFdLQ29udGVudFdvcmxk
IGluc3RhbmNlIGhhcyBub3QgYmVlbiBkZWFsbG9jYXRlZCwgcmVwZWF0ZWQgY2FsbHMgd2l0aCB0
aGUgc2FtZSBuYW1lIHdpbGwgcmV0cmlldmUgdGhhdCBzYW1lIFdLQ29udGVudFdvcmxkIGluc3Rh
bmNlLgorRWFjaCBuYW1lZCBjb250ZW50IHdvcmxkIGlzIGRpc3RpbmN0IGZyb20gYWxsIG90aGVy
IG5hbWVkIGNvbnRlbnQgd29ybGRzLCB0aGUgZGVmYXVsdENsaWVudFdvcmxkLCBhbmQgdGhlIHBh
Z2VXb3JsZC4KK1RoZSBuYW1lIGNhbiBiZSB1c2VkIHRvIGtlZXAgZGlzdGluY3Qgd29ybGRzIGlk
ZW50aWZpYWJsZSBhbnl3aGVyZSBhIHdvcmxkIG1pZ2h0IGJlIHN1cmZhY2VkIGluIGEgdXNlciBp
bnRlcmZhY2UuIEZvciBleGFtcGxlLCB0aGUgZGlmZmVyZW50IHdvcmxkcyB1c2VkIGluIHlvdXIg
YXBwbGljYXRpb24gd2lsbCBiZSBzdXJmYWNlZCBieSBuYW1lIGluIHRoZSBXZWJLaXQgV2ViIElu
c3BlY3Rvci4KKyovCisrIChXS0NvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6KE5TU3RyaW5n
ICopbmFtZSBOU19SRUZJTkVEX0ZPUl9TV0lGVDsKKworLyohIEBhYnN0cmFjdCBUaGUgbmFtZSBv
ZiB0aGUgV0tDb250ZW50V29ybGQKK0BkaXNjdXNzaW9uIFRoZSBwYWdlV29ybGQgYW5kIGRlZmF1
bHRDbGllbnRXb3JsZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGEgbmlsIG5hbWUuCitBbGwgb3RoZXIg
aW5zdGFuY2VzIHdpbGwgaGF2ZSB0aGUgbm9uLW5pbCBuYW1lIHRoZXkgd2VyZSBhY2Nlc3NlZCBi
eS4KKyovCitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U1N0cmluZyAqbmFtZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xOTE1Mjg1OWE4MjQ4OGU0MjFhNzgzZTcyOTY5ODVkY2I0MjFkODgxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdv
cmxkLm1tCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIFdL
Q29udGVudFdvcmxkCisKKysgKFdLQ29udGVudFdvcmxkICopcGFnZVdvcmxkCit7CisgICAgcmV0
dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7Cit9CisK
KysgKFdLQ29udGVudFdvcmxkICopZGVmYXVsdENsaWVudFdvcmxkCit7CisgICAgcmV0dXJuIHdy
YXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OmRlZmF1bHRDbGllbnRXb3JsZCgpKTsKK30KKworKyAo
V0tDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBy
ZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRXaXRoTmFtZShuYW1l
KSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb250ZW50V29ybGQtPn5Db250ZW50
V29ybGQoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1l
Cit7CisgICAgaWYgKF9jb250ZW50V29ybGQtPm5hbWUoKS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIHJldHVybiBfY29udGVudFdvcmxkLT5uYW1lKCk7Cit9CisKKyNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2NvbnRlbnRXb3JsZDsKK30KKworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdv
cmxkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRl
bnRXb3JsZEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQyY2FiZTk1N2NjYThkN2ZhNjBjY2Q0YTdj
ZWQ3ZGYwMmZjYjNhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZEludGVybmFsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgIldLQ29udGVudFdvcmxkLmgiCisKKyNpbXBvcnQgIkFQSUNvbnRl
bnRXb3JsZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBl
clRyYWl0czxBUEk6OkNvbnRlbnRXb3JsZD4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdL
Q29udGVudFdvcmxkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLQ29udGVudFdvcmxkICgpIDxX
S09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpDb250ZW50
V29ybGQ+IF9jb250ZW50V29ybGQ7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNmQyZGIwZDRlZTU5OGIyNzY2YzZjMDljNWQ1
OGYzYjViZGYyMTFmNy4uMDJlYjI0YTE0ZDcwZGRhNTMxMmZjODg1ZjVmZjkwODViM2M3ZjhkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAt
MzUsNiArMzUsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tCYWNrRm9y
d2FyZExpc3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOworQGNsYXNzIFdLQ29udGVu
dFdvcmxkOwogQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tGaW5kUmVzdWx0
OwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKQEAgLTIyMiw2ICsyMjMsNzIgQEAgV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAqLwogLSAodm9pZClldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXiBfTnVsbGFibGUpKF9OdWxsYWJsZSBpZCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikp
Y29tcGxldGlvbkhhbmRsZXI7CiAKKy8qIEBhYnN0cmFjdCBFdmFsdWF0ZXMgdGhlIGdpdmVuIEph
dmFTY3JpcHQgc3RyaW5nLgorIEBwYXJhbSBqYXZhU2NyaXB0U3RyaW5nIFRoZSBKYXZhU2NyaXB0
IHN0cmluZyB0byBldmFsdWF0ZS4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0NvbnRlbnRX
b3JsZCBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBzdHJpbmcuCisgQHBhcmFt
IGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gc2NyaXB0IGV2YWx1YXRp
b24gY29tcGxldGVzIG9yIGZhaWxzLgorIEBkaXNjdXNzaW9uIFRoZSBjb21wbGV0aW9uSGFuZGxl
ciBpcyBwYXNzZWQgdGhlIHJlc3VsdCBvZiB0aGUgc2NyaXB0IGV2YWx1YXRpb24gb3IgYW4gZXJy
b3IuCisgTm8gbWF0dGVyIHdoaWNoIFdLQ29udGVudFdvcmxkIHlvdSB1c2UgdG8gZXZhbHVhdGUg
eW91ciBKYXZhU2NyaXB0IHN0cmluZywgeW91IGNhbiBtYWtlIGNoYW5nZXMgdG8gdGhlIHVuZGVy
bHlpbmcgd2ViIGNvbnRlbnQuIChlLmcuIHRoZSBEb2N1bWVudCBhbmQgaXRzIERPTSBzdHJ1Y3R1
cmUpCisgU3VjaCBjaGFuZ2VzIHdpbGwgYmUgdmlzaWJsZSB0byBzY3JpcHQgZXhlY3V0aW5nIGlu
IGFsbCBXS0NvbnRlbnRXb3JsZHMuCisgRXZhbHVhdGluZyB5b3VyIEphdmFTY3JpcHQgc3RyaW5n
IGNhbiBsZWF2ZSBiZWhpbmQgb3RoZXIgY2hhbmdlcyB0byBnbG9iYWwgc3RhdGUgdmlzaWJpbGUg
dG8gSmF2YVNjcmlwdC4gKGUuZy4gYHdpbmRvdy5teVZhcmlhYmxlID0gMTtgKQorIFRob3NlIGNo
YW5nZXMgd2lsbCBvbmx5IGJlIHZpc2liaWxlIHRvIHNjcmlwdHMgZXhlY3V0ZWQgaW4gdGhlIHNh
bWUgV0tDb250ZW50V29ybGQuCisgZXZhbHVhdGVKYXZhU2NyaXB0OiBpcyBhIGdyZWF0IHdheSB0
byBzZXQgdXAgZ2xvYmFsIHN0YXRlIGZvciBmdXR1cmUgSmF2YVNjcmlwdCBleGVjdXRpb24gaW4g
YSBnaXZlbiB3b3JsZC4gKGUuZy4gSW1wb3J0aW5nIGxpYnJhcmllcy91dGlsaXRpZXMgdGhhdCBm
dXR1cmUgSmF2YVNjcmlwdCBleGVjdXRpb24gd2lsbCByZWx5IG9uKQorIE9uY2UgeW91ciBnbG9i
YWwgc3RhdGUgaXMgc2V0IHVwLCBjb25zaWRlciB1c2luZyBjYWxsQXN5bmNKYXZhU2NyaXB0RnVu
Y3Rpb246IGZvciBtb3JlIGZsZXhpYmxlIGludGVyYWN0aW9uIHdpdGggdGhlIEphdmFTY3JpcHQg
cHJvZ3JhbW1pbmcgbW9kZWwuCisqLworLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3Ry
aW5nICopamF2YVNjcmlwdFN0cmluZyBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKilj
b250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4gX051bGxhYmxlKShfTnVsbGFi
bGUgaWQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBh
YnN0cmFjdCBDYWxscyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBzdHJpbmcgYXMgYW4gYXN5bmMgSmF2
YVNjcmlwdCBmdW5jdGlvbiwgcGFzc2luZyB0aGUgZ2l2ZW4gbmFtZWQgYXJndW1lbnRzIHRvIHRo
YXQgZnVuY3Rpb24uCisgQHBhcmFtIGZ1bmN0aW9uQm9keSBUaGUgSmF2YVNjcmlwdCBzdHJpbmcg
dG8gdXNlIGFzIHRoZSBmdW5jdGlvbiBib2R5LgorIEBwYXJhbSBhcmd1bWVudHMgQSBkaWN0aW9u
YXJ5IHJlcHJlc2VudGluZyB0aGUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rp
b24gY2FsbC4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0NvbnRlbnRXb3JsZCBpbiB3aGlj
aCB0byBjYWxsIHRoZSBKYXZhU2NyaXB0IGZ1bmN0aW9uLgorIEBwYXJhbSBjb21wbGV0aW9uSGFu
ZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0
aW9uIGNhbGwsIG9yIHdpdGggdGhlIGFzeW5jaHJvbm91cyByZXNvbHV0aW9uIG9mIHRoZSBmdW5j
dGlvbidzIHJldHVybiB2YWx1ZS4KKyBAZGlzY3Vzc2lvbiBUaGUgZnVuY3Rpb25Cb2R5IHN0cmlu
ZyBpcyB0cmVhdGVkIGFzIGFuIGFub255bW91cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIGJvZHkgdGhh
dCBjYW4gYmUgY2FsbGVkIHdpdGggbmFtZWQgYXJndW1lbnRzLgorIERvIG5vdCBmb3JtYXQgeW91
ciBzdHJpbmcgYXMgb25lIG9mIHRoZSB2YXJpYW50cyBvZiBmdW5jdGlvbiBjYWxsIGF2YWlsYWJs
ZSBpbiBKYXZhU2NyaXB0LgorIEluc3RlYWQgcGFzcyBpbiBhIEphdmFTY3JpcHQgc3RyaW5nIHJl
cHJlc2VudGluZyB0aGUgZnVuY3Rpb24gYm9keSwgZm9ybWF0dGVkIGZvciBldmFsdWF0aW9uLgor
IEZvciBleGFtcGxlIGRvIG5vdCBwYXNzIGluIHRoZSBzdHJpbmc6CisgICAgIGZ1bmN0aW9uKHgs
IHksIHopIHsgcmV0dXJuIHggPyB5IDogejsgfQorIEluc3RlYWQgcGFzcyBpbiB0aGUgc3RyaW5n
OgorICAgICByZXR1cm4geCA/IHkgOiB6OworCisgVGhlIGFyZ3VtZW50cyBkaWN0aW9uYXJ5IHN1
cHBsaWVzIHRoZSB2YWx1ZXMgZm9yIHRob3NlIGFyZ3VtZW50cyB3aGljaCBhcmUgc2VyaWFsaXpl
ZCBpbnRvIEphdmFTY3JpcHQgZXF1aXZhbGVudHMuCisgRm9yIGV4YW1wbGU6CisgICAgIEB7IEAi
eCIgOiBAWUVTLCBAInkiIDogQDEsIEAieiIgOiBAImhlbGxvIHdvcmxkIiB9OworCisgQ29tYmlu
aW5nIHRoZSBhYm92ZSBhcmd1bWVudHMgZGljdGlvbmFyeSB3aXRoIHRoZSBhYm92ZSBmdW5jdGlv
bkJvZHkgc3RyaW5nLCBhIGZ1bmN0aW9uIHdpdGggdGhlIGFyZ3VtZW50cyBuYW1lZCAieCIsICJ5
IiwgYW5kICJ6IiBpcyBjYWxsZWQgd2l0aCB2YWx1ZXMgWUVTLCAxLCBhbmQgImhlbGxvIHdvcmxk
IiByZXNwZWN0aXZlbHkuCisKKyBBbGxvd2VkIGFyZ3VtZW50IHR5cGVzIGFyZToKKyBOU051bWJl
ciwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdWxsLgor
IEFueSBOU0FycmF5IG9yIE5TRGljdGlvbmFyeSBjb250YWluZXJzIGNhbiBvbmx5IGNvbnRhaW4g
b2JqZWN0cyBvZiB0aG9zZSB0eXBlcy4KKworIE5vIG1hdHRlciB3aGljaCBXS0NvbnRlbnRXb3Js
ZCB5b3UgdXNlIHRvIGNhbGwgeW91ciBKYXZhU2NyaXB0IGZ1bmN0aW9uLCB5b3UgY2FuIG1ha2Ug
Y2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyB3ZWIgY29udGVudC4gKGUuZy4gdGhlIERvY3VtZW50
IGFuZCBpdHMgRE9NIHN0cnVjdHVyZSkKKyBTdWNoIGNoYW5nZXMgd2lsbCBiZSB2aXNpYmxlIHRv
IHNjcmlwdCBleGVjdXRpbmcgaW4gYWxsIFdLQ29udGVudFdvcmxkcy4KKyBDYWxsaW5nIHlvdXIg
SmF2YVNjcmlwdCBmdW5jdGlvbiBjYW4gbGVhdmUgYmVoaW5kIG90aGVyIGNoYW5nZXMgdG8gZ2xv
YmFsIHN0YXRlIHZpc2liaWxlIHRvIEphdmFTY3JpcHQuIChlLmcuIGB3aW5kb3cubXlWYXJpYWJs
ZSA9IDE7YCkKKyBUaG9zZSBjaGFuZ2VzIHdpbGwgb25seSBiZSB2aXNpYmlsZSB0byBzY3JpcHRz
IGV4ZWN1dGVkIGluIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkLgorCisgWW91ciBjb21wbGV0aW9u
IGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgZXhwbGljaXQgcmV0dXJuIHZhbHVlIG9m
IHlvdXIgSmF2YVNjcmlwdCBmdW5jdGlvbi4KKyBJZiB5b3VyIEphdmFTY3JpcHQgZG9lcyBub3Qg
ZXhwbGljaXRseSByZXR1cm4gYW55IHZhbHVlLCB0aGF0IHVuZGVmaW5lZCByZXN1bHQgbWFuaWZl
c3RzIGFzIG5pbCBiZWluZyBwYXNzZWQgdG8geW91ciBjb21wbGV0aW9uIGhhbmRsZXIuCisgSWYg
eW91ciBKYXZhU2NyaXB0IHJldHVybnMgbnVsbCwgdGhhdCByZXN1bHQgbWFuaWZlc3RzIGFzIE5T
TnVsbCBiZWluZyBwYXNzZWQgdG8geW91ciBjb21wbGV0aW9uIGhhbmRsZXIuCisKKyBKYXZhU2Ny
aXB0IGhhcyB0aGUgY29uY2VwdCBvZiBhICJ0aGVuYWJsZSIgb2JqZWN0LCB3aGljaCBpcyBhbnkg
SmF2YVNjcmlwdCBvYmplY3QgdGhhdCBoYXMgYSBjYWxsYWJsZSAidGhlbiIgcHJvcGVydHkuCisg
VGhlIG1vc3Qgd2VsbCBrbm93biBleGFtcGxlIG9mIGEgInRoZW5hYmxlIiBvYmplY3QgaXMgYSBK
YXZhU2NyaXB0IHByb21pc2UuCisgSWYgeW91ciBKYXZhU2NyaXB0IHJldHVybnMgYSAidGhlbmFi
bGUiIG9iamVjdCBXZWJLaXQgd2lsbCBjYWxsICJ0aGVuIiBvbiB0aGUgcmVzdWx0aW5nIG9iamVj
dCBhbmQgd2FpdCBmb3IgaXQgdG8gYmUgcmVzb2x2ZWQuCisKKyBJZiB0aGUgb2JqZWN0IHJlc29s
dmVzIHN1Y2Nlc3NmdWxseSAoZS5nLiBDYWxscyB0aGUgImZ1bGZpbGwiIGZ1bmN0aW9uKSB5b3Vy
IGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQuCisgSWYg
dGhlIG9iamVjdCByZWplY3RzIChlLmcuIENhbGxzIHRoZSAicmVqZWN0IiBmdW5jdGlvbikgeW91
ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCBhIFdLRXJyb3JKYXZhU2Ny
aXB0QXN5bmNGdW5jdGlvblJlc3VsdFJlamVjdGVkIGVycm9yIGNvbnRhaW5pbmcgdGhlIHJlamVj
dCByZWFzb24gaW4gdGhlIHVzZXJJbmZvIGRpY3Rpb25hcnkuCisgSWYgdGhlIG9iamVjdCBpcyBn
YXJiYWdlIGNvbGxlY3RlZCBiZWZvcmUgaXQgaXMgcmVzb2x2ZWQsIHlvdXIgY29tcGxldGlvbiBo
YW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggYSBXS0Vycm9ySmF2YVNjcmlwdEFzeW5jRnVuY3Rp
b25SZXN1bHRVbnJlYWNoYWJsZSBlcnJvciBpbmRpY2F0aW5nIHRoYXQgaXQgd2lsbCBuZXZlciBi
ZSByZXNvbHZlZC4KKworIFNpbmNlIHRoZSBmdW5jdGlvbiBpcyBhIEphdmFTY3JpcHQgImFzeW5j
IiBmdW5jdGlvbiB5b3UgY2FuIHVzZSBKYXZhU2NyaXB0ICJhd2FpdCIgb24gdGhlbmFibGUgb2Jq
ZWN0cyBpbnNpZGUgeW91ciBmdW5jdGlvbiBib2R5LgorIEZvciBleGFtcGxlOgorICAgICB2YXIg
cCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChmKSB7CisgICAgICAgICB3aW5kb3cuc2V0VGltZW91
dCgiZig0MikiLCAxMDAwKTsKKyAgICAgfSk7CisgICAgIGF3YWl0IHA7CisgICAgIHJldHVybiBw
OworCisgVGhlIGFib3ZlIGZ1bmN0aW9uIHRleHQgd2lsbCBjcmVhdGUgYSBwcm9taXNlIHRoYXQg
d2lsbCBmdWxmdWxsIHdpdGggdGhlIHZhbHVlIDQyIGFmdGVyIGEgb25lIHNlY29uZCBkZWxheSwg
d2FpdCBmb3IgaXQgdG8gcmVzb2x2ZSwgdGhlbiByZXR1cm4gdGhlIGZ1bGZpbGxtZW50IHZhbHVl
IG9mIDQyLgorKi8KKy0gKHZvaWQpY2FsbEFzeW5jSmF2YVNjcmlwdDooTlNTdHJpbmcgKilmdW5j
dGlvbkJvZHkgYXJndW1lbnRzOihudWxsYWJsZSBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+
ICopYXJndW1lbnRzIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3Js
ZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiBfTnVsbGFibGUpKF9OdWxsYWJsZSBpZCwgTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIgTlNfUkVGSU5FRF9GT1Jf
U1dJRlQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogLyohIEBhYnN0cmFjdCBHZXQgYSBzbmFwc2hvdCBmb3IgdGhlIHZpc2libGUgdmlld3Bv
cnQgb2YgV0tXZWJWaWV3LgogIEBwYXJhbSBzbmFwc2hvdENvbmZpZ3VyYXRpb24gQW4gb2JqZWN0
IHRoYXQgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3QgaXMgY29uZmlndXJlZC4KICBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc25hcHNob3QgaXMg
cmVhZHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCA0ZmE3NDY2ZmVkNDJiNjFiZTIyNGI4YmQyYmFhYTBjYzIzNTkyNGU4Li5hYTkwMDJl
NTYzMDg1YjE5ZGE4YjhkODVjODc2ZGVhMzdiZmYxY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBv
cnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRM
aXN0SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVy
bmFsLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vy
cm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQg
IldLRmluZFJlc3VsdEludGVybmFsLmgiCkBAIC05MSw3ICs5Miw2IEBACiAjaW1wb3J0ICJXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0
ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tDb250ZW50
V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCkBAIC04MTcsNyArODE3LDE3IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFj
a0Vycm9yQ29kZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiAKIC0gKHZvaWQp
ZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5j
dGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29u
dGVudFdvcmxkXTsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJp
bmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6
WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIGluV29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkXTsKK30KKworLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3Ry
aW5nICopamF2YVNjcmlwdFN0cmluZyBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKilj
b250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOmNv
bnRlbnRXb3JsZF07Cit9CisKKy0gKHZvaWQpY2FsbEFzeW5jSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIGFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlk
PiAqKWFyZ3VtZW50cyBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRT
dHJpbmcgYXNBc3luY0Z1bmN0aW9uOllFUyB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVz
ZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxk
OmNvbnRlbnRXb3JsZF07CiB9CiAKIHN0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJn
dW1lbnQpCkBAIC04NTQsNyArODY0LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChp
ZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9P
TClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyIGluV29ybGQ6KF9XS0NvbnRlbnRXb3JsZCAqKXdvcmxkCistICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBpZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlciBpbldvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7CiAgICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCkBAIC0xNTA3LDE2ICsxNTE3
LDYgQEAgLSAoVUlUZXh0SW5wdXRBc3Npc3RhbnRJdGVtICopaW5wdXRBc3Npc3RhbnRJdGVtCiAK
ICNwcmFnbWEgbWFyayAtIG1hY09TL2lPUyBXS1ByaXZhdGUKIAotLSAodm9pZClfY2FsbEFzeW5j
SmF2YVNjcmlwdEZ1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBpbldvcmxkOihf
V0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBbc2VsZiBfZXZh
bHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOllFUyB3aXRo
QXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxl
cjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOmNvbnRlbnRXb3JsZF07Ci19Ci0KLS0gKHZvaWQp
X2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGluV29ybGQ6
KF9XS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBbc2VsZiBfZXZhbHVh
dGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhBcmd1
bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyIGluV29ybGQ6Y29udGVudFdvcmxkXTsKLX0KLQogLSAoX1dLU2VsZWN0aW9uQXR0
cmlidXRlcylfc2VsZWN0aW9uQXR0cmlidXRlcwogewogICAgIHJldHVybiBfc2VsZWN0aW9uQXR0
cmlidXRlczsKQEAgLTIxNTcsNyArMjE1Nyw3IEBAIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3Jp
cHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsK
LSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1
bmN0aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlv
bkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNv
bnRlbnRXb3JsZF07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJl
Ok5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIGluV29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkXTsKIH0KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihf
V0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNjYjY5YzY3
NzNmZGFlYTkxYmI5ZTMwYTc4NjM5N2I1YTBlYmQxNzguLjViOTVmOTdkZDI4Zjk0M2FmYjIxYTUy
ZWNkMGNhYzFmMDgxYzgyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA2LDcgKzEwNiw2IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGNsYXNzIFdLQnJvd3NpbmdD
b250ZXh0SGFuZGxlOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3Q7Ci1AY2xhc3MgX1dLQ29udGVudFdvcmxkOwogQGNsYXNzIF9XS0Zy
YW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CiBAY2xhc3MgX1dLSW5zcGVjdG9y
OwpAQCAtMzI3LDczICszMjYsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQpX2ZvY3Vz
VGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKIC0gKHZvaWQpX3Rha2VQREZT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBz
aG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZT
bmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCi0vKiBAYWJzdHJh
Y3QgQ2FsbHMgdGhlIGdpdmVuIEphdmFTY3JpcHQgc3RyaW5nIGFzIGEgZnVuY3Rpb24sIHBhc3Np
bmcgdGhlIGdpdmVuIG5hbWVkIGFyZ3VtZW50cyB0byB0aGF0IGZ1bmN0aW9uLgotIEBwYXJhbSBq
YXZhU2NyaXB0U3RyaW5nIFRoZSBKYXZhU2NyaXB0IHN0cmluZyB0byBjYWxsIGFzIGEgZnVuY3Rp
b24uCi0gQHBhcmFtIGFyZ3VtZW50cyBBIGRpY3Rpb25hcnkgcmVwcmVzZW50aW5nIHRoZSBhcmd1
bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBjYWxsLgotIEBwYXJhbSBjb250ZW50
V29ybGQgVGhlIFdLQ29udGVudFdvcmxkIGluIHdoaWNoIHRvIGNhbGwgdGhlIEphdmFTY3JpcHQg
ZnVuY3Rpb24uCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdp
dGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbCwgb3Igd2l0aCB0aGUgYXN5
bmNocm9ub3VzIHJlc29sdXRpb24gb2YgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlLgotIEBk
aXNjdXNzaW9uIFRoZSBKYXZhU2NyaXB0IHN0cmluZyBpcyB0cmVhdGVkIGFzIGFuIGFub255bW91
cyBKYXZhU2NyaXB0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB3aXRoIG5hbWVkIGFyZ3Vt
ZW50cy4KLSBEbyBub3QgZm9ybWF0IHlvdXIgc3RyaW5nIGFzIG9uZSBvZiB0aGUgdmFyaWFudHMg
b2YgZnVuY3Rpb24gY2FsbCBhdmFpbGFibGUgaW4gSmF2YVNjcmlwdC4KLSBJbnN0ZWFkIHBhc3Mg
aW4gYSBKYXZhU2NyaXB0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGZ1bmN0aW9uIHRleHQsIGZv
cm1hdHRlZCBmb3IgZXZhbHVhdGlvbi4KLSBGb3IgZXhhbXBsZSBkbyBub3QgcGFzcyBpbiB0aGUg
c3RyaW5nOgotICAgICBmdW5jdGlvbih4LCB5LCB6KSB7IHJldHVybiB4ID8geSA6IHo7IH0KLSBJ
bnN0ZWFkIHBhc3MgaW4gdGhlIHN0cmluZzoKLSAgICAgcmV0dXJuIHggPyB5IDogejsKLQotIFRo
ZSBhcmd1bWVudHMgZGljdGlvbmFyeSBzdXBwbGllcyB0aGUgdmFsdWVzIGZvciB0aG9zZSBhcmd1
bWVudHMgd2hpY2ggYXJlIHNlcmlhbGl6ZWQgaW50byBKYXZhU2NyaXB0IGVxdWl2YWxlbnRzLgot
IEZvciBleGFtcGxlOgotICAgICBAeyBAIngiIDogQFlFUywgQCJ5IiA6IEAxLCBAInoiIDogQDIg
fTsKLQotIENvbWJpbmluZyB0aGUgYWJvdmUgYXJndW1lbnRzIGRpY3Rpb25hcnkgd2l0aCB0aGUg
YWJvdmUgSmF2YVNjcmlwdCBzdHJpbmcsIGEgZnVuY3Rpb24gd2l0aCB0aGUgYXJndW1lbnRzICJ4
IiwgInkiLCBhbmQgInoiIGlzIGNhbGxlZCB3aXRoIHZhbHVlcyBZRVMsIDEsIGFuZCAyIHJlc3Bl
Y3RpdmVseS4KLQotIEFsbG93ZWQgYXJndW1lbnQgdHlwZXMgYXJlOgotIE5TTnVtYmVyLCBOU1N0
cmluZywgTlNEYXRlLCBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bGwuCi0gQW55IE5T
QXJyYXkgb3IgTlNEaWN0aW9uYXJ5IGNvbnRhaW5lcnMgY2FuIG9ubHkgY29udGFpbiBvYmplY3Rz
IG9mIHRob3NlIHR5cGVzLgotCi0gTm8gbWF0dGVyIHdoaWNoIFdLQ29udGVudFdvcmxkIHlvdSB1
c2UgdG8gY2FsbCB5b3VyIEphdmFTY3JpcHQgZnVuY3Rpb24sIHlvdSBjYW4gbWFrZSBjaGFuZ2Vz
IHRvIHRoZSB1bmRlcmx5aW5nIHdlYiBjb250ZW50LiAoZS5nLiB0aGUgRG9jdW1lbnQgYW5kIGl0
cyBET00gc3RydWN0dXJlKQotIFN1Y2ggY2hhbmdlcyB3aWxsIGJlIHZpc2libGUgdG8gc2NyaXB0
IGV4ZWN1dGluZyBpbiBhbGwgV0tDb250ZW50V29ybGRzLgotIENhbGxpbmcgeW91ciBKYXZhU2Ny
aXB0IGZ1bmN0aW9uIGNhbiBsZWF2ZSBiZWhpbmQgb3RoZXIgY2hhbmdlcyB0byBnbG9iYWwgc3Rh
dGUgdmlzaWJpbGUgdG8gSmF2YVNjcmlwdC4gKGUuZy4gYHdpbmRvdy5teVZhcmlhYmxlID0gMTtg
KQotIFRob3NlIGNoYW5nZXMgd2lsbCBvbmx5IGJlIHZpc2liaWxlIHRvIHNjcmlwdHMgZXhlY3V0
ZWQgaW4gdGhlIHNhbWUgV0tDb250ZW50V29ybGQuCi0KLSBZb3VyIGNvbXBsZXRpb24gaGFuZGxl
ciB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgeW91ciBKYXZhU2NyaXB0
IGZ1bmN0aW9uLgotIElmIHlvdXIgSmF2YVNjcmlwdCBkb2VzIG5vdCBleHBsaWNpdGx5IHJldHVy
biBhbnkgdmFsdWUsIHRoYXQgdW5kZWZpbmVkIHJlc3VsdCBtYW5pZmVzdHMgYXMgbmlsIGJlaW5n
IHBhc3NlZCB0byB5b3VyIGNvbXBsZXRpb24gaGFuZGxlci4KLSBJZiB5b3VyIEphdmFTY3JpcHQg
cmV0dXJucyBudWxsLCB0aGF0IHJlc3VsdCBtYW5pZmVzdHMgYXMgTlNOdWxsIGJlaW5nIHBhc3Nl
ZCB0byB5b3VyIGNvbXBsZXRpb24gaGFuZGxlci4KLQotIEphdmFTY3JpcHQgaGFzIHRoZSBjb25j
ZXB0IG9mIGEgInRoZW5hYmxlIiBvYmplY3QsIHdoaWNoIGlzIGFueSBKYXZhU2NyaXB0IG9iamVj
dCB0aGF0IGhhcyBhIGNhbGxhYmxlICJ0aGVuIiBwcm9wZXJ0eS4KLSBUaGUgbW9zdCB3ZWxsIGtu
b3duIGV4YW1wbGUgb2YgYSAidGhlbmFibGUiIG9iamVjdCBpcyBhIEphdmFTY3JpcHQgcHJvbWlz
ZS4KLSBJZiB5b3VyIEphdmFTY3JpcHQgcmV0dXJucyBhICJ0aGVuYWJsZSIgb2JqZWN0IFdlYktp
dCB3aWxsIGNhbGwgInRoZW4iIG9uIHRoZSByZXN1bHRpbmcgb2JqZWN0IGFuZCB3YWl0IGZvciBp
dCB0byBiZSByZXNvbHZlZC4KLQotIElmIHRoZSBvYmplY3QgY2FsbHMgImZ1bGZpbGwiLCB5b3Vy
IGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQuCi0gSWYg
dGhlIG9iamVjdCBjYWxscyAicmVqZWN0IiwgeW91ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBi
ZSBjYWxsZWQgd2l0aCBhIFdLRXJyb3JKYXZhU2NyaXB0QXN5bmNGdW5jdGlvblJlc3VsdFJlamVj
dGVkIGVycm9yIGNvbnRhaW5pbmcgdGhlIHJlamVjdCByZWFzb24gaW4gdGhlIHVzZXJJbmZvIGRp
Y3Rpb25hcnkuCi0gSWYgdGhlIG9iamVjdCBpcyBnYXJiYWdlIGNvbGxlY3RlZCBiZWZvcmUgaXQg
aXMgcmVzb2x2ZWQsIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGgg
YW4gZXJyb3IgaW5kaWNhdGluZyB0aGF0IGl0IHdpbGwgbmV2ZXIgYmUgcmVzb2x2ZWQuCi0KLSBT
aW5jZSB0aGUgZnVuY3Rpb24gaXMgYSBKYXZhU2NyaXB0ICJhc3luYyIgZnVuY3Rpb24geW91IGNh
biB1c2UgSmF2YVNjcmlwdCAiYXdhaXQiIG9uIHRob3NlIG9iamVjdHMgaW5zaWRlIHlvdXIgZnVu
Y3Rpb24gdGV4dC4KLSBGb3IgZXhhbXBsZToKLSAgICAgdmFyIHAgPSBuZXcgUHJvbWlzZShmdW5j
dGlvbiAocikgewotICAgICAgICAgcig0Mik7Ci0gICAgIH0pOwotICAgICBhd2FpdCBwOwotICAg
ICByZXR1cm4gcDsKLQotIFRoZSBhYm92ZSBmdW5jdGlvbiB0ZXh0IHdpbGwgY3JlYXRlIGEgcHJv
bWlzZSB0aGF0IHdpbGwgZnVsZnVsbCB3aXRoIHRoZSB2YWx1ZSA0Miwgd2FpdCBmb3IgaXQgdG8g
cmVzb2x2ZSwgdGhlbiByZXR1cm4gdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIDQyLgotKi8KLS0g
KHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1
bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwot
Ci0vKiBAYWJzdHJhY3QgRXZhbHVhdGVzIHRoZSBnaXZlbiBKYXZhU2NyaXB0IHN0cmluZy4KLSBA
cGFyYW0gamF2YVNjcmlwdFN0cmluZyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgdG8gZXZhbHVhdGUu
Ci0gQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gZXZh
bHVhdGUgdGhlIEphdmFTY3JpcHQgc3RyaW5nLgotIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBB
IGJsb2NrIHRvIGludm9rZSB3aGVuIHNjcmlwdCBldmFsdWF0aW9uIGNvbXBsZXRlcyBvciBmYWls
cy4KLSBAZGlzY3Vzc2lvbiBUaGUgY29tcGxldGlvbkhhbmRsZXIgaXMgcGFzc2VkIHRoZSByZXN1
bHQgb2YgdGhlIHNjcmlwdCBldmFsdWF0aW9uIG9yIGFuIGVycm9yLgotIE5vIG1hdHRlciB3aGlj
aCBXS0NvbnRlbnRXb3JsZCB5b3UgdXNlIHRvIGV2YWx1YXRlIHlvdXIgSmF2YVNjcmlwdCBzdHJp
bmcsIHlvdSBjYW4gbWFrZSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIHdlYiBjb250ZW50LiAo
ZS5nLiB0aGUgRG9jdW1lbnQgYW5kIGl0cyBET00gc3RydWN0dXJlKQotIFN1Y2ggY2hhbmdlcyB3
aWxsIGJlIHZpc2libGUgdG8gc2NyaXB0IGV4ZWN1dGluZyBpbiBhbGwgV0tDb250ZW50V29ybGRz
LgotIEV2YWx1YXRpbmcgeW91ciBKYXZhU2NyaXB0IHN0cmluZyBjYW4gbGVhdmUgYmVoaW5kIG90
aGVyIGNoYW5nZXMgdG8gZ2xvYmFsIHN0YXRlIHZpc2liaWxlIHRvIEphdmFTY3JpcHQuIChlLmcu
IGB3aW5kb3cubXlWYXJpYWJsZSA9IDE7YCkKLSBUaG9zZSBjaGFuZ2VzIHdpbGwgb25seSBiZSB2
aXNpYmlsZSB0byBzY3JpcHRzIGV4ZWN1dGVkIGluIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkLgot
IGV2YWx1YXRlSmF2YVNjcmlwdDogaXMgdGhlIGJlc3Qgd2F5IHRvIHNldCB1cCBnbG9iYWwgc3Rh
dGUgZm9yIGZ1dHVyZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBpbiBhIGdpdmVuIHdvcmxkLiAoZS5n
LiBJbXBvcnRpbmcgbGlicmFyaWVzL3V0aWxpdGllcyB0aGF0IGZ1dHVyZSBKYXZhU2NyaXB0IGV4
ZWN1dGlvbiB3aWxsIHJlbHkgb24pCi0gT25jZSB5b3VyIGdsb2JhbCBzdGF0ZSBpcyBzZXQgdXAs
IGNvbnNpZGVyIHVzaW5nIGNhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjogZm9yIG1vcmUgZmxl
eGlibGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgSmF2YVNjcmlwdCBwcm9ncmFtbWluZyBtb2RlbC4K
LSovCi0tICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0
cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7Ci0K
IEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNmQyNWFkNmYyMjNlMmRlZmEyZDZmMDVhNmFkM2NlOTlkM2YxZDI5OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgot
Ci1OU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotCi0vKiEKLUEgV0tDb250ZW50V29ybGQgb2JqZWN0
IGFsbG93cyB5b3UgdG8gc2VwZXJhdGUgeW91ciBhcHBsaWNhdGlvbidzIGludGVyYWN0aW9uIHdp
dGggY29udGVudCBkaXNwbGF5ZWQgaW4gYSBXS1dlYlZpZXcgaW50byBkaWZmZXJlbnQgcm9sZXMg
dGhhdCBjYW5ub3QgaW50ZXJmZXJlIHdpdGggb25lIGFub3RoZXIuCi0qLwotV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCi1AaW50ZXJmYWNlIF9X
S0NvbnRlbnRXb3JsZCA6IE5TT2JqZWN0Ci0KLSsgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJ
TEFCTEU7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKLQotLyohIEBhYnN0
cmFjdCBSZXRyaWV2ZSB0aGUgbWFpbiB3b3JsZCB0aGF0IHBhZ2UgY29udGVudCBpdHNlbGYgdXNl
cy4KLSBAZGlzY3Vzc2lvbiBXaGVuIGludGVyYWN0aW5nIHdpdGggcGFnZSBjb250ZW50IGluIGEg
V0tXZWJWaWV3IHVzaW5nIHRoZSBwYWdlIGNvbnRlbnQgd29ybGQgeW91IGNhbiBkaXNydXB0IHRo
ZSBvcGVyYXRpb24gb2YgcGFnZSBjb250ZW50IChlLmcuIGJ5IGNvbmZsaWN0aW5nIHdpdGggdmFy
aWFibGUgbmFtZXMgaW4gSmF2YVNjcmlwdCBzZXQgYnkgdGhlIHdlYiBwYWdlIGNvbnRlbnQgaXRz
ZWxmKS4KLSovCi1AcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBfV0tDb250
ZW50V29ybGQgKnBhZ2VDb250ZW50V29ybGQ7Ci0KLS8qISBAYWJzdHJhY3QgUmV0cmlldmUgdGhl
IGRlZmF1bHQgbm9uLXBhZ2UgY29udGVudCB3b3JsZCBmb3IgQVBJIGNsaWVudHMuCi0gQGRpc2N1
c3Npb24gSW50ZXJhY3Rpbmcgd2l0aCBwYWdlIGNvbnRlbnQgaW4gYSBXS1dlYlZpZXcgdXNpbmcg
YSBjb250ZW50IHdvcmxkIGRpZmZlcmVudCBmcm9tIHRoZSBwYWdlIGNvbnRlbnQgd29ybGQgZW5h
YmxlcyB1c2luZyBET00gYW5kIGJ1aWx0LWluIERPTSBBUElzCi0gd2l0aG91dCBjb25mbGljdGlu
ZyB3aXRoIG90aGVyIGFzcGVjdHMgb2YgdGhlIHBhZ2UgY29udGVudCAoZS5nLiBKYXZhU2NyaXB0
IGZyb20gdGhlIHdlYiBwYWdlIGNvbnRlbnQgaXRzZWxmKQotKi8KLUBwcm9wZXJ0eSAoY2xhc3Ms
IG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0NvbnRlbnRXb3JsZCAqZGVmYXVsdENsaWVudFdvcmxk
OwotCi0vKiEgQGFic3RyYWN0IFJldHJpZXZlcyBhIG5hbWVkIGNvbnRlbnQgd29ybGQgZm9yIEFQ
SSB1c2Vycy4KLSBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgV0tDb250ZW50V29ybGQgdG8g
cmV0cmlldmUuCi0gQGRpc2N1c3Npb24gQnkgaW50ZXJhY3Rpbmcgd2l0aCBwYWdlIGNvbnRlbnQg
aW4gYSBXS1dlYlZpZXcgdXNpbmcgYSBub24tbWFpbiBjb250ZW50IHdvcmxkIHlvdSBjYW4gaW50
ZXJhY3Qgd2l0aCB0aGUgRE9NIGFuZCBidWlsdC1pbiBET00gQVBJcwotIHdpdGhvdXQgY29uZmxp
Y3Rpbmcgd2l0aCBvdGhlciBhc3BlY3RzIG9mIHRoZSBwYWdlIGNvbnRlbnQgKGUuZy4gSmF2YVNj
cmlwdCBmcm9tIHRoZSB3ZWIgY29udGVudCBpdHNlbGYpCi0gUmVwZWF0ZWQgY2FsbHMgd2l0aCB0
aGUgc2FtZSBuYW1lIHdpbGwgcmV0cmlldmUgdGhlIHNhbWUgV0tDb250ZW50V29ybGQgaW5zdGFu
Y2UuCi0gRWFjaCBuYW1lZCBjb250ZW50IHdvcmxkIGlzIGRpc3RpbmN0IGZyb20gYWxsIG90aGVy
IG5hbWVkIGNvbnRlbnQgd29ybGRzLCB0aGUgZGVmYXVsdENsaWVudFdvcmxkLCBhbmQgdGhlIHBh
Z2VDb250ZW50V29ybGQuCi0gVGhlIG5hbWUgY2FuIGJlIHVzZWQgdG8ga2VlcCBkaXN0aW5jdCB3
b3JsZHMgaWRlbnRpZmlhYmxlIGFueXdoZXJlIGEgd29ybGQgbWlnaHQgYmUgc3VyZmFjZWQgaW4g
YSB1c2VyIGludGVyZmFjZS4KLSBGb3IgZXhhbXBsZSwgdGhlIGRpZmZlcmVudCB3b3JsZHMgdXNl
ZCBpbiB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgYmUgc3VyZmFjZWQgYnkgbmFtZSBpbiB0aGUgV2Vi
S2l0IFdlYiBJbnNwZWN0b3IuCi0qLwotKyAoX1dLQ29udGVudFdvcmxkICopd29ybGRXaXRoTmFt
ZTooTlNTdHJpbmcgKiluYW1lIE5TX1JFRklORURfRk9SX1NXSUZUOwotCi0vKiEgQGFic3RyYWN0
IFRoZSBuYW1lIG9mIHRoZSBXS0NvbnRlbnRXb3JsZAotIEBkaXNjdXNzaW9uIFRoZSBwYWdlQ29u
dGVudFdvcmxkIGFuZCBkZWZhdWx0Q2xpZW50V29ybGQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhIG5p
bCBuYW1lLgotIEFsbCBvdGhlciBpbnN0YW5jZXMgd2lsbCBoYXZlIHRoZSBub24tbmlsIG5hbWUg
dGhleSB3ZXJlIGFjY2Vzc2VkIGJ5LgotKi8KLUBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21p
YywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOwotCi1AZW5kCi0KLU5TX0FTU1VNRV9O
T05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0NvbnRlbnRXb3JsZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tDb250ZW50V29ybGQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMzY1ZjI1
YzViNjQ3YTg5MDgzZWFjMmE2MTAxZjhiMjk0NWJmYmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0NvbnRlbnRXb3JsZC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS0NvbnRlbnRXb3JsZEludGVy
bmFsLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBfV0tDb250ZW50V29ybGQKLQotKyAoX1dLQ29udGVu
dFdvcmxkICopcGFnZUNvbnRlbnRXb3JsZAotewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29u
dGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwotfQotCi0rIChfV0tDb250ZW50V29ybGQg
KilkZWZhdWx0Q2xpZW50V29ybGQKLXsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRX
b3JsZDo6ZGVmYXVsdENsaWVudFdvcmxkKCkpOwotfQotCi0rIChfV0tDb250ZW50V29ybGQgKil3
b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6
OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRXaXRoTmFtZShuYW1lKSk7Ci19Ci0KLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIF9jb250ZW50V29ybGQtPn5Db250ZW50V29ybGQoKTsKLQotICAgIFtz
dXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgaWYgKF9jb250
ZW50V29ybGQtPm5hbWUoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJl
dHVybiBfY29udGVudFdvcmxkLT5uYW1lKCk7Ci19Ci0KLSNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgotCi0tIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAotewot
ICAgIHJldHVybiAqX2NvbnRlbnRXb3JsZDsKLX0KLQotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkSW50ZXJuYWwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgwMGMxMjQxMzI0Y2EyZDVhM2I5ODUy
MTlmZjJkZWRhNzNlYjg4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxk
SW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJfV0tDb250ZW50V29ybGQuaCIKLQotI2ltcG9ydCAiQVBJQ29udGVudFdvcmxkLmgi
Ci0jaW1wb3J0ICJXS09iamVjdC5oIgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQ
STo6Q29udGVudFdvcmxkPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLQ29udGVudFdv
cmxkOwotfTsKLQotfQotCi1AaW50ZXJmYWNlIF9XS0NvbnRlbnRXb3JsZCAoKSA8V0tPYmplY3Q+
IHsKLUBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6Q29udGVudFdvcmxkPiBf
Y29udGVudFdvcmxkOwotfQotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU2NDIyMDQ3NzVlMjU1NWNjYmE1ZmRlOWY4ZTRhZTgz
NTVlZGRkNS4uMTYzMGMwOGQwM2VmNTc3ZTA5MTM1ZWNiYjc4YjQ1MTBjZThmNzU4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NzMs
NiArOTczLDggQEAKIAkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5n
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRjU5MTEx
RERFMjk3MDAwNDEyRkY1IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEM5NzkxRERENzg1NDAwMzJDQUQz
IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxMEZCQjlCMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5oICovOyB9OworCQk1MTEwNjVGQzIzRUM5NTcyMDA1NDQzRDYgLyogV0tDb250ZW50V29ybGQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTA2NUZB
MjNFQzk1NkIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNTExMDY1RkQyM0VDOTU3QjAwNTQ0M0Q2IC8q
IFdLQ29udGVudFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMTA2NUZCMjNFQzk1NkIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3Js
ZEludGVybmFsLmggKi87IH07CiAJCTUxMTBBRTBEMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25E
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExMEFFMEIxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRjdENDExRUIxQkNGNTAw
RTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGN0Q0MDFFQjFCQ0VFMDBFNDdCODMgLyog
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTExRjhBN0IxMzhCNDYwOTAw
QTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzcxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1T
aGltTGlicmFyeS5oICovOyB9OwpAQCAtMTAzMiw5ICsxMDM0LDYgQEAKIAkJNTE3Q0YwRTMxNjNB
NDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBF
MTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1
MTdDRjBFNDE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NG
MEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5o
ICovOyB9OwotCQk1MTgzNzIxRDIzQ0U4NUY2MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNzIxQTIz
Q0Q0OUIyMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE4MzcyMUUyM0NFODVGQjAwMDNDRjgzIC8q
IF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTgzNzIxQzIzQ0Q0QTc0MDAwM0NGODMgLyogX1dLQ29udGVudFdv
cmxkSW50ZXJuYWwuaCAqLzsgfTsKLQkJNTE4MzcyMUYyM0NFOTUyMTAwMDNDRjgzIC8qIF9XS0Nv
bnRlbnRXb3JsZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODM3MjFCMjNDRDQ5QjIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gKi87IH07
CiAJCTUxODM3MjIyMjNDRTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjIwMjNDRTk3M0Ew
MDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAw
Rjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuaCAqLzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1MzUsNiAr
MzUzNCw5IEBACiAJCTUxMENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRkJCOTgxMjg4Qzk1RTAwQUZG
REY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMEZCQjk5MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRN
ZW51SXRlbURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExMDY1RjkyM0VD
OTU2QjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tDb250ZW50V29ybGQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxMTA2NUZBMjNFQzk1NkIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3JsZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRXb3JsZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTEwNjVGQjIzRUM5NTZCMDA1NDQzRDYgLyogV0tDb250
ZW50V29ybGRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Nv
bnRlbnRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBB
RTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ljb25EYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMTBBRTBCMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ljb25EYXRhYmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE4RTlBMjFGMjk1OTYzMDAzRUY5RjUgLyog
U3RvcmFnZVByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdl
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKQEAgLTM2NDEsOSArMzY0Myw2IEBACiAJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKLQkJNTE4MzcyMUEyM0NENDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRX
b3JsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDb250ZW50V29ybGQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4MzcyMUIyM0NENDlCMjAwMDNDRjgz
IC8qIF9XS0NvbnRlbnRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0NvbnRlbnRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE4MzcyMUMyM0NENEE3NDAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODM3MjIwMjNDRTk3M0EwMDAzQ0Y4MyAv
KiBBUElDb250ZW50V29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
Q29udGVudFdvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODM3MjIxMjND
RTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQVBJQ29udGVudFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY4MTQsOSArNjgxMyw2IEBACiAJCQkJNUM0NjA5RTIyMjQzMEU0
QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovLAogCQkJCTVDNDYwOUUz
MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0gKi8sCiAJCQkJ
NUM0NjA5RTQyMjQzMEU0RDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVy
bmFsLmggKi8sCi0JCQkJNTE4MzcyMUEyM0NENDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3Js
ZC5oICovLAotCQkJCTUxODM3MjFCMjNDRDQ5QjIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQu
bW0gKi8sCi0JCQkJNTE4MzcyMUMyM0NENEE3NDAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZElu
dGVybmFsLmggKi8sCiAJCQkJMUE1NzA0RjYxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRN
ZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkxQTU3MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyogX1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlC
REEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8sCkBAIC02OTU2LDYgKzY5NTIsOSBAQAog
CQkJCTVDRDI4NjRFMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1t
ICovLAogCQkJCTVDRDI4NjRGMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0QyODY1MDFFNzIyRjQ0MDA5NEZEQzggLyogV0tDb250
ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaCAqLywKKwkJCQk1MTEwNjVGQTIzRUM5NTZCMDA1NDQz
RDYgLyogV0tDb250ZW50V29ybGQuaCAqLywKKwkJCQk1MTEwNjVGOTIzRUM5NTZCMDA1NDQzRDYg
LyogV0tDb250ZW50V29ybGQubW0gKi8sCisJCQkJNTExMDY1RkIyM0VDOTU2QjAwNTQ0M0Q2IC8q
IFdLQ29udGVudFdvcmxkSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0UwQzM2OTIyOUYyRDRBMDAzNjk1
RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8sCiAJCQkJNUNFMEMzNjgyMjlGMkQ0
QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2
QjIyOUYyRDRCMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAq
LywKQEAgLTk5NzMsOCArOTk3Miw2IEBACiAJCQkJOTkwRDI4QjExQzY1MjA4RDAwOTg2OTc3IC8q
IF9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNDYw
OUU3MjI0MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxp
c3RBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MzcyMUQyM0NFODVGNjAw
MDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MzcyMUUy
M0NFODVGQjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTU3MDRGODFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1RDIzOEMyMjdBMkNEQTAwMEI5QkRBIC8qIF9X
S0N1c3RvbUhlYWRlckZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNjkxQTY4QkVC
QzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LApAQCAtMTA5MDUsNiArMTA5MDIsOCBAQAogCQkJCTBGQ0I0RTRDMThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS0NvbnRlbnRWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2QzE4QkJGMjZBMDAw
RkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjA0MTU5RTIzQzdDQzczMDA2MEEzRTIgLyogV0tDb250ZW50Vmlld01hYy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTExMDY1RkMyM0VDOTU3MjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTEwNjVGRDIzRUM5NTdCMDA1NDQzRDYgLyogV0tDb250ZW50V29y
bGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUUyNEIxMTIwRTE1QzAwQTEzN0Uw
IC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIwMjY3MjAwQTFG
QTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTEyMDYxLDcgKzEyMDYwLDYgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAotCQkJCTUxODM3MjFGMjNDRTk1MjEwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVh
ZGVyRmllbGRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlGQkVGRkQyMzlCMDExRDAwQkQwMzJG
IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlGQkVGRkYyMzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmViMjk4NWZiMWQzZDkwMmI2NjNiNTJiNjg4MjVm
N2M2NzA2MjliOS4uNzg0MTVhMzMxZmEzNmFjNjBjYmY0MDE1YjQ1MzkyZTU4MzJiN2UzZiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIwLTAyLTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDbGVhbnVwIGFuZCBwcm9tb3RlIFdLQ29udGVudFdvcmxkIGFuZCBpdHMgY2xpZW50
cyBpbiBXS1dlYlZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDczNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmVycm9yOl0pOgorCiAyMDIwLTAyLTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgbmF2aWdhdGluZyB0b3AgbGV2ZWwg
ZnJhbWVzIHRvIERhdGEgVVJMcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCmluZGV4IDA0YTg4YWI3ODE4Njg3MGI3ZWQz
NjlkYzg1NmMyYWM2ZjhhYjBmMTQuLjRhNWQ0OGIzNjg3OTczYzExNjhlODY1NDNmYzgwMzM0Yzkz
MTQyMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QXN5bmNGdW5jdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FzeW5jRnVuY3Rpb24ubW0KQEAgLTI4LDkgKzI4LDkgQEAKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CisjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
LSNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50V29ybGQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCkBAIC0xODYsNyArMTg2LDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNl
KQogICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbihyZXNvbHZlLCByZWplY3QpIHsgc2V0VGltZW91dChmdW5jdGlvbigpeyByZXNvbHZlKDQy
KSB9LCAwKTsgfSkiOwogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2Nh
bGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwg
aW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBjYWxsQXN5
bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldL
Q29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwogICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKQEAgLTE5OCw3
ICsxOTgsNyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgZnVuY3Rpb25Cb2R5
ID0gQCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRp
bWVvdXQoZnVuY3Rpb24oKXsgcmVqZWN0KCdSZWplY3RlZCEnKSB9LCAwKTsgfSkiOwogCiAgICAg
ZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246
ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBh
Z2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkg
YXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29t
cGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGVycm9yICE9IG5pbCk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5n
OkAiUmVqZWN0ZWQhIl0pOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFRFU1QoQXN5bmNGdW5jdGlvbiwg
UHJvbWlzZSkKICAgICBmdW5jdGlvbkJvZHkgPSBAImxldCBwID0gbmV3IFByb3h5KGZ1bmN0aW9u
KHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyByZXNvbHZlKDQyKTsg
fSwgMCk7IH0sIHsgfSk7IHJldHVybiB7IHRoZW46IHAgfTsiOwogCiAgICAgZG9uZSA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246ZnVuY3Rpb25Cb2R5
IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5p
bCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1i
ZXI6QDQyXSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNl
KQogICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2
ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlamVjdCgnUmVqZWN0ZWQhJyk7
IH0sIDApOyB9LCB7IH0pOyByZXR1cm4geyB0aGVuOiBwIH07IjsKIAogICAgIGRvbmUgPSBmYWxz
ZTsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOmZ1bmN0aW9uQm9k
eSB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpu
aWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVM
TChyZXN1bHQpOwogICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOwogICAgICAgICBF
WFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVk
ISJdKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAg
ICAgZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgciA9IDA7IHZhciBwID0gbmV3IFByb21pc2UoZnVuY3Rp
b24oZnVsZmlsbCwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgciA9IDQyOyBmdWxm
aWxsKCk7IH0sIDUpO30pOyBhd2FpdCBwOyByZXR1cm4gcjsiOwogCiAgICAgZG9uZSA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246ZnVuY3Rpb25Cb2R5
IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5p
bCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1i
ZXI6QDQyXSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNl
KQogICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihmdWxm
aWxsLCByZWplY3QpIHsgc2V0VGltZW91dChmdW5jdGlvbigpeyBmdWxmaWxsKCdGdWxmaWxsZWQh
JykgfSwgNSk7fSk7IGF3YWl0IHA7IHJldHVybiBwOyI7CiAKICAgICBkb25lID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0
aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBj
b21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBb
d2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGlu
Q29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOwogICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pOwogICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpA
IkZ1bGZpbGxlZCEiXSk7CkBAIC0yNTYsNyArMjU2LDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQ
cm9taXNlKQogICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSBuZXcgUHJvbWlzZShmdW5jdGlv
biAocikgeyByKG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyKSB7IHIoNDIpOyB9KSk7IH0pOyBhd2Fp
dCBwOyByZXR1cm4gJ0RvbmUnOyI7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcg
X2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpu
aWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBjYWxs
QXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxk
OldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIkRvbmUiXSk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNlKQogICAgIGRvbmUg
PSBmYWxzZTsKICAgICBmdW5jdGlvbkJvZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsgfSkiOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTAwOyAr
K2kpIHsKLSAgICAgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5j
dGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkg
YXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29t
cGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3Ig
IT0gbmlsKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNv
bnRhaW5zU3RyaW5nOkAibm8gbG9uZ2VyIHJlYWNoYWJsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2Ny
aXB0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdF
dmFsdWF0ZUphdmFTY3JpcHQubW0KaW5kZXggMGIwZDNkNGNlZWMxZjZhM2M4NDY4MTFjMzFjNjEx
YTRkYTJlNTI3NS4uZmMwMzM3NTdlNDQ4MWMwNmYxOGZmMTk3NjdlMDNmZDIxM2YyMWYwNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdF
dmFsdWF0ZUphdmFTY3JpcHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L19XS0NvbnRlbnRXb3JsZC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBpc0RvbmU7CkBAIC0xMTcsMTMg
KzExNywxMyBAQCBURVNUKFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0RXJyb3JDYXNlcykK
IAogVEVTVChXS1dlYlZpZXcsIFdLQ29udGVudFdvcmxkKQogewotICAgIEVYUEVDVF9OVUxMKF9X
S0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkLm5hbWUpOwotICAgIEVYUEVDVF9OVUxMKF9X
S0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQubmFtZSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KF9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkID09IF9XS0NvbnRlbnRXb3JsZC5kZWZh
dWx0Q2xpZW50V29ybGQpOworICAgIEVYUEVDVF9OVUxMKFdLQ29udGVudFdvcmxkLnBhZ2VXb3Js
ZC5uYW1lKTsKKyAgICBFWFBFQ1RfTlVMTChXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29y
bGQubmFtZSk7CisgICAgRVhQRUNUX0ZBTFNFKFdLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCA9PSBX
S0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQpOwogCi0gICAgX1dLQ29udGVudFdvcmxk
ICpuYW1lZFdvcmxkID0gW19XS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiTmFtZSJdOwor
ICAgIFdLQ29udGVudFdvcmxkICpuYW1lZFdvcmxkID0gW1dLQ29udGVudFdvcmxkIHdvcmxkV2l0
aE5hbWU6QCJOYW1lIl07CiAgICAgRVhQRUNUX1RSVUUoW25hbWVkV29ybGQubmFtZSBpc0VxdWFs
VG9TdHJpbmc6QCJOYW1lIl0pOwotICAgIEVYUEVDVF9FUShuYW1lZFdvcmxkLCBbX1dLQ29udGVu
dFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1lIl0pOworICAgIEVYUEVDVF9FUShuYW1lZFdvcmxk
LCBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWUiXSk7CiB9CiAKIFRFU1QoV0tX
ZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykKQEAgLTEzOCw4ICsxMzgsOCBAQCBU
RVNUKFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0SW5Xb3JsZHMpCiAgICAgfV07CiAgICAg
aXNEb25lID0gZmFsc2U7CiAKLSAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyB2aXNpYmxlIHdo
ZW4gZXZhbHVhdGluZyBpbiB0aGUgcGFnZUNvbnRlbnRXb3JsZAotICAgIFt3ZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHQ6QCJmb28iIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50
V29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgdmlzaWJsZSB3aGVuIGV2YWx1YXRpbmcgaW4gdGhl
IHBhZ2VXb3JsZAorICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvbyIgaW5Db250
ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwogICAgICAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAg
LTE0NywxNCArMTQ3LDE0IEBAIFRFU1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldv
cmxkcykKICAgICBpc0RvbmUgPSBmYWxzZTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHZhbHVlIGlz
IG5vdCB2aXNpYmxlIHdoZW4gZXZhbHVhdGluZyBpbiB0aGUgZGVmYXVsdENsaWVudFdvcmxkCi0g
ICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImZvbyIgaW5Xb3JsZDpfV0tDb250ZW50
V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvbyIg
aW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1Rf
TlVMTChyZXN1bHQpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwogCi0gICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgdmlzaWJsZSB3aGVuIGNh
bGxpbmcgYSBmdW5jdGlvbiBpbiB0aGUgcGFnZUNvbnRlbnRXb3JsZAotICAgIFt3ZWJWaWV3IF9j
YWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246QCJyZXR1cm4gZm9vIiB3aXRoQXJndW1lbnRzOm5p
bCBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgIC8vIFZlcmlmeSB0aGF0
IHZhbHVlIGlzIHZpc2libGUgd2hlbiBjYWxsaW5nIGEgZnVuY3Rpb24gaW4gdGhlIHBhZ2VXb3Js
ZAorICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gZm9vIiBhcmd1bWVu
dHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJiYXIiXSk7CiAgICAgICAgIGlz
RG9uZSA9IHRydWU7CkBAIC0xNjIsMjIgKzE2MiwyMiBAQCBURVNUKFdLV2ViVmlldywgRXZhbHVh
dGVKYXZhU2NyaXB0SW5Xb3JsZHMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAKICAgICAvLyBWZXJp
ZnkgdGhhdCB2YWx1ZSBpcyBub3QgdmlzaWJsZSB3aGVuIGNhbGxpbmcgYSBmdW5jdGlvbiBpbiB0
aGUgZGVmYXVsdENsaWVudFdvcmxkCi0gICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRG
dW5jdGlvbjpAInJldHVybiBmb28iIHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVu
dFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAi
cmV0dXJuIGZvbyIgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5k
ZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiAgICAgfV07CiAgICAgaXNEb25lID0gZmFsc2U7CiAKICAgICAvLyBTZXQgYSB2
YXJpYmFsZSB2YWx1ZSBpbiBhIG5hbWVkIHdvcmxkLgotICAgIFJldGFpblB0cjxfV0tDb250ZW50
V29ybGQ+IG5hbWVkV29ybGQgPSBbX1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1l
ZFdvcmxkIl07Ci0gICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAInZhciBiYXIgPSBi
YXoiIGluV29ybGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IG5hbWVk
V29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWVkV29ybGQiXTsKKyAg
ICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgYmFyID0gYmF6IiBpbkNvbnRlbnRX
b3JsZDpuYW1lZFdvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOwogICAgICAgICBpc0Rv
bmUgPSB0cnVlOwogICAgIH1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGEg
Z2xvYmFsIHZhcmliYWxlIHZhbHVlIGluIGEgbmFtZWQgd29ybGQgdmlhIGEgZnVuY3Rpb24gY2Fs
bC4KLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOkAid2luZG93LmJh
eiA9IGJhdCIgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpuYW1lZFdvcmxkLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3
IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6ID0gYmF0IiBhcmd1bWVudHM6bmlsIGlu
Q29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAg
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTE4NSwx
NCArMTg1LDE0IEBAIFRFU1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykK
ICAgICBpc0RvbmUgPSBmYWxzZTsKIAogICAgIC8vIFZlcmlmeSB0aGV5IGFyZSB0aGVyZSBpbiB0
aGF0IG5hbWVkIHdvcmxkLgotICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIi
IGluV29ybGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIi
IGluQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmF6Il0pOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAg
IH1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNj
cmlwdDpAIndpbmRvdy5iYXoiIGluV29ybGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6IiBpbkNvbnRlbnRXb3JsZDpuYW1lZFdvcmxkLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhdCJdKTsKICAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTIwMCwyNiArMjAwLDI2IEBAIFRFU1QoV0tXZWJWaWV3
LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykKICAgICBpc0RvbmUgPSBmYWxzZTsKIAogICAg
IC8vIFZlcmlmeSB0aGV5IGFyZW4ndCB0aGVyZSBpbiB0aGUgZGVmYXVsdENsaWVudFdvcmxkLgot
ICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIiIGluV29ybGQ6X1dLQ29udGVu
dFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIi
IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNU
X05VTEwocmVzdWx0KTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBpc0Rv
bmUgPSBmYWxzZTsKIAotICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
YmF6IiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAid2luZG93LmJheiIgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29y
bGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOwogICAgICAgICBpc0Rv
bmUgPSB0cnVlOwogICAgIH1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgLy8gVmVyaWZ5
IHRoZXkgYXJlbid0IHRoZXJlIGluIHRoZSBwYWdlQ29udGVudFdvcmxkLgotICAgIFt3ZWJWaWV3
IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIiIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VD
b250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgLy8gVmVyaWZ5IHRoZXkgYXJlbid0IHRoZXJlIGluIHRoZSBwYWdlV29ybGQuCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiYmFyIiBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiAgICAgfV07CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBbd2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LmJheiIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQu
cGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6IiBp
bkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6
XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggZDBlNTE1ZjhiMjIzM2E3MWE4OWU0YjdiMmFh
NGRlOTY1YTI5Y2M0OS4uNzdmNzI0Mzc0ODk1MDBlZDgwZDg0NTliM2RkNDVhZTY4MTFmODk4ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJV
dGlsaXRpZXMuaCIKIAorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJLaXRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8uaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKGlkKW9i
amVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVu
dHM6KE5TRGljdGlvbmFyCiAgICAgICAgICplcnJvck91dCA9IG5pbDsKIAogICAgIFJldGFpblB0
cjxpZD4gZXZhbFJlc3VsdDsKLSAgICBbc2VsZiBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9u
OnNjcmlwdCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5w
YWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9y
ICplcnJvcikgeworICAgIFtzZWxmIGNhbGxBc3luY0phdmFTY3JpcHQ6c2NyaXB0IGFyZ3VtZW50
czphcmd1bWVudHMgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBl
dmFsUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICBpZiAoZXJyb3JPdXQpCiAgICAgICAgICAgICAq
ZXJyb3JPdXQgPSBbZXJyb3IgcmV0YWluXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390116</attachid>
            <date>2020-02-07 12:55:30 -0800</date>
            <delta_ts>2020-02-07 14:18:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207351-20200207125529.patch</filename>
            <type>text/plain</type>
            <size>1201</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdhZGI1MDY3MDE5NWVmZTE5
NDk2NzU5OGI2ODNjMDAwNjYxODhlNGMuLjNmMmUxNzhkOGNkNjk4OWRjMTZiYTg5ZTU2MTEzMzJj
YjQ5NWE4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZC5o
IHRvIFdlYktpdC5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDczNTEKKworICAgICAgICBTdWdnZXN0ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV2ViS2l0Lmg6CisKIDIwMjAtMDItMDcgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdHJpdmlhbCBkZWZpbml0
aW9ucyBmcm9tIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRvIFBsYXRmb3JtRW5hYmxlQ29jb2Eu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IGZhYjhjYWE2Nzdh
ZTUwOTJjZTgxMzQ1YzU1ZWI1NTM1ODExOWMxODkuLmI5N2QwY2E3ZDdmNTkzNDE2ODZlZDM0ZmJk
Yzc5YzJlYzM2Yjk1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0u
aD4KICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdC5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3Js
ZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLRXJyb3IuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZpbmRDb25maWd1cmF0aW9u
Lmg+Cg==
</data>
<flag name="commit-queue"
          id="405767"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>