<?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>229100</bug_id>
          
          <creation_ts>2021-08-13 15:14:09 -0700</creation_ts>
          <short_desc>Use Vector&lt;SandboxExtension::Handle&gt; instead of SandboxExtension::HandleArray</short_desc>
          <delta_ts>2021-08-19 19:35:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1784249</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-13 15:14:09 -0700</bug_when>
    <thetext>Use Vector&lt;SandboxExtension::Handle&gt; instead of SandboxExtension::HandleArray</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784252</commentid>
    <comment_count>1</comment_count>
      <attachid>435520</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-13 15:15:16 -0700</bug_when>
    <thetext>Created attachment 435520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785549</commentid>
    <comment_count>2</comment_count>
      <attachid>435520</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-19 12:33:32 -0700</bug_when>
    <thetext>Comment on attachment 435520
Patch

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

r=me

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:428
&gt; +bool SandboxExtension::consumePermanently(const Vector&lt;SandboxExtension::Handle&gt;&amp; handleArray)

Wouldn&apos;t `const Vector&lt;Handle&gt;&amp;` work?

&gt; Source/WebKit/Shared/SandboxExtension.h:127
&gt; +inline auto SandboxExtension::createReadOnlyHandlesForFiles(ASCIILiteral, const Vector&lt;String&gt;&amp;) -&gt; Vector&lt;Handle&gt; { return { }; }

Do we need the auto return value here? Wouldn&apos;t `Vector&lt;Handle&gt;` as return value work here since we&apos;re in the class scope?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785550</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-19 12:34:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Comment on attachment 435520 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435520&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:428
&gt; &gt; +bool SandboxExtension::consumePermanently(const Vector&lt;SandboxExtension::Handle&gt;&amp; handleArray)
&gt; 
&gt; Wouldn&apos;t `const Vector&lt;Handle&gt;&amp;` work?
Yes.

&gt; &gt; Source/WebKit/Shared/SandboxExtension.h:127
&gt; &gt; +inline auto SandboxExtension::createReadOnlyHandlesForFiles(ASCIILiteral, const Vector&lt;String&gt;&amp;) -&gt; Vector&lt;Handle&gt; { return { }; }
&gt; 
&gt; Do we need the auto return value here? Wouldn&apos;t `Vector&lt;Handle&gt;` as return
&gt; value work here since we&apos;re in the class scope?
No, only trailing return values are in the class scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785561</commentid>
    <comment_count>4</comment_count>
      <attachid>435896</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-19 13:16:40 -0700</bug_when>
    <thetext>Created attachment 435896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785607</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-19 16:02:58 -0700</bug_when>
    <thetext>Committed r281277 (240702@main): &lt;https://commits.webkit.org/240702@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435896.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785608</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-19 16:03:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/82145920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785665</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-08-19 18:43:18 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785666</commentid>
    <comment_count>8</comment_count>
      <attachid>435933</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-08-19 18:43:19 -0700</bug_when>
    <thetext>Created attachment 435933
Fix internal build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785674</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-19 19:35:43 -0700</bug_when>
    <thetext>Committed r281289 (240713@main): &lt;https://commits.webkit.org/240713@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435933.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435520</attachid>
            <date>2021-08-13 15:15:16 -0700</date>
            <delta_ts>2021-08-19 13:16:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229100-20210813151515.patch</filename>
            <type>text/plain</type>
            <size>75402</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUzYTIzNmE4MDMzZjY5Yzgy
MzEzZjgxMzkzZGNhMGY4MDIxOTU4ZjkuLjU1YTI1YjRhNTRhYzZmNTNlNDE2OGNmNzhlY2UwODNi
NTY3NmUyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIxLTA4LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGluc3RlYWQgb2YgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgbW9yZSBtb2Rlcm4gY29kZS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmg6CisgICAgICAg
IChJUEM6OkZvcm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvTG9hZFBh
cmFtZXRlcnNDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OnBsYXRm
b3JtRGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmls
ZXMpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxs
b2NhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXpl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNo
YXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3VsdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlJlc3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
UmVzdWx0OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQlJlc3VsdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJSZXN1bHQ6OldlYklEQlJlc3Vs
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlJlc3VsdDo6aGFuZGxlcyBjb25zdCk6CisgICAg
ICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hF
eHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25s
eUhhbmRsZXNGb3JGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjphdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltd
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OmVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpiZWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4
dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkUGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxv
Y2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1E
cmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENy
ZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXNl
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRl
bnNpb25zU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRy
b3BJbnRlcmFjdGlvbjpwZXJmb3JtRHJvcDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlh
U3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
czo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpt
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2FuZGJveEZvckZpbGVz
RnJvbU9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnN1bWVOZXR3b3JrRXh0
ZW5zaW9uU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bmJsb2Nr
UHJlZmVyZW5jZVNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bmJsb2Nr
U2VydmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eSk6CisKIDIwMjEtMDgtMTMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgY3JlYXRpb24gc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsIGluc3Rl
YWQgb2YgYm9vbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGU4Yzk5MTNkMzViOTE0YjEyMzlhNjcz
YTZiNDYzYTg2OTlhM2E4YjMuLmFlOWQ0NzA0NDg1MDMyMGEzYjMxYWY4ZmJhZWRiYWViZWRhNmY0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTkxLDE5ICs5MSwxOSBAQCBib29sIEdQVVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEdQVVBy
b2Nlc3NDcmVhdAogICAgIHJlc3VsdC5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBjb21waWxlclNlcnZpY2VFeHRlbnNp
b25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4+IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBj
b21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghY29tcGlsZXJTZXJ2aWNl
RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5jb21w
aWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqY29tcGlsZXJTZXJ2aWNlRXh0
ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5PiBkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGR5bmFtaWNJT0tpdEV4dGVuc2lv
bkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOwog
ICAgIGlmICghZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc3VsdC5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgq
ZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gZHluYW1p
Y01hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gZHluYW1pY01hY2hFeHRlbnNp
b25IYW5kbGVzOwogICAgIGlmICghZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBkNGE5YjJiNzU1NzgzOTgzYmFkNTcz
MWZlNmE1MjY4NmQyMWMzN2E0Li41YTY2NjE3MDRiNGRjZmIyYTFmYTNlMzA5NGZjMTMxZGUwZWNk
ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTUyLDkgKzUyLDkgQEAgc3RydWN0IEdQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb250YWlu
ZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNvbXBpbGVy
U2VydmljZUV4dGVuc2lvbkhhbmRsZXM7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKKyAg
ICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzOworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGR5bmFtaWNNYWNo
RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogCiAgICAgU3RyaW5nIHd0ZkxvZ2dpbmdDaGFubmVs
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZmQzMjNhYzE0ZWVhMWJkOWNjZjEw
NjQ3OTI2ZjMwMWIyNWM0YmIzYi4uMzA0MWQ0ZjhhMzA3NjUxNzkzMzVkMWEwNjg4ODVkNmQ4YzAz
ZmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTUxLDIyICs1MSwxMiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGlmIChyZXF1ZXN0Lmh0dHBCb2R5KCkpIHsKICAgICAgICAgcmVx
dWVzdC5odHRwQm9keSgpLT5lbmNvZGUoZW5jb2Rlcik7CiAKLSAgICAgICAgY29uc3QgVmVjdG9y
PEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzID0gcmVxdWVzdC5odHRwQm9keSgpLT5lbGVtZW50
cygpOwotICAgICAgICBzaXplX3QgZmlsZUNvdW50ID0gMDsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDAsIGNvdW50ID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVk
RmlsZURhdGE+KGVsZW1lbnRzW2ldLmRhdGEpKQotICAgICAgICAgICAgICAgICsrZmlsZUNvdW50
OwotICAgICAgICB9Ci0KLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgcmVx
dWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKLSAgICAgICAgcmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9ucy5hbGxvY2F0ZShmaWxlQ291bnQpOwotICAgICAgICBzaXplX3QgZXh0ZW5zaW9uSW5k
ZXggPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXpl
KCk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQm
IGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKKyAgICAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKKyAgICAgICAgZm9yIChjb25z
dCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiByZXF1ZXN0Lmh0dHBCb2R5KCktPmVsZW1lbnRz
KCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1E
YXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPmZpbGVuYW1lOwogICAgICAgICAg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCi0gICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10gPSBXVEZN
b3ZlKCpoYW5kbGUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVNhbmRib3hFeHRl
bnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBlbmNvZGVyIDw8IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7CkBAIC0x
NzgsMTIgKzE2OCwxMiBAQCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjbwogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRUUEJvZHkoV1RG
TW92ZShmb3JtRGF0YSkpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHJlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGRlY29kZXIgPj4gcmVxdWVz
dEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFyZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNp
b25IYW5kbGVzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcy0+YXQoaSkpKSkKKyAgICAgICAgZm9yIChhdXRvJiBoYW5kbGUgOiBXVEZN
b3ZlKCpyZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoaGFu
ZGxlKSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lv
bnMuYXBwZW5kKFdURk1vdmUoZXh0ZW5zaW9uKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRleCA4M2MyNDdm
YTYxOWQ1NzE5MzQ4YTU1MTJjMTRjNmY3NjE2YjU3MWNiLi5jMmQ1ODk1OTVmNWUzNDEwZDFhZWFm
NDJiYTdhZWUyMzhmNzE1NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zv
cm1EYXRhUmVmZXJlbmNlLmgKQEAgLTUwLDE5ICs1MCwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAg
ZW5jb2RlciA8PCAqbV9kYXRhOwogCi0gICAgICAgIGF1dG8mIGVsZW1lbnRzID0gbV9kYXRhLT5l
bGVtZW50cygpOwotICAgICAgICBzaXplX3QgZmlsZUNvdW50ID0gc3RkOjpjb3VudF9pZihlbGVt
ZW50cy5iZWdpbigpLCBlbGVtZW50cy5lbmQoKSwgW10oYXV0byYgZWxlbWVudCkgewotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8V2ViQ29yZTo6Rm9ybURhdGFFbGVt
ZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXM7Ci0gICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKGZpbGVD
b3VudCk7Ci0gICAgICAgIHNpemVfdCBleHRlbnNpb25JbmRleCA9IDA7Ci0gICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CisgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IG1fZGF0YS0+ZWxlbWVudHMoKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCi0gICAgICAgICAgICAg
ICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2V4dGVuc2lvbkluZGV4KytdID0gV1RGTW92
ZSgqaGFuZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMu
YXBwZW5kKFdURk1vdmUoKmhhbmRsZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGVuY29kZXIgPDwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CkBAIC04MSw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlczsKICAgICAgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
TG9hZFBhcmFtZXRlcnNDb2NvYS5tbQppbmRleCBlMjYzZmE4M2ExYTM2OGRmYjE4YTBmYTY5NmQ5
MWY0MzdhY2Q2ODc3Li42MjA4ODNhOTcxYjg3MjUxMTI4N2Y1M2Y3ZWI2ZGM1Yzc1ZTZlNGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2Eu
bW0KQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1EZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgcGFyYW0KICAgICBpZiAoIUlQ
Qzo6ZGVjb2RlKGRlY29kZXIsIHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5PiBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gbmV0d29y
a0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gbmV0d29y
a0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghbmV0d29ya0V4dGVu
c2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0K
aW5kZXggZmE4MWRhZmFmNDYyMjVmZGFkZWU0Y2M5MmJmZTVlODBjNDgxMWNkZi4uMzE5YTE4N2Zh
NDU0ODlkNmJlN2JlZTUyZDJkMTY2NWE3NDA2OGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTcyLDcxICsxNzIs
NiBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxIYQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7
CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSgpCi17Ci19
Ci0KLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkoKQotewotfQot
Ci12b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6
ZSkKLXsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2Rh
dGEuaXNFbXB0eSgpKTsKLQotICAgIG1fZGF0YS5yZXNpemUoc2l6ZSk7Ci19Ci0KLXZvaWQgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFwcGVuZChIYW5kbGUmJiBoYW5kbGUpCi17Ci0g
ICAgbV9kYXRhLmFwcGVuZChXVEZNb3ZlKGhhbmRsZSkpOwotfQotCi1TYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKHNpemVf
dCBpKQotewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8
IG1fZGF0YS5zaXplKCkpOwotICAgIHJldHVybiBtX2RhdGFbaV07Ci19Ci0KLWNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJh
dG9yW10oc2l6ZV90IGkpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1fZGF0YVtpXTsK
LX0KLQotc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9kYXRhLnNpemUoKTsKLX0KLQotdm9pZCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKCkpOwotICAgIGZvciAoYXV0
byYgaGFuZGxlIDogbV9kYXRhKQotICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKLSAgICBkZWNvZGVyID4+IHNpemU7Ci0gICAgaWYg
KCFzaXplKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpz
aXplOyArK2kpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IGhhbmRsZTsKLSAgICAgICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgICAgIGlmICghaGFu
ZGxlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgaGFuZGxlcy5h
cHBlbmQoV1RGTW92ZSgqaGFuZGxlKSk7Ci0gICAgfQotICAgIHJldHVybiBXVEZNb3ZlKGhhbmRs
ZXMpOwotfQotCiBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKEhhbmRsZSYmIGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pCkBAIC0yOTUsMjYgKzIzMCwxNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpbwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxUPiYgcmVzb3VyY2VzLCBG
dW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4oY29uc3QgVCYp
PiYmIGNyZWF0ZUZ1bmN0aW9uKQorc3RhdGljIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoY29uc3QgVmVjdG9yPFQ+JiByZXNvdXJjZXMs
IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPihjb25zdCBU
Jik+JiYgY3JlYXRlRnVuY3Rpb24pCiB7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgaGFuZGxlQXJyYXk7Ci0KLSAgICBpZiAocmVzb3VyY2VzLnNpemUoKSA+IDApCi0gICAgICAg
IGhhbmRsZUFycmF5LmFsbG9jYXRlKHJlc291cmNlcy5zaXplKCkpOwotCi0gICAgc2l6ZV90IGN1
cnJlbnRIYW5kbGUgPSAwOworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhh
bmRsZUFycmF5OwogICAgIGZvciAoY29uc3QgYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsK
LSAgICAgICAgYXV0byBoYW5kbGUgPSBjcmVhdGVGdW5jdGlvbihyZXNvdXJjZSk7Ci0gICAgICAg
IGlmICghaGFuZGxlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGhhbmRsZUFycmF5
W2N1cnJlbnRIYW5kbGVdID0gV1RGTW92ZSgqaGFuZGxlKTsKLSAgICAgICAgKytjdXJyZW50SGFu
ZGxlOworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBjcmVhdGVGdW5jdGlvbihyZXNvdXJjZSkp
CisgICAgICAgICAgICBoYW5kbGVBcnJheS5hcHBlbmQoV1RGTW92ZSgqaGFuZGxlKSk7CiAgICAg
fQotICAgIAogICAgIHJldHVybiBoYW5kbGVBcnJheTsKIH0KIAotU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmls
ZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCith
dXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJ
TGl0ZXJhbCBsb2dMYWJlbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKSAtPiBWZWN0b3I8
SGFuZGxlPgogewogICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzPFN0cmluZz4o
cGF0aHMsIFsmbG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgpIHsKICAgICAgICAgYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHkpOwpAQCAtMzk0LDcgKzMyMCw3IEBAIGF1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwg
c3RkOjpvcHRpCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCithdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3Rv
cjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBh
dWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgogewog
ICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzPEFTQ0lJTGl0ZXJhbD4oc2Vydmlj
ZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc2VydmljZSkgLT4g
c3RkOjpvcHRpb25hbDxIYW5kbGU+IHsKICAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGZs
YWdzKTsKQEAgLTQzMSw3ICszNTcsNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlvS2l0Q2xhcwogICAgIHJl
dHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhj
b25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCithdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxI
YW5kbGU+CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXM8QVNDSUlMaXRl
cmFsPihpb2tpdENsYXNzZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJh
bCYgaW9raXRDbGFzcykgewogICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9raXRDbGFzcywgYXVkaXRUb2tl
biwgZmxhZ3MpOwpAQCAtNDk5LDcgKzQyNSw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhh
bmRsZUFycmF5JiBoYW5kbGVBcnJheSkKK2Jvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBoYW5kbGVB
cnJheSkKIHsKICAgICBib29sIGFsbFN1Y2NlZWRlZCA9IHRydWU7CiAgICAgZm9yIChhdXRvJiBo
YW5kbGUgOiBoYW5kbGVBcnJheSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQuY3BwCmluZGV4IGQwNjRkYWUxYTU5
ZDVmOGVlNWFjYjFlMGNmZGFiMWMyMDEwYzZhMjAuLmI0MjBkZGYwZDEyMDM1YTQ4ZmM5MGVlMThi
NDg3N2IyOTI1ZDAwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3VsdC5jcHAKQEAgLTMyLDggKzMyLDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViSURCUmVzdWx0OjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewotICAgIG1fcmVzdWx0RGF0YS5lbmNvZGUoZW5jb2Rlcik7Ci0g
ICAgbV9oYW5kbGVzLmVuY29kZShlbmNvZGVyKTsKKyAgICBlbmNvZGVyIDw8IG1fcmVzdWx0RGF0
YTsKKyAgICBlbmNvZGVyIDw8IG1faGFuZGxlczsKIH0KIAogYm9vbCBXZWJJREJSZXN1bHQ6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYklEQlJlc3VsdCYgcmVzdWx0KQpAQCAtNDQs
NyArNDQsNyBAQCBib29sIFdlYklEQlJlc3VsdDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgV2ViSURCUmVzdWx0JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1
bHQubV9yZXN1bHREYXRhID0gV1RGTW92ZSgqcmVzdWx0RGF0YSk7CiAKLSAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBoYW5kbGVzOworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGhhbmRsZXM7CiAgICAgZGVj
b2RlciA+PiBoYW5kbGVzOwogICAgIGlmICghaGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCUmVzdWx0LmgKaW5kZXggZWVlZjdiNTliMzg2NWE3NDQ3YTA3ZDhjNWMxZTFkYWY2NWY4
ODM2ZS4uZjc1YWNlNGYyZTVjNzE3NjhjMjFhNjc3NDRmYWMwZWIwNDk1NTczNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJl
c3VsdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgV2Vi
SURCUmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKKyAgICBXZWJJREJSZXN1bHQoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSwgVmVjdG9yPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4mJiBoYW5kbGVzKQogICAgICAgICA6IG1fcmVzdWx0RGF0YShyZXN1bHRE
YXRhKQogICAgICAgICAsIG1faGFuZGxlcyhXVEZNb3ZlKGhhbmRsZXMpKQogICAgIHsKQEAgLTUz
LDE0ICs1MywxNCBAQCBwdWJsaWM6CiAgICAgV2ViSURCUmVzdWx0JiBvcGVyYXRvcj0oV2ViSURC
UmVzdWx0JiYpID0gZGVmYXVsdDsKIAogICAgIGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdERhdGE7IH0KLSAgICBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFuZGxlczsgfQorICAgIGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBo
YW5kbGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVzOyB9CiAKICAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYklEQlJlc3VsdCYpOwogCiBwcml2YXRlOgogICAgIFdl
YkNvcmU6OklEQlJlc3VsdERhdGEgbV9yZXN1bHREYXRhOwotICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IG1faGFuZGxlczsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBtX2hhbmRsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IGYwOWQwYmM1ZTM4NzMxYWVhNzVkYzIzZjc5MDlm
M2Y2ZDBlMjAwZDQuLjA2MjA5NjQ2OGZlODdiNjhjMTllZjM4MDc3YTI1YTkyMWQ5ZDRlZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNzYsNyArNzYsNyBAQCBzdHJ1
Y3QgTG9hZFBhcmFtZXRlcnMgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7Ci0gICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgbmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwor
ICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG5ldHdvcmtFeHRlbnNpb25TYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGQ6
Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGVudEZpbHRlckV4dGVuc2lv
bkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCBjMzU5
ZWVhYTQ0MDU4NmZhNjFkM2JjMzFkZWYwNjlmZmNmYTZlNzcxLi4xMDRkZjAwYjUyZjQyMWZmNmNm
NmRmYzE4NTFmODg1MzczZjgyMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsOwogCiBj
bGFzcyBTYW5kYm94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lv
bj4gewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgZW51bSBjbGFzcyBUeXBl
IDogdWludDhfdCB7CiAgICAgICAgIFJlYWRPbmx5LAogICAgICAgICBSZWFkV3JpdGUsCiAgICAg
ICAgIE1hY2gsCkBAIC04Miw0OCArODIsMjAgQEAgcHVibGljOgogICAgICAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gbV9zYW5kYm94RXh0ZW5zaW9uOwog
I2VuZGlmCiAgICAgfTsKLQotICAgIGNsYXNzIEhhbmRsZUFycmF5IHsKLSAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSGFuZGxlQXJyYXkpOwotICAgIHB1YmxpYzoKLSAgICAgICAgSGFuZGxl
QXJyYXkoKTsKLSAgICAgICAgSGFuZGxlQXJyYXkoSGFuZGxlQXJyYXkmJikgPSBkZWZhdWx0Owot
ICAgICAgICBIYW5kbGVBcnJheSYgb3BlcmF0b3I9KEhhbmRsZUFycmF5JiYpID0gZGVmYXVsdDsK
LSAgICAgICAgfkhhbmRsZUFycmF5KCk7Ci0gICAgICAgIHZvaWQgYWxsb2NhdGUoc2l6ZV90KTsK
LSAgICAgICAgdm9pZCBhcHBlbmQoSGFuZGxlJiYpOwotICAgICAgICBIYW5kbGUmIG9wZXJhdG9y
W10oc2l6ZV90IGkpOwotICAgICAgICBIYW5kbGUmIGF0KHNpemVfdCBpKSB7IHJldHVybiBvcGVy
YXRvcltdKGkpOyB9Ci0gICAgICAgIGNvbnN0IEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkg
Y29uc3Q7Ci0gICAgICAgIEhhbmRsZSogYmVnaW4oKTsKLSAgICAgICAgSGFuZGxlKiBlbmQoKTsK
LSAgICAgICAgY29uc3QgSGFuZGxlKiBiZWdpbigpIGNvbnN0OwotICAgICAgICBjb25zdCBIYW5k
bGUqIGVuZCgpIGNvbnN0OwotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SGFuZGxlQXJyYXk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLQotICAgIHByaXZhdGU6
Ci0jaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAgICAgVmVjdG9yPEhhbmRsZT4g
bV9kYXRhOwotI2Vsc2UKLSAgICAgICAgSGFuZGxlIG1fZW1wdHlIYW5kbGU7Ci0jZW5kaWYKLSAg
ICB9OwogICAgIAogICAgIHN0YXRpYyBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKEhh
bmRsZSYmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFR5cGUpOwotICAgIHN0YXRpYyBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwgbG9n
TGFiZWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CisgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJl
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxIYW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgVHlwZSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5k
bGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gV2lsbCBhdHRl
bXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9u
Q2xhc3MpOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRl
ZmF1bHQpOwotICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3Rh
dGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3Rv
cjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90Piwg
T3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+
IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xh
c3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFn
czo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIEhhbmRsZUFycmF5IGNyZWF0ZUhhbmRsZXNGb3JJT0tp
dENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2Vz
LCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6
OkRlZmF1bHQpOworICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9L
aXRDbGFzc0V4dGVuc2lvbnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nl
cywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdz
OjpEZWZhdWx0KTsKICNlbmRpZgogICAgIH5TYW5kYm94RXh0ZW5zaW9uKCk7CiAKQEAgLTEzMSw4
ICsxMDMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcmV2b2tlKCk7CiAKICAgICBib29sIGNvbnN1
bWVQZXJtYW5lbnRseSgpOworCisgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBub3QgYmUgY29u
c3QuCiAgICAgc3RhdGljIGJvb2wgY29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYpOwot
ICAgIHN0YXRpYyBib29sIGNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGVBcnJheSYpOwor
ICAgIHN0YXRpYyBib29sIGNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNhbmRib3hFeHRl
bnNpb24oY29uc3QgSGFuZGxlJik7CkBAIC0xNDgsMjIgKzEyMiw5IEBAIGlubGluZSBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU6OkhhbmRsZSgpIHsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9CiBpbmxpbmUgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB7IH07
IH0KLWlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKSB7
IH0KLWlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KCkg
eyB9Ci1pbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUo
c2l6ZV90KSB7IH0KLWlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojph
cHBlbmQoSGFuZGxlJiYpIHsgfQotaW5saW5lIHNpemVfdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0gICAgCi1pbmxpbmUgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3Bl
cmF0b3JbXShzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlIYW5kbGU7IH0KLWlubGluZSBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpv
cGVyYXRvcltdKHNpemVfdCkgeyByZXR1cm4gbV9lbXB0eUhhbmRsZTsgfQotaW5saW5lIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2lu
KCkgeyByZXR1cm4gJm1fZW1wdHlIYW5kbGU7IH0KLWlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUqIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSB7IHJldHVybiAmbV9l
bXB0eUhhbmRsZTsgfQotaW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSogU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgY29uc3QgeyByZXR1cm4gJm1fZW1w
dHlIYW5kbGU7IH0KLWlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zdCB7IHJldHVybiAmbV9lbXB0eUhh
bmRsZTsgfQotaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGVBcnJheT4geyByZXR1cm4geyBIYW5kbGVBcnJheSgpIH07IH0KIGlubGluZSBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmKSB7IHJldHVy
biBudWxscHRyOyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
Y29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7
IH19OyB9Ci1pbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpIHsgcmV0dXJuIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpIC0+IFZlY3RvcjxIYW5kbGU+IHsgcmV0dXJuIHsgfTsgfQogaW5saW5l
IGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
Y29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7
IH19OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsg
cmV0dXJuIHt7IH19OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgLypwcmVmaXgqLywgVHlwZSkgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5n
PiB7IEhhbmRsZSB7IH0sIFN0cmluZyB7IH0gfSB9OyB9CkBAIC0xNzMsMTUgKzEzNCwxMSBAQCBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKSB7IHJldHVybiB0cnVlOyB9CiBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4gdHJ1ZTsgfQog
aW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCkgeyByZXR1
cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KGNvbnN0IEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KLWlubGluZSBib29sIFNhbmRib3hF
eHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGVBcnJheSYpIHsgcmV0dXJu
IHRydWU7IH0KK2lubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRs
eShjb25zdCBWZWN0b3I8SGFuZGxlPiYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBTdHJpbmcg
c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0
dXJuIHBhdGg7IH0KIGlubGluZSBTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQogaW5saW5lIFN0cmluZyByZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KICNlbHNlCi1pbmxpbmUgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YmVnaW4oKSB7IHJl
dHVybiBtX2RhdGEuYmVnaW4oKTsgfQotaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSog
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuZCgpIHsgcmV0dXJuIG1fZGF0YS5lbmQo
KTsgfQotaW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSogU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7
IH0KLWlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KIFN0
cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7
CiBTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNTY1ZmRiNmJhOTkyNDNjNThh
MmUyNGI2MmZjN2I3OTI1ZTA3N2RjMi4uZDY2ZjkxYTg1MWI4N2I2ZWY0ZGU0ZGVmMjhiODc2Njlk
YmIwNTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+IGF0dGFj
aG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+PiBhdHRhY2htZW50RWxlbWVu
dEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50RWxlbWVudEV4dGVu
c2lvbkhhbmRsZXM7CiAgICAgaWYgKCFhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zOTIsMjYgKzM5MiwyNiBAQCBzdGQ6
Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRo
ZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5PiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gbWVkaWFFeHRlbnNpb25IYW5k
bGVzOwogICAgIGRlY29kZXIgPj4gbWVkaWFFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghbWVk
aWFFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqbWVkaWFFeHRlbnNpb25I
YW5kbGVzKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOwog
ICAgIGRlY29kZXIgPj4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFtZWRp
YUlPS2l0RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLm1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqbWVkaWFJ
T0tpdEV4dGVuc2lvbkhhbmRsZXMpOwogICAgIC8vIEZJWE1FKDIwNzcxNik6IEVuZCByZWdpb24g
dG8gcmVtb3ZlLgogCi0gICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAg
ICBkZWNvZGVyID4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdUlPS2l0
RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJh
bWV0ZXJzLmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmdwdUlPS2l0RXh0ZW5z
aW9uSGFuZGxlcyk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAg
ICBkZWNvZGVyID4+IGdwdU1hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZ3B1TWFjaEV4
dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZjJiODQx
MzdkZjQ0OTFkMWE3NTZhZTA1OGUzZjU5ODYzZWRhYTMxMy4uOTY4MjQ4ZDQzMmY2NDUxZTBkMmMy
OWY3YTM0MGIwNjc0MTcyOWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzPiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5PiBhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gYXR0YWNobWVudEVs
ZW1lbnRFeHRlbnNpb25IYW5kbGVzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZTsKQEAgLTE3NiwxMCArMTc2LDEwIEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICAgICBWZWN0b3I8U3RyaW5nPiBh
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7IC8vIEZJWE1FKDIwNzcxNik6IFJlbW92ZSB3
aGVuIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOwotICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKLSAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7IC8vIEZJWE1FKDIw
NzcxNik6IFJlbW92ZSB3aGVuIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgorICAgIFZlY3RvcjxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAg
IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxl
czsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBncHVNYWNoRXh0ZW5zaW9u
SGFuZGxlczsKICNlbmRpZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAgICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGZvbnRNYWNoRXh0ZW5zaW9uSGFu
ZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBkY2E1NWUxYzkzMDUxNjYwZjliYzkyNDJhM2ZiZTFiNDRmMzhl
NzVlLi5hZmZiNThiMjk3NDQ4MjkxMTdkMTdkMWUyYTYxNDdlMjFiZjhiNmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBhZGRpdGlvbmFs
U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPj4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwog
ICAgIGRlY29kZXIgPj4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlm
ICghYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NDYsNyArNDQ2LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBwYXJh
bWV0ZXJzLndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzID0gV1RGTW92ZSgqd2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhh
bmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Pj4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IGNvbXBp
bGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFjb21waWxlclNlcnZpY2VFeHRl
bnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzIsMjcgKzQ3MiwyNyBA
QCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgIHBhcmFtZXRlcnMubGF1bmNoU2VydmljZXNF
eHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSk7
CiAKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCi0gICAgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gdmlkZW9EZWNvZGVyRXh0ZW5zaW9uSGFu
ZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
PiB2aWRlb0RlY29kZXJFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gdmlkZW9EZWNv
ZGVyRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIXZpZGVvRGVjb2RlckV4dGVuc2lvbkhhbmRs
ZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLnZpZGVvRGVjb2RlckV4
dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCp2aWRlb0RlY29kZXJFeHRlbnNpb25IYW5kbGVzKTsK
ICNlbmRpZgogCi0gICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlczsK
ICAgICBkZWNvZGVyID4+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWRp
YWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBh
cmFtZXRlcnMuZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZGlhZ25vc3Rp
Y3NFeHRlbnNpb25IYW5kbGVzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZHluYW1pY01hY2hFeHRl
bnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4+IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IGR5
bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWR5bmFtaWNNYWNoRXh0ZW5zaW9u
SGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuZHluYW1pY01h
Y2hFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVz
KTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGR5
bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAg
ICBkZWNvZGVyID4+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFkeW5h
bWljSU9LaXRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NDEs
NyArNTQxLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQotICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+IHByZWZlcmVuY2VzRXh0
ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgZGVjb2RlciA+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFwcmVm
ZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCA1M2IxYTgxZDA3NWQ1NjNhMDk2ZDhkMmE4N2QwNjE5NzQ4YTQ5M2FjLi5kYzZiMjI5N2QyZjhh
ZDlhODI1MWYyMjgyMmQ5ZGFjZDhlYzg5MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC03OCw3ICs3OCw3IEBAIHN0
cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBpbmplY3Rl
ZEJ1bmRsZVBhdGg7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGluamVjdGVkQnVuZGxl
UGF0aEV4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBh
ZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogCiAgICAg
VXNlckRhdGEgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKIApAQCAtMjA1LDIwICsyMDUsMjAgQEAg
c3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OwogICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOworICAgIFZlY3RvcjxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAjZW5k
aWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb250YWlu
ZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlOwogICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlOwogICAgIHN0ZDo6b3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhh
bmRsZTsKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCi0gICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgdmlkZW9EZWNvZGVyRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBW
ZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiB2aWRlb0RlY29kZXJFeHRlbnNpb25IYW5k
bGVzOwogI2VuZGlmCiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBkaWFnbm9z
dGljc0V4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgZHluYW1pY01hY2hFeHRlbnNpb25I
YW5kbGVzOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGR5bmFtaWNJT0tpdEV4
dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gZHlu
YW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpAQCAtMjM3LDcgKzIzNyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIEVOQUJMRShDRlBSRUZTX0RJ
UkVDVF9NT0RFKQotICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk+IHByZWZlcmVuY2VzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7
CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDMwZjcyNzJiY2RlZTZmMTdlZGZkYzhjNDYxYmY3
NjFhYTRkZGI1ODkuLjU4MDNmMWI3NTA2NGVmNmM0NDI2Nzk1MzM3MmVmNGFiZGVhN2FiN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9h
ZFBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBMb2FkUGFyYW0KICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZmls
ZVJlYWRIYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBmaWxlVXBsb2FkSGFu
ZGxlcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVk
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBm
aWxlUmVhZEhhbmRsZSwgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mIGZpbGVVcGxv
YWRIYW5kbGVzKQogewogICAgIGlmICghZmlsZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0yMDYsMTMgKzIwNiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVu
c2lvbnNJZk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBmaWxlVXBsb2FkSGFuZGxlcy5hbGxvY2F0ZShmaWxlcy5zaXplKCkpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpPCBmaWxlcy5zaXplKCk7IGkrKykgewotICAgICAgICBOU1N0
cmluZyAqZmlsZSA9IGZpbGVzW2ldOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CiAg
ICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQ
YXRoOmZpbGVdKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSkpCi0gICAgICAgICAgICBmaWxlVXBsb2FkSGFuZGxlc1tpXSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICBmaWxlVXBsb2FkSGFuZGxlcy5hcHBlbmQoV1RG
TW92ZSgqaGFuZGxlKSk7CiAgICAgfQogfQogCkBAIC02MjcsNyArNjI1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFVwSGlnaGxpZ2h0c09ic2VydmVyKCkKIAogI2VuZGlmCiAKLVNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lv
bnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCitWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNp
b25zU2FuZGJveEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoIXByb2Nlc3MuaGFzTmV0d29ya0V4dGVu
c2lvblNhbmRib3hBY2Nlc3MoKSAmJiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aXNS
ZXF1aXJlZCgpKSB7CkBAIC02NDEsNyArNjM5LDcgQEAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnMK
ICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9v
a3VwKHsgbmVIZWxwZXJTZXJ2aWNlLCBuZVNlc3Npb25NYW5hZ2VyU2VydmljZSB9LCBzdGQ6Om51
bGxvcHQpOwogICAgIH0KICNlbmRpZgotICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSgpOworICAgIHJldHVybiB7IH07CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KaW5kZXggZGM4MWIwOTc4ZDkyYTc5YjhmMTg5ZWI3N2IwYzIwMzU5
OWY1MDg3YS4uN2M4OWExYmQ4YWZhNmU5Yzk0Mjc4NGUwZDc1ZmNhOTQzMmEwZmIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwog
fQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5
cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIHBhdGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0
ZW5zaW9ucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9ucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
TUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgeyB9KSk7CiAKQEAgLTE2OCwxOCArMTY4LDE3IEBAIHZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3RpCiAKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBlcmZvcm1Bc0RhdGFP
d25lcigqZGF0YU93bmVyLCBbJl0gewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRobmFtZXM7
Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25z
OworICAgICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5z
aW9uczsKICAgICAgICAgaWYgKHdlYlByb2Nlc3NQcm94eUZvckNvbm5lY3Rpb24oY29ubmVjdGlv
bikpIHsKICAgICAgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0
UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIHBhc3RlYm9hcmRUeXBlKTsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgICAgICAvLyBPbiBpT1MsIGZpbGVzIGFyZSBjb3BpZWQgaW50byBhcHAn
cyBjb250YWluZXIgdXBvbiBwYXN0ZS4KLSAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zLmFs
bG9jYXRlKHBhdGhuYW1lcy5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwYXRobmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBhdXRvJiBmaWxl
bmFtZSA9IHBhdGhuYW1lc1tpXTsKICAgICAgICAgICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlbmFtZV0pCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZE9ubHkpKQotICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uc1tp
XSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNp
b25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICAgICAgICAgIH0KICNlbmRpZgogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCmluZGV4IDgxMjdiYWFiZmZmMDdiYzNmMWQ3ODMxZWMxNWNiMGE3NTFk
ZTZlMjAuLmRjYWRmOGU5MmJiNDhkMDA1NmY3ZDIwMWM5NWQ4YmRhOTZhOGE1ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nl
c3NpYmlsaXR5U2VydmVySWZOZWVkZWQoKQogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxl
QXJyYXk7CisgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxlQXJyYXk7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhz
ZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZp
Y2VzIl9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDog
c3RkOjpudWxsb3B0KTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwOGZmYWRl
OTlhYzU1ODM5MGQxNDEzODliMzc1ODQ4NjY3Mjk3ZWI3Li40OTU1NDllMzgyZGYwNWViMDhlODBk
ZmUyMDM3NjFiYTMwOTlhOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVy
Zm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAKICAg
ICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0g
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9h
ZDsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9u
Rm9yVXBsb2FkOwogCiAgICAgaWYgKCFbdHlwZXMgY29udGFpbnNPYmplY3Q6UGFzdGVib2FyZFR5
cGVzOjpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNv
cmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7CiAKQEAgLTQzMTQsNyAr
NDMxNCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0Ry
YWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZXMt
PmFwcGVuZChwYXRoLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1lcy0+
c2l6ZSgpID09IGZpbGVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uRm9y
VXBsb2FkOworICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKCpmaWxlTmFtZXMs
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZHJhZ0RhdGEtPnNldEZpbGVOYW1lcygqZmlsZU5hbWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmNwcAppbmRleCBhODEwZjU1NjI2Y2JjNjQxZGUwNGQxMDFhZDQ5NDk0Mjk3ZTE5N2U3Li45NDBm
ZDI5N2U5MmE0ZDU1NTNjZTJmZjkyY2RhZGY0YTNmOWY1YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC05Myw3ICs5
Myw3IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hCiAgICAgfQogCiAgICAgaWYgKGV4dGVuc2lv
bkNvdW50KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZXM7
CisgICAgICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZXM7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGlkczsKIAogICAgICAgICBpZiAoIXByb3h5LnBhZ2UoKS5wcmVm
ZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDg4YjNiMmQ4ODkxNjhkMjY0MjdiOTRlMGUz
ZTcyNmFmNTNiZjg4NS4uNzdlZDg2ZjMzMDI2OWY4ZGRmMWRhMmQyMzdlYjg4ZTE2OGNlMDA4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjQxLDEyICsy
NjQxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRXhpdGVkKERyYWdEYXRhJiBkcmFnRGF0
YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUpCiAgICAgcGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFeGl0ZWQsIGRyYWdEYXRhLCBkcmFnU3Rv
cmFnZU5hbWUsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFn
T3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5h
bWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdPcGVyYXRpb24oRHJhZ0RhdGEmIGRyYWdE
YXRhLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKICAgICBwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3BlcmF0aW9u
LCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24gYWN0aW9uLCBEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VO
YW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2Fk
KQordm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVu
c2lvbnNGb3JVcGxvYWQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CkBAIC0yODEzLDcgKzI4MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNp
dmVuZXNzVGltZXIoKTsKICAgICB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5PiBzYW5kYm94RXh0ZW5zaW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBzYW5kYm94RXh0ZW5zaW9uczsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBib29sIGV2ZW50TWF5U3RhcnREcmFnID0gIW1fY3VycmVudERy
YWdPcGVyYXRpb24gJiYgZXZlbnRUeXBlID09IFdlYkV2ZW50OjpNb3VzZU1vdmUgJiYgZXZlbnQu
YnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6QnV0dG9uOjpOb0J1dHRvbjsKQEAgLTEwNzg0LDkg
KzEwNzg0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudEMKICNlbmRpZgogCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQotU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgV2ViUGFnZVByb3h5Ojpj
cmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcykKK1ZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5KCk7
CisgICAgcmV0dXJuIHsgfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDVmZTllMzU5NmFiZDdiOTQyY2EyMjlhYmIzN2FkYWY1MjQ5YmNkZTAu
LjAwMWRiODcyNzc3ZGJlMGQzYmY5ZDQyZmZkOWNiMmI1OTdlOGI0YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkcmFnRW50ZXJlZChXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJh
Z1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkpOwogICAgIHZvaWQgZHJhZ1VwZGF0ZWQoV2ViQ29yZTo6
RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9IFN0cmluZygpKTsKICAg
ICB2b2lkIGRyYWdFeGl0ZWQoV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSA9IFN0cmluZygpKTsKLSAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdl
YkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKKyAg
ICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBWZWN0b3I8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnT3Bl
cmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBXZWJDb3JlOjpE
cmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlv
blJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOwpAQCAt
MTY1MSw3ICsxNjUxLDcgQEAgcHVibGljOgogICAgIFdlYlVSTFNjaGVtZUhhbmRsZXIqIHVybFNj
aGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBmaWxlUmVh
ZEhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGZpbGVVcGxvYWRIYW5kbGVz
KTsKKyAgICB2b2lkIGNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGZpbGVSZWFkSGFuZGxl
LCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYgZmlsZVVwbG9hZEhhbmRsZXMpOwog
I2VuZGlmCiAgICAgdm9pZCBlZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmKTsK
ICAgICBib29sIHVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JT
dGF0ZSk7CkBAIC0yMzYwLDcgKzIzNjAsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzOwogI2VuZGlmCiAKLSAgICB2b2lkIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0Rh
dGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOworICAgIHZvaWQgcGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBXZWJDb3JlOjpEcmFn
RGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJik7CiAKICAgICB2b2lk
IHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIApAQCAtMjUxMiw3ICsyNTEy
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5B
bmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICNlbmRpZgogCi0gICAgc3RhdGlj
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2Fu
ZGJveEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgc3RhdGljIFZlY3RvcjxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVu
c2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKICAgICBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDI0NDJjZmEwN2Y4ZTc1MDQ0OTA1M2Zj
MGRiZTFmM2RlZDAwY2JmMmQuLjk0YjVhZjQwODUzZDgyMmZjNDkxZTFiZTc1M2UxNGU0ZWZiZjA5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBn
ZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5
cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3Rl
Ym9hcmRQYXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgcGF0aG5hbWVzLCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmKT4m
Jik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ3NG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsK
ICAgICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCAy
Zjg2N2UxMDIxNTAyYWQyOTdlNzY1OWIzN2EyNDYxODY5ODBiZjMwLi5iODllN2E3MDZmZGZjMDYz
ZjBiMGE0ZDhmYjcxZTNiMWJhZjE3ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC00Myw3ICs0Myw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICAjIFBh
c3RlYm9hcmQgbWVzc2FnZXMuCiAgICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4g
KHVpbnQ2NF90IG51bWJlck9mRmlsZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgogICAg
IEdldFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVz
KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkUGF0aG5hbWVz
Rm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0
cmluZz4gcGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNh
bmRib3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0
ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzLCBWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KICAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCiAgICAgR2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKSBTeW5jaHJvbm91
cyBXYW50c0Nvbm5lY3Rpb24KICAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDg2MTA2ZDExZWQ0YmJmODljNjM1
NzQ5OGJjOTliYzNlZjdiYTU1YmQuLjFmODNkNDAzMjQ5YzFkNzgzNmNkMmM0NGYyZDg3NmRjOTMz
MDQxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTc1NywxMCArNzU3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICAgICAgICAgIHBh
cmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFu
ZGxlKTsKICAgICB9CiAKLSAgICBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcy5hbGxvY2F0ZShtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5k
Ym94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRo
cy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2
ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRoc1tpXSwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQotICAgICAgICAgICAgcGFyYW1ldGVycy5h
ZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0gPSBXVEZNb3ZlKCpoYW5kbGUpOwor
ICAgIGZvciAoYXV0byYgcGF0aCA6IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vz
c1NhbmRib3hFeHRlbnNpb25QYXRocykgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5h
ZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkp
OwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBi
NWM5ZDk1YTBjZDA5Y2QyYmY2MmU3OWRlZTlmZmJjY2EzZWIwZmJkLi43OGQ2NDA4YTY2YjU4OGZj
Y2U0YzViNDE5OTg5ZmFlMzZhNTA3ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTkxOTMsNyArOTE5
Myw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVy
RWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgIGNhcHR1cmVkRHJhZ0RhdGEu
c2V0RmlsZU5hbWVzKGZpbGVuYW1lcyk7CiAKICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkOworICAg
ICAgICBWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRl
bnNpb25Gb3JVcGxvYWQ7CiAgICAgICAgIGF1dG8gZHJhZ1Bhc3RlYm9hcmROYW1lID0gV2ViQ29y
ZTo6UGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKTsKICAgICAgICAgcmV0YWluZWRT
ZWxmLT5fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShkcmFnUGFzdGVi
b2FyZE5hbWUpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wYWdlLT5jcmVhdGVTYW5kYm94RXh0
ZW5zaW9uc0lmTmVlZGVkKGZpbGVuYW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJv
eEV4dGVuc2lvbkZvclVwbG9hZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cy5jcHAKaW5kZXggNzQyMDdhMzY0NWE3YzVkOGIwOGE5MTBmMzU5MzE2NDBkZDU0ZmRiZC4uNjgw
YWU4ZDRlNjFlYzk3MTE2MmMzNmUyOWI2N2MwMTI0ODBjMWY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6TWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYgaGFuZGxlcykKK01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6Ok1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4gaWRzLCBWZWN0b3I8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiYmIGhhbmRsZXMpCiAgICAgOiBtX2lkcyhpZHMpCiAgICAgLCBtX2hh
bmRsZXMoV1RGTW92ZShoYW5kbGVzKSkKIHsKQEAgLTQyLDcgKzQyLDcgQEAgTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9uczo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3Ry
aW5nPiBpZHMsIFMKIHZvaWQgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG1faWRzOwotICAg
IG1faGFuZGxlcy5lbmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2RlciA8PCBtX2hhbmRsZXM7CiB9
CiAKIGJvb2wgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYgcmVzdWx0KQpAQCAtNTAs
NyArNTAsNyBAQCBib29sIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIE1lZGlhRGV2aWNlU2FuZAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm1faWRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gaGFuZGxlczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBoYW5kbGVzOwogICAgIGRl
Y29kZXIgPj4gaGFuZGxlczsKICAgICBpZiAoIWhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oCmluZGV4IDhkNTY4MmFhNDcy
OTY1YjFhMzc5OTMzYmVlOTliNzk0MWYwNzAzZDkuLjNiZTc1MmViOGZkMDMwNjUzOGU2MDM4NThk
ZDJkN2I1ZTYzMGQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYpID0gZGVmYXVsdDsKICAgICBNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zJiBvcGVyYXRvcj0oTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucyYmKSA9IGRlZmF1bHQ7CiAKLSAgICBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZl
Y3RvcjxTdHJpbmc+IGlkcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBoYW5kbGVz
KTsKKyAgICBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+IGlkcywg
VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBoYW5kbGVzKTsKIAogICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gb3BlcmF0b3JbXShzaXplX3Qg
aSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1faWRzOwotICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5IG1faGFuZGxlczsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBtX2hhbmRsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMmFjMjVkY2QzOWU0ODBkZjkzNmM2YWViNzll
YzIwYWZlYzJkNDQwOC4uNmVjMTg5MWMyNWU2ZThkOWVlNjIyM2JmNjhlYjkxODIyYzExMDllYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJgogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5OworICAgIFZlY3RvcjxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXk7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUo
cGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
CiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRo
bmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXkpLCAwKTsKICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0ZW5zaW9u
c0hhbmRsZUFycmF5LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggZTE0MTUwYjViOGRhNmMxNTcw
OWIzMGNhYzJhOWRlNDY3ZGUyYmFiYy4uMzJkNGU3NTliNmI0ZmZhNjExYmRjNjBhMGNiMDhhNmYx
OWFiOGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihjb25zdCBGcmFtZSYgZnJhbWUsIEVkaXRvclN0
YXRlJiByZXN1CiAgICAgcG9zdExheW91dERhdGEuYmFzZVdyaXRpbmdEaXJlY3Rpb24gPSBmcmFt
ZS5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9ucyhj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgbmV0d29ya0V4dGVuc2lvbnNIYW5k
bGVzKQordm9pZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNp
b25zKGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBuZXR3b3JrRXh0ZW5z
aW9uc0hhbmRsZXMpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShuZXR3b3JrRXh0ZW5zaW9uc0hhbmRsZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0
ZTRiYmNmYmJjZGFlZWEwYjEyNWY3YjBkOGU2M2YwZGZlODIzYWY3Li4zN2ZjYzAwODBmNmJhYmIx
M2VlZjQzYjZkYmE3NjgyODZkM2I5ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjk2Myw3ICsyOTYzLDcgQEAgc3RhdGljIGJvb2wgaGFu
ZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdlKiBw
YWdlKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk+JiYgc2FuZGJveEV4dGVuc2lvbnMpCit2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnQoY29u
c3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPj4mJiBzYW5kYm94RXh0ZW5zaW9ucykKIHsKICAgICBTZXRGb3JT
Y29wZTxib29sPiB1c2VySXNJbnRlcmFjdGluZ0NoYW5nZSB7IG1fdXNlcklzSW50ZXJhY3Rpbmcs
IHRydWUgfTsKIApAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRMYXllckhv
c3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgcGx1
Z2luVmlldy0+c2V0TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lv
biwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIG5ldHdvcmtFeHRlbnNpb25z
SGFuZGxlcykKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiYmIHBv
bGljeURlY2lzaW9uLCBjb25zdCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYgbmV0
d29ya0V4dGVuc2lvbnNIYW5kbGVzKQogewogICAgIGNvbnN1bWVOZXR3b3JrRXh0ZW5zaW9uU2Fu
ZGJveEV4dGVuc2lvbnMobmV0d29ya0V4dGVuc2lvbnNIYW5kbGVzKTsKIApAQCAtNDM1Nyw3ICs0
MzU3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KICNlbHNlCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFn
RGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5KQordm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRy
b2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFZlY3RvcjxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSkK
IHsKICAgICBpZiAoIW1fcGFnZSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om51bGxvcHQsIERyYWdIYW5k
bGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CkBAIC00Njk2LDcgKzQ2OTYs
NyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiB9CiAKICNpZiBFTkFC
TEUoU0FOREJPWF9FWFRFTlNJT05TKQotdm9pZCBXZWJQYWdlOjpleHRlbmRTYW5kYm94Rm9yRmls
ZXNGcm9tT3BlblBhbmVsKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykK
K3ZvaWQgV2ViUGFnZTo6ZXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChWZWN0b3I8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmIGhhbmRsZXMpCiB7CiAgICAgYm9vbCByZXN1bHQg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlcyk7CiAgICAgaWYg
KCFyZXN1bHQpIHsKQEAgLTc2MDAsNyArNzYwMCw3IEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgV2ViUGFnZTo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKIH0KICNl
bmRpZgogCi1WZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBXZWJQYWdlOjpjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94
RXh0ZW5zaW9ucykKK1ZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IFdlYlBhZ2U6OmNv
bnN1bWVTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYm
IHNhbmRib3hFeHRlbnNpb25zKQogewogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4+IGRyYWdTYW5kYm94RXh0ZW5zaW9uczsKICAgICBmb3IgKGF1dG8mIHNhbmRib3hFeHRlbnNp
b24gOiBzYW5kYm94RXh0ZW5zaW9ucykgewpAQCAtNzY4OSw3ICs3Njg5LDcgQEAgdm9pZCBXZWJQ
YWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKQogI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OmNvbnN1bWVOZXR3b3JrRXh0ZW5zaW9uU2Fu
ZGJveEV4dGVuc2lvbnMoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKQordm9p
ZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0
IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JikKIHsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc4ZDgzMGRhNDJkOTU2
N2NkZjk1Y2ZhMWZlMzI3MzMwMmZmM2IyMWMuLmZhNzY1MzczOGRmYWUwNzgxMWJiNTU4NTY4NDM3
ZWZhZWI4M2FkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTk3Miw3ICs5NzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpICYmICFQTEFURk9STShHVEspCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVy
QWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE2MDUsNyArMTYwNSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAKLSAgICB2b2lkIG1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+JiYgc2FuZGJveEV4dGVuc2lvbnMpOworICAgIHZvaWQgbW91c2VFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50Jiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPj4mJiBzYW5kYm94RXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBrZXlFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKQEAg
LTE2ODksNyArMTY4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYsIGNv
bnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+Jik7CiAgICAgdm9pZCBjb250aW51
ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVu
ZXJJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBz
ZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtMTc1Nyw3ICsxNzU3
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykK
LSAgICB2b2lkIGV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkmJik7CisgICAgdm9pZCBleHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9t
T3BlblBhbmVsKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYpOwogI2VuZGlmCiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihHZW9sb2Nh
dGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsKQEAgLTE5
MDksMTIgKzE5MDksMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1EaWRTY2FsZVBh
Z2UoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IGNvbnN1bWVTYW5k
Ym94RXh0ZW5zaW9ucyhTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKKyAgICBWZWN0
b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoVmVj
dG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJik7CiAgICAgdm9pZCByZXZva2VTYW5kYm94
RXh0ZW5zaW9ucyhWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgc2FuZGJveEV4dGVu
c2lvbnMpOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCk7CiAgICAgCi0gICAgdm9pZCBj
b25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5Jik7CisgICAgdm9pZCBjb25zdW1lTmV0d29ya0V4dGVuc2lvblNh
bmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+Jik7
CiAKICAgICB2b2lkIHBsYXRmb3JtSXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggZjg3YjQ1OWY4NmY3MGU2MDU5MjQ2M2JkOWU1OTE3NzdmOWYwMjIwMC4uMGUyYWE1MDdm
NTA2OWEzMTQ2ZWY2MGJmMjM0ZDBkNTQzNDEwMWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00Niw3ICs0Niw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgRXhlY3V0ZUVk
aXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQpIC0+ICgp
IEFzeW5jCiAgICAgS2V5RXZlbnQoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50KQotICAg
IE1vdXNlRXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25zKQor
ICAgIE1vdXNlRXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHNhbmRib3hFeHRlbnNp
b25zKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1cmF0
aW9uVmlld0xheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGRvdWJsZSBzY2FsZUZh
Y3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICBTZXRNYXhpbXVt
VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCkBAIC0xOTQsNyArMTk0LDcg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhz
dHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKICAgICBO
b3RpZnlVc2VyU2NyaXB0cygpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBzdHJ1Y3QgV2Vi
S2l0OjpQb2xpY3lEZWNpc2lvbiBwb2xpY3lEZWNpc2lvbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBuZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKQorICAg
IERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgdWludDY0X3QgbGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gcG9s
aWN5RGVjaXNpb24sIFZlY3RvcjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbmV0
d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucykKIAogICAgIENvbnRpbnVlV2lsbFN1Ym1p
dEZvcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJv
bGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0
YSBzZWxlY3Rpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncz4gZmxh
Z3MpCiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFn
Q29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBs
b2FkKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNp
b25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEaWRT
dGFydERyYWcoKQpAQCAtMzUzLDcgKzM1Myw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAg
ICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMsIFZl
Y3RvcjxTdHJpbmc+IHJlcGxhY2VtZW50VVJMcykKICAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwo
KQogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgRXh0ZW5kU2FuZGJveEZvckZp
bGVzRnJvbU9wZW5QYW5lbChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNh
bmRib3hFeHRlbnNpb25zKQorICAgIEV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwo
VmVjdG9yPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9u
cykKICNlbmRpZgogCiAgICAgIyBTcGVsbGluZyBhbmQgZ3JhbW1hci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5NzYwMDRiZTRhNGVmYTAwYmVhMjk0N2Q0Y2E5OWE4
OGIxNDVhNWQuLjUwYjg3MDNjYjZiNTdjOWU1YjZkYjNkZDhkYWFhMjY3NmYyNTg4NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ5LDEwICszNDksMTAgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHZvaWQgZW5hYmxlUmVtb3Rl
V2ViSW5zcGVjdG9yKCk7CiAjZW5kaWYKLSAgICB2b2lkIHVuYmxvY2tTZXJ2aWNlc1JlcXVpcmVk
QnlBY2Nlc3NpYmlsaXR5KGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7Cisg
ICAgdm9pZCB1bmJsb2NrU2VydmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eShjb25zdCBWZWN0
b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYpOwogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVD
VF9NT0RFKQogICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBl
bmNvZGVkVmFsdWUpOwotICAgIHZvaWQgdW5ibG9ja1ByZWZlcmVuY2VTZXJ2aWNlKFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5JiYpOworICAgIHZvaWQgdW5ibG9ja1ByZWZlcmVuY2VTZXJ2
aWNlKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYpOwogI2VuZGlmCiAgICAgdm9p
ZCBwb3dlclNvdXJjZURpZENoYW5nZShib29sKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiMDUyODBjZTA2MDA3NWEx
NzBiZmUzOTZiMGY0M2Q4MmJkNWFiMGYwLi41NDJjZjliMDgwMmFiYzk4MjJjY2YwMTk5YmFmYmI3
ODA0M2MxZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTcyLDEwICsxNzIsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBTd2l0Y2hGcm9tU3RhdGljRm9udFJl
Z2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVW5i
bG9ja1NlcnZpY2VzUmVxdWlyZWRCeUFjY2Vzc2liaWxpdHkoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBoYW5kbGVBcnJheSkKKyAgICBVbmJsb2NrU2VydmljZXNSZXF1aXJl
ZEJ5QWNjZXNzaWJpbGl0eShWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IGhhbmRsZUFycmF5KQogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQogICAgIE5vdGlm
eVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQotICAgIFVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZUFycmF5KQorICAgIFVu
YmxvY2tQcmVmZXJlbmNlU2VydmljZShWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGhhbmRsZUFycmF5KQogI2VuZGlmCiAgICAgUG93ZXJTb3VyY2VEaWRDaGFuZ2UoYm9v
bCBoYXNBQykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzdhNzE1ZmM2MWQyNzczNGZhMDljZDkzMmY1NmE5MDFi
ZWRlNTAxZS4uMzA2YTIyYTZlZTM0OTliMTEyNGM4ZTRkZDlkMjQ4ODJmNTVmNjlkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBA
IC0xMTk1LDcgKzExOTUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZQogICAgIGRpc3BhdGNo
U2ltdWxhdGVkTm90aWZpY2F0aW9uc0ZvclByZWZlcmVuY2VDaGFuZ2Uoa2V5KTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzOjp1bmJsb2NrUHJlZmVyZW5jZVNlcnZpY2UoU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkmJiBoYW5kbGVBcnJheSkKK3ZvaWQgV2ViUHJvY2Vzczo6dW5ibG9ja1ByZWZl
cmVuY2VTZXJ2aWNlKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgaGFuZGxlQXJy
YXkpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZUFy
cmF5KTsKICAgICBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKGZhbHNlKTsKQEAgLTEyNTUs
NyArMTI1NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlUGFnZVNjcmVlblByb3BlcnRpZXMo
KQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6dW5ibG9ja1NlcnZpY2VzUmVxdWlyZWRC
eUFjY2Vzc2liaWxpdHkoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRs
ZUFycmF5KQordm9pZCBXZWJQcm9jZXNzOjp1bmJsb2NrU2VydmljZXNSZXF1aXJlZEJ5QWNjZXNz
aWJpbGl0eShjb25zdCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYgaGFuZGxlQXJy
YXkpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGNvbnN1bWVkID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZUFycmF5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435896</attachid>
            <date>2021-08-19 13:16:40 -0700</date>
            <delta_ts>2021-08-19 18:43:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229100-20210819131640.patch</filename>
            <type>text/plain</type>
            <size>75408</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM0MjBjMzc0NzVhYWEyMmU1
MjM3ZWU2ZjU1M2U2MDU2ZGU0ZGJkMzAuLmQwMjk1Njc4N2FkZGZhMThjZjI0YTU1MmQ0OTYxMmEz
N2IwOThlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIxLTA4LTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGluc3RlYWQgb2YgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAg
IE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgbW9yZSBtb2Rlcm4gY29kZS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvTG9hZFBhcmFt
ZXRlcnNDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OnBsYXRmb3Jt
RGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMp
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2Nh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheTo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJl
ZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlJlc3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCUmVz
dWx0OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QlJlc3VsdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJSZXN1bHQ6OldlYklEQlJlc3VsdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlJlc3VsdDo6aGFuZGxlcyBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRl
bnNpb24uaDoKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhh
bmRsZXNGb3JGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNvbnN1
bWVQZXJtYW5lbnRseSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5OjphdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6OmVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjpiZWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVu
c2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJk
UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tB
Y2Nlc3NpYmlsaXR5U2VydmVySWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1EcmFn
T3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0
ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNp
b25zU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJ
bnRlcmFjdGlvbjpwZXJmb3JtRHJvcDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6
ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29u
c3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3Vz
ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2FuZGJveEZvckZpbGVzRnJv
bU9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnN1bWVTYW5kYm94RXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnN1bWVOZXR3b3JrRXh0ZW5z
aW9uU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bmJsb2NrUHJl
ZmVyZW5jZVNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bmJsb2NrU2Vy
dmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eSk6CisKIDIwMjEtMDgtMTkgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEVsZW1lbnQ6OmNs
aWVudFJlY3QoKSB3aGljaCBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZSBpbiB3ZWItZXhwb3NlZCAi
Y2xpZW50IiBjb29yZGluYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGU4Yzk5MTNkMzViOTE0
YjEyMzlhNjczYTZiNDYzYTg2OTlhM2E4YjMuLmFlOWQ0NzA0NDg1MDMyMGEzYjMxYWY4ZmJhZWRi
YWViZWRhNmY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTkxLDE5ICs5MSwxOSBAQCBib29s
IEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIEdQVVByb2Nlc3NDcmVhdAogICAgIHJlc3VsdC5jb250YWluZXJUZW1wb3JhcnlEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBz
dGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBjb21waWxlclNlcnZp
Y2VFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4+IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVj
b2RlciA+PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghY29tcGls
ZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
c3VsdC5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqY29tcGlsZXJT
ZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGR5bmFtaWNJT0tp
dEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzOwogICAgIGlmICghZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0g
V1RGTW92ZSgqZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhh
bmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Pj4gZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gZHluYW1pY01h
Y2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBkNGE5YjJiNzU1Nzgz
OTgzYmFkNTczMWZlNmE1MjY4NmQyMWMzN2E0Li41YTY2NjE3MDRiNGRjZmIyYTFmYTNlMzA5NGZj
MTMxZGUwZWNkZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTUyLDkgKzUyLDkgQEAgc3RydWN0IEdQ
VVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKLSAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVj
dG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFu
ZGxlczsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkeW5hbWljSU9LaXRF
eHRlbnNpb25IYW5kbGVzOworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGR5
bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogCiAgICAgU3RyaW5nIHd0ZkxvZ2dp
bmdDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZmQzMjNhYzE0ZWVh
MWJkOWNjZjEwNjQ3OTI2ZjMwMWIyNWM0YmIzYi4uMzA0MWQ0ZjhhMzA3NjUxNzkzMzVkMWEwNjg4
ODVkNmQ4YzAzZmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTUxLDIyICs1
MSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmIChyZXF1ZXN0Lmh0dHBCb2R5KCkpIHsKICAg
ICAgICAgcmVxdWVzdC5odHRwQm9keSgpLT5lbmNvZGUoZW5jb2Rlcik7CiAKLSAgICAgICAgY29u
c3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzID0gcmVxdWVzdC5odHRwQm9keSgp
LT5lbGVtZW50cygpOwotICAgICAgICBzaXplX3QgZmlsZUNvdW50ID0gMDsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIGNvdW50ID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnRzW2ldLmRhdGEpKQotICAgICAgICAgICAgICAgICsr
ZmlsZUNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKLSAgICAgICAgcmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9ucy5hbGxvY2F0ZShmaWxlQ291bnQpOwotICAgICAgICBzaXplX3QgZXh0
ZW5zaW9uSW5kZXggPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVt
ZW50cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBGb3JtRGF0
YUVsZW1lbnQmIGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKKyAgICAgICAgVmVjdG9yPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKKyAgICAgICAg
Zm9yIChjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiByZXF1ZXN0Lmh0dHBCb2R5KCkt
PmVsZW1lbnRzKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0
X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPmZpbGVuYW1lOwog
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCi0gICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgr
K10gPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBlbmNvZGVyIDw8IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lv
bnM7CkBAIC0xNzgsMTIgKzE2OCwxMiBAQCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjbwogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRU
UEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGRlY29kZXIg
Pj4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFyZXF1
ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXF1ZXN0Qm9keVNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
ZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlcy0+YXQoaSkpKSkKKyAgICAgICAgZm9yIChhdXRvJiBoYW5k
bGUgOiBXVEZNb3ZlKCpyZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUoaGFuZGxlKSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2FuZGJv
eEV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoZXh0ZW5zaW9uKSk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRl
eCA4M2MyNDdmYTYxOWQ1NzE5MzQ4YTU1MTJjMTRjNmY3NjE2YjU3MWNiLi5jMmQ1ODk1OTVmNWUz
NDEwZDFhZWFmNDJiYTdhZWUyMzhmNzE1NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTUwLDE5ICs1MCwxMiBAQCBwdWJsaWM6CiAK
ICAgICAgICAgZW5jb2RlciA8PCAqbV9kYXRhOwogCi0gICAgICAgIGF1dG8mIGVsZW1lbnRzID0g
bV9kYXRhLT5lbGVtZW50cygpOwotICAgICAgICBzaXplX3QgZmlsZUNvdW50ID0gc3RkOjpjb3Vu
dF9pZihlbGVtZW50cy5iZWdpbigpLCBlbGVtZW50cy5lbmQoKSwgW10oYXV0byYgZWxlbWVudCkg
ewotICAgICAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8V2ViQ29yZTo6Rm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7Ci0gICAgICAgIH0p
OwotCi0gICAgICAgIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZXM7Ci0gICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzLmFsbG9j
YXRlKGZpbGVDb3VudCk7Ci0gICAgICAgIHNpemVfdCBleHRlbnNpb25JbmRleCA9IDA7Ci0gICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CisgICAgICAgIFZlY3RvcjxXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7Cisg
ICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZGF0YS0+ZWxlbWVudHMoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6Rm9ybURhdGFF
bGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCi0gICAg
ICAgICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2V4dGVuc2lvbkluZGV4Kytd
ID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGVuY29kZXIgPDwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CkBAIC04MSw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQppbmRleCBlMjYzZmE4M2ExYTM2OGRmYjE4
YTBmYTY5NmQ5MWY0MzdhY2Q2ODc3Li42MjA4ODNhOTcxYjg3MjUxMTI4N2Y1M2Y3ZWI2ZGM1Yzc1
ZTZlNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1l
dGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0
ZXJzQ29jb2EubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6cGxhdGZv
cm1EZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgcGFyYW0KICAg
ICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIHBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRl
eHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5PiBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhh
bmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Pj4gbmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIg
Pj4gbmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghbmV0
d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KaW5kZXggZmE4MWRhZmFmNDYyMjVmZGFkZWU0Y2M5MmJmZTVlODBjNDgxMWNkZi4u
M2NjYmRjNjI5MGVhODEyZDhhYmViNTcwODFjMjJmMzQxYzQ0ZjQwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTcy
LDcxICsxNzIsNiBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxIYQogICAgIHJldHVybiBXVEZNb3Zl
KGhhbmRsZSk7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJh
eSgpCi17Ci19Ci0KLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXko
KQotewotfQotCi12b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZShz
aXplX3Qgc2l6ZSkKLXsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFT
U0VSVChtX2RhdGEuaXNFbXB0eSgpKTsKLQotICAgIG1fZGF0YS5yZXNpemUoc2l6ZSk7Ci19Ci0K
LXZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFwcGVuZChIYW5kbGUmJiBoYW5k
bGUpCi17Ci0gICAgbV9kYXRhLmFwcGVuZChXVEZNb3ZlKGhhbmRsZSkpOwotfQotCi1TYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRv
cltdKHNpemVfdCBpKQotewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwotICAgIHJldHVybiBtX2RhdGFbaV07Ci19Ci0KLWNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1f
ZGF0YVtpXTsKLX0KLQotc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXpl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kYXRhLnNpemUoKTsKLX0KLQotdm9pZCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKLXsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKCkpOwotICAg
IGZvciAoYXV0byYgaGFuZGxlIDogbV9kYXRhKQotICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
LX0KLQotc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKLSAgICBkZWNvZGVyID4+IHNpemU7
Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8ICpzaXplOyArK2kpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGhhbmRsZTsKLSAgICAgICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgICAg
IGlmICghaGFuZGxlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
aGFuZGxlcy5hcHBlbmQoV1RGTW92ZSgqaGFuZGxlKSk7Ci0gICAgfQotICAgIHJldHVybiBXVEZN
b3ZlKGhhbmRsZXMpOwotfQotCiBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKEhhbmRsZSYmIGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24pCkBAIC0yOTUsMjYgKzIzMCwxNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRp
bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxUPiYgcmVz
b3VyY2VzLCBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4o
Y29uc3QgVCYpPiYmIGNyZWF0ZUZ1bmN0aW9uKQorc3RhdGljIFZlY3RvcjxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoY29uc3QgVmVjdG9yPFQ+JiBy
ZXNvdXJjZXMsIEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Pihjb25zdCBUJik+JiYgY3JlYXRlRnVuY3Rpb24pCiB7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgaGFuZGxlQXJyYXk7Ci0KLSAgICBpZiAocmVzb3VyY2VzLnNpemUoKSA+IDAp
Ci0gICAgICAgIGhhbmRsZUFycmF5LmFsbG9jYXRlKHJlc291cmNlcy5zaXplKCkpOwotCi0gICAg
c2l6ZV90IGN1cnJlbnRIYW5kbGUgPSAwOworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGhhbmRsZUFycmF5OwogICAgIGZvciAoY29uc3QgYXV0byYgcmVzb3VyY2UgOiByZXNv
dXJjZXMpIHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBjcmVhdGVGdW5jdGlvbihyZXNvdXJjZSk7
Ci0gICAgICAgIGlmICghaGFuZGxlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGhh
bmRsZUFycmF5W2N1cnJlbnRIYW5kbGVdID0gV1RGTW92ZSgqaGFuZGxlKTsKLSAgICAgICAgKytj
dXJyZW50SGFuZGxlOworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBjcmVhdGVGdW5jdGlvbihy
ZXNvdXJjZSkpCisgICAgICAgICAgICBoYW5kbGVBcnJheS5hcHBlbmQoV1RGTW92ZSgqaGFuZGxl
KSk7CiAgICAgfQotICAgIAogICAgIHJldHVybiBoYW5kbGVBcnJheTsKIH0KIAotU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5k
bGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpCithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZp
bGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKSAt
PiBWZWN0b3I8SGFuZGxlPgogewogICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2Vz
PFN0cmluZz4ocGF0aHMsIFsmbG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgpIHsKICAgICAg
ICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpOwpAQCAtMzk0LDcgKzMyMCw3IEBAIGF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwg
c2VydmljZSwgc3RkOjpvcHRpCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxh
Z3MpCithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNv
bnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFu
ZGxlPgogewogICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzPEFTQ0lJTGl0ZXJh
bD4oc2VydmljZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc2Vy
dmljZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsKICAgICAgICAgYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0
VG9rZW4sIGZsYWdzKTsKQEAgLTQzMSw3ICszNTcsNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlvS2l0Q2xh
cwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0
ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3Mp
CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5z
aW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+
IFZlY3RvcjxIYW5kbGU+CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXM8
QVNDSUlMaXRlcmFsPihpb2tpdENsYXNzZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFT
Q0lJTGl0ZXJhbCYgaW9raXRDbGFzcykgewogICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9raXRDbGFzcywg
YXVkaXRUb2tlbiwgZmxhZ3MpOwpAQCAtNDk5LDcgKzQyNSw3IEBAIGJvb2wgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5
KGNvbnN0IEhhbmRsZUFycmF5JiBoYW5kbGVBcnJheSkKK2Jvb2wgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5kbGU+JiBoYW5kbGVBcnJheSkKIHsK
ICAgICBib29sIGFsbFN1Y2NlZWRlZCA9IHRydWU7CiAgICAgZm9yIChhdXRvJiBoYW5kbGUgOiBo
YW5kbGVBcnJheSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQuY3BwCmluZGV4IGQwNjRkYWUxYTU5ZDVmOGVlNWFj
YjFlMGNmZGFiMWMyMDEwYzZhMjAuLmI0MjBkZGYwZDEyMDM1YTQ4ZmM5MGVlMThiNDg3N2IyOTI1
ZDAwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQlJlc3VsdC5jcHAKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHZvaWQgV2ViSURCUmVzdWx0OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewotICAgIG1fcmVzdWx0RGF0YS5lbmNvZGUoZW5jb2Rlcik7Ci0gICAgbV9oYW5k
bGVzLmVuY29kZShlbmNvZGVyKTsKKyAgICBlbmNvZGVyIDw8IG1fcmVzdWx0RGF0YTsKKyAgICBl
bmNvZGVyIDw8IG1faGFuZGxlczsKIH0KIAogYm9vbCBXZWJJREJSZXN1bHQ6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFdlYklEQlJlc3VsdCYgcmVzdWx0KQpAQCAtNDQsNyArNDQsNyBA
QCBib29sIFdlYklEQlJlc3VsdDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSURC
UmVzdWx0JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQubV9yZXN1
bHREYXRhID0gV1RGTW92ZSgqcmVzdWx0RGF0YSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBoYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBo
YW5kbGVzOwogICAgIGlmICghaGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1
bHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCUmVz
dWx0LmgKaW5kZXggZWVlZjdiNTliMzg2NWE3NDQ3YTA3ZDhjNWMxZTFkYWY2NWY4ODM2ZS4uZjc1
YWNlNGYyZTVjNzE3NjhjMjFhNjc3NDRmYWMwZWIwNDk1NTczNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3VsdC5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgV2ViSURCUmVzdWx0
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKKyAgICBXZWJJREJSZXN1bHQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSwgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4mJiBoYW5kbGVzKQogICAgICAgICA6IG1fcmVzdWx0RGF0YShyZXN1bHREYXRhKQogICAg
ICAgICAsIG1faGFuZGxlcyhXVEZNb3ZlKGhhbmRsZXMpKQogICAgIHsKQEAgLTUzLDE0ICs1Mywx
NCBAQCBwdWJsaWM6CiAgICAgV2ViSURCUmVzdWx0JiBvcGVyYXRvcj0oV2ViSURCUmVzdWx0JiYp
ID0gZGVmYXVsdDsKIAogICAgIGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdERhdGE7IH0KLSAgICBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlczsg
fQorICAgIGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBoYW5kbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYW5kbGVzOyB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIFdlYklEQlJlc3VsdCYpOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OklE
QlJlc3VsdERhdGEgbV9yZXN1bHREYXRhOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IG1faGFuZGxlczsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtX2hh
bmRsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5oCmluZGV4IGYwOWQwYmM1ZTM4NzMxYWVhNzVkYzIzZjc5MDlmM2Y2ZDBlMjAw
ZDQuLjA2MjA5NjQ2OGZlODdiNjhjMTllZjM4MDc3YTI1YTkyMWQ5ZDRlZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNzYsNyArNzYsNyBAQCBzdHJ1Y3QgTG9hZFBh
cmFtZXRlcnMgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgbmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOworICAgIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5z
aW9uSGFuZGxlczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGQ6Om9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGVudEZpbHRlckV4dGVuc2lvbkhhbmRsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCAzMTFjYzc0YzYyYmRk
YTRkMTQ3YzIyMWY4NWIzZTU1ZWQ0ZWU0ODFjLi40Y2I1YmU3MTAwOTRiNzBkOTVhNzg5M2E4NWM3
MzMxMjQ4M2ExMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsOwogCiBjbGFzcyBTYW5k
Ym94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewogcHVi
bGljOgotICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhf
dCB7CiAgICAgICAgIFJlYWRPbmx5LAogICAgICAgICBSZWFkV3JpdGUsCiAgICAgICAgIE1hY2gs
CkBAIC04Miw0OCArODIsMjAgQEAgcHVibGljOgogICAgICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gbV9zYW5kYm94RXh0ZW5zaW9uOwogI2VuZGlmCiAg
ICAgfTsKLQotICAgIGNsYXNzIEhhbmRsZUFycmF5IHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSGFuZGxlQXJyYXkpOwotICAgIHB1YmxpYzoKLSAgICAgICAgSGFuZGxlQXJyYXkoKTsK
LSAgICAgICAgSGFuZGxlQXJyYXkoSGFuZGxlQXJyYXkmJikgPSBkZWZhdWx0OwotICAgICAgICBI
YW5kbGVBcnJheSYgb3BlcmF0b3I9KEhhbmRsZUFycmF5JiYpID0gZGVmYXVsdDsKLSAgICAgICAg
fkhhbmRsZUFycmF5KCk7Ci0gICAgICAgIHZvaWQgYWxsb2NhdGUoc2l6ZV90KTsKLSAgICAgICAg
dm9pZCBhcHBlbmQoSGFuZGxlJiYpOwotICAgICAgICBIYW5kbGUmIG9wZXJhdG9yW10oc2l6ZV90
IGkpOwotICAgICAgICBIYW5kbGUmIGF0KHNpemVfdCBpKSB7IHJldHVybiBvcGVyYXRvcltdKGkp
OyB9Ci0gICAgICAgIGNvbnN0IEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7Ci0g
ICAgICAgIEhhbmRsZSogYmVnaW4oKTsKLSAgICAgICAgSGFuZGxlKiBlbmQoKTsKLSAgICAgICAg
Y29uc3QgSGFuZGxlKiBiZWdpbigpIGNvbnN0OwotICAgICAgICBjb25zdCBIYW5kbGUqIGVuZCgp
IGNvbnN0OwotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlQXJyYXk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLQotICAgIHByaXZhdGU6Ci0jaWYgRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAgICAgVmVjdG9yPEhhbmRsZT4gbV9kYXRhOwot
I2Vsc2UKLSAgICAgICAgSGFuZGxlIG1fZW1wdHlIYW5kbGU7Ci0jZW5kaWYKLSAgICB9OwogICAg
IAogICAgIHN0YXRpYyBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKEhhbmRsZSYmKTsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFR5cGUpOwotICAgIHN0YXRpYyBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwgbG9nTGFiZWwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNy
ZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+
IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlw
ZSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gV2lsbCBhdHRlbXB0IHRvIGNy
ZWF0ZSB0aGUgZGlyZWN0b3J5LgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxI
YW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRl
SGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwog
I2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwot
ICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChjb25zdCBW
ZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3Rv
cjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3RvcjxBU0NJSUxp
dGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0
PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5k
bGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBh
dWRpdF90b2tlbl90KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6
b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVs
dCk7Ci0gICAgc3RhdGljIEhhbmRsZUFycmF5IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0
ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQp
OworICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4
dGVuc2lvbnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0
KTsKICNlbmRpZgogICAgIH5TYW5kYm94RXh0ZW5zaW9uKCk7CiAKQEAgLTEzMSw4ICsxMDMsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgcmV2b2tlKCk7CiAKICAgICBib29sIGNvbnN1bWVQZXJtYW5l
bnRseSgpOworCisgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBub3QgYmUgY29uc3QuCiAgICAg
c3RhdGljIGJvb2wgY29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYpOwotICAgIHN0YXRp
YyBib29sIGNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGVBcnJheSYpOworICAgIHN0YXRp
YyBib29sIGNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNhbmRib3hFeHRlbnNpb24oY29u
c3QgSGFuZGxlJik7CkBAIC0xNDgsMjIgKzEyMiw5IEBAIGlubGluZSBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU6OkhhbmRsZSgpIHsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9CiBpbmxpbmUgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYpIHsgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB7IH07IH0KLWlubGlu
ZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKSB7IH0KLWlubGlu
ZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KCkgeyB9Ci1pbmxp
bmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUoc2l6ZV90KSB7
IH0KLWlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphcHBlbmQoSGFu
ZGxlJiYpIHsgfQotaW5saW5lIHNpemVfdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0gICAgCi1pbmxpbmUgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShz
aXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlIYW5kbGU7IH0KLWlubGluZSBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltd
KHNpemVfdCkgeyByZXR1cm4gbV9lbXB0eUhhbmRsZTsgfQotaW5saW5lIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgeyByZXR1
cm4gJm1fZW1wdHlIYW5kbGU7IH0KLWlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSB7IHJldHVybiAmbV9lbXB0eUhhbmRs
ZTsgfQotaW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSogU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgY29uc3QgeyByZXR1cm4gJm1fZW1wdHlIYW5kbGU7
IH0KLWlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zdCB7IHJldHVybiAmbV9lbXB0eUhhbmRsZTsgfQot
aW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdCB7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGVBcnJheT4g
eyByZXR1cm4geyBIYW5kbGVBcnJheSgpIH07IH0KIGlubGluZSBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmKSB7IHJldHVybiBudWxscHRy
OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07
IH0KLWlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgeyByZXR1cm4geyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgLT4gVmVjdG9yPEhhbmRsZT4geyByZXR1cm4geyB9OyB9CiBpbmxpbmUgYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25z
dCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxl
IHsgfTsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7
IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgLypwcmVmaXgqLywgVHlwZSkg
LT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgc3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPiB7IEhhbmRsZSB7IH0sIFN0cmluZyB7IH0gfSB9OyB9CkBAIC0xNzMsMTUgKzEzNCwx
MSBAQCBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKSB7IHJldHVybiB0cnVl
OyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4gdHJ1
ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCkg
eyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KGNvbnN0IEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KLWlubGluZSBib29sIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGVBcnJheSYpIHsg
cmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShjb25zdCBWZWN0b3I8SGFuZGxlPiYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBT
dHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
IHsgcmV0dXJuIHBhdGg7IH0KIGlubGluZSBTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQogaW5saW5lIFN0cmlu
ZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KICNlbHNlCi1pbmxpbmUgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YmVnaW4o
KSB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQotaW5saW5lIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuZCgpIHsgcmV0dXJuIG1fZGF0
YS5lbmQoKTsgfQotaW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSogU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJl
Z2luKCk7IH0KLWlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZW5kKCk7
IH0KIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCk7CiBTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CiBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNTY1ZmRiNmJhOTky
NDNjNThhMmUyNGI2MmZjN2I3OTI1ZTA3N2RjMi4uZDY2ZjkxYTg1MWI4N2I2ZWY0ZGU0ZGVmMjhi
ODc2NjlkYmIwNTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+
IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+PiBhdHRhY2htZW50
RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50RWxlbWVu
dEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhh
bmRsZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zOTIsMjYgKzM5MiwyNiBA
QCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3
aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gbWVkaWFFeHRlbnNp
b25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gbWVkaWFFeHRlbnNpb25IYW5kbGVzOwogICAgIGlm
ICghbWVkaWFFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqbWVkaWFFeHRl
bnNpb25IYW5kbGVzKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5k
bGVzOwogICAgIGRlY29kZXIgPj4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYg
KCFtZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgq
bWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMpOwogICAgIC8vIEZJWE1FKDIwNzcxNik6IEVuZCBy
ZWdpb24gdG8gcmVtb3ZlLgogCi0gICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheT4gZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxl
czsKICAgICBkZWNvZGVyID4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdw
dUlPS2l0RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmdwdUlPS2l0
RXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxl
czsKICAgICBkZWNvZGVyID4+IGdwdU1hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZ3B1
TWFjaEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
ZjJiODQxMzdkZjQ0OTFkMWE3NTZhZTA1OGUzZjU5ODYzZWRhYTMxMy4uOTY4MjQ4ZDQzMmY2NDUx
ZTBkMmMyOWY3YTM0MGIwNjc0MTcyOWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzPiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5PiBhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gYXR0YWNo
bWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZTsKQEAgLTE3NiwxMCArMTc2
LDEwIEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKLSAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7IC8vIEZJWE1FKDIwNzcxNik6IFJl
bW92ZSB3aGVuIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgotICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOwotICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKLSAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBWZWN0
b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7IC8vIEZJ
WE1FKDIwNzcxNik6IFJlbW92ZSB3aGVuIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgorICAgIFZl
Y3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVz
OworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGdwdUlPS2l0RXh0ZW5zaW9u
SGFuZGxlczsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBncHVNYWNoRXh0
ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAg
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGZvbnRNYWNoRXh0ZW5z
aW9uSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBkY2E1NWUxYzkzMDUxNjYwZjliYzkyNDJhM2ZiZTFi
NDRmMzhlNzVlLi5hZmZiNThiMjk3NDQ4MjkxMTdkMTdkMWUyYTYxNDdlMjFiZjhiNmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBhZGRp
dGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5k
bGVzOwogICAgIGRlY29kZXIgPj4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwog
ICAgIGlmICghYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00NDYsNyArNDQ2LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAg
ICBwYXJhbWV0ZXJzLndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzID0gV1RGTW92ZSgqd2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0ZDo6b3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGNvbXBpbGVyU2VydmljZUV4dGVu
c2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPj4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+
IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFjb21waWxlclNlcnZp
Y2VFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzIsMjcgKzQ3
MiwyNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgIHBhcmFtZXRlcnMubGF1bmNoU2Vy
dmljZXNFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhh
bmRsZSk7CiAKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCi0gICAgc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gdmlkZW9EZWNvZGVyRXh0ZW5z
aW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+PiB2aWRlb0RlY29kZXJFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gdmlk
ZW9EZWNvZGVyRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIXZpZGVvRGVjb2RlckV4dGVuc2lv
bkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLnZpZGVvRGVj
b2RlckV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCp2aWRlb0RlY29kZXJFeHRlbnNpb25IYW5k
bGVzKTsKICNlbmRpZgogCi0gICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheT4gZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFu
ZGxlczsKICAgICBkZWNvZGVyID4+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlczsKICAgICBp
ZiAoIWRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHBhcmFtZXRlcnMuZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZGlh
Z25vc3RpY3NFeHRlbnNpb25IYW5kbGVzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZHluYW1pY01h
Y2hFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4+IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVy
ID4+IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWR5bmFtaWNNYWNoRXh0
ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuZHlu
YW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZHluYW1pY01hY2hFeHRlbnNpb25I
YW5kbGVzKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxl
czsKICAgICBkZWNvZGVyID4+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYg
KCFkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC01NDEsNyArNTQxLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQotICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+IHByZWZlcmVu
Y2VzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRs
ZXM7CiAgICAgZGVjb2RlciA+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYg
KCFwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCA1M2IxYTgxZDA3NWQ1NjNhMDk2ZDhkMmE4N2QwNjE5NzQ4YTQ5M2FjLi5kYzZiMjI5
N2QyZjhhZDlhODI1MWYyMjgyMmQ5ZGFjZDhlYzg5MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC03OCw3ICs3OCw3
IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBp
bmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGluamVjdGVk
QnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBhZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwog
CiAgICAgVXNlckRhdGEgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKIApAQCAtMjA1LDIwICsyMDUs
MjAgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzOwogICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOworICAgIFZlY3RvcjxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7
CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBj
b250YWluZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlOwogICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlOwogICAgIHN0
ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsYXVuY2hTZXJ2aWNlc0V4dGVu
c2lvbkhhbmRsZTsKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCi0gICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgdmlkZW9EZWNvZGVyRXh0ZW5zaW9uSGFuZGxlczsK
KyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiB2aWRlb0RlY29kZXJFeHRlbnNp
b25IYW5kbGVzOwogI2VuZGlmCiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBk
aWFnbm9zdGljc0V4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgZHluYW1pY01hY2hFeHRl
bnNpb25IYW5kbGVzOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGR5bmFtaWNJ
T0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOworICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMjM3LDcgKzIzNyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIEVOQUJMRShDRlBS
RUZTX0RJUkVDVF9NT0RFKQotICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk+IHByZWZlcmVuY2VzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhh
bmRsZXM7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDE2OTI1NGE4YmQ1OGRlZWQyZjgzMWJm
Y2RiMjNkZGFlZjBjODk1ZmMuLjMzMDFlZDQ4ZjA0NWE5ZGQ1NGYzYTg1M2JhZTkwZjEyZWRhN2Nh
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRm
b3JtTG9hZFBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBMb2FkUGFyYW0KICNl
bmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5l
ZWRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgZmlsZVJlYWRIYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBmaWxlVXBs
b2FkSGFuZGxlcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lm
TmVlZGVkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBmaWxlUmVhZEhhbmRsZSwgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mIGZp
bGVVcGxvYWRIYW5kbGVzKQogewogICAgIGlmICghZmlsZXMuc2l6ZSgpKQogICAgICAgICByZXR1
cm47CkBAIC0yMDksMTMgKzIwOSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJv
eEV4dGVuc2lvbnNJZk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBmaWxlVXBsb2FkSGFuZGxlcy5hbGxvY2F0ZShmaWxlcy5zaXplKCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpPCBmaWxlcy5zaXplKCk7IGkrKykgewotICAgICAg
ICBOU1N0cmluZyAqZmlsZSA9IGZpbGVzW2ldOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVz
KSB7CiAgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZpbGVdKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCi0gICAgICAgICAgICBmaWxlVXBsb2FkSGFuZGxlc1tp
XSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICBmaWxlVXBsb2FkSGFuZGxlcy5hcHBl
bmQoV1RGTW92ZSgqaGFuZGxlKSk7CiAgICAgfQogfQogCkBAIC02MzAsNyArNjI4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFVwSGlnaGxpZ2h0c09ic2VydmVyKCkKIAogI2VuZGlmCiAKLVNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4
dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCitWZWN0
b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtF
eHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoIXByb2Nlc3MuaGFzTmV0d29y
a0V4dGVuc2lvblNhbmRib3hBY2Nlc3MoKSAmJiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6aXNSZXF1aXJlZCgpKSB7CkBAIC02NDQsNyArNjQyLDcgQEAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hF
eHRlbnMKICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKHsgbmVIZWxwZXJTZXJ2aWNlLCBuZVNlc3Npb25NYW5hZ2VyU2VydmljZSB9LCBz
dGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgotICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSgpOworICAgIHJldHVybiB7IH07CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggZGM4MWIwOTc4ZDkyYTc5YjhmMTg5ZWI3N2Iw
YzIwMzU5OWY1MDg3YS4uN2M4OWExYmQ4YWZhNmU5Yzk0Mjc4NGUwZDc1ZmNhOTQzMmEwZmIzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgUwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIHBhdGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5k
Ym94RXh0ZW5zaW9ucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywgVmVjdG9yPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9ucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCks
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KSk7CiAKQEAgLTE2OCwxOCArMTY4LDE3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBlcmZvcm1B
c0RhdGFPd25lcigqZGF0YU93bmVyLCBbJl0gewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRo
bmFtZXM7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRl
bnNpb25zOworICAgICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94
RXh0ZW5zaW9uczsKICAgICAgICAgaWYgKHdlYlByb2Nlc3NQcm94eUZvckNvbm5lY3Rpb24oY29u
bmVjdGlvbikpIHsKICAgICAgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIHBhc3RlYm9hcmRUeXBlKTsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgICAgICAvLyBPbiBpT1MsIGZpbGVzIGFyZSBjb3BpZWQgaW50
byBhcHAncyBjb250YWluZXIgdXBvbiBwYXN0ZS4KLSAgICAgICAgICAgIHNhbmRib3hFeHRlbnNp
b25zLmFsbG9jYXRlKHBhdGhuYW1lcy5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwYXRobmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBhdXRv
JiBmaWxlbmFtZSA9IHBhdGhuYW1lc1tpXTsKICAgICAgICAgICAgICAgICBpZiAoIVtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlbmFtZV0pCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFtZSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHkpKQotICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5z
aW9uc1tpXSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICAgICAgICAgIHNhbmRib3hF
eHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgxMjdiYWFiZmZmMDdiYzNmMWQ3ODMxZWMxNWNi
MGE3NTFkZTZlMjAuLmRjYWRmOGU5MmJiNDhkMDA1NmY3ZDIwMWM5NWQ4YmRhOTZhOGE1ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVuYmxv
Y2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVkZWQoKQogICAgIGlmICghY2FuU2VuZE1lc3NhZ2Uo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkg
aGFuZGxlQXJyYXk7CisgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxl
QXJyYXk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBoYW5kbGVBcnJheSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhv
bmUuYXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFw
cHNlcnZpY2VzIl9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tl
bigpIDogc3RkOjpudWxsb3B0KTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAw
OGZmYWRlOTlhYzU1ODM5MGQxNDEzODliMzc1ODQ4NjY3Mjk3ZWI3Li40OTU1NDllMzgyZGYwNWVi
MDhlODBkZmUyMDM3NjFiYTMwOTlhOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8p
CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQu
dHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5k
bGU7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZv
clVwbG9hZDsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0
ZW5zaW9uRm9yVXBsb2FkOwogCiAgICAgaWYgKCFbdHlwZXMgY29udGFpbnNPYmplY3Q6UGFzdGVi
b2FyZFR5cGVzOjpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0
OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7CiAKQEAgLTQz
MTQsNyArNDMxNCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlk
IDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgICAgICAgICAgICAgICAgICBmaWxl
TmFtZXMtPmFwcGVuZChwYXRoLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVO
YW1lcy0+c2l6ZSgpID09IGZpbGVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5z
aW9uRm9yVXBsb2FkOworICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYWdlLT5jcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKCpmaWxl
TmFtZXMsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ0RhdGEtPnNldEZpbGVOYW1lcygqZmlsZU5h
bWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyLmNwcAppbmRleCBhODEwZjU1NjI2Y2JjNjQxZGUwNGQxMDFhZDQ5NDk0Mjk3ZTE5N2U3
Li45NDBmZDI5N2U5MmE0ZDU1NTNjZTJmZjkyY2RhZGY0YTNmOWY1YWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRp
YVN0cmVhbShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hCiAgICAgfQogCiAgICAgaWYgKGV4
dGVuc2lvbkNvdW50KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhh
bmRsZXM7CisgICAgICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZXM7
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlkczsKIAogICAgICAgICBpZiAoIXByb3h5LnBhZ2Uo
KS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjY3ZGI5OTI4NjNjNTBkMDk0YjI0
ZmM0MjU2YzM2NjJkYTdlZmI0ZS4uYTMyYzBmNjcxMWYyY2E1ZDZhNDg2MTJlMDM2ZjY4Yzk4N2Zl
ZmU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjQ4
LDEyICsyNjQ4LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRXhpdGVkKERyYWdEYXRhJiBk
cmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUpCiAgICAgcGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uOjpFeGl0ZWQsIGRyYWdEYXRhLCBk
cmFnU3RvcmFnZU5hbWUsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZv
cm1EcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3Rv
cmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lvbnNGb3JV
cGxvYWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdPcGVyYXRpb24oRHJhZ0RhdGEm
IGRyYWdEYXRhLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgVmVjdG9yPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKICAgICBwZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3Bl
cmF0aW9uLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0
b3JhZ2VOYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRlbnNpb25zRm9y
VXBsb2FkKQordm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJv
eEV4dGVuc2lvbnNGb3JVcGxvYWQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CkBAIC0yODIwLDcgKzI4MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJl
c3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5PiBzYW5kYm94RXh0ZW5zaW9uczsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBzYW5kYm94RXh0ZW5zaW9uczsK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGV2ZW50TWF5U3RhcnREcmFnID0gIW1fY3Vy
cmVudERyYWdPcGVyYXRpb24gJiYgZXZlbnRUeXBlID09IFdlYkV2ZW50OjpNb3VzZU1vdmUgJiYg
ZXZlbnQuYnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6QnV0dG9uOjpOb0J1dHRvbjsKQEAgLTEw
NzkxLDkgKzEwNzkxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFByZXZpZXdE
aWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudEMKICNlbmRpZgogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQotU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgV2ViUGFnZVBy
b3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcykKK1ZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5KCk7CisgICAgcmV0dXJuIHsgfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDNiNDY4ZWM2NDg2YzQ2ZmQ3ZjU1NzBlZmZhZDYyMDhlZjJh
NWE0ZDQuLjdjMTYwYzEyYjlmMDExMDkxYjg0ZmE0ZWYyMWMzNDZjZTM0Y2MxZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkcmFnRW50ZXJlZChXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkpOwogICAgIHZvaWQgZHJhZ1VwZGF0ZWQoV2Vi
Q29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9IFN0cmluZygp
KTsKICAgICB2b2lkIGRyYWdFeGl0ZWQoV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcm
IGRyYWdTdG9yYWdlTmFtZSA9IFN0cmluZygpKTsKLSAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0
aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYm
KTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBW
ZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1E
cmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBXZWJD
b3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2ln
bmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGlu
c2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3Qp
OwpAQCAtMTY1MSw3ICsxNjUxLDcgQEAgcHVibGljOgogICAgIFdlYlVSTFNjaGVtZUhhbmRsZXIq
IHVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVk
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBm
aWxlUmVhZEhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGZpbGVVcGxvYWRI
YW5kbGVzKTsKKyAgICB2b2lkIGNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGZpbGVSZWFk
SGFuZGxlLCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYgZmlsZVVwbG9hZEhhbmRs
ZXMpOwogI2VuZGlmCiAgICAgdm9pZCBlZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3Rh
dGUmKTsKICAgICBib29sIHVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBuZXdF
ZGl0b3JTdGF0ZSk7CkBAIC0yMzY0LDcgKzIzNjQsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxOU0FycmF5PiBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzOwogI2VuZGlmCiAKLSAgICB2b2lkIHBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6
RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOworICAgIHZvaWQg
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBXZWJDb3Jl
OjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiwgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJik7CiAKICAg
ICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIApAQCAtMjUxNiw3
ICsyNTE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVSTCYsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICNlbmRpZgogCi0gICAg
c3RhdGljIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNyZWF0ZU5ldHdvcmtFeHRlbnNp
b25zU2FuZGJveEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgc3RhdGljIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJv
eEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKICAgICBzdGF0aWMgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDI0NDJjZmEwN2Y4ZTc1MDQ0
OTA1M2ZjMGRiZTFmM2RlZDAwY2JmMmQuLjk0YjVhZjQwODUzZDgyMmZjNDkxZTFiZTc1M2UxNGU0
ZWZiZjA5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dm9pZCBnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
VHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRo
bmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYgcGF0aG5hbWVzLCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiYmKT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0
cmluZ3NGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAyZjg2N2UxMDIxNTAyYWQyOTdlNzY1OWIzN2EyNDYxODY5ODBiZjMwLi5iODllN2E3MDZm
ZGZjMDYzZjBiMGE0ZDhmYjcxZTNiMWJhZjE3ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC00Myw3ICs0
Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSBOb3RSZWZDb3VudGVkIHsKICAg
ICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCiAgICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgLT4gKHVpbnQ2NF90IG51bWJlck9mRmlsZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgogICAgIEdldFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+
IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkUGF0
aG5hbWVzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVj
dG9yPFN0cmluZz4gcGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IHNhbmRib3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBH
ZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzLCBWZWN0b3I8V2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KICAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMgV2Fu
dHNDb25uZWN0aW9uCiAgICAgR2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KICAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDg2MTA2ZDExZWQ0YmJm
ODljNjM1NzQ5OGJjOTliYzNlZjdiYTU1YmQuLjFmODNkNDAzMjQ5YzFkNzgzNmNkMmM0NGYyZDg3
NmRjOTMzMDQxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTc1NywxMCArNzU3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICAgICAg
ICAgIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICB9CiAKLSAgICBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nl
c3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNp
b25QYXRocy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1f
cmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQotICAgICAgICAgICAgcGFyYW1l
dGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0gPSBXVEZNb3ZlKCpoYW5k
bGUpOworICAgIGZvciAoYXV0byYgcGF0aCA6IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2Vi
UHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocykgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgcGFyYW1l
dGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMuYXBwZW5kKFdURk1vdmUoKmhh
bmRsZSkpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCBkNjc0OGUxMzBkYzQ4MDhkNzVjMWE4MTM3OWUwOTU2NDViMGNhNWJiLi5jZWVmNzE5OGYx
ZmQyYmVlYTFmNTEyYTMwZTYxODQxZGViZmVlNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTkyMjMs
NyArOTIyMyw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNl
aG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgIGNhcHR1cmVkRHJh
Z0RhdGEuc2V0RmlsZU5hbWVzKGZpbGVuYW1lcyk7CiAKICAgICAgICAgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2Fk
OworICAgICAgICBWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRi
b3hFeHRlbnNpb25Gb3JVcGxvYWQ7CiAgICAgICAgIGF1dG8gZHJhZ1Bhc3RlYm9hcmROYW1lID0g
V2ViQ29yZTo6UGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKTsKICAgICAgICAgcmV0
YWluZWRTZWxmLT5fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShkcmFn
UGFzdGVib2FyZE5hbWUpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wYWdlLT5jcmVhdGVTYW5k
Ym94RXh0ZW5zaW9uc0lmTmVlZGVkKGZpbGVuYW1lcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
c2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucy5jcHAKaW5kZXggNzQyMDdhMzY0NWE3YzVkOGIwOGE5MTBmMzU5MzE2NDBkZDU0ZmRi
ZC4uNjgwYWU4ZDRlNjFlYzk3MTE2MmMzNmUyOWI2N2MwMTI0ODBjMWY4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9N
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6TWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKK01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6Ok1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4gaWRzLCBWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmIGhhbmRsZXMpCiAgICAgOiBtX2lkcyhpZHMpCiAgICAg
LCBtX2hhbmRsZXMoV1RGTW92ZShoYW5kbGVzKSkKIHsKQEAgLTQyLDcgKzQyLDcgQEAgTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0
b3I8U3RyaW5nPiBpZHMsIFMKIHZvaWQgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG1faWRz
OwotICAgIG1faGFuZGxlcy5lbmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2RlciA8PCBtX2hhbmRs
ZXM7CiB9CiAKIGJvb2wgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYgcmVzdWx0KQpA
QCAtNTAsNyArNTAsNyBAQCBib29sIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE1lZGlhRGV2aWNlU2FuZAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1faWRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gaGFuZGxlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBoYW5kbGVzOwog
ICAgIGRlY29kZXIgPj4gaGFuZGxlczsKICAgICBpZiAoIWhhbmRsZXMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oCmluZGV4IDhkNTY4
MmFhNDcyOTY1YjFhMzc5OTMzYmVlOTliNzk0MWYwNzAzZDkuLjNiZTc1MmViOGZkMDMwNjUzOGU2
MDM4NThkZDJkN2I1ZTYzMGQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYpID0gZGVmYXVsdDsKICAgICBN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiBvcGVyYXRvcj0oTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucyYmKSA9IGRlZmF1bHQ7CiAKLSAgICBNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zKFZlY3RvcjxTdHJpbmc+IGlkcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBo
YW5kbGVzKTsKKyAgICBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+
IGlkcywgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBoYW5kbGVzKTsKIAogICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gb3BlcmF0b3JbXShz
aXplX3QgaSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1faWRzOwotICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IG1faGFuZGxlczsKKyAgICBWZWN0b3I8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiBtX2hhbmRsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMmFjMjVkY2QzOWU0ODBkZjkzNmM2
YWViNzllYzIwYWZlYzJkNDQwOC4uNmVjMTg5MWMyNWU2ZThkOWVlNjIyM2JmNjhlYjkxODIyYzEx
MDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE1MSw3ICsxNTEs
NyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5OworICAgIFZlY3RvcjxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXk7CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYWdlSWRlbnRpZmllcihjb250
ZXh0KSksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFu
ZGxlQXJyYXkpLCAwKTsKICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0
ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggZTE0MTUwYjViOGRh
NmMxNTcwOWIzMGNhYzJhOWRlNDY3ZGUyYmFiYy4uMzJkNGU3NTliNmI0ZmZhNjExYmRjNjBhMGNi
MDhhNmYxOWFiOGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihjb25zdCBGcmFtZSYgZnJhbWUsIEVk
aXRvclN0YXRlJiByZXN1CiAgICAgcG9zdExheW91dERhdGEuYmFzZVdyaXRpbmdEaXJlY3Rpb24g
PSBmcmFtZS5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5z
aW9ucyhjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgbmV0d29ya0V4dGVuc2lv
bnNIYW5kbGVzKQordm9pZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hF
eHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBuZXR3b3Jr
RXh0ZW5zaW9uc0hhbmRsZXMpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShuZXR3b3JrRXh0ZW5zaW9uc0hh
bmRsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlOGVlZDU1ZWVjNGVlZTIwYjc3M2JiOTRjNDYwYWIyNDQxZjA4ZGZiLi40OTk5N2Y1NjU2
NTBmYzIyODJiNTgyMTk4ZDRkZjQzYWY5ZjRiMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjk2Myw3ICsyOTYzLDcgQEAgc3RhdGljIGJv
b2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQ
YWdlKiBwYWdlKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdl
Yk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+JiYgc2FuZGJveEV4dGVuc2lvbnMpCit2b2lkIFdlYlBhZ2U6Om1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4mJiBzYW5kYm94RXh0ZW5zaW9ucykKIHsKICAgICBT
ZXRGb3JTY29wZTxib29sPiB1c2VySXNJbnRlcmFjdGluZ0NoYW5nZSB7IG1fdXNlcklzSW50ZXJh
Y3RpbmcsIHRydWUgfTsKIApAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRM
YXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAg
ICAgcGx1Z2luVmlldy0+c2V0TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lE
ZWNpc2lvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIG5ldHdvcmtFeHRl
bnNpb25zSGFuZGxlcykKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lv
biYmIHBvbGljeURlY2lzaW9uLCBjb25zdCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiYgbmV0d29ya0V4dGVuc2lvbnNIYW5kbGVzKQogewogICAgIGNvbnN1bWVOZXR3b3JrRXh0ZW5z
aW9uU2FuZGJveEV4dGVuc2lvbnMobmV0d29ya0V4dGVuc2lvbnNIYW5kbGVzKTsKIApAQCAtNDM1
Nyw3ICs0MzU3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KICNlbHNlCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRh
JiBkcmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9uc0hh
bmRsZUFycmF5KQordm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJh
Z0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0Rh
dGEsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFZl
Y3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVB
cnJheSkKIHsKICAgICBpZiAoIW1fcGFnZSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om51bGxvcHQsIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CkBAIC00Njk2LDcg
KzQ2OTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiB9CiAKICNp
ZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotdm9pZCBXZWJQYWdlOjpleHRlbmRTYW5kYm94
Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFu
ZGxlcykKK3ZvaWQgV2ViUGFnZTo6ZXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChW
ZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmIGhhbmRsZXMpCiB7CiAgICAgYm9vbCBy
ZXN1bHQgPSBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlcyk7CiAg
ICAgaWYgKCFyZXN1bHQpIHsKQEAgLTc2MDAsNyArNzYwMCw3IEBAIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgV2ViUGFnZTo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkK
IH0KICNlbmRpZgogCi1WZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBXZWJQYWdlOjpj
b25zdW1lU2FuZGJveEV4dGVuc2lvbnMoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBz
YW5kYm94RXh0ZW5zaW9ucykKK1ZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IFdlYlBh
Z2U6OmNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiYmIHNhbmRib3hFeHRlbnNpb25zKQogewogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4
dGVuc2lvbj4+IGRyYWdTYW5kYm94RXh0ZW5zaW9uczsKICAgICBmb3IgKGF1dG8mIHNhbmRib3hF
eHRlbnNpb24gOiBzYW5kYm94RXh0ZW5zaW9ucykgewpAQCAtNzY4OSw3ICs3Njg5LDcgQEAgdm9p
ZCBXZWJQYWdlOjppbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKQogI2VuZGlmCiAK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OmNvbnN1bWVOZXR3b3JrRXh0ZW5z
aW9uU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
KQordm9pZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25z
KGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JikKIHsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc4ZDgzMGRh
NDJkOTU2N2NkZjk1Y2ZhMWZlMzI3MzMwMmZmM2IyMWMuLmZhNzY1MzczOGRmYWUwNzgxMWJiNTU4
NTY4NDM3ZWZhZWI4M2FkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTk3Miw3ICs5NzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpICYmICFQTEFURk9STShHVEspCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250
cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmLCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE2MDUsNyArMTYwNSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAKLSAgICB2b2lkIG1v
dXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk+JiYgc2FuZGJveEV4dGVuc2lvbnMpOworICAgIHZvaWQgbW91c2VF
dmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPj4mJiBzYW5kYm94RXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBrZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKQEAgLTE2ODksNyArMTY4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclNlcnZpY2VX
b3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAjZW5kaWYKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
JiYsIGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+Jik7CiAgICAgdm9pZCBj
b250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bGlzdGVuZXJJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtMTc1Nyw3
ICsxNzU3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5T
SU9OUykKLSAgICB2b2lkIGV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CisgICAgdm9pZCBleHRlbmRTYW5kYm94Rm9yRmls
ZXNGcm9tT3BlblBhbmVsKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihH
ZW9sb2NhdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKTsK
QEAgLTE5MDksMTIgKzE5MDksMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1EaWRT
Y2FsZVBhZ2UoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IGNvbnN1
bWVTYW5kYm94RXh0ZW5zaW9ucyhTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKKyAg
ICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBjb25zdW1lU2FuZGJveEV4dGVuc2lv
bnMoVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJik7CiAgICAgdm9pZCByZXZva2VT
YW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgc2FuZGJv
eEV4dGVuc2lvbnMpOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCk7CiAgICAgCi0gICAg
dm9pZCBjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CisgICAgdm9pZCBjb25zdW1lTmV0d29ya0V4dGVu
c2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+Jik7CiAKICAgICB2b2lkIHBsYXRmb3JtSXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggZjg3YjQ1OWY4NmY3MGU2MDU5MjQ2M2JkOWU1OTE3NzdmOWYwMjIwMC4uMGUy
YWE1MDdmNTA2OWEzMTQ2ZWY2MGJmMjM0ZDBkNTQzNDEwMWI1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00Niw3
ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgRXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQp
IC0+ICgpIEFzeW5jCiAgICAgS2V5RXZlbnQoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50
KQotICAgIE1vdXNlRXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNp
b25zKQorICAgIE1vdXNlRXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHNhbmRib3hF
eHRlbnNpb25zKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2V0Vmlld3BvcnRDb25m
aWd1cmF0aW9uVmlld0xheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGRvdWJsZSBz
Y2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICBTZXRN
YXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCkBAIC0xOTQsNyAr
MTk0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykK
ICAgICBOb3RpZnlVc2VyU2NyaXB0cygpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBzdHJ1
Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBwb2xpY3lEZWNpc2lvbiwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBuZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25z
KQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNp
b24gcG9saWN5RGVjaXNpb24sIFZlY3RvcjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gbmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucykKIAogICAgIENvbnRpbnVlV2ls
bFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQog
ICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFn
Q29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9u
LCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSBzZWxlY3Rpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFn
cz4gZmxhZ3MpCiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25z
Rm9yVXBsb2FkKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRy
YWdEYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBEaWRTdGFydERyYWcoKQpAQCAtMzUzLDcgKzM1Myw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAgICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFN0cmluZz4gZmlsZVVS
THMsIFZlY3RvcjxTdHJpbmc+IHJlcGxhY2VtZW50VVJMcykKICAgICBEaWRDYW5jZWxGb3JPcGVu
UGFuZWwoKQogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgRXh0ZW5kU2FuZGJv
eEZvckZpbGVzRnJvbU9wZW5QYW5lbChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IHNhbmRib3hFeHRlbnNpb25zKQorICAgIEV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVu
UGFuZWwoVmVjdG9yPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0
ZW5zaW9ucykKICNlbmRpZgogCiAgICAgIyBTcGVsbGluZyBhbmQgZ3JhbW1hci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU5NzYwMDRiZTRhNGVmYTAwYmVhMjk0N2Q0
Y2E5OWE4OGIxNDVhNWQuLjUwYjg3MDNjYjZiNTdjOWU1YjZkYjNkZDhkYWFhMjY3NmYyNTg4NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzQ5LDEwICszNDksMTAg
QEAgcHVibGljOgogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHZvaWQgZW5hYmxl
UmVtb3RlV2ViSW5zcGVjdG9yKCk7CiAjZW5kaWYKLSAgICB2b2lkIHVuYmxvY2tTZXJ2aWNlc1Jl
cXVpcmVkQnlBY2Nlc3NpYmlsaXR5KGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
Jik7CisgICAgdm9pZCB1bmJsb2NrU2VydmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eShjb25z
dCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYpOwogI2lmIEVOQUJMRShDRlBSRUZT
X0RJUkVDVF9NT0RFKQogICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJp
bmc+JiBlbmNvZGVkVmFsdWUpOwotICAgIHZvaWQgdW5ibG9ja1ByZWZlcmVuY2VTZXJ2aWNlKFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOworICAgIHZvaWQgdW5ibG9ja1ByZWZlcmVu
Y2VTZXJ2aWNlKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYpOwogI2VuZGlmCiAg
ICAgdm9pZCBwb3dlclNvdXJjZURpZENoYW5nZShib29sKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiMDUyODBjZTA2
MDA3NWExNzBiZmUzOTZiMGY0M2Q4MmJkNWFiMGYwLi41NDJjZjliMDgwMmFiYzk4MjJjY2YwMTk5
YmFmYmI3ODA0M2MxZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTcyLDEwICsxNzIsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBTd2l0Y2hGcm9tU3RhdGlj
Rm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgVW5ibG9ja1NlcnZpY2VzUmVxdWlyZWRCeUFjY2Vzc2liaWxpdHkoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBoYW5kbGVBcnJheSkKKyAgICBVbmJsb2NrU2VydmljZXNS
ZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eShWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGhhbmRsZUFycmF5KQogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQogICAg
IE5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQotICAgIFVuYmxvY2tQcmVmZXJlbmNlU2Vy
dmljZShXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZUFycmF5KQor
ICAgIFVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5KQogI2VuZGlmCiAgICAgUG93ZXJTb3VyY2VEaWRDaGFu
Z2UoYm9vbCBoYXNBQykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzdhNzE1ZmM2MWQyNzczNGZhMDljZDkzMmY1
NmE5MDFiZWRlNTAxZS4uMzA2YTIyYTZlZTM0OTliMTEyNGM4ZTRkZDlkMjQ4ODJmNTVmNjlkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCkBAIC0xMTk1LDcgKzExOTUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZQogICAgIGRp
c3BhdGNoU2ltdWxhdGVkTm90aWZpY2F0aW9uc0ZvclByZWZlcmVuY2VDaGFuZ2Uoa2V5KTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjp1bmJsb2NrUHJlZmVyZW5jZVNlcnZpY2UoU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkmJiBoYW5kbGVBcnJheSkKK3ZvaWQgV2ViUHJvY2Vzczo6dW5ibG9j
a1ByZWZlcmVuY2VTZXJ2aWNlKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgaGFu
ZGxlQXJyYXkpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhh
bmRsZUFycmF5KTsKICAgICBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKGZhbHNlKTsKQEAg
LTEyNTUsNyArMTI1NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlUGFnZVNjcmVlblByb3Bl
cnRpZXMoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6dW5ibG9ja1NlcnZpY2VzUmVx
dWlyZWRCeUFjY2Vzc2liaWxpdHkoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
IGhhbmRsZUFycmF5KQordm9pZCBXZWJQcm9jZXNzOjp1bmJsb2NrU2VydmljZXNSZXF1aXJlZEJ5
QWNjZXNzaWJpbGl0eShjb25zdCBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYgaGFu
ZGxlQXJyYXkpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGNvbnN1bWVk
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZUFycmF5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435933</attachid>
            <date>2021-08-19 18:43:19 -0700</date>
            <delta_ts>2021-08-19 19:35:44 -0700</delta_ts>
            <desc>Fix internal build?</desc>
            <filename>bug-229100-20210819184319.patch</filename>
            <type>text/plain</type>
            <size>2162</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIwN2FjMzcwOTk1MDI3MGRh
NTFhNmE1NmFlZmNhMzk1ZjAzZWNjMWIuLmE3NjJhNTZiZmNlMmM3N2NmMGU1NWQ5M2JmMDM2M2Zj
ZjZhNTc1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDgtMTkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRoZSBhcHBsZSBp
bnRlcm5hbCBidWlsZCBhZnRlciByMjgxMjc3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMTQ1
OTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBjb2RlIGd1YXJkZWQgYnkgYFVTRShBUFBMRV9JTlRFUk5BTF9TREspYCwgc3VjaCB0aGF0
IGl0IHdvcmtzIHdpdGggYSBgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT5gLgorICAg
ICAgICBQcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgYXBwZW5kaW5nIGBoYW5kbGVz
YCBhbmQgYGlkc2AgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IGxlYXZlIGEgRklYTUUgcXVlc3Rpb25p
bmcKKyAgICAgICAgdGhlIG5lZWQgZm9yIHRoaXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3RyZWFtKToKKwogMjAyMS0wOC0xOSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUg
c3VwcG9ydCBmb3IgdGhlIG1lYW5pbmdmdWwgdGFwIGhldXJpc3RpYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDk0MGZk
Mjk3ZTkyYTRkNTU1M2NlMmZmOTJjZGFkZjRhM2Y5ZjVhZjAuLjQ1ODNiMWMyYWJjYzc3MDI3MDM1
YWFlZTUyM2E1MmU2MjdiYTUwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3RyZWFtKFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWEKICAgICAgICAgVmVjdG9yPFN0cmluZz4gaWRzOwogCiAgICAgICAgIGlm
ICghcHJveHkucGFnZSgpLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgp
KSB7Ci0gICAgICAgICAgICBoYW5kbGVzLmFsbG9jYXRlKGV4dGVuc2lvbkNvdW50KTsKKyAgICAg
ICAgICAgIGhhbmRsZXMucmVzaXplKGV4dGVuc2lvbkNvdW50KTsKICAgICAgICAgICAgIGlkcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbkNvdW50KTsKIAogICAgICAgICAgICAgaWYg
KG5lZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uKSB7CkBAIC0xMzEsNiArMTMxLDggQEAgYm9vbCBV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3RyZWFtKFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWEKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5v
dCBjcmVhdGUgYSByZXF1aXJlZCBzYW5kYm94IGV4dGVuc2lvbiwgY2FwdHVyZSB3aWxsIGZhaWwh
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBGSVhNRTogSXMgaXQgY29ycmVjdCB0byBlbnN1cmUgdGhhdCB0aGUgY29ycmVz
cG9uZGluZyBlbnRyaWVzIGluIGBoYW5kbGVzYCBhbmQgYGlkc2AgYXJlIGluIHJldmVyc2Ugb3Jk
ZXI/CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGlkIDogaWRzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>